要在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的原创文章,请关注公众号"汪子熙":

使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery的更多相关文章

  1. 使用ABAP代码创建S/4HANA里的Sales Order

    下图是使用ABAP代码创建的S/4HANA的Sales Order的截图: 其中红色区域的值是我代码里硬编码的,而蓝色是函数SD_SALESDOCUMENT_CREATE自己创建的. 来看下代码: D ...

  2. 使用函数BAPISDORDER_GETDETAILEDLIST读取S/4HANA中Sales Order行项目数据

    事务码MM03查看物料主数据,如下图所示的行项目数据,包含物料ID,描述信息,数量,单价等等: 使用如下代码进行行项目读取: DATA: ls_read TYPE order_view, lt_ite ...

  3. SD从零开始31-32

    SD从零开始31 包装(Packing) 装运材料Shipping Materials Shipping materials是用来包装或者运输货物的材料: 为了在系统中为outbound delive ...

  4. SD从零开始29-30

    SD从零开始29 外向交货单处理中的特殊功能 批次Batches 你可以在material handled in batches的相关详细屏幕指定一个batch(物料是否使用batches来处理标记在 ...

  5. SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的

    大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...

  6. 一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍

    有好几位朋友在公众号后台给我留言询问SAP C/4HANA和S/4HANA集成的方案. 尽管我给这些朋友推送了一个方案:打通C/4HANA和S/4HANA的一个原型开发:智能服务创新案例,然而我得到的 ...

  7. SAP的运输功能(转)

    SAP的运输功能(transportation)  transportation大体有三个作用: 1.运输计划transportation planning 概念:对outbound delivery ...

  8. SAP一句话入门 .

    SD是Sales and Distribution的简称.在SAP系统中,销售与分销模块处在供应链下游,关注从客户订单到向客户收款的全过程. SD模块中的Sales好理解,而Distribution却 ...

  9. SAP 没有激活HUM功能照常可以使用Handling Unit

    SAP 没有激活HUM功能照常可以使用Handling Unit 笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的inbound delivery单据,发货公司发出 ...

随机推荐

  1. CentOS6.4 安装Maven及Nexus仓库代理

    本文安装的apache-maven-3.5.0-bin.tar.gz,nexus-2.9.0-04-bundle.tar.gz 1.由于网络并不是特别好我这边是通过本地下载过来,通过sftp上传至Ce ...

  2. MySQL优化--表之间JOIN的关键字ON和Where (01)

    1. Join关键字,就是把多个表连接起来 而on和where都是条件,但是针对的对象不一样 1.1. 关键字 On是指怎样把两个表连接起来,如: on a.name = b.name 是一行一行的比 ...

  3. FocusBI: 数据仓库 (原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  4. php 命名空间与文件引入

    问题描述:这两天试着自己写一些东西,也是为了复习一下忘了的PHP基础知识,但是写到命名空间的时候遇到了一点问题,在这记录一下:当我写好文件之后,添加了命名空间,结果一直提示命名空间下类不存在,一直以为 ...

  5. .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter

    dump文件相信有些朋友已经很熟悉了,dump文件的作用在于保存进程运行时的堆栈信息,方便日后排查软件故障,提升软件质量.关于dump分析工具windbg.adplus的文章更多了,如果您还不知道怎么 ...

  6. jquery报表插件收藏 MARK

    Highcharts http://www.hcharts.cn/ 统计报表插件 jquery ui官网 http://jqueryui.com/selectmenu/#custom_render

  7. golang获取变量数据类型

    如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法: 1 fmt: import "fmt" func main() { v := "hello ...

  8. 虚拟机下centos时间不正确的方便解决方法

    就是用NTP了,通过外部的服务同步时间. ntpdate us.pool.ntp.org | logger -t NTP 如果没有ntpdate ,可以使用 yum install ntpdate 进 ...

  9. Algorithm——两数之和

    题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中 ...

  10. mac 安装mysql-python

    ln -s /usr/local/mysl/bin/* /usr/bin  #建立软连接 sudo pip install mysql-python    #安装 python             ...