|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > English > ABAP Tutorial > ABAP Workbench Tools > Enhancement > Customer Exits > Customer Exits Examples > Project ZWMWS001 > Funtions Exits > EXIT_RLLNACH2_001 > ZXLRPU01 |
*&---------------------------------------------------------------------*
*& Include ZXLRPU01 *
*&---------------------------------------------------------------------*
DATA: BEGIN OF li_lipos OCCURS 0.
DATA: sammg LIKE vbss-sammg.
INCLUDE STRUCTURE lrp_lipos.
DATA: END OF li_lipos.
DATA: lv_sammg LIKE vbss-sammg,
lv_matnr LIKE lrp_lipos-matnr,
lv_tabix LIKE sy-tabix.
DATA: lv_lips LIKE lips.
*---- re-calculate order quantity,
LOOP AT t_lipos.
t_lipos-mamng = t_lipos-mamng + 1.
IF t_lipos-lgmng > t_lipos-mamng.
COMPUTE t_lipos-bedmng
= t_lipos-lgmng MOD t_lipos-mamng.
ELSE.
MOVE t_lipos-lgmng TO t_lipos-bedmng.
ENDIF.
MODIFY t_lipos INDEX sy-tabix TRANSPORTING bedmng.
ENDLOOP.
*--------------------
LOOP AT t_lipos.
MOVE-CORRESPONDING t_lipos TO li_lipos.
SELECT SINGLE sammg
INTO li_lipos-sammg
FROM vbss
WHERE vbeln EQ t_lipos-vbeln
AND sortf NE space.
APPEND li_lipos.
ENDLOOP.
REFRESH t_lipos.
CLEAR t_lipos.
SORT li_lipos BY matnr sammg.
LOOP AT li_lipos.
* read table T_LIPOS with key MATNR = LI_LIPOS-MATNR.
IF li_lipos-matnr NE lv_matnr OR li_lipos-sammg NE lv_sammg.
MOVE-CORRESPONDING li_lipos TO t_lipos.
APPEND t_lipos.
MOVE sy-tabix TO lv_tabix.
MOVE li_lipos-sammg TO lv_sammg.
MOVE li_lipos-matnr TO lv_matnr.
CONTINUE.
ENDIF.
t_lipos-bedmng = t_lipos-bedmng + li_lipos-bedmng.
MODIFY t_lipos INDEX lv_tabix.
ENDLOOP.
LOOP AT t_lipos.
IF t_lipos-bedmng GT 0.
IF t_lipos-bedmng GT t_lipos-nsmng.
* T_LIPOS-BEDMNG = T_LIPOS-BEDMNG - T_LIPOS-NSMNG.
*------ added,
t_lipos-mamng = t_lipos-mamng + 1.
COMPUTE t_lipos-bedmng
= t_lipos-bedmng MOD t_lipos-mamng.
*------ end add,
ENDIF.
*--- check apakah bedmng bisa diconvert ke sales unit tanpa ada sisa
*--- jika bisa maka set to 0, artinya tidak akan dicreate TR
SELECT SINGLE meins vrkme umvkz umvkn
INTO CORRESPONDING FIELDS OF lv_lips
FROM lips
WHERE vbeln = t_lipos-vbeln
AND posnr = t_lipos-posnr.
* convert bedmng to sales unit
* ambil sisanya yg akan dijadikan TR
IF lv_lips-umvkz <> lv_lips-umvkn .
t_lipos-lgmng = t_lipos-bedmng MOD ( lv_lips-umvkz / lv_lips-umvkn ).
ELSE.
t_lipos-lgmng = t_lipos-bedmng.
ENDIF.
t_lipos-bedmng = t_lipos-lgmng.
*--- end by
MODIFY t_lipos INDEX sy-tabix TRANSPORTING lgmng bedmng.
ENDIF.
ENDLOOP.