ABAP如何在选择屏幕上定义按钮
当选择数据 库表数据 时,选中行,将该行能够保存到自定义的表中。
当选中删除按钮时,选中该 行,从自定义表中删除。
应该如何实现????在ALV的STATUS里定义还是在选择屏幕里? 展开
普通的按钮是在GUI STATUS里完成的 要去SE80找到程序创建新的GUI进行创建,比如设置GUI名为‘0010’。创建如图:
设置GUI按钮如图:
你可以在项目1-7里面填写要设置的按钮代码,在图中EXTRACT的位置填写描述,按照你的要求是:显示自定义数据,删除自定义数据 ,显示 数据库表数据;在上图分别填写DISPLAY1,DELE1和DISPLAY2,保存后传输。具体的调用有两种形式,楼主你问的是ALV的调用,但是这里我两种都列出来供参考。
1.进行普通调用的时候(具体怎么调用下面详细说明),代码如下:
END-OF-SELECTION.
SET PF-STATUS ‘0010’
成功的话屏幕上会有三个按钮,分别显示DISPLAY1,DELETE1和DISPLAY,你可以在AT USER-COMMAND 里面使用 以下语句进行功能定义:
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'DISPLAY1'.
"执行显示自定义数据的代码
WHEN 'DELETE1'.
"执行删除自定义数据的代码
WHEN 'DISPLAY2'.
"执行显示数据库表数据的的代码
ENDCASE.
2.与普通调用不同,ALV要建立FORM动态调用,如下:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' "设定使用的GUI STATUS
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "用户触发命令定义
I_STRUCTURE_NAME = 'MAKT'
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
上述代码关于GUI STATUS的说明如下:
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
这里的SET_PF_STATUS就是需要你动态建立的FORM名,FORM如下:
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0010'. "0010为创建了三个定义按钮的GUI STATUS
ENDFORM. "Set_pf_status
关于按钮触发的定义:
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
其动态调用的FORM如下:
FORM user_command USING p_ucomm TYPE sy-ucomm
p_rs_selfield TYPE slis_selfield .
CASE SY-UCOMM.
WHEN 'DISPLAY1'.
"执行显示自定义数据的代码
WHEN 'DELETE1'.
"执行删除自定义数据的代码
WHEN 'DISPLAY2'.
"执行显示数据库表数据的的代码
ENDCASE.
ENDFORM
以上大致描述了GUI STATUS的创建和两种调用方法,详细的请见参考资料。
参考资料:
http://blog.sina.com.cn/s/blog_90c6985b01011fyx.html
http://blog.csdn.net/gloria_64/article/details/2030418
http://blog.sina.com.cn/s/blog_6632b9a90100ujrk.html