Sunteți pe pagina 1din 7

Modularity in ABAP: Macro,Include,Subroutines,Function

Modules & Groups


When you modularize source code, you place a sequence of ABAP statements in a module. Then,
instead of placing all of the statements in your main program, you just call the module.When the
program is generated, the source code in the modularization unit is treated as though it were
actually physically present in the main program.
Need of Modularization

Improve the structure of the program.

Easy to read the code

Easy to maintain the code

Avoid redundancy and promotes code reuse

Various Modularization Techniques

Use of Macros

Use of include files

Subroutines

Function Modules

Lets look into each of them in detail :

SAP- ABAP Macro


If you want to reuse the same set of statements more than once in a program, you can include
them in a macro.
You can only use a macro within the program in which it is defined, and it can only be called in
lines of the program following its definition.
Macros can be useful for long calculations or complex WRITE statements.
Syntax
?

1 DEFINE <macro_name>
2
3 'Macro Statements
4
5 END-OF-DEFINITION
Macros can use Parameters &N where N = 1,2,3...
Example:?
1
DATA: number1 TYPE I VALUE 1.
2
3
DEFINE increment.
4
5
ADD 1 to &1.
6
WRITE &1.
7
8
END-OF-DEFINITION.
9
10
Increment number1.
11
12
WRITE number1.
13
Output: 2

Include Programs
Include Programs are solely for modularizing source code, and have no parameter interface.
Include programs allow you to use the same source code in different programs. They can be
useful if you have lengthy data declarations that you want to use in different programs.
Syntax
?
1 Include <include program Name>
Points to Note

Include programs cannot call themselves.

Include programs must contain complete statements.

Example:
?
1 INCLUDE ZILX0004.
2
3 WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

4
5 ================================
6
7 PROGRAM ZRPM0001.
8
9 INCLUDE ZILX0004.

Subroutines
Subroutines are procedures that you can define in any ABAP program and also call from any
program. Subroutines are normally called internally, that is, they contain sections of code or
algorithms that are used frequently locally. If you want a function to be reusable throughout the
system, use a function module.
Syntax?
1 FORM <Subroutine> [<pass>].
2
3 <Statement block>.
4
5 ENDFORM.
<Subroutine> = Name of the subroutine
<pass> = Parameters being passed
Types of Subroutines
1. Internal
o Subroutine defined in same program being called.
o Can access all the data objects declared in the main ABAP/4 program.
2. External
o Subroutine defined outside the program being called.
o Need to use the <pass> option or declare data objects in common parts of
memory.
Calling a Subroutine Internal Subroutines
?
1 PERFORM <subroutine> [<pass>]
<subroutine> = Name of the subroutine

<pass> = Parameters being passed


Data declared in main program is automatically available.
External Subroutines
?
1 PERFORM <subroutine>(<Program>) [<pass>].
2
3 PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].
4
5 PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND].
6
7 PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
Points to Note

Nested calls are allowed in subroutines (i.e. PERFORM within a FORM ... ENDFORM ).

Recursive calls are also possible.

To define local data, use the DATA statement after FORM . Each time you enter the
subroutine, the data is recreated (with an initial value) and released at the end (from the
stack).

To define global data used within a subroutine, use the LOCAL statement after FORM .
The values are saved when you enter the subroutine and then released at the end (from
the stack)

Function Modules
Function Modules are general purpose ABAP/4 routines that anyone can use. Infact , there are a
large number of standard function Modules available.
Function Modules are organized into Function Groups: Collections of logically related functions.
A Function module always belongs to a Function Group.
Syntax?
1 FUNCTION <function module>
2
3 <Statements>
4
5 ENDFUNCTION.
Important information Associated with Function Module

Administration

Import/Changing/Export parameters.

Table Parameters/Exceptions.

Documentation

Source code - L<fgrp>U01 . <fgrp> is the Function Group

Global Data - L<fgrp>TOP .Global data for the function group- Accessible across
function modules in the function group.

Main Program - SAPL<fgrp> . Contains the list of all the include files for that function
group

Call a Function Module


To call a function module, use the CALL FUNCTION statement:
?
1
2
3
4
5
6
7
8
9
10
11
12
13

CALL FUNCTION <module>


[EXPORTING

f1 = a 1.... f n = a n]

[IMPORTING

f1 = a 1.... f n = a n]

[CHANGING

f1 = a 1.... f n = a n]

[TABLES

f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]

[OTHERS = ro]].

Function Groups
Function groups are containers for function modules. Infact, there are a large number of standard
Function Groups. All of the function modules in a function group can access the global data of
the group.
Like executable programs (type 1) and module pools (type M), function groups can contain
screens, selection screens, and lists.
Points to Note

Function Groups cannot be executed.

The name of a function group can be up to 26 characters long.

When you create a function group or function module, the main program and include
programs are generated automatically.

Function groups encapsulate data.

How to create a Function Group


1. Goto Transaction SE80.
2. Select Program in the DropDown.
3. Write the name of the Function Group That you want to create. Generally User made
Function groups start with "Z". e.g. - <Z_FUNCTION_GROUP_NAME> . Hit Enter
Key.
4. Note that The TOP Include is create by default if the user checks the option of creating a
TOP include.
How to create a Function Module
1. Create a function Group (say "ZCAL").
2. Create a function module, set the attributes like (Function group, Application, Short Text
and Process Type) and Save.
3. Include file "LZCALU01" will have source code of first function module.
4. Include file "LZCALTOP" will have global data.
5. Main program "SAPLZCAL" contains
o Global data Include file "LZCALTOP"
o Function modules include file "LZCALUXX"
o User defined Include files "LZCALF..", "LZCALO.." and "LZCALI.."
6. Define interface parameters and Exceptions
7. Write the source code

8. Activate Function Module


9. Testing the Function Module - Single Test & Debugging
10. Documenting and Releasing a Function Module
That's all to Modularity in ABAP.

S-ar putea să vă placă și