最近在学习ABAP的屏幕实现,对比了按钮与页签的直观效果后,本人决定写一个关于如何实现页签的DEMO,代码量比较少,大家懂ABAP的一看便懂,好,下面直接上代码:
TABLES : ZFTPLOG,RLGRAP.
*----选择屏幕
TABLES:SSCRFIELDS.
*选择屏幕二
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN. "定义子屏幕100
"查询界面
SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-005.
PARAMETERS : P_ZUSER TYPE ZFTPLOG-ZUSER MODIF ID CC .
SELECT-OPTIONS: S_ID FOR ZFTPLOG-ID MODIF ID CC ,
S_FILE FOR ZFTPLOG-FILENAME MODIF ID CC,
S_REMARK FOR ZFTPLOG-REMARK MODIF ID CC.
SELECTION-SCREEN END OF BLOCK B5.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN. "定义子屏幕200
*数据导入界面
SELECTION-SCREEN BEGIN OF BLOCK B6 WITH FRAME TITLE TEXT-006.
PARAMETERS: P_FPATH1 TYPE RLGRAP-FILENAME MODIF ID DD.
SELECTION-SCREEN END OF BLOCK B6.
SELECTION-SCREEN END OF SCREEN 200. "定义子屏幕200
*定义一个TAB空间,取名为MYTAB,空间高度为15,共分为两个页签,BUTTON1,BUTTON2。
*两个页签的功能代码分别为PU1,PU2
SELECTION-SCREEN : BEGIN OF TABBED BLOCK MYTAB FOR 15 LINES,
TAB (20) BUTTON1 USER-COMMAND PU1,
TAB (20) BUTTON2 USER-COMMAND PU2,
END OF BLOCK MYTAB.
INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = '模板下载'. "工具栏按钮文本
*为TAB控件分配初始值
BUTTON1 = '新增数据'.
BUTTON2 = '删除数据'.
MYTAB-PROG = SY-REPID.
MYTAB-DYNNR = 100.
AT SELECTION-SCREEN.
*页签事件
CASE SY-UCOMM.
WHEN 'PU1'.
MYTAB-DYNNR = 100.
MYTAB-ACTIVETAB = BUTTON1.
WHEN 'PU2'.
MYTAB-DYNNR = 200.
MYTAB-ACTIVETAB = BUTTON2.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'BB'.
IF SCREEN-NAME = 'P_BUKRS' OR SCREEN-NAME = 'S_YMONAT'.
SCREEN-REQUIRED = '2'.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
实现效果图:
总结:
本代码主要实现了TAB页签,页签比按钮效果更加直观,由于项目上很多程序大多选择按钮的方式进行切换,按钮一旦多起来,给用户的体验感就会变差,为此,我将按钮转换成了这种TAB页签的方式。