Views 225
Visitors 121

ZXLTOF02

Home 
| Top Page | Threads |
Previous  Next

*----------------------------------------------------------------------*
***INCLUDE ZXLTOF02 .
*----------------------------------------------------------------------*
data: lv_pooln          like LTAP_VB-POOLN,
     lv_vltyp          like LTAP_VB-VLTYP,
     lv_kober          like LTAP_VB-KOBER,
     lv_vkapv          like LTAP_VB-VKAPV,
     lv_split          type c,
     lv_nlber          like LTAP_VB-nlber,
     lv_nltyp          like LTAP_VB-nltyp,
     lv_count(2)       type n,
     lv_count_max(2)   type n,
     lv_refnr          like ltak-refnr,
     lv_tapri          like ltak-tapri,
     lw_ltak           like ltak,
     li_iltak          like ltak,
     lv_brgew          like ltap-brgew,
     lv_brgew_max      like T312B-GWGEW,
     ch_RF(1)          type c,
     ch_ltak           like ltak occurs 0 with header line,
     ch_forklift       type c,
     T_LTAP_VB1        like LTAP_VB occurs 50 with header line,
     T_LTAP_TMP1       like LTAP_VB occurs 50 with header line,
     T_LTAP_TMP2       like LTAP_VB occurs 50 with header line,
     ablad             like ltap-ablad,
     vb1_tabix  like sy-tabix,
     tmp1_tabix like sy-tabix,
     lv_tapos   like ltap-tapos.
 
data: begin of tobe_split occurs 5,
        pooln like LTAP_VB-POOLN,
     end of tobe_split.
 
DATABEGIN OF li_Ltak OCCURS 5.
       INCLUDE STRUCTURE ltak.
       INCLUDE STRUCTURE ltak1.
DATAEND OF li_Ltak.
 
 
*&---------------------------------------------------------------------*
*&      Form  get_memory
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM SPLIT_TO
tables
    T_LTAP_VB1
using
    ablad.
 
read table t_ltap_vb1 index 1.
perform get_memory tables ch_ltak.
perform get_RF tables t_ltap_vb1.
perform get_weight tables t_ltap_vb1.
 
lv_count_max = 99.
 
read table ch_ltak index 1.
 
if ch_ltak-TRART = 'A'.
 
   perform split_picking tables t_ltap_vb1.
 
elseif ch_ltak-TRART = 'E'.
 
   perform split_putaway tables t_ltap_vb1.
 
endif.
 
*  perform split_by_priority tables t_ltap_vb1.
 
ENDFORM.                    " get_memory
*&---------------------------------------------------------------------*
*&      Form  get_memory
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_memory tables ch_ltak.
*--- import ltak
clear ch_ltak. refresh ch_ltak.
import ch_ltak from memory id 'ZWM_SPLIT_TO'.
free memory id 'ZWM_SPLIT_TO'.
 
*---- check forklift
clear ch_forklift.
ch_forklift = 'X'.
import ch_forklift from memory id 'ZWM_ZLT0E'.
 
if sy-subrc ne 0.
   if ABLAD(4) eq 'HAND'.
     clear ch_forklift.
   endif.
else.
   free memory id 'ZWM_ZLT0E'.
endif.
 
ENDFORM.                    " get_memory
*&---------------------------------------------------------------------*
*&      Form  get_RF
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_RF tables t_ltap_vb1 structure LTAP_VB.
 
*--- check RF queue
read table t_ltap_vb1 index 1.
clear ch_RF.
select single lgnum into t_ltap_vb1-LGNUM from t346
        where lgnum = t_ltap_vb1-LGNUM.                "check RF queue
if sy-subrc = 0.
   ch_RF = 'X'.
endif.
 
ENDFORM.                    " get_RF
*&---------------------------------------------------------------------*
*&      Form  get_weight
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_weight tables t_ltap_vb1 structure LTAP_VB.
read table t_ltap_vb1 index 1.
select single gwgew into lv_brgew_max from t312b
        where lgnum = t_ltap_vb1-LGNUM
        and PRSPL = '000001'.
