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

### ABAP Dialog Screen Code Structure In the context of SAP development, an ABAP dialog screen is a tool used to create user interfaces that interact with business logic written in ABAP. The structure of ABAP dialog screens involves several key components and follows specific guidelines. #### Definition and Purpose An ABAP dialog screen allows developers to design interactive forms where users can input data or make selections. These screens are closely tied to ABAP programs through flow logic and module pools[^1]. #### Components of ABAP Dialog Screens The main elements include: - **Screen Attributes**: Defined at the top of the screen painter, these attributes specify properties like number, title, and type. - **Fields on Screen**: Each field has its own characteristics such as name (which must match the corresponding database table column), position, length, offset, etc., all defined within the screen layout area using the screen painter tool. - **Flow Logic**: This part contains instructions for processing events triggered by actions performed on the screen, including PAI (Process After Input) and PBO (Process Before Output). Flow logic uses special syntax not found elsewhere in standard ABAP coding practices[^3]: ```abap PROCESS BEFORE OUTPUT. MODULE status_0100. ENDMODULE. ``` - **Modules/Methods**: Modules contain executable statements associated with particular points during execution; they may be called from either event blocks inside flow logic or directly via function calls within other modules. - **Field Selection Table (FST)**: A list defining which fields should appear visually when rendering the GUI element linked to this screen instance. #### Example Code Snippet Demonstrating Basic Structure Below demonstrates how one might set up basic structures required for creating simple dialog screens in ABAP programming language: ```abap * Module Pool Declaration Section REPORT zdialog_example NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65(4). TABLES sflight. DATA: wa_sflight TYPE sflight, it_sflight LIKE TABLE OF sflight. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01. PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY MEMORY ID carr. PARAMETERS: p_connid TYPE sflight-connid OBLIGATORY MEMORY ID conn. SELECT-OPTIONS: so_fldate FOR sflight-fldate. SELECTION-SCREEN END OF BLOCK b1. INITIALIZATION. PERFORM init_data. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CARRID' dynprofield = 'P_CARRID' TABLES value_tab = gt_value_help EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. START-OF-SELECTION. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE @it_sflight WHERE carrid IN @p_carrid AND connid EQ @p_connid AND fldate BETWEEN @so_fldate-low AND @so_fldate-high. END-OF-SELECTION. LOOP AT it_sflight INTO wa_sflight. WRITE:/ wa_sflight~carrid, / wa_sflight~connid, / wa_sflight~fldate. ENDLOOP. ``` This example shows initialization sections, selection screens setup along with their respective handlers, start-of-selection block containing SQL queries against backend tables, end-of-selection section handling output display operations after fetching records based upon given criteria provided by end-users interacting through front-end interface built over generated dialog windows. --related questions-- 1. How does one define custom validations for inputs made into ABAP dialog screens? 2. What role do transaction codes play concerning interaction between back-end processes and frontend displays created via ABAP dialog screens? 3. Can you explain more about integrating web services with traditional ABAP applications utilizing dialog screens? 4. In what ways could modern technologies enhance classic ABAP dialog screen functionalities without compromising system stability? 5. Are there any best practices recommended while designing complex layouts involving multiple interconnected dialog screens within single application flows?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值