首页 > 其他分享 >ABAP 新语法-ITAB[ idx ]、ITAB[ key ]

ABAP 新语法-ITAB[ idx ]、ITAB[ key ]

时间:2024-07-01 10:00:03浏览次数:3  
标签:11 10 ITAB gt key ABAP student DATA name

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

索引和关键字读取:

使用gt_student[1]进行索引读取,获取内表的第一个元素。使用gt_student[id = '0000000005' age = 15]进行关键字读取,根据指定条件获取内表中的元素。

结构字段读取:

通过gt_student[1]-namegt_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

 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.

标签:11,10,ITAB,gt,key,ABAP,student,DATA,name
From: https://blog.csdn.net/reagon2008/article/details/140092874

相关文章

  • abc360_G Suitable Edit for LIS 题解
    题目链接:Atcoder或者洛谷来讲讲纯降智做法,不需要任何智商的做法,顺带整活:对于一个\(LIS\)可以拆成\(preLIS+sufLIS\),而我们现在至多可以修改一个点,那么如果\(preLIS\)的末尾元素为\(x\),\(sufLIS\)的末尾元素为\(y\),那么如果有\(y-x\ge2\),那么我们可以至少找到一个元......
  • UITabbarController的介绍与使用
    UITabBarController是iOS中用于管理和显示选项卡界面的一个视图控制器。它允许用户在多个视图控制器之间进行切换,每个视图控制器对应一个选项卡。主要功能管理多个视图控制器:UITabBarController管理一个视图控制器数组,每个视图控制器对应一个选项卡。显示选项卡栏:在......
  • 说一说ABAP CDS View的发展历史与特性
    1.背景随着SAPFiori应用程序的兴起,SAP领域的小伙伴接触和使用ABAPCDSView的机会也是越来越多。今天,让我们花些时间,一起在了解下这项技术的设计初衷和发展历史。2.设计初衷说起ABAPCDSView,就不得不提及SAPHANA。SAPHANA引入了内存计算技术,这让ABAP开发范式发生了......
  • 软件测试——稳定性测试:adb & Monkey
    Monkey1.Monkey1.1Monkey是什么1.2Monkey测试场景1.3Monkey特点1.4Monkey在哪里1.5测试准备事项1.6Monkey参数列表2.基本命令3.常用参数4.事件类型5.调试参数6.日志管理7.日志错误定位8.Monkey测试可以发现的问题1.Monkey1.1Monkey是什么 ......
  • [Tkey] 与非
    解法原理1首先我们需要明白\(\operatorname{nand}\)的运算:\[\operatorname{not}(a\operatorname{nand}b)=a\operatorname{and}b\tag{1}\]这个很好理解,因为\(\operatorname{nand}\)就是这么定义的(从中文名字可以看出来)。\[(\operatorname{not}a)\operatorname{nand}(\opera......
  • 快速学习SAP开发资料,SAP视频快速学习资料,ABAP零基础快速学习 为何选择学习SAP ABAP?选
    在瞬息万变的数字时代,想要在IT行业脱颖而出,掌握一项有优势技术是通往高薪的关键。SAP,作为全球企业管理和解决方案的领导者,其核心编程语言ABAP正引领着企业信息化的最前沿。现在,我们为你呈上一套精心策划的SAPABAP二次开发资料视频——你的收入改善与职业飞跃的加速器!一、为何选......
  • ios CCKeyboard.m
    ////CCKeyboard.h//CCFC////Createdbyxichenon11-12-23.//Copyright2011ccteam.Allrightsreserved.//#import<Foundation/Foundation.h>#import"CCCommon.h"#import"CCConfig.h"#import"CCDepend.h"......
  • 【Shell脚本】 Shell索引数组变量:定义-获取-拼接-删除、alisa内置命令、默认输出换行
    目录 Shell索引数组变量:定义-获取-拼接-删除 数组的获取 数组的拼接数组的删除 alisa内置命令默认输出换行语法 read内置命令 declare内置命令获取指定key的值使用declare定义一普通数组,并获取打印元素数据的值 expr命令 算术运算符 布尔运算符 逻辑......
  • 在 C# 中对比KeyValuePair<TKey, TValue> 和 IDictionary<TKey, TValue>
    C#中的KeyValuePair<TKey,TValue>和IDictionary<TKey,TValue>具有独特的用途并表现出不同的特征。KeyValuePair<TKey,TValue>的功能KeyValuePair<TKey,TValue>是存储单个键值对的数据结构。它属于System.Collections.Generic命名空间。用法它用于表示单个......
  • linux重启后SSH无法启动,报/var/empty/sshd must be owned by root and not group or w
    问题:Linux上的SSH无法启动,执行/usr/sbin/sshd报 /var/empty/sshdmustbeownedbyrootandnotgrouporworld-writable。解决办法:查看发现这个目录的属主不是root,所以启动ssh报错#ls-ld/var/empty/sshd/  d——x——x——x2meifuroot1024Feb192024/var/emp......