`
zjut_xiongfeng
  • 浏览: 286890 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

abap动态内表

阅读更多

This Tutorial details about creation of dynamic internal table with different scenarios

Internal Tables are local tables within a program containing a series of lines having same data type. ABAPTM Open SQL allows single field, range of fields, entire database table or view into an internal table.  

In technical terms Internal table is a dynamic sequential dataset in which all records have the same data structure and a key.  

static internal table can be declared in an ABAPTM program initially, when the structure of the internal table is fixed and known to the user. 

Dynamic internal table is an extension to internal table concept, used when the number of fields is not known at the design time or until the compile time.

Scenario 1:

Display the table of contents in grid format using the dynamic internal table. 

Creating Dynamic internal table 

  PARAMETERS : p_table(10) TYPE C.

  DATA: w_tabname TYPE w_tabname,            

        w_dref TYPE REF TO data,             

        w_grid TYPE REF TO cl_gui_alv_grid. 

  FIELD-SYMBOLS: <t_itab> TYPE ANY TABLE. 

  w_tabname = p_table. 

  CREATE DATA w_dref TYPE TABLE OF (w_tabname).

  ASSIGN w_dref->* TO <t_itab>.

 Populating Dynamic internal table 

  SELECT *

    FROM (w_tabname) UP TO 20 ROWS

    INTO TABLE <t_itab>.

 Displaying dynamic internal table using Grid. 

  CREATE OBJECT w_grid

    EXPORTING i_parent = cl_gui_container=>screen0. 

  CALL METHOD w_grid->set_table_for_first_display

    EXPORTING

      i_structure_name = w_tabname

    CHANGING

      it_outtab        = <t_itab>. 

  CALL SCREEN 100.

 Scenario 2: 

Create a dynamic internal table with the specified number of columns. 

 Creating Dynamic internal table

TYPE-POOLS: slis.

 FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,  “ Dynamic internal table name

               <fs_dyntable>,                     “ Field symbol to create work area

               <fs_fldval> type any.              “ Field symbol to assign values 

PARAMETERS: p_cols(5) TYPE c.                     “ Input number of columns

DATA:   t_newtable TYPE REF TO data,

        t_newline  TYPE REF TO data,

        t_fldcat   TYPE slis_t_fldcat_alv,

        t_fldcat   TYPE lvc_t_fcat,

        wa_it_fldcat TYPE lvc_s_fcat,

        wa_colno(2) TYPE n,

        wa_flname(5) TYPE c. 

* Create fields .

  DO p_cols TIMES.

    CLEAR wa_it_fldcat.

    move sy-index to wa_colno.

    concatenate 'COL'

                wa_colno

           into wa_flname.

    wa_it_fldcat-fieldname = wa_flname.

    wa_it_fldcat-datatype = 'CHAR'.

    wa_it_fldcat-intlen = 10.

    APPEND wa_it_fldcat TO t_fldcat.

  ENDDO. 

* Create dynamic internal table and assign to FS

  CALL METHOD cl_alv_table_create=>create_dynamic_table

    EXPORTING

      it_fieldcatalog = t_fldcat

    IMPORTING

      ep_table        = t_newtable. 

  ASSIGN t_newtable->* TO <t_dyntable>. 

* Create dynamic work area and assign to FS

  CREATE DATA t_newline LIKE LINE OF <t_dyntable>.

  ASSIGN t_newline->* TO <fs_dyntable>.

Populating Dynamic internal table 

  DATA: fieldname(20) TYPE c.

  DATA: fieldvalue(10) TYPE c.

  DATA: index(3) TYPE c. 

  DO p_cols TIMES. 

    index = sy-index.

    MOVE sy-index TO wa_colno.

    CONCATENATE 'COL'

                wa_colno

           INTO wa_flname. 

* Set up fieldvalue

    CONCATENATE 'VALUE' index INTO

                fieldvalue.

    CONDENSE    fieldvalue NO-GAPS. 

    ASSIGN COMPONENT  wa_flname

        OF STRUCTURE <fs_dyntable> TO <fs_fldval>.

    <fs_fldval> =  fieldvalue. 

  ENDDO. 

* Append to the dynamic internal table

  APPEND <fs_dyntable> TO <t_dyntable>.

 Displaying dynamic internal table using Grid. 

DATA: wa_cat LIKE LINE OF fs_fldcat. 

  DO p_cols TIMES.

    CLEAR wa_cat.

    MOVE sy-index TO wa_colno.

    CONCATENATE 'COL'

                wa_colno

           INTO wa_flname. 

    wa_cat-fieldname = wa_flname.

    wa_cat-seltext_s = wa_flname.

    wa_cat-outputlen = '10'.

    APPEND wa_cat TO fs_fldcat.

  ENDDO. 

* Call ABAP List Viewer (ALV)

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      it_fieldcat = fs_fldcat

    TABLES

      t_outtab    = <t_dyntable>.

分享到:
评论

相关推荐

    ABAP动态内表使用的例子

    ### ABAP动态内表使用的例子 #### 一、引言 在ABAP编程语言中,动态内表(Dynamic Internal Tables)是一种非常灵活的数据结构,它允许程序员在运行时定义和操作内表。与静态内表相比,动态内表提供了更多的灵活性...

    SAP ABAP动态内表构建与例子

    在SAP ABAP编程中,动态内表是一种非常重要的数据结构,它允许程序根据运行时的需求灵活地处理数据。动态内表不同于静态内表,后者在编写代码时就已经定义了结构,而动态内表的结构是在程序运行时通过变量或表达式...

    ABAP动态内表的收集

    在SAP ABAP编程中,动态内表的创建是实现灵活数据处理的重要手段,尤其是在处理大量数据或涉及多个系统表的场景下。本篇将详细解释如何动态地创建和使用内表,以及在进行动态更新时需要注意的关键点。 首先,让我们...

    SAP ABAP动态内表总结

    field-symbols: &lt;dyn_table&gt; type standard table, ” 内表结构 , ” 表头 &lt;dyn_field&gt;. ” 项 data: dy_table type ref to data, dy_line type ref to data, ” 行 xfc type lvc_s_fcat, ” 列结构 ifc ...

    ABAP 动态内表ABAP 动态内表

    ABAP 动态内表ABAP 动态内表

    sap_ABAP-动态内表

    SAP ABAP 动态内表详解 SAP ABAP 中的动态内表是一种特殊的内表结构,它可以根据实际情况动态地生成和赋值。本文将详细介绍动态内表的创建、赋值和读取显示。 动态内表的创建 动态内表的创建主要分为两步:首先...

    ABAP动态开发示例

    本示例专注于ABAP的动态开发,特别关注如何利用动态内表处理不同结构的透明表。透明表是ABAP数据模型中的一个重要组成部分,它们与数据库表直接对应,允许直接访问和修改数据库中的数据。 在描述中提到的示例中,30...

    SAP数据表大全ABAP数据表大全

    本资料集“SAP数据表大全ABAP数据表大全”显然提供了关于ABAP数据表的详尽资源,对理解SAP系统的数据结构和数据库操作具有重要意义。 1. **ABAP数据表的类型**: - 透明表:这是最常见的一种数据表类型,数据直接...

    ABAP SQL 语句 动态 操作

    程序中定义了`tab`这个内表,用于存储从数据库中获取的数据。`mandt`, `matnr` 和 `maktx` 分别对应于物料主数据中的客户代码、物料号和物料文本字段。使用`IMPORT`语句可以从内存中导入数据到内表。 3. **屏幕和...

    SAP ABAP 动态语句详解

    静态 ASSIGN 具有偏移量说明的静态 ASSIGN 动态 ASSIGN 表工作区的动态分配。静态 ASSIGN 如果运行之前知道想要分配给字段符号的数据对象的名称,则可以如下使用 ASSIGN 语句: 语法:ASSIGN &lt;f&gt; TO 分配之后,...

    ABAP动态生成经典应用之Dynamic+SQL+Excute+程序

    本文将深入探讨如何利用ABAP动态生成SQL Execute程序,以及其背后的开发技术和注意事项。 首先,我们要明白动态SQL生成的基本原理。在ABAP中,可以使用DATA声明和CONCATENATE函数来构建SQL字符串。例如,如果有一个...

    sap abap找表的18种方法

    在 SAP ABAP 开发中,查找和操作数据库表是日常任务的重要组成部分。下面将详细介绍标题“sap abap找表的18种方法”所涵盖的知识点,这些方法可以帮助开发人员高效地进行数据检索和处理。 1. **SELECT语句**:最...

    abap 屏幕表控件实例

    ABAP 屏幕表控件实例 ABAP 屏幕表控件实例是指在 SAP ABAP 环境中创建的用于展示和操作表格数据的控件实例。该实例使用 TABLE_CONTROL 控件来创建两个结构相同的表控件,用于展示 ZTEST 表的数据,并提供选择、添加...

    SAP ABAP SQL查询分析器(ABAP动态SQL执行)ZSQLEXPLORER

    这个是国外人使用ABAP写的一个类似一SQL Server的查询分析器,它能够直接运行ABAP的OPEN SQL,由于SE11或者是SE16都只能对一表进行查询,但很多的时候我们需要对多个表进行联合查询,这时就可以发挥很大作用了,希望...

    SAP ABAP 通用接口日志&amp;restful 动态调用FM

    在SAP ABAP环境中,通用接口日志和RESTful动态调用FM是两个重要的概念,它们在企业级应用开发中发挥着关键作用。本文将详细阐述这两个知识点,并结合RESTful服务,探讨它们如何协同工作。 首先,让我们了解SAP ABAP...

    ABAP基础:行和内表

    例如,`OCCURS 0`表示内表在声明时没有行,但在程序运行过程中可以动态增加行数。 在实际编程中,内表常常用于数据处理,因为它们提供了一种高效的方式来存储和操作大量数据。例如,内表可以用于筛选、排序、合并...

    ABAP select 语句

    本文将深入探讨ABAP中的SELECT语句,特别是涉及到表连接的部分。 1. **内联接(INNER JOIN)** 内联接是SELECT语句中用于从多个表中获取数据的常见方式,它返回两个表中满足特定条件的匹配行。语法如下: ```sql...

    ABAP调用函数自动填充模式

    在SAP ABAP编程环境中,开发人员经常需要调用各种函数模块来实现特定的功能。"ABAP调用函数自动填充模式"是一种提高开发效率的工具,它允许在编写代码时快速填充函数调用的参数,并自动声明对应的变量。这个功能在...

Global site tag (gtag.js) - Google Analytics