Search code examples
abapbapisap-erp

How to update delivery quantity via BAPI?


In my business scenario the WMS system post GI of deliveries and send the info to SAP.

  • If WMS post GI for the entire quantity ==> no problem
  • If WMS post GI for quantity < delivery quantity ==> problem.
  • I should update the delivery quantity (LIPS-LFIMG) and then post the GI.
  • I tried with WS_DELIVERY_UPDATE and with BAPI_OUTB_DELIVERY_CHANGE without success.

Have you ever faced this case?


Solution

  • I solved it by calling BAPI_OUTB_DELIVERY_CHANGE with the following mapping:

    LS_HEADER_DATA-DELIV_NUMB = <FS_LIPS>-VBELN.
    LS_HEADER_CONTROL-DELIV_NUMB = <FS_LIPS>-VBELN.
    LV_DELIVERY = <FS_LIPS>-VBELN.
    LS_ITEM_DATA-DELIV_NUMB = <FS_LIPS>-VBELN.
    LS_ITEM_DATA-DELIV_ITEM = <FS_LIPS>-POSNR.
    LS_ITEM_DATA-MATERIAL = <FS_LIPS>-MATNR.
    LS_ITEM_DATA-BATCH = <FS_LIPS>-CHARG.
    LS_ITEM_DATA-DLV_QTY = LS_VBPOK_TAB-PIKMG. ==> new quantity
    LS_ITEM_DATA-DLV_QTY_IMUNIT = LS_VBPOK_TAB-PIKMG. ==> new quantity
    LS_ITEM_DATA-FACT_UNIT_NOM = <FS_LIPS>-UMVKZ.
    LS_ITEM_DATA-FACT_UNIT_DENOM = <FS_LIPS>-UMVKN.
    LS_ITEM_DATA-CONV_FACT = <FS_LIPS>-UMREF.
    LS_ITEM_DATA-GROSS_WT = <FS_LIPS>-BRGEW.
    LS_ITEM_DATA-NET_WEIGHT = <FS_LIPS>-NTGEW.
    LS_ITEM_DATA-UNIT_OF_WT = <FS_LIPS>-GEWEI.
    LS_ITEM_DATA-VOLUMEUNIT = <FS_LIPS>-VOLEH.
    LS_ITEM_DATA-SALES_UNIT = <FS_LIPS>-VRKME.
    LS_ITEM_DATA-BASE_UOM = <FS_LIPS>-MEINS.
    LS_ITEM_DATA-STOCK_TYPE = <FS_LIPS>-INSMK.
    LS_ITEM_DATA-VAL_TYPE = <FS_LIPS>-BWTAR.
    LS_ITEM_DATA-INSPLOT = <FS_LIPS>-QPLOS.
    LS_ITEM_DATA-VOLUME = <FS_LIPS>-VOLUM.
    
    APPEND LS_ITEM_DATA TO LT_ITEM_DATA.
    
    LS_ITEM_CONTROL-DELIV_NUMB = <FS_LIPS>-VBELN.
    LS_ITEM_CONTROL-DELIV_ITEM = <FS_LIPS>-POSNR.
    LS_ITEM_CONTROL-CHG_DELQTY = 'X'.
    
    APPEND LS_ITEM_CONTROL TO LT_ITEM_CONTROL.