点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试使用bap...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试使用bap...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试使用bapi BAPI_SALESORDER_CHANGE通过添加有条件的新商品来更新销售订单。
我尝试了不同的方式,不同的值,但是我已经遇到了相同的问题:错误消息VH_BAPI 050-价格确定错误
这是我的代码的一部分(lt_poste和lt_condition是内部表,其中包含我的订单的新项目和新条件)
清除:ls_headerx,ls_bapisdls。 ls_headerx-updateflag ='U'。 "更新代码 ls_bapisdls-cond_handl ='X'。 维持状态的标志 * ==循环浏览我的新物品 循环到lt_postes INTO ls_postes。 * ==项目数据 清除:ls_items,ls_itemsx。 ls_items-itm_number = ls_postes-posnr ls_itemsx-itm_number = ls_postes-posnr。 ls_itemsx-updateflag ='I'。 创建代码 ls_items-item_categ = ls_postes-pstyv。 ls_itemsx-item_categ ='X'。 ls_items-material = ls_postes-matnr。 ls_itemsx-material ='X'。 ls_items-short_text = ls_postes-arktx。 ls_itemsx-short_text ='X'。 ls_items-plant = ls_postes-werks。 ls_itemsx-plant ='X'。 ls_items-mat_pr_grp = ls_postes-kondm。 ls_itemsx-mat_pr_grp ='X'。 ls_items-tax_class1 = ls_postes-taxm1。 ls_itemsx-tax_class1 ='X'。 ls_items-ex_rate_fi = ls_postes-kurrf。 ls_itemsx-ex_rate_fi ='X'。 ls_items-exch_rate_fi_v = ls_postes-kurrf。 ls_itemsx-exch_rate_fi_v ='X'。 ls_items-po_itm_no = ls_postes-posex。 ls_itemsx-po_itm_no ='X'。 ls_items-reason_rej = ls_postes-abgru。 ls_itemsx-reason_rej ='X'。 从vbkd INTO中选择一个bstkd bstdk(ls_items-purch_no_c,ls_items-purch_date) 在哪里vbeln = me-> s_vbak-vbeln AND posnr = ls_postes-posnr。 如果sy-subrc = 0。 ls_itemsx-purch_date ='X'。 ls_itemsx-purch_no_c ='X'。 万一。 清除ls_items-wbs_elem。 通话功能'CONVERSION_EXIT_ABPSP_OUTPUT' 出口 输入= ls_postes-ps_psp_pnr 输入 输出= ls_items-wbs_elem。 ls_itemsx-wbs_elem ='X'。 将ls_items附加到lt_items。 附加ls_itemsx到lt_itemsx。 * ==条件数据 在lt_condition INTO ls_condition中循环。 清除:ls_bapicond,ls_bapicondx。 ls_bapicond-itm_number = ls_postes-posnr。 ls_bapicondx-itm_number = ls_postes-posnr。 ls_bapicond-cond_type = ls_condition-kschl。 ls_bapicondx-cond_type = ls_condition-kschl。 ls_bapicond-cond_value = ls_condition-kbetr/10。 ls_bapicondx-cond_value = c_x。 清除lv_krech。 从t685a选择单个krech进入lv_krech 其中kappl ='V' AND kschl = ls_condition-kschl。 ls_bapicond-calctypcon = lv_krech。 如果lv_krech ='C'。 "定价条件 ls_bapicond-currency ='EUR'。 ls_bapicondx-currency = c_x。 万一。 ls_bapicond-cond_updat ='I' ls_bapicondx-updateflag ='I' 将ls_bapicond附加到lt_bapicond。 附加ls_bapicondx到lt_bapicondx。 结局。 结局 * == BAPI执行 通话功能'BAPI_SALESORDER_CHANGE' 出口 salesdocument =我-> s_vbak-vbeln order_header_inx = ls_headerx 逻辑开关= ls_bapisdls 桌子 返回= lt_bapiret2 order_item_in = lt_items order_item_inx = lt_itemsx condition_in = lt_bapicond 条件_inx = lt_bapicondx。 清除ls_bapiret2。 将lt_bapiret2表读入具有密钥类型='E'的ls_bapiret2中。 如果sy-subrc <> 0。 调用功能" BAPI_TRANSACTION_COMMIT"。 万一。
所以我收到一条错误消息,指示无法确定价格。
即:000010:处理终止; 定价错误(KOMP-FXMSG = 801)
我尝试更新其他值,但没有任何改变。
我只有2个条件要添加到我的商品中:PR00和ZMAR(%类型)
所以这是条件表中已填充的其他字段,但是,我也有相同的消息:
APPLICATIO = V
CALCTYPCON = A(ZMAR)或B(PR00)
STAT_CON = X(仅适用于ZMAR)
CONDORIGIN = C
GROUPCOND = X(仅适用于ZMAR)
CONDCNTRL = C
CONDCLASS = A(ZMAR)或C(PR00)
CONDCHAMAN = X
有没有我可以忘记的领域? 你知道我可能在哪里错了吗?
非常感谢您的回答。
我找到了解决方法。
我尝试应用OSS注释1306890(BAPI:缺少条件),但没有任何变化。
我的问题是因为有时我的物品没有税收分类(TAXM1)。 但是在我的代码中,我正在等待该字段。
解决方案是,当Tax Clasfication字段为初始字段(tax_class1 ='')时,我不必在BAPISDITMX中"标记"同一字段。
一周热门 更多>