if lv_brgew_max is initial.
   lv_brgew_max = 9999999.
endif.
 
ENDFORM.                    " get_weight
*&---------------------------------------------------------------------*
*&      Form  split_picking
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_picking tables t_ltap_vb1 structure LTAP_VB.
 
perform delete_pooln tables t_ltap_vb1.
 
perform split_Picking_Eceran tables t_ltap_vb1.
 
lv_pooln = 1.
 
if not ch_forklift is initial.
   perform split_picking_forklift tables t_ltap_vb1.
else.
   perform split_picking_handpallet tables t_ltap_vb1.
endif.
 
ENDFORM.                    " split_picking
*&---------------------------------------------------------------------*
*&      Form  split_putaway
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_putaway tables t_ltap_vb1 structure LTAP_VB.
 
perform delete_pooln tables t_ltap_vb1.
 
perform split_Putaway_Eceran tables t_ltap_vb1.
 
lv_pooln = 1.
 
perform split_full_pallet tables t_ltap_vb1.
 
sort t_ltap_vb1 DESCENDING by NLTYP VKAPV.      "section and capacity
 
clear: lv_vkapv, lv_count,
        lv_split, lv_nltyp.
 
loop at t_ltap_vb1 where pooln lt 1.
 
   if t_ltap_vb1-pooln gt 0. continue. endif.
 
   vb1_tabix = sy-tabix.
 
   clear lv_split.
 
   lv_vkapv = lv_vkapv + t_ltap_vb1-VKAPV.
 
   if t_ltap_vb1-nltyp ne lv_nltyp.
     move 'X' to lv_split.
 
   elseif lv_vkapv ge 1.
     move 'X' to lv_split.
 
   elseif lv_vkapv lt 1.
 
     clear t_ltap_tmp1. refresh t_ltap_tmp1.
     APPEND LINES OF t_ltap_vb1 TO t_ltap_tmp1.
     DELETE t_ltap_tmp1 where pooln gt 0
                           or nltyp ne t_ltap_vb1-nltyp.
     sort t_ltap_tmp1 DESCENDING by vkapv.
 
     lv_tapos = t_ltap_vb1-tapos.
 
     loop at t_ltap_tmp1.
 
       if t_ltap_tmp1-tapos eq lv_tapos. continue. endif.
 
       lv_vkapv = lv_vkapv + t_ltap_vb1-VKAPV.
 
       if lv_vkapv le 1.
         t_ltap_tmp1-pooln = lv_pooln.
         modify t_ltap_vb1 from t_ltap_tmp1 transporting pooln where tapos = t_ltap_tmp1-tapos.
       else.
         lv_vkapv = lv_vkapv - t_ltap_vb1-VKAPV.
       endif.
 
     endloop.
 
     sy-tabix = vb1_tabix.
 
   endif.
 
   IF not lv_split is initial.
 
     add 1 to lv_pooln.
     t_ltap_vb1-pooln = lv_pooln.
 
     clear: lv_vkapv, lv_nltyp.
 
     move t_ltap_vb1-nltyp to lv_nltyp.
     move t_ltap_vb1-vkapv to lv_vkapv.
 
   ELSE.
 
     t_ltap_vb1-pooln = lv_pooln.
 
   ENDIF.
 
   MODIFY t_ltap_vb1 index vb1_tabix transporting pooln.
 
endloop.
 
ENDFORM.                    " split_putaway
*&---------------------------------------------------------------------*
*&      Form  split_by_priority
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_by_priority tables t_ltap_vb1 structure LTAP_VB.
**-------------------------------------------------"mod sgt14112005
break imc_sigit.
if sy-tcode eq 'LT0E'.
   clear lv_count.
*  move-corresponding ltak to li_iltak.
   select *
     into table li_Ltak
     from LTAK
     for all entries in t_ltap_vb1
     where LGNUM eq t_ltap_vb1-lgnum
     and   KQUIT eq space
     and   QUEUE eq t_ltap_vb1-queue
     and   BWLVS eq '850'
     and   TAPRI ne space.
 
   clear lv_refnr.
   sort li_Ltak by tanum tapri.
   loop at li_Ltak.
     select single *
       into lw_ltak
       from LTAK
       where lgnum eq li_Ltak-lgnum
       and   tanum eq li_Ltak-tanum.
     if sy-subrc eq 0.
       clear lw_ltak-tapri.
