ABAP-05 选择屏幕

选择屏幕

  • 通过PARAMETERS语句给变量分配值
  • 通过SELECT-OPTIONS语句确定选择标准
  • 界面画完之后,按F5进入转中文说明
SELECT-OPTIONSIGNOPTIONLOWHIGH
描述输入类型前后输入栏关系低值高值
参考值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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值