标签:界面 name 相对 sel 比较 数据 out one select
在SAP GUI中实现动态ALV时,一般采用先动态生成fieldcat,然后基于这个动态的fieldcat生成动态内表,以field-simbols操作内表,最后在
REUSE_ALV_GRID_DISPLAY_LVC函数中直接传入动态内表和fieldcat即可。
WDA(webdynpro for abap)中实现动态ALV的原理和GUI中类似,不过会比GUI里面相对麻烦一点,阅读本文章需要有WDA开发基础,如ALV组件使用、
上下文概念,数据绑定等。
STEP1:在SE80中新建一个WDA,在组件中添加ALV组件(图片中引用了两个ALV组件,因为需要在一个视图两个地方展示ALV),如有需要使用选择界面,则需引入SELECT_OPTIONS.
STEP2:在控制器(COMPONENTCONTROLLER)中定义全局动态内表,动态结构
STEP3:在视图中引入ALV组件的组件用途,在Layout中新建一个viewcontainer,在窗口中该viewcontainer中嵌入ALV组件用途(此处不赘述)
STEP4:编写代码生成动态结构和动态内表,此处依赖于具体的业务功能,本人将数据生成逻辑写在独立的FUNCTION中而非WDA的框架代码中(WDA中编辑器比较小),此处简单介绍编写逻辑
(1)生成动态fieldcat(或叫component)
name属性为字段名,type属性可根据传入的数据元素名称动态获取(数据元素是SE11中存在的),ZWDA_S_FIELD_INFO主要是控制前端动态ALV中列的显示描述,是否可编辑,是否为复选框,是否为超链接,是否为下拉框等(此处可根据需要设定很多属性)。
View Code
(2)生成动态内表并填充数据(此处和GUI中逻辑无异),FUNCTION中无法直接传出一个standard table(语法能通过,但是传出会dump,此处还没搞懂原因,因此以一个data类型的格式传出数据)
View Code
STEP5:在WDA中创建一个动态ALV节点(上下文)并绑定数据,在下述代码之后则控制AVL即可
View Code
控制ALV
STEP6:如果动态ALV数据做了修改需要保存到数据库
提取ALV网格数据
保存到自定义表
刷新ALV
标签:界面 name 相对 sel 比较 数据 out one select
原文地址:https://www.cnblogs.com/duanqingxia/p/10810100.html