此博客为原创博客,都是个人工作经历所得,转载请注明出处

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就可以了.

 

posted @ 2014-09-23 12:28  Rainystuday  阅读(404)  评论(0编辑  收藏  举报