zoukankan      html  css  js  c++  java
  • 使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery

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

  • 相关阅读:
    技术人员的找工之路(1
    技术人员的找工之路(3)
    Endian的由来
    android平台开发笔记1Spinner不能在sub activity中使用
    谈谈Groupon的成功
    线程安全的同步读写类的模板设计
    项目管理文件package.json
    10个每个开发人员都应该知道的强大JavaScript 解构技术
    绿色下载站上线了(MVC +Telerik开源控件)
    我开发的新浪微博应用“微词典”通过审核,欢迎朋友们试用,多多建议!
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/10114143.html
Copyright © 2011-2022 走看看