ABAP SCREEN INPUT/OUTPUT FIELD

Input field有与其data type相关的输入检查。Input field可以有possible value help。可以通过screen table修改input/output field的下列属性:

l         Size dynamic

l         Dialog behavior input field output field required

l         Bright

l         Invisible

l         2 dimension

激活所有的attributes基本上是不可能的,比如说对于char类型field你不可能激活其leading zero属性,因为这个属性是针对numeric field的。

可以通过两种方式创建input/output fields

l         直接在layout editor中输入,通过在text attribute中输入下划线的数量来决定field的大小。对于数据类型的变量,可以输入comma作为分隔符,period作为decimal point。在最后通过V作为+-符号的placeholder

l         通过ABAP Dictionary作为template

只有在ABAP程序中通过DATATABLES声明同名的全局变量来access input/output field中的内容。可以通过parameter ID把值存储在SAP memory中。这些值与terminal sessionuser相关,可以在所有的internal sessionexternal session中使用。Set parameterPAI processing block中把字段中的内容copysap memory中。在PBO结束时GET PARAMETERsap memory中取得值填入到field中,前提条件是该fieldPBO代码中没有被填充值,即它的valueinitial。可以通过ABAP DICTIONARYinput/output fieldSAP memory中的一块区域链接起来。如果使用ABAP Dictionary定义input/output fieldparameter ID就会显示在screen painterdictionary attributeparameter ID中。SET PARAMETER GET PARAMETER允许你单独激活SPAGPA。你可以在表TPARA中定义parameter ID。在PAI module处理之前,系统会自动检查screen上输入的数据。首先会检查所有的required field是否输入值,然后根据fielddata type进行format check,如果fieldabap dictionary中的domain定义,并且定义了fixed values那么就会进行fixed value check。如果有check table那么就会进行foreign key check。前提条件是field elementforeign key check属性被激活。可以在PAI EVENT中写自己的input check逻辑,可以通过语句FIELD。。。MODULE。。。来实现。这个语句表示module中只处理跟这个field的相关的。如果在这个module中报出errorwarning message,系统会重新显示这个screen,并不会执行screenPBO。只有FIELD指定的field处于ready input状态。注意FIELD语句用来保证指定的field处于ready for input状态。如果不是FIELD语句中的module报的message,就不会有这样的效果。为了实现多个fielderror dialog之后处于ready for input状态,可以使用:CHAIN FIELD: fld1, fld2, fld3.

MODULE input_check. ENDCHAIN语句。FIELD语句不仅实现了使field处于ready for input状态。而且还保证了当前的处理中,这些field修改后的内容是可见的。Errorwarning message报了之后,field所指定的字段处于ready for input状态,输入新值后,并不会重新处理所有的PAI过程,系统会检测那个field的内容被更改了并继续执行相应的第一个field statement。如果你只是confirm了一个warning message,那么就会执行MESSAGE语句之后的程序。Dialog message的类型:

l         Termination (A,X):程序终止,用户必须重新启动事务。X:会出现dump

l         Error process(E):程序中断,用户必须更正输入

l         Warning processing(W):程序中断,用户可以更正输入也可以忽略继续运行

l         Information processing(I):程序中断,通过enter confirm继续执行

l         Success Information(S):在下个screen中显示信息

FIELD STATEMENTDATA TRANSPORT的顺序

PROCESS AFTER INPUT.

       MODULE first.

       FIELD A MODULE check_a.

       FIELD B MODULE check_b.

MODULE last.

1.         ENTER

2.         除了AB,所有的字段都从SCREEN传到了ABAP程序

3.         执行module first

4.         A的内容从屏幕传到程序

5.         执行check_a

6.         B的内容从屏幕传到程序

7.         执行check_b

8.         执行module last

