使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery
创建 4HANA delivery 使用
2023-09-14 09:02:44 时间
要在S/4HANA里创建Outbound Delivery,首先要具有一个销售订单,ID为376,通过事务码VA03查看。
只用61行代码就能实现基于这个Sales Order去创建对应的outbound delivery:
REPORT zcreate_dn.
DATA:lv_ship_point TYPE bapidlvcreateheader-ship_point VALUE '0001',
lv_due_date TYPE datum VALUE '20181205',
lv_delivery TYPE bapishpdelivnumb-deliv_numb,
lt_so_items LIKE TABLE OF bapidlvreftosalesorder,
ls_so_items LIKE LINE OF lt_so_items,
lt_return TYPE TABLE OF bapiret2,
ls_read TYPE order_view,
lt_item TYPE TABLE OF bapisdit,
lt_order_headers_out TYPE TABLE OF bapisdhd,
lt_header TYPE TABLE OF sales_key,
lt_bapisdtehd TYPE TABLE OF bapisdtehd,
lt_bapitextli TYPE TABLE OF bapitextli,
lt_bapiret2 LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
APPEND INITIAL LINE TO lt_header ASSIGNING FIELD-SYMBOL(<header>).
ls_read-item = 'X'.
<header>-vbeln = '0000000376'.
CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
EXPORTING
i_bapi_view = ls_read
TABLES
sales_documents = lt_header
order_items_out = lt_item.
LOOP AT lt_item ASSIGNING FIELD-SYMBOL(<item>).
APPEND INITIAL LINE TO lt_so_items ASSIGNING FIELD-SYMBOL(<fill>).
<fill>-ref_doc = <item>-doc_number.
<fill>-ref_item = <item>-itm_number.
<fill>-dlv_qty = <item>-req_qty.
<fill>-sales_unit = 'EA'.
ENDLOOP.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
ship_point = lv_ship_point
due_date = lv_due_date
IMPORTING
delivery = lv_delivery
TABLES
sales_order_items = lt_so_items
return = lt_return.
LOOP AT lt_return ASSIGNING FIELD-SYMBOL(<return>).
WRITE:/ | Type: { <return>-type }: { <return>-message } | COLOR COL_NEGATIVE.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = lt_bapiret2.
LOOP AT lt_bapiret2 ASSIGNING <return>.
WRITE:/ 'Message:', <return>-message COLOR COL_POSITIVE.
ENDLOOP.
思路就是首先用函数BAPISDORDER_GETDETAILEDLIST把销售订单的行项目明细读取出来,然后用BAPI_OUTB_DELIVERY_CREATE_SLS进行outbound delivery的创建。
执行report,显示Outbound Delivery 80000205成功创建:
使用事务码VL03N查看:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关文章
- VBA实例3-创建并将内容写入 txt 文件
- ❤️Windows下创建【任务计划程序】❤️定期重启服务器中的【JAR包脚本】❤️实现JAR包重启防止卡顿服务超时中断❤️
- 【JVM】HotSpot对象创建
- Jenkins创建多分支job
- 【Kotlin】集合操作 ① ( List 创建与元素获取 | 安全获取集合元素 | getOrElse | getOrNull )
- 教你MongoDB连接数据库并创建数据的使用方法
- 教你MongoDB数据库如何正确中断正在创建的索引
- Django创建应用三详解编程语言
- 在Linux上创建进程通信的方法(linux创建进程通信)
- SQLserver中创建派生表的技巧(派生表SQLserver)
- 账户cmd操作快捷创建MySQL账户(cmd怎么创建mysql)
- 如何在MySQL中创建数据库(mysql中创建库)
- 轻松创建nodejs服务器(10):处理上传图片