ABAP 新语法 ITABidx ITABkey

作者:ABAP猿 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:Data Engineering, 数据工程
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

B eware of monotony; it's the mother of all deadly sins.

当心一成不变; 它是万恶之母 。

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

1

程序效果

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

2

源码分享

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

TYPES

BEGIN OF gty_student ,

name ( 10 ) TYPE c , "姓名

gender TYPE c , "性别

age TYPE i , "年龄

id ( 10 ) TYPE n , "学生ID

class ( 10 ) TYPE c , "班级

score TYPE p DECIMALS 1 , "成绩

level ( 10 ) TYPE c , "级别

ispass TYPE c , "是否通过

END OF gty_student .

DATA

gt_student TYPE TABLE OF gty_student ,

gs_student TYPE gty_student .

gt_student = VALUE # ( LET pre = 'Student'

random = cl_abap_random_int => create ( seed = CONV # ( sy \- timlo

) min = 0 max = 100 ) IN

FOR n = 1 UNTIL n > 10

( id = n

name = |{ pre } { n }|

gender = COND # ( WHEN n < 6 THEN '男'

ELSE '女' )

age = 10 \+ n

class = |{ n }班|

score = random -> get_next ( ) ) ).

*&\----------------------------------------------------------------------

*& 2\. 内表表达式 理解:内表表达式,相当于Read Table

*&\----------------------------------------------------------------------

*& 语法:itab[ idx ].

*& itab[ col1 = … col2 = … ].

*&\----------------------------------------------------------------------

"不存在会抛出异常(cx_sy_itab_line_not_found)

IF 1 <> 1 . DATA ( ls_index ) = gt_student[ 1 ] . "index读取 DATA ( ls_key ) = gt_student[ id = '0000000005' age = 15 ] .

"key读取

DATA ( lv_index_name ) = gt_student[ 1 ] \- name . "index读取结构字段 DATA ( lv_key_name ) = gt_student[ id = '0000000002' ] \- name .

"key读取字段

ENDIF .

"避免抛出异常的几种方式

ASSIGN gt_student[ id = '0000000003' name = 'Student 3' ] TO FIELD

\- SYMBOL ( <stu> ).

IF sy \- subrc EQ 0 . ENDIF .
IF line_exists ( gt_student[ 1 ] ). DATA ( ls_stu01 ) = gt_student[ 1 ] . DATA ( lv_name ) = gt_student[ 1 ] \- name . ENDIF .
DATA ( ls_stu02 ) = VALUE # ( gt_student[ 11 ] OPTIONAL ).
DATA ( ls_stu03 ) = VALUE # ( gt_student[ 11 ] DEFAULT VALUE # (

id = '0000000010' name = 'Student 10' ) ).

DATA ( ls_stu04 ) = VALUE # ( gt_student[ 11 ] DEFAULT VALUE # (

gt_student[ 10 ] OPTIONAL ) ).

DATA ( ls_stu05 ) = COND # ( LET c = lines ( gt_student ) IN WHEN

c > 10 THEN gt_student[ 11 ] ).

DATA ( ls_stu06 ) = COND # ( WHEN line_exists ( gt_student[ 11 ] )

THEN gt_student[ 11 ] ).

TRY . DATA ( ls_stu07 ) = gt_student[ 11 ] . CATCH cx_sy_itab_line_not_found .

• WRITE : 'Not Found!'.

ENDTRY .

3

AI解释

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

仅供参考

这段ABAP代码主要演示了使用新的ABAP语法内表表达式的用法,其中核心点如下:

** 索引和关键字读取: ** 使用 ` gt_student[1] ` 进行索引读取,获取内表的第一个元素。使用 ` gt_student[id

= '0000000005' age = 15] ` 进行关键字读取,根据指定条件获取内表中的元素。

**结构字段读取:** 通过 ` gt_student[1]-name ` 和 ` gt_student[id =

'0000000002']-name ` 的方式,直接从内表元素中读取结构字段的值。

**避免抛出异常的几种方式:** 使用 ` ASSIGN gt_student[id = '0000000003' name = 'Student 3']

TO FIELD-SYMBOL(<stu>) ` ,通过 ` ASSIGN ` 语句避免抛出异常。

**条件表达式和行是否存在的检查:** 使用 ` line_exists(gt_student[1]) ` 检查内表中是否存在指定的行。

**内表表达式的默认值和OPTIONAL选项:** 使用 ` VALUE #(gt_student[11] OPTIONAL) ` ,通过 `

OPTIONAL ` 选项在索引越界时避免抛出异常。使用 ` VALUE #(gt_student[11] DEFAULT VALUE #(id =

'0000000010' name = 'Student 10')) ` ,在索引越界时提供默认值。

**使用条件表达式处理异常情况:** 使用 ` COND ` 表达式,例如 ` COND #(LET c = lines(gt_student) IN

WHEN c > 10 THEN gt_student[11]) ` ,在特定条件下选择内表中的元素。

**使用TRY-CATCH处理异常:** 使用 ` TRY...CATCH ` 语句,捕获特定的异常类型,这里是 `

cx_sy_itab_line_not_found ` 。

总体而言,这些例子展示了如何使用新的ABAP语法来简化内表的操作,处理越界、异常以及条件选择的情况。

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

以上是今日分享,希望对你有所帮助~~~

欢迎点赞、留言、分享

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

往期推荐

[ ABAP 新语法-构建演示数据

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495390&idx=1&sn=55b0041df577df441aecbbe5891acfd6&chksm=cf0a3a30f87db326b5fde73627d116158d2ada96a929979de6705ab67a6fbfd0a686f11455b4&scene=21#wechat_redirect)

[ ABAP 新语法-DATA、FIELD-SYMBOL

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495411&idx=1&sn=b1b305a357e0704b39c885a63d772c7d&chksm=cf0a3a1df87db30b55bbabb6862694ca5f23265683895a30f278d26b10530686790f6ca412fa&scene=21#wechat_redirect)

[ ABAP OOALV-基本显示

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247494292&idx=1&sn=214e02d67346801142db4a6e90c93f79&chksm=cf0a3e7af87db76c1b8146388878c5afe2a6ba90466af37d9b91831ff12b70c5a982399ba51f&scene=21#wechat_redirect)

[ ABAP SALV-基本显示、外观设置、列设置

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493394&idx=1&sn=59eb6a2448a28c6c9d0e6d57b9f1e16a&chksm=cf0a33fcf87dbaea56fc1e465ec11caa4dc078e8fb6c0404634c2cac4393aa1dfd94fd371ea9&scene=21#wechat_redirect)

ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图
ABAP 新语法 ITABidx ITABkey - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP新语法ITABidxITABkey.md」整理生成,仅用于内部技术分享与学习交流。