sap Status状态栏设计
来源:互联网 发布:中讯软件集团 编辑:程序博客网 时间:2024/06/16 03:08
(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
然后写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
阅读全文
1 0
- sap Status状态栏设计
- sap Status状态栏设计生成
- IOS7 status 状态栏隐藏
- sap 状态栏添加竖线
- android-status bar :状态栏通知
- IOS 操纵状态栏(status bar)
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- IOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- iOS7隐藏状态栏 status Bar
- IOS-隐藏状态栏 status bar
- Android透明状态栏status bar
- FireFox 如何用Javascript 修改状态栏status
- 信号屏蔽pending
- 手把手教你用Vue2+webpack+node开发一个H5 app
- 插入排序(直接插入排序,希尔排序)
- 文件上传下载
- CentOS6图形化安装
- sap Status状态栏设计
- Liunx16.04安装Apache-tomcat
- unity3d优化总结
- numpy、xlrd和xlwt库的安装(windows平台)
- Kotlin 为何能成为 Android 官方支持开发语言及Kotlin开发Android应用初体验
- 将DataTable转换为Json
- 软件性能测试面试题二
- 笔试题小练1
- 使用phpexcel库导出excel,出现无法访问此网站