首页 > 其他分享 >ABAP 动态内表

ABAP 动态内表

时间:2024-09-14 16:56:25浏览次数:13  
标签:highlighted 内表 lv ABAP 内联 动态 block

目的:通过透明表配置的SQl语句,自动生成动态内表,并将生成的值赋值到程序中

定义动态内表与动态结构–指针形式:

下面展示一些 内联代码片

// An highlighted block
  FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
                 <dyn_wa>.

定义动态内表与动态结构

下面展示一些 内联代码片

// An highlighted block
  "动态内表
  DATA: dy_table TYPE REF TO data, "动态内表
        dy_line  TYPE REF TO data. "动态内表工作区
        
  DATA: lv_tabname TYPE tabname."动态内表来源的表名称

创建动态内表与动态工作区

下面展示一些 内联代码片

// An highlighted block
  "动态内表
      CREATE DATA dy_table TYPE TABLE OF (lv_tabname).
      ASSIGN dy_table->* TO <dyn_table>.
      CREATE DATA dy_line LIKE  LINE OF <dyn_table>.
      ASSIGN dy_line->* TO <dyn_wa>.

定义宏去动态取出数据放入动态内表中

这是只是举一个例子(自定义SQL语句取数),具体情况具体分析即可
下面展示一些 内联代码片

// An highlighted block
参数&1 表示需要取出的透明表的字段
参数&2 表示取数的透明表
参数&3 表示将取出的透明表数据存放到透明表中
参数&4 表示SQL语句的WHERE条件
*  "动态SQL宏,取出需要放入动态内表的数据
  DEFINE         select_data_to_wa.
    SELECT (&1)
      FROM (&2)
      APPENDING CORRESPONDING FIELDS OF TABLE &3
      WHERE (&4).
  END-OF-DEFINITION.

利用宏去取数,放入动态内表中

下面展示一些 内联代码片

// An highlighted block
*  "动态SQL宏,取出需要放入动态内表的数据
      select_data_to_wa: lv_select "被选择的透明表字段
                         lv_tabname "被选择的透明表
                         <dyn_table> "将透明表数据存入动态内表
                         lv_where. "SQL查询的where 条件

获取动态内表的字段名

下面展示一些 内联代码片

// An highlighted block
    "获取内表的字段名称
    cl_descr ?= cl_abap_typedescr=>describe_by_data( <dyn_wa> ).

循环动态内表,进行系列操作(本例为建动态内表的字段值赋值给自定义字段)

下面展示一些 内联代码片

// An highlighted block
    "获取内表的字段名称
    "取出的数据按条件汇入发送表中
    LOOP AT <dyn_table> ASSIGNING <dyn_wa> WHERE (lv_if).
      "取出动态内表的字段对应的值
      LOOP AT cl_descr->components ASSIGNING  FIELD-SYMBOL(<fs_comp>)."循环字段
        "绑定内表字段名字对应的字段值<fs_value>
        ASSIGN COMPONENT <fs_comp>-name OF STRUCTURE <dyn_wa> TO <fs_value>.
        IF sy-subrc = 0.
          "接收需要发送的字段的值
          IF lv_send_field1 IS NOT INITIAL .
            IF <fs_comp>-name = lv_send_field1.
              IF <fs_value> IS NOT INITIAL.
                lv_content1 = <fs_value>."接收第一个发送字段值
              ENDIF.
            ENDIF.
          ENDIF.
          ENDLOOP.
       ENDLOOP.

至此,一份动态内表就能正常取数并赋值到程序当中啦~

标签:highlighted,内表,lv,ABAP,内联,动态,block
From: https://blog.csdn.net/longskyworth/article/details/142252659

相关文章

  • Vue3 结合 Cesium 动态绘制矩形
    相关概念Viewer:newCesium.Viewer (container, options )介绍:用于构建应用程序的基本小部件。它将所有标准Cesium小部件组合到一个可重用的程序包中。Entity:newCesium.Entity ( options )介绍:实体实例将多种形式的可视化聚集到单个高级对象中。可以手动创建它们......
  • ava框架Spring 中的动态数据库的使用方法
    在Java框架Spring中,动态数据库的使用通常涉及根据不同条件(如请求的上下文、租户ID等)动态切换数据源。Spring提供了一些方法来实现这一点,以下是一个常见的实现方案:1.基于AbstractRoutingDataSource实现动态数据库切换Spring提供了AbstractRoutingDataSource类,可以通过......
  • Kubernetes怎么进行NFS动态存储迁移
    环境查看系统环境#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)#uname-aLinuxCentOS7K8SMaster010633.10.0-1160.108.1.el7.x86_64#1SMPThuJan2516:17:31UTC2024x86_64x86_64x86_64GNU/Linux软件环境#kubectlversionClientVersion:ver......
  • NOIP 复习题之动态规划
    AT_joi2022ho_c選挙で勝とう首先要先把协作者买出来,再对于之后的州把买的协作者全部用上。则我们可以先枚举需要的协作者数量\(x\),可以知道的是:我们枚举选择哪些\(x\)个协作者,再在剩下的州中选择\(A_i\)最小的\(K-x\)个州即可。则考虑dp。我们对\(B_i\)进行排序后,协作......
  • 【Unity】创建动态的Tooltip
    需求说明文字内容动态变化;根据文字的内容自适应宽高;跟随鼠标移动;可以隐藏和展示;鼠标到达窗口边缘,tooltip停靠边缘可见;成果展示Scene部分查看UI相机和Canvas的设置注意将文字放在最左下角脚本部分TooltipScreenSpaceUI脚本绑定至TooltipScreenSpaceUI物体public......
  • 反射&动态代理
    1.反射1.1反射的概述:**专业的解释(了解一下):**是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。**通俗的理解:(掌握)**......
  • springboot动态线程池
    1、配置文件新增每个线程池的基本参数配置thread-pool.user-thread.corePoolSize=1thread-pool.user-thread.maxPoolSize=1thread-pool.user-thread.keepAliveSeconds=120thread-pool.user-thread.queueCapacity=1thread-pool.school-thread.corePoolSize=2thread-pool.sch......
  • vue3/provider 和 inject实现跨组件动态数据传递。
    实现跨层传递在Vue中,provider和inject是一种用于实现依赖注入的高级特性,允许一个祖先组件向其所有子孙组件注入一个依赖,而不论组件层次有多深,并在起上下游关系成立的时间里始终生效。这在某些场景下非常有用,比如当你需要跨多个组件层级传递数据时。定义provide对象:在父组......
  • Java Server Page动态包含与重定向
    一、动态包含需求:我希望能够在我的页面中包含一个音频分析:在页面被请求的时候动态地包含另一个JSP页面或者静态资源(如HTML页面、图片等)的内容。假设我已经有一个名为audio.jsp的页面。当服务器处理包含<jsp:includepage="audio.jsp"/>的JSP页面时,它会将audio.jsp页面的......
  • Python中如何动态地执行代码
    在Python中,动态执行代码是一种强大的功能,它允许程序在运行时构建并执行字符串形式的代码。这种能力在多种场景下非常有用,比如开发交互式应用程序、构建代码模板、动态生成和执行函数等。Python提供了几种不同的方式来动态执行代码,包括使用exec()、eval()、compile()函数,以及通......