选择屏幕-的组件

本文详细介绍了ABAP/4编程语言中用于用户输入的PARAMETERS命令,包括默认值、强制输入、小写转换等选项,以及SELECT-OPTIONS用于条件筛选的用法,如筛选符号、范围输入等。同时,还提到了SELECTION-SCREEN在设计选择屏幕时的各种功能,如产生空白列、底线、备注及区块布局等。
摘要由CSDN通过智能技术生成
1. PARAMETER: 输入一个变量或字段内容
2. SELECT-OPTIONS: 使用条件筛选界面来输入数据
PARAMETERS 命令
基本的输入命令,类似于 BASIC INPUT 命令,但无法使用 F 格式 ( 浮点数 )
语法:
PARAMETERS <p> [DEFAULT <f>] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX]
[RADIOBUTTON GROUP <rad>]
示例:
PARAMETERS: NAME(8),
AGE TYPE I,
BIRTH TYPE D.
执行结果:

在日期的输入格式上为 MM/DD/YY,MM/DD/YYYY,MMDDYY或MMDDYYYY,如输入
020165 表示 1965 年 02 月 01 日,与 02/01/65 的输入是一样的,日期输入范围为公元
1950 年至 2049 年
1. DEFAULT
设定输入的默认值
示例:
PARAMETERS: COMPANY(20) DEFAULT 'DELTA',
BIRTH TYPE D DEFAULT '19650201'.
2. LOWER CASE
ABAP/4 预设是将字符串输入值自动转换为大写,加上此参数会将输入的数据转成小写。
3. OBLIGATORY
强制要求输入,屏幕上会出现一个
,使用者必须要输入才可以。
4. AS CHECKBOX
输入 CHECKBOX 的格式
示例:
PARAMETERS: TAX AS CHECKBOX DEFAULT 'X',
NTD AS CHECKBOX.
执行结果:

5. RADIOBUTTON GROUP <rad>
输入 RADIO BUTTON GROUP 的方式
示例:
PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT 'X',
GIRL RADIOBUTTON GROUP SEX.
执行结果:

SELECT-OPTIONS
条件筛选检查条件输入界面命令,输入条件后可配合 SELECT 命令自 TABLE 读取符合条
件的数据,直接执行或放入内表中,条件有四个参数:
1. SIGN:
I: 表筛选条件符合的资料
E: 表筛选条件不符合的资料
2. OPTION: 比较的条件符号
EQ( 等于 ) NE( 不等于 ) GT( 大于 ) LE( 小于 ) CP( 包含 ) NP( 不包含 )
3. LOW: 最小值
4. HIGH: 最大值
语法:
SELECT-OPTIONS <check-option> FOR <table-field>
示例:
TABLES SPFLI.
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
将条件的输入值存放入 AIRLINE ,筛选选择为 SPFLI 表中的 CONNID 字段
执行结果:

可直接输入起始范围或按下选择界面,输入完后按下左上角的执行键.
条件输入选择界面
1. 自表中选取
,调出表中数据项,选取开始和结束的范围。
按下输入项的右边表选择按钮
2. Selection Options
按下菜单 “Edit” 下的 “Selection options” (快捷键 F2 ),输入 Selection Option 参数内容,屏
幕如下:

3. Multi-Options 输入
按下最右边的 Multi-Options 输入键
,输入条件选取的范围,界面如下:

