点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
论坛中最近有讨论,该函数 < 应该始终优先选择strong> substring(...) ,而不是规范的 文本+关闭(len) 构造("子字段访问"),例如,在该讨论" [您不应该使用老式的结构"。
演示代码示例,该示例实现等效的子字符串和text + off(len)构造:
DATA子类型字符串。 DATA(text)=`Hello world`。 sub = substring(val = text off = 6 len = 5)。 "自7.02开始的新方法 ASSERT sub ='world'。 sub =文字+6(5)。 "子域访问已存在数十年 ASSERT sub ='world'。
我真的对这种系统偏好感到怀疑,例如,当变量的类型为C且长度固定时,我更喜欢子字段访问而不是子字符串访问,以避免短转储STRING_LENGTH_TOO_LARGE:
DATA子类型字符串。 DATA(文本)= CONV Scarr-carrname('Air France')。" scarr-carrname = C型长度20 尝试。 sub = substring(val = text off = 5 len = 10)。 捕获cx_sy_range_out_of_bounds INTO DATA(lx)。 ENDTRY。 ASSERT 1x被绑定。 ASSERT sub =''。 sub =文字+5(10)。 ASSERT sub ='rance'。
就目前而言,我不能说我在这两者之间有偏好,两者都有优点和缺点。
您怎么看?
非常感谢。
桑德拉
@ 马修·比林汉姆
在这个答案中,我将汇编社区给出的缺点和优点:
每种情况的示例:
1。 异常超出范围(C/D/T/STRING变量)
2。如果提取尾随空格,则为Exception C变量
4。静态形式的编译器检查
Quynh Doan Manh 对于子字段,编译器不会 并非总是检查任何动态结构(字符串类型的文本,偏移量和长度的变量)中的值,只有在所有常量(以及类型C的文本)都不变的情况下,编译器才进行检查。
Matthew Billingham ,这是使用子字段访问的另一个优势。 a>我认为"简短"是任何编程语言中的有效动机,只要它是可理解的,也许text + off(len)对新手来说是不可理解的,但是对于许多构造(尤其是当今的构造函数表达式)来说,这是相同的。/p>
您好 Sandra Rossi ,
您的问题就像哪个更好地用于读取内部表
最诚挚的问候
Ebrahim Hatem 是的。尽管表表达式比子字符串更易于处理,因为它可以将其包装在VALUE#(... OPTIONAL)中。
一周热门 更多>