DIALOG开发中的ALV

第一步:alv需要的内表

 TYPES: BEGIN OF ty_alv,
                 vbeln TYPE vbeln,
                 posnr TYPE posnr,
                 matnr TYPE matnr,
                 kwmeng TYPE kwmeng,
                 meins  TYPE meins,
                 box    TYPE c,
             END OF ty_alv.

DATA:  it_alv TYPE STANDARD TABLE OF ty_alv,"定义内表
            wa_alv TYPE ty_alv.                                     "定义与内表结构相同的工作区

第二步:定义alv框架变量

DATA: i_fieldcat_alv TYPE STANDARD TABLE OF lvc_s_fcat, “定义内表存放alv field 的信息
           w_fieldcat_alv TYPE lvc_s_fcat.                                       "定义工作区

DATA: grid TYPE REF TO cl_gui_alv_grid,
           g_custom_container TYPE REF TO cl_gui_custom_container,
           g_container TYPE scrfname VALUE 'ABC'.

 

第三步:从数据库表中取出所需的数据放入内表 it_alv 

为了提高程序可读性,创建form get_data 

FORM get_data .
  SELECT
    vbeln
    posnr
    matnr
    kwmeng
    meins
    INTO TABLE it_alv FROM vbap WHERE vbeln IN s_vbeln.
ENDFORM.                    

第四步:创建alv架构,也就是给alv添加与内表相应的字段以及字段的描述

FORM fieldcat_build .
  w_fieldcat_alv-fieldname = 'VBELN'.  ”这里我们需要注意 w_fieldcat_alv-fieldname = 'VBELN'.必须是大写的,小写alv是不会显示数据的。
  w_fieldcat_alv-ref_table = 'VBAP'.
  w_fieldcat_alv-scrtext_s = 'Sale Order No'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

  w_fieldcat_alv-fieldname = 'POSNR'.
  w_fieldcat_alv-ref_table = 'VBAP'.
  w_fieldcat_alv-scrtext_s = 'Item'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

  w_fieldcat_alv-fieldname = 'MATNR'.
  w_fieldcat_alv-ref_table = 'VBAP'.
  w_fieldcat_alv-scrtext_s = 'Material'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

  w_fieldcat_alv-fieldname = 'KWMENG'.
  w_fieldcat_alv-ref_table = 'VBAP'.
  w_fieldcat_alv-scrtext_s = 'Quantity'.
  w_fieldcat_alv-edit = 'X'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

  w_fieldcat_alv-fieldname = 'MEINS'.
  w_fieldcat_alv-ref_table = 'VBAP'.
  w_fieldcat_alv-scrtext_s = 'Unit'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

  w_fieldcat_alv-scrtext_s = 'CheckBox'.
  w_fieldcat_alv-checkbox = 'X'.
  w_fieldcat_alv-edit = 'X'.
  APPEND w_fieldcat_alv TO i_fieldcat_alv.
  CLEAR w_fieldcat_alv.

ENDFORM.   

第五步:调用form get_data  和 FORM fieldcat_build .(点击screen 9001里的某个按钮call screen 9002 并在9002中显示出alv)

MODULE user_command_9001 INPUT.
  save_code = ok_code.
  CLEAR ok_code.
  CASE save_code.
      WHEN 'GO'.
      PERFORM get_data.
      PERFORM fieldcat_build.
      CALL SCREEN 9002.
    WHEN OTHERS.
  ENDCASE.

ENDMODULE.                 

第六步:创建放alv的容器custom control

比如在screen 9002里创建custom control 在界面的左边找到custom control 拖过来。

NAME:ABC这里name 很重要,要和我们之前定义的grid 关联。

第七步:创建MODULE ALV_SHOW

MODULE ALV_SHOW 语句应该写在screen 9002 的flow logic 里面的 PBO 下面。

如下代码

PROCESS BEFORE OUTPUT.
 MODULE STATUS_9002.
   MODULE ALV_SHOW.

然后双击ALV_SHOW 在main program 中创建 MODULE alv_show OUTPUT.

MODULE alv_show OUTPUT.
  IF g_custom_container IS INITIAL.

    CREATE OBJECT g_custom_container
      EXPORTING
        container_name = g_container.

    CREATE OBJECT grid
      EXPORTING
        i_parent = g_custom_container.

    CALL METHOD grid->set_table_for_first_display
      CHANGING
        it_outtab       = it_alv
        it_fieldcatalog = i_fieldcat_alv.
  ELSE.
    CALL METHOD grid->refresh_table_display.
  ENDIF.
ENDMODULE. 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值