ABAP动态内表.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ABAP动态内表

ABAP 动态内表构建 Dynamic internal table 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) /. *列名就用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. *设定dyn_table指向 dy_table assign dy_table-* to dyn_table. *下面这句建立了一个dyn_table类型的工作区Work area create data dy_line like line of dyn_table. *同理设定指针 assign dy_line-* to dyn_wa. 于是便动态的建立了一个内表和一个工作区,由于此方法建立的内表没有header line,所以需要一个工作区。 下面是取数或者赋值的方法:*此行中的xxxx1就是列名 ASSIGN COMPONENT xxxx1 OF STRUCTURE dyn_wa TO dyn_field. *此行的作用就是给dyn_wa中的该列一个值 dyn_field = xxxx2. *用Append就可以把该行添加到表中了 APPEND dyn_wa TO dyn_table. 如上所述,即可以动态构建内表,这种方法主要用于表结构无法确定有几列,几有哪些列,尤其与信息配置有关的时候,就只能用这种方法,否则配置一变,程序就不能用了。 创建动态内表: 动态内表的结构的定义:动态内表表结构的定义必须使用表结构与?table?type:?lvc_t_fcat一样的内表.一般情况下,我们都内表的所有列定义成字符型. 根据表结构生成内表:系统提供了一个标准的method来产生动态表,使用方法如下: 动态内表的赋值: 获取指定的字段 给指定的字段赋值 读取动态内表的值: 获取指定的字段 读取指定的字段值 REPORT??zdyn_test. FIELD-SYMBOLS:?dyn_table?TYPE?STANDARD?TABLE, ???????

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档