Views 333
Visitors 169

ZXLTOF01

Home 
| Top Page | Threads |
Previous  Next

 
*&---------------------------------------------------------------------*
*&      Form  split_removal_quantity
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->T_LTAPA    text
*      -->I_LTAK     text
*      -->I_LTAP     text
*      -->I_MLVS     text
*      -->I_MGEF     text
*      -->I_T333     text
*      -->I_T340D    text
*      -->I_VORGA    text
*      -->I_AUSML    text
*      -->I_AUSME    text
*      -->C_LGTY0    text
*      -->C_LGTY1    text
*      -->C_LGTY2    text
*      -->C_LGTY3    text
*      -->C_LGTY4    text
*      -->C_LGTY5    text
*      -->C_LGTY6    text
*      -->C_LGTY7    text
*      -->C_LGTY8    text
*      -->C_LGTY9    text
*      -->C_LGT10    text
*      -->C_LGT11    text
*      -->C_LGT12    text
*      -->C_LGT13    text
*      -->C_LGT14    text
*      -->C_LGT15    text
*      -->C_LGT16    text
*      -->C_LGT17    text
*      -->C_LGT18    text
*      -->C_LGT19    text
*      -->C_LGT20    text
*      -->C_LGT21    text
*      -->C_LGT22    text
*      -->C_LGT23    text
*      -->C_LGT24    text
*      -->C_LGT25    text
*      -->C_LGT26    text
*      -->C_LGT27    text
*      -->C_LGT28    text
*      -->C_LGT29    text
*      -->C_CONTI    text
*----------------------------------------------------------------------*
FORM split_removal_quantity
      TABLES
            T_LTAPA STRUCTURE LTAPA
      CHANGING
            I_LTAK  like LTAK
            I_LTAP  like LTAP
            I_MLVS  like MLVS
            I_MGEF  like MGEF
            I_T333  like T333
            I_T340D LIKE T340D
            I_VORGA LIKE LTAP-VORGA
            I_AUSML LIKE RL03T-AUSML
            I_AUSME LIKE RL03T-AUSME
*       CHANGING
            C_LGTY0 LIKE T334T-LGTY0
            C_LGTY1 LIKE RL03T-LGTY1
            C_LGTY2 LIKE RL03T-LGTY2
            C_LGTY3 LIKE T334T-LGTY3
            C_LGTY4 LIKE T334T-LGTY4
            C_LGTY5 LIKE T334T-LGTY5
            C_LGTY6 LIKE T334T-LGTY6
            C_LGTY7 LIKE T334T-LGTY7
            C_LGTY8 LIKE T334T-LGTY8
            C_LGTY9 LIKE T334T-LGTY9
            C_LGT10 LIKE T334T-LGT10
            C_LGT11 LIKE T334T-LGT11
            C_LGT12 LIKE T334T-LGT12
            C_LGT13 LIKE T334T-LGT13
            C_LGT14 LIKE T334T-LGT14
            C_LGT15 LIKE T334T-LGT15
            C_LGT16 LIKE T334T-LGT16
            C_LGT17 LIKE T334T-LGT17
            C_LGT18 LIKE T334T-LGT18
            C_LGT19 LIKE T334T-LGT19
            C_LGT20 LIKE T334T-LGT20
            C_LGT21 LIKE T334T-LGT21
            C_LGT22 LIKE T334T-LGT22
            C_LGT23 LIKE T334T-LGT23
            C_LGT24 LIKE T334T-LGT24
            C_LGT25 LIKE T334T-LGT25
            C_LGT26 LIKE T334T-LGT26
            C_LGT27 LIKE T334T-LGT27
            C_LGT28 LIKE T334T-LGT28
            C_LGT29 LIKE T334T-LGT29
            C_CONTI LIKE LTAP1-KREUZ.
 
*---> 1. Check Storage Type Eceran.
tables: mlgt.
 
clear mlgt.
if C_LGTY0 = 'ZYY'.
   select single * from mlgt where matnr = I_MLVS-MATNR
                               and lgnum = I_MLVS-LGNUM
                               and lgtyp = C_LGTY0.
   if sy-subrc = 0.
     if I_AUSML le mlgt-MAMNG.
       clear: C_LGTY1, C_LGTY2, C_LGTY3, C_LGTY4, C_LGTY5,
              C_LGTY6, C_LGTY7, C_LGTY8, C_LGTY9, C_LGT10,
              C_LGT11, C_LGT12, C_LGT13, C_LGT14, C_LGT15,
              C_LGT16, C_LGT17, C_LGT18, C_LGT19, C_LGT20,
              C_LGT21, C_LGT22, C_LGT23, C_LGT24, C_LGT25,
              C_LGT26, C_LGT27, C_LGT28, C_LGT29.
 
     endif.
   endif.
endif.
 
 
*---> 2. Split Quantity.
 
