第一范文网 - 专业文章范例文档资料分享平台

ABAP动态内表使用的例子 (3)

来源:用户分享 时间:2020-06-18 本文由柒夏 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

ENDLOOP.

ENDFORM. \

ABAP 动态内表构建 Dynamic internal table

要求根据用户输入的工资项(T512W-LGART)查找数据,并输出到ALV,要求是输出跟着输入变。由于工资项的配置信息可能会变,因此用于存储要显示的数据的内表就不能预先知道,因此不得不寻求动态内表的构建方法。

其实网上的例子也有不少,但是都缺少说明,折腾了一上午才弄明白一些,写出来与大家分享。 REPORT Z_DT2.

type-pools : abap. *以t512w为例,构建一个动态内表 tables: t512w.

*field-symbols是一个标志,你可以理解为一个指针,将来创建的内表就要通过它们来访问 field-symbols: [小于号]dyn_table> type standard table, [小于号]dyn_wa>, [小于号]dyn_field>.

* 这里定义了一个 dy_table 和一个 dy_line 类型是引用,但 to data 未能理解是什么意思,我觉得应该是说指向为空的意思 data: dy_table type ref to data, dy_line type ref to data, *用于存储即将构建的动态内表结构 ifc type lvc_t_fcat, xfc type lvc_s_fcat.

data: begin of t_lgart occurs 0, LGART like t512w-lgart,

end of t_lgart.

select-options: S_LGART FOR t512w-lgart.

start-of-selection.

*首先从数据库中把符合用户输入的LGART填入内表,将来构建的动态内表每一列就是LGART中的每一行。 select lgart into t_lgart-lgart from t512w where lgart in s_lgart and MOLGA = '28'. append t_lgart. endselect.

*循环读取内表t_lgart,对于每行构建内表 loop at t_lgart.

*这里偷了个懒,因为工资项中会有/103这样的数据,而/是不能用左列明的,大家可以自己写一个替换逻辑,把/替换成_之类的字符。 check t_lgart-lgart+0(1) ne '/'. *列名就用lgart值

xfc-fieldname = t_lgart-lgart. xfc-datatype = 'C'. xfc-inttype = 'C'. xfc-intlen = 6. xfc-decimals = 0. append xfc to ifc. endloop.

*此处调用一个方法,这个方法用于构建动态内表,输入的就是要构建的结构,输出的就是一个dy_table,之前定义过,但是并不能直接访问。 call method cl_alv_table_create=>create_dynamic_table EXPORTING

it_fieldcatalog = ifc IMPORTING

ep_table = dy_table.

*设定指向 dy_table assign dy_table->* to .

*下面这句建立了一个类型的工作区Work area create data dy_line like line of . *同理设定指针

assign dy_line->* to .

于是便动态的建立了一个内表和一个工作区,由于此方法建立的内表没有header line,所以需要一个工作区。

下面是取数或者赋值的方法:

*此行中的xxxx1就是列名

ASSIGN COMPONENT xxxx1 OF STRUCTURE TO . *此行的作用就是给中的该列一个值 = xxxx2.

*用Append就可以把该行添加到表中了 APPEND TO .

ABAP-动态内表

2009-09-22 19:03:19| 分类: SAP开发 | 标签: |字号大中小 订阅

动态内表的创建和使用主要有以下几点:

1.动态内表的创建,首先要定义动态结构,然后再根据定义的动态结构利用系统一个标准的method:”cl_alv_table_create=>create_dynamic_table“生成动态内表。

2.动态内表的赋值,遍历动态结构,获取指定的字段,然后给指定的字段赋值。

3.动态内表的读取显示,与赋值相似,遍历动态结构,获取指定的字段,然后读取对应字段的值。 具体实现方法如下所示: 定义:

FIELD-SYMBOLS: TYPE STANDARD TABLE, TYPE ANY, TYPE ANY.

DATA: dy_table TYPE REF TO data, dy_line TYPE REF TO data, it_structure TYPE lvc_t_fcat, wa_structure TYPE lvc_s_fcat. 实现步骤:

1.PERFORM create_structure.\定义内表的结构 FORM create_structure. CLEAR it_structure. DATA:l_pos TYPE i. l_pos = 5.

wa_structure-fieldname = 'MANUFACTURER'.\第一列名

wa_structure-col_pos = 1. \表示第1列 --- wa_structure-ref_table = 'PLAF'. ”字段参照的内表名字 wa_structure-ref_field = 'FLIEF'. “字段参照的字段名字 APPEND wa_structure TO it_structure.

wa_structure-fieldname = 'NAME'. wa_structure-col_pos = 2. wa_structure-ref_table = 'lfa1'. wa_structure-ref_field = 'NAME1'. APPEND wa_structure TO it_structure.

wa_structure-fieldname = 'DESCRIPTION'. wa_structure-col_pos = 3. wa_structure-ref_table = 'MAKT'. wa_structure-ref_field = 'MAKTX'. APPEND wa_structure TO it_structure. wa_structure-fieldname = 'MM#'. wa_structure-col_pos = 4. wa_structure-ref_table = 'MAKT'. wa_structure-ref_field = 'MATNR'.

\第二 列名

\表示第2列 --- \第三列名

\表示第3列 ---

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技ABAP动态内表使用的例子 (3)全文阅读和word下载服务。

ABAP动态内表使用的例子 (3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1083740.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top