DATA: lt_ltap_onelevel TYPE TABLE OF ltap_vb,
lt_ltap_3level TYPE TABLE OF ltap_vb,
lt_ltap_working TYPE TABLE OF ltap_vb.
DATA:
lv_pooln_next TYPE i,
lv_pooln_last TYPE i .
DATA : lv_split_done TYPE xfeld .
* Sorting in order to find the last pooln used.
SORT t_ltap_vb ASCENDING BY pooln.
* Separating the Transfer order items on the basis of vltyp .
LOOP AT t_ltap_vb INTO DATA(ls_ltap) .
IF ls_ltap-vltyp EQ 'abc' OR ls_ltap-vltyp EQ 'def' .
APPEND ls_ltap TO lt_ltap_onelevel.
ELSE.
APPEND ls_ltap TO lt_ltap_3level.
ENDIF.
lv_pooln_last = ls_ltap-pooln.
ENDLOOP.
IF lt_ltap_onelevel[] IS NOT INITIAL AND lt_ltap_3level[] IS INITIAL. " Only level 1 transfer order Items, No Split required. Split might already be there , should not be changed.
ELSEIF lt_ltap_onelevel[] IS INITIAL AND lt_ltap_3level[] IS NOT INITIAL. " Only Level 3 transfer order Items. No Split Required. Split might already be there , should not be changed.
ELSEIF lt_ltap_onelevel[] IS NOT INITIAL AND lt_ltap_3level[] IS NOT INITIAL. " Split could be required.
* Copy the TO table to local for splitting .
lt_ltap_working[] = t_ltap_vb[].
* Generate next pooln value that can be used .
lv_pooln_next = lv_pooln_last + 1 .
CLEAR: ls_ltap.
LOOP AT lt_ltap_working INTO ls_ltap WHERE vltyp EQ 'abc' OR vltyp EQ 'def'.
CLEAR: lv_split_done .
LOOP AT t_ltap_vb ASSIGNING FIELD-SYMBOL(<ls_ltap>) WHERE pooln EQ ls_ltap-pooln and vltyp NE 'abc' and vltyp NE 'def'.
<ls_ltap>-pooln = lv_pooln_next.
lv_split_done = 'X' .
ENDLOOP.
IF lv_split_done = 'X'.
ADD 1 TO lv_pooln_next .
ENDIF.
ENDLOOP.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |