选择界面事件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.