点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入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
有没有我可以忘记的领域? 你知道我可能在哪里错了吗?
非常感谢您的回答。
您好,Oliver,
欢迎使用scn。
ITM_NUMBER 000010,COND_ST_NO 941,COND_COUNT 01,COND_TYPE ZCO,COND_VALUE 10.700000000
在 更改CONDITIONS_INX
ITM_NUMBER 000010,COND_ST_NO 941,COND_COUNT 01,COND_TYPE ZCO,UPDATEFLAG U,COND_VALUE X
货币。
注意事项
< p> Madhu。编辑:madhurao123,2011年10月21日下午12:28
我找到了解决方法。
我尝试应用OSS注释1306890(BAPI:缺少条件),但没有任何变化。
我的问题是因为有时我的物品没有税收分类(TAXM1)。 但是在我的代码中,我正在等待该字段。
解决方案是,当Tax Clasfication字段为初始字段(tax_class1 ='')时,我不必在BAPISDITMX中"标记"同一字段。
Hello madhurao,
感谢您的回答,但是您给了我代码来更新基本条件,但就我而言,我尝试添加具有2个新基本条件(PR00和ZMAR)的新商品
其他人有答案吗?
嗨,吉卜拉姆,
如果您查看BAPI的内部信息(依此类推),则在一行中,KBETR的数字是10:
ex_konvkom-kbetr = conditions_in-cond_value *10。(包括LVBAKF0C)
您好,Olivier,我对您的代码有疑问,能为您提供帮助吗?
在此行
" ls_bapicond-cond_value = ls_condition-kbetr/10"。
您为什么使用'/10'?
希望4,您可以帮助我。
非常感谢。
吉卜拉姆·哈比卜。
嗨,奥利维尔·阿贝鲁斯 a>,
您能给我发送有关条件类型ZMAR(%类型)的示例代码吗? 我的代码未运行。
在tt_condi_in []处循环,分配字段符号(),其中matnr = -matnr。 -cond_type。 -cond_value。 -currency。-数量。 -cond_value。-数量。 -cond_type。
wa_condition-itm_number ='0000'&& sy-tabix &&'0'。
wa_condition- cond_type =
wa_condition-cond_value =
* wa_condition-currency =
wa_condition-calctypcon ='A'。
wa_condition -cond_p_unt =
wa_condition-condvalue =
wa_condition-conbaseval =
将wa_condition附加到it_condition。
*
wa_conditionx-itm_number ='0000'&& sy-tabix &&'0'。
wa_conditionx-cond_type =
wa_conditionx-cond_value ='X'。
* wa_conditionx-currency ='X '。
wa_conditionx-updateflag ='I'。
* wa_conditionx-cond_p_unt ='X'。
将wa_conditionx附加到it_conditionx。
清除:wa_condition,wa_conditionx。
端环。
一周热门 更多>