一、选择屏幕
DATA gt_school TYPE STANDARD TABLE OF ztint_school_inf WITH DEFAULT KEY.
DATA gs_school LIKE LINE OF gt_school.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-m03.
SELECT-OPTIONS:s_user FOR ztint_school_inf-userid.
PARAMETERS:p_school LIKE ztint_school_inf-schoolcode.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-m01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (5) text-m02.
PARAMETERS:p_man RADIOBUTTON GROUP g1.
SELECTION-SCREEN POSITION 20."到屏幕20的位置
SELECTION-SCREEN COMMENT (5) text-m04.
PARAMETERS:p_woman RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN SKIP 1.
PARAMETERS p_dept AS CHECKBOX USER-COMMAND hide.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-m05 .
PARAMETERS p_sd RADIOBUTTON GROUP g2 MODIF ID m1.
PARAMETERS p_mm RADIOBUTTON GROUP g2 MODIF ID m1.
PARAMETERS:p_pp RADIOBUTTON GROUP g2 MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b3.
二、Report事件块
-
INITIALIZATION(初始化处理)
-
AT SELECTION-SCREEN OUTPUT(选择屏幕属性设置)
-
AT SELECTION-SCREEN(选择屏幕的输入,一般用来进行有效性检查)
-
START-OF-SELECTION(对 DATA 进行处理)
-
TOP-OF-PAGE.END-OF-SELECTION.使用
-
AT USER-COMMAND.
-
AT LINE-SELECTION.
- 事件块总览
•INITIALIAZATION设置初始值
INITIALIZATION.
p_dept = 'X'.
AT SELECTION-SCREEN OUTPUT PBO事件
在选择屏幕输出之前执行的事件,一般用来设置选择屏幕的控件属性
AT SELECTION-SCREEN OUTPUT."PBO事件
PERFORM modify_screen.
FORM modify_screen .
LOOP AT SCREEN.
IF p_dept EQ ''.
IF screen-group1 EQ 'M1'.
screen-invisible = '1'.
MODIFY SCREEN.
ENDIF.
ELSE.
ENDIF.
ENDLOOP.
ENDFORM.
如图,当部门复选框未勾选时,隐藏部门选择项
- SCREEN属性
NAME | 屏幕字段的名称 |
GROUP1 | 属于字段组1的字段 |
ACTIVE | 可见并准备输入的字段 |
REQUIRED | 字段输入是强制的,即该值为X是表示该字段必须输入 |
INPUT | 字段准备输入 |
OUTPUT | 字段仅用于显示 |
INTENSIFIED | 高亮显示字段 |
INVISIBLE | 禁用字段 |
LENGTH | 减少字段输出长度 |
DISPLAY_3D | 以三维框架显示字段 |
VALUE_HELP | 显示有值帮助的字段 |
•AT SELECTION-SCREEN PAI事件
在选择屏幕有输入之后执行的事件,一般用来进行有效性检查
AT SELECTION-SCREEN."pai事件
PERFORM selection_screen_pai.
FORM selection_screen_pai .
SELECT * INTO TABLE @DATA(ls_schoolinf) FROM ztint_school_inf WHERE userid IN @s_user.
IF sy-subrc NE 0.
MESSAGE '输入学号不存在!' TYPE 'E'.
ELSE.
MESSAGE '输入学号存在!' TYPE 'S'.
ENDIF.
ENDFORM.
如图当筛选框输入学号后检查输入学号是否存在
- START-OF-SELECTION
这个事件是报表程序选择屏幕事件和初始化事件完成后默认进行的事件。在程序中在第一个FORM-ENDFORM之前的语句并且没有声明相关事件的语句都会默认按照顺序插到Start-of-selection事件的开始位置. 另在使用逻辑数据库时,这个事件也是逻辑数据库获取数据开始的事件。
•END-OF-SELECTION
这个事件是报表程序选择完并且处理完数据后LIST输出的事件。同时这个事件也是逻辑数据库选择数据结束的标志。
•TOP-OF-PAGE
这个事件是在报表程序里输出自定义的表头用的,在新的一页刚开始遇到write语句的时候这个事件块就会执行一次,第一次执行:遇到程序中的第一个write语句时,跳转到TOP-OF-PAGE事件执行,执行完毕后返回执行write语句 隐藏默认表头,在REPORT程序第一行进行设置: REPORT program NO STANDARD PAGE HEADING .
TOP-OF-PAGE.
PERFORM build_topofpage.
FORM build_topofpage .
FORMAT COLOR 3 ON.
WRITE:/1(81) '学生信息表' CENTERED.
FORMAT COLOR 3 OFF.
WRITE:/1 sy-uline(82).
FORMAT COLOR 6 INVERSE ON.
WRITE:/1 sy-vline NO-GAP,(10)'学号' NO-GAP CENTERED,
sy-vline NO-GAP,(20) '姓名' NO-GAP CENTERED,
sy-vline NO-GAP,(10) '学校代码' NO-GAP CENTERED,
sy-vline NO-GAP,(20) '学校名称'NO-GAP CENTERED,
sy-vline NO-GAP,(5) '性别' NO-GAP CENTERED,
sy-vline NO-GAP,(10) '成绩' NO-GAP CENTERED,
sy-vline.
FORMAT COLOR 6 INVERSE OFF.
ENDFORM.
•AT LINE-SELECTION
双击表单中的某一行,可以执行跳转或再次输出表单等操作
at LINE-SELECTION."点击事件
PERFORM LINE_SELECTION.
FORM line_selection .
DATA gv_filed TYPE char30.
DATA gv_value TYPE char30.
GET CURSOR FIELD gv_filed VALUE gv_value.
CONDENSE gv_value NO-GAPS.
IF gv_filed = 'GS_SCHOOL-SCHOOLCODE'.
SELECT SINGLE * INTO @DATA(ls_schoolinf) FROM ztint_school_inf WHERE schoolcode = @gv_value.
IF sy-subrc EQ 0.
WRITE:/1 '学校代码:' ,ls_schoolinf-schoolcode,
/ '学校名称:' ,ls_schoolinf-schoolname .
ELSE.
MESSAGE '该学校基本信息未维护!' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
- AT USER-COMMAND
对自定义按钮增加功能,使用系统变量SY-UCOMM判断功能代码 SET PF-STATUS ‘0100’.–增加按钮,按钮以组的形式定义对自定义按钮增加功能,使用系统变量SY-UCOMM判断功能代码
SET PF-STATUS 'STATUS'.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'SORTUP'.
PERFORM sortup_data.
WHEN 'SORTDOWN'.
PERFORM sortdown_data.
WHEN OTHERS.
ENDCASE.
TOP-OF-PAGE DURING LINE-SELECTION.
IF sy-ucomm EQ 'SORTUP' OR sy-ucomm EQ 'SORTDOWN'.
FORMAT COLOR 3 on.
WRITE:/1(81) '排序后学生信息表' CENTERED.
FORMAT COLOR 3 OFF.
WRITE:/1 sy-uline(82).
FORMAT COLOR 6 INVERSE ON.
WRITE:/1 sy-vline NO-GAP,(10)'学号' NO-GAP CENTERED,
sy-vline NO-GAP,(20) '姓名' NO-GAP CENTERED,
sy-vline NO-GAP,(10) '学校代码' NO-GAP CENTERED,
sy-vline NO-GAP,(20) '学校名称'NO-GAP CENTERED,
sy-vline NO-GAP,(5) '性别' NO-GAP CENTERED,
sy-vline NO-GAP,(10) '成绩' NO-GAP CENTERED,
sy-vline.
FORMAT COLOR 6 INVERSE OFF.
ENDIF.
FORM sortup_data .
SORT gt_school BY score ASCENDING.
PERFORM data_display.
ENDFORM.
FORM sortdown_data .
SORT gt_school BY score DESCENDING.
PERFORM data_display.
ENDFORM.
nnnn
SORT GT_TOTAL BY (LV_FIELDNAME). "变量排序
SY-LSIND = SY-LSIND - 1."表单排序之后返回上一界面
表单排序时候,双击功能失效,需要到GUI_STATUS中recommend-function-key-stttings中给双击添加功能代码
SET PF-STATUS 'STATUS' EXCLUDING GT_STATUA.
s
fieldcatfi