ZXLRPU01

<< 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.