- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,???????
您可能关注的文档
最近下载
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_18.pptx
- 2024年6月英语四级真题(全3套).pdf
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_17.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_16.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_15.pptx
- 医院诊所药品医疗器械的效期管理制度.doc
- 工业机器人应用基础 课件 模块四 工业机器人的典型应用实训.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_14.pptx
- 小学六年级数学百分数知识点总结.docx VIP
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_13.pptx
文档评论(0)