ABAP740新语法:读取内表的注意事项
abap新语法中,提供了新的内表访问方式,大概类似于C++和java的数组操作
语法格式如下:itab[ index ] itab[KEY = value ]
index可以使用内表行数,注意如果是纵深列表,那么允许使用和数组一样的方式 itab[ index ][index]
(理解方式不同。)
这种方式相比较传统的read table节约了代码量,但是也产生了新的问题,如果访问不到怎么办?
实测是这样的,返回不到会dump,因为没有catch 到异常:cx_sy_itab_line_not_found
。而try catch的话就会发现一个问题,那就是我并没有节省工作量啊,甚至好像还多了点。
对此ABAP提供了新的语法方式。
DATA(test) = VALUE #( itab[ index(或者表达式) ] OPTIONAL ).
这样会自动catch到异常。也就是说不会报错,也能读到相应的值,感觉是不是很赞?
但是问题,就这么忽然的来了,当访问不到的时候,sy-subrc的返回值,是0.也就是说是忽略错误的。所以我怎么知道是访问不到,还是访问到的就是空呢?要知道内表是允许放置空行的。
VALUE #( it_vbak[ vbeln = '11111' ]-vbelp OPTIONAL )
还有这样,我怎么知道这个字段是空的,还是说没有访问到相应的行呢&#