*      at new tanum.
*        clear lv_count.
*      endat.
       if lv_refnr ne li_Ltak-refnr.
         clear lv_count.
         move li_Ltak-refnr to lv_refnr.
       endif.
       add 1 to lv_count.
       move lv_count to LW_LTAK-TAPRI.
       UPDATE LTAK from LW_LTAK.
     endif.
   endloop.
endif.
**----------------------------------------"end sgt14112005
 
ENDFORM.                    " split_by_priority
*&---------------------------------------------------------------------*
*&      Form  split_picking_forklift
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_picking_forklift tables t_ltap_vb1 structure ltap_vb.
 
perform split_full_pallet tables t_ltap_vb1.
perform split_pick_full_weight tables t_ltap_vb1.
perform split_pick_zero_weight tables t_ltap_vb1.
perform split_pick_weight      tables t_ltap_vb1.
 
ENDFORM.                    " split_picking_forklift
*&---------------------------------------------------------------------*
*&      Form  split_picking_handpallet
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_picking_handpallet tables t_ltap_vb1 structure ltap_vb.
 
perform split_pick_full_weight tables t_ltap_vb1.
perform split_pick_zero_weight tables t_ltap_vb1.
perform split_pick_weight      tables t_ltap_vb1.
 
ENDFORM.                    " split_picking_handpallet
*&---------------------------------------------------------------------*
*&      Form  split_Picking_Eceran
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM split_Picking_Eceran tables t_ltap_vb1 structure ltap_vb.
loop at t_ltap_vb1.
   if t_ltap_vb1-vltyp eq 'ZYY'.
     t_ltap_vb1-pooln = 1.
     MODIFY t_ltap_vb1 index sy-tabix transporting pooln.
   endif.
endloop.
ENDFORM.                    " split_Picking_Eceran
*&---------------------------------------------------------------------*
*&      Form  delete_pooln
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM delete_pooln  TABLES T_LTAP_VB1 STRUCTURE LTAP_VB.
 
loop at T_LTAP_VB1.
   clear t_ltap_vb1-pooln.
   modify t_ltap_vb1 index sy-tabix transporting pooln.
endloop.
 
 
ENDFORM.                    " delete_pooln
*&---------------------------------------------------------------------*
*&      Form  split_full_pallet
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM split_full_pallet TABLES T_LTAP_VB1 STRUCTURE LTAP_VB.
 
loop at t_ltap_vb1 where pooln lt 1
                      and VKAPV ge 1.
   add 1 to lv_pooln.
   t_ltap_vb1-pooln = lv_pooln.
   modify t_ltap_vb1 index sy-tabix transporting pooln.
endloop.
 
ENDFORM.                    " split_full_pallet
*&---------------------------------------------------------------------*
*&      Form  split_pick_weight
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM split_pick_weight  TABLES   T_LTAP_VB1 STRUCTURE LTAP_VB.
 
sort t_ltap_vb1 DESCENDING by pooln KOBER BRGEW.
 
clear: lv_brgew, lv_split,
        lv_kober, lv_tapos,
        vb1_tabix, tmp1_tabix.
 
