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

  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/10114143.html
Copyright © 2011-2022 走看看