分享

alv状态栏创建及显示

 AK0457 2018-03-08

1,先把alv框架定出来
DATA: I_QMEL LIKE MAKT OCCURS 0.
DATA V_REPID TYPE REPID.
SELECT * FROM MAKT INTO TABLE I_QMEL.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID            当前程序名
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'     触发事件调用子程序
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'      鼠标事件调用子程序

I_STRUCTURE_NAME = 'MAKT'             输入结构名
TABLES
T_OUTTAB = I_QMEL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
然后可以通过修改gui_status删除按扭或着增加按扭

2,接下来就是设定上面标红两个子程序
(1). 用TCODE:se41,se80,se90(Programming Library-->Programming SubObjects--> Gui Status.)等都可以,拷贝一个标准的GUI status( 拷贝程序SAPLKKBL中的'STANDARD' GUI status)到你的程序.

*&-------------------------------------------------------------------
*&      Form  set_pf_status,事件触发
*&-------------------------------------------------------------------
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'ALV_PF_STATUS'.
ENDFORM"Set_pf_status

FORM的作用是在标准的ALV工具栏上添加自定义的按钮

该名称必须和FUNCTION 参数I_CALLBACK_PF_STATUS_SET  'SET_PF_STATUS'对应起来,FORM的名称和变量名称要一样.
GUI STATUS 'ALV_PF_STATUS'是自己定义的,因为自定义后会把标准的ALV工具栏覆盖,所以还要把标准工具栏复制过来.

方法如下:


(2)拷贝全功能工具栏,然后具体增加删减按键可通过se80里自定义工具栏名称进入修改

T-CODE SE90  Program Library-- GUI Status

program name:SAPLKKBL GUI Status:STANDARD_FULLSCREEN 标准的ALV工具栏名称,F8运行,选择菜单栏GUI Status---COPY,最后输入你的程序名以及你自定义的GUI Status,此例即为ALV_PF_STATUS,再添加按钮.

範例:


*&-------------------------------------------------------------------
*&      Form  ALV_USER_COMMAND
*&-------------------------------------------------------------------
     -->R_UCOMM      text
     -->RS_SELFIELD  text
*----------------------------------------------------------------------*
form ALV_USER_COMMAND using r_ucomm like sy-ucomm
                  rs_selfield type slis_selfield. "
响应ALV点击自定义按钮之后的事件
  case r_ucomm.
    when 'EXIT2'"
set pf-status '9100'.的屏幕状态里面自定义的按钮名称
      LEAVE TO SCREEN 0.

 WHEN '&DATA_SAVE'.       "修改屏幕字段物料描述MAKTX,此时的&DATA_SAVE是标准GUI的参数,I_CALLBACK_PF_STATUS_SET 不要进行设置
      LOOP AT IT_MATNR.
        READ TABLE IT_MATNR_OLD ASSIGNING <MATNR> 

WITH KEY MATNR IT_MATNR-MATNR.
        CHECK  IT_MATNR-MAKTX <> <matnr>-MAKTX.
        UPDATE MAKT SET MAKTX IT_MATNR-MAKTX WHERE MATNR IT_MATNR-MATNR
                      AND SPRAS 'M'.
     ENDLOOP.
    WHEN '&IC1'.
"表示双击
      CHECK rs_selfield-tabindex 0.
      READ TABLE IT_MATNR INDEX rs_selfield-tabindex.
      SET PARAMETER ID 'MAT' FIELD IT_MATNR-MATNR.
      CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
  endcase.
rs_selfield-fieldname
表示双击的字段名,有时候有用.
endform                   "ALV_USER_COMMAND

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多