BAPI_SALESORDER_CHANGE插入销售订单项目行错误

2020-08-13 23:37发布

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

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


专家您好,

我必须为给定的销售订单单据编号插入新的项目行。

我使用bapi_salesorder_change,但不起作用。

这些是return表中的消息

错误1。

消息:ORDER_HEADER_IN已成功处理

消息:没有可用的项目类别

消息:ITEM_IN错误

消息:条件cc_cond不允许作为标头条件

消息:销售单据未更改

错误2。

消息:ORDER_HEADER_IN已成功处理

消息:未为销售组织,分销渠道,语言DE定义材料{但我检查了带有matnr和销售组织以及分销渠道的表mvke,并且存在物料}

消息:ITEM_IN错误

消息:条件cc_cond不允许作为标头条件

消息:销售单据未更改

这是代码:

i_t_item-itm_number = p_posnr。

i_t_item-material = p_matnr。

i_t_item-target_qty = p_qty。

i_t_item-plant = p_plant。

i_t_item-hg_lv_item = p_uepos。

i_t_item-price_date = p_preisdat。

i_t_item-prc_group2 = cc_prc_group。

APPEND i_t_item。

*设置条件

i_t_bapicond-itm_number = p_posnr。

i_t_bapicond-cond_type = cc_condition_type。

i_t_bapicond-cond_value = l_netwr。

i_t_bapicond-conpricdat = gc_datum。

i_t_bapicond-currency = cc_eur。

APPEND i_t_bapicond。

i_t_itemx-updateflag = cc_i。 {='I'}

i_t_itemx-itm_number = p_posnr。

i_t_itemx-material = cc_x。

i_t_itemx-target_qty = cc_x。

i_t_itemx-plant = cc_x。

i_t_itemx-hg_lv_item = cc_x。

i_t_itemx-price_date = cc_x。

i_t_itemx-prc_group2 = cc_x。

APPEND i_t_itemx。

i_t_bapicondx-updateflag = cc_i。{'I'}

i_t_bapicondx-itm_number = p_posnr。

i_t_bapicondx-cond_type = cc_x。

i_t_bapicondx-cond_value = cc_x。

  • i_t_bapicondx-conpricdat = cc_x。

i_t_bapicondx-currency = cc_x。

附加i_t_bapicondx。

清除:l_行为,sy-subrc。

清除i_t_header。

i_t_header-updateflag = cc_u。 {='U'}

APPEND i_t_header。

通话功能'BAPI_SALESORDER_CHANGE'

导出

salesdocument = sales_ord_number

  • ORDER_HEADER_IN =

order_header_inx = i_t_header

模拟= cc_x

behavior_when_error = l_behave

  • INT_NUMBER_ASSIGNMENT =''

  • LOGIC_SWITCH =

表格

return = i_t_return

order_item_in = i_t_item

order_item_inx = i_t_itemx

  • 合作伙伴=

  • PARTNERCHANGES =

  • 合作伙伴=

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CFGS_VK =

  • ORDER_CFGS_REFINST =

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

order_text = i_t_text

  • ORDER_KEYS =

conditions_in = i_t_bapicond

conditions_inx = i_t_bapicondx

  • extensionin = i_t_extensionin。

如果是i_t_return型EQ cc_s或i_t_return型EQ cc_w或i_t_return型EQ cc_i。

通话功能'BAPI_TRANSACTION_COMMIT'

导出

等待= cc_x。

执行return_code。

ELSE。

p_flag = cc_x。

执行return_code_err。

  • 回滚错误记录的转换

调用功能'BAPI_TRANSACTION_ROLLBACK'。

ENDIF。 "如果i_t_return型EQ'S'

我希望你能告诉我我的代码在哪里错误。

最好的问候

艾米莉亚

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

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


专家您好,

我必须为给定的销售订单单据编号插入新的项目行。

我使用bapi_salesorder_change,但不起作用。

这些是return表中的消息

错误1。

消息:ORDER_HEADER_IN已成功处理

消息:没有可用的项目类别

消息:ITEM_IN错误

消息:条件cc_cond不允许作为标头条件

消息:销售单据未更改

错误2。

消息:ORDER_HEADER_IN已成功处理

消息:未为销售组织,分销渠道,语言DE定义材料{但我检查了带有matnr和销售组织以及分销渠道的表mvke,并且存在物料}

消息:ITEM_IN错误

消息:条件cc_cond不允许作为标头条件

消息:销售单据未更改

这是代码:

i_t_item-itm_number = p_posnr。

i_t_item-material = p_matnr。

