DN创建
1. 参考采购订单创建DN :
BAPI_OUTB_DELIVERY_CREATE_STO
FUNCTION zmmfm0202. *"---------------------------------------------------------------------- *"*"本地接口: *" EXPORTING *" REFERENCE(O_RETURN) TYPE ZMMS0021 *" TABLES *" IT_ITEM STRUCTURE ZMMS0185 *"---------------------------------------------------------------------- DATA:lt_stock_items TYPE TABLE OF bapidlvreftosto. DATA:ls_stock_items TYPE bapidlvreftosto. DATA:lt_created_items TYPE TABLE OF bapidlvitemcreated. DATA:ls_created_items TYPE bapidlvitemcreated. DATA:lv_delivery TYPE bapishpdelivnumb-deliv_numb. DATA:lv_vstel TYPE vstel. DATA:lv_ledat TYPE ledat. DATA:lt_return TYPE TABLE OF bapiret2. LOOP AT it_item INTO DATA(ls_item). ls_stock_items-ref_doc = ls_item-ebeln."参考凭证 ls_stock_items-ref_item = ls_item-ebelp."参考项 ls_stock_items-dlv_qty = ls_item-menge."数量 ls_stock_items-sales_unit = ls_item-meins."数量单位 APPEND ls_stock_items TO lt_stock_items. ls_created_items-ref_doc = ls_item-ebeln."参考凭证 ls_created_items-ref_item = ls_item-ebelp."参考项 ls_created_items-material = ls_item-matnr."物料编号 ls_created_items-material_long = ls_item-matnr."物料编号 ls_created_items-dlv_qty = ls_item-menge."数量 ls_created_items-sales_unit = ls_item-meins."数量单位 APPEND ls_created_items TO lt_created_items. ENDLOOP. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO' EXPORTING ship_point = lv_vstel due_date = lv_ledat IMPORTING delivery = lv_delivery TABLES stock_trans_items = lt_stock_items created_items = lt_created_items return = lt_return. DELETE lt_return WHERE type = 'E' AND id = 'BAPI' AND number = '001'. "20190628 需求 READ TABLE lt_return INTO DATA(ls_return) WITH KEY id = 'VLBAPI' number = '061' type = 'I'. IF sy-subrc = 0. o_return-message = ls_return-message. "创建失败 CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. o_return-type = 'E'. CONCATENATE '交货单创建失败:' o_return-message INTO o_return-message. ELSE. LOOP AT lt_return INTO ls_return WHERE type = 'E'. CONCATENATE o_return-message ls_return-message INTO o_return-message SEPARATED BY '/'. ENDLOOP. IF sy-subrc = 0. "创建失败 CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. o_return-type = 'E'. CONCATENATE '交货单创建失败:' o_return-message INTO o_return-message. ELSE. "创建成功 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. o_return-zdjh = lv_delivery."交货单 o_return-type = 'S'. o_return-message = '交货单创建成功'. ENDIF. ENDIF. ENDFUNCTION.
2. 参考销售订单创建DN :
BAPI_OUTB_DELIVERY_CREATE_SLS
FUNCTION zsdfm0032. *"---------------------------------------------------------------------- *"*"本地接口: *" EXPORTING *" REFERENCE(O_RETURN) TYPE ZMMS0021 *" TABLES *" IT_ITEM STRUCTURE ZSDS0011 *"---------------------------------------------------------------------- *********************************************** * Program : 参考SO创建DN 控制到行项目数量 ******************************************************************* * Modified Recorder : * Date C#NO Author Content * ----------- ------- ------------------ --------------- * 修改日期 修改产生请求 修改人 修改内容描述 ******************************************************************** DATA:lv_delivery TYPE bapishpdelivnumb-deliv_numb, lv_num TYPE bapidlvcreateheader-num_deliveries. DATA:lv_vstel TYPE vstel. DATA:lv_ledat TYPE ledat. DATA:lt_return TYPE TABLE OF bapiret2. DATA:lv_shippoint TYPE bapidlvcreateheader-ship_point, lv_duedate TYPE bapidlvcreateheader-due_date. DATA:lt_so_items LIKE TABLE OF bapidlvreftosalesorder, ls_so_items LIKE bapidlvreftosalesorder. LOOP AT it_item INTO DATA(ls_item). ls_so_items-ref_doc = ls_item-vbeln."参考凭证 ls_so_items-ref_item = ls_item-posnr."参考项 ls_so_items-dlv_qty = ls_item-menge."数量 ls_so_items-sales_unit = ls_item-meins."数量单位 APPEND ls_so_items TO lt_so_items. CLEAR:ls_so_items. IF lv_vstel IS INITIAL. SELECT SINGLE vstel INTO lv_vstel FROM vbap WHERE vbeln = ls_item-vbeln AND posnr = ls_item-posnr. ENDIF. ENDLOOP. lv_shippoint = lv_vstel. *---Call BAPI Function CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS' EXPORTING ship_point = lv_shippoint due_date = sy-datum IMPORTING delivery = lv_delivery num_deliveries = lv_num TABLES sales_order_items = lt_so_items return = lt_return. LOOP AT lt_return INTO DATA(ls_return) WHERE type = 'A' OR type = 'E' OR type = 'X'. o_return-type ='E'. CONCATENATE o_return-message ls_return-message INTO o_return-message SEPARATED BY '/'. EXIT. ENDLOOP. IF o_return-type ='E'. "创建失败 CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CONCATENATE '交货单创建失败:' o_return-message INTO o_return-message. ELSE. "创建成功 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. o_return-zdjh = lv_delivery."交货单 o_return-type = 'S'. o_return-message = '交货单创建成功'. ENDIF. ENDFUNCTION.
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
远程人天可谈,终身售后,有活请联系V信:18925782767(问问题免费,欢迎交流!)
!!请关注本人技术分享公众号:SAP翔子(可扫头像二维码)
每天分享新知识,博客文章也会陆续整理并迁移至公众号,与您一起共同学习