使用BAPI_SALESORDER_CREATEFROMDAT2时出现问题

2020-09-12 20:14发布

         点击此处--->   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中遇到以下错误:

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

         点击此处--->   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中遇到以下错误:

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

付费偷看设置
发送
2条回答
N-Moskvin
1楼-- · 2020-09-12 21:01

您期望多少个计划行? 计划行实际上是由ATP生成的。 出于某种原因,SAP正是在此BAPI中,SAP迫使我们填写计划行表只是为了输入数量。 (在VA01中,无需访问计划屏幕。)订单中可能会生成一个或多个计划行。 这取决于。

错误文本没有响起。 发布消息ID和编号。

SCN上有许多此BAPI的示例。 使用搜索并将您的代码与其他示例进行比较。

南山jay
2楼-- · 2020-09-12 21:00

谢谢!

但是,我解决了这个问题。 我将'I'用作插入标志,而不是'U'作为更新标志,其余的一切都由它自己负责。 销售订单已成功创建。

一周热门 更多>