SAP创建和修改交货单BAPI
SAP创建和修改交货单BAPI
1.根据采购订单->内向交货单
创建
此BAPI会出现物料号为空的情况
*
- LW_HEADER-DELIV_DATE = SY-DATUM.
- LT_DETAIL-PO_NUMBER = US_LIPS-VGBEL.
- LT_DETAIL-PO_ITEM = US_LIPS-VGPOS.
- LT_DETAIL-DELIV_QTY = U_DATA-LFIMG.
- LT_DETAIL-UNIT = US_LIPS-VRKME.
- APPEND LT_DETAIL.
- CALL FUNCTION ‘BBP_INB_DELIVERY_CREATE’
- EXPORTING
IS_INB_DELIVERY_HEADER = LW_HEADER
- IMPORTING
EF_DELIVERY = LV_VBELN
- TABLES
IT_INB_DELIVERY_DETAIL = LT_DETAIL
RETURN = LT_RETURN.
推荐以下BAPI
LS_REQ-ID = ‘1’.
LS_REQ-DOCUMENT_NUMB = US_LIPS-VGBEL.
LS_REQ-DOCUMENT_ITEM = US_LIPS-VGPOS.
SELECT SINGLE LGORT FROM EKPO INTO @DATA(L_LGORT)
WHERE EBELN = @US_LIPS-VGBEL AND EBELP = @US_LIPS-VGPOS.
IF SY-SUBRC = 0.
LS_REQ-STGE_LOC = L_LGORT.
ENDIF.
LS_REQ-EXTDELV_NO = ‘’.
LS_REQ-QUANTITY_BASE__UOM = U_DATA-LFIMG.
LS_REQ-DELIVERY_DATE = SY-DATUM.
LS_REQ-DOCUMENT_TYPE = ‘B’. "B - PO,L - DN,A - SALES ORDER
APPEND LS_REQ TO LT_REQ.
调用BAPI创建内向交货单
CALL FUNCTION ‘BAPI_DELIVERYPROCESSING_EXEC’
TABLES
REQUEST = LT_REQ
CREATEDITEMS = LT_RESULT
RETURN = LT_RETURN.READ TABLE LT_RESULT INDEX 1.
IF SY-SUBRC EQ 0.
LV_VBELN = LT_RESULT-DOCUMENT_NUMB.
ENDIF.
修改
*查询原始路线
SELECT SINGLE ROUTE,VSART,LFDAT,WADAT,VSBED INTO @DATA(LW_LIKP) FROM LIKP WHERE VBELN = @U_DATA-VBELN.
IF SY-SUBRC EQ 0 AND LW_LIKP-ROUTE IS NOT INITIAL.
LW_HEADER-ROUTE = LW_LIKP-ROUTE.
抬头
LS_HEAD-DELIV_NUMB = LV_VBELN.
LS_HEADX-DELIV_NUMB = LV_VBELN.LS_HEAD-ROUTE = LW_LIKP-ROUTE. LS_HEADX-ROUTE_FLG = ABAP_TRUE. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING HEADER_DATA = LS_HEAD HEADER_CONTROL = LS_HEADX DELIVERY = LV_VBELN TABLES RETURN = LT_RETURN1.
或者
- 修改数量
抬头
LS_HEAD-DELIV_NUMB = US_LIPS-VBELN.
LS_HEADX-DELIV_NUMB = US_LIPS-VBELN.行项目
LS_ITEM-DELIV_NUMB = US_LIPS-VBELN.
LS_ITEM-DELIV_ITEM = US_LIPS-POSNR.
LS_ITEM-DLV_QTY = US_LIPS-LFIMG - U_DATA-LFIMG. "原交货单新数量= 原交货单老数量 - 该行拆分数量
LS_ITEM-SALES_UNIT = US_LIPS-VRKME.
SELECT SINGLE UMREZ UMREN
INTO (LS_ITEM-FACT_UNIT_NOM,LS_ITEM-FACT_UNIT_DENOM)
FROM MARM
WHERE MATNR = US_LIPS-MATNR "销售单位一定要先在主数据维护
AND MEINH = LS_ITEM-SALES_UNIT.
APPEND LS_ITEM TO LT_ITEM.
LS_ITEMX-DELIV_NUMB = US_LIPS-VBELN.
LS_ITEMX-DELIV_ITEM = US_LIPS-POSNR.
LS_ITEMX-CHG_DELQTY = ‘X’."修改交货数量
APPEND LS_ITEMX TO LT_ITEMX.CALL FUNCTION ‘BAPI_INB_DELIVERY_CHANGE’
EXPORTING
HEADER_DATA = LS_HEAD
HEADER_CONTROL = LS_HEADX
DELIVERY = US_LIPS-VBELN
TABLES
ITEM_DATA = LT_ITEM
ITEM_CONTROL = LT_ITEMX
RETURN = LT_RETURN.
2.根据销售订单->外向交货单
创建
LS_SO-REF_DOC = US_LIPS-VGBEL.
LS_SO-REF_ITEM = US_LIPS-VGPOS.
LS_SO-DLV_QTY = U_DATA-LFIMG.
LS_SO-SALES_UNIT = US_LIPS-VRKME.
APPEND LS_SO TO LT_SO.
CALL FUNCTION ‘BAPI_OUTB_DELIVERY_CREATE_SLS’
IMPORTING
DELIVERY = LV_VBELN
TABLES
SALES_ORDER_ITEMS = LT_SO
CREATED_ITEMS = LT_DN
RETURN = LT_RETURN.
修改
修改数量
抬头
LS_HEAD-DELIV_NUMB = US_LIPS-VBELN.
LS_HEADX-DELIV_NUMB = US_LIPS-VBELN.行项目
LS_ITEM-DELIV_NUMB = US_LIPS-VBELN.
LS_ITEM-DELIV_ITEM = US_LIPS-POSNR.
LS_ITEM-DLV_QTY = US_LIPS-LFIMG - U_DATA-LFIMG. "原交货单新数量= 原交货单老数量 - 该行拆分数量
LS_ITEM-SALES_UNIT = US_LIPS-VRKME.
SELECT SINGLE UMREZ UMREN
INTO (LS_ITEM-FACT_UNIT_NOM,LS_ITEM-FACT_UNIT_DENOM)
FROM MARM
WHERE MATNR = US_LIPS-MATNR "销售单位一定要先在主数据维护
AND MEINH = LS_ITEM-SALES_UNIT.
APPEND LS_ITEM TO LT_ITEM.
LS_ITEMX-DELIV_NUMB = US_LIPS-VBELN.
LS_ITEMX-DELIV_ITEM = US_LIPS-POSNR.
LS_ITEMX-CHG_DELQTY = ‘X’."修改交货数量
APPEND LS_ITEMX TO LT_ITEMX.CALL FUNCTION ‘BAPI_OUTB_DELIVERY_CHANGE’
EXPORTING
HEADER_DATA = LS_HEAD
HEADER_CONTROL = LS_HEADX
DELIVERY = US_LIPS-VBELN
TABLES
ITEM_DATA = LT_ITEM
ITEM_CONTROL = LT_ITEMX
RETURN = LT_RETURN.
3.根据采购订单->外向交货单
创建
LS_STO-REF_DOC = US_LIPS-VGBEL.
LS_STO-REF_ITEM = US_LIPS-VGPOS.
LS_STO-DLV_QTY = U_DATA-LFIMG.
LS_STO-SALES_UNIT = US_LIPS-VRKME.
APPEND LS_STO TO LT_STO.
SELECT SINGLE VSTEL INTO @LV_VSTEL
FROM EKPV
WHERE EBELN = @US_LIPS-VGBEL
AND EBELP = @US_LIPS-VGPOS.
CALL FUNCTION ‘BAPI_OUTB_DELIVERY_CREATE_STO’
EXPORTING
SHIP_POINT = LV_VSTEL
IMPORTING
DELIVERY = LV_VBELN
TABLES
STOCK_TRANS_ITEMS = LT_STO
CREATED_ITEMS = LT_DN
RETURN = LT_RETURN.
修改
*查询原始路线
SELECT SINGLE ROUTE,VSART,WADAT,LFDAT,VSBED INTO @DATA(LW_LIKP) FROM LIKP WHERE VBELN = @U_DATA-VBELN.
IF SY-SUBRC EQ 0 AND LW_LIKP-ROUTE IS NOT INITIAL.
抬头
LS_HEAD-DELIV_NUMB = LV_VBELN.
LS_HEADX-DELIV_NUMB = LV_VBELN.LS_HEAD-ROUTE = LW_LIKP-ROUTE. LS_HEADX-ROUTE_FLG = ABAP_TRUE. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING HEADER_DATA = LS_HEAD HEADER_CONTROL = LS_HEADX DELIVERY = LV_VBELN TABLES RETURN = LT_RETURN.
文章来自于网络,如果侵犯了您的权益,请联系站长删除!