i_t_item-target_qty = p_qty。

i_t_item-plant = p_plant。

i_t_item-hg_lv_item = p_uepos。

i_t_item-price_date = p_preisdat。

i_t_item-prc_group2 = cc_prc_group。

APPEND i_t_item。

*设置条件

i_t_bapicond-itm_number = p_posnr。

i_t_bapicond-cond_type = cc_condition_type。

i_t_bapicond-cond_value = l_netwr。

i_t_bapicond-conpricdat = gc_datum。

i_t_bapicond-currency = cc_eur。

APPEND i_t_bapicond。

i_t_itemx-updateflag = cc_i。 {='I'}

i_t_itemx-itm_number = p_posnr。

i_t_itemx-material = cc_x。

i_t_itemx-target_qty = cc_x。

i_t_itemx-plant = cc_x。

i_t_itemx-hg_lv_item = cc_x。

i_t_itemx-price_date = cc_x。

i_t_itemx-prc_group2 = cc_x。

APPEND i_t_itemx。

i_t_bapicondx-updateflag = cc_i。{'I'}

i_t_bapicondx-itm_number = p_posnr。

i_t_bapicondx-cond_type = cc_x。

i_t_bapicondx-cond_value = cc_x。

  • i_t_bapicondx-conpricdat = cc_x。

i_t_bapicondx-currency = cc_x。

附加i_t_bapicondx。

清除:l_行为,sy-subrc。

清除i_t_header。

i_t_header-updateflag = cc_u。 {='U'}

APPEND i_t_header。

通话功能'BAPI_SALESORDER_CHANGE'

导出

salesdocument = sales_ord_number

  • ORDER_HEADER_IN =

order_header_inx = i_t_header

模拟= cc_x

behavior_when_error = l_behave

  • INT_NUMBER_ASSIGNMENT =''

  • LOGIC_SWITCH =

表格

return = i_t_return

order_item_in = i_t_item

order_item_inx = i_t_itemx

  • 合作伙伴=

  • PARTNERCHANGES =

  • 合作伙伴=

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CFGS_VK =

  • ORDER_CFGS_REFINST =

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

order_text = i_t_text

  • ORDER_KEYS =

conditions_in = i_t_bapicond

conditions_inx = i_t_bapicondx

  • extensionin = i_t_extensionin。

如果是i_t_return型EQ cc_s或i_t_return型EQ cc_w或i_t_return型EQ cc_i。

通话功能'BAPI_TRANSACTION_COMMIT'

导出

等待= cc_x。

执行return_code。

ELSE。

p_flag = cc_x。

执行return_code_err。

  • 回滚错误记录的转换

调用功能'BAPI_TRANSACTION_ROLLBACK'。

ENDIF。 "如果i_t_return型EQ'S'

我希望你能告诉我我的代码在哪里错误。

最好的问候

艾米莉亚

付费偷看设置
发送
3条回答
追夢秋陽
1楼 · 2020-08-14 00:35.采纳回答

嗨,

错误1

标题数据已成功处理

项目数据有问题。 项目类别在系统中不可用。

错误2

资料是平面文件未在系统中定义,或者它的编写方式可能不匹配。

检查有时是否给出了材料编号,FF可能包含materail desc而不是Mat no。

问候

Gokul

何必丶何苦呢
2楼-- · 2020-08-14 00:34

大家好,

我重新检查了数据,看来这确实是matnr编写方式的问题。

因为Matnr的前导零(例如000000000000009321)。

当我阅读材料时,我只读了9321,而当我给该值赋值时,matnr变成了:932100000000000000。所以我不得不加上前导零。

所有其他问题都与错误的垫子编号直接相关。

所以:

由于无法识别物料编号,因此物料行出现错误并且无法插入,因此条件可以在抬头级别识别。

非常感谢您。

最好的问候,艾米莉亚。

My梦
3楼-- · 2020-08-14 00:24

ERROR1

消息:没有可用的项目类别。

如果您要创建新的订单项,则此消息可能表明系统无法确定新订单项的项目类别,您应在spro中检查项目类别确定的配置,合并销售单据类型/项目类别组( 在物料主数据-销售2视图中)/用法/VOV4中的高物料类别(如果涉及BOM)

否则,如果您要更改现有的订单项,则此消息可能表明系统已经创建了订单,因此系统未读取订单项数据,除非您随后更改了配置,否则您的配置绝对不会出错,因此请检查 BAPI表:ORDER ITEMS INX,检查是否维护参数:ITM_NUMBER,否则,BAPI无法读取订单项数据

一周热门 更多>