以OO方式实现一个屏幕显示多个ALV

参考说明

内容参考自CSDN博客:https://blog.csdn.net/ot512csdn/article/details/50394424.

效果展示

在这里插入图片描述

在这里插入图片描述

需求说明

以MSEG表为例,设计一个表头,一个表体;表头包含该工厂下的所有物料,通过点击每个物料,对应显示出表体内该物料的所有凭证行。

代码说明

ABAP中对于事件的实现原理:

  1. 定义事件方法
  2. 指定事件的执行方法代码
  3. 事件变量实例化
  4. 把事件指定到ALV控件中(注册事件)

用OO方式实现一个屏幕2个ALV展示的原理:
  1. 创建屏幕0100
  2. 放入2个自定义控件,取名CON1,CON2
  3. 通过点击第一个ALV控件(只能单选),带出数据到第2个ALV控件里

在这里插入图片描述
在这里插入图片描述


屏幕会带出3个模块,这些模块都放在一个源程序里

PROCESS BEFORE OUTPUT.
 MODULE STATUS_0100.
 MODULE INIT_CON.
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0100.

STATUS_0100 模块:用于设置状态
USER_COMMAND_0100 模块,用于触发用户操作

INIT_CON 模块:初始化屏幕和ALV控件

该模块中,我们可以看到OO ALV的使用方法,即CREATE OBJECT CON1_REF连接到CON1屏幕控件上,CREATE OBJECT G_GRID1再创建ALV对象,然后我们给ALV对象注册几个事件,

  1. HANDLE_TOOLBAR这个事件用于给ALV加自定义的工具条按钮。
  2. HANDLE_CLICK用于给ALV点击其中一行后的处理代码段。
  3. HANDLE_COMMAND事件用于接收用户按了自定义按钮后,触发的代码段。
MODULE INIT_CON OUTPUT.


  "---------第一个ALV控件-----------------
  IF CON1_REF IS INITIAL.

    DATA GS_LAYOUT1 TYPE LVC_S_LAYO.

    GS_LAYOUT1-CWIDTH_OPT = 'X'.
    GS_LAYOUT1-GRID_TITLE = '表头'.
    GS_LAYOUT1-SEL_MODE = 'B'.
    GS_LAYOUT1-ZEBRA = 'X'.


    DATA GT_FIELDCAT TYPE LVC_T_FCAT.
    DATA GS_FIELDCAT TYPE LVC_S_FCAT.

    GS_FIELDCAT-COL_POS   = 1. GS_FIELDCAT-FIELDNAME = 'BOX'.          GS_FIELDCAT-CHECKBOX = 'X'.    GS_FIELDCAT-HOTSPOT = 'X'.
    APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.
    GS_FIELDCAT-COL_POS   = 2. GS_FIELDCAT-FIELDNAME = 'WERKS'.        GS_FIELDCAT-COLTEXT = '工厂'.
    APPEND GS_FIELDCAT TO GT_FIELDCAT. CLEAR GS_FIELDCAT.
    GS_FIELDCAT-COL_POS   = 3. GS_FIELDCAT-FIELDNAME = 'MATNR'.        GS_FIELDCAT-COLTEXT = '物料编码'. GS_FIELDCAT-NO_ZERO = 'X' .
    APPEND GS_FIELDCAT TO GT_FIELDCAT.CLEAR GS_FIELDCAT.



    CREATE OBJECT CON1_REF
      EXPORTING
        CONTAINER_NAME = 'CON1'.

    CREATE OBJECT G_GRID1
      EXPORTING
        I_PARENT = CON1_REF.


    "4 注册事件句柄,图标的还必须加在这里,不然不行
    CREATE OBJ
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值