使用BAPI_SALESORDER_CREATEFROMDAT2时出现问题

2020-09-12 20:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用以下代码为多个订单项创...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用以下代码为多个订单项创建销售订单。

*为给定数据创建销售订单。
环ch_sales进入数据(lwa_sales)。

*对于每个新客户参考订单,定义销售订单的抬头数据。
AT NEW bstnk。

清除:lwa_items,
lwa_itemsx。

清除lwa_schedules。

*清除项目,合作伙伴和时间表以供先前参考。
清除:lt_items,
lt_itemsx,
lt_schedules_in,
lt_schedulesx,
lt_partners,
lwa_order_header_in,
lwa_order_header_inx。 TO lwa_order_header_in-sales_org。
写lwa_sales-vtweg TO lwa_order_header_in-distr_chan。
写lwa_sales-spart到lwa_order_header_in-divvision。
WRITE lwa_sales-purchest-bstnkto
='I'。
lwa_order_header_inx-doc_type ='X'。
lwa_order_header_inx-sales_org ='X'。
lwa_order_header_inx-distr_chan ='X'。
lwa_order_header_inx-divvision ='X'。 br> lwa_order_ header_inx-purch_no_c ='X'。
lwa_order_header_inx-purch_date ='X'。
lwa_order_header_inx-req_date_h ='X'。



ENDAT。

*转换 日期,将其转换为所需格式。
组成lwa_sales-bstdk + 6(4)lwa_sales-bstdk + 3(2)
lwa_sales-bstdk + 0(2)INTO lwa_order_header_in-purch_date。

组成lwa_sale -vdatu + 6(4)lwa_sales-vdatu + 3(2)
lwa_sales-vdatu + 0(2)INTO lwa_order_header_in-req_date_h。

*定义出售给销售订单的一方。
lwa_partners-partn_role = lc_sold_to。
调用功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= lwa_sales-vkunnr
导入
输出= lwa_sales-vkunnr。

lwa_sales-vkunnr。
将lwa_partners附加到lt_partners。
清除lwa_partners。

*定义销售订单的发货方。
lwa_partners-partn_role = lc_ship_to。
调用功能转换了 '
导出
输入= lwa_sales-kkunnr
导入
输出= lwa_sale s-kkunnr。


lwa_partners-partn_numb = lwa_sales-kkunnr。
将lwa_partners添加到lt_partners。
清除lwa_partners。

*将物料号转换为 格式。
调用功能'CONVERSION_EXIT_MATN1_INPUT'
导出
输入= lwa_sales-matnr
导入
输出= lwa_items-material_long。



向lwa_items-itm_number添加10

*定义给定材料的目标数量。
移动lwa_sales-kwmeng到lwa_items-target_qty。
将lwa_items附加到lt_items。


lwa_itemsx-updateflag ='I'
lwa_itemsx-itm_number = lwa_items-itm_number。
lwa_itemsx-material_long ='X'。
lwa_itemsx-target_qty ='X'。
附加lwa_itemsx TO lt_itemsx。

*定义
*将1加到lwa_schedules-sched_line。
lwa_schedules-itm_number = lwa_items-itm_number。
MOVE lwa_sales-kwmeng到lwa_schedules-req_sulesched。
APPEND lwa_sched_sched_line。

lwa_schedulesx-sched_line =
lwa_schedulesx-updateflag ='I'。
lwa_schedulesx-itm_number = lwa_items-itm_number。
lwa_schedulesx-req_qty ='X'。
APPEND lwa_schedulesx TO。

*调用BAPI来创建销售订单。
在bstnk的末尾。

通话功能'BAPI_SALESORDER_CREATEFROMDAT2'
导出
order_header_in = lwa_order_header_in
order_header_inx = lwa_order_header_inx
导入
salesdocument = lv_sales_doc_no
TABLES
return = lt_return
order_items_in = lt_items
order_items_inx = lt_itemsx
order_partners = lt_partins
lt_schedulesx。

*读取表以检查错误和消息。
读取表lt_return INTO DATA(lwa_return)
WITH KEY type ='E'。
如果sy-subrc = 0。
移动lwa_return-message到lwa_sales-msg。
将ch_failure加1。
ELSE。
调用功能'BAPI_TRANSACTION_COMMIT'
导出
wa 它='X'。

CONCATENATE TEXT-006 lv_sales_doc_no
INTO lwa_sales-msg用空格分隔。
向ch_success添加1。
ENDIF。

*更新 消息到内部表中的相应字段。
从lwa_sales修改ch_sales运输msg
哪里bstnk = lwa_sales-bstnk。

清除lt_return。

ENDAT。

ENDLOOP。

如果我没有从外部传递ITM_NUMBER,则仅使用一个计划行创建销售订单。

如果我从外部生成ITM_NUMBER,则会在LT_RETURN中遇到以下错误:

处理计划行时无效的计划行: