将String转换为N型-标准但非直观!

2020-08-16 20:01发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)好的,我们知道,如果您有数字类型...

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

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


好的,我们知道,如果您有数字类型并尝试为其分配字符串值,则任何非数字都将被忽略。 即

数据长度类型n长度4。
 数据mystring TYPE字符串值'DI01'.mynum = mystring。

mynum现在将包含值0001。

我们还知道,当您在带有键的内部表上使用READ时,提供的值将转换为键的类型。 我有一个内部表(HASHED),键入四个长度的数字字段。 它的记录为0001。我很困惑这段时间

使用表键numckey = mystring将表mytable读入DATA(record)。
具有sy-subrc = 0,并返回了一个record-numckey ='0001'的记录。

您将如何处理?
  1. 将哈希表键改为字符/字符串字段吗?
  2. 检查mystring仅包含数字吗?
  3. 还有什么?
8条回答
compass1988
2020-08-16 20:41

意见很好!

我确实知道。 但这仅与在LOOP AT WHERE中类型转换对性能的影响有关。

 DATA测试TYPE字符串。
 DATA itab TYPE ...(具有char键的表)。
 在itab上循环... WHERE键=测试。

 DATA测试类型字符串更昂贵。
 DATA itab TYPE ...(具有char键的表)。

 DATA mykey TYPE key_type。
 mykey =测试。
 环聊itab ... WHERE键= mykey。

 

在这种特殊情况下,我从没想到表的键(我没有定义!)不是C4而不是N4。

不是 一个错误-更多ABAP语言的功能。 而且现在更改还为时已晚!

但是例如,如果您使用CONV,则会遇到相同的问题。 我们真正需要的是IF类型(事物)为NUMC。 我知道我们可以使用RTTS或DESCRIBE,但这并不相同。

仅出于信息方面,我将代码更改如下。

如果是CO | 0123456789 |。

一周热门 更多>