首页 > 其他分享 >ABAP 宿主表达式(Host Expressions)

ABAP 宿主表达式(Host Expressions)

时间:2024-08-06 16:05:23浏览次数:14  
标签:carrid cl demo ABAP Host cityfrom Expressions 表达式

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 scarr
                  WITH UNIQUE KEY carrid
                  WITH 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, cityto
           FROM spfli
           WHERE carrid =
             @( VALUE spfli-carrid( carriers[ KEY name
                                              carrname = name ]-carrid
                                              OPTIONAL ) )
           INTO TABLE @DATA(result).

    cl_demo_output=>display( result ).
  ENDMETHOD.
  METHOD class_constructor.
    SELECT *
           FROM scarr
           INTO TABLE carriers.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

执行结果:

 

【Table Expressions】内表表达式

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

SELECT carrid, connid, cityfrom, cityto, countryfr
  FROM spfli INTO TABLE @DATA(flight_tab).
*
TRY .

    SELECT carrid, connid, cityfrom, cityto,  countryfr FROM spfli
     WHERE 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 spfli
 WHERE cityfrom = @( |{ cityfrom } | && `FRANCISCO` ) " } | 中间有空格
  INTO TABLE @DATA(result).

cl_demo_output=>display( result ).

执行结果:

 

 

标签:carrid,cl,demo,ABAP,Host,cityfrom,Expressions,表达式
From: https://www.cnblogs.com/dy-debug/p/18336087

相关文章

  • BackgroundService and IHostedService
    IHostedService:适用于需要更高灵活性和控制的场景。需要自定义启动和停止逻辑。适用于复杂的后台任务管理。BackgroundService:适用于需要简单实现后台任务的场景。提供了一个方便的抽象,减少样板代码。适用于大多数常见的后台任务。publicclassMyHostedService:IHost......
  • 【YashanDB数据库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to
    问题现象托管数据库时检查报错OM的IP是127.0.0.1,不支持托管到YCMOM问题的风险及影响导致数据库无法托管监控问题影响的版本问题发生原因安装数据库时修改了OM的监听ip为127.0.0.1解决方法及规避方式后台修改OM的ip为本机的ip或者0.0.0.0问题分析和处理过程1、修改en......
  • ABAP数据类型转换和不同数据类型比较
    DATA:lv_strTYPEstring,lv_str2TYPEstring,lv_charTYPEchar10,lv_iTYPEiVALUE1,lv_fTYPEpDECIMALS1VALUE'1.1'.lv_str='1.11'.lv_char='1.11'."TRUEIFlv_str=1.WRITE:1......
  • SAP ABAP 基础与入门(一、数据类型定义与字符串处理)
    1.   基础1.1.  基本数据类型C、N、D、T、I、F、P、X、string、XstringP:默认为8字节,最大允许16字节。最大整数位:16*2=32-1=31-14(允许最大小数位数)=17位整数位类型最大长度(字符数)默认长度说明C1~262143个字符1 字符普通字符(常用于名称、备......
  • Python - Lambda expressions as closures
    Aclosureisanestedfunctionthatcanaccessfreevariablesfromanenclosingfunctionevenafterithasfinisheditsexecution.Weknowthat,likenestedfunctiondefinitions,lambdaexpressionscanreferencevaluesfromtheenclosingscope,solambda......
  • hostapd 配置文件示例
    b模式:2.4G20MHz#接口和驱动程序设置interface=wlan0driver=nl80211ctrl_interface=/var/run/hostapd​#基本网络设置ssid=TestAPhw_mode=bchannel=11​#WPA身份验证设置wpa=2wpa_key_mgmt=WPA-PSKwpa_passphrase=12345678​#加密算法设置wpa_pairwise=CCMP......
  • Access denied for user 'root'@'localhost' (using password: YES)
    1.启动项目报连接数据库被拒绝![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113834004-615120424.png)2.用数据库连接工具也是提示同样错误![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113958582-2045494132.png)3.查看my......
  • meshtastic traceroute --host 1.1.1.1 给出不一致的结果?
    尝试自动化一些跟踪路由行为。在USB端口上工作,但在--hostIP上不一致。在Windows10上使用python2,以太网连接的IP地址192.168.1.80,远程lorameshtastic主机是192.168.1.87上的lilygoT-Beam|||执行:python-mmeshtastic--host192.168.1.87--tracer......
  • 【YOLOv8改进- 多模块融合改进】GhostConv + ContextAggregation 幽灵卷积与上下文聚
    YOLOv8目标检测创新改进与实战案例专栏专栏目录:YOLOv8有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv8基础解析+创新改进+实战案例ContextAggregation介绍摘要卷积神经网络(CNNs)在计算机视觉中无......
  • 【ABAP】-Sap Codepage
    编码页是一种用于字符编码的映射表格将不同的字符集(比如ASCII、Unicode等)中的字符整合到一个特定的计算机系统中,使得这个系统能够与使用不同编码系统的其他计算机系统进行数据交换和通信sapcodepage由四位数字组成属性对应关系表TCP00A事务码scp工具类CL_ABAP_CONV......