‎2009 May 27 7:13 AM
Hi experts,
i have below code.
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK <>.
APPEND wa_output TO lt_output. u201C Append -A
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK <>.
APPEND wa_output TO lt_output. u201C Append -B
ENDLOOP.
<CONDITION IF APPEND-B STATEMENT NOT INSERT ANY RECORD.
< THEN DELETE INSERTED RECORD BY APPEND -A.
ENDLOOP.My problem is that if Append - B statement append at least one record
then the Append -A record is store in table lt_output.
otherwise delete the append A statement.
ANYONE HAVE SOLUTION????
‎2009 May 27 7:21 AM
Hi,
Try like this.
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
flag = 0.
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
APPEND wa_output TO lt_output. u201C Append -B
flag = 1.
ENDLOOP.
if flag = 1.
APPEND wa_output TO lt_output. u201C Append -A
endif.
<CONDITION IF APPEND-B STATEMENT NOT INSERT ANY RECORD.
< THEN DELETE INSERTED RECORD BY APPEND -A.
ENDLOOP.
alternatively you can append-a at first and based on flag write a DELETE statement.
Thanks,
Jyothi
‎2009 May 27 7:21 AM
DATA: L_CHECK TYPE C,
L_CNT(3) TYPE N.
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
APPEND wa_output TO lt_output. u201C Append -A
DESCRIBE TABLE lt_output LINES INTO L_CNT.
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
APPEND wa_output TO lt_output. u201C Append -B
IF SY-SUBRC EQ 0.
L_CHECK = 'X'.
ENDIF.
ENDLOOP.
IF L_CHECK EQ ' '.
DELETE FROM IT_OUTPUT INDEX L_CNT.
ELSE.
CLEAR; L_CNT,
L_CHECK.
ENDIF.
<CONDITION IF APPEND-B STATEMENT NOT INSERT ANY RECORD.
< THEN DELETE INSERTED RECORD BY APPEND -A.
ENDLOOP.
Edited by: Poorna Chandrasekhar on May 27, 2009 11:52 AM
Edited by: Poorna Chandrasekhar on May 27, 2009 11:53 AM
‎2009 May 27 7:23 AM
Hi,
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
* APPEND wa_output TO lt_output. u201C Append -A " Comment
CLEAR Insertb_flag. " Insert
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
Insertb_flag = 'X' " Insert
APPEND wa_output TO lt_output. u201C Append -B
ENDLOOP.
IF Insertb_flag EQ 'X'. " Insert
APPEND wa_output TO lt_output. u201C Append -A Insert
ENDIF. " Insert
ENDLOOP.If you want the order to be maintained i.e first record from A and second record from B then try this way.
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
* APPEND wa_output TO lt_output. u201C Append -A " Comment
CLEAR Count. " Insert
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
IF COUNT EQ '0'. " Insert
* Take another variable wa_output1
APPEND wa_output1 TO lt_output. u201C Append -A Insert
COUNT = COunt + 1. " insert
ENDIF. " Insert
APPEND wa_output TO lt_output. u201C Append -B
ENDLOOP.
ENDLOOP.
‎2009 May 27 7:29 AM
Hi,
Do as follows
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
APPEND wa_output TO lt_output. u201C Append -A
{color:red}
* add code here.
DESCRIBE IT_OUTPUT LINES v_index.
{color}
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
APPEND wa_output TO lt_output. u201C Append -B
ENDLOOP.
{color:red}* add code here
IF SY_SUBRC NE 0.
DELETE IT_OUTPUT index v_index.
ENDIF.
{color}
ENDLOOP.Regards,
Ankur Parab
‎2009 May 27 7:37 AM
‎2009 May 27 7:43 AM
Hi,
Below code would work as per the requirement.. kindly chk..
data: w_tabix type i,
w_index type i,
w_counter type i.
LOOP AT lt_head INTO wa_head. u201C Loop -A
CHECK .
APPEND wa_output TO lt_output. u201C Append -A
w_tabix = sy-tabix.
// append statement sets sy-tabix to the last appended row.
LOOP AT lt_i INTO ls_i. "aDDED Loop -B
CHECK .
APPEND wa_output TO lt_output. u201C Append -B
w_index = sy-tabix.
add 1 to w_counter.
// if counter eq index thn record gets inserted each time.if not thn delete record from lt_output.
if w_counter ne w_index.
delete lt_output
INDEX w_tabix.
endif.
ENDLOOP.
<CONDITION IF APPEND-B STATEMENT NOT INSERT ANY RECORD.
< THEN DELETE INSERTED RECORD BY APPEND -A.
ENDLOOP.
Regards,