loop at t_ltap_vb1 where pooln lt 1.
 
   if t_ltap_vb1-pooln gt 0. continue. endif.
 
   clear lv_split.
 
   lv_brgew = lv_brgew + t_ltap_vb1-BRGEW.
 
   vb1_tabix = sy-tabix.
 
   if t_ltap_vb1-kober ne lv_kober.
 
     move 'X' to lv_split.
 
   elseif t_ltap_vb1-LGNUM ne '004' and t_ltap_vb1-brgew gt 0
                                    and lv_brgew ge lv_brgew_max.
 
     move 'X' to lv_split.
 
   elseif t_ltap_vb1-LGNUM ne '004' and t_ltap_vb1-brgew gt 0
                                    and lv_brgew lt lv_brgew_max.
 
     clear t_ltap_tmp1. refresh t_ltap_tmp1.
     APPEND LINES OF t_ltap_vb1 TO t_ltap_tmp1.
     DELETE t_ltap_tmp1 where pooln gt 0
                           or kober ne t_ltap_vb1-kober.
     sort t_ltap_tmp1 DESCENDING by BRGEW.
 
     lv_tapos = t_ltap_vb1-tapos.
 
     loop at t_ltap_tmp1.
 
       if t_ltap_tmp1-tapos eq lv_tapos. continue. endif.
 
       lv_brgew = lv_brgew + t_ltap_tmp1-brgew.
 
       if lv_brgew <= lv_brgew_max.
         t_ltap_tmp1-pooln = lv_pooln.
         modify t_ltap_vb1 from t_ltap_tmp1 transporting pooln where tapos = t_ltap_tmp1-tapos.
       else.
         lv_brgew = lv_brgew - t_ltap_tmp1-brgew.
       endif.
 
     endloop.
 
     sy-tabix = vb1_tabix.
 
   endif.
 
   IF lv_split is initial.
     t_ltap_vb1-pooln = lv_pooln.
   else.
     add 1 to lv_pooln.
     t_ltap_vb1-pooln = lv_pooln.
 
     clear: lv_kober, lv_brgew.
     move t_ltap_vb1-kober to lv_kober.
     move t_ltap_vb1-brgew to lv_brgew.
   ENDIF.
 
   MODIFY t_ltap_vb1 index vb1_tabix transporting pooln.
 
endloop.
 
ENDFORM.                    " split_pick_weight
*&---------------------------------------------------------------------*
*&      Form  split_pick_full_weight
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM split_pick_full_weight  TABLES T_LTAP_VB1 STRUCTURE LTAP_VB.
 
loop at t_ltap_vb1  where pooln lt 1
                       and brgew ge lv_brgew_max
                       and lgnum ne '004'.
   add 1 to lv_pooln.
   t_ltap_vb1-pooln = lv_pooln.
   modify t_ltap_vb1 index sy-tabix transporting pooln.
 
endloop.
 
ENDFORM.                    " split_pick_full_weight
*&---------------------------------------------------------------------*
*&      Form  split_pick_zero_weight
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM split_pick_zero_weight  TABLES   T_LTAP_VB1 STRUCTURE LTAP_VB.
 
clear: lv_split, lv_kober.
 
sort t_ltap_vb1 DESCENDING by pooln KOBER BRGEW.
 
loop at t_ltap_vb1  where pooln lt 1
                       and brgew eq 0
                       and lgnum ne '004'.
 
   clear lv_split.
   if t_ltap_vb1-kober ne lv_kober.
     move 'X' to lv_split.
   endif.
 
   if lv_split is initial.
     t_ltap_vb1-pooln = lv_pooln.
   else.
     add 1 to lv_pooln.
     t_ltap_vb1-pooln = lv_pooln.
     clear: lv_kober.
     move t_ltap_vb1-kober to lv_kober.
   endif.
 
   MODIFY t_ltap_vb1 index sy-tabix transporting pooln.
 
endloop.
 
ENDFORM.                    " split_pick_zero_weight
*&---------------------------------------------------------------------*
*&      Form  split_Putaway_Eceran
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*
FORM split_Putaway_Eceran  TABLES   T_LTAP_VB1 STRUCTURE LTAP_VB.
 
loop at t_ltap_vb1.
   if t_ltap_vb1-nltyp eq 'ZYY'.
     t_ltap_vb1-pooln = 1.
     MODIFY t_ltap_vb1 index sy-tabix transporting pooln.
   endif.
endloop.
 
ENDFORM.                    " split_Putaway_Eceran
*&---------------------------------------------------------------------*
*&      Form  split_Putaway_full_pallet
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_LTAP_VB1  text
*----------------------------------------------------------------------*

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views