惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
SecWiki News
SecWiki News
Project Zero
Project Zero
C
Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
A
Arctic Wolf
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
The Hacker News
The Hacker News
T
Tenable Blog
雷峰网
雷峰网
有赞技术团队
有赞技术团队
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threat Research - Cisco Blogs
T
Threatpost
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
SegmentFault 最新的问题
月光博客
月光博客
Spread Privacy
Spread Privacy
S
Secure Thoughts
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
T
The Exploit Database - CXSecurity.com
G
GRAHAM CLULEY
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
I
Intezer
博客园 - 【当耐特】
B
Blog RSS Feed
Attack and Defense Labs
Attack and Defense Labs
I
InfoQ
博客园 - 叶小钗
Cyberwarzone
Cyberwarzone
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
H
Help Net Security
C
CERT Recently Published Vulnerability Notes

博客园 - 老白先生

webpack4+vue2+axios+vue-router的多页+单页混合应用框架 用文本增强修改SAP标准屏幕中的字段名称 ABAP:ALV的 Header中添加HTML内容 BDC处理时用到结构--BDCDATA ABAP:Smartform生成PDF FI 相关table的说明 ABAP:FI常用BAPI ABAP 自动生成EXCEL文件并作简单格式处理 smartform中打印bseg-wrbtr(凭证货币金额)字段的问题 Complex LUW processing (internal/external Session) AT LINE-SELECTION SAP:建表时如果有QUAN、CURR类型的字段不能激活的问题 关于SAP LUW ABAP:关于隐式与显式的DB Commit ABAP笔记:BDC完整版例子 SAP:Authority-check 加入收藏夹功能(jQuery) 成功的秘密? ERP流程的一个生动的例子
ABAP 动态内表构建 Dynamic internal table
老白先生 · 2011-08-17 · via 博客园 - 老白先生

这两天做了一个这样的需求,其中要求根据用户输入的工资项(T512W-LGART)查找数据,并输出到ALV,要求是输出跟着输入变。由于工资项的配置信息可能会变,因此用于存储要显示的数据的内表就不能预先知道,因此不得不寻求动态内表的构建方法。
其实网上的例子也有不少,但是都缺少说明,折腾了一上午才弄明白一些,写出来与大家分享。
REPORT Z_DT2.
type-pools : abap.
*以t512w为例,构建一个动态内表
tables: t512w.
*field-symbols是一个标志,你可以理解为一个指针,将来创建的内表就要通过它们来访问
field-symbols: type standard table,
,
.
* 这里定义了一个 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.

*设定指向 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 .
如上所述,即可以动态构建内表,这种方法主要用于表结构无法确定有几列,几有哪些列,尤其与信息配置有关的时候,就只能用这种方法,否则配置一变,程序就不能用了。