Lesson 9 Dialogs and Screens
Screens are made up of more than just a monitor display with input and output fields.
Screens'
 integration with the ABAP-Dictionary allows the system to perform 
consistency checks for their input fields automatically. These checks 
include required input check, type checks, foreign key checks, and fixed
 value checks. All of these checks rely upon ABAP Dictionary 
information.
Checks
 like the ones above can be complemented by other program specific 
checks. There are techniques available for screens that allow you to 
control in what order checks are then performed.
When
 an error is detected, the corresponding field is called and displayed 
ready for input. Screen layout is also very flexible. Input fie lds, 
output fields, radio buttons, check boxes, and even pushbuttons can be 
placed on screens. They allow users to determine in which direction the 
program will proceed.
On
 the whole, such user influence on program progression allows for more 
program flexibility in those programs that do contain screens.
You can call screens from any ABAP processing block that you want.
You can link several screens to one another and then call them from within a program by simply calling the first screen.
Some ABAP programs are made up exclusively of screens and their correponding ABAP
processing blocks. In this case the first screen is called directly using a transaction code.
Double-click on an entry in the basic list 'timetable' to reach a screen. This screen displays data
The major steps in creating a screen:
specifying its properties (Screen Attributes)
specifying its layout (in Fullscreen Editor)
defining attributes for the elements on the screen (Field List)
programming its flow logic
You
 should be able to call your screen by double -clicking a line within 
the basic list and you should be able to return to the basic list by 
choosing the appropriate function key on the screen. 
There are several ways to create screens:
Forward
 Navigation: You can create screens from within the ABAP Editor by 
double –clicking on the screen number. This transfers you into Screen 
Painter automatically
Object Navigator: You can also create a screen from the object list in the Object Navigator 
When creating a screen for the first time the system will ask you to enter screen attributes. Enter a short description of the screen, select screen type Normal and enter the number of the subsequent screen in the Next Screen input field.
If you enter 0 or leave the Next Screen field
 blank, the system first processes your screen completely and then 
returns to processing the program at the point immediately following the
 screen call. Be aware that in the Next screen input field, the 0 is suppressed, since it is the same as the initial value of the field.
There are two ways of assigning field attributes to screen fields:
Adopt them from the Dictionary: You can adopt types and field attributes from existing
ABAP Dictionary structures. This makes all information about the object available to you,
including
 semantic information about its data elements and foreign key 
dependencies. The name of the Dictionary field is automatically adopted 
as a field name.
Adopt them from a program:
 You can adopt field attributes from data objects already defined within
 a program. In order to do this, however, an activated copy of the 
program must already exist. The name of the data object is automatically
 adopted as a field name.
The
 Graphical Screen Painter's interface allows you to define screen 
elements (for example, input and output fields, keyword texts, borders, 
and so on) with relative ease. Choose the desired screen element from 
the column on the left and then place it on the screen using your mouse.
You can delete screen elements simply by selecting them with your mouse and then choosing delete. 
You can move screen elements by holding down your left mouse button and dragging them to a new position.
You can maintain screen field attributes by selecting a field and choosing Attributes.
You
 can classify certain fields as 'mandatory'.(. "Required field"). A 
question mark is displayed at runtime if the field is initial.
If
 not all required fields have been filled at runtime and a user action 
is performed, an error dialog is triggered and all input fields are once
 again displayed ready for input.
You can also edit screen field attributes by choosing Field list.
The field list is then displayed as a tab.
This same function can also be accessed in a different format from within the Graphical Screen Painter.
The statement TABLES declares an internal data object that serves as an interface for the screen.  
TABLES always refers to a structure that is defined in the ABAP Dictionary.
If a TABLES statement
 and a screen field both refer to the same Dictionary structure, this 
data object's data is transported to the screen fields every time the 
screen is called. Any new entries or changes that the user makes on the 
screen are then transferred back into this data object.
Data transport takes place automatically between screens and program data objects of the same name:
Immediately before a screen is sent to the presentation server (after all PBO event
 modules have been processed) the system copies field contents out of 
