我有3个名为BAPI_SALESORDER_GETLIST
,BAPI_SALESORDER_GETSTATUS
和BAPI_SALESORDER_GETDETAILBOS
的bapi。
在第一个bapi中,我必须输入客户编号和销售组织作为输入并检索销售凭证编号(SD_DOC)和从_Date。
从第一个BAPI检索到的此销售凭证编号(SD_Doc)必须作为输入提供给其他名为BAPI_SALESORDER_GETSTATUS
的bapi以检索一些数据。
并且必须向第三个BAPI输入相同的销售凭证编号BAPI_SALESORDER_GETDETAILBOS
以检索某些特定数据。
据我所知,我已经完成了bapi的一些工作,到目前为止,在我创建的服务中,我只给了客户编号作为SAP GATEWAY客户端URI的输入
例如:
/ sap / opu / odata / sap / ZOPENSALESORDER_SRV / openSalesOrderSet?$ filter = Customerno eq'1'
如果有人可以提供帮助,那将非常感激。
答案 0 :(得分:0)
首先,我想告诉大家我有三个bapis,其中我获取了我的数据.1)BAPI_SALESORDER_GETLIST 2)BAPI_SALESORDER_GETSTATUS和3)BAPI_SALESORDER_GETDETAILBOS。
我先告诉你步骤
在Import参数中指定输入参数。在我的场景中,我有kunnr和vkorg。点击此处查看图片1
然后内部表已经制作,因为我只会使用标准的bapi。所以在表格部分只写下你的名字bapi,你可以去。点击这里查看图片2
然后在源代码部分开始编码:
在这里输入代码
DATA:“lt_bapiorders bapiorders TYPE TABLE, lt_statusinfo bapisdstat的TYPE表, lt_orderitem bapisditbos类型表, lt_orderscheduleline 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.
然后执行它。