使用BAPI_PR_CREATE和BAPI_PR_CHANGE的PR服务的货币IDR的总价格不正确

2020-09-13 11:06发布

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

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


大家好,

我编写了一个使用BAPI_PR_CREATE和BAPI_PR_CHANGE创建和更改PR服务的程序。 总价以IDR货币表示,没有小数位。 不幸的是,BAPI产生的总价格除以100。我已经调试了BAPI,这是因为在类CL_SERVICE_LINE_MMSRV的方法PROCESS中调用了函数CURRENCY_CONVERTING_FACTOR。

此行为与事务ME51N和ME52N不同,它们可以正确节省总价。


例如,我从ME51N创建总价IDR为1.234.567的PR服务。


该金额将保存在ESLL-TBTWR中,为12.345,67。

然后,当我使用BAPI_PR_GETDETAIL从tcode SE37调用那些PR服务时,参数SERVICELINES-GROSS_PRICE将显示为12.345,67。

如果我按照以下说明将金额12345,67传入BAPI_PR_CHANGE中的GROSS_PRICE,则

然后更改PR,金额将在表ESLL-TBTWR中更新为123,46。

任何人都可以给我建议如何解决此问题? 预先感谢。


此致


阿梅尔

(39.8 kB)

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

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


大家好,

我编写了一个使用BAPI_PR_CREATE和BAPI_PR_CHANGE创建和更改PR服务的程序。 总价以IDR货币表示,没有小数位。 不幸的是,BAPI产生的总价格除以100。我已经调试了BAPI,这是因为在类CL_SERVICE_LINE_MMSRV的方法PROCESS中调用了函数CURRENCY_CONVERTING_FACTOR。

此行为与事务ME51N和ME52N不同,它们可以正确节省总价。


例如,我从ME51N创建总价IDR为1.234.567的PR服务。


该金额将保存在ESLL-TBTWR中,为12.345,67。

然后,当我使用BAPI_PR_GETDETAIL从tcode SE37调用那些PR服务时,参数SERVICELINES-GROSS_PRICE将显示为12.345,67。

如果我按照以下说明将金额12345,67传入BAPI_PR_CHANGE中的GROSS_PRICE,则

然后更改PR,金额将在表ESLL-TBTWR中更新为123,46。

任何人都可以给我建议如何解决此问题? 预先感谢。


此致


阿梅尔

(39.8 kB)
付费偷看设置
发送
2条回答
软件心理学工程师
1楼-- · 2020-09-13 11:50

BAPI_PR_GETDETAIL只是从表ESLL中读取数据,而没有验证货币和小数位。

如果您在程序中调用BAPI,请阅读以下KBA,其中解释了系统如何处理不带小数位的货币。

1679279-价格字段显示的小数位数错误

最诚挚的问候,

Myra

天桥码农
2楼-- · 2020-09-13 11:52

嗨Myra,

谢谢您的建议,我非常感谢。 然后,我应该以外部格式输入BAPI_PR_CHANGE中的GROSS_PRICE。 对于上面的示例,该金额应为1.234.567,00,以便将其保存为ESLL-TBTWR中的12.345,67。 我已经尝试过了,并且效果很好。 总价也正确显示在事务ME52N中。

但这使我陷入另一个问题。 BAPI_PR_CHANGE中的总价格数据类型是长度为11的货币,包括2个小数,那么我可以在BAPI中输入的最大数字为123.456.789,00。

在事务ME52N中,我可以输入的总价格中的最大位数为12.345.678.901(11位,不含小数)。

BAPI提供的总价格数据类型错误还是ME52N显示的总价格错误? 由于我的程序中要求输入总价格(不包括小数)的11位数字,因此它不适合BAPI_PR_CHANGE中GROSS_PRICE的长度。 有什么解决方法吗?


此致


阿梅尔

一周热门 更多>