if not ( C_LGTY0 = 'ZYY' and
       C_LGTY1 is initial and
       C_LGTY2 is initial ) .
 
   data: LV_NUM1         type I,
         LV_NUM2         type I,
         LV_NUM3         type I,
         LV_LOOP         type P DECIMALS 5,
         LV_AUSML        like RL03T-AUSML,
         ch_forklift(1type c,
         ch_brgew        type t312b-gwgew,
         lv_brgew_max    like t312b-gwgew.
 
   refresh T_LTAPA.
   clear T_LTAPA.
 
*---- check forklift
   clear ch_forklift.
   ch_forklift = 'X'.
   import ch_forklift from memory id 'ZWM_ZLT0E'.
*    free memory id 'ZWM_ZLT0E'.
 
   if sy-subrc ne 0.
     if i_ltap-ABLAD(4) eq 'HAND'.
       clear ch_forklift.
     endif.
   endif.
 
   move I_AUSML to LV_AUSML.
 
   do 3 times.
 
     case sy-index.
 
       when 1.
 
         if ch_forklift is initial.                           "bila pilih handpallet
 
           clear lv_brgew_max.
           select single gwgew into lv_brgew_max from t312b
                  where lgnum = i_LTAP-LGNUM
                    and PRSPL = '000001'.
 
           if lv_brgew_max is initial or I_MLVS-brgew = 0
                                      or I_MLVS-LHMG2 = 0.
             continue.
           else.
 
             ch_brgew = I_MLVS-brgew * I_AUSML.
             if ch_brgew gt lv_brgew_max.
               lv_brgew_max = ch_brgew.
             endif.
 
             lv_loop = lv_brgew_max / I_MLVS-brgew.              "qty per max berat.
             lv_loop = lv_loop / I_MLVS-LHMG2.                   "qty per box
             I_MLVS-LHMG1 = trunc( lv_loop ).                    "qty per pallet
             if I_MLVS-LHMG1 < lv_loop.
               I_MLVS-LHMG1 = ( I_MLVS-LHMG1 + 1 ) * I_MLVS-LHMG2.
             else.
               I_MLVS-LHMG1 = I_MLVS-LHMG1 * I_MLVS-LHMG2.
             endif.
           endif.
 
         endif.
 
         if i_mlvs-lhmg1 ne 0.
           LV_LOOP = I_AUSML / I_MLVS-LHMG1.
           LV_NUM1 = trunc( LV_LOOP ).
           I_AUSML = I_AUSML - ( LV_NUM1 * I_MLVS-LHMG1 ).
         else.
           exit.
         endif.
 
       when 2.
 
         if i_mlvs-lhmg2 ne 0.
           LV_LOOP = I_AUSML / I_MLVS-LHMG2.
           LV_NUM2 = trunc( LV_LOOP ).
           I_AUSML = I_AUSML - ( LV_NUM2 * I_MLVS-LHMG2 ).
         else.
           exit.
         endif.
 
       when 3.
 
         if i_mlvs-lhmg3 ne 0.
           LV_LOOP = I_AUSML / I_MLVS-LHMG3.
           LV_NUM3 = trunc( LV_LOOP ).
           I_AUSML = I_AUSML - ( LV_NUM3 * I_MLVS-LHMG3 ).
         else.
           exit.
         endif.
 
     endcase.
 
   enddo.
   perform append_ltap
           tables T_LTAPA
           using I_LTAP I_MLVS i_ausme lv_ausml
           changing lv_num1 lv_num2 lv_num3.
 
   move LV_AUSML to I_AUSML.
endif.
 
*---> 3. Pass LTAK untuk digunakan pada user exit split TO.
 
data: ch_ltak like ltak occurs 0 with header line.
 
clear ch_ltak.
refresh ch_ltak.
move-corresponding i_ltak to ch_ltak.
ch_ltak-TRART = i_T333-TRART.
append ch_ltak.
export ch_ltak to memory id 'ZWM_SPLIT_TO'.
 
ENDFORM.                    " check_eceran
*&---------------------------------------------------------------------*
*&      Form  append_ltap
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM append_ltap
    tables
        T_LTAPA structure LTAPA
    using
        I_LTAP  like LTAP
        I_MLVS  like MLVS
        i_ausme LIKE RL03T-AUSME
        lv_ausml LIKE RL03T-AUSML
    changing
        lv_num1 type i
        lv_num2 type i
        lv_num3 type i.
 
data:   sum_ANFML   like RL03T-AUSML,
         sum_ANFMe   like RL03T-AUSMe.
 
clear T_LTAPA.
 
do lv_num1 times.
   T_LTAPA-ANFME = ( 1 * I_MLVS-LHMG1 / I_LTAP-UMREZ ).
   T_LTAPA-ANFML = T_LTAPA-ANFME * I_LTAP-UMREZ.
   if T_LTAPA-ANFML > 0 and T_LTAPA-ANFME > 0.
     append T_LTAPA.
     clear T_LTAPA.
   endif.
enddo.
clear lv_num1.
 
*  do lv_num2 times.
T_LTAPA-ANFME = ( lv_num2 * I_MLVS-LHMG2 / I_LTAP-UMREZ ).
T_LTAPA-ANFML = T_LTAPA-ANFME * I_LTAP-UMREZ.
if T_LTAPA-ANFML > 0 and T_LTAPA-ANFME > 0.
   append T_LTAPA.
   clear T_LTAPA.
endif.
*  enddo.
clear lv_num2.
 
*  do lv_num3 times.
T_LTAPA-ANFME = ( LV_NUM3 * I_MLVS-LHMG3 / I_LTAP-UMREZ ).
T_LTAPA-ANFML = T_LTAPA-ANFME * I_LTAP-UMREZ.
if T_LTAPA-ANFML > 0 and T_LTAPA-ANFME > 0.
   append T_LTAPA.
   clear T_LTAPA.
endif.
*  enddo.
clear lv_num3.
 
clear: sum_anfme, sum_anfml.
loop at T_LTAPA.
   sum_anfme = sum_anfme + T_LTAPA-ANFMe.
   sum_anfml = sum_anfml + T_LTAPA-ANFML.
endloop.
 
T_LTAPA-ANFME = i_AUSME - sum_anfme.
T_LTAPA-ANFML = lv_AUSMl - sum_anfml.
 
if T_LTAPA-ANFML > 0 and T_LTAPA-ANFME > 0.
   append T_LTAPA.
endif.
 
ENDFORM.                    " append_ltap

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views