如何在se37中调用bapi并将bapi的输出提供给另一个bapi

问题描述 投票:0回答:1

我有 3 个 bapi,名为

BAPI_SALESORDER_GETLIST
BAPI_SALESORDER_GETSTATUS
BAPI_SALESORDER_GETDETAILBOS

  1. 在第一个 bapi 中,我必须输入客户编号和销售组织作为输入,并检索销售凭证编号 (SD_DOC) 和 from_Date。

  2. 从第一个 BAPI 检索到的销售文档编号 (SD_Doc) 必须作为输入提供给名为

    BAPI_SALESORDER_GETSTATUS
    的其他 bapi 以检索一些数据。

  3. 并且必须将相同的销售凭证编号输入到第三个 BAPI,即

    BAPI_SALESORDER_GETDETAILBOS
    以检索某些特定数据。

据我所知,我已经使用 bapi 做了一些工作,到目前为止,在我创建的服务中,我只提供了客户编号作为 SAP GATEWAY CLIENT 中 URI 的输入

例如:

/sap/opu/odata/sap/ZOPENSALESORDER_SRV/openSalesOrderSet?$filter=客户号 '1'

如果有人可以对此提供帮助,将非常感激。

uri abap bapi sap-erp sap-gateway
1个回答
0
投票

首先,我想告诉你们,我有三个 bapi,我需要其中的数据。1)BAPI_SALESORDER_GETLIST 2)BAPI_SALESORDER_GETSTATUS 和 3)BAPI_SALESORDER_GETDETAILBOS。

  1. 对于第一个 Bapi,我将输入客户编号(KUNNR)和销售组织(VKORG),然后我将获得销售文档编号作为输出。
  2. 这个销售单据编号会交给接下来的bapi BAPI_SALESORDER_GETSTATUS来获取其他相关数据。
  3. 同样的销售凭证编号也会被赋予第三个bapi BAPI_SALESORDER_GETDETAILBOS。

我先告诉你步骤

  • 在导入参数中指定输入参数。在我的场景中,我有 kunnr 和 vkorg。点击此处查看图片1

  • 然后内部表已经制作好了,因为我只会使用标准的 bapi。所以在表格部分只需写下您 bapi 的名字即可。点击此处查看图片2

  • 然后在源代码部分开始编码:

     DATA: "lt_bapiorders TYPE TABLE OF bapiorders,
            lt_statusinfo TYPE TABLE OF  bapisdstat,
            lt_orderitem TYPE TABLE OF bapisditbos,
          lt_orderscheduleline TYPE TABLE OF bapisdhedu.  
    
    
    
      FIELD-SYMBOLS: <lfs_order> TYPE bapiorders,
                     <lfs_statinfo> TYPE bapisdstat,
                     <lfs_orderitem> TYPE bapisditbos,
                     <lfs_orderscheduleline> TYPE bapisdhedu.
    
      "Fecth all the sales order for a customer
      CALL FUNCTION 'BAPI_SALESORDER_GETLIST'
        EXPORTING
          customer_number             = kunnr
          sales_organization          = vkorg
        TABLES
          sales_orders                = order.
    
      "Get status for the sales order
      LOOP AT order ASSIGNING <lfs_order> .
        IF <lfs_order> IS ASSIGNED.
        WRITE:/ <lfs_order>-sd_doc.
    
            "This function call is for getting the status of the
            "Sales document number derived from the BAPI_SALESORDER_GETLIST
              CALL FUNCTION 'BAPI_SALESORDER_GETSTATUS'
                EXPORTING
                  salesdocument       = <lfs_order>-sd_doc
               TABLES
                 statusinfo          = lt_statusinfo.
    
            APPEND LINES OF lt_statusinfo TO statusinfo_lt.
            "Read Processing and delivery Status
            READ TABLE lt_statusinfo ASSIGNING <lfs_statinfo> INDEX 1.
            IF sy-subrc EQ 0.
            WRITE: / 'Delivery Status', <lfs_statinfo>-dlv_stat_h,
                     'Required Date', <lfs_statinfo>-req_date_h,
                     'Delivery Number',<lfs_statinfo>-deliv_numb,
                     'Delivery Date',<lfs_statinfo>-deliv_date.
            ENDIF.
    
            CALL FUNCTION 'BAPI_SALESORDER_GETDETAILBOS'
              EXPORTING
                salesdocument            = <lfs_order>-sd_doc
    
             TABLES
    
               orderitems               = lt_orderitem
               orderschedulelines       = lt_orderscheduleline.
      APPEND LINES OF lt_orderitem to orderitem.
            "Read Processing and delivery Details
            READ TABLE lt_orderitem ASSIGNING <lfs_orderitem> INDEX 1.
            IF sy-subrc EQ 0.
            WRITE: / 'Material', <lfs_orderitem>-material,
                     'Plant', <lfs_orderitem>-plant,
                     'Short-text',<lfs_orderitem>-short_text,
                     'Req_qty',<lfs_orderitem>-req_qty,
                     'doc_number',<lfs_orderitem>-doc_number.
            ENDIF.
    
      APPEND LINES OF lt_orderscheduleline to orderscheduleline.
            "Read processing and delivery details -goods issue time
            READ TABLE orderscheduleline ASSIGNING <lfs_orderscheduleline> INDEX 1.
            IF sy-subrc EQ 0.
            WRITE: / 'Goods Issue Date', <lfs_orderscheduleline>-gi_date.
            ENDIF.
                      .
    
    
        ENDIF.
      ENDLOOP.
    

然后执行它。

© www.soinside.com 2019 - 2024. All rights reserved.