ABAP-06 REPORT程序事件

选择界面事件PBO事件 PROCESS BEFORE OUTPUT

  • 根据复选框选中控制按钮显示隐藏

    * 复选框
    PARAMETERS P_CHECK AS CHECKBOX USER-COMMAND HIDE." char 1  选中X,不选为空
    " PARAMETERS P_CHECK2 AS CHECKBOX.
    PARAMETERS R_CHE1 RADIOBUTTON GROUP GP2 MODIF ID CHK." 编辑组后缀
    PARAMETERS R_CHE2 RADIOBUTTON GROUP GP2 MODIF ID CHK.
    PARAMETERS R_CHE3 RADIOBUTTON GROUP GP2 MODIF ID CHK.
    PARAMETERS R_CHE4 RADIOBUTTON GROUP GP2 MODIF ID CHK.
    
     AT SELECTION-SCREEN OUTPUT." 选择界面的PBO事件
      LOOP AT SCREEN.
        IF P_CHECK = 'X'." 选中
          " 显示
        ELSE.
          " 隐藏
          IF SCREEN-GROUP1 = 'CHK'." 分组方便控制
            SCREEN-INVISIBLE = 1. "1 TRUE  0 FALSE
            MODIFY SCREEN.
          ENDIF.
    *      IF SCREEN-NAME = 'R_CHE1' OR SCREEN-NAME = 'R_CHE2'.
    *        SCREEN-INVISIBLE = 1. "1 TRUE  0 FALSE
    *        MODIFY SCREEN.
    *      ENDIF.
        ENDIF.
      ENDLOOP.
    
    
    AT SELECTION-SCREEN OUTPUT." 选择界面的PBO事件 PROCESS BEFORE OUTPUT
      PERFORM MODIFY_SCREEN.
    
    FORM MODIFY_SCREEN .
      LOOP AT SCREEN.
        IF P_CHECK = 'X'." 选中
          " 显示
        ELSE.
          " 隐藏
          IF SCREEN-GROUP1 = 'CHK'." 分组方便控制
            SCREEN-INVISIBLE = 1. "1 TRUE  0 FALSE
            MODIFY SCREEN.
          ENDIF.
    *      IF SCREEN-NAME = 'R_CHE1' OR SCREEN-NAME = 'R_CHE2'.
    *        SCREEN-INVISIBLE = 1. "1 TRUE  0 FALSE
    *        MODIFY SCREEN.
    *      ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
    
    

选择界面的PAI事件 PROCESS AFTER INPUT

  • 回车事件

  • 检查数据可用性

  • 检查数据可以并且提示

    AT SELECTION-SCREEN." 选择界面的PAI事件 PROCESS AFTER INPUT
      PERFORM SELECTION_SCREEN_PAI.
     
       * 提示1
    FORM SELECTION_SCREEN_PAI .
      SELECT SINGLE * FROM ZS1MMT_BATCH
    * INTO CORRESPONDING FIELDS OF TABLE ZTBATCH"在定义了相同表名【TABLES ZS1MMT_BATCH】的参数情况下可以注释这一句
         WHERE MATNR = P_ZMATNR
         AND MACAT IN S_ZMACAT .
      IF SY-SUBRC = 0.
        MESSAGE S001 WITH '该数据存在'.
      ELSE.
        MESSAGE S001 WITH '该数据不存在' DISPLAY LIKE 'E'.
      ENDIF.
    ENDFORM.
    
    
    * 提示2
    * 边框  TEXT-T06在双击可以进行创建中文说明   文本提示
    SELECTION-SCREEN BEGIN OF BLOCK BK5 WITH FRAME TITLE TEXT-T05.
    	SELECTION-SCREEN  BEGIN OF LINE.
    		SELECTION-SCREEN COMMENT (10) TEXT-T06 FOR FIELD S_ZMACA3."提示
    		SELECTION-SCREEN POSITION 30.
    		SELECT-OPTIONS S_ZMACA3 FOR ZSMACAT-MACAT NO INTERVALS.
    		SELECTION-SCREEN POSITION 79." 从最左侧的时候开始间隔30开始
    		SELECTION-SCREEN COMMENT (10) GV_MACAT."提示
    	SELECTION-SCREEN END OF LINE.
    	SELECT-OPTIONS S_ZMACA4 FOR ZSMACAT-MACAT.
    SELECTION-SCREEN END OF BLOCK BK5.
    
    FORM SELECTION_SCREEN_PAI .
      SELECT SINGLE * FROM ZS1MMT_BATCH
         WHERE MATNR = P_ZMATNR
         AND MACAT IN S_ZMACAT .
      IF SY-SUBRC = 0.
        GV_MACAT = '存在'.
        MESSAGE S001 WITH '该数据存在'.
      ELSE.
        GV_MACAT = '不存在'.
        MESSAGE S001 WITH '该数据不存在' DISPLAY LIKE 'E'.
      ENDIF.
    ENDFORM.
    
    INITIALIZATION." 初始化事件
      GV_MACAT = '待检查,回车'.
    

