ABAP 宿主表达式(Host Expressions)

news/2025/3/12 17:31:37/文章来源:https://www.cnblogs.com/dy-debug/p/18336087

ABAP宿主表达式是一种在ABAP 7.40及更高版本中引入的特性,‌它允许在SQL表达式的操作数位置或编写SQL语句的工作区中使用任何ABAP表达式。‌ 这种表达式通过在表达式前加上@符号来标识,‌形式为@(abap_expression)。‌宿主表达式的引入,‌使得ABAP开发者能够更灵活地在SQL查询中使用ABAP的计算结果,‌从而丰富了SQL查询的功能和表达能力。‌

宿主表达式的应用场景非常广泛,‌包括但不限于:‌

  • 构造表达式:‌用于创建复杂的数据结构。‌
  • 内表访问表达式:‌用于从内存表或其他数据源中读取数据。‌
  • 算术表达式:‌进行数学运算。‌
  • 字符串表达式:‌处理文本数据。‌
  • bit表达式:‌处理二进制数据。‌
  • 内建函数:‌使用SAP提供的函数进行处理。‌
  • 函数性的方法:‌调用定义在类中的方法。‌

通过使用宿主表达式,‌开发者可以将ABAP的计算结果直接嵌入到SQL查询中,‌这不仅增加了SQL查询的灵活性,‌也提高了代码的复用性和可维护性。‌例如,‌开发者可以使用宿主表达式来动态构建查询条件,‌或者根据业务逻辑动态调整查询结果的处理方式。‌

此外,‌宿主表达式的计算是从左到右进行的,‌其结果作为宿主变量传递给数据库,‌可以视为通过ABAP表达式为ABAP帮助变量赋值的简写。‌这种特性使得ABAP开发者在处理复杂的数据查询和业务逻辑时更加得心应手,‌同时也为SAP系统的性能优化和业务逻辑的实现提供了更多的可能性。‌

 

【Constructor expression】构造表达式

CLASS demo DEFINITION.PUBLIC SECTION.CLASS-DATA carriers TYPE HASHED TABLE OF scarrWITH UNIQUE KEY carridWITH NON-UNIQUE SORTED KEY name COMPONENTS carrname.CLASS-METHODS:class_constructor,main.
ENDCLASS.CLASS demo IMPLEMENTATION.METHOD main.DATA name TYPE scarr-carrname VALUE 'United Airlines'.cl_demo_input=>request( CHANGING field = name ).SELECT carrid, connid, cityfrom, citytoFROM spfliWHERE carrid =@( VALUE spfli-carrid( carriers[ KEY namecarrname = name ]-carridOPTIONAL ) )INTO TABLE @DATA(result).cl_demo_output=>display( result ).ENDMETHOD.METHOD class_constructor.SELECT *FROM scarrINTO TABLE carriers.ENDMETHOD.ENDCLASS.START-OF-SELECTION.demo=>main( ).

执行结果:

 

【Table Expressions】内表表达式

需要注意的是,在使用表达式的方式访问内表时,若内表内容未找到,并不会给sy-subrc返回值。而是会抛出异常cx_sy_itab_line_not_found

SELECT carrid, connid, cityfrom, cityto, countryfrFROM spfli INTO TABLE @DATA(flight_tab).
*
TRY .SELECT carrid, connid, cityfrom, cityto,  countryfr FROM spfliWHERE countryfr = @( flight_tab[ 1 ]-countryfr )INTO TABLE @DATA(flight_land).cl_demo_output=>write( flight_tab[ 1 ] ).cl_demo_output=>write( flight_land ).CATCH cx_sy_itab_line_not_found.cl_demo_output=>write('GG').
ENDTRY.cl_demo_output=>display( ).

执行结果:

 

【String Expressions】字符串表达式

目前唯一的字符串运算符:&&

DATA cityfrom TYPE spfli-cityfrom VALUE 'SAN'.SELECT carrid, connid, cityfrom, cityto FROM spfliWHERE cityfrom = @( |{ cityfrom } | && `FRANCISCO` ) " } | 中间有空格INTO TABLE @DATA(result).cl_demo_output=>display( result ).

执行结果:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

织梦dedecms调用文章列表时候判断文章自定义属性

有时候我们需要通过判断文章的属性来给相应的属性以相应的样式,例如为推荐的文章添加推荐的标志等等。 例如以下代码就可以判断出文章是否是推荐和图片这两个属性,并作不同的样式输出: [field:array runphp=yes]if (@me[flag]==c,p) @me=<em>推荐</em>; else @…

