LESSON 6 INTERNAL PROGRAM MODULARIZATION
INTERNAL PROGRAM MODULARIZATION:
An
ABAP program is a collection of processing blocks. A processing block
is a passive section of program code that is processed sequentially when
called.Processing blocks are the smallest units in ABAP. They cannot be split, which also means that they cannot be nested.
There are various kinds of ABAP processing blocks:
Event blocks are
ABAP processing blocks that are called by the runtime system. Event
blocks can logically belong to the executable program, to the selection
screen, to the list or to the screen. This unit deals with event blocks
that belong to the executable program. You can find information on event
blocks that belong to the selection screen, the list or the screen in
the units on user dialogs.
Subroutine processing is triggered by an ABAP statement. Parameters can be passed to
subroutines using an interface and subroutines can contain local variables.
Modules are special ABAP processing blocks for processing screens. Therefore modules are dealt with in the User Dialogs: Screens unit.
Memory
areas are made available for all a program's global data objects when
that program is started. Declarative ABAP statements are therefore not
components of ABAP processing blocks but are collected from the overall
source code using a search when the program is generated. The exceptions
to this are local data objects in subroutines.
In
all of the programs that we have seen so far in this course, there has
only been one processing block in addition to the data declaration. In
this case, there is no need to declare the processing block explicitly.
However, in more complex programs, we will require several different
processing blocks and will need to specify the type and name.
The
program shown above is an example of event blocks. It contains an input
value for a date on a selection screen. The default value is the date
from the week before. This cannot be realized by a default value from
the PARAMETERS statement, since a calculation is required. The DEFAULT addition to the PARAMETERS statement ensures that the data object is filled with the default value at the start of the program.
Default values can be literals or fields from the sy structure. The runtime system fills the sy-datum field with the current date at the start of the program. You can use the INITIALIZATION event block to change variables at runtime but before the standard selection screen is sent. START-OF-SELECTION is an event block for creating lists.
All
global declarations are recognized as such by the system by the
declarative ABAP key words that they use, and these form a logical
processing block (regardless of where they are placed in the program
code). When you generate the program, the system searches the entire
program code for declarative statements. However, for the sake of
clarity, you should place all declarative statements together at the
beginning of your programs. The PARAMETERS statement
is one of the declarative language elements. When the program is
generated, a selection screen is also generate d along with the
information on the elementary data object of the type specified.
The easiest events to understand are those for an executable program (type 1).
The ABAP runtime system calls event blocks in a sequence designed for generating and processing lists:
First, the INITIALIZATION event block is called
Then a selection screen is sent to the presentation server
After the user leaves the selection screen, START-OF-SELECTION is called
If the START-OF-SELECTION event block contains the ABAP statements WRITE, SKIP or ULINE, a list buffer is filled.
The list buffer is subsequently sent to the presentation server as a list.
Event
blocks are processing blocks that are called by the ABAP runtime
system. The sequence in which they are processed is determined by the
runtime system.
In executable programs, there are different event blocks for the various tasks involved in creating lists.
In an ABAP program, an event block is introduced with an event key word. It ends when the next processing block starts. There is no ABAP statement that explicitly concludes an event block.
Event
blocks are called by the ABAP runtime system. The order in which you
arrange the event blocks in your program is irrelevant - the system
always calls them in a particular order.
START-OF-SELECTION is
the first event for generating a list. It is called by the ABAP runtime
system as soon as you have pressed the execute button.
INITIALIZATION is an event that you can use if you need to set a large number of default values.
This
event block allows you to set default values that can only be
determined at runtime. In the above example, the date 'A week ago' is
calculated and placed in data object pa_date. The ABAP runtime system
then sends a selection screen to the presentation server containing the
calculated value as a default. The value can, of course, still be
changed by the user.
Subroutines
are processing blocks with a defined interface that can be called from
any processing block using the ABAP statement. Subroutines provide
internal program encapsulation.
You can navigate from the program object list to the subroutines.
The where-used list for a subroutine displays all the program lines that call the subroutine.
Ideally,
all you need to do to determine the functional scope of the subroutine
is to examine the subroutine name, the interface and the comments. If
the subroutine contains the functionality you require, then you need the
following information to be able to call the subroutine:
Subroutine name
Interface parameters it accesses (read-only): the parameters are listed after the USING addition.
The type and sequence of the interface parameters is important.
Interface parameters it changes: the parameters are listed after the CHANGING addition. The type and sequence of the interface parameters is important.
When
a subroutine is called, all the interface parameters have to be filled
with values. A distinction is made between the following parameters:
After USING, the parameters that the subroutine only needs to read are listed.
After CHANGING, the parameters that are changed in the subroutine are listed.
If the subroutine is called from the ABAP processing block by a PERFORM statement,
the system interrupts the processing block to process the subroutine
sequentially. When the last line of the subroutine (ENDFORM.) is reached, the system carries processing after the PERFORM statement.
You can track runtime behavior in the debugging mode. This gives you various options:
You can go through the entire program, including the subroutine, line by line, using Single Step
You can go through a processing block line by line using Execute. Subroutines are then executed as a whole
You can leave single -step processing of a subroutine and return to the calling program using Return
The method used for calling the interface parameters is set in the subroutine interface. The
parameters can be called either by reference or by value.
Calling by reference: The
address of the actual parameter is called. Within the subroutine, the
variable is addressed using the formal parameter name. Changes have an
immediate effect on the global variable. If only the formal parameter
name is specified in the subroutine interface, then the parameter is
called by reference.
Calling by value: When
the subroutine is called, a local variant is created with the formal
parameter name and the actual parameter value is copied to the formal
parameter. There are two types of call by value:
Calling by value: the formal parameter is listed in the interface after the USING clause with the addition VALUE( ). When
the subroutine is called, the actual parameter is copied to the formal
parameter. Changes made to the formal parameter only affect the local
copy, not the actual parameter.
Calling by value and result: the formal parameter is listed in the interface after the CHANGING clause with the addition VALUE( ).
When the subroutine is called, the actual parameter is copied to the
formal parameter. Changes made to the formal parameter initially only
affect the local copy. When the ENDFORM statement is reached, the formal parameter value is copied back to the actual parameter.
The parameters in the interface are called formal parameters , and the parameters that you pass to the subroutine are called actual parameters .
You
must have the same number of actual parameters as formal parameters.
You cannot have optional parameters. Parameters are assigned in the
sequence in which they are listed.
When you call a subroutine using PERFORM, the system checks whether the types of the actual parameters in the PERFORM statement are compatible with the formal parameters. Different kinds of checks are performed for different types:
Complete type checks:
TYPE D, F, I, T or . These types are fully specified. The system checks to see if the data type of the actual parameter is identical to the type of the formal parameter in its entirety.
Partial type checks of generic types
TYPE C, N, P or X. The system checks whether the actual parameter has the type C, N, P or X. The length of the parameter and the number of decimal places in the DECIMALS addition (type P) are passed from the actual parameter to the formal parameter.
TYPE all unspecified information from generic
Dictionary types is inherited by the formal parameter from an actual parameter.
No comments:
Post a Comment