Views 367
Visitors 230

DELIVERY_FINAL_CHECK

Home 
| Top Page | Threads |
Previous  Next

method IF_EX_LE_SHP_DELIVERY_PROC~DELIVERY_FINAL_CHECK .
**
*Prevent inbound delivery created for PO with final delivery
*Check if material, vendor and plant are within source inspection,
* and provide warning if not packed
**
data: dlv_comp type c,
       ls_finchdel      type finchdel.
data: zekpo type ekpo.
data: zqinf type qinf.
data: zmsg(70) type c.
 
field-symbols: <ls_xlikp> type likpvb,
                <ls_xlips> type lipsvb,
                <ls_xvbup> type vbupvb.
 
* Loop at all created inbound deliveries
loop at it_xlikp assigning <ls_xlikp> where updkz ne 'D'
                                          and LFART eq 'EL'
                                           or LFART eq 'ZEL'.
   clear: dlv_comp.
 
*   Check delivery quantity of all items belonging to current delivery
   loop at it_xlips assigning <ls_xlips>
                    where vbeln eq <ls_xlikp>-vbeln
                      and updkz ne 'D'.
     select * from ekpo into zekpo where
                        EBELN = <ls_xlips>-VGBEL and
                        EBELP = <ls_xlips>-VGPOS and
                        ELIKZ = 'X'.
     endselect.
     if sy-subrc = 0.
       dlv_comp = 'X'.
     endif.
 
     if dlv_comp eq 'X'.
*     Some items of the delivery have PO status deliv comp
*     Write message with type E to error log
*     (forces deletion of the delivery or prevents delivery from saving)
       clear ls_finchdel.
       ls_finchdel-vbeln    = <ls_xlikp>-vbeln.
       ls_finchdel-pruefung = '99'.
       ls_finchdel-msgty    = 'E'.
       ls_finchdel-msgid    = 'ME'.
       ls_finchdel-MSGV1    = <ls_xlips>-VGBEL.
       ls_finchdel-MSGV2    = <ls_xlips>-VGPOS.
       ls_finchdel-msgno    = '632'.
*     Note: CT_FINCHDEL is a hashed table
       insert ls_finchdel into table ct_finchdel.
     endif.
 
*Check if source inspection, give warning if packing status not complete
     select * from QINF into zqinf where
                   MATNR = <ls_xlips>-MATNR and
                   WERK = <ls_xlips>-WERKS and
                   LIEFERANT = <ls_xlikp>-LIFNR and
                   VARIABNAHM <> '' and
                   LOEKZ = ' '.
     endselect.
     if sy-subrc = 0.
       loop at it_xvbup assigning <ls_xvbup> where
                        vbeln = <ls_xlips>-VBELN and
                        posnr = <ls_xlips>-POSNR.
         if <ls_xvbup>-PKSTA <> 'C'.
*     Send warning if not packed
           concatenate 'Item' <ls_xlips>-VGPOS into zmsg
                               separated by space.
           concatenate zmsg
           'relevant to Handling Unit. Pls check !'
           into zmsg separated by space.
 
           clear ls_finchdel.
           ls_finchdel-vbeln    = <ls_xlikp>-vbeln.
           ls_finchdel-pruefung = '99'.
           ls_finchdel-msgty    = 'W'.
           ls_finchdel-msgid    = 'VL'.
*            ls_finchdel-msgno    = '615'.
           ls_finchdel-msgno    = '001'.
           ls_finchdel-MSGV1    = zmsg.
*     Note: CT_FINCHDEL is a hashed table
           insert ls_finchdel into table ct_finchdel.
 
         endif.
 
       endloop.
     endif.
*
****  Check SLOC for Inbound Delivery (PO Based)
      IF <ls_xlips>-KZBEW = 'B' and <ls_xlips>-lgort is initial.
         MESSAGE E604(VL) WITH <ls_xlips>-posnr.
*   The storage location is not defined for delivery item &
      ENDIF.
 
   endloop.         "loop at it_xlips
 
endloop.           "loop at it_xlikp
 
endmethod.

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views