如果field表达式的某个module发出了errorwarning messageCHAIN structure中所有fields的值都回被重新传回到screen fields中。Field value check通常需要访问数据库,所以为了提高performance,有时候需要避免它。有时候用户误进入了某个屏幕,他也不知道如何输入正确的值,这时需要给他机会能够退出屏幕。为了避免由于事务退出屏幕,需要保护屏幕中已输入的值。如果你在FIELD STATEMENTMODULE STATEMENT后面加上ON INPUTMODUEL只在FIELDinitial value被改变时才调用。对于CHAIN block可以使用ON CHAIN-INPUT,只要其中的一个字段从initial value被改变就会被调用。只有在FIELD STATEMENT中的module才可以使用ON INPUT addition。如果使用的是ON REQUEST addition,只有输入新值时才能执行其module,同理还有ON CHAIN-REQUEST。如果MODULE ON EXIT-COMMAND addition,那么他会在automatically input check之前执行。每个screen只能有一个ON EXIT-COMMAND MODULE。其不能使用到FIELD STATEMENT中。如果在module中你没有离开screen,就会接着执行automatically input check,并在这之后执行PAI中的其他moduleBackcancel function应当使logical level回退,同一levelscreen应当回到initial screen。对于detailed information screen应当回到调用它的screenCancelbackdialog behavior方面有所不同。Exit就会退回到调用这个processing unit的地方。对于initial screen三个功能back cancel exit都会退回到调用这个程序的地方。对于单屏幕的transactionBack离开当前事务并退回到调用它的programExitbackExitbackdialog behavior方面有所不同,主要在是否允许丢失输入数据。Cancel重新回到screen并初始化所有的data field

可以通过dropdown list为用户提供input helpF4 HELP是标准功能,input help通常定义在ABAP Dictionary中。Drop down box不允许用户直接输入值,只能从下拉框中选择值。为input field建立drop down box的步骤:

l         Set the drop down attribute to List box

l         Change the Visible length attribute to the displayed length of the descriptive text

l         Set the value list attribute to ‘’ to use value help from the ABAP Dictionary

l         如果需要的话:set the function code for the selection,同menu entry一样,这个function code也会激活PAI event

Visible length决定了fieldselection list的宽度(包括button)。对于ABAP Dictionary field下拉表的值会用search help自动填充,要求这个field必须有一个两个字段的search help或者是fixed valuesRadio buttons只能从一组中选择一个,check boxes可以选择多个,radio button遵循的是one selection rules out all other optionsCheck boxesradio buttons必须attach a name。除了input/output field你还可以为他显示texticon。文本可以通过text attribute来显示,Icon可以通过icon name attribute来显示,可以动态改变InputInvisible属性。通过screen painterfull screen editor可以创建checkbox,必须给checkbox指定一个name,在ABAP PROGRAM中要定义一个同名的长度为1类型为C的全局变量。可以同通过这个变量的名称来确定这个checkbox是否被选中,可以给check box分配一个function codefunction type。当用户选中它是,便会激活PAI eventfunction code便会传给command field。同样也是通过screen painter来创建radio button的。其步骤如下:

l         创建每一个radio button,必须为每一个button分配一个Name。然后在ABAP PROGRAM中定义同名的长度为1的类型为char的全局变量。

l         定义radio button group,选中多个radio button,选怎edit->grouping->radio button group->define

ABAP PROGRAM中,通过同名的全局变量来确认radio button是否被选中。可以为radio button group分配function codefunction type,选中radio button group中的任一一个radio button都会触发PAI事件,相应的function code也会被传送到command field中。

Push buttoncommand fieldinput field。通过鼠标用户就会得到跟单个screen上的一些元素或者一组screen上的一些元素相关的function。在data area中的push button可以hideshow一些信息。应该让pushbutton尽量靠近与其相关的元素。当鼠标点击了Pushbutton,就会执行相应的PAI processing blockPushbutton可以有texticon,你可以静态指定icon也可以通过ICON_CREATE动态指定。可以通过screen table动态设置visible length,output fieldinvisible属性。你也可以动态设置pushbuttontext,需要设置output field属性,并在ABAP PROGRAM中定义一个同名的全局变量。创建push button的步骤:

l         screen painter中创建,需要给pushbutton分配一个name,可以在text属性中输入static text,可以在function code属性中输入function codeFunction code可以自动传送到OK
_CODE
中。

l         激活command field,你必须在screen painter中给这个field一个name,然后在ABAP PROGRAM中定义一个同名的类型为sy-ucomm的全局变量。如果用户点击function type为‘’的pushbutton就会激活PAI event,如果function typeE,就会执行AT EXIT-COMMAND MODULE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值