条件输入完后按下 “Copy” 按键。
改变条件输入格式
1. DEFAULT <begin> TO <end>
设定开始结束范围输入默认值
示例:
SELECT-OPTION AIRLINE FOR SPFLI-CONNID
DEFAULT '2042' TO '4555'.
2. NO-EXTENSION
设定不要 Multi-Option 输入界面
3. NO INTERVALS
设定不要区间范围输入界面
4. LOWER CASE
输入转换成大写
5. OBLIGATORY
强制要求输入
配合 SELECT 命令
条件输入完后要将符合条件的数据筛选出来,可配合使用 SELECT 命令
1. 使用 WHERE < 条件式 >
示例:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.
WRITE: / CONNID, FROMCITY, TOCITY.
ENDSELECT.
2. 使用 CHECK 参数
示例:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
SELECT * FROM SPFLI.
CHECK AIRLINE.
WRITE: / CONNID, FROMCITY, TOCITY.
ENDSELECT.
3. 使用 IF … IN 语句
示例:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
SELECT * FROM SPFLI.
IF SPFLI-CONNID IN AIRLINE.
WRITE: / CONNID, FROMCITY, TOCITY.
ENDIF
ENDSELECT.
SELECTION-SCREEN
1. 产生空白列
语法:
SELECTION-SCREEN SKIP [<n>]
示例:
SELECTION-SCREEN SKIP 2.
产生两列空白列
2. 产生底线
语法:
SELECTION-SCREEN ULINE / <pos>(length)
示例:
SELECTION-SCREEN ULINE /10(30).
自第 10 格开始产生长度 30 的底线
3. 印出备注说明
语法 :
SELECTION-SCREEN COMMENT / <pos>(length) <name>
示例:
REMARK = 'Pls enter your name'.
SELECTION-SCREEN COMMENT /10(30) REMARK.
4. 同一列中输入数个数据项
语法 :
SELECTION-SCREEN BEGIN OF LINE.
……
SELECTION-SCREEN END OF LINE.
示例:
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 20.
PARAMETERS NAME(10).
SELECTION-SCREEN POSITION 40.
PARAMETERS BIRTH TYPE D.
SELECTION-SCREEN END OF LINE.
20 格输入 NAME 内容 , 40 格输入 BIRTH 的内容
5. 绘出 BLOCK PANEL
语法 :
SELECTION-SCREEN BEGIN OF BLOCK <block>
[WITH FRAME [TITLE <title>].
…….
SELECTION-SCREEN END OF BLOCK <block>.
************************************************************************
* SELECTION-SELECTION 定义选择屏幕输入条件
************************************************************************
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
 
PARAMETERS:   pa_werks  LIKE ekpo-werks  OBLIGATORY MEMORY ID wer . "工厂
SELECT-OPTIONS: so_lifnr FOR ekko-lifnr , "供应商
                so_matnr FOR ekpo-matnr. "物料
SELECTION-SCREEN:END OF BLOCK b1.
*OBLIGATORY必须输入
* MEMORY ID控制显示

示例:
SELECTION-SCREEN BEGIN OF BLOCK RADIO
WITH FRAME .
PARAMETER R1 RADIOBUTTON GROUP GR1.
PARAMETER R2 RADIOBUTTON GROUP GR1.
PARAMETER R3 RADIOBUTTON GROUP GR1.
SELECTION-SCREEN END OF BLOCK RADIO.

parameters和select-option中的一些用法:
(1)使用DEFAULT后缀为参数指定缺省值

parameters:p1(20) type c default 'msj'.


(2)使用obligatory后缀来标识参数为必输项。指定了该参数后在输入框会有必输项的图标出现, 必须输入数据后才可继续运行。
(3)使用as checkbox后缀使参数以复选框的形式出现。使用复选框的参数一定为长度为1的字符串,其内容只能为’X’或‘’。

parameters:p4 as checkbox .
parameters:p5 as checkbox default 'X'.

(4)NO-EXTENSION:限制选择表为单行,元素输入后面不会出现按钮[iks?ten??n]
NO INTERVALS:只会出现LOW字段,To后面的HIGH字段不出现在选择屏幕上,但是用户仍然可以在Mutiple Selection窗口中输入范围选择。也就是说:只要有按钮,就可以选择多个条件与范围值

3、在选择屏幕的复选框CheckBox中,默认这个复选框选中用的是 DEFAULT ‘X’
4、MATCHCODE OBJECT search_help. 为屏幕对象加上指定的 F4 帮助.
5、AND 是并且的意思
or 是或者的意思

6、实现选择屏幕不可输入的条件

AT SELECTION-SCREEN OUTPUT. (表示在选择屏幕之后)
 LOOP AT SCREEN.
    IF pa_check = 'X'.
      IF screen-name = 'PA_MATNR'.
        screen-input = 0. "0代表不能输入 1代表可以输入!
       MODIFY SCREEN.
      ENDIF.
    ENDIF.
 ENDLOOP.
AT SELECTION-SCREEN.(表示在选择屏幕之前)


7、实现选中复选框以后才能进行输入。(重要!!!)
注意:输入框和单选按钮都必须要在PARAMETERS中定义才可以。

PARAMETERS: P_XREF3 type  BSEG-XREF3 , "款项性质
              CK_YFZK AS CHECKBOX USER-COMMAND c1, "预付账款      

USER-COMMAND:是在点击屏幕按钮的时候,将触发这个过程,因此要想实现输入框在选中了某个按钮后能输入,必须要使用这个。

AT SELECTION-SCREEN OUTPUT. (表示在选择屏幕之后)
LOOP  AT SCREEN.
    IF SCREEN-NAME EQ 'P_XREF3'.
      SCREEN-INPUT = 0 ."0代表不能输入 1代表可以输入!
    ENDIF.
    MODIFY SCREEN.
    if  CK_YFZK = 'X'.
      if SCREEN-NAME EQ 'P_XREF3' .
      SCREEN-INPUT = 1.
       ENDIF.
    MODIFY SCREEN.
    ENDIF.
  ENDLOOP.


8、导入Excel模板的语法

GV_OBJECT_KEY TYPE SBDST_OBJECT_KEY VALUE 'ZFIR045TMPL', "导入EXCEL模板


9、 LOOP AT SCREEN
实现的功能:当点击screen上的一个check box 或者Radio Button时,隐藏或者显示某些parameters或select options。

10、 计算内表的行数

DESCRIBE TABLE lt_mat LINES lv_cont.


这行的意思是 计算内表 lt_mat 的行数 ,将行数放到变量 lv_cont 里。

11、ABAP中的CHAIN…ENDCHAIN

(1)

CHAIN.
FIELD <FLD1>.
FIELD <FLD2>,<FLD3>,<FLD4>.
MODULE <MDL1>.
MODULE <MDL2>.
ENDCHAIN.


以上两种没有条件限制,都会走MODULE里面的逻辑校验,

(2)

CHAIN.  
  FIELD: A, B, C.
  FIELD: D, E, F.
  MODULE X ON CHAIN-INPUT.
  MODULE Y.
ENDCHAIN.


如果字段A、B、C、D、E和F中任何一个具有不同于初始值(空或者0),则调用模块X。而始终调用模块Y。 如果Y发现错误, 则在错误对话期间,重新打开这六 个字段并等待输入。
(3)

CHAIN.  
  FIELD: A, B, C  MODULE X ON INPUT.
ENDCHAIN.


只有当列表中的最后字段(C)包含非初始值时,才调用模块X。如果X发现错误,则在错误对话框中重新打这开三个字段(A, B,C)并等待输入。
(4)

CHAIN.  
  FIELD: A, B, C  MODULE X ON CHAIN-REQUEST.
ENDCHAIN.

只有当列表中的最后字段(C)的值发生改变时,才调用模块X。如果X发现错误,则在错误对话框中重新打这开三个字段(A, B,C)并等待输入。
INPUT:是包含非初始值
CHAIN-REQUEST:是指发生改变
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值