WordPress 简单吗?

是的,WordPress 对于初学者来说非常简单易用。WordPress 是一个开源的网站构建平台,专为简单性和用户友好性而设计,使其非常适合初学者和技术水平较低的用户。以下是几个使 WordPress 易于使用的原因: 1. 直观的用户界面:WordPress 拥有一个干净且直观的界面,菜单和选项清…

2024年第二十六届IRO国际机器人奥林匹克大赛中国总决赛

首页 大赛项目 大赛动态 在线教育 关于我们 合作加盟 首页 大赛动态 动态详情2024年第二十六届IRO国际机器人奥林匹克大赛中国总决赛报名日期:2024-07-15 11:20:55 - 2024-08-08 23:59:59 举办时间:2024-08-22 08:00:00 - 2024-08-23 18:00:00 举办地址:北京市 国家速滑馆冰…

CFR反编译jar文件

1 、下载http://www.benf.org/other/cfr/ 2、将下载的文件和需要反编译的文件放到一个目录(也可以不放一个目录,但是要指定路径); 3、java -jar cfr-0.152.jar 待反编译的文件名.jar --outputdir ./ 活到老,学到老。

《PostgreSQL 数据库在国内的发展前景》

从DB-engines这张2024年8月的最新排名图上可以看出,PostgreSQL数据库的发展趋势还是非常好的,在国内,PostgreSQL数据库也展现出令人振奋的发展前景,非常明显的一种表现就是腾讯云、人大金仓、阿里云、华为等众多厂商都有基于PostgreSQL数据库的产品,比如TDSQL-PG版、Polar…

手机充电器和电脑开关电源引起跳闸

存在场景(总空开跳闸): 办公区,每人一套PC电脑(开关电源)+一个手机充电器(原理也是开关电源),停电后,突然恢复供电,启动瞬间电流远远大于额定值, 引起总开关跳闸。 浪涌电流产生原因 PC电脑为开关电源,开关电源一般都采用整流滤波的原理,在开关电源启动的瞬间,大电容首先充…

W外链平台怎么样?短链接稳定不?

以下是关于W外链平台的一些分析方面供参考判断其怎么样以及短链接稳定性等情况: **优点方面:****功能特性**1. 技术功能: - 具备短网址生成核心技术,能通过算法压缩等方式生成短链并存储对应关系确保跳转。 - 有防红防封功能,通过技术手段对原始链接加密和伪装绕过一…

企业如何构建全面的指标管理体系?

在当今数字化的时代,企业对于数据的管理和利用愈发重视,而构建全面的指标管理体系成为了企业提升数据价值、优化决策流程的关键环节。 构建完整的指标属性体系指标属性体系是指标管理的核心,我们一般将指标属性划分为四类:基础属性、业务属性、技术属性和管理属性。 基础属…

java使用documents4j在linux环境通过LibreOffice实现word转pdf,并解决中文乱码

本文主要分享使用documents4j将word转换成pdf,并解决中文乱码的问题。 一开始使用的是poi进行word转换pdf,但是当word中有图片,转换就会报错。 于是对比了各种转换方式,又选择了documents4j,通过网上的教程,很快就成功的将word转换成了pdf,还很好的保留了格式。但当部署…

Jenkins的安装教程

jenkins安装部署,怎样安装Jenkins?一、Jenkins是什么 Jenkins是一款开源CI&CD软件,用于自动化构建、测试和部署软件等各种任务,以实现持续集成。Jenkins支持各种运行方式,可通过系统包、Docker或者通过一个独立的Java程序。 二、安装方式 2.1 禅道智能应用平台一键安装…

数据血缘系列(4)—— 数据血缘的特点与相关概念

大家好,我是独孤风。在当今数据驱动的商业环境中,数据治理成为企业成功的关键因素之一,而数据血缘正是数据治理成功的一个关键。 本文我们详细探讨下数据血缘的特点都有什么?对比一下数据血缘、数据关系、数据分类、数据出处、知识图谱相关概念的关系。 本文为《数据血缘分…

多普勒流量计 | 高精度非接触式测量,管道流量监测无障碍

​ 我们广州的客户一直在寻找一款高精度且便于部署的流量计,用于实时监控生产管线中的流体流量。经过反复比较,最终我们选择了这款超声波多普勒流量计。 该流量计采用多普勒效应的测量原理,通过发射和接收声波信号,精确测量管道内流体的流速分布。与传统测量方式相比,它最大的优…