the ABAP work area into their corresponding fields in the screen work 
area.
ABAP statements facilitate data transport between program data objects and the work area designated as the screen interface.
Data transport takes place automatically between screens and program data objects of the same name:
Immediately after a user action (before the first PAI module
 has been processed) the system copies field contents out of the screen 
work area and into their corresponding fields in the ABAP work area.
ABAP statements facilitate data transport between the work area designated as the screen interface and program data objects.
In
 order to ensure that the database data that is displayed on the screen 
is up-to-date, the record is read again from the database at the 
beginning of AT LINE-SELECTION.
 Advantages of this method:
 For
 the basic list, only those columns of the database table that are 
displayed on the list need to be read. This can improve performance with
 large lists.
 The
 data that is displayed on the screen is always up-to-date, even if the 
data record selected has only just been changed using this program. This
 would not happen if all screen data was placed in the HIDE area when the basic list is created.
 Changes
 made to the database using the screen do not lead to incorrect values 
in the basic list, as the modifiable fields are not contained in the 
list.
 Looking ahead to the lock concept: The lock times can be shortened. You find more detailed information on this topic in the Database Dialogs II unit.
 The
 program can be extended: Additional information from the data record 
can be displayed on the screen without having to make many changes.
To display data on the screen, the TABLES structure
 must be filled with current data before the screen is sent to the 
presentation server. The example above shows one way of doing this.
The data record is read from the database using SELECT SINGLE.
 This ensures that the structure contains current data, even if the user
 has just changed the data. The structure is assigned the same type as 
the database table line type, so that suitable fields are available for 
all data in the data record.
The system transports the structure data to the screen fields automatically.
Each screen has two corresponding event blocks:
PROCESS BEFORE OUTPUT (PBO) is processed immediately before a screen is displayed. At this time modules are called that take care of tasks such as inserting recommended values into input fields.
PROCESS AFTER INPUT (PAI) is processed immediately after a user action. All program logic that is influenced by user action must be processed at PAI. You will learn more about this in step three.
Note: The code for the events PBO and PAI is written using the Screen Painter and not the ABAP Editor. These two event blocks make up a screen's flow logic.
When programming flow logic, use the set of commands called Screen ABAP. MODULE  is the most important Screen ABAP command. It calls a special ABAP processing block called a module.
Modules are
 ABAP processing blocks with no interface that can only be called from 
within a program's flow logic. Modules begin with the ABAP statement MODULE and end at ENDMODULE. 
Program logic that logically belongs to a specific screen should normally be processed at the screen's PBO and PAI events.
If you enter 0 or leave the Next Screen field
 blank, the system first processes your screen completely and then 
carries on processing the program from where the screen was called.
If you set the Next screen of screen 100 to 100, the system processes the screen again, after it has finished processing the PAI module.
You can use the ABAP statement SET SCREEN  within a PAI module to override dynamically the value set in the Next screen attribute.
Often the same screen number is entered in both the Screen number and Next screen fields. In this case, when you choose Enter, a
 field check is performed and the system returns you to the same screen.
 In order to leave the screen, an appropriate pushbutton must be defined
 that then triggers a Next screen change within the PAI module.
With the help of the OK_CODE field, different program logic can now be processed by the PAI modules depending on what the user inputs.
If an OK_CODE field
 is not initialized, errors can occur since not every pushbutton is 
required to have a function code. There are two ways of doing this:
 Initialize the OK_CODE field
 in a PBO module. Then it is set to the initial value at PAI, unless the
 user has carried out a user action to which a function code is 
assigned. In this case, the OK_CODE field contains the function code.
 Use an auxiliary field and copy the contents of the OK_CODE field to the auxiliary field in a PAI module, and then initialize the OK_CODE field. In this case, the auxiliary field must be queried in the PAI module for the function code evaluation.
You can implement calls such as MODULE within a screen's flow controls (PBO and PAI events). 
The modules themselves are, however, created using ABAP.
There are two ways to create a module:
using forward navigation: Double-click on the module name from within the Screen Painter Editor to create the module.
Using the Object Navigator:
 If you want to create a module using the object list in the Object 
Navigator, first display your program, then choose 'PBO module' or 'PAI 
module' in the ProgramObjects display and create a new development object by selecting the create icon.
A module can be called from more than one screen. (Reusability)
No comments:
Post a Comment