SAP 2021系统中STRING内表VALUE赋值类型不兼容问题咨询
SAP ABAP中VALUE操作符填充STRING内表的类型兼容问题
在SAP ABAP 2021系统中,尝试用VALUE操作符直接初始化STRING类型内表时触发报错,代码示例如下:
DATA tab TYPE TABLE OF STRING. tab = VALUE #( ( 'abc' ) ( 'xyz' ) )
系统返回错误提示:
"'abc'" and the row type of "TAB" are incompatible.
而通过conv string()显式转换字符串字面量后,代码可正常运行:
DATA tab TYPE TABLE OF STRING. tab = VALUE #( ( conv string('abc') ) ( conv string('xyz') ) )
问题原因
ABAP中,用单引号包裹的字符串字面量默认类型为C类型(定长字符类型),并非STRING类型(变长字符串类型)。尽管在多数场景下C类型能自动隐式转换为STRING,但VALUE操作符初始化内表的语法逻辑中,编译器会严格校验数据类型与内表行类型的一致性,不支持这种隐式转换,因此直接传入C类型字面量会触发类型不兼容错误。
通过conv string()显式将字面量转换为STRING类型后,数据类型与内表行类型完全匹配,即可正常完成赋值操作。
内容的提问来源于stack exchange,提问作者Cutter
相关产品推荐
相关产品推荐

