Deleting blank spaces in internal table
Hi Gurus,
I want to delete the empty spaces of a particular field in internal table.I used condense and shift statements but didnt work because the work area value is already condensed.I am not sure why the internal table field is having so much of empty spaces to its left.It's a character field with length 60.
Please suggest.
Hi,
This is the rellevant code
LOOP AT IT_HIER INTO WFL_HIER.
WFL_FINAL-NODEID = WFL_HIER-NID.
WFL_FINAL-IOBJNM = WFL_HIER-IOBJ.
WFL_FINAL-NODENAME = WFL_HIER-NNAME.
WFL_FINAL-PID = WFL_HIER-PID.
condense wfl_hier-desc.
WFL_FINAL-DESCRIPTION = WFL_HIER-DESC.
SHIFT WFL_FINAL-DESCRIPTION LEFT DELETING LEADING SPACE.
APPEND WFL_FINAL TO E_T_DATA.
CLEAR WFL_FINAL.
CLEAR: WFL_HIER,OUT.
ENDLOOP.
The problem is not with the work area.
Say if I have a value apple in the work area wa, (wa - 'apple').
It doesnt have any leading sapces to the left.
But when I am appending it to the internal table it gets posted at the last say like this (it - ' apple'.
It occupies the last five characters.
Not sure how to resolve this.
Similar Messages
-
How to delete blank records in internal table
Hi.
please tell me how can i delete blank records in an internal table.
thnxIn that case
Suppose you have 10 fields in internal table and if any of them is blank, you need to delete record.
Try this command
delete itab where field1 is initial or
field2 is initial or
field10 is initial. -
How to Delete a Column in Internal Table
Hi All,
Does any one know ,How to Delete a Column in Internal Table?Hi,
For deleting the column in the internal table, you have to eliminate the field which you want to delete.
loop at itab into wa.
move corresponding wa to wa1.
append wa1 to itab1.
clear wa1.
clear wa.
endloop.
wa1 is the workarea without the field which you want to delete.
itab1 is the internal table which consists of the deleted column. -
How to delete records from dynamic internal table.
Hi Experts,
Need urgent help!!!
Issue is with Dynamic internal tables.
Below is code written by me :
FORM select_query USING Lw_tabnam
TYPE t682i-kotabnr.
DATA : lw_line TYPE REF TO data,
lw_line1 TYPE REF TO data.
CREATE DATA Lw_line TYPE (lw_TABNAM).
ASSIGN Lw_line->* TO <WA_tbl>.
CREATE DATA LW_LINE TYPE STANDARD TABLE OF (Lw_tabnam)
WITH NON-UNIQUE DEFAULT KEY.
ASSIGN Lw_line->* TO <TBL>.
SELECT * FROM (Lw_tabnam)
INTO CORRESPONDING FIELDS OF TABLE <TBL>
WHERE (t_keys).
Endform.
code is working fine.
here even the table name and where condition are dynamic,everything is fine upto this point.
Now i have to delete some record from <TBL> based on some conditons.
for ex : ( here lc_fieldname is KUNNR)
loop at t_kunnr.
lw_tabix = sy-tabix.
Read table <tbl>
with key (lc_fieldname) = t_kunnr-kunnr ASSIGNING <wa_tbl>.
If sy-subrc = 0.
*Delete
delete <tbl> from <wa_tbl>
delete <tbl> index lw_tabix.
Endif.
Endloop.
The above delete statement doesn't work ,even we can't use index as it gives a syntax error " something related to "index is not allowed in standard table or hash table.
Can you help me ab't how to delete records in Dynamic internal table?
Other option that i am thinking of is to create a static table of type dynamic table.
means, data itab type standard table of <tbl> .I know the syntax is wrong ,however is there any way to do this?
Thanks in advance ,
If you have any suggestion ab't this then do let me know.
bye,
Gaurav.Hi
I wrote this code and it works fine:
DATA LW_TABNAM(10) VALUE 'LFA1'.
DATA : LW_LINES TYPE REF TO DATA,
LW_LINE TYPE REF TO DATA.
FIELD-SYMBOLS: <TABLE> TYPE TABLE,
<WA> TYPE ANY.
CREATE DATA LW_LINES TYPE TABLE OF (LW_TABNAM)
WITH NON-UNIQUE DEFAULT KEY.
ASSIGN LW_LINES->* TO <TABLE>.
CREATE DATA LW_LINE TYPE (LW_TABNAM).
ASSIGN LW_LINE->* TO <WA>.
DO 10 TIMES.
APPEND INITIAL LINE TO <TABLE>.
ENDDO.
SY-TABIX = 4.
DELETE <TABLE> INDEX SY-TABIX.
WRITE SY-SUBRC.
I hope it help you
Max -
Delete spaces in internal table
Hi this question is to improve my performance...
what is the performance oriented way of delete entires in internal table where any of the field is empty.
1 2 3 4 5 6 7
A B C D E F G "<< ok
A B C E F G "<< delete
A B C E G "<< delete
or
loop at itab.
if itab-f1 eq space or itab-f2 eq space.....
delete itab.
endif.
endloop. " how to eliminate this loop...?Try this way
delete itab where f1 eq space
or f2 eq space
or f7 eq space.
a® -
Updation of blank field in internal table
Hi,
I want to update the blank businees area field with the header item of that particular business area belnr.
i am sending you the updation of business area code plz find out where rhe error and rectify please.
points given
REPORT zfir_vendorwise_grir_balances NO STANDARD PAGE HEADING
LINE-SIZE 142
LINE-COUNT 65.
TABLES: bsis,bkpf,bseg,ekko,lfa1.
TYPE-POOLS: slis.
CONSTANTS:
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv ,
gs_print TYPE slis_print_alv,
gt_sort TYPE slis_t_sortinfo_alv ,
gt_filter TYPE slis_t_filter_alv,
gt_sp_group TYPE slis_t_sp_group_alv,
gt_alv_graphics TYPE dtc_t_tc,
gt_excluding TYPE slis_t_extab ,
gt_events TYPE slis_t_event .
DATA: g_repid LIKE sy-repid.
DATA: gt_list_top_of_page TYPE slis_t_listheader.
DATA: g_boxnam TYPE slis_fieldname VALUE 'BOX',
p_f2code LIKE sy-ucomm VALUE '&ETA',
p_lignam TYPE slis_fieldname VALUE 'LIGHTS',
g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
DATA : g_user_command(30) VALUE 'USER_COMMAND'.
DATA : g_status_set(30) VALUE 'PF_STATUS_SET'.
DATA: BEGIN OF it_final OCCURS 0,
awkey TYPE awkey,
grir(10) TYPE c,
bukrs LIKE bsis-bukrs,
hkont LIKE bsis-hkont,
gjahr LIKE bsis-gjahr,
belnr LIKE bsis-belnr,
budat LIKE bsis-budat,
waers LIKE bsis-waers,
xblnr LIKE bsis-xblnr,
blart LIKE bkpf-blart,
buzei like bseg-buzei,
bschl LIKE bseg-bschl,
shkzg LIKE bseg-shkzg,
gsber LIKE bseg-gsber,
dmbtr LIKE bseg-dmbtr,
wrbtr LIKE bsis-wrbtr,
sgtxt LIKE bseg-sgtxt,
ebeln LIKE bseg-ebeln,
lifnr LIKE ekko-lifnr,
ps_psp_pnr LIKE ekkn-ps_psp_pnr,
name1 LIKE addr1_data-name1,
END OF it_final.
DATA : it_po LIKE it_final OCCURS 0 WITH HEADER LINE.
DATA : it_ebeln LIKE it_final OCCURS 0 WITH HEADER LINE.
DATA : it_awkey LIKE it_final OCCURS 0 WITH HEADER LINE.
DATA : wa_final LIKE LINE OF it_final.
DATA : BEGIN OF it_lifnr OCCURS 0,
ebeln TYPE ebeln,
lifnr TYPE lifnr,
END OF it_lifnr.
DATA : BEGIN OF it_name1 OCCURS 0,
lifnr TYPE lifnr,
name1 TYPE name1,
END OF it_name1.
DATA : hmin TYPE bseg-hkont.
DATA : hmax TYPE bseg-hkont.
DATA: idx TYPE sy-tabix.
DATA: temp_gsber TYPE bseg-gsber.
DATA: temp_ebeln TYPE bseg-ebeln.
DATA : temp_gjahr TYPE bseg-gjahr.
DATA : temp_belnr TYPE bseg-belnr.
DATA : temp_lifnr TYPE bseg-lifnr.
*DEFINING THE SELECTION-CRITERIA.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs LIKE skb1-bukrs OBLIGATORY.
SELECT-OPTIONS: s_gsber FOR bseg-gsber OBLIGATORY.
SELECT-OPTIONS: s_hkont FOR bseg-hkont OBLIGATORY.
PARAMETERS: p_lifnr LIKE ekko-lifnr.
PARAMETERS: p_budat LIKE bkpf-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON s_hkont.
CHECK s_hkont-low LT 250301 OR s_hkont-high GT 250500.
MESSAGE e000(zm) WITH 'PLEASE SELECT A GRIR CLEARING ACCOUNT BETWEEN'
'250301 AND 250500'.
*INITIALIZATION.
INITIALIZATION.
g_repid = sy-repid.
*START-OF-SELECTION.
START-OF-SELECTION.
PERFORM select_data.
PERFORM display_data.
PERFORM list_display.
*& Form select_data
text
--> p1 text
<-- p2 text
FORM select_data .
*selecting open item details
SELECT bukrs hkont gjahr belnr buzei
budat waers xblnr blart
bschl shkzg gsber dmbtr
wrbtr sgtxt
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE it_final
WHERE bukrs EQ p_bukrs
AND hkont BETWEEN '0000250301' AND '0000250500'
AND budat LE p_budat AND ( blart EQ 'WE' OR
blart EQ 'RE' OR
blart EQ 'SA' OR
blart EQ 'EI').
*selecting closed/cleared item details
SELECT bukrs hkont gjahr belnr buzei budat
waers xblnr blart bschl shkzg
gsber dmbtr wrbtr sgtxt
FROM bsas
APPENDING CORRESPONDING FIELDS OF TABLE it_final
WHERE bukrs EQ p_bukrs
AND hkont BETWEEN '0000250301' AND '0000250500'
AND budat LE p_budat
AND blart IN ('WE', 'RE','SA','EI')
AND augdt GE p_budat.
SORT it_final BY belnr gsber DESCENDING.
CLEAR: temp_belnr, temp_gsber.
update blank business areas
LOOP AT it_final .
IF temp_gsber IN s_gsber AND it_final-belnr = temp_belnr.
IF it_final-gsber = ' '.
it_final-gsber = temp_gsber.
ENDIF.
ENDIF.
if it_final-gsber eq space or it_final-gsber in s_gsber.
wa_final-gsber = it_final-gsber.
wa_final-belnr = it_final-belnr.
modify it_final from wa_final transporting gsber.
else.
wa_final-gsber = it_final-gsber.
wa_final-belnr = it_final-belnr.
modify it_final from wa_final transporting gsber.
endif.
*clear wa_final.
endloop.
LOOP AT it_final.
IF temp_gsber IN s_gsber AND it_final-belnr = temp_belnr.
IF it_final-gsber = ' '.
it_final-gsber = temp_gsber.
ENDIF.
IF it_final-lifnr = ' '.
it_final-lifnr = temp_lifnr.
ENDIF.
IF it_final-belnr = ' '.
it_final-belnr = temp_belnr.
ENDIF.
ENDIF.
IF it_final-gsber EQ space OR it_final-gsber IN s_gsber.
CLEAR: temp_belnr, temp_gsber,temp_lifnr.
temp_belnr = it_final-belnr.
temp_gsber = it_final-gsber.
temp_lifnr = it_final-lifnr.
ELSE.
CLEAR : temp_belnr, temp_gsber,temp_lifnr.
ENDIF.
MODIFY it_final TRANSPORTING gsber.
ENDLOOP.
sort it_final by belnr buzei.
loop at it_final.
on change of it_final-belnr.
clear temp_belnr.
clear temp_gsber.
clear temp_lifnr.
temp_belnr = it_final-belnr.
temp_gsber = it_final-gsber.
temp_lifnr = it_final-lifnr.
endon.
if it_final-gsber is initial.
it_final-gsber = temp_gsber.
*modify it_final transporting gsber.
endif.
if it_final-lifnr is initial.
it_final-lifnr = temp_lifnr.
*modify it_final transporting lifnr.
endif.
modify it_final transporting gsber lifnr where belnr = temp_belnr.
endloop.
*deleting entries which are not as per input parameter for business area
DELETE it_final WHERE gsber NOT IN s_gsber .
loop at it_final.
if s_gsber-low ne '' and s_gsber-high ne ''.
delete it_final where gsber not in s_gsber.
elseif s_gsber-low ne '' and s_gsber-high eq ''.
delete it_final where gsber ne s_gsber-low.
endif.
endloop.
*initialising internal tables
it_awkey[] = it_final[].
it_po[] = it_final[].
it_ebeln[] = it_final[].
IF it_final[] IS NOT INITIAL.
*selecting purchase doc details
SELECT bukrs hkont gjahr belnr
bschl shkzg gsber dmbtr
wrbtr sgtxt ebeln
FROM bseg INTO CORRESPONDING FIELDS OF TABLE it_ebeln
FOR ALL ENTRIES IN it_final
WHERE bukrs = p_bukrs
AND belnr = it_final-belnr
AND gjahr = it_final-gjahr
AND hkont = it_final-hkont.
*selecting the GR/IR number from BKPF
SELECT bukrs gjahr belnr
budat waers xblnr blart
awkey
FROM bkpf
INTO CORRESPONDING FIELDS OF TABLE it_awkey
FOR ALL ENTRIES IN it_final
WHERE bukrs EQ it_final-bukrs
AND gjahr EQ it_final-gjahr
AND belnr EQ it_final-belnr.
ENDIF.
IF it_ebeln[] IS NOT INITIAL.
*selecting WBS element
SELECT ebeln gsber
ps_psp_pnr
FROM ekkn
INTO CORRESPONDING FIELDS OF TABLE it_po
FOR ALL ENTRIES IN it_ebeln
WHERE ebeln = it_ebeln-ebeln.
*selecting vendor
SELECT bukrs ebeln lifnr
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_lifnr
FOR ALL ENTRIES IN it_ebeln
WHERE ebeln = it_ebeln-ebeln.
ENDIF.
IF it_lifnr[] IS NOT INITIAL.
*selecting vendor name
SELECT lifnr name1
FROM lfa1
INTO CORRESPONDING FIELDS OF TABLE it_name1
FOR ALL ENTRIES IN it_lifnr
WHERE lifnr EQ it_lifnr-lifnr.
ENDIF.
LOOP AT it_final.
idx = sy-tabix.
*retrieving purchase doc
READ TABLE it_ebeln WITH KEY belnr = it_final-belnr
gjahr = it_final-gjahr
hkont = it_final-hkont.
IF sy-subrc EQ 0.
READ TABLE it_final INDEX idx.
it_final-ebeln = it_ebeln-ebeln.
MODIFY it_final INDEX sy-tabix.
ENDIF.
*retrieving WBS element
READ TABLE it_po WITH KEY ebeln = it_final-ebeln.
IF sy-subrc EQ 0.
READ TABLE it_final INDEX idx.
it_final-ps_psp_pnr = it_po-ps_psp_pnr.
MODIFY it_final INDEX sy-tabix.
ENDIF.
calculating amount based on debit/credit
IF it_final-shkzg = 'H'.
it_final-dmbtr = 0 - it_final-dmbtr.
it_final-wrbtr = 0 - it_final-wrbtr.
ENDIF.
MODIFY it_final INDEX idx.
ENDLOOP.
CLEAR idx.
SORT it_final BY belnr ebeln DESCENDING.
*updating blank purchase doc numbers
CLEAR: temp_belnr, temp_ebeln,temp_gjahr.
DATA: w_idx LIKE sy-tabix.
LOOP AT it_final.
w_idx = sy-tabix.
*updating blank purchase docs
IF it_final-gjahr = temp_gjahr AND it_final-belnr = temp_belnr.
IF it_final-ebeln = ' '.
it_final-ebeln = temp_ebeln.
ENDIF.
ENDIF.
IF it_final-ebeln NE ' ' .
CLEAR: temp_belnr, temp_ebeln, temp_gjahr.
temp_belnr = it_final-belnr.
temp_ebeln = it_final-ebeln.
temp_gjahr = it_final-gjahr.
ELSE.
CLEAR : temp_belnr, temp_ebeln, temp_gjahr.
ENDIF.
MODIFY it_final TRANSPORTING ebeln.
*retrieving vendor
READ TABLE it_lifnr WITH KEY ebeln = it_final-ebeln.
IF sy-subrc EQ 0.
READ TABLE it_final INDEX w_idx.
it_final-lifnr = it_lifnr-lifnr.
MODIFY it_final INDEX sy-tabix.
ENDIF.
*retrieving GRIR number
READ TABLE it_awkey WITH KEY belnr = it_final-belnr
gjahr = it_final-gjahr
bukrs = it_final-bukrs.
IF sy-subrc EQ 0.
READ TABLE it_final INDEX w_idx.
it_final-awkey = it_awkey-awkey.
MODIFY it_final INDEX sy-tabix.
ENDIF.
*retrieving vendor name
READ TABLE it_name1 WITH KEY lifnr = it_final-lifnr.
IF sy-subrc EQ 0.
READ TABLE it_final INDEX w_idx.
it_final-name1 = it_name1-name1..
MODIFY it_final INDEX sy-tabix.
ENDIF.
ENDLOOP.
*deleting entries which are not per input parameters
DELETE it_final WHERE hkont NOT IN s_hkont.
IF p_lifnr NE ' '.
DELETE it_final WHERE lifnr NE p_lifnr.
ENDIF.
for selecting the grir number which is the first 10 digits of reference key and
selecting vendor name
LOOP AT it_final.
MOVE it_final-awkey+0(10) TO it_final-grir.
MODIFY it_final INDEX sy-tabix.
ENDLOOP.
SORT it_final BY hkont belnr.
deleting entries where purchase doc is blank.
DELETE it_final WHERE ebeln EQ ' '.
ENDFORM. " select_data
*& Form build_fieldcat
text
--> p1 text
<-- p2 text
FORM e01_fieldcat_init USING gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: gs_sort TYPE slis_sortinfo_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'HKONT'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '1'.
ls_fieldcat-seltext_l = 'ACCOUNT'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSCHL'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '2'.
ls_fieldcat-seltext_l = 'POSTING KEY'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BLART'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '3'.
ls_fieldcat-seltext_l = 'DOC TYPE'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '4'.
ls_fieldcat-seltext_l = 'DOC NUMBER'.
ls_fieldcat-hotspot(1) = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUDAT'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '5'.
ls_fieldcat-seltext_l = 'POSTING DATE'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '6'.
ls_fieldcat-seltext_l = 'REF. DOC NO'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'EBELN'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '7'.
ls_fieldcat-seltext_l = 'PURCHASE DOC NO'.
ls_fieldcat-hotspot(1) = 'X'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'GSBER'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '8'.
ls_fieldcat-seltext_l = 'BUSINESS AREA'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DMBTR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '9'.
ls_fieldcat-seltext_l = 'AMOUNT(LC)'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'WRBTR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '10'.
ls_fieldcat-seltext_l = 'AMOUNT(DC)'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'WAERS'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '11'.
ls_fieldcat-seltext_l = 'CURRENCY'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'GJAHR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '14'.
ls_fieldcat-seltext_l = 'Fiscal year'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'GRIR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '14'.
ls_fieldcat-seltext_l = 'GR/IR Number'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'LIFNR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '12'.
ls_fieldcat-seltext_l = 'VENDOR NO'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PS_PSP_PNR'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '13'.
ls_fieldcat-seltext_l = 'WBS Element'.
APPEND ls_fieldcat TO gt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-tabname = 'IT_FINAL'.
ls_fieldcat-col_pos = '14'.
ls_fieldcat-seltext_l = 'VENDOR NAME'.
APPEND ls_fieldcat TO gt_fieldcat.
ENDFORM. " build_fieldcat
*& Form LIST_DISPLAY
text
--> p1 text
<-- p2 text
FORM list_display .
gs_layout-colwidth_optimize(1) = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_program = g_repid
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'IT_FINAL'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_special_groups = gt_sp_group[]
it_sort = gt_sort[]
it_filter = gt_filter[]
i_save = g_save
is_variant = g_variant
it_events = gt_events[]
is_print = gs_print
it_alv_graphics = gt_alv_graphics[]
it_excluding = gt_excluding
TABLES
t_outtab = it_final.
ENDFORM. " LIST_DISPLAY
*& Form USER_COMMAND
FORM user_command USING i_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield. "#EC CALLED
CASE i_ucomm.
WHEN '&IC1'. " Pick(Double-click)
CASE is_selfield-fieldname.
WHEN 'BELNR'.
CLEAR it_final.
READ TABLE it_final INDEX is_selfield-tabindex.
IF sy-subrc EQ 0.
FI Document number
SET PARAMETER ID 'BLN' FIELD it_final-belnr.
Display Document
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'EBELN'.
CLEAR it_final.
READ TABLE it_final INDEX is_selfield-tabindex.
IF sy-subrc EQ 0.
PO number
IF it_final-ebeln NE ' '.
SET PARAMETER ID 'BES' FIELD it_final-ebeln.
Display Document
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. "user_command
*& Form display_data
text
--> p1 text
<-- p2 text
FORM display_data .
g_repid = sy-repid.
PERFORM e01_fieldcat_init USING gt_fieldcat[].
PERFORM eventtab_build CHANGING gt_events.
PERFORM e04_comment_build USING gt_list_top_of_page[].
ENDFORM. " display_data
*& Form eventtab_build
text
<--P_GT_EVENTS text
FORM eventtab_build CHANGING lt_events TYPE slis_t_event.
CONSTANTS:
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = lt_events.
READ TABLE lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO lt_events.
ENDIF.
ENDFORM. " eventtab_build
*& Form e04_comment_build
text
-->P_GT_LIST_TOP_OF_PAGE[] text
FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.
DATA : v_time(10) TYPE c.
DATA: ls_line TYPE slis_listheader.
DATA : v_text(50) TYPE c.
DATA : v_date_low(10) TYPE c,
v_date_high(10) TYPE c.
CONCATENATE 'GR/IR Report' ' '
INTO v_text SEPARATED BY space.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = v_text.
APPEND ls_line TO e04_lt_top_of_page.
ENDFORM. " e04_comment_build
*& Form top_of_page
text
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM . "TOP_OF_PAGE
regards,
Amit teja
Message was edited by: amit teja
Message was edited by: amit teja
Message was edited by: amit tejaHello,
<b>Sort it_final by belnr.</b>
loop at it_final.
on change of it_final-belnr.
clear temp_gsber.
clear temp_lifnr.
<b>temp_belnr = it_final-belnr.</b>
temp_gsber = it_final-gsber.
temp_lifnr = it_final-lifnr.
if it_final-gsber eq ' '.
it_final-gsber = temp_gsber.
endif.
if it_final-lifnr eq ' '.
it_final-lifnr = temp_lifnr.
endif.
modify it_final transporting gsber lifnr where <b>belnr = temp_belnr</b>.
<b>endon.</b>
endloop.
Regards,
Naimesh -
Regarding passing blank characters to internal table field
Hi All,
I have small issue.
Actual issue is
I am having one internal table field as <b>oper_table-arbid</b> in the program i will actually pass first 4 characters of that field into another internal table <b>i_download_operation-arbid.</b>
Then if <b>oper_table-arbid</b> is blank i need to pass
4 blank characters into <b>i_download_operation-arbid.</b>
Can anybody tell me how can i do it.
Code is like this
IF oper_table-arbid NE space.
MOVE oper_table-arbid+0(4) TO i_download_operation-arbid.
ELSE.
I need to pass 4 blank char's to i_download_operation-arbid
ENDIF.
oper_table-arbid is of 8 char length & i_download_operation-arbid is of 4 char length.
Can any body tell me what i need to do here.
Thanks in advance.
Thanks & Regards,
Rayeez.hi ,
shaik.
data: var(8) type c value 'abcdefgh'.
write var.
data: bar(8) type c value 'ijkl',
p1(8) .
move bar to p1.
write:/ p1 right-justified.
just execute the program and see the o/p.
if u r trying to pass character then default position is left-justfied .
so u need to explicitly say right-justified so it will take positions 5,6,7,8.
so here u need append blank spaces .
after seeing the o/p u will hav a clear picture .
vijay. -
Hello,
I have an internal table like this.
DATA BEGIN OF IT_TEST OCCURS O,
FLD(20) TYPE C,
FLD2(20) TYPE C,
END OF IT_TEST.
I need to download the it_test´s data to a file, but i need that the fld2 with white spaces. When I check the file on notepad the fld has info, but the fld2 doesn´t have blank spaces, how can i fill this field in order to have it on the downloaded file?
Im filling the internal table like this:
it_test-fld = 'DATA 1 DATA 1'
WHILE num lt 20.
CONCATENATE it_test-fld2 ' ' into it_test-fld2.
add 1 to num.
ENDWHILE.
APPEND IT_TEST.
Then I download it with GUI_DOWNLOAD using ASC mode.
Thanks for helpingme, points will be rewarded!!
Gabriel P.Unfortunately, GUI_DOWNLOAD does not support fixed length files. It will automatically eliminates any trailing spaces. You can control it when downloading to the server side using TRANSFER with the LENGTH option.
One way around this problem is to have just another field of one character and always default it to 'X' to indicate record end.
DATA BEGIN OF IT_TEST OCCURS O,
FLD(20) TYPE C,
FLD2(20) TYPE C,
<b>end_of_rec type c,<--</b>
END OF IT_TEST. -
How to delete data from dynamic internal table
Hi,
I have dynamic internal table and I have some slection screen fields , using these selection screen fields
(select -options), I have to filter the data? assigning will work with READ , but I have select options not the parametre,
and also delete will not work for dynamic table..
as we cannot use assigning with delete..
So how to do this?
and one more thing is , I cannot filter the data while selection( in select, I cannot filter the data-> as it's not coming directly from table, it's coming from buffer),
so now after selection of data, I need to filter the data from dynamic table.
Is there any way to do this?
Regards,
MrunalHi matt,
I tried with below code as you said. But I am getting dump. can you help?
here is my piece of code.
FIELD-SYMBOLS: <LS_DATA> type any,
<LT_DATA> TYPE table,
<L_FIELD> type any.
ASSIGN <l_buffer_entry>-dataptr->* TO <LS_DATA>.
ASSIGN <l_buffer_entry>-dataptr->* TO <LT_DATA>.
LOOP AT <LT_DATA> ASSIGNING <LS_DATA>.
ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <LS_DATA> TO <L_FIELD>.
IF <L_FIELD> NOT IN SO_BUKRS.
DELETE <LT_DATA>.
ENDIF.
UNASSIGN <L_FIELD>.
ASSIGN COMPONENT 'BELNR' OF STRUCTURE <LS_DATA> TO <L_FIELD>.
IF <L_FIELD> NOT IN SO_BELNR.
DELETE <LT_DATA>.
ENDIF.
UNASSIGN <L_FIELD>.
ENDLOOP.
and here is the description of my dump:->>>
You attempted to access an unassigned field symbol
(data segment 32772).
This error may occur for any of the following reasons:
- You address a typed field symbol before it is set using ASSIGN
- You address a field symbol that points to a line in an internal table
that has been deleted
- You address a field symbol that had previously been reset using
UNASSIGN, or that pointed to a local field that no longer exists
- You address a global function interface parameter, even
though the relevant function module is not active,
that is it is not in the list of active calls. You can get the list
of active calls from the this short dump. -
How to delete the entries in internal table
Hi Experts,
I have 2 internal tables ,
if i find any same entries of 2 internal tables, i have to delete that entries in first internal table.
Regards,
Srinivasuhi check this..
report .
data:begin of itab occurs 0,
f1 type c ,
f2 type i,
end of itab .
data:begin of itab1 occurs 0,
f1 type c ,
end of itab1 .
itab-f1 = 'A'.
itab-f2 = 12.
append itab .
itab-f1 = 'b'.
itab-f2 = 12.
append itab .
itab-f1 = 'c'.
itab-f2 = 12.
append itab .
itab1-f1 = 'A'.
append itab1 .
loop at itab1 .
read table itab with key f1 = itab1-f1 .
if sy-subrc = 0.
delete itab where f1 = itab1-f1 .
endif .
endloop.
loop at itab.
write:/ itab-f1,itab-f2.
endloop. -
How to delete blank space from value of Infoobject in the transfer rule
does anyboady know how to write a routine in the transfer rule in order to delete ending blank spaces from value of Infoobject 'ORDTEXT'. E.g. value: 'ABM '? After routine, the result should be 'ABM'.
Thanks for any input.Deleting 'ending blank spaces' from a character type field (ie info-object or text) in SAP is not meaningful. For all usage, a char type field of length 8 having value 'ABM ' is same as 'ABM'.
Ok, HTML is changing the display in the above, so let me restate it
For all usage, a char type field of length 8 having value 'ABM_____' is same as 'ABM', take the underscore character (_) in the first string as a placeholder for space character.
Edited by: Ajay Das on Jul 29, 2009 12:07 PM -
Regarding how to delete the record in internal table
Hi experts ,
how to delete the record in intarnal table after validating the data,
if record contains invalid fields?
i am giving my code see this and give me the answer?
loop at it_data into wa_data .
Validate Cost Center
READ TABLE it_kostl INTO wa_kostl WITH KEY kostl = wa_data-kostl BINARY SEARCH.
IF sy-subrc NE 0.
PERFORM update_error_log USING wa_data
text-004.
ENDIF.
Validate source file material ( material number )
loop at it_mara into wa_mara .
read table it_ausp into wa_ausp with key atwrt = wa_data-i_matnr .
if sy-subrc NE 0 .
PERFORM update_error_log USING wa_data
text-002.
delete it_data-objek .
else.
read table it_mara into wa_mara with key matnr = wa_ausp-objek .
if sy-subrc EQ 0 .
wa_data-objek = wa_mara-matnr.
wa_data-matkl = wa_mara-matkl.
ENDIF.
Modify it_data from wa_data .
endif.
*endloop.
Validate unit of measure (unit)
READ TABLE it_t006 INTO wa_t006 WITH KEY msehi = wa_data-unit .
IF sy-subrc NE 0.
PERFORM update_error_log USING wa_data
text-003.
endif.
Validate delivery location ( storage location )
READ TABLE it_lgort INTO wa_lgort WITH KEY del_loc = wa_data-del_loc.
IF sy-subrc NE 0.
PERFORM update_error_log USING wa_data
text-001.
if wa_data-flag ='x' .
delete it_data from wa_data .
endif.
ENDIF.
endloop.Hi Naren,
First get the index number of the IT_data table and store it in one variable whose declaration like this.
data: tabix type sy-tabix.
while reading the internal table it_data set the tabix variable.
tabix = sy-tabix.
Instead of the above use below one.
Delete it_data-objek
Use the Below statement it will delete the row from the internal table.
Delete it_data-objek index tabix
Thanks,
Chidanand -
How to delete entries in an internal table except for one entry
Hi all,
I have 4 records in my internal table and I need to delete all the records in the internal table except the last one.How do i do this?Any sample code?
Thanks.
Moderator message - Please do not ask or answer basic questions - thread locked
Edited by: Rob Burbank on Dec 16, 2009 3:23 PMHi,
use following logic:
DATA: lt_itab type standard table.
DATA: l_lines type i.
DESCRIBE TABLE lt_itab lines l_lines.
l_lines = l_lines - 1.
delete lt_itab from 1 to l_lines.
Regards,
Karol -
Delete records in a internal table
I Have an ALV in which I have selected several lines to delete (icon "-").
The method get_selected_rows returns the index of the selected lines.
In a loop I try to delete the lines of the internal table by the index. But I have a problem because when I delete a line, the index number is updated, therefore the second record that I try to delete doesn´t work because the index has changed.
does there exist the possibility that the index is not updated?
Thankshi
try to delete like this
loop at itab
delete itab
endloop
it deletes all the records in the internal table
outside of the loop
delete itab index 2 -
> it deletes the record of index 2
put it into the while or do while
i =1.
while i < 5
i = i+ 1.
delete itab index i.
endwhile.
it deletes 5 records in the internal table -
Unable to delete double records from internal table
Hi all,
The internal table is like this
begin of ta_itab1 occurs 0,
mark type c,
cnt_hedg type c,
kunnr like vbak-kunnr,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
kwmeng like vbap-kwmeng,
h_kwmeng like vbap-kwmeng,
spart like vbap-spart,
werks like vbap-werks,
component like bom_item_api01-component,
comp_qty like bom_item_api01-comp_qty,
comp_qty1 like bom_item_api01-comp_qty,
base_quan like stko_api02-base_quan,
comp_unit like bom_item_api01-comp_unit,
base_unit like bom_item_api01-comp_unit,
bukrs_vf like vbak-bukrs_vf,
end of ta_itab1.
and used the sytax:
sort ta_itab6 by kunnr vbeln.
DELETE ADJACENT DUPLICATES FROM ta_itab6 comparing COMP_QTY COMP_QTY1.
but Im unable to delete duplicate record .
Thank You.
anuHi ,
You need to use the fields in sort statement on whichyiu wnat to perform Delete Adjacent duplicates..
sort ta_itab6 by kunnr vbeln COMP_QTY COMP_QTY1.
DELETE ADJACENT DUPLICATES FROM ta_itab6 comparing COMP_QTY COMP_QTY1.
Maybe you are looking for
-
How do I use my iPad with a digital projector
How do I use my iPad with a projector
-
Bug in Oracle lib: popen failed with pthread in Redhat 6.1
Dear Oracle developers, I need your help on this. I have used c and pthread in Redhat 6.1 and the moment I called popen, it dies. This happens only if I link some Oracle libraries. I am using ProC. The Oracle libraries in question are -lsql -L/export
-
Warning on close when downloading
How can I get a warning if I close Firefox 4 whilst a download is it progress - I thought I had this in FF3.6.
-
I would very much appreciate if anyone can help me link Coursebuilder with coldfusion using a database. Tnanks
-
New 30" Display + Mac Pro: Firewire connector discrepancies
Love my new display and computer - but why does the Display come with the older style (6-pin) FW connector, and the Mac Pro have the newer (Beta) plugs? Is there a PCI card I can purchase (ugh!) to make up for this? (I was really surprised to learn o