选择屏幕
- 通过PARAMETERS语句给变量分配值
- 通过SELECT-OPTIONS语句确定选择标准
- 界面画完之后,按F5进入转中文说明
SELECT-OPTION | SIGN | OPTION | LOW | HIGH |
---|---|---|---|---|
描述 | 输入类型 | 前后输入栏关系 | 低值 | 高值 |
参考值 | I(包含) E(不包含) | EQ(等于)BT(范围)NB(不包括)… | 与参考类型相同 | 与参考类型相同 |
-
后缀
- 默认值 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
*&---------------------------------------------------------------------* *& Report YDEMO_FJX *&---------------------------------------------------------------------* *& 内容:选择界面 SELECTION SCREEN *&---------------------------------------------------------------------* REPORT YDEMO_FJX. TABLES ZS1MMT_BATCH." 声明一个和数据库表名称一样的 TYPES: BEGIN OF BATOTAL, ZMATNR TYPE ZS1MMT_BATCH-MATNR, ZCHARG TYPE ZS1MMT_BATCH-CHARG, ZCODE TYPE ZS1MMT_BATCH-CODE, ZMACAT TYPE ZS1MMT_BATCH-MACAT, ZSUBCAT TYPE ZS1MMT_BATCH-SUBCAT, ZGWEIGHT TYPE ZS1MMT_BATCH-GWEIGHT, ZMACATN TYPE ZS1MMT_MACAT-MACATN, END OF BATOTAL. * 合计数据 DATA GTTOTAL TYPE TABLE OF BATOTAL. DATA GSTOTAL TYPE BATOTAL. * 大类 DATA ZTMACAT TYPE TABLE OF ZS1MMT_MACAT."大类外键 DATA ZSMACAT TYPE ZS1MMT_MACAT. * 单品信息表 DATA ZTBATCH TYPE TABLE OF ZS1MMT_BATCH. "单品信息表 DATA ZSBATCH TYPE ZS1MMT_BATCH. * * 选择界面 * * 边框 TEXT-T01在双击可以进行创建中文说明 SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-T01. * 单一输入框 查询的时候用AND PARAMETERS P_ZMATNR TYPE ZS1MMT_BATCH-MATNR." 参照表 默认值 PARAMETERS P_ZMATN2 TYPE ZS1MMT_BATCH-MATNR OBLIGATORY DEFAULT 'ABC'." 必填 PARAMETERS P_ZCODE like ZSBATCH-CODE." 参照结构体 * 多个输入框 查询的时候用IN SELECT-OPTIONS S_ZMACAT FOR ZSMACAT-MACAT. SELECT-OPTIONS S_ZMACA2 FOR ZSMACAT-MACAT NO-EXTENSION " 取消后面的按钮 NO INTERVALS." 取消两个框,只留一个框 SELECTION-SCREEN END OF BLOCK BK1. * 边框 TEXT-T01在双击可以进行创建中文说明 SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE TEXT-T04. * 两个选项转为一行 SELECTION-SCREEN BEGIN OF LINE. * 单选按钮 RADIOBUTTON 默认char类型 长度为1 选中的为X 不选的为空 * GROUP GP1-代表分为一组,一组内只能选一个 查询的时候用IF-ELSE PARAMETERS R_SEXW RADIOBUTTON GROUP GP1." 单选 女 SELECTION-SCREEN COMMENT (2) TEXT-T02." 给单选框的文本赋值 SELECTION-SCREEN POSITION 30." 从最左侧的时候开始间隔30开始 PARAMETERS R_SEXM RADIOBUTTON GROUP GP1." 单选 男 SELECTION-SCREEN COMMENT (2) TEXT-T03 FOR FIELD R_SEXM." 给单选框的文本赋值 SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK BK2. * 页面跳3行 SELECTION-SCREEN SKIP 3. * 页面横线 SELECTION-SCREEN ULINE. * 复选框 PARAMETERS P_CHECK AS CHECKBOX." char 1 选中X,不选为空 PARAMETERS P_CHECK2 AS CHECKBOX. PARAMETERS R_CHE1 RADIOBUTTON GROUP GP2. PARAMETERS R_CHE2 RADIOBUTTON GROUP GP2. PARAMETERS R_CHE3 RADIOBUTTON GROUP GP2. PARAMETERS R_CHE4 RADIOBUTTON GROUP GP2. WRITE :/ '复选框1',P_CHECK. WRITE :/ '复选框2',P_CHECK2. * 从数据库向内表取数 SELECT * FROM ZS1MMT_BATCH INTO CORRESPONDING FIELDS OF TABLE ZTBATCH WHERE MATNR = P_ZMATNR AND MACAT IN S_ZMACAT . * 循环输出内容 LOOP AT ZTBATCH INTO ZSBATCH. WRITE :/ ZSBATCH-MATNR, ZSBATCH-CHARG, ZSBATCH-CODE, ZSBATCH-MACAT, ZSBATCH-SUBCAT, ZSBATCH-GWEIGHT. ENDLOOP.
* EVENT 开始选择,下面写开始取数的代码 START-OF-SELECTION. * event 开始输出,下面写输出的东西 END-OF-SELECTION.
模块化编程
INCLUDE 程序名称
_top:屏幕定义,变量定义
_Form:放取出数据的,放输出数据的
- 主程序YDEMO_FJX
*&---------------------------------------------------------------------*
*& Report YDEMO_FJX
*&---------------------------------------------------------------------*
*& 内容:选择界面 SELECTION SCREEN
*&---------------------------------------------------------------------*
REPORT YDEMO_FJX MESSAGE-ID YMSG_FJX
NO STANDARD PAGE HEADING.
*MESSAGE S000 DISPLAY LIKE 'E'.
*MESSAGE S001 WITH '占位符输出' DISPLAY LIKE 'E'.
*MESSAGE S002 WITH '占位符拼接输出' DISPLAY LIKE 'E'.
INCLUDE YDEMO_FJXTOP." 定义参数和屏幕
INCLUDE YDEMO_FJXFORM."查询数据和输出数据
* EVENT 开始选择,下面写开始取数的代码
START-OF-SELECTION.
PERFORM GET_DATA."取数
* event 开始输出,下面写输出的东西
END-OF-SELECTION.
IF ZTBATCH IS NOT INITIAL.
PERFORM DISPLAY_DATA."输出
ELSE.
MESSAGE S001 DISPLAY LIKE 'E'.
ENDIF.
- YDEMO_FJXTOP
*&---------------------------------------------------------------------*
*& 包含 YDEMO_FJXTOP
*&---------------------------------------------------------------------*
TABLES ZS1MMT_BATCH." 声明一个和数据库表名称一样的
TYPES: BEGIN OF BATOTAL,
ZMATNR TYPE ZS1MMT_BATCH-MATNR,
ZCHARG TYPE ZS1MMT_BATCH-CHARG,
ZCODE TYPE ZS1MMT_BATCH-CODE,
ZMACAT TYPE ZS1MMT_BATCH-MACAT,
ZSUBCAT TYPE ZS1MMT_BATCH-SUBCAT,
ZGWEIGHT TYPE ZS1MMT_BATCH-GWEIGHT,
ZMACATN TYPE ZS1MMT_MACAT-MACATN,
END OF BATOTAL.
* 合计数据
DATA GTTOTAL TYPE TABLE OF BATOTAL.
DATA GSTOTAL TYPE BATOTAL.
* 大类
DATA ZTMACAT TYPE TABLE OF ZS1MMT_MACAT."大类外键
DATA ZSMACAT TYPE ZS1MMT_MACAT.
* 单品信息表
DATA ZTBATCH TYPE TABLE OF ZS1MMT_BATCH. "单品信息表
DATA ZSBATCH TYPE ZS1MMT_BATCH.
*
* 选择界面
*
* 边框 TEXT-T01在双击可以进行创建中文说明
SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-T01.
* 单一输入框 查询的时候用AND
PARAMETERS P_ZMATNR TYPE ZS1MMT_BATCH-MATNR." 参照表 默认值
PARAMETERS P_ZMATN2 TYPE ZS1MMT_BATCH-MATNR OBLIGATORY DEFAULT 'ABC'." 必填
PARAMETERS P_ZCODE like ZSBATCH-CODE." 参照结构体
* 多个输入框 查询的时候用IN
SELECT-OPTIONS S_ZMACAT FOR ZSMACAT-MACAT.
SELECT-OPTIONS S_ZMACA2 FOR ZSMACAT-MACAT NO-EXTENSION " 取消后面的按钮
NO INTERVALS." 取消两个框,只留一个框
SELECTION-SCREEN END OF BLOCK BK1.
* 边框 TEXT-T01在双击可以进行创建中文说明
SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE TEXT-T04.
* 两个选项转为一行
SELECTION-SCREEN BEGIN OF LINE.
* 单选按钮 RADIOBUTTON 默认char类型 长度为1 选中的为X 不选的为空
* GROUP GP1-代表分为一组,一组内只能选一个 查询的时候用IF-ELSE
PARAMETERS R_SEXW RADIOBUTTON GROUP GP1." 单选 女
SELECTION-SCREEN COMMENT (2) TEXT-T02." 给单选框的文本赋值
SELECTION-SCREEN POSITION 30." 从最左侧的时候开始间隔30开始
PARAMETERS R_SEXM RADIOBUTTON GROUP GP1." 单选 男
SELECTION-SCREEN COMMENT (2) TEXT-T03 FOR FIELD R_SEXM." 给单选框的文本赋值
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BK2.
* 页面跳3行
SELECTION-SCREEN SKIP 3.
* 页面横线
SELECTION-SCREEN ULINE.
* 复选框
PARAMETERS P_CHECK AS CHECKBOX." char 1 选中X,不选为空
PARAMETERS P_CHECK2 AS CHECKBOX.
PARAMETERS R_CHE1 RADIOBUTTON GROUP GP2.
PARAMETERS R_CHE2 RADIOBUTTON GROUP GP2.
PARAMETERS R_CHE3 RADIOBUTTON GROUP GP2.
PARAMETERS R_CHE4 RADIOBUTTON GROUP GP2.
- YDEMO_FJXFORM
*&---------------------------------------------------------------------*
*& 包含 YDEMO_FJXFORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM GET_DATA .
* 从数据库向内表取数
SELECT * FROM ZS1MMT_BATCH
INTO CORRESPONDING FIELDS OF TABLE ZTBATCH
WHERE MATNR = P_ZMATNR
AND MACAT IN S_ZMACAT .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM DISPLAY_DATA .
* 循环输出内容
LOOP AT ZTBATCH INTO ZSBATCH.
WRITE :/ ZSBATCH-MATNR, ZSBATCH-CHARG, ZSBATCH-CODE,
ZSBATCH-MACAT, ZSBATCH-SUBCAT, ZSBATCH-GWEIGHT.
ENDLOOP.
ENDFORM.