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

这段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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/761189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子战学习笔记01:电子战概论

0、写在文前 本人在学习电子战相关理论知识时&#xff0c;一直感觉无从下手&#xff0c;之后在老师的推荐下购买了《EW101&#xff1a;电子战基础》纸质书籍学习&#xff0c;所以将自己的学习笔记在CSDN上记录一下&#xff0c;也供有需要的同学参考。 1、电子战定义 电子战&…

惠海100V 15A HC070N10L TO-252封装 N沟道MOS管 打火机/BMS电源板应用

MOS管的工作原理是基于在P型半导体与N型半导体之间形成的PN结&#xff0c;通过改变栅极电压来调整沟道内载流子的数量&#xff0c;从而改变沟道电阻和源极与漏极之间的电流大小。由于MOS管具有输入电阻高、噪声小、功耗低等优点&#xff0c;它们在大规模和超大规模集成电路中得…

ESP32-C3(基本信息)

ESP32-C3 是一款低功耗、高集成度的 MCU 系统级芯片 (SoC)&#xff0c;它集成了 2.4 GHz Wi-Fi 和低功耗蓝牙 (Bluetooth LE) 无线通信功能&#xff0c;并拥有丰富的外设接口和先进的电源管理机制。 主要特性&#xff1a; 无线通信&#xff1a; 支持 2.4 GHz Wi-Fi (802.11b/…

AI音乐革命:创新的门槛降低与产业未来的挑战

文章目录 每日一句正能量前言整体介绍人机合作AI在音乐创作中的辅助作用人机共同创作的模式实现人机共同创作的可能性伦理和法律考量 伦理道德AI与人类创造力的关系技术发展与人类创造力的平衡社会和文化影响结论 后记AI与音乐的未来交响创新的双刃剑版权与伦理的探讨人机合作的…

GaussDB关键技术原理:高性能(三)

GaussDB关键技术原理&#xff1a;高性能&#xff08;二&#xff09;从查询处理综述对GaussDB的高性能技术进行了解读&#xff0c;本篇将从查询重写RBO、物理优化CBO、分布式优化器、布式执行框架、轻量全局事务管理GTM-lite等五方面对高性能关键技术进行分享。 目录 3 高性能…

深入理解Java核心技术模块化局部变量类型推断

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

【C语言】23.文件操作

由于要对数据进行持久化保存&#xff0c;我们就有了文件。 一、程序文件与数据文件 磁盘&#xff08;硬盘&#xff09;上的文件是文件。 但是在程序设计中&#xff0c;我们⼀般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09…

pdf压缩,pdf压缩在线网页版,在线压缩pdf网站

在数字化时代&#xff0c;pdf文件已经成为我们工作、学习和生活中不可或缺的一部分。然而&#xff0c;pdf文件往往体积庞大&#xff0c;传输效率低下&#xff0c;还占用大量存储空间。如何在不影响文件质量的前提下&#xff0c;减小pdf文件的大小呢&#xff1f;今天&#xff0c…

线程安全问题(二)——死锁

死锁 前言可重入锁逻辑 两个线程两把锁&#xff08;死锁&#xff09;死锁的特点多个线程多把锁&#xff08;哲学家就餐问题&#xff09;总结 前言 在前面的文章中&#xff0c;介绍了锁的基本使用方式——锁 在上一篇文章中&#xff0c;通过synchronized关键字进行加锁操作&am…

在Stimulsoft 报告中连接来自 MySQL 的数据

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

数据结构(Java):迭代器遍历【底层源码解析】

1、引言 我们知道&#xff0c;对于List系列集合&#xff0c;添加的元素是有序、可重复、有索引的&#xff1b;而对于Set系列集合&#xff0c;添加的元素是无序、不重复、无索引的。 那么使用for循环通过下标来对Set系列集合进行遍历&#xff0c;那显然是不行的。 迭代器就可…

docker k8s

1、docker是什么&#xff1f; 将环境和程序一起打包给到 服务器运行的工具软件。 2、基础镜像base image是什么&#xff1f; 操作系统&#xff1a;用户空间、内核空间 阉割操作系统&#xff0c;利用其的用户空间&#xff08;因为应用程序运行在用户空间&#xff09;&#xf…

转换Python2 转 Python3 小程序

转换Python2 -> Python3 藉由python35\Tools\scripts\2to3.py 档转换 python D:\python\Tools\scripts\2to3.py D:\Users\a0979\Desktop\scrip.pypython [转档程式] [欲转档.py] * python 为 python3 ->因为转档程式为python3 ![](https://i.imgur.com/PeQkvhk.png)py…

STM32的EXTI简介

一&#xff0c;EXTI&#xff08;External Interrupt&#xff09;外部中断事件控制器 什么是EXTI&#xff1f; 1.监测指定的GPIO口的电平信号变化&#xff0c;并检测到指定条件时&#xff0c;向内核的中断控制器NVIC发出中断申请。NVIC在裁决后&#xff0c;如果满足条件&#xf…

工业4.0能给电能表带来什么机会

一、技术革新与升级 工业4.0的核心在于智能化和网络化&#xff0c;这促使电能表行业进行技术革新和升级。传统的电能表功能单一&#xff0c;主要用于测量电能消耗。而在工业4.0的推动下&#xff0c;电能表逐渐发展成为集信息储存和处理、网络通信、实时监测等多种功能于一体的…

云计算【第一阶段(22)】Linux的进程和计划任务管理

目录 一、查看进程 1.1、程序和进程的关系 1.2、查看进程 1.2.1、静态查看进程信息ps ​编辑 1.2.1.1、实验 1.2.2、动态查看进程信息top 1.2.2.1、实验 1.2.2.2、top 命令全屏操作界面快捷键 1.2.3、pgrep根据特定条件查询进程pid信息 1.2.4、pstree命令以树形结构列出…

5、Python之rich:GUI之外,终端呈现也能玩出花

引言 在Python系列文章的上一篇中&#xff0c;我们从print的定义出发&#xff0c;进一步探索了print()函数更多的用法&#xff0c;尤其是一些哪怕是Python老手也可能忽略的用法。没有阅读的或者需要回顾print()及输出格式化的扩展用法&#xff0c;可以查看上一篇文章。 虽然pr…

Git安装与使用及整合IDEA使用的详细教程

1. 版本控制软件介绍 版本控制软件提供完备的版本管理功能&#xff0c;用于存储、追踪目录&#xff08;文件夹&#xff09;和文件的修改历史&#xff0c;是软件开发者的必备工具&#xff0c;是软件公司的基础设施。版本控制软件的最高目标&#xff0c;是支持软件公司的配置管理…

Swift 新结构化并发中鲜为人知的 isolated 参数

概述 伴随着 Swift 5.5&#xff08;WWDC21&#xff09;推出的新结构化并发到今年的 WWDC 24 已经有 3 个多年头了。想必大家都对其中 async/awiat、async let、TaskGroup、Actor 等各种概念都了然于胸了吧&#xff1f; 不过小伙伴们可能不知道的是&#xff1a;新结构化并发&a…

【Eplan】P8-图纸设计的四种方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解 EPLAN 的图纸设计的四种方法&#xff1a;面向图形、面向设备、面向物料清单、面向安装情况&#xff1b; 2、 问题场景 为什么 EPLAN 要使用四种不同的设计方法。 3、软硬件环境 1、软件版本&#xff1a;EPLAN…