Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Program Modularisation
ABAP Training Program Modularisation 2
Why Modularisation?
Modularisation in ABAP
Overview Of Modularisation
PROGRAM RSAAA10A .
CALL : CALCULATE
SUB ROUTINE
LOSS .
INTERNAL SUB
ROUTINE :
CALL : CALCULATE PROGRAM
EXTERNAL LOSS . RSAAA10C .
SUB ROUTINE
PROGRAM
EXTERNAL SUB
RSAAA10C .
ROUTINE :
CALL : CALCULATE
CALCULATE LOSS .
LOSS .
FUNCTION PROGRAM ABAP/4 FUNCTION
MODULE RSAAA10E . LIBRARY
CALL : CALCULATE Function Module:
LOSS . CALCULATE LOSS .
ABAP Training Program Modularisation 6
Subroutines
* Subroutine
FORM <name> USING A B. TABLES
* Local Data Global Data
DATA: S TYPE i. Formal Parameters
* Statements Local Data
ENDFORM.
ABAP Training Program Modularisation 8
Call by reference
Call by value
Normal scoping rules apply to calling & called data items
ABAP Training Program Modularisation 9
Call by value :
During a subroutine call, the formal parameters are created as
copies of the actual parameters. The formal parameters have
memory of their own. Changes to the formal parameter have no
effect on the actual parameter.
ABAP Training Program Modularisation 10
a1
CALL BY VALUE
f1
a1
CALL BY REFERENCE
f1
ABAP Training Program Modularisation 11
Passing by reference
USING or CHANGING
Passing by value
FORM <subr> … USING value(<fi>) …
ABAP Training Program Modularisation 12
PROGRAM RSAAA10B .
PERFORM CALCULATE_LOSS
ACTUAL PARAMETERS
SFLIGHT-PRICE SFLIGHT-SEATSOCC REVENUE LOSS
1 1 3
2
FORMAL PARAMETERS
1 . CALL BY VALUE
2 . CALL BY REFERENCE
3 . CALL BY VALUE & RESULT .
ABAP Training Program Modularisation 14
PROGRAM RSAA10D .
TABLES : SFLIGHT .
DATA : REVENUE . . .
:
PERFORM write_sflight1 USING SFLIGHT .
PERFORM write_sflight2 USING SFLIGHT .
:
FORM write_sflight1 USING REC .
WRITE : / REC .
ENDFORM .
FORM write_sflight2 USING REC LIKE SFLIGHT .
WRITE : / REC-CARRID , REC-CONNID .. . . .
ENDFORM .
ABAP Training Program Modularisation 17
PROGRAM RSAA10E .
TABLES : SFLIGHT .
DATA : TAB LIKE SFLIGHT OCCURS 50 WITH HEADER LINE .
:
PERFORM calc_write1 USING TAB[] .
PERFORM calc_ write2 TABLES TAB .
:
FORM calc_write1 USING TABBODY LIKE TAB[] .
DATA : TAB LIKE SFLIGHT .
LOOP AT TABBODY INTO TAB .
WRITE : / TAB-CARRID .
ENDLOOP .
ENDFORM .
FORM calc_write2 TABLES ITAB STRUCTURE TAB .
LOOP AT ITAB .
WRITE : / ITAB-CARRID .
ENDLOOP .
ENDFORM .
ABAP Training Program Modularisation 18
Terminating Subroutines
Unconditional termination
EXIT in the subroutine
Conditional termination
CHECK <cond> in the subroutine
Function Modules
Function Builder
FM Group: FIBU
FM_01 ...
FM_02 ...
Maintaining Function FM Group: ZIBU
FM_03 …
Using Function
Modules FM_04 ... Modules
FM_02
REPORT ...
Interface
TABLES: …
Import
Export
CALL FUNCTION
Tables
‘FM_02’
Exceptions
EXPORTING…
Program
IMPORTING...
Documentation
Administration
ABAP Training Program Modularisation 23
Calling Functions
Calling Functions
Calling Functions
fi, and, after processing the system passes the (changed) formal
parameters fi back to the actual parameters ai
TABLES f1=a1 …fn=an
Enables the passing of internal tables between actual and formal
parameters
Tables are always passed by reference
ABAP Training Program Modularisation 32
Calling Functions
to handle itself
The OTHERS clause covers all exceptions not explicitly specified
Exceptions
NO_ENTRY REPORT ZXXXXXX.
CALL FUNCTION ‘FILL_SEATTAB’
EXPORTING
YEAR = YEAR
Exception defined in TABLES
SEATTAB = ITAB
function definition EXCEPTIONS
NO_ENTRY = 01
OTHERS = 02.
CASE SY-SUBRC.
Exception condition WHEN 1. WRITE ‘No Entry’.
WHEN 2. WRITE ‘Other Error’.
checked on return ENDCASE.
from function
ABAP Training Program Modularisation 34
Function Modules
MAINTAINING FUNCTION
MAINTAINING FUNCTION MODULES .
MODULES .
FUNCTION LIBRARY
PROGRAM ....
FM_02
INETRFACE FM GROUP : FIBU . CALL FUNCTION ‘FM_02 ‘
IMPORT EXPORTING
EXPORT
FM_01 . .
IMPORTING
TABLES FM_02 . . :
EXCEPTIONS FM GROUP : ZIBU .
PROGRAM FM_03 . .
DOCUMENTATION
ADMINISTRATION FM_04 . .
ABAP Training Program Modularisation 37
FUNCTION LIBRARY
CREATE
FUNCTION GROUP
APPLICATION ZDEM F4
Function Group
Group of logically related function modules which share the same
program context at runtime.
A function group is the main program for the function modules it
contains. Functions that use the same data are normally assigned to the
same function group.
ABAP Training Program Modularisation 40
Documenting Functions
PROGRAM RSAA10G .
TABLES : SFLIGHT .
DATA : LOSS LIKE SFLIGHT-PAYMENTSUM .
CALL FUNCTION ‘CALCULATE_REVENUE_LOSS’
EXPORTING
PAYMENTSUM = SFLIGHT-PAYMENTSUM
SEATSOCC = SFLIGHT-SEATSOCC
PRICE = SFLIGHT-PRICE
IMPORTING
LOSS = LOSS
REVENUE = REVENUE .
PROGRAM RSAA10G .
TABLES : SFLIGHT .
DATA : LOSS LIKE SFLIGHT-PAYMENTSUM .
CALL FUNCTION ‘CALCULATE_REVENUE_LOSS’
EXPORTING
PAYMENTSUM = SFLIGHT-PAYMENTSUM
SEATSOCC = SFLIGHT-SEATSOCC
PRICE = SFLIGHT-PRICE
IMPORTING
LOSS = LOSS
REVENUE = REVENUE .
Changing Parameter
PROGRAM RSAA10G .
TABLES : SFLIGHT .
DATA : LOSS LIKE SFLIGHT-PAYMENTSUM .
CALL FUNCTION ‘CALCULATE_REVENUE_LOSS’
EXPORTING
PAYMENTSUM = SFLIGHT-PAYMENTSUM
SEATSOCC = SFLIGHT-SEATSOCC
PRICE = SFLIGHT-PRICE
IMPORTING
CHANGING
PROGRAM RSAA10H .
TABLES : SFLIGHT .
DATA : ITAB LIKE BCAXX OCCURS 10 WITH HEADER LINE .
CALL FUNCTION ‘FILL_SEATTAB’
EXPORTING
YEAR = YEAR
TABLES
SEATTAB = ITAB .
Exception Handling
PROGRAM RSAA10H .
TABLES : SFLIGHT .
DATA : ITAB LIKE BCAXX OCCURS 10 WITH HEADER LINE .
CALL FUNCTION ‘FILL_SEATTAB’
EXPORTING
YEAR = YEAR ABAP/4 FUNCTION MODULE FILL_SEATTAB
TABLES
EXCEPTIONS NO_ENTRY .
ASGH = ITAB
EXCEPTIONS
NO_ENTRY = 01
OTHERS = 02 .
Interfaces
Z_FREESEAT
GLOBAL INTERFACE
IMPORT PARAMETER REFERENCE FIELD PROPOSAL
:
EXPORT PARAMETER REFERENCE FIELD PROPOSAL
DOCUMENTATION
SHORT TEXT
PARAMETER
SEATSOCC
ABAP Training Program Modularisation 46
Program Editor
FUNCTION Z_FREESEAT
•IMPORTING
•EXPORTING
•CHANGING
•TABLES
•EXCEPTIONS
LOCAL DECLARATIONS
STATEMENTS
ENDFUNCTION .
ABAP Training Program Modularisation 47
Exceptions
CALL
Z_FREESEAT
EXCEPTIONS CALL FUNCTION EXPORTING
PLANE_OVERLOAD. IMPORTING
EXCEPTIONS
PLANE_OVERLOAD = 1.
CASE SY-SUBRC .
PROGRAM WHEN 1.
...
IF SEATSOCC > SEATSMAX . ENDCASE.
RAISE PLANE_OVERLOAD .
ENDIF .
ABAP Training Program Modularisation 48
Test Environment
CALL
FUNCTION MODULE Z_FREESEAT
EXPORT PARAMETER VALUE
:
IMPORT PARAMETER VALUE
:
TABLES No. OF LINES
ABAP Training Program Modularisation 49
Subroutines
MAIN PROGRAM
CALL
ABAP/4 PROGRAM L<gr>F01.
FUNCTION . . .
:
FORM SUB ROUTINE1 USING . .
:
PERFORM SUB ROUTINE1 USING . .
ENDFORM .
:
ENDFUNCTION .
ABAP Training Program Modularisation 50
GLOBAL DATA
Global Data/ Local Memory
L<gr>TOP .
FUNCTION- POOL <gr>
DATA :
:
SUB ROUTINE
PROGRAM
L<gr>F01 .
FUNCTION . . .
FORM SUB1 USING . . DATA : . . . .
DATA : . . . . MOVE x TO ….
MOVE . . . TO X. PERFORM SUB1
: ENDFUNCTION .
ENDFORM .
ABAP Training Program Modularisation 51
Program Organization
L<gr>TOP .
FUNCTION- POOL <gr>
MESSAGE-ID zz .
DATA : “ Global Data
:
SAPL<gr>
INCLUDE L<gr>U01 .
INCLUDE L<gr>U02 .
L<gr>U01 .
FUNCTION FA .
L<gr>U01 .
FUNCTION FB .
ABAP Training Program Modularisation 52
Export parameters
Import parameters
Tables
Changing
Exceptions
ABAP Training Program Modularisation 53
Hardware platforms
Operating systems
communication protocols
ABAP Training Program Modularisation 54
program
Remote function call
Called function resides on a different machine to the calling
program
Machines must be connected via a network
Description of connection
ABAP Training Program Modularisation 61
function
Function is carried out and results sent back to the user
ABAP Training Program Modularisation 62
Runtime system
Converts data to machine independent representation
Partner system
Resolves inconsistencies in terms of
Exception conditions
Communication_failure
System_failure
Conclusion
Parameter passing
Call function