WDA中动态ALV的实现
Posted duanqingxia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WDA中动态ALV的实现相关的知识,希望对你有一定的参考价值。
在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
以上是关于WDA中动态ALV的实现的主要内容,如果未能解决你的问题,请参考以下文章
WDA学习(12):Using an ALV Table with Dynamic Context Nodes
WDA学习(13):Use ALV as Hierarchy