输出控制 格式表格 横线竖线

 FORM DISPLAY_DATA .
* 循环输出内容

  WRITE:/ '输出结果:'.

  WRITE:/1(107) SY-ULINE.
  WRITE :/1 SY-VLINE NO-GAP,(20)'物料号' NO-GAP CENTERED,
          SY-VLINE NO-GAP,(20)'批次号' NO-GAP CENTERED,
          SY-VLINE NO-GAP,(20)'条码' NO-GAP CENTERED,
          SY-VLINE NO-GAP,(20)'大类' NO-GAP CENTERED,
          SY-VLINE NO-GAP,(10)'小类' NO-GAP CENTERED,
          SY-VLINE NO-GAP,(10)'重量' NO-GAP CENTERED,
          SY-VLINE NO-GAP.

  WRITE:/1(107) SY-ULINE.
  LOOP AT ZTBATCH INTO  ZSBATCH.
    " 横线 SY-ULINE 竖线 SY-VLINE
    WRITE :/1 SY-VLINE NO-GAP,(20)ZSBATCH-MATNR NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)ZSBATCH-CHARG NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)ZSBATCH-CODE NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)ZSBATCH-MACAT NO-GAP CENTERED,
              SY-VLINE NO-GAP,(10)ZSBATCH-SUBCAT NO-GAP CENTERED,
              SY-VLINE NO-GAP,(10)ZSBATCH-GWEIGHT NO-GAP CENTERED,
              SY-VLINE NO-GAP.

    WRITE:/1(107) SY-ULINE.
  ENDLOOP.
ENDFORM.

在这里插入图片描述

表格格式 表头固定 分页 颜色

  • 宽度 分页高度
    REPORT YDEMO_FJX MESSAGE-ID YMSG_FJX
                     NO STANDARD PAGE HEADING
                     LINE-SIZE 118"宽度
                     LINE-COUNT 30."分页高度
    
  • 固定抬头
    -- 固定抬头
    TOP-OF-PAGE .
      FORMAT COLOR 3 ON." 背景颜色
      WRITE:/(118) '单品信息表' CENTERED.
      FORMAT COLOR 3 OFF.
      WRITE:/1(118) SY-ULINE.
      FORMAT COLOR 6 INVERSE ON."字体颜色
      WRITE :/1 SY-VLINE NO-GAP,(20)'物料号' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)'批次号' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)'条码' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(20)'大类' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(10)'小类' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(10)'重量' NO-GAP CENTERED,
              SY-VLINE NO-GAP,(10)'大类名称' NO-GAP CENTERED,
              SY-VLINE NO-GAP.
      WRITE:/1(118) SY-ULINE.
      FORMAT COLOR 6 INVERSE OFF.
    
  • 循环输出内容
    FORM DISPLAY_DATA .
    * 循环输出内容
    
    *  WRITE:/1(118) SY-ULINE.
      LOOP AT GTTOTAL INTO  GSTOTAL.
        " 横线 SY-ULINE 竖线 SY-VLINE
        WRITE :/1 SY-VLINE NO-GAP,(20)GSTOTAL-MATNR NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(20)GSTOTAL-CHARG NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(20)GSTOTAL-CODE NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(20)GSTOTAL-MACAT NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(10)GSTOTAL-SUBCAT NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(10)GSTOTAL-GWEIGHT NO-GAP CENTERED,
                  SY-VLINE NO-GAP,(10)GSTOTAL-MACATN NO-GAP CENTERED,
                  SY-VLINE NO-GAP.
    
        WRITE:/1(118) SY-ULINE.
      ENDLOOP.
    ENDFORM.
    

在这里插入图片描述

表格双击事件

*  表格双击事件
AT LINE-SELECTION.
*   PERFORM LINE_SELECT.
  DATA : GV_FIELD(30),
         GC_VALUE(30).
*****  显示大类详细信息
*  获取光标所在得位置
  GET CURSOR FIELD  GV_FIELD"字段名
             VALUE GC_VALUE."字段值
*  判断-是否是条码所在字段GSTOTAL-MACAT
  CHECK GV_FIELD = 'GSTOTAL-MACAT'.
*  取数  从表中
  CONDENSE GC_VALUE NO-GAPS."去掉左右空格
  SELECT SINGLE * FROM ZS1MMT_MACAT WHERE MACAT = GC_VALUE."默认自动取到TABlES语句结构体中
*  判断取数成功与否
  IF SY-SUBRC = '0'.
*  成功
*  显示详细信息
    WRITE:/ '大类代码',ZS1MMT_MACAT-MACAT,
          / '大类名称',ZS1MMT_MACAT-MACATN.
  ELSE.
*  不成功
*  消息
    MESSAGE E002 WITH '没有数据'.
  ENDIF. 

次级表单输出

