ALV 添加自定义按钮 (REUSE_ALV_GRID_DISPLAY 一)

1、目的:SAP ABAP ALV控件中添加一个按钮。

 2、ALV控件中添加一个自定义的按钮,使用的ALV控件是:REUSE_ALV_GRID_DISPLAY

按下图去标准代码 SLVC_FULLSCREEN 中拷贝一个“GUI状态”过来,改一个自己的名字100(注意这个名字,后面代码中也要写),把它激活。

3、加一个自己的按钮,再把它激活一次:

 4、ALV的代码如下:



FORM FRM_DISPLAY_ALV .

  DATA: LT_FIELDCAT        TYPE SLIS_T_FIELDCAT_ALV ,
        LS_FIELDCAT        TYPE SLIS_FIELDCAT_ALV ,

        WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
        WS_LAYOUT          TYPE SLIS_LAYOUT_ALV,
        WS_SORTFIELDS_TAB  TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
        WS_EVENTS          TYPE SLIS_T_EVENT.
  DATA: lv_pos TYPE I VALUE 0.
  DATA: TITLE TYPE LVC_TITLE.
  DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.


  DEFINE macro_fieldcat.
              lv_pos = lv_pos + 1.
              ls_fieldcat-col_pos       =  lv_pos.
              ls_fieldcat-tabname       = 'GT_BASIC'.
              ls_fieldcat-fieldname     = &1.
              ls_fieldcat-seltext_l     = &2.
              ls_fieldcat-inttype       = &3.
              ls_fieldcat-intlen        = &4.
              append ls_fieldcat to lt_fieldcat .
              clear ls_fieldcat.
  END-OF-DEFINITION.

  macro_fieldcat:

        'Z_REC_NO' '唯一的全局标识符 ' '' '',
        'Z_REC_DATE' '创建日期' '' '',
        'Z_REC_TIME' '创建时间' '' '',
        'Z_REC_USER' '创建人 ' '' '',
        'LIFNR' '供应商编号 ' '' '',
        'KTOKK' '账户组' '' '',
        'NAME1' '供应商名称1' '' '',
        'BU_SORT1' '搜索词1' '' '',
        'BU_SORT2' '搜索词2' '' '',
        'STREET' '街道' '' '',
        'HOUSE_NUM1' '门牌号 ' '' '',
        'POST_CODE1' '邮政编码' '' '',
        'COUNTRY' '国家' '' '',
        'REGION' '地区' '' '',
        'CITY1' '城市' '' '',
        'LANGU' '语言' '' '',
        'VERKF' '联系人 ' '' '',
        'TEL_NUMBER' '电话' '' '',
        'FAX_NUMBER' '传真' '' '',
        'SMTP_ADDR' '电子邮箱' '' '',
        'TAXTYPE' '税号类别' '' '',
        'TAXNUM' '税号' '' '',
        'GROUP_FEATURE' '专业类别' '' '',
        'TYPE' '处理结果(S:成功,E:失败,X:不处理)' '' '',
        'MESSAGE' '消息文本' '' '',
        'MDATE' '处理日期' '' '',
        'MTIME' '处理时间' '' '',
        'MUSER' '处理人' '' ''.

  WS_LAYOUT-ZEBRA             = 'X'.
  WS_LAYOUT-GET_SELINFOS      = 'X'.
  WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WS_LAYOUT-DETAIL_POPUP      = 'X'.

*******排序
*  WS_SORTFIELDS_TAB-FIELDNAME = 'ERDAT'.
*  WS_SORTFIELDS_TAB-UP = 'X'.
*  APPEND WS_SORTFIELDS_TAB.
*  CLEAR WS_SORTFIELDS_TAB.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM        = SY-REPID
      I_CALLBACK_PF_STATUS_SET  = 'ALV_STATUS_SET'
      I_CALLBACK_USER_COMMAND   = 'FRM_USER_COMMAND'
      IS_LAYOUT               = WS_LAYOUT
      IT_FIELDCAT             = LT_FIELDCAT
      IT_SPECIAL_GROUPS       = WS_FIELDGROUPS_TAB[]
      IT_SORT                 = WS_SORTFIELDS_TAB[]
      IT_EVENTS               = WS_EVENTS[]
      I_GRID_TITLE            = TITLE
      I_DEFAULT               = 'X'
      I_SAVE                  = 'A'
    TABLES
      T_OUTTAB                = GT_BASIC
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.

ENDFORM.



 FORM ALV_STATUS_SET USING PT_EXTAB TYPE SLIS_T_EXTAB.
    CLEAR: PT_EXTAB[].
    SET PF-STATUS '100'.
  ENDFORM.



FORM FRM_USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM  RS_SELFIELD TYPE SLIS_SELFIELD.
  CASE R_UCOMM.
    WHEN '&GO'.
        LEAVE PROGRAM.

    WHEN OTHERS.
  ENDCASE.
ENDFORM.                   

注意:

1、I_CALLBACK_PROGRAM = SY-REPID 参数 一定要存在,博主就是把它搞掉了,一直显示不出这个按钮来。

2、GUI的名称是100,一定要在这里  SET PF-STATUS '100'. 同名。

3、 I_CALLBACK_PF_STATUS_SET  = 'ALV_STATUS_SET' 这里在设置自己的GUI。

4、 I_CALLBACK_USER_COMMAND   = 'FRM_USER_COMMAND' 这里指定自己按钮响应的功能代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值