ABAP ALV模板

自用模板,可能有些问题。具体需要修改的地方可以看注释,没写注释的一般不用动。注释掉的语句也可以自己解注释测试一下。

*声明定义ALV所要用到的类型池,针对ALV的控制信息数据*
*ALV变量定义*
TYPE-POOLS: ABAP,
            OLE2,
            SLIS.
DATA: GS_LAYOUT TYPE LVC_S_LAYO, "SLIS_LAYOUT_ALV ALV布局控制
      GS_FCAT   TYPE LVC_S_FCAT,
      GT_FCAT   LIKE TABLE OF GS_FCAT.

*ALV字段设定*FRM_ALV_SET_FIELDS
FORM FRM_ALV_SET_FIELDS.
  DATA : LV_INDEX LIKE SY-INDEX.

  CLEAR : GS_FCAT,
          GT_FCAT,
          GS_LAYOUT.

 "GS_LAYOUT-CWIDTH_OPT = 'X'."启用列宽自动优化
 "GS_LAYOUT-BOX_FNAME = 'SEL'."通常用于配置 ALV 列表中的框架或边框的名称,'SEL' 是一个预定义的框架名称

*ALV字段处理 宏*
  DEFINE CATALOG.
*   lv_index = lv_index + 1.
*   gs_fcat-col_pos = lv_index.
    GS_FCAT-FIELDNAME = &1."在TYPE alv里面定义的字段名字
    GS_FCAT-FIX_COLUMN = &2."固定列
    GS_FCAT-REF_TABLE = &3.
    GS_FCAT-EDIT = &4."描述信息
    GS_FCAT-COLDDICTXT = 'L'.
    GS_FCAT-SCRTEXT_L = &5.
    GS_FCAT-REF_FIELD = &6.
    GS_FCAT-OUTPUTLEN = &7.
    GS_FCAT-EMPHASIZE = &8."列颜色
 "  gs_fcat-hotspot."热点   注释掉
    APPEND GS_FCAT TO GT_FCAT.
  END-OF-DEFINITION.
*根据需要显示的信息字段进行修改 改变编号 修改描述信息*
**              &1      &2      &3      &4         &5      &6      &7      &8      &9
  CATALOG:
   'STUID'      'X'     ''      ''     TEXT-C01    ''      ''      '',
   'STUNAME'    ''      ''      ''     TEXT-C02    ''      ''      '',
   'SCHNAME'    ''      ''      ''     TEXT-C07    ''      ''      '',
   'GENDER'     ''      ''      ''     TEXT-C03    ''      ''      '',
   'ZDATE'      ''      ''      ''     TEXT-C04    ''      ''      '',
   'ZPERIOD'    ''      ''      ''     TEXT-C05    ''      ''      '',
   'ZDES'       ''      ''      ''     TEXT-C06    ''      ''      ''.
ENDFORM."FRM_ALV_SET_FIELDS


*设置程序的用户状态*FRM_ALV_SET_STATUS
FORM FRM_ALV_SET_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
  DATA: LT_FCODE TYPE TABLE OF SY-UCOMM.
  APPEND '&RNT' TO LT_FCODE.
*此处需要双击PF_ALV,新建导入模板
  "双击PF_ALV新建导入模板 附加->调整模板 程序SAPLKKBL  状态STANDARD_FULLSCREEN
  SET PF-STATUS 'PF_ALV' EXCLUDING LT_FCODE."ALV的按钮
ENDFORM."FRM_ALV_SET_STATUS


*响应用户的操作*FRM_ALV_USER_COMMAND
FORM FRM_ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.

  DATA: G_GRID              TYPE REF TO CL_GUI_ALV_GRID,
        GL_VALID            TYPE C,
        LT_FILTERED_ENTRIES TYPE LVC_T_FIDX.
  CASE R_UCOMM.
    WHEN '&DATA_SAVE'."
      MESSAGE '功能开发中......' TYPE 'I'.
    WHEN '&IC1'."用户在表格上做了操作
    WHEN '&ZSHOW'."仅显示通过采购申请创建的订单
    WHEN '&ZPRNT'."打印采购订单
  ENDCASE.
ENDFORM."FRM_ALV_USER_COMMAND

*需要确定的是TYPE后面定义的名字是否和程序中的一致,对这里的内表名进行修改
FORM FRM_DISPLAY_ALV  USING  U_IT_ALV TYPE GVIA_T_ALV."引用传递,p_gt_alv 是要显示的内表的名字 "引用传递
  PERFORM FRM_ALV_SET_FIELDS."准备表头等数据
*调用ALV显示数据
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' "系统提供的函数帮助我们显示内表
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID "固定写法
*     i-default                = '' "固定写法
      I_CALLBACK_PF_STATUS_SET = 'FRM_ALV_SET_STATUS' "生成一些按钮 "生成一些按钮;3个PERFORM :FRM_ALV_SET_FIELDS、 FRM_ALV_SET_STATUS、FRM_ALV_USER_COMMAND,2个变量:GT_FCAT、GS_LAYOUT
      IT_FIELDCAT_LVC          = GT_FCAT "这个内表里存储着表头的一些信息 什么表、有几列
      IS_LAYOUT_LVC            = GS_LAYOUT "显示的格式
      I_CALLBACK_USER_COMMAND  = 'FRM_ALV_USER_COMMAND' "响应用户的按键
    TABLES
      T_OUTTAB                 = U_IT_ALV. "将此内表的数据,显示在最终界面上
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID
            TYPE SY-MSGTY
            NUMBER SY-MSGNO
            WITH SY-MSGV1
                SY-MSGV2
                SY-MSGV3
                SY-MSGV4.
  ENDIF.
ENDFORM.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值