*  次级表单表头
TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE:/ '大类信息:'.

工具栏按钮创建

1.如图
在这里插入图片描述
2、选中 YDEMO_FJX 右键 创建 GUI状态
在这里插入图片描述
3、设置标准工具栏
在这里插入图片描述
4、设置应用程序工具栏

  • 输入1的内容,回车,出现2

  • 2 框打勾,出现如下,输入填写框中内容
    在这里插入图片描述

  • 回到界面,双击1的内容,出现如下
    在这里插入图片描述

  • 然后保存,将1 的内容填写到如图,就加上了工具栏
    在这里插入图片描述
    5、设置菜单栏
    在这里插入图片描述
    6、使用 写在END-OF-SELECTION. 下面

    * event  开始输出,下面写输出的东西
    END-OF-SELECTION.
    
    * 使用按钮
    SET PF-STATUS 'STATUS'.
    

在这里插入图片描述

  • 隐藏界面按钮

    DATA GT_STATUS LIKE TABLE OF SY-UCOMM WITH HEADER LINE.
    
    * event  开始输出,下面写输出的东西
    END-OF-SELECTION.
    
    * 使用按钮 
      GT_STATUS = 'SORTUP'.
      APPEND GT_STATUS.
      SET PF-STATUS 'STATUS' EXCLUDING GT_STATUS." 放置按钮得时候可以不包含这个名字的按钮
    
    

    工具栏按钮事件

    *  按钮事件
    AT USER-COMMAND.
    *  PERFORM USER-COMMAND.
    * 判断function code  确定点击的按钮
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0." 返回上一层
        WHEN 'EXIT'OR 'CANCEL'.
          LEAVE PROGRAM."退出程序
        WHEN 'SORTUP'." 排序
          DATA LV_FIELD(30).
          DATA LV_FIELDNAME(30).
    *     1.获取光标
          GET CURSOR FIELD LV_FIELD.
    *     2.排序
          SPLIT LV_FIELD AT '-' INTO LV_FIELD LV_FIELDNAME."分割字符串
    *      CHECK LV_FIELD+0(7) = 'GSTOTAL'.
    *      LV_FIELDNAME = LV_FIELD+8(*)."截取后面的字段名称
          CHECK LV_FIELD = 'GSTOTAL'.
          SORT GTTOTAL BY (LV_FIELDNAME).
    *     3. 输出
          PERFORM DISPLAY_DATA.
        WHEN OTHERS.
      ENDCASE.
    
  • 按钮事件后 输出表格格式变了,重新调整格式

    *  次级表单
    TOP-OF-PAGE DURING LINE-SELECTION.
      CASE SY-UCOMM.
        WHEN 'SORTUP'.
          PERFORM TOP_OF_PACE."表头固定  分页 颜色
        WHEN OTHERS.
      WRITE:/ '大类信息:'.
      ENDCASE.
    
  • 表单和次级表单之间的顺序

    -- 按钮事件内
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0." 返回上一层
        WHEN 'EXIT'OR 'CANCEL'.
          LEAVE PROGRAM."退出程序
        WHEN 'SORTUP'.
          SY-LSIND = SY-LSIND - 1." 页面排序减少 1 ,这样返回的时候不会返回很多层
          PERFORM SORT_UP." 升序排序
        WHEN OTHERS. 
      ENDCASE.
    
  • 恢复界面双击事件
    在这里插入图片描述

设置程序左上角名称

  • 1、在END-OF-SELECTION.下写设置名称代码
    SET TITLEBAR 'TITLE'.
    SET TITLEBAR 'TITLE' WITH ' 名称带参数'.
    
  • 2、双击’TITLE’,弹出然后创建输入名称 ,保存激活即可 &1 代表可插入参数
    在这里插入图片描述

带参数 FORM

  • 调用

    PERFORM SORT_LIST USING 'D'." 降序排序
    
  • 编写

    *&---------------------------------------------------------------------*
    *& Form SORT_UP
    *&---------------------------------------------------------------------*
    *& 升序降序
    *&---------------------------------------------------------------------*
    *& -->  P_FLAG        判断是升序还是降序 U  D
    *&---------------------------------------------------------------------*
    FORM SORT_LIST USING P_FLAG.
    
      DATA LV_FIELD(30).
      DATA LV_FIELDNAME(30).
    *     1.获取光标
      GET CURSOR FIELD LV_FIELD.
    *     2.排序
      SPLIT LV_FIELD AT '-' INTO LV_FIELD LV_FIELDNAME."分割字符串
    
      CHECK LV_FIELD = 'GSTOTAL'.
      IF P_FLAG = 'U'.
        SORT GTTOTAL BY (LV_FIELDNAME).
      ELSE.
        SORT GTTOTAL BY (LV_FIELDNAME) DESCENDING.
      ENDIF.
    *     3. 输出
      PERFORM DISPLAY_DATA.
    
    ENDFORM.
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值