sap Status状态栏设计

xiaoxiao2021-02-28  79

(1). 用TCODE:se41,se80,se90(Programming Library-->Programming SubObjects--> Gui Status.)等都可以,拷贝一个标准的GUI status( 拷贝程序SAPLKKBL中的'STANDARD' GUI status)到你的程序. 然后写PBO写代码: 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删除按扭或着增加按扭 在 'REUSE_ALV_GRID_DISPLAY' 中有 I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' 。这里的I_CALLBACK_PF_STATUS_SET 是否是类似语句:SET PF_STATUS ‘STATUS1’ ? 如果是的话,那么自己创建一个用户STATUS1,不就可以替代那个标准的状态栏了吗? (2).通过代码写,要自己建类和方法.可以通过示例代码学习.BCALV_GRID_08. 然后要在pbo里调用下再激活下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工具栏覆盖,所以还要把标准工具栏复制过来. 方法如下: 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
转载请注明原文地址: https://www.6miu.com/read-63184.html

最新回复(0)