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-5-VIEW视图切换

WDA学习(13):Use ALV as Hierarchy

WDA学习(13):Use ALV as Hierarchy

ABAP ALV 动态显示列

动态内表用ALV输出时能不能再定义每个FIELD的颜色呢?