statu 设置

DATA: itab TYPE TABLE OF sy-ucomm. 
APPEND 'DELE' TO itab. 
APPEND 'PICK' TO itab. 
SET PF-STATUS 'STA3' EXCLUDING itab.  

就是把screen status设置成standard, 并排除rt_extab里面的functon code的按钮。

DATA: BEGIN OF ex_tab OCCURS 0,
fcode LIKE sy-ucomm,
END OF ex_tab.
ex_tab-fcode = 'DISP'. APPEND ex_tab.
ex_tab-fcode = 'DELE'. APPEND ex_tab.
ex_tab-fcode = 'SAVE'. APPEND ex_tab.
SET PF-STATUS 'MENU100' EXCLUDING ex_tab.
很灵活,再增加一点代码可以根据用户权限、当前t-code等各种条件动态设置工具栏

方法很多,不知道要哪种.
(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就可以了.

原文地址:https://www.cnblogs.com/rainysblog/p/3988085.html