云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云主机_isp数据库_安全稳定

小七 141 0

云主机_isp数据库_安全稳定

你好,社区,

这将是一个简短的博客文章,原因有二。第一个原因,我有时间消磨,但没那么多!第二个原因,我只是写这篇文章,所以我有一个地方可以很快找到一些我反复搜索的信息。

这篇博客文章将是关于一些应该对任何经验丰富的开发人员非常清楚的事情,但不幸的是,很多时候我看到的事情做的方式,将失败非常频繁。我们谈论的是货币、单位以及它们的外部/内部格式和表示方式。

当谈到单位时,这并不那么重要。我见过的最流行的选项是写变量输出\u字段小数\u个小数。所以,如果你展示的是公斤,啥叫人工智能,平方米,或者类似的东西,大多数时候它都能正常工作。我经常看到的下一件事是,如果单位是碎片,那么小数点的位置就被压缩了。或者如果数字的小数部分是零。你很快就会得到很多"如果",你会变得更加复杂,一旦有一个新的单位你没有想到,这就失败了。

当涉及到价值(如金钱价值),这是可怕的。我想在我的生活中从来没有见过这样的发展。似乎大多数人都不明白并非所有的货币都是平等的。大多数都有2个小数,是的,但有些有3个。还有一些,像我的"前母币",没有!大多数时候,我甚至没有看到一个书面声明,我只是看到一个移动到。然后就没有千位分隔符了,小数点分隔符总是一个点,不管你在哪里。通常形式上也有相当多的逻辑来弥补,这是完全没有必要的。

那么你应该怎么做呢?

你应该进一步了解书面陈述。WRITE语句具有非常强大的货币和单位添加功能。

这将使用您正在显示的单位或货币的正确表示,并且您没有额外的工作。你还能问什么?

另外,如果由于任何原因,您的系统中有一个单位或货币似乎没有正确的格式,您可以使用事务代码CUNI和OY04来维护这个输出格式。

这也是我看到的几乎到处都是可怕的执行。将数字从外部格式(即1.123,12表示欧洲)转换为数字的最常用方法是大量使用REPLACE语句。然后是压缩…只要代码总是在同一个"locale"中执行,就可以了,但情况并非总是这样。如果不是,你怎么办?尽可能多的IF语句?错。

那你该怎么办?

您应该使用功能模块MOVE\ CHAR\ TO\ NUM,此功能模块读取用户的设置,并将相应的数字进行转换。因此,假设此人正在上传的号码与此人在SAP中使用的格式一致,这将始终有效。

如下面Shai Sinai所述,您也可以为此检查功能模块RS\ U CONV\ U EX\ U 2\ in。看起来您还可以通过此功能模块提供您试图读取的货币/表格字段,它将让您知道用户输入的内容(或等效内容)是否有意义。

在某些情况下,这可能仍然不起作用。例如,快速自助建站,如果某个批处理用户正在执行某种后台作业,并且该作业应该处理不同的格式,那么这将是一个很难实现的任务。你将需要适当的设计来处理这种情况。

现在你再也没有借口使用那些愚蠢的SAP脚本添加、抑制零、压缩、隐藏小数等。只需使用带有正确选项的WRITE语句。

当涉及到读取数字时,如果是从excel或csv文件读取的,不管怎样,你最好还是使用我的超棒的文件阅读器。

如果你有任何进一步的建议或评论,请告诉我,我可以更新这篇博文。

干杯,

布鲁诺

你好布鲁诺,

国际思维总是一个好主意,即使你的公司在一个国家运营。在程序中硬编码文本字符串而不引用为文本元素怎么样?如果你用不同的语言登录,你几乎每一步都要猜。

我们公司不是国际性的,我在批量上传数据时,Excel的不同设置问题比较多。所以我写了几个小方法来获取Excel十进制和千位分隔符,以防出错——获取系统分隔符。然后我可以根据需要解析"文本"数字。

嗨,尼古拉,

是的,甚至不要让我从语言主题开始

这个主题本身就可以开始一篇全新的博客文章。当我有更多的时间消磨的时候,也许我也会用我关于这个主题的想法来更新这篇文章,或者如果你想继续这样做,我可以把这篇博文指向你的

那些获取Excel/系统分隔符的方法听起来很有趣!!你愿意和我分享吗?

干杯,

布鲁诺

轻松。老实说,这不是我的主意,这是我们本地SAP用户中一位知名人士的工作成果。

方法获取\系统\十进制\分隔符。

数据:hkey \ U current \ U user TYPE i VALUE 1。

清除rv \ U分隔符。

调用函数'GUI \ U get \ U REGVALUE'导出根=hkey \ U current \ U user key='控制Panel\International'value\uCHANGING string=rv\u separator EXCEPTIONS registry\u error=1.

CHECK sy subrc=1.

RAISE registry\u error.

ENDMETHOD.

METHOD get\u excel\u decimal\u separator.

DATA:lo\u app TYPE ole2\u object.DATA:lv\u usesystemseparators(10)。

创建对象lou app'Excel应用程序'.IF sy subrc=0.GET lou app'UseSystemSeparators'=lv\u UseSystemSeparators的属性。调用函数'FLUSH'。

IF sy subrc0或(sy subrc=0和lv\u UseSystemSeparators0).