REPORT程序程序事件

 一、选择屏幕

单选输入框 – PARAMETERS
PARAMETERS < 对象名 > LIKE/TYPE < 参考对象 >.
单项 选择 – RADIOBUTTON 必须成组出现
PARAMETERS < 对象名 > RADIOBUTTON GROUP < 组名称 >.
多项 选择 – CHECKBOX
PARAMETERS < 对象名 > AS CHECKBOX.
复选输入框 – SELECT-OPTIONS
SELECT-OPTIONS < 对象名 > FOR < 参考对象 >.
后缀
默认值 DEFAULT val
OBLIGATORY
隐藏 NO-DISPLAY
显示长度 VISIBLE LENGTH vlen
编辑 组控制 MODIF ID modid
按钮功能 USER-COMMAND fcode
允许小写字母 LOWER CASE
搜索帮助 MATCHCODE OBJECT search_help
定义内存参数 MEMORY ID pid
SELECT-OPTIONS 后缀
默认值 DEFAULT val1 TO val2 OPTION opt SIGN sgn
行输入控制 NO-EXTENSION
输入范围值控制 NO INTERVALS
界面跳行
SELECTION-SCREEN SKIP n .
界面横线
SELECTION-SCREEN ULINE.

        

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事件块

  1. INITIALIZATION(初始化处理)

  2. AT SELECTION-SCREEN OUTPUT(选择屏幕属性设置)

  3. AT SELECTION-SCREEN(选择屏幕的输入,一般用来进行有效性检查

  4. START-OF-SELECTION(对 DATA 进行处理)

  5. TOP-OF-PAGE.END-OF-SELECTION.使用

  6. AT USER-COMMAND.

  7. AT LINE-SELECTION. 

  • 事件块总览

REPORT 程序第一行有效代码必须为 REPORT < 程序名 >: REPORT report id.
后缀
NO STANDARD PAGE HEADING  “ 隐藏标准表头
LINE-COUNT lcount   “ 每行宽度
LINE-SIZE lsize   “ 每页行数
MESSAGE-ID mid  “ 消息类

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值