将数字转换为阿拉伯语的例程

2020-08-19 02:21发布

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

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


我正在寻找将数字字段转换为阿拉伯数字的例程。 例如-1230.56 = ١٢٣٠.١٢٣٠阿拉伯语。

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

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


我正在寻找将数字字段转换为阿拉伯数字的例程。 例如-1230.56 = ١٢٣٠.١٢٣٠阿拉伯语。

付费偷看设置
发送
4条回答
路亽曱_Ryan
1楼-- · 2020-08-19 03:05

深层Jayagoda

您可以尝试使用REPLACE ALL OCCURRENCES关键字或TRANSLATE关键字,移动您的电话号码 转换为字符变量,然后在字符变量上使用上述关键字。 以下代码供参考。

在lv_char中用'٩'替换'9'的所有事件。
 要么
 使用'0٠1١2٢3٣4٤5٥6٦7٧8٨9٩'翻译lv_char。
 

我已经提到了上面的代码,用于仅替换数字9的所有匹配项,类似地适用于所有数字并转换为数字。

有一个表格T015Z和视图V_T015Z,该视图用于维护不同语言的数字和单词。 您可能可以检查一下是否有用。

致谢!

浮生未央
2楼-- · 2020-08-19 03:05

Deepal Jayagoda ,请继续回答您提出的问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
何必丶何苦呢
3楼-- · 2020-08-19 02:57

系统是否已安装阿拉伯语(= AR外部,= A内部)?

  1. 如果是这样,则可以在AR中登录,并且只要存在翻译,GUI就会根据翻译规则显示所有翻译内容。 例如,当您希望将数据发送到其他系统或文件时,这也算在内。 使用WRITE ... TO ...语句。
    否则,要安装语言,请查看博客安装语言-on-sap-systems ,并搜索 Translation_Config_v1.pdf
  2. 如果您无法或不想使用阿拉伯语登录,但仍然安装了阿拉伯语,则可以在编码时使用SET LOCALE LANGUAGE'x'更改以下所有支持翻译的语句的语言输出,例如 写入...以...
设置本地语言" A"。

3。 如果不是阿拉伯文并且无法安装阿拉伯文,则唯一的选择就是编写自己的翻译规则。

Deepal Jayagoda提到的TRANSLATE语句非常适合一般情况,a)如果 已翻译符号的顺序保持不变,并且b)可以将符号翻译为1:1(例如x-> y而不是x-> yz以及xy-> z也不可以)

  • 语句" TRANSLATE ... USING mask"的" mask"值需要包含所有需要从值x转换为值y的转换对XY,因此在您的情况下为数字,可能还有十进制表示法。
使用'0A'转换值。  "只能将0转换为A。
 使用" 0A1B"转换值。  "只能将变量值的0转换为A,将1转换为B 
  • 我还建议在您的代码" TRANSLATE ... USING mask"的声明中,将" mask"的变量声明为您的编码中甚至是一个独立的INCLUDE文件中的全局变量,因此您只需为其定义一次即可 由于西方世界和ABAP使用阿拉伯数字系统;),我假设所有数字符号以及十进制的翻译都是1:1,因此所有代码和报表都可以重用

标记,如果需要的话,可能只需要将符号从右移到左。 但是,以防万一您还有其他翻译问题,这是您可能会遇到的问题:

  • 但是,如果顺序不相同,则需要先将内部数字数据复制到字符数据,然后根据翻译的方便程度,在翻译之前或之后重新排列符号。
    右端的负号需要移到左端,您应该首先实现内部数字到字符的转换,并使用类似于功能模块CLOI_PUT_SIGN_IN_FRONT(未正式发布)的逻辑将符号从右移到
  • 但是,如果每个符号的翻译不是1:1,则语句TRANSLATE不能用于那些具有1:n或m:1或m:n映射的翻译。 您需要编写特定的代码来首先支持这些情况。 " REPLACE ... IN ... WITH ..."语句将非常适合此操作,您可以一次替换所有出现的这些符号,或者必须循环遍历您的值的符号并进行转换。
将值" xy"的所有出现替换为" mn"。  
大简至美
4楼-- · 2020-08-19 02:55

以及这种可能性:

 DATA(arabic_number)= translate(val = | {number} |从='0123456789'到='٠١٢٣٤٥٦٧٨٩')。 

如果仅用于一个自定义程序,这很好。

但是,如果要在所有程序中使用它,SAP不会对此进行任何说明。 最终,我想知道阿拉伯语是否有一种字体会代表0123456789和٠١٢٣٤٥٦٧٨٩都像٠١٢٣٤٥٦٧٨٩。 如果是这样,您可以在SAP GUI设置中选择此字体。 编辑:我找不到任何这样的字体,所以我猜这种解决方案将意味着很多问题和混乱(我不认为是一种特殊情况,这只是我的感觉)。

您可能会 还可以使用"转换例程/转换退出"来完成此工作。 注意:我扫描了S/4HANA中的标准例程,没有一个包含这些阿拉伯字符(通过字形,十进制和十六进制的Unicode数字进行搜索)。

编辑:请谨慎执行" "翻译"仅适用于数字字段,而不适用于同时包含数字和非数字文本的文本。 如果您对后一种情况感兴趣,则可能会根据周围的单词所用的语言应用一些上下文"翻译",例如,请参见此在Microsoft论坛上进行讨论

一周热门 更多>