Professional Documents
Culture Documents
Sap-Abap-Refresher-Course Satyam
Sap-Abap-Refresher-Course Satyam
Course Content
Table of Contents
Topic 1
INTRODUCTION TO ABAP
Sap Netweaver: An overview Navigation in R/3 system Overview of ABAP
Topic 2
Topic 3
ABAP DICTIONARY
Introduction Database Tables Domains Views Search helps Locking Concept
Course Content
Topic
Topic 4
ADVANCED ABAP
O Open SQL Dynamic programming
Topic 5
ABAP OBJECTS
Cl Classes and d objects bj t Inheritance Polymorphism (casting) Interfaces Events Global classes and interfaces Exception handling
Topic 6
Course Content
Topic
Topic 7
DIALOG PROGRAMMING
Screen (basics) Screen logic, Screen Painter , Menu Painter Input checks, changing of input values Error handling Step loops Table Control Field help and value help
Topic 8
DATABASE CHANGES
Database updates with open SQL LUW Processing Update Bundling Techniques Programming Bundling Updates. Updates Unbundled Updates Local Updates
Course Content
Topic
Topic 9 ENHANCEMENTS & MODIFICATIONS
Enhancements to SAP Objects E h Enhancements t via i Menu M Exits E it / Screen S Exits E it / Function F ti Module M d l exits it Business Add-Ins Modifications via Registering the Modifications in SSCR, Modification Adjustment, Rules for Modifications
Topic 10
Course Content
Topic
Topic 11 ADDITIONAL TOPICS : SMART FORMS
Introduction to Smart Forms Structure of a form Windows Architecture Forms Nodes Form Painter Table Painter PC Editor Style Builder Driver Program
Topic 12
Course Content
Topic
Topic 13
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
SAP PMG
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION
Data Types & Data Objects Internal Tables Modularization of ABAP R/3 ABAP Runtime system : Debugging Function Module & Function Groups p
Data Types
The e following o o g list st is s an a overview o e e o of the t e main a features eatu es o of data types a and d objects: Data types: A data type describes the technical attributes of all the objects with that type. There is no memory associated with data types.
Data types Elementary Predefined C,D,F,I,N,P,T,X ABAP/4 Contains eight predefined elementary data yp types User-defined User defined elementary data yp based on the typesare predefined Elementary data types Field Strings and internal tables : These structured data types can be used for data objects and are user defined.
Structured
TABLE : This predefined structured data type is used for the typing of formal parameters and field symbols Reference types describe data objects You will have to create your own that contain references (pointers) to references other objects (data objects and objects in ABAP Objects).
Reference
Variable-Length Elementary Types: There are two predefined types in ABAP with variable length: STRING for character strings
Satyam SAP PMG SAP PMG
Elementary Data Types - User Defined User-defined: elementary data types are based entirely on predefined elementary data types. To define your own elementary data types, you use the TYPES statement Example: TYPES: NUMBER TYPE I TYPES I. DATA: NO_FLIGHTS TYPE NUMBER
B) Inserting Ready-Made Comment Lines: To insert ready-made comment lines into your code, proceed as follows: 1.Follow steps 1 to 2 in inserting Ready-Made Ready Made keyword structures. 2.Select a structure with an asterisk(*) as a first structure from the other instruct. instruct field. field 3.The system inserts comment lines into your program
Data Objects
Data objects contain the data with which ABAP programs work at runtime. ABAP contains the following kinds of data objects: A) Literal They are not created by declarative statements statements. Instead Instead, they exist in the program code. They have fixed technical attributes but no name. Hence they are also referred to as unnamed data objects. B) Named Data Objects You declare these data objects either statically or dynamically at runtime. Their technical attributes are always fixed. ABAP contains the following kinds of named data objects:
Data Objects
Text symbols are pointers to texts in the text pool of the ABAP program. Variables are data objects whose contents can be changed using ABAP statements. t t t Constants are data objects whose contents cannot be changed. Interface work areas are special variables that serve as interfaces between programs, screens, and logical databases. Predefined Data Objects They do not have to be declared explicitly - they are always available at runtime. Dynamic Data Objects You create them dynamically using data references. They do not have a name.
Data Objects
External data objects External data objects exist independent of programs. You cannot work directly y with them, , but you y can copy py them to internal data objects j and write them back when you have finished. External data objects can be used globally throughout the system environment. ABAP/4 stores external data objects in tables defined in the ABAP/4 Dictionary. To access this data from within a program, you declare the tables in the program with the TABLES statement .
ABAP/4 includes some data objects with special features features, namely: Parameters
Parameters are variables which are linked to a selection screen. They can accept values after a program is started. Selection criteria
Selection criteria are special internal tables used to specify value ranges. They are linked to a selection screen.
In the context of Internal Tables, , you y use the operational p statements APPEND,COLLECT and INSERT to create lines of an Internal Tables dynamically. In case of selection screens screens,you you use the additional statements PARAMETERS SELECT-OPTIONS to create Data objects with special function
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Data Statement Syntax S t DATA <f>[(<length>)] <type> [<value>] [<decimals>]. In its basic form, the keyword DATA has the following parameters: <f> f <length> <type> <value> <decimals> Naming a Variable Specifying the Data Type and the Length of the Variable Specifying p y g a Start Value Specifying the Number of Digits after the Decimal Point
TYPE GROUPS
You use Type-Groups to store user-defined data types or constants in the ABAP/4 Dictionary for cross program use.In your ABAP/4 program, you declare type groups with the TYPE-POOLS statement as: S t Syntax: Type-Pools<name> T P l
To determine the number of decimals for a Type P field, you use the DECIMALS parameter with the DESCRIBE FIELD statement as follows:
Data Types & Data Objects Internal Tables Modularization of ABAP R/3 ABAP Runtime system : Debugging Function Module & Function Groups p
Internal Tables
Objective: The following section explains : Defining Internal Tables Processing Internal Tables Accessing A i Internal I t l Tables T bl Initializing Internal Tables
Internal Tables
Internal I t l tables t bl are structured t t d data d t types t provided id d by b ABAP/4. ABAP/4 Internal tables cannot be accessed outside the program environment. Purpose of internal tables Internal tables are used to reorganize the contents of database tables according to the needs of your program Internal tables are used to perform calculations on subsets of database tables. The number of lines in an internal table is not fixed. fixed Internal tables exist only during the run time of a program.
Appending Lines: To append a line to an internal table, use the APPEND statement as follows: Syntax APPEND [<wa> TO] <itab>. Eg: TYPES : BEGIN OF LINE, COL1 TYPE C, COL2 TYPE N, N END OF LINE. DATA TAB1 TYPE STANDARD TABLE OF LINE. LINE-COL1 = A. LINE-COL2 = 1. APPEND LINE TO TAB1. TAB1
Appending Lines depending on the Standard Key (COLLECT STATEMENT) To fill an internal table with lines which have unique standard keys. Syntax S t COLLECT [<wa> INTO] <itab> If an entry with the same key already exists(all non non-numeric numeric fields) the collect statement does not append a new line but adds the contents of the numeric fields in the work area to the contents of the numeric fields in the existing entry
ITAB1-COL1 ITAB1 COL1 = A A . ITAB1-COL2 ITAB1 COL2 = 1 1. COLLECT TAB1. ITAB1-COL1 = B. ITAB1-COL2 = 2. COLLECT TAB1. ITAB1-COL1 = A. ITAB1-COL2 = 1. COLLECT TAB1. This Produces the output as follows: A 2 B 2
In this example, all lines from the database table SPFLI in which CARRID field contains "LH" are read into the internal table ITAB1 one by one, where they can be processed further.
Syntax : MODIFY itab [FROM wa] [TRANSPORTING f1 ... fn [WHERE cond]]. Eg: TYPES : BEGIN OF LINE, LINE COL1 TYPE C, COL2 TYPE N, END OF LINE. DATA TAB1 TYPE TABLE OF LINE WITH HEADER LINE. DO 3 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO TAB1. ENDDO. LINE-COL1 = A. MODIFY O TAB1 FROM O LINE TRANSPORTING S O G COL1 CO WHERE COL2 CO = 4.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Loop Processing
Calculating Ca cu at g the t e totals tota s within t loopendloop. oop e d oop Syntax: SUM Eg. TYPES : BEGIN OF LINE, COL1 TYPE C, COL2 TYPE I, END OF LINE. LINE DATA TAB1 TYPE TABLE OF LINE WITH HEADER LINE. DO 3 TIMES. LINE COL1 = SY LINE-COL1 SY-INDEX. INDEX LINE LINE-COL2 COL2 = SY-INDEX SY INDEX ** 2 2. APPEND LINE TO TAB1. ENDDO. LOOP AT TAB1 TAB1. SUM. ENDLOOP.
AT
AT SUM.
Data Types & Data Objects Internal Tables Modularization of ABAP R/3 ABAP Runtime system : Debugging Function Module & Function Groups p
To modularize source codes the following two methods apply: a. Include programs b Macros b. To modularize tasks the following two methods apply: a. Subroutine b. Functional modules
Include Programs
If you want to use the same sequence of statements in several programs, you can code them once in an include program. Example - In the case of lengthy data declarations. How to create include programs ? How to use Include programs ?
You can create callable modules of program code within your ABAP/4 program by defining macros. macros To define a macro which contains part of the source code, you use the DEFINE statement as follows: Syntax: DEFINE <macro>. <statements> END-OF-DEFINITION. This defines f the macro <macro>. You must specify f complete statements between DEFINE and END-OF-DEFINITION. Note : Debugger does not stop at break break-points points applied at Macro. Macro
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Subroutines
Subroutines are program modules which can be called from ABAP/4 programs. There are two types of subroutines. I t Internal l subroutines: b ti The source code of internal subroutines is in the same ABAP/4 program as the calling procedure (internal call). External subroutines: The source code of external subroutines is in an ABAP/4 program other than the calling procedure (external call). call)
Defining Subroutines
A subroutine is a block of code introduced by FORM and concluded by ENDFORM To ENDFORM. T define d fi a subroutine, b ti use the th following f ll i syntax: t Syntax: FORM <subr> [<pass>] [<pass>]. <statement block> ENDFORM. <subr> <pass> The name of the subroutine. You specify how to pass data to and from the subroutine { {mainly y for external call}. }
Calling Subroutines
1 1. Calling Internal Subroutines:
To call an internal subroutine, use the PERFORM statement as follows: Syntax: PERFORM <subr> [<pass>]. 2. Calling External Subroutines:
To call an external subroutine, use the PERFORM statement as follows: Syntax: PERFORM <subr>(<prog>) [<pass>] [IF FOUND].
[<pass>] can be interpreted as : [TABLES itab1 itab2 ...] [USING a1 a2 ...] [CHANGING a1 a2 ...]
Calling Subroutines
Note: In the case of internal subroutines, you do not have to use the <pass> option, because the subroutine can access all data objects declared in the main ABAP/4 program. In the case of external subroutines, y you must decide whether to use the <pass> option or declare data objects in common parts of the memory.
Passing Data
Passing Data Between Calling Programs and Subroutines: 1. Declaring Data as Common Part 2. Passing Data by Parameters
You can pass data between calling programs and subroutines by using parameters. Parameters which are defined during g the definition of a subroutine with the FORM statement are called formal parameters. Parameters which are specified during the call of a subroutine with the PERFORM statement are called actual parameters. Syntax: PERFORM <subr>[(<prog>)] [TABLES <actual table list>] [USING <actual t l input i t list>] li t ] [CHANGING <actual output list>] FORM <subr> [TABLES <formal table list>] [USING <formal input list>] [CHANGING <formal output list>]
Calling by Reference : During a subroutine call, only the address of the actual parameter is transferred to the formal parameters. The formal parameter t h has no memory of f its it own. If you change h the th formal f l parameter, t the field contents in the calling program also change. Calling by Value : During a subroutine call, 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. Calling by Value and Result : During a subroutine call, the formal parameters are created as copies p p of the actual parameters. p The formal parameters have their own memory space. Changes to the formal parameters are copied to the actual parameter at the end of the subroutine.
Passing By Reference
To pass data between calling programs and subroutines by reference, use USING or CHANGING for the <pass> option of the FORM and PERFORM statements as follows: Syntax: PERFORM... [USING <ai1> ... <ain>] [CHANGING <ao1> ... <aon>] FORM ..... [USING <fi1> ... <fin>] [CHANGING <fo1> ... <fon>] ... You specify the formal and actual parameters in the list behind USING and CHANGING without any addition.
Passing By Value
To ensure that an input parameter is not changed in the calling program program, even if it is changed in the subroutine, you can pass data to a subroutine by value. For this, use USING for the <pass> option of the FORM and PERFORM statements as follows: Syntax: PERFORM... USING .......<aii> .. FORM ..... USING ...VALUE(<fii>) ..
If y you want to return a changed g output p parameter p from a subroutine to the calling program only after the subroutine has run successfully, use CHANGING for the <pass> option of the FORM and PERFORM statements as follows: Syntax: FORM ..... CHANGING ...VALUE(<fii>) .. PERFORM CHANGING .......<aii> PERFORM... < ii> ..
Example
REPORT FORMTEST. DATA: DATE1 TYPE D, DATE2 TYPE T, STRING1(6) TYPE C, C STRING2(8) TYPE C, C NUMBER1 TYPE P DECIMALS 2, NUMBER2 TYPE P, COUNT1 TYPE I, COUNT2 TYPE I. PERFORM TYPETEST USING DATE1 STRING1 NUMBER1 COUNT1. COUNT1 PERFORM TYPETEST USING DATE2 STRING2 NUMBER2 COUNT2.
Example
Cont.. FORM TYPETEST USING NOW TXT TYPE C VALUE(NUM) TYPE P INT TYPE I. DATA: T. DESCRIBE FIELD NOW TYPE T. WRITE: / 'Type of NOW is', T. DESCRIBE FIELD TXT LENGTH T. WRITE: / 'Length of TXT is', T. DESCRIBE FIELD NUM DECIMALS T. WRITE: / 'Decimals of NUM are', are' T T. DESCRIBE FIELD INT TYPE T. WRITE: / 'Type of INT is', T. ENDFORM ENDFORM.
Satyam SAP PMG SAP PMG
Example
Example of passing internal tables: PROGRAM FORM_TEST. DATA: BEGIN OF LINE, CO 1 TYPE I, COL1 COL2 TYPE I, END OF LINE. DATA ITAB LIKE STANDARD TABLE OF LINE. PERFORM FILL CHANGING ITAB ITAB. PERFORM OUT USING ITAB.
Example
Cont.. Co t FORM FILL CHANGING F_ITAB LIKE ITAB. DATA F_LINE LIKE LINE OF F_ITAB. DO 3 TIMES. F_LINE-COL1 = SY-INDEX. F_LINE-COL2 = SY-INDEX ** 2. APPEND F F_LINE LINE TO F F_ITAB. ITAB ENDDO. ENDFORM. FORM OUT USING VALUE(F_ITAB) LIKE ITAB. DATA F_LINE LIKE LINE OF F_ITAB. LOOP AT F F_ITAB ITAB INTO F_LINE. F LINE WRITE: / F_LINE-COL1, F_LINE-COL2. ENDLOOP. ENDFORM.
Terminating Subroutines
To terminate the processing of a subroutine, you can proceed in a similar way as for terminating a loop by using the EXIT or CHECK statements. Use EXIT to terminate a subroutine unconditionally. Use U CHECK t to t terminate i t a subroutine b ti according di to t a condition. diti If you terminate a subroutine using EXIT or CHECK, the system terminates the processing of the subroutine at this point point, passes the parameters, and continues with the statement after the PERFORM statement.
Field Symbols
Field symbols are placeholders or symbolic names for other fields. They d not do t physically h i ll reserve space for f a field, fi ld but b t point i t to t its it contents. t t A field symbol can point to any data object. The data object to which a field symbol points is assigned to it after it has been declared in the program. To declare a Field Symbol, use the statement, FIELD-SYMBOLS <FS> [<type>|STRUCTURE <s> DEFAULT <wa>]. Typing Field Symbols: The <type> addition allows you to specify the type of a field symbol. Syntax: FIELD-SYMBOLS <FS> <type>
Field Symbols
E Example: l DATA: WA(10) VALUE '0123456789'. DATA: BEGIN OF LINE1, COL1(3), COL2(2), COL3(5), COL3(5) END OF LINE1. DATA: BEGIN OF LINE2 LINE2, COL1(2), COL2 LIKE SY-DATUM, END OF LINE2. LINE2
Field Symbols
Cont.. FIELD-SYMBOLS: <F1> STRUCTURE LINE1 DEFAULT WA, <F2> STRUCTURE LINE2 DEFAULT WA. WRITE: / <F1>-COL1, <F1>-COL2, <F1>-COL3, / <F2>-COL1, <F2>-COL2. The output is: 012 34 56789 01 2345/67/89
Field Symbols
Static Assign: The name of the data object you want to assign to a field symbol before run time. S t Syntax: ASSIGN <f> TO <FS>. Eg: FIELD-SYMBOLS: <F1> , <F2> TYPE I. DATA : NUM TYPE I VALUE 5, TEXT(10) TYPE C VALUE HELLO. ASSIGN TEXT TO <F1>. ASSIGN NUM TO <F2>. WRITE: / <F1> , <F2>. <F2> OUTPUT: HELLO
Satyam SAP PMG SAP PMG
5
Delivering Solution Excellence and Innovation
Field Symbols
Dynamic y a c Assign: ss g The name of the data object you want to assign to a field symbol only at run time. Syntax: ASSIGN (<f>) TO <FS>. Eg: PROGRAM SAPMZTST. PERFORM FORM1(SAPMZTST1). * Calling Subroutine PROGRAM SAPMZTST1. FORM FORM1. FIELD-SYMBOLS <F1>. DATA : NUM TYPE N VALUE 5. ASSIGN (NUM) TO <F1>. WRITE: / <F1>. ENDFORM ENDFORM. OUTPUT: 5
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Clusters
Data Clusters
You can store data clusters in ABAP/4 memory. ABAP/4 memory is not dependent on the ABAP/4 program or program module which generates it during a transaction. This means that an object stored in ABAP/4 memory can be read again by any ABAP/4 program during the same transaction. For example, you can pass data between: Reports and other Reports called with SUBMIT Transactions and Reports Programs and Function Modules Note : The memory is released again when you leave the transaction.
To write data objects from an ABAP/4 program to ABAP/4 memory, you use the following statement: Syntax: EXPORT <f1> <f2> ... TO MEMORY ID <key>.
To read data objects from ABAP/4 memory into an ABAP/4 program, you use the following statement: Syntax: IMPORT <f1> [TO <g1>] <f2> [TO <g2>] ... FROM MEMORY ID <key>.
Data Types & Data Objects Internal Tables Modularization of ABAP R/3 ABAP Runtime system : Debugging Function Module & Function Groups p
OBJECTIVES The slides for the ABAP/4 Development Workbenchs on line Debuggers C t i th Contain the following f ll i topics: t i Online debugging tools Starting the debugger The debuggers views Using break points Setting static break points Setting dynamic break points Setting watch points Setting g breakpoints p at keywords y or events Deleting and deactivating breakpoints Stepping through program codes Displaying field contents
Debugging
Displaying Internal tables Displaying ABAP/4 lists Replacing field values at runtime Changing internal tables at runtime Switching S it hi to t the th ABAP/4 Editor Edit Releasing the database during debugging
Debugging
Online debugging tools : A review The ABAP/4 Debugger lets you stop a program during runtime and examine the flow and results of each statement during execution. St Stepping i th through h a program with ith the th debugger d b h l helps you to t detect d t t and d correct errors in your code.This documentation is designed for developers new to the Workbenchs debugging facilities or for those who want to learn the tool to use the tool more effectively. effectively
Debugging
After working through this slides , you should be able to debug both familiar and unfamiliar programs effectively. With this slides, you will learn how to Switch on the debugger Set and delete static and dynamic break points. Set watch points Stop a program at specific key words or events or when a field contents change. Continue processing after an interrupt. Display field contents during runtime. Display the contents of an internal table. Change g field contents for testing g purposes. p p Change the contents of an internal table. Display and use debuggers views.
Debugging
Debugging Strategies form within ABAP/4 Development Work bench. We can set tb breakpoints k i t i in a program and d th then start t t the th program within ithi the th Debugger.Alternatively, we can run the program in the debugger without any breakpoints. A Breakpoint is a signal within a line of code that tells the ABAP/4 runtime processor to interrupt the program at the line.Setting break points is a good strategy if we want to examine a program: After the system has already processed certain events Just before a specific event is carried out By y skipping pp g q quickly y to a specific p routines or calls.
Debugging
Starting the Debugger On running a program in the debugging mode the following steps can be followed. In the object browser , Select a report or transaction. Choose debugging in the ABAP/4 editor initial screen Choose Program Execute Debugging or choose debugging. From any screen , Choose SystemUtilities Debug ABAP/4. Debuggers views A debugger gg selects different views , by y selecting g appropriate pp p view name in debuggers menu.
Debugging
Th These buttons b tt has h following f ll i specific ifi meaning. i Overview - Displays the structure of the program to be debugged. debugged Call stack - Displays an active event chain and the call sequence up to the current breakpoint. Fields - Displays the fields content and technical characteristics. Table - Displays the content of an internal table.
Debugging
Structure of the Debugging view. Each debugging view has the same structure. The top half of the screen displays a portion of the programs source code. The lower half shows i f information ti specific ifi to t that th t particular ti l view i .At At the th Line Li S Source C d of Code f appears two push buttons to scroll through the program code. The line currently ready for processing is indicated by > > .A A small stop sign appears to the left of each dynamic break point . Using Breakpoints A breakpoint is a signal within a programs code , which tells the ABAP/4 processor to interrupt the program at a particular point. The type of breakpoint p depends p on the p purpose p of debugging. gg g
Debugging
ABAP Debugging Screen
Debugging
Following are the types of breakpoints. Static Th These are user independent i d d t , set t directly di tl into i t a programs code d with ith the th editor. User dependent breakpoints also is possible. Dynamic Set within the ABAP/4 debugger or editor. This type is visible when the program is displayed in the editor. Watch points Set within the ABAP/4 debugger .Watch points are field-specific. This is used to observe changes g to a particular p field .The debugger gg interrupts p the program when fields content change.
Debugging
Key word (statement) or event breakpoints Set within the ABAP/4 debugger. The debugger interrupts the program when the ABAP/4 processor comes in contact with a specific key word (statement) or event in programs code. When a static breakpoint is used? Static break point are generally user-independent. On setting this breakpoint , every use who executes the program encounters the breakpoint. This is used when several developers are working in the same program, and all wants to the program to interrupt at the same place during g execution. These breakpoints are visible in the programs code. When a dynamic breakpoint is used? Dynamic break point is user-specific. If we want to interrupt a program when we execute and while others are running, we use dynamic break-point. D namic breakpoints are more flexible Dynamic fle ible than static breakpoint , they the can be removed or deactivated during runtime.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
When e to use watch atc po points. ts We can set watchpoints only from within the debugger.They are useful if we want to interrupt a program only when there is a change in a particular field or a field string. We can set and remove watch points as Needed .This , as dynamic breakpoint , does not disturb the other users of the same program. When to use breakpoints at Keywords (statements) or Events. From within debugger , we can allocate breakpoint for specific ABAP/4 keywords or program events. This is useful if we do not know exactly where a key word or event occurs , but still want the program to be interrupted just before the command or event is carried out. g Static Breakpoints. p Setting To set a static break point use BREAK-POINT keyword. Place the break point on the line where to interrupt the program:
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
REPORT RSDEBUG1 CHECK ACCOUNT IF SY SY-SUBRC SUBRC NE 0 0. BREAK-POINT. ENDIF. . When we start the report , ABAP/4 interrupts the processing at the break point. We can number breakpoints like BREAK BREAK-POINT1 POINT1 ,BREAK ,BREAK-POINT2..for POINT2..for easier identification. Removing g Breakpoints. p It is necessary to remove the breakpoints after debugging .Use function Utilities Global search to help in locating break-points in larger programs. It is necessary to remove breakpoints since it may cause serious disruptions in productive process.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Setting Dynamic Breakpoints We can set dynamic breakpoint , without changing the programs code. Following are the steps to set a breakpoint in ABAP/4 Editor. Place the cursor on the line where to position the breakpoint. Choose Utilities --> > Breakpoint Set or press the stop stop pushbutton at the top. A display of all breakpoints in a program can be obtained by selecting UtilitiesBreakpointDisplay . The dynamic breakpoint display leads to navigate to a certain breakpoint or delete one or all breakpoints from the program code.
Debugging
Setting Watchpoints. A watch point is set to interrupt a program when the contents of a specific field or a string change. F ll i are the Following th steps t t set to t a watch t h point. i t On the Debugging editor, enter the table-field. Press the pushbutton Watchpoint on the top left . A dialog box appears , asking for the local local watch point point, relational operator and comparison field .Fill in as per requirement. Fill the appropriate value in the text field next and press the tick . A display of watch points can be viewed by goto-->Control debugging--> gg g Watchpoint. p
Debugging
Setting Breakpoints at (statements) keywords or subroutines. If we want to interrupt the program directly before a certain keyword event or a subroutine , we use this facility. W can achieve We hi thi with this ith the th following f ll i steps t i the in th editor. dit Choose either Breakpoint Breakpoint at Statement or subroutine or function module. module The system will display a small screen prompting to enter statement keyword or subroutine etc., as per requirement. The system will set a breakpoint each time the statement , or subroutine appears pp in the p program. g For break point in form routines , it is possible to access the current program , not external subroutine calls.
Debugging
Deleting a dynamic Break-point. To delete a dynamic breakpoint , place the cursor in a line and choose BreakpointSet/Delete or Delete. Deleting this breakpoint is also possible by double clicking the appropriate i t line. li From within the editor, deleting the dynamic breakpoint is done by the following steps. steps Choose Goto--> Control Debugging-->Breakpoint. The System will list all the breakpoints. Select one breakpoint. Choose individual by double clicking on the icon Stop and it deletes . Temporary deleting of Dynamic breakpoint is possible by selecting the appropriate line and select Breakpoint Deactivate/Activate in the abap Debugger.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Deleting Watchpoints. Watch points are special break points set for specific fields. To remove a watch point , the following steps will do. Choose Goto Ch G t --> Control C t l debugging-->Watchpoint. d b i W t h i t A display of the watch point occurs , and can be deleted by pressing delete checkbox at the end of each Watchpoint . Displaying the Location of breakpoints. Select Goto--> Control Debugging -->Breakpoints to get an overview of all existing breakpoints in a programs code. From the breakpoint p display p y , it is p possible to set or delete individual breakpoints.
Debugging
Stepping through program code. From within the debugger several options for stepping through the program. Single step : Execute a program statement by statement. If single step is chosen while on a line that calls a FORM routine , for example the next mouse click carries to the called routine.After routine After stepping the way through the subroutine, returns to the line of code directly following the subroutine call. Execute : Process a program line by line. On choosing Execute while on a line, that calls a FORM routine, the debugger executes the subroutine subroutine and halts at the line of code directly y following g the call. Thus this skips over the lines of the subroutine itself. Continue: Processes the program up to the next active dynamic or static break point. If no further breakpoints exists, the system executes the report in its entirety without stopping.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Return: Returns the debugger to where a calling program resumes control.Can be used from within a subroutine call. Displaying Di l i the th field fi ld contents. t t While debugging display of the critical of the critical contents of the fields are possible. possible Display of the contents up to eight fields or field strings possible can be done. We can enter the field names directly in the spaces provided or double click the field in the code display and the system lists it as a variable automatically. We can use the variable screen to display the contents of any system field or all field that a p program g references. Also the debugger gg to display p y fields defined in the ABAP/4 Dictionary can be used. To display the contents of dictionary fields, we must define relevant table in the TABLES statement of the current program.
Debugging
Additionally the contents of the fields from external programs can be displayed. For this we need to place the name of the external program in brackets in front of the field name.
Debugging
A View e o of internal te a tab table ed display sp ay
Debugging
If the space you leave to display a field is too small , the system truncates the display and indicates this by a < character. As with the field display , we can customize the display format for internal t bl tables. Th standard The t d d entry t in i the th Format F t field fi ld is i an E (for (f edited) dit d) . You Y can change this to an X for hexadecimal or a C for character display. Once we have finished examining the internal table , return to the screen with the field display and program code by selecting the program button.
Debugging
Replacing fields at Runtime. While we are debugging a program , we might want to change the content of specific fields to influence our programs flow. If error analysis reveals th t a field that fi ld contains t i a wrong value l , for f example l , we can replace l th the faulty value at run time to determine if the program then runs correctly. We can change the values of all fields , database tables (with offset) and internal tables referenced in a report . If we alter the values of database fields , we do not change them in the database itself , but only in the work area ABAP/4 provides for one run of the report .The system displays an appropriate message if any format errors occur.
Debugging
To replace the value , we can do the following steps. 1.Go to the variable display screen. This is the Debuggers default view. 2 D bl click 2.Double li k on a variable i bl to t place l it in i the th variables i bl display. di l 3.Enter a new value in the field contents row . 4.Choose the Change field content button. ABAP/4 writes the new value back to the program field or fields and the system notes the change in the system log. If we forget to click on the Change Change field content content push push-button button , the system ignores the values we entered. Note: ABAP/4 accepts p our entries in the contents column exactly y as we specified them. You need to pay special attention to the correct format.( Upper or lower case , right justified output with packed numbers).
Debugging
Changing Internal Tables at Runtime The debugger allows to manipulate the contents of an internal table during runtime. We can delete, edit or add a row to an internal table. Deleting a row To delete an entry from an internal table: 1. Go to the table display screen 2. Enter the table name in the internal table field. 3. Choose Enter. The system displays the tables contents. 4.Place the cursor on the line y you wish to remove from the table. 5.Press Delete pushbutton. The line disappears from the table and the system adjusts the line numbering accordingly.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Editing a row The functions Change , Insert and append are field-specific in the Debugger and can be carried out only one field at a time by pressing the respective pushbuttons. For example ,If we want to edit the following line: LH001 FRANKFURT NEWYORK 145400 400 X, we first need to decide which field to change. Then the following steps must be done. 1.Place the cursor on the row and field we want to edit. 2.Choose Change. 3.Enter a new value for the field. 4.Choose Enter. The system updates the line and displays the new contents in the table.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Switching to the ABAP/4 Editor . We can switch from the Debugger to ABAP/4 Editor at any time. If we discover a program error during the debugging process , for example,we can enter the ABAP/4 Editor to immediately correct the error in the programs code. We can also switch back to the editor in order to set new static break-points. After we set static breakpoints in the editor,they editor they are not active in the debugger when we switch back.We must re-generate the program.Then the breakpoints appear in the debugger. To return to the Editor for the program currently being debugged , Select Development-->ABAP/4 Editor.
Debugging
SYNOPSIS A representation of Debugging Process -Branching to Debugging Mode
ABAP/4 Debugger ABAP/4 Editor
... Test/execute / ...
Object List
Development object ... ... ...
Debugging gg g
Program B170D051
Breakpoints
Program ... . Breakpoint ... .
Any screen
... ... ... System Help
/h
Satyam SAP PMG SAP PMG
Debugging
Debugging Mode
Execute Single step Execute Continue Table
PROGRAM B170D051. DATA: DIFF TYPE P, . . . COMPUTE DATE_1 = SY-DATUM. . . . V i bl Variables DATE_1 SY-DATUM 00000000 19940223
S V
View pushbuttons
R R R R
Debugging
The e Most ost Important po ta t Debugging ebugg g Functions u ct o s
Processes the next program line line. In contrast to the single step, executes all p a processing ocess g steps belonging be o g g to one o e line. e Processing continues until the next breakpoint or until the end of the program. Displays the contents of internal tables. With the functions of this menu you define breakpoints. You go to the ABAP/4 editor. Data contents can be displayed in hexadecimal format.
Debugging
Setting Breakpoints
1 ABAP/4 Editor
Menu Utilities -> Breakpoints
Keyword
2 Debugging mode
Line selection (double-click)
Menu:
Debugging
General Ge e a Que Queries es Question Static Break-point are user independent (YES/NO) YES Dynamic Breakpoints are not user-specific(YES/NO) NO Dynamic breakpoints are visible in the program(YES/NO) YES Dynamic Breakpoints are more flexible than Static Breakpoints(YES/NO) YES Static Breakpoints are hard-coded in the program(YES/NO) YES Temporary deletion of dynamic breakpoints are not possible(YES/NO) NO
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Watchpoints can be set only from within the debugger (YES/NO). YES How can a temporary deletion of dynamic Breakpoints are done? Temporary deletion of Breakpoints are ACTIVATE/DEACTIVATE in the debugging editor. done by option
What are the different options to step through the program in the debugger? Single Step Execute Continue Return While debugging ,it is impossible to correct wrong values in a tables field dynamically during runtime (YES/NO) NO
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Debugging
Addition and deletion Debugger(YES/NO). YES From F th ABAB Debugger the D b , switching it hi to t ABAP/4 Editor Edit is i not t allowed. ll d (YES/NO) NO of fields in a table is possible in
Debugging
Summary The above slides have given an idea of debugging , the debugging tools for various operations like usage of breakpoints , watch points ,internal t bl display,stepping tables di l t i through th h a program code, d switching it hi to t ABAP editor and associated utilities.
Data Types & Data Objects Internal Tables Modularization of ABAP R/3 ABAP Runtime system : Debugging Function Module & Function Groups p
Function Modules Object e Objective The following section is intended to explain: What function modules are Components of function modules Testing and releasing of function modules
Function Modules Function modules are special external subroutines(program type F) Function modules are classified in function groups and stored in the F Function ti Library. Lib Function F ti groups act t as containers t i for f function f ti modules that logically belong together. Function modules allow us to encapsulate and reuse global functions in the R/3 System. Function modules also play an important role in database updates and in remote communications between R/3 Systems or between an R/3 System and a non-SAP system. The R/3 System provides numerous predefined function modules that we can call from your ABAP/4 programs. We can also create your own function modules using Function Builder. (Transaction Code SE 37)
Subroutines are principally for local modularization while Function modules are for global modularization, that is, they are always called from a different program. p g Subroutines are defined in ABAP programs while Function modules are defined within function groups Function modules have clearly defined data interfaces to the calling program. We can test function modules in a stand-alone mode independent of the calling program.
Function Groups Function groups are containers for function modules. modules We cannot execute a function group. When we call a function module, the system loads the whole of its function group into the internal session i of f the th calling lli program (if it h has not t already l d b been l loaded). d d) Function group names are freely definable up to a maximum length of p characters. 26 alphanumeric When we create a function group or function module in the Function Builder , the main program and include programs are generated automatically. t ti ll
Creating Function Groups New function groups can be created from the menu Goto - Function Group - Create
Programming Function Modules To o program p og a a function u ct o module, odu e, we e must ust include c ude our ou statements state e ts between the FUNCTION and ENDFUNCTION statements as follows: Syntax : FUNCTION <module> <statements> ENDFUNCTION An existing Function Module can be inserted into ABAP Code using Edit - Pattern
Components of Functional Modules Import: po t Values a ues transferred t a s e ed from o the t e calling ca g p program og a to t the e function u ct o module.You odu e ou cannot overwrite the contents of import parameters at runtime. Export: Values transferred from the function module back to the calling program. Changing :Values that act as import and export parameters simultaneously. Th original The i i l value l of f a changing h i parameter t is i transferred t f d from f the th calling lli program to the function module. The function module can alter the initial value and send it back to the calling program. Tables: Internal tables that can be imported and exported. The internal table's contents are transferred from the calling program to the function module. The function module can alter the contents of the internal table and then send it back to the calling program. Tables are always passed by reference. p Error situations that can occur within the function module. Exceptions: The calling program uses exceptions to find out if an error has occurred in the function module. It can then react accordingly.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Import Parameters Import parameters : These must be supplied with data when we call the function module, unless they are flagged as optional. We cannot change them in the function module.
Export Parameters Export parameters: These pass data from the function module back to the calling program. Export parameters are always optional. We do not have to receive them in our program.
Changing Parameters C a g g parameters Changing pa a ete s : C Changing a g g pa parameters a ete s a are e passed by reference e e e ce o or by value and result. Changing parameters act simultaneously as import and export parameters. They change the value passed to the function module and return it to the calling program.
Tables Parameters
Tables parameters :We use these to pass internal tables. They are treated like CHANGING parameters. However, we can also pass internal tables with other parameters if you specify the parameter type appropriately. The use of these exists in earlier FM definitions, as they are considered obsolete now .
Exceptions When creating function modules, we can define exceptions. The calling program determines whether and which exceptions it is to handle itself. We can assign the same error number to several exceptions exceptions. The OTHERS clause covers all exceptions not explicitly specified.
Source Code Tab This tab shows the source of the function module in the ABAP/4 editor. We can work with the source code in the same way as is done for normal ABAP/4 programs opened via forward navigation.
Check whether a suitable function module already exists. If not, create one as follows. Create a function group, if no appropriate group exists yet. Create the function module. Define the function module interface by entering its parameters and exceptions. Write the actual ABAP code for the function module, adding any relevant global data to the TOP include. Activate the module. Test the module. Document the module and its parameters for other users. Release the module for general use use.
Satyam SAP PMG SAP PMG
Runtime Considerations The CALL FUNCTION statement can pass import, import export, export and changing parameters either by value or by reference. Table parameters are always transferred by reference. If you declare the parameters with reference to ABAP Dictionary fields or structures, the system checks the type and length when the parameters are transferred. If the parameters from the calling program do not pass this check, the calling program terminates. At runtime, all function modules belonging to a function group are l d d with loaded ith the th calling lli program. As A a result, lt you should h ld plan l carefully f ll which functions really belong in a group and which do not. Otherwise, calling your function modules will unnecessarily increase the amount of memory required by the user user.
Function Builder The Function Builder allows us to create, test, and administer function modules in an integrated environment.
Function Builder
Normal Function Module : Indicates that the function is a normal one Remote-enabled Module : Shows that the function is remote enabled Update Module Start Update Immediately :The function module is processed immediately in the update task task. Immediate Start, No restart : The function module will be edited in the update task. It cannot be updated subsequently. Start Delayed :The function module is processed in the update task as a low priority item. You use delayed update primarily for database changes g that are not time-critical ( (e.g. g statistical updates). p ) Collective Run :A number of similar function modules that previously used to run individually in the V2 update process can be grouped together and run collectively.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Finding Function Modules U Using i th the Repository R it Information I f ti System S t To search for a module, choose Find from the initial screen of the Function Builder. The system displays the standard Function Module search screen. screen
Finding Function Modules U Using i th the Application A li ti Hierarchy Hi h The Application Hierarchy provides an overview of all the applications in your R/3 system. You can use this hierarchy to display function modules associated with particular applications applications.
Calling Function Modules CALL FUNCTION <module> < d l > [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] ].
CASE SY-SUBRC SY-SUBRC. WHEN 0. WRITE: / TEXT, / TEXT1, / TEXT2. WHEN 1. WRITE 'Target field 1 too short!'. WHEN 2. WRITE 'Target field 2 too short!'. WHEN 3. WRITE 'Invalid split position!'. WHEN 4. WRITE 'Other errors!'. ENDCASE.
Documenting function modules The documentation Th d t ti for f the th function f ti module d l is i done d in i the th Function F ti Builder. There are two kinds of documentation - parameter documentation, and full function module documentation. The parameter documentation must provide users with information f about the different parameters and exceptions. Function module documentation contains important p detailed information about the task of the function module. A detailed documentation will help us to understand the function module without having to examine its source code.
Activating Function Module Function Module can be activated from the menu as shown below below.
Testing Function Modules - Initial Screen We can test function modules without having to include them in a program using the Function Builder. When we test a function module, the system displays any exceptions. The system also identifies the time required to execute the module in microseconds. Example Function : BAPI_CCODE_GET_FIRSTDAY_PERIOD Import Parameters: Company Code, Fiscal Period, Fiscal Year
Testing Function Module - Result Screen The e function u ct o BAPI_CCO CCODE_G GET_FIRSTDAY S _PERIOD O when e e executed ecuted with t values given in the previous screen gives the following output. It also shows the time required for executing the function module.
Releasing function modules Releasing a function module is a purely administrative gesture with no effect on the function or its usability. Releasing a function module signals that a developer has tested it. When a function module is released its documentation is released for translation and appears in the relevant t translator's l t ' worklist. kli t
Function Modules Summary This section explained : The creation of function modules Components of function modules Releasing and activation of function modules
Data Dictionary
The ABAP Dictionary centrally describes and manages all the data definitions used in the system. The ABAP Dictionary is completely integrated in the ABAP Development Workbench. All the other components of the Workbench can actively access the definitions stored in the ABAP Dictionary Dictionary. The most important object types in the ABAP Dictionary are :1> Tables 2> Views 3> Types (data elements, structures, table types) 4> Domains 5> Search helps 6 L 6> Lock k objects bj t
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Data Dictionary
Tables are defined in the ABAP Dictionary independently of the database. A table having the same structure is then created from this table definition in the underlying database. Views are logical views on more than one table table. The structure of the view is defined in the ABAP Dictionary. A view on the database can then be created from this structure. Types are used in ABAP program. The structure of a type can be defined globally in ABAP programs. Changes to a type automatically take effect in all the programs using the type.
Data Dictionary
Lock Objects are used to synchronize access to the same data by more than one user. Function modules that can be used in application programs are generated from the definition of a lock object in the ABAP Dictionary. Different fields having the same technical type can be combined in domains. A domain defines the value range of all table fields and structure components that refer to this domain. The ABAP Dictionary also contains the information displayed with the F1 and F4 help for a field in an input template.
Data Dictionary
The documentation about the field is created for a data element that describes the meaning of the contents of a table field. The list of possible input values that appears for the input help is created by a foreign key or a search help.
Data Dictionary
Technical Settings
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Selecting the correct size category prevents a large number of very small extents from being created for a table. It also prevents space from being wasted if extents which are too large are created.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
If the database view only contains a single table, the maintenance status can be used to determine if data records can also be inserted with the view. If the database view contains more than one table, you o can only onl read the data. data
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Projection views are used to hide fields of a table. This can minimize interfaces; for example when you access the database, you only read and write the field contents actually needed. A projection view contains exactly one table. You cannot define selection conditions for projection views. There is no corresponding object in the database for a projection view. The R/3 System maps the access to a projection view to the corresponding access to its base table table. You can also access pooled tables and cluster tables with a projection view.
Projection View
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
You have to create a help view if a view with outer join is needed as selection method of a search help. p The selection method of a search help is either a table or a view. If you have to select data from several tables for the search help, you should generally use a database view as selection method. However, a database view always implements an inner join. If you need a view with outer join for the data selection, you have to use a help view as selection method method. The creation method for Help p view is similar to that of Database view.
4> In the Definition tab page enter the parameters of the collective search help. Select the Imp flag if it is an import parameter. Select the Exp flag if it is an export parameter parameter. Define the types for the parameters of a collective search help by assigning a data element. Enter the name of the data element that describes the contents of the search help parameter in the Data element field. You can assign the parameter a default value in the Default value field. 5> In exceptions it could be necessary to change the standard process defined by the search help. You can implement the deviation from the standard using a search help exit. In this case enter the name of the search help exit in the corresponding field.
6> On the Included search helps tab page, define the search helps that you want to include in the collective search help.You can i l d elementary include l t search h helps h l and d collective ll ti search h helps. h l Use U the Hide flag to control whether an included search help should appear in the dialog box for selecting the elementary search help. If the flag is set set, the search help is not offered. offered 7> Save your entries. A dialog box appears in which you have to assign a development class to the search help. 8> Choose Activate.
Lock Arguments The lock argument g of a table in the lock object j consists of the key y fields of the table. The lock argument fields of a lock object are used as input parameters in the function modules for setting and removing locks generated from the lock object definition. When these function modules d l are called, ll d the th table t bl rows to t be b locked l k d or unlocked l k d are specified by defining certain values in these fields. These values can also be generic generic. The lock argument fields therefore define which subset of the table rows should be locked.
The simplest case of a lock object consists of exactly one table and th l the lock k argument t of f th the t table bl i is th the primary i k key of f thi this table. t bl Several tables can also be included in a lock object. A lock request therefore can lock an entire logical object object, and not only a record of a table. Such a logical object can be for example a document comprising an entry in a header table and N entries in a position table.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Lock Mode The lock mode controls whether several users can access data records at the same time time. The lock mode can be assigned separately for each table in the lock object. When the lock is set, the corresponding lock entry is stored in the lock table of the system for each table. Access by more than one user can be synchronized in the following ways: Exclusive lock: The locked data can only be displayed or edited by a single user. A request for another exclusive lock or for a shared h d lock l k is i rejected. j t d Shared lock: More than one user can access the locked data at the same time in display mode mode. A request for another shared lock is
Data Dictionary/Summary
SUMMARY ( The ABAP Dictionary centrally describes and manages all the data definitions used in the system. The ABAP Dictionary is completely integrated in the ABAP Development Workbench. ( Tables are defined in the ABAP Dictionary independently of the database. ( Views Vi are logical l i l views i on more than h one table. bl ( A domain defines the value range of all table fields and structure components that refer to this domain domain. ( Lock Objects are used to synchronize access to the same data by more than one user.
Data Dictionary/Exercise
EXERCISE Using SE11 create an user defined table with the following fields, Employee No. No (Primary Key) Name Designation Salary Try to add few records into that table. N t Follow Note: F ll the th steps t explained l i d in i the th presentation t ti for f the th creation ti of f the table.
4. ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
ADVANCED ABAP
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
Course Contents
Course Contents : Module I ABAP Objects Overview Classes and Objects Visibility sections Methods C Constructors t t Inheritance Module II Interfaces Module III Events handling in classes Module IV Friends Persistent Classes Theory Test Practical Test Course Duration : 5 working days Module V Global classes Module VI Report development using ALV Module VII Exception handling in classes M d l VIII Module Casting
ABAP Objects
ABAP Objects Obj t is i fairly f i l a new concept t in i R/3. R/3 Th The t term h has t two meanings. i It stands for the entire ABAP runtime environment environment. and It represents the object-oriented extension of the ABAP language
ABAP Objects
The ABAP Workbench Th W kb h allows ll you to t create t R/3 Repository R it objects bj t such as programs authorization objects lock objects Customizing objects, etc.
ABAP Objects is a complete set of object-oriented statements that has been introduced into the ABAP language. language This object-oriented j extension of ABAP builds on the existing g language, and is fully compatible with it. You can use ABAP Obj Y Objects t in i existing i ti programs, and d can also l use "conventional" ABAP in new ABAP Objects programs.
ABAP Objects supports object-oriented programming The object-oriented enhancement of ABAP is based on the models of Java and C++. It is compatible with external object interfaces such as DCOM and CORBA
ABAP Objects
Object-Orientation
Object o orientation e tat o (OO), or o to be more oep precise, ec se, object object-oriented o e ted programming, is a problem-solving method in which the software solution reflects objects in the real world . Objects An object is a section of source code that contains data and provides services. i The data forms the attributes of the object. The services are known as methods (also known as operations or functions).
ABAP Objects
Advantages of OO
The main difference between real object j orientation and function g groups p is that although a program can work with the instances of several function groups at the same time, it cannot work with several instances of a single function group. This Thi requirement i ti is met tb by object bj t orientation. i t ti ABAP Obj Objects t allows ll you t to d define fi data and functions in classes instead of function groups. Using classes, an ABAP program can work with any number of instances (objects) based on the same te p ate template. Complex software systems become easier to understand, since object-oriented structuring provides a closer representation of reality than other programming techniques. In a well-designed object-oriented system, it should be possible to implement changes at class level, without having to make alterations at other points in the system. t Thi reduces This d the th overall ll amount t of f maintenance i t required i d. Through polymorphism and inheritance, object-oriented programming allows you to reuse individual components. j system, y , the amount of work involved in revising g and In an object-oriented maintaining the system is reduced, since many problems can be detected and corrected in the design phase
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Classes
Classes describe objects. Classes are templates for objects From a technical point of view, objects are runtime instances of a class.
ABAP Objects
Objects
Objects are instances of classes. Each object j has a unique q identity y and its own attributes. All transient objects reside in the context of an internal session (memory area of an ABAP program). A class can have any number of objects (instances).
ABAP Objects
ABAP Objects
Structure of a Class
A class contains components Each component is assigned to a visibility section Classes implement methods
ABAP Objects
Class Components
All components t are declared d l d in i the th declaration d l ti part t of f the th class. l p define the attributes of the objects j in a class. The components When you define the class, each component is assigned to one of th three the th visibility i ibilit sections, ti which hi h define d fi the th external t l interface i t f of f the th class. All of the components of a class are visible within the class. All components are in the same namespace. This means that all components of the class must have names that are unique within the class.
ABAP Objects
Attributes
Attributes are internal data fields within a class that can have any ABAP data type. The state of an object is determined by the contents of its attributes. One kind of attribute is the reference variable. Reference variables allow you to create and address objects objects. Reference variables can be defined in classes, allowing you to access objects from within a class.
ABAP Objects
Methods
Methods are internal procedures in a class that define the behavior of an object. They can access all of the attributes of a class. This allows them to change the data content of an object. They also have a parameter interface, with which users can supply them with values when calling them, and receive values back from them The p private attributes of a class can only y be changed g by y methods in the same class.
ABAP Objects
Methods - syntax
The definition and parameter interface of a method is similar to that of function modules. You define a method <met> in the definition part of a class and implement it in the implementation part using the following processing block: METHOD <meth>. ... ENDMETHOD. ENDMETHOD You can declare local data types and objects in methods in the same way as in other ABAP procedures (subroutines and function modules). ) You call methods using the CALL C METHOD O statement. CALL METHOD <ObjName> -> <Method>
Satyam Satyam SAP SAP PMG PMG SAP PMG
ABAP Objects
Methods - types
Instance Methods
You declare instance methods using the METHODS statement. They can access all of the attributes of a class, and can trigger all of the events of the class
Static Methods
You declare static methods using the CLASS-METHODS statement. They can only access static attributes and trigger static events.
ABAP Objects
Types of classes
Types of classes - local and global Local classes - are defined d fi d i in your program. - cannot be accessed outside your program. Global classes - Are defined in the repository using either transaction SE80 or SE24 - Can be accessed by all programs
ABAP Objects
Encapsulation: capsu at o Objects restrict the visibility of their resources (attributes and methods) to other users. Every object has an interface, which determines how other objects can interact with it. The implementation of the object is encapsulated, i.e. invisible outside the object itself. Encapsulation is implemented using class visibility sections. Classes Visibility Sections You can divide the declaration part of a class into up to three visibility areas: PUBLIC SECTION. ... PROTECTED SECTION SECTION. ... PRIVATE SECTION. ...
ABAP Objects
Public Section
Public Section All of the components declared in the public section are accessible to all users of the class, and to the methods of the class and any classes that inherit from it. The public components of the class form the interface between the class and its users. READ-ONLY addition can be used for public attributes. This implies that the public attributes can be read from outside the class, but can be modified by only methods of the class.
ABAP Objects
Private Section
Private Section Components that you declare in the private section are only visible in the methods of the same class. class The private components are not part of the external interface of the class.
ABAP Objects
Protected Section
Protected Section
All components in the protected section can be accessed by all methods of the same class as well as all methods of its sub-classes sub-classes. All of the components in the protected section can access the components from the public section. In turn, they can be accessed by the components of the private section section.
ABAP Objects
Introductory Example
CLASS C C_COUNTER COUNTER DEFINITION DEFINITION. PUBLIC SECTION. METHODS: SET_COUNTER IMPORTING VALUE(SET_VALUE) TYPE I, INCREMENT_COUNTER, GET_COUNTER EXPORTING VALUE(GET_VALUE) TYPE I. PRIVATE SECTION. DATA COUNT TYPE I. ENDCLASS. CLASS C_COUNTER IMPLEMENTATION. METHOD SET_COUNTER. COUNT = SET SET_VALUE. VALUE ENDMETHOD. METHOD INCREMENT_COUNTER. ADD 1 TO COUNT. ENDMETHOD. METHOD GET_COUNTER. GET_VALUE = COUNT. ENDMETHOD ENDMETHOD. ENDCLASS.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Object references
To access an object from an ABAP program, you use object references. Object Object references are pointers to objects. In ABAP, they are always contained in reference variables. A reference variable is either initial or contains a reference to an existing object. The identity of an object depends on its reference. A reference variable that points to an object knows the identity of that object.
ABAP Objects
You define class references using the ... TYPE REF TO <class> LIKE may not be used. LIKE can be used for local data types.
ABAP Objects
Creating Objects
Before you can create an object for a class, you need to declare a reference variable with reference to that class. DATA: <obj> TYPE REF TO <class> Once you have declared a class reference variable <obj> for a class <class>, you can create an object using the statement CREATE OBJECT <obj>. This statement creates an instance of the class <class>, and the reference variable <obj> contains a reference to the object.
ABAP Objects
Programs can only access the instance components of an object using references in reference variables. To access an attribute <attr>: <obj>-><attr> To call a method <meth>: CALL METHOD <obj>-><meth>
ABAP Objects
You can access static components using the class name as well as the reference variable. It is also p possible to address the static components p of a class before an object has been created. Addressing a static attribute <attr>: <class>=><attr> Calling a static method <meth>: CALL METHOD <class>=><meth>
ABAP Objects
Self references
Within a class, you can use the self-reference ME to access the individual components: To access an attribute <attr> in the same class: ME-><attr> To call a method <meth> in the same class: CALL METHOD ME-><meth> Self references allow an object to give other objects a reference to it. You can also access attributes in methods from within an object even if they are obscured b db by l local l attributes tt ib t of f th the method. th d
ABAP Objects
REPORT zharesh .
CLASS lcl DEFINITION. PUBLIC SECTION. METHODS: m1. PRIVATE SECTION. DATA: v1 VALUE 'a'. ENDCLASS. "lcl lcl DEFINITION CLASS lcl IMPLEMENTATION. METHOD m1. DATA v1 DATA: 1 VALUE 'b' 'b'. WRITE v1. "This will print 'b' since it is local data and has more precedence than global data *Now how do we p print the g global data v1 ( (which has vale 'a')? ) *We use the self-reference "ME" WRITE me->v1. "Now this will print a' ENDMETHOD. "m1 ENDCLASS ENDCLASS. "lcl lcl IMPLEMENTATION
ABAP Objects
ABAP Objects
Example - Step 1
The DATA statement creates a class reference variable CREF1 with type C_COUNTER. This variable can contain references to all instances of the class C_COUNTER. The class C_COUNTER must be known to the program when the DATA statement occurs. You can either declare it locally before the data statement in the same program, or globally using the Class Builder. The contents of CREF1 are initial. The reference does not point to an instance.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Example - Step 2
The CREATE OBJECT statement creates an object (instance) of the class C_COUNTER. The reference in the reference variable CREF_1 points to this object. This instance of the class C_COUNTER is called C_COUNTER<1>, because this is how the contents of the object variable REF_COUNTER_1 are displayed in the debugger after the CREATE OBJECT statement has been executed.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Example - Step 3
The ABAP program can access the public components of the object using the reference variable CREF1, that is in this case, it can call the public methods of the class C_COUNTER. After the program on the left-hand side has been executed, the program variables NUMBER and the private object attribute COUNT both have the value 8.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Example - Step 4
This declares three different class reference variables for the class C_COUNTER. All of the references are initial.
ABAP Objects
Example - Step 5
The system creates three objects of the class from the three class reference variables. The references in the three reference variables each point to one of these objects. In the internal program management, the individual instances are called C_COUNTER<1>, C_COUNTER<2>, and C_COUNTER<3>. They are named in the order in which they were created.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Example - Step 6
The ABAP program can use the reference variables to access individual objects objects, that is in this case, to call the public methods of the class C_COUNTER. Each object has its own state, since the private instance attribute COUNT has a separate value for each object. The program on the left-hand side administers several independent counters.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Example - Step 7
Here, three class reference variables are declared for the class C Here C_COUNTER, COUNTER and two objects are created for the class. The references in the reference variables CREF1 and CREF2 each point to one of these objects. The reference in CREF3 is initial.
ABAP Objects
Example - Step 8
After the MOVE statement, statement CREF3 contains the same reference as CREF2 CREF2, and both references point to the object C_COUNTER<2>. A user can thus use either reference to address the object C_COUNTER<2>.
ABAP Objects
Example - Step 9
The CLEAR statement resets the reference in CREF2 to its initial value value. The reference variable CREF2 then contains the same value as it did immediately after its declaration, and does not point to an object any more.
ABAP Objects
Example - Step 10
The effect of the assignment statement is to copy the reference from CREF1 to CREF2. As a result, the reference in CREF3 also points to the object C_COUNTER<1>. No more references point to the object C_COUNTER<2>, and it is automatically deleted by the Garbage Collection. The internal name C_COUNTER<2> is now free again.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Declaring Methods
You can declare methods in the declaration part of a class or in an interface interface. To declare instance methods, use the following statement: METHODS <meth> IMPORTING.. [VALUE(]<ii>[)] TYPE type [OPTIONAL].. EXPORTING.. [VALUE(]<ei>[)] TYPE type [OPTIONAL].. CHANGING.. [VALUE(]<ci>[)] TYPE type [OPTIONAL].. RETURNING VALUE(<r>) EXCEPTIONS <ei>.. EXCEPTIONS.. <ei> and the appropriate additions. To declare static methods, use the following statement: CLASS METHODS <meth>... CLASS-METHODS th Unlike in function modules, the default way of passing a parameter in a method is y reference. by To pass a parameter by value, you must do so explicitly using the VALUE addition. The return value (RETURNING parameter) must always be passed explicitly as a value.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Implementing Methods
You must implement all of the methods in a class in the implementation part of the class in a METHOD <meth> <meth>. ... ENDMETHOD. block.
ABAP Objects
Calling Methods
To call a method method, use the following statement: CALL METHOD <meth> EXPORTING... <ii> =.<f i>... IMPORTING... <ei> =.<g i>... CHANGING ... <ci> =.<f i>... RECEIVING r=h EXCEPTIONS... <ei> = rc i... Within t the t e implementation p e e tat o part pa t of o ac class, ass, you ca can ca call t the e methods et ods o of t the e sa same e class directly using their name <meth>. CALL METHOD <meth>... Outside the class, class the visibility of the method depends on whether you can call it at all. Visible instance methods can be called from outside the class using CALL METHOD <ref>-><meth>... where <ref> is a reference variable whose value points to an instance of the class. Visible instance methods can be called from outside the class using CALL METHOD <class>=><meth>... where <class> is the name of the relevant class class.
ABAP Objects
C Constructors
Constructors
Constructors are special methods that cannot be called using CALL METHOD. Instead, they are called automatically by the system to set the starting state of a new object or class. Executed E t d only l once per i instance t at t th the ti time of f creating ti an object bj t Constructors initialize objects Constructors are methods with a predefined name. To use them, you must declare them explicitly in the class. Only has IMPORTING parameters and EXCEPTIONS METHODS CONSTRUCTOR IMPORTING param TYPE type EXCEPTIONS exception.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Static Constructors
Static Constructors S C CLASS-METHODS: CLASS_CONSTRUCTOR Only Only accessed once per program Automatically called before the class is first accessed Eg: Creation C ti of f 1st object bj t 1st access of static method 1st access of static attribute Cannot have parameters and exceptions
ABAP Objects
Functional Methods
Functional Methods These are methods which can be called like functions. Only 1 parameter can be RETURNING parameter and this has to passed BY VALUE Can have importing parameters No N EXPORTING and d CHANGING parameters t Format: Eg: g a = b + function_name(). ()
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
Inheritance - 1
Inheritance allows y you to derive a new class from an existing g class. You do this using the INHERITING FROM addition in the CLASS <subclass> DEFINITION INHERITING FROM <superclass>. <superclass> statement. The new class <subclass> inherits all of the components of the existing class <superclass>. The new class is called the subclass of the class from which it is derived derived. The original class is called the superclass of the new class. Only the public and protected components of the superclass are visible in the subclass. You can declare private components in a subclass that have the same names as private components of the superclass. Each class works with its own private components.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Inheritance - 2
A class can have more than one direct subclass, but it may only have one direct superclass. This is called single inheritance. The root node of all inheritance trees in ABAP Objects is the predefined empty class OBJECT. This is the most generalized class possible, since it contains neither attributes nor methods.
ABAP Objects
Inheritance - Example
Inheritance Example
ABAP Objects
All subclasses contain the components of f all classes between themselves and the root node in an inheritance tree. The visibility of a component cannot be changed. However, you can use the REDEFINITION addition in the METHODS statement to redefine an inherited public or protected instance method in a subclass and make its function more specialized. When you redefine Wh d fi a method, th d you cannot t change h its it interface i t f . The Th method th d retains the same name and interface, but has a new implementation. i.e. method overloading is not allowed. However, method overloading is allowed in case of constructors. Any reference that points to an object of the subclass uses the redefined method, even if the reference was defined with reference to the superclass superclass.
ABAP Objects
Within a redefined f method, you can use the pseudoreference f SUPER-> S to access the obscured method. This enables you to use the existing function of the method in the superclass without having to recode it in the subclass. The method declaration and implementation in the superclass is not affected when you redefine the method in a subclass. Any reference that points to an object of the subclass uses the redefined method, even if the reference was defined with reference to the superclass. p If, for example, a superclass method M1 contains a call CALL METHOD ME->[M2], and M2 is redefined in a subclass subclass, calling M1 from an instance of the superclass will cause the original method M2 to be called, and calling M1 from an instance of the subclass will cause the redefined method M2 to be called.
ABAP Objects
Inheritance Constructors
If you define d fi a constructor t t in i the th sub-class, b l th then i irrespective ti of f whether h th you h have defined a constructor in the super-class or not, you need to explicitly call the constructor of the super-class using the statement CALL METHOD SUPER->CONSTRUCTOR. Incase the super-class does not have a constructor, the default constructor will be called by the system. (which will do nothing) If you don dont t have a constructor in the sub sub-class class but if you have a constructor in the super-class, and if you create an object of the sub-class, then the default constructor of the sub-class will call the constructor of the super-class.
ABAP Objects
ABAP Objects
The ABSTRACT S C and FINAL additions to the METHODS O S and CLASS C SS statements allow you to define abstract and final methods or classes. Abstract Abstract classes cannot be instantiated. An abstract method is defined in an abstract class and cannot be implemented in that class. Instead, it HAS to be implemented in the subclass. Final Final classes cannot have subclasses. They y conclude an inheritance tree. A final method cannot be redefined in a subclass. All methods in final classes are automatically final. Singleton Classes Classes that are both abstract and final are known as Singleton classes Only static components can be used. Only 1 instance (single) of such a class may be defined This instance needs to be defined within the class itself
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
Polymorphism
If f you redefine f a method of f a superclass in a subclass, you can use a reference f variable defined with reference to the superclass to address objects with different method implementations. When you address the superclass, the method has the original implementation, but when you address the subclass, the method has the new implementation. Using U i a single i l reference f variable i bl to t call ll identically-named id ti ll d methods th d that th t behave differently is called polymorphism. e.g. g
Polymorphism Example
ABAP Objects
Narrowing Cast
Getting g a super p class variable to refer to a subclass variable is called Narrowing g Cast E.g. Obj_super = obj_sub. After Narrowing cast cast, you can use the super class reference to access the components of the subclass instance that were inherited from super class The components inherited from the superclass can be addressed Also called Up-Cast Use: A user who is not interested in the finer points of subclasses subclasses, but only in the attributes of the superclass, does not need to know about them. The user only wants to work with references to the superclass. Hence in order to allow the user to work with subclass objects, you need a Narrowing cast Also used to access interface components
ABAP Objects
Widening Cast
Getting g a sub class variable to refer to a superclass p variable is called Widening g Cast The problem (Need for widening cast): Data: r_vehicle TYPE REF To lcl_vehicle. LOOP AT vehicle_list vehicle list INTO r r_vehicle. vehicle *Only for trucks * ENDLOOP. -----------------------------------------------------------------------------------------------------The solution (Widening cast): Data: r_vehicle TYPE REF To lcl_vehicle, r truck TYPE REF TO lcl_truck. r_truck lcl truck LOOP AT vehicle_list INTO r_vehicle. TRY. r_truck ?= r_vehicle. *processing for trucks CATCH CX_SY_MOVE_CAST_ERROR INTO r_exception. *processing for error situation CLEANUP. ENDTRY. ENDLOOP.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Widening Cast
Widening Cast
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
Interfaces
It is often necessary for similar classes to provide similar functions that are coded differently in each class but which should provide a uniform point of contact for the user. For example, you might have two similar classes, savings account and check account, both of which have a method for calculating end of year charges. The interfaces and names of the methods are the same, but the actual implementation is different The user of the classes and their instances must also be able to run the different. end of year method for all accounts, without having to worry about the actual type of each individual account. ABAP ABAP Objects Obj t makes k this thi possible ibl b by using i i interfaces. t f I Interfaces t f are i independent d d t structures that you can implement in a class to extend the scope of that class. Interfaces extend the scope of a class by adding their own components to its public section. This allows users to address different classes via a universal point of contact. Interfaces, along with inheritance, provide one of the pillars of polymorphism, since they allow a single method within an interface to behave differently in different classes.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Like Lik classes, l you can d define fi i interfaces t f either ith globally l b ll i in th the R/3 R Repository it or locally in an ABAP program. The definition of a local interface <intf> is enclosed in the statements: INTERFACE <intf>. ... ENDINTERFACE. The definition contains the declaration for all components (attributes, methods, events) of the interface. The components of interfaces do not have to be assigned individually to a visibility section, since they automatically belong to the public section of the class in which the interface is implemented. Interfaces do not have an implementation part, since their methods are implemented in the class that implements the interface.
ABAP Objects
Unlike Unlike classes classes, interfaces do not have instances instances. Instead Instead, interfaces are implemented by classes. To implement an interface in a class, use the statement CLASS <class> l DEFINITION INTERFACES <intf>. i tf in the declaration part of the class. This statement may only appear in the public section of the class. A component <icomp> of an interface <intf> can be addressed as though it were a member of the class under the name <intf~icomp>. The class must implement the methods of all interfaces implemented in it. The implementation part of the class m must st contain a method implementation for each interface method <imeth>: METHOD <intf~imeth>. ... ENDMETHOD. Interfaces can be implemented by different classes. Each of these classes is extended by the same set of components components. However However, the methods of the interface can be implemented differently in each class.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Instead of creating reference variables with reference to a class, you can also define them with reference to an interface. To To define an interface reference, use the addition TYPE REF TO <intf> intf in the TYPES or DATA statement. A reference variable with the type interface reference is called a interface reference variable, i bl or i interface t f reference f f for short. h t An interface reference <iref> allows a user to use the form <iref>-><icomp> to address all visible interface components p <icomp> p of the object j to which the object j reference is pointing. It allows the user to access all of the components of the object that were added to its definition by the implementation of the interface interface.
ABAP Objects
If the th class l <class> < l > implements i l t an i interface t f <intf>, <i tf> you can use th the following f ll i assignment between the class reference variable <cref> and an interface reference <iref> to make the interface reference in <iref> point to the same object as the class reference in <cref>: <iref> = <cref> If the interface <intf> contains an instance attribute <attr> and an instance method <meth>, you can address the interface components as follows: Using the class reference variable <cref>: To access an attribute <attr>: <cref>-><intf~attr> To call a method <meth>: CALL METHOD <cref>-><intf~meth> Using the interface reference variable <iref>: To access an attribute <attr>: < iref>-><attr> To call a method <meth>: CALL METHOD <iref>-><meth>
ABAP Objects
As far as the static components of interfaces are concerned, you can only use the interface name to access constants: Addressing a constant <const>: < intf>=><const> For all other static components of an interface, you can only use object references or the class <class> that implements the interface: Addressing a static attribute <attr>: < class>=><intf~attr> Calling a static method <meth>: CALL METHOD <class>=><intf~meth>
ABAP Objects
ABAP Objects
ABAP Objects
INTERFACE I_COUNTER. METHODS: SET_COUNTER IMPORTING VALUE(SET_VALUE) TYPE I, INCREMENT_COUNTER, GET_COUNTER EXPORTING VALUE(GET_VALUE) TYPE I. ENDINTERFACE. CLASS C_COUNTER1 DEFINITION. PUBLIC SECTION. INTERFACES I_COUNTER. PRIVATE SECTION. DATA COUNT TYPE I. ENDCLASS. CLASS C_COUNTER1 IMPLEMENTATION. METHOD I_COUNTER~SET_COUNTER. COUNT = SET_VALUE. ENDMETHOD. METHOD I I_COUNTER~INCREMENT_COUNTER. COUNTER INCREMENT COUNTER ADD 1 TO COUNT. ENDMETHOD. METHOD I_COUNTER~GET_COUNTER. GET_VALUE = COUNT. ENDMETHOD. ENDCLASS.
ABAP Objects
The interface I_COUNTER contains three methods SET_COUNTER, INCREMENT_COUNTER, and GET_COUNTER. The classes C C_COUNTER1 COUNTER1 and C C_COUNTER2 COUNTER2 implement the interface in the public section. Both classes must implement the three interface methods in their implementation part. C_COUNTER1 is a class for counters that can have any starting value and are then increased by one. C_COUNTER2 is a class for counters that can only be increased in steps p of 10. Both classes have an identical outward face. It is fully y defined by y the interface in both cases. The following sections explain how a user can use an interface reference to address the objects of both classes:
ABAP Objects
First, two class reference variables CREF1 and CREF2 are declared for the classes C_COUNTER1 and C_COUNTER2. An interface reference IREF is also declared for the interface I_COUNTER. All of the reference variables are initial.
ABAP Objects
The CREATE OBJECT statement creates an object for each class to which the references in CREF1 and CREF2 point.
ABAP Objects
When the reference of CREF1 is assigned to IREF, the reference in IREF also points to the object with the internal name C_COUNTER<1>.
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
Events
An event is the occurrence of f a special condition during the execution of f an ABAP program. This occurrence must be of sufficient importance for the ABAP program to take a special action. The following steps are required in an ABAP program in order to handle events: Triggering Ti i E Events t Handling Events
ABAP Objects
Triggering Events
Triggering Events To trigger an event, a class must Declare the event in its declaration part Trigger the event in one of its methods
ABAP Objects
Declaring Events
You declare events in the declaration part of f a class or in an interface. f To declare instance events, use the following statement: EVENTS <evt> evt EXPORTING... VALUE( VALUE(<ei>) ei ) TYPE type [OPTIONAL].. To declare static events, use the following statement: CLASS-EVENTS <evt>... Both statements have the same syntax. When y you declare an event, , you y can use the EXPORTING addition to specify p y parameters that are passed to the event handler. The parameters are always passed by value. Instance events always contain the implicit parameter SENDER, which has the type of a reference to the class or the interface in which the event is declared.
ABAP Objects
Triggering Events
An instance event in a class can be triggered by any method in the class. Static events can be triggered by any static method. To trigger an event in a method, use the following statement: RAISE EVENT <evt> EXPORTING... <ei> = <fi>...
ABAP Objects
Handling Events
Events are handled using special methods. To handle an event, a method must be defined as an event handler method for that event be registered at runtime for the event.
ABAP Objects
Any y class can contain event handler methods for events from other classes. You can, of course, also define event handler methods in the same class as the event itself. To declare an event handler method, use the following statement: METHODS <meth> FOR EVENT <evt> OF <cif> IMPORTING IMPORTING.. <ei>.. <ei> for an instance method. For a static method, use CLASS-METHODS instead of METHODS. <evt> is an event declared in the class or interface <cif>. The interface of an event handler method may only contain formal parameters defined in the declaration of the event <evt>. The attributes of the parameter are also adopted by the event. The event handler method does not have to use all of the parameters passed in the RAISE EVENT statement. If you want the implicit parameter SENDER to be used as well, you must list it in the interface. This parameter allows an instance event handler to access the trigger, for example, to allow it to return results. If you declare an event handler method in a class, it means that the instances of the If class or the class itself are, in principle, able to handle an event <evt> triggered in a method.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
To allow an event handler method to react to an event, , you y must determine at runtime the trigger to which it is to react. You can do this with the following statement: SET HANDLER... <hi>... [FOR]... It links a list of handler methods with corresponding trigger methods methods. For an instance event, you must use the FOR addition to specify the instance for which you want to register the handler. You can either specify a single instance as the trigger, using a reference variable <ref>: SET HANDLER... <hi>...FOR <ref>. or you can register the handler for all instances that can trigger the event: SET HANDLER... HANDLER <hi> <hi>...FOR FOR ALL INSTANCES INSTANCES. The registration then applies even to triggering instances that have not yet been created when you register the handler. You cannot use the FOR addition for static events: SET HANDLER... <hi>... The registration applies automatically to the whole class, or to all of the classes that implement the interface containing the static event. In the case of interfaces, the registration also applies to classes that are not loaded until after the handler has been registered.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
ABAP Objects
Example Events
Events Example
ABAP Objects
lcl-car Class-data: count Class-methods: Class methods: class class_constructor, constructor increment
ABAP Objects
Friends
A A class can offer friendship to other classes or interfaces interfaces. Friends have access to all components of a class and can always instantiate a class. A class offering friendship is not automatically a friend of its friends. Sub-classes of friends automatically become friends of the class offering friendship Advantages: Advantages: Unrestricted access Fast access
ABAP Objects
Persistent Classes
Transient and persistent data ABAP programs work with local program data, which resides in the programs internal session. This data lives only as long as its context that is, as long as its associated procedure (for local procedure data); its object (for attributes of classes); or its program (for global program data). This data is known as transient. Data that can be preserved beyond the runtime of the program is known as persistent. Data in object-oriented object oriented programming An object in ABAP Objects is transient. It exists in the internal program session only from the time it is generated (using CREATE OBJECT) until it is deleted by the Garbage g Collector. Ideally you could save the encapsulation of data and functions persistently within the object instead. A program could then leave an object in a certain state and a second p program g could continue working g on the object j in that state. Classes of objects are already persistent anyway, but you need some way of saving the attributes of an object persistently and then make reference to the pp p class. The Persistence Service allows y you to do exactly y that. appropriate
ABAP Objects
Persistent Classes
The Persistence Service for Persistent Objects ABAP Objects are always transient, just like the data objects in ABAP programs. There are no persistent objects in ABAP Objects. However, the Persistence Service within Object Services allows application developers to work with persistent objects objects. The Persistence Service can be thought of as a software layer between the ABAP program and the data repository (that is, the database), which allows you to save the attributes of objects with a unique identity, and then load them again when you need d th them. Put simply, the Persistence Service ensures that an object is initialized in a specified state, and saves the state of that object when required. The relationship between the object and the description of its state in the database is similar to the relationship between transient and persistent data outlined above. The state of the object when it is instantiated reflects the state of the data in the database at that time time. Changes to the object state in the ABAP program are not written to the database immediately, but only after the appropriate request has been made (that is, the COMMIT WORK statement has been executed). executed) Thus, Thus a persistent object exists as an original in the database and as a copy in one or more ABAP programs.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Persistent Classes
Persistent Classes To use the Persistence Service for objects, the classes of these objects must be created as persistent classes in the Class Builder. The term persistent class does not imply that a class is persistent. (As a template for objects, every class is persistent). Rather, it means that the objects of that class and their state are managed by the Persistence Service. For example, the objects of these classes are instantiated in the ABAP program with a method of the Persistence Service, which ensures that the initialization is correct (not with the usual CREATE OBJECT statement). When the Class Builder creates a persistent class, it automatically generates an associated class, known as the class actor or class agent, whose methods manage the objects j of p persistent classes.
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
Global Classes - 1
ABAP Objects
Global Classes - 2
To Create a Class
Then specify whether you want to create a class or interface.
ABAP Objects
Global Classes - 3
To Create a Method. Double click on the object Name(ZNDC) and it will take you the following Screen, where you define the level, visibility, Description etc. for particular method in a class.
ABAP Objects
Global Classes - 4
To Implement your method. Double click on the Method to implement your method. Click to implement your
method
ABAP Objects
Global Classes - 5
ABAP Objects
Global Classes - 6
Public Section
ABAP Objects
Global Classes - 7
Public Section S of f the Class, C which is visible & accessible to all users of f the class.
ABAP Objects
ALV Grids - 1
The ALV Grid G control is a flexible f tool for f displaying lists. The tool provides common list operations as generic functions and can be enhanced by selfdefined options. The ALV Grid control is used to build non-hierarchical, interactive, and modern-design lists. As a control, it is a component that is installed on the local PC.
ABAP Objects
ALV Grids - 2
Step 1: S 1 In Screen Painter: Create a screen with a custom control object on it and give the custom control a name (e.g. CC_ALV) Step 2: In Screen logic: Create TYPE REFs to cl_gui_custom_container and cl_gui_alv_grid DATA: container TYPE REF TO cl_gui_custom_container, grid TYPE REF TO cl_gui_alv_grid. Step 3: In PBO of screen: create objects for the above 2 reference variables IF container IS INITIAL INITIAL. CREATE OBJECT container EXPORTING container_name = ' CC_ALV '. ELSE . CALL METHOD grid->refresh_table_display ENDIF.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
ALV Grids - 3
CREATE O C OBJECT C grid EXPORTING i_parent = container. Step 4: In PBO of screen or start-of-selection: -Create an internal table having structure same as what you want to display -Populate internal table with data to be displayed Step 5: In PBO of screen: Transfer data to the grid CALL METHOD grid->set_table_for_first_display EXPORTING i_structure_name = ' structure name CHANGING it_outtab = . internal table name
ABAP Objects
ALV Grids 4
Step 6 S 6: Before LEAVE PROGRAM: Free the container call method custom custom_container1 container1->free. free. call method cl_gui_cfw=>flush.
ABAP Objects
ALV Grids 5
ALV grids with Field Catalog
*ITAB & W.A FOR FIELDCATLOG DATA ITAB_FCAT TYPE LVC_T_FCAT. DATA WA_FCAT LIKE LINE OF itab_fcat. *POPULATE ITAB WA FCAT-FIELDNAME WA_FCAT FIELDNAME = CTYPE'. CTYPE . WA_FCAT-REF_FIELD = 'CUSTTYPE' . Database field name WA_FCAT-REF_TABLE = 'SBOOK'. Database table name WA_FCAT-COL_POS = 27. APPEND WA_FCAT WA FCAT TO ITAB_FCAT. ITAB FCAT *Call method set_table_for_first_display, passing the name of the field catalog CALL METHOD r_alv_g grid->set_table_for_first_display p y EXPORTING I_STRUCTURE_NAME = 'SBOOK' CHANGING IT OUTTAB = ITAB IT_OUTTAB IT_FIELDCATALOG = ITAB_FCAT.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
Using a selection screen, read the value of f material type. (MARA-MTART) ( ) Create an ALV on another screen in the same module pool program and display 100 records. Display only the following fields: Material number (MARA-MATNR) Material Group (MARA-MATKL) Material Description (MAKT-MAKTX) Create GUI status for proper navigation.
ABAP Objects
The occurrence of an exception p is normally y used to display p y an error situation. Class-based exception handling is based on exception classes. All exception classes are part of an inheritance hierarchy with a common superclass, CX_ROOT. Class-based exceptions can, therefore, be raised and handled in all ABAP contexts (programs, processing blocks). Class-based exceptions are either raised 1 Explicitly by the ABAP statement RAISE EXCEPTION or 1. 2. Automatically by the ABAP runtime environment. If a class-based exception occurs, the system interrupts the normal program flow and tries to find a suitable handler. If it does not find a handler, a runtime error occurs. Exceptions that are raised in procedures but are not handled in the procedure itself are forwarded to the caller. The caller can either handle the exception or forward it.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
The handler of f an exception must try to correct the error that has occurred, find f an alternative solution, or (if this is not possible) at least bring the affected context into a consistent state and then forward the error. If a call hierarchy does not contain a handler for an exception, the program is ended with a runtime error. Class-based Cl b d exceptions ti are h handled dl d i in th the f following ll i control t l structure: t t TRY. ... " TRY block (application coding) CATCH cx_... cx_... ... ... " CATCH block (exception handler) CATCH cx_... cx_... ... ... " CATCH block (exception handler) ... CLEANUP. ... " CLEANUP block (cleanup context) ENDTRY.
ABAP Objects
Case 1 C 1: An exception occurs and there is no handler defined f f for it either in the current TRY-ENDTRY block or in the caller blocks Runtime error occurs Case 2: An exception occurs and there is a handler for it in the same TRY-ENDTRY block Program flow is interrupted Corresponding C di CATCH bl block k gets t executed t d CLEANUP is not executed Program flow continues after the TRY-ENDTRY block Case 3: An exception occurs, there is no handler for it in the same TRY-ENDTRY block, but there is a handler for it either in the enclosing TRY-ENDTRY block or the calling procedure Program flow is interrupted CATCH is not executed for the current TRY-ENDTRY block CLEANUP is executed in the current TRY-ENDTRY block if it exists CATCH gets executed in the enclosing/calling block
ABAP Objects
The TRY statement opens a control structure to be ended with ENDTRY, in which three statement blocks can be listed in a specified order. 1. A TRY block, in which exceptions can occur. This exception block consists of all the statements between the TRY and the CATCH statement. O or more CATCH bl One blocks k f for catching t hi exceptions. ti These exception blocks are initiated with CATCH and ended with a further CATCH, CLEANUP, or ENDTRY. A CLEANUP block for cleanup work after the exceptions have been caught. This statement block is initiated by CLEANUP and ended with ENDTRY. A TRY-ENDTRY structure must not contain more than one CLEANUP block in precisely this position position. TRY-ENDTRY structures can be nested in any statement blocks.
2 2.
3.
ABAP Objects
The TRY block contains the application pp coding g whose exceptions p are to be handled. This statement block is processed sequentially. It can contain further control structures and calls of procedures or other ABAP programs. If an exception occurs in the TRY block or in a procedure called up here here, the system starts by searching for a CATCH statement of the same TRY-ENDTRY structure. It then searches from the inside out for a CATCH statement in any enclosing TRY-ENDTRY structures that handle the event. The system may call this handler. If the system does not find a handler, but the TRY-ENDTRY structure is contained in a procedure, it tries to propagate the exception to the caller. Exceptions cannot be propagated in any processing blocks without a local data area (event blocks, dialog modules). A runtime error occurs immediately if the handler is missing. If no exceptions occur in the TRY block, program execution is continued directly after ENDTRY after the block has been completed.
5. ABAP OBJECTS
Classes and objects I h it Inheritance Polymorphism (casting) Interfaces Events Gl b l classes Global l and d interfaces i t f Exception handling
Satyam SAP PMG SAP PMG
ABAP Objects
A catch block contains the exception p handler that is executed when a particular exception has occurred in the TRY block of the same TRY-ENDTRY structure.
A TRY-ENDTRY TRY ENDTRY structure can contain several exception handlers. handlers The syntax for introducing an exception handler is: CATCH cx_... cx_... INTO ref. This defines an exception handler for all the specified exception classes and their subordinate classes.
After an exception occurs, occurs the system searches through the listed exception handlers in the specified order. The first exception handler whose CATCH statement contains the corresponding exception class or one of its superclasses is executed. The system then continues program execution directly after ENDTRY.
No subsequent exception handlers are considered. For this reason, the order of the different exception handlers within a TRY-ENDTRY structure must be based on the inheritance hierarchy of the specified exception classes.
Satyam Satyam SAP SAP PMG PMG SAP PMG Delivering Solution Excellence and Innovation
ABAP Objects
The syntax check ensures that the handlers for f more specific f exceptions (subordinate classes) can only be listed before the handlers for more general exceptions (superclasses). With the INTO addition, a reference to the exception object can be placed into a reference variable. This enables the attributes of the exception object to be accessed in the handler.
The reference variable must be suitable for the exception. Its static type must be the exception class itself or one of its superclasses.
ABAP Objects
If the system y has not found a handler for an exception, p , but the exception p is handled in an enclosing TRY-ENDTRY structure or is propagated to a caller, the CLEANUP block is executed before the TRY-ENDTRY structure is exited. Precisely one CLEANUP block can be defined in each TRY TRY-ENDTRY ENDTRY structure structure. For example, objects often have to be brought into a consistent state or external resources, to which an external handler no longer has access, have to be released. All the statements that change the control flow, which cause the CLEANUP block to be exited and would initiate a processing block of the same program program, are forbidden. This applies to statements such as RETURN, STOP, for example. All the exceptions that occur within a CLEANUP block must also be handled here. It is, however, permissible to leave the overall program (LEAVE PROGRAM) or call up procedures, programs, and screen sequences if the system returns to the CLEANUP block. The runtime environment always recognizes that a CLEANUP block is being exited illegally and then reacts with a runtime error.
Delivering Solution Excellence and Innovation
ABAP Objects
ABAP Objects
CX NO CHECK CX_NO_CHECK You CAN handle these exceptions. If you dont, they are passed along automatically. They cannot be passed explicitly using the RAISING addition. Not part of syntax check
You MUST handle these exceptions or pass them along explicitly using the RAISING addition.
ABAP Objects
Class-based exceptions p that occur in p procedures ( (methods, , function modules, , subroutines) do not necessarily have to be handled here. They can be propagated to the caller of the procedure. If the caller is a procedure and the call takes place in a TRY block, the caller can handle the exception or propagate it to its caller. caller The highest level to which exceptions can be propagated is processing blocks without a local data area, in other words, event blocks or dialog modules. Both the exceptions forwarded from called procedures and the exceptions that have occurred in the individual coding must be handled here. Otherwise, a runtime error will occur. A static constructor of a class cannot propagate exceptions, since a user of a class does not know whether it is the first user and whether or not it has to handle any exceptions that are propagated by the static constructor. Likewise, event handler methods cannot propagate exceptions. To propagate exceptions from procedures, the RAISING addition must usually be used for the definition of the interface of a procedure (except for static constructors and event handlers).
Delivering Solution Excellence and Innovation
ABAP Objects
Propagating Exceptions
ABAP Objects
The most important p feature of a caught g exception p is the fact that it has occurred and that it is handled in the program. It is left to the handler to decide how the exception situation is dealt with. It is not up to the exception itself to interact with the program user. Nevertheless, an explanatory text is assigned to each exception. This text describes the exception situation more precisely and is output as an error message if the exception is not handled. It should, however, only be used sparingly during exception handling for communication with the user. The exception text describes an error situation from a mostly technical view view. If an exception is described to a user, it should be described from the user's perspective.
ABAP Objects
Exception Texts
ABAP Objects
Class Practice
Class Based Exceptions + Widening cast Create a super class and its sub class. Create objects of both classes. Try to assign the object of the superclass to the object of the subclass subclass. If successful successful, write Bingo else handle the exception.
Extract datasets Data output in lists( Standard, Self-defined, Lists with several p pages g ) Interactive lists( At line-selection , At User-command) List creation with the ALV grid control
LIST PROCESSING
Refining Data A report t must t sort td data,calculate t l l t totals,count t t l t item it in i lists li t and d so on. you can read the data to be refined from database tables or from . sequential files or u can create generic report. The refining process is independent of the process of retrieving data. Create data set Refine the data set
LIST PROCESSING
Creating and Refining datasets: Abap/4 offers two methods of creating datasets in the storage Internal tables . Extract datasets Internal tables : If you want the datasets to map the underlying data structures as closely as possible and if you want to access individual data directly. Extract datasets : An extract is a sequential dataset you can create with a report.Use e tracts if you extracts o want ant to process large amo amount nt of data as a whole hole several times
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
LIST PROCESSING
Refining data using EXTRACT DATASETS: An Extract is a sequential dataset in the reports storage area.this means that you can access its data only within a loop. . During the reports run time,the system can create exactly one extract dataset. dataset As for internal tables the size of the extract data set is principally unlimited,since the system rolls it out if necessary. In one extract dataset,you can store records of different length and structure one after the other.
LIST PROCESSING
Declaring Extract Records as Field Groups An extract dataset consists of a sequence of records. These records may . have different structures. All records with the same structure form a record type type. You must define each record type of an extract dataset as a field group, using the FIELD-GROUPS statement. Syntax FIELD-GROUPS <fg>.
LIST PROCESSING
Filli an Extract Filling E t t with ith Data D t Once you have declared the possible record types as field groups and defined their structure, you can fill the extract dataset using the following statements: . Syntax g EXTRACT <fg>. When the first EXTRACT statement occurs in a program, the system creates t th the extract t t dataset d t t and d adds dd the th first fi t extract t t record d to t it. it In I each h subsequent EXTRACT statement, the new extract record is added to the dataset
LIST PROCESSING
R di Reading an Extract E t t Like internal tables, you can read the data in an extract dataset using a loop loop. syntax . LOOP. [AT FIRST | AT <fgi> [WITH <fg j>] | AT LAST. ... ENDAT.] ... ENDLOOP. ENDLOOP
LIST PROCESSING
Sorting an Extract You can sort an extract dataset in much the same way as an internal table by using the following statement: . syntax SORT [ASCENDING|DESCENDING] [AS TEXT] [STABLE] BY <f1> [ASCENDING|DESCENDING] [AS TEXT] ... <fn> [ASCENDING|DESCENDING] [AS TEXT].
LIST PROCESSING
Processing Control Levels When you sort an extract dataset, control levels are defined in it. For general information about control levels, The control level hierarchy of an extract dataset corresponds to the sequence of the fields in the HEADER . field group. After sorting, you can use the AT statement within a loop to program statement blocks that the system processes only at a control break, that is, when the control level changes. Syntax AT NEW <f> | AT END OF <f>. ... ENDAT.
Extract datasets Data output in lists( Standard, Self-defined, Lists with several p pages g ) Interactive lists( At line-selection , At User-command) List creation with the ALV grid control
BASIC LISTS
Lists Lists are the output medium for data from ABAP/4 report programs. Each program can produce up to 21 lists: one basic list and 20 secondary lists. Structure and the options of a list are The Standard List The Self-Defined List Lists with Several Pages
BASIC LISTS
The standard list If an ABAP/4 report makes use only of the WRITE, SKIP, and ULINE output t t statements t t t .This Thi list li t is i called ll d standard t d d list. li t The standard list consists of: Standard Page Header Standard Page User Interface of the Standard List The next slide shows a standard list.
BASIC LISTS
BASIC LISTS
The Self-Defined List Self defined list is a list created by modifying the standard list by Self-defined using options of the REPORT statement and using event keywords TOP-OF-PAGE and END-OF-PAGE. The possible modifications that can be performed in a standard list are : Page Header List Width Page Length Page Footer
BASIC LISTS
Page Header To layout a page header individually, you must define it in the processing block following the event keyword TOP TOP-OF-PAGE: OF PAGE: Syntax TOP-OF-PAGE. WRITE: .... The TOP-OF-PAGE event occurs as soon as the system starts processing a new page of a list and before outputting the first line on a new page. Note : The self-defined self defined page header appears beneath the standard page header header. If you want to suppress the standard page header, use the NO STANDARD PAGE HEADING option of the REPORT statement.
BASIC LISTS
REPORT demo_list_page_heading d li t h di NO STANDARD PAGE HEADING. HEADING TOP-OF-PAGE. WRITE: sy-title, 40 'Page', sy-pagno. ULINE. WRITE: / 'SAP SAP AG', AG , 29 'Walldorf, Walldorf, ',sy-datum, ,sy datum, / 'Neurottstr. 16', / '69190 Walldorf/Baden'. ULINE. START-OF-SELECTION. DO 5 TIMES. WRITE / sy-index. ENDDO.
BASIC LISTS
BASIC LISTS
List Width To determine the width of the output list, use the LINE-SIZE option of the REPORT statement. Syntax REPORT <rep> LINE-SIZE <width>.
Note : If you set <width> to 0, 0 the system uses the width of the standardlist . The system field SY-LINSZ contains the current line width
BASIC LISTS
Page Length To determine the page length of an output list, use the LINE-COUNT option ti of f the th REPORT statement. t t t Syntax REPORT <rep> LINE-COUNT <length>[(<n>)]. <n> ---->The >The system reserves <n> lines of the page length for the page footer. Note : If you set <length> to zero, the system uses the standard page length . The system field SY-LINCT contains the current number of lines per page
BASIC LISTS
REPORT demo_list_line_count LINE-SIZE 40 LINECOUNT 4. WRITE: 'SY-LINCT:', sy-linct. SKIP. DO 6 TIMES. WRITE / sy-index. ENDDO.
BASIC LISTS
BASIC LISTS
Page Footer To define a page footer, use the END-OF-PAGE event. Syntax END-OF-PAGE. END OF PAGE WRITE: .... This event occurs when the system reaches the lines reserved for the page footer, or if the RESERVE statement triggers a page break. Note : The system only processes the processing block following END-OF-PAGE if you reserve lines for the footer in the LINE-COUNT option of the REPORT statement .
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
BASIC LISTS
REPORT demo_list_end_of_page LINE-SIZE 40 LINE-COUNT 6(2) NO STANDARD PAGE HEADING. TOP OF PAGE TOP-OF-PAGE. WRITE: 'Page with Header and Footer'. ULINE AT /(27). /(27) END-OF-PAGE. ULINE. WRITE: /30 'Page', sy-pagno. START-OF-SELECTION. DO 6 TIMES. WRITE / sy-index. ENDDO.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
BASIC LISTS
BASIC LISTS
Lists with Several Pages If in your report has more number of lines than defined in the LINECOUNT option of the REPORT statement, the system automatically creates t a new page . Apart from automatic page breaks, you can use the NEW-PAGE and RESERVE statements to code page breaks explicitly. explicitly
BASIC LISTS
Page Break- Conditional To execute a page break under the condition that less than a certain number of lines is left on a page, use the RESERVE statement: Syntax RESERVE <n> LINES LINES. This statement triggers a page break if less than <n> free lines are left on the current list page between the last output and the page footer. Before starting a new page, the system processes the END-OF-PAGE event.
BASIC LISTS
REPORT demo_list_reserve LINE-SIZE 40 LINE-COUNT 8(2). END-OF-PAGE. ULINE. START-OF-SELECTION. DO 4 TIMES. WRITE / sy-index. ENDDO. DO 2 TIMES. WRITE / sy-index. ENDDO. RESERVE 3 LINES. WRITE: / 'LINE 1', / 'LINE 2', / 'LINE 3'.
BASIC LISTS
BASIC LISTS
Page Break- Unconditional Syntax NEW-PAGE. * Ends the current page. All other output appears on a new page. * The system then increases the SY-PAGNO system field by one. * Does not trigger the END-OF-PAGE END OF PAGE event. Variants in NEW_PAGE are: NEW-PAGE [NO-TITLE|WITH-TITLE] NO-HEADING|WITH-HEADING]. NEW-PAGE LINE-COUNT <length>. NEW-PAGE LINE-SIZE <width>.
BASIC LISTS
REPORT demo_list_new_page LINE-SIZE 40. TOP-OF-PAGE. WRITE: 'TOP-OF-PAGE', sy-pagno. ULINE AT /(17). START-OF-SELECTION. DO 2 TIMES. WRITE / 'Loop:'. DO 3 TIMES. WRITE / sy-index. ENDDO. NEW-PAGE. ENDDO.
BASIC LISTS
BASIC LISTS
Scrolling from within the Program From within the program, you can scroll through lists vertically and h i horizontally. t ll The SCROLL statement allows you: Vertical Scrolling Scrolling Window by Window Scrolling by Pages Horizontal Scrolling g Scrolling to the List's Margins Scrolling by Columns
BASIC LISTS
Scrolling Window by Window To scroll through a list vertically by the size of the current window use this statement: Syntax SCROLL LIST FORWARD|BACKWARD. This statement scrolls forward or backward through the current list by the size of the current window.
BASIC LISTS
REPORT demo demo_list_scroll_1 list scroll 1 NO STANDARD PAGE HEADING LINE LINE-SIZE SIZE 40. TOP-OF-PAGE. WRITE: 'Top of Page', sy-pagno, 'SY-SROWS:', sy-srows. ULINE. START-OF-SELECTION. DO 100 TIMES. WRITE / sy-index. ENDDO. DO 3 TIMES. SCROLL LIST FORWARD. ENDDO.
BASIC LISTS
BASIC LISTS
Scrolling by Pages To scroll a list vertically depending on the page length, the SCROLL statement t t t offers ff t two options. ti Scrolling to Certain Pages Scrolling by a Certain Number of Pages
BASIC LISTS
Scrolling to Certain Pages To scroll to certain pages, use the TO option of the SCROLL statement: Syntax SCROLL LIST TO FIRST PAGE | LAST PAGE | PAGE <page> . This statement scrolls the current list to the first, to the last, or to the page numbered <page> .
BASIC LISTS
Scrolling by a Certain Number of Pages To scroll a list by a certain number of pages, use the following options of th SCROLL statement: the t t t Syntax SCROLL LIST FORWARD | BACKWARD <n> PAGES. This statement scrolls forward or backward <n> pages.
BASIC LISTS
Scrolling to the List's Margins To scroll horizontally to the left or right margin of a list, use the following options of the SCROLL statement: Syntax SCROLL LIST LEFT | RIGHT. This statement scrolls to the left or right margin of the currentlist. currentlist
BASIC LISTS
REPORT demo_list_scroll_3 NO STANDARD PAGE HEADING LINE-SIZE 200. TOP-OF-PAGE. WRITE: AT 161 'Top of Page', sy-pagno, 'SY SY-SCOLS: SCOLS:', sy-scols. sy scols ULINE. START OF SELECTION START-OF-SELECTION. DO 200 TIMES. WRITE sy-index. sy index ENDDO. SCROLL LIST RIGHT.
BASIC LISTS
BASIC LISTS
Scrolling by Columns To scroll a list horizontally by columns, the SCROLL statement offers two options. A column in this case means one character of the list line.
BASIC LISTS
Scrolling to Certain Columns To scroll to certain columns, use the TO COLUMN option of the SCROLL statement: Syntax SCROLL LIST TO COLUMN <colm> . This system displays the current list starting from column <colm>.
BASIC LISTS
S Scrolling lli by b a Certain C t i Number N b of f Columns C l To scroll a list by a certain number of columns columns, use the following option of the SCROLL statement: Syntax SCROLL LIST LEFT | RIGHT BY <n> PLACES. This system scrolls the current list to the left or right by <n> columns.
BASIC LISTS
REPORT demo_list_scroll_4 NO STANDARD PAGE HEADING LINE-SIZE 200. TOP OF PAGE TOP-OF-PAGE. WRITE: AT 161 'Top of Page', sy-pagno, 'SY SY-SCOLS: SCOLS:', sy-scols. sy scols ULINE. START OF SELECTION. START-OF-SELECTION. DO 200 TIMES. WRITE sy-index. y ENDDO. SCROLL LIST TO COLUMN 178.
BASIC LISTS
BASIC LISTS
Left Boundary for Horizontal Scrolling To determine the left boundary of the horizontally scrollable area, use: Syntax SET LEFT SCROLL-BOUNDARY [COLUMN <col>].
BASIC LISTS
Excluding c ud g Lines es from o Horizontal o o ta Scrolling Sc o g To exclude a line (for example, a header or comment line) from horizontal scrolling, define the line feed for that line as follows: Syntax NEW LINE NO NEW-LINE NO-SCROLLING. SCROLLING The line following the statement cannot be scrolled horizontally. horizontally However, it can be scrolled vertically.
Extract datasets Data output in lists( Standard, Self-defined, Lists with several p pages g ) Interactive lists( At line-selection , At User-command) List creation with the ALV grid control
INTERACTIVE LIST
A list is an interactive list if the user interface allows actions that trigger events and if the corresponding interactive event keywords occur in the report. All lists li t created t d during d i an interactive i t ti list li t event t are secondary d lists. li t Interactive lists enhance the classical type of output list with dialog functionality,thus coming close to dialog programming. Interactive lists provide the user with so so-called called interactive interactive reporting reporting facility. facility Interactive reporting allows the user to participate actively in retrieving and presenting data during the the session. Instead of one extensive and detailed list,with interactive reporting you create a condensed basic list from which the user can call detailed information by yp positioning g the cursor and entering g commands. Interactive reporting thus reduces information retrieval to the data actually required. Detailed information is presented in secondary lists.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
Interactive Reporting
REPORT
TRANSACTION
INTERACTIVE LISTS
E Events t for f Interactive I t ti Lists Li t AT LINE-SELECTION AT PF<nn> PF AT USER-COMMAND
INTERACTIVE LISTS
All i Li Allowing Line Selection S l ti To allow the user to select a line from the list, define and write a processing block for the AT LINE LINE-SELECTION SELECTION event in your program: Syntax AT LINE-SELECTION. <statements>. In the predefined interface, Edit --> Choose and F2 are assigned to PICK.
INTERACTIVE LISTS
Page age Headers eade s for o Secondary Seco da y Lists sts On secondary lists, the system does not trigger the event TOP-OF-PAGE. To create page headers for secondary list: Syntax TOP-OF-PAGE DURING LINE-SELECTION. The system triggers this event for each secondary list. list
INTERACTIVE LISTS
Program which shows At LINE-SELECTION & TOP-OF-PAGE DURING LINE-SELECTION. REPORT demo_list_interactive_3 . START-OF-SELECTION. WRITE 'Basic List'. AT LINE-SELECTION. WRITE 'Secondary List'. TOP-OF-PAGE DURING LINE-SELECTION. CASE sy-lsind. WHEN 1. WRITE 'First Secondary List'. WHEN 2 2. WRITE 'Second Secondary List'. WHEN OTHERS. WRITE: 'Secondary List, Level:', sy-lsind. ENDCASE ENDCASE. ULINE.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
When clicked on the basic list Event AT LINE-SELECTION is triggered. Next Slide shows the modified Page Header and Text of the Secondary List
INTERACTIVE LISTS
INTERACTIVE LISTS
Allowing o g Function u ct o Key ey Selection Se ect o To allow the user to select an action by pressing a function key, Syntax AT PF<nn>. <statements>. t t t <nn> is a number between 1 and 24. SY-UCOMM returns the function code PF<nn>.
INTERACTIVE LISTS
START-OF-SELECTION. WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'. AT pf5. PERFORM out. t AT pf6. PERFORM out. AT pf7. PERFORM out. AT pf8. pf8 PERFORM out. FORM out. WRITE: 'Secondary List by PF-Key PF Key Selection' Selection', / 'SY-LSIND =', sy-lsind, / 'SY-UCOMM =', sy-ucomm. ENDFORM.
INTERACTIVE LISTS
If any function keys f5,f6,f7 & f8 are pressed it will take you to the relavent secondary list
INTERACTIVE LISTS
INTERACTIVE LISTS
S tti a St Setting Status t You set the status with the SET PF PF-STATUS STATUS statement, statement Syntax SET PF-STATUS <stat> [EXCLUDING <f>|<itab>]. Note: For the Status type of interactive lists, choose List or List in dialog box. The system then automatically loads function codes predefined for list processing into the Menu Painter.
INTERACTIVE LISTS
Th AT USER-COMMAND The USER COMMAND Event E t To allow your program to react to a user action triggering a self-defined function code Syntax AT USER-COMMAND. <statements>. The AT USER-COMMAND event occurs whenever the user selects a selfdefined function code from a self-defined user interface. The event does not occur if the user selects function codes predefined for system functions or the function code PICK, which always triggers the AT LINE SELECTION e LINE-SELECTION event. ent
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
REPORT demo demo_list_at_user_command list at user command NO STANDARD PAGE HEADING HEADING. START-OF-SELECTION. WRITE: 'Basic List', / 'SY-LSIND:', 'SY LSIND:' sy sy-lsind. lsind TOP-OF-PAGE. WRITE 'Top-of-Page'. ULINE. ULINE TOP-OF-PAGE DURING LINE-SELECTION. CASE sy-pfkey. WHEN 'TEST' TEST . WRITE 'Self-defined GUI for Function Codes'. ULINE. ENDCASE. AT LINE-SELECTION. SET PF-STATUS 'TEST' EXCLUDING 'PICK'. PERFORM out. sy lsind = sy sy-lsind sy-lsind lsind - 1. 1
INTERACTIVE LISTS
When clicked on the Basic list AT LINE-SELECTION event i t is triggred i d and d secondary d li list ti is di displayed l d which hi h h has pff status.
INTERACTIVE LISTS
At USER-COMMAND when any of the button in application pp tool bar are p pressed it will take to relavent lists.
INTERACTIVE LISTS
I Important t t System S t Fields Fi ld for f Secondary S d Lists Li t SY LSIND SY-LSIND SY-LISTI SY LISTI SY-LILLI triggered gg SY-LISEL SY-UCOMM SY-PFKEY Index of the list created during the current event (basic list = 0) Index of the list level from which the event was triggered Absolute number of the line from which the event was Contents of the line from which the event was triggered Function code that triggered the event Status of the displayed list
INTERACTIVE LISTS
M Messages in i Lists: Li t They are grouped by language, a two-character ID, and a three-digit number From your program, number. program you can send a message with different qualifications: A E I S W Abend; the current transaction is stopped Error; the system waits for new input data Information; after pressing ENTER, the system continues processing Confirmation; the message appears on the next screen Warning; you can change the input data or continue by pressing ENTER
You must specify the MESSAGE-ID behind the REPORT statement of your program program.
INTERACTIVE LISTS
REPORT demo_list_interactive_4 d li t i t ti 4 NO STANDARD PAGE HEADING HEADING. START-OF-SELECTION. WRITE 'Basic List'. MESSAGE s888(sabapdocu) WITH text-001. AT LINE-SELECTION. IF sy-lsind = 1. MESSAGE i888(sabapdocu) ( p ) WITH text-002. ENDIF. IF sy-lsind = 2. MESSAGE e888(sabapdocu) WITH text-003 sy-lsind text-004. ENDIF. WRITE: 'Secondary List, SY-LSIND:', sy-lsind.
INTERACTIVE LISTS
INTERACTIVE LISTS
Defining e g Titles t es for o Interactive te act e Lists sts By default, the system uses the program title as the title of the output screen of a report. To choose another title for the output screens, use this statement: Syntax SET TITLEBAR <tit> [WITH <g1> ... <g9>].
INTERACTIVE LISTS
Displaying sp ay g Lists sts in Dialog a og Windows do s To display a secondary list in a dialog window use the WINDOW statement: Syntax WINDOW STARTING AT <left> l ft <upper> [ENDING AT <right> i ht <lower>]. l ] The WINDOW statement takes effect only within the processing block of an interactive event event, that is is, only for secondary lists lists. Note: Dialog windows have no menu bar and no standard toolbar
INTERACTIVE LISTS
REPORT demo_list_window NO STANDARD PAGE HEADING. START-OF-SELECTION. SET PF-STATUS 'BASIC'. WRITE 'Select line for a demonstration of windows'. AT USER-COMMAND. CASE sy-ucomm. WHEN 'SELE'. IF sy-lsind l i d = 1. 1 SET PF-STATUS 'DIALOG'. SET TITLEBAR 'WI1'. WINDOW STARTING AT 5 3 ENDING AT 40 10. WRITE 'Select line for a second window'. indo ' ELSEIF sy-lsind = 2. SET PF-STATUS 'DIALOG' EXCLUDING 'SELE'. SET TITLEBAR 'WI2'. WINDOW STARTING AT 45 10 ENDING AT 60 12 12. WRITE 'Last window'. ENDIF. ENDCASE.
INTERACTIVE LISTS
INTERACTIVE LISTS
Triggering Events from within the Program Instead of letting the user trigger an interactive event by an action on the output t t screen, you can yourself lf t trigger i events t f from within ithi th the program. Syntax SET USER-COMMAND <fc>. This statement takes effect after the current list is completed. Before the system displays the list, it triggers the event that corresponds to the function code stored in <fc>,independent of the applied user interface. Note: Function code PICK triggers an event only if the cursor is located on a list line .
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
Passing ass g data from o list st to report epo t To effectively use interactive lists for interactive reporting, it is not sufficient for the program to react to events triggered by user actions on the output list. You must also be able to interpret the lines selected by the user and their contents. F ll i options Following ti are available: il bl Passing data automatically using system fields Using statements in the program to fetch data
INTERACTIVE LISTS
Using Us gS SY-LISEL S The SY-LISEL system field is a field of type C with a length of 255 characters. It contains the selected line as one single character string, thus making ki it difficult diffi lt for f you to t retrieve ti the th values l of f individual i di id l fields. fi ld To process certain parts of SY-LISEL, you must specify the corresponding offsets
INTERACTIVE LISTS
REPORT demo_list_sy_lisel demo list sy lisel NO STANDARD PAGE HEADING HEADING. DATA num TYPE i. SKIP. WRITE 'List of Quadratic Numbers between One and Hundred'. SKIP. WRITE 'List of Cubic Numbers between One and Hundred'. TOP-OF-PAGE. WRITE 'Choose a line!'. ULINE. TOP-OF-PAGE DURING LINE-SELECTION. WRITE sy-lisel. sy-lisel ULINE.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
AT LINE-SELECTION. LINE-SELECTION IF sy-lisel(4) = 'List'. CASE sy-lilli. sy lilli. WHEN 4. DO 100 TIMES. num = sy-index ** 2. WRITE: / sy-index, num. ENDDO. WHEN 6. DO 100 TIMES. num = sy-index ** 3. WRITE: / sy-index, num. ENDDO. ENDDO ENDCASE. ENDIF.
INTERACTIVE LISTS
INTERACTIVE LISTS
INTERACTIVE LISTS
Passing Data by Program Statements HIDE The moment you create a list level you can define which information to pass to the subsequent secondary lists. READ LINE Use the statements READ LINE and READ CURRENT LINE to explicitly read data from the lines of existing list levels. GET CURSOR Use the statements GET CURSOR FIELD and GET CURSOR LINE to pass the output field or output line on which the cursor was positioned during the interactive event to the processing block.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
The e HIDE Technique ec que You use the HIDE technique while creating a list level to store linespecific information for later use. Syntax HIDE <f>. This statement stores the contents of variable <f> in relation to the current output line (system field SY-LINNO) internally in the so-called HIDE area. area The variable <f> need not necessarily appear on the current line. As soon as the user selects a line for which you stored HIDE fields fields, the system fills the variables in the program with the values stored.
INTERACTIVE LISTS
REPORT Z_HIDE1 . TABLES : SPFLI, SFLIGHT. SELECT-OPTIONS SELECT OPTIONS : CARR FOR SPFLI-CARRID. SPFLI CARRID. SELECT * FROM SPFLI WHERE CARRID IN CARR. WRITE :/ SPFLI-CARRID , SPFLI-CONNID. HIDE SPFLI-CARRID. ENDSELECT. AT LINE-SELECTION. CASE SY-LSIND. WHEN '1'. SELECT * FROM SFLIGHT WHERE CARRID = SPFLI-CARRID. WRITE :/ SFLIGHT-FLDATE, SFLIGHT-SEATSOCC. ENDSELECT. ENDSELECT ENDCASE.
INTERACTIVE LISTS
INTERACTIVE LISTS
Value is stored
INTERACTIVE LISTS
INTERACTIVE LISTS
Reading Lines from Lists To read a line from a list after an interactive list event occurred, , use the READ LINE statement: Syntax READ LINE <lin> [INDEX <idx>] [FIELD VALUE <f1> [INTO <g1>] ... <fn> [INTO <gn>]]. The statement without any options stores the contents of line <lin> from the list on which the event was triggered (index SY SY-LILLI) LILLI) in the SY-LISEL SY LISEL system field and fills all HIDE information stored for this line back into the corresponding fields .
INTERACTIVE LISTS
Reading ead g Lists sts at t the e Cu Cursor so Position os t o To retrieve information on the cursor position during an interactive event, use the GET CURSOR statement to refer to either the field or the line. Syntax GET CURSOR FIELD <f> f [VALUE <val>] l ].
INTERACTIVE LISTS
REPORT demo_list_get_cursor NO STANDARD PAGE HEADING LINE-SIZE 40. DATA: hotspot(10) TYPE c VALUE 'Click me!', f(10) TYPE c, off TYPE i, lin TYPE i, val(40) TYPE c, len TYPE i. FIELD-SYMBOLS <fs> TYPE ANY. ASSIGN hotspot TO <fs>. WRITE 'Demonstration of GET CURSOR statement'. SKIP TO LINE 4. POSITION 20. WRITE <fs> HOTSPOT COLOR 5 INVERSE ON.
INTERACTIVE LISTS
AT LINE-SELECTION. WINDOW STARTING AT 5 6 ENDING AT 45 20. GET CURSOR FIELD f OFFSET off LINE lin VALUE val LENGTH len. WRITE: 'Result of GET CURSOR FIELD: '. ULINE AT /(28). WRITE: / 'Field: ', f, / 'Offset:', off, / 'Line: ', lin, / 'Value: ', (10) val, / 'Length:', len. SKIP. GET CURSOR LINE lin OFFSET off VALUE val LENGTH len. WRITE: 'Result of GET CURSOR LINE: '. ULINE AT /(27). /( ) WRITE: / 'Offset:', off, / 'Value: ', val, / 'Length:', len.
INTERACTIVE LISTS
INTERACTIVE LISTS
C lli Reports Calling R t To call a report from with in other report,use the SUBMIT statement. To set the name of the called program statically in the programcoding. programcoding Syntax : SUBMIT <rep> [AND RETURN] [<options>]. The first statement starts the report<rep>,the p p second statement starts the report whose name is stored in field<rep>.
INTERACTIVE LISTS
In this I thi program we r calling lli a program zsapmztst1 t t1 next t slide lid shows h the th zsapmztst1. REPORT ZSAPMZTST . DATA : ITAB TYPE I OCCURS 10, NUM TYPE I. SUBMIT ZSAPMZTST1 AND RETURN. IMPORT ITAB FROM MEMORY ID 'HK'. LOOP AT ITAB INTO NUM. WRITE / NUM. ENDLOOP. WRITE 'REPORT 1'. ULINE.
INTERACTIVE LISTS
REPORT ZSAPMZTST1 . DATA : NUMBER TYPE I, ITAB TYPE I OCCURS 10. SET PF-STATUS PF STATUS 'MYBACK' MYBACK . DO 5 TIMES. NUMBER = SY-INDEX. APPEND NUMBER TO ITAB. WRITE : 'NUMBER'. ENDDO. TOP-OF-PAGE. WRITE 'REPORT 2'. ULINE. AT USER-COMMAND. CASE SY-UCOMM. WHEN 'MYBACK'. EXPORT ITAB TO MEMORY ID 'HK'. LEAVE LEAVE. ENDCASE.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
INTERACTIVE LISTS
Called Report
INTERACTIVE LISTS
Exercise 1 Create an interactive list using hide technique based on tables ekko and ekpo. Output the following field in the basic list. EKKO-EBELN. Based on the output of the basic list I.e., EKKO-EBELN, output the following fields in the secondary list by passing the field EKKO EKKO-MATNR MATNR by HIDE Technique. EKPO-BUKRS EKPO-WERKS EKPO-LGORT EKPO-MENGE
INTERACTIVE LISTS
Solution TABLES: EKKO, EKPO. DATA: BEGIN OF ITAB1 OCCURS 0, EBELN LIKE EKKO EKKO-EBELN, EBELN END OF ITAB1. DATA : BEGIN OF ITAB2 OCCURS 0, MATNR LIKE EKPO EKPO-MATNR, MATNR BUKRS LIKE EKPO-BUKRS, WERKS LIKE EKPO-WERKS, LGORT LIKE EKPO-LGORT, EKPO LGORT, MENGE LIKE EKPO-MENGE, END OF ITAB2. SELECT EBELN FROM EKKO INTO ITAB1-EBELN. WRITE :/ ITAB1-EBELN HOTSPOT. HIDE ITAB1-EBELN. ENDSELECT.
INTERACTIVE LISTS
TOP-OF-PAGE DURING LINE-SELECTION. WRITE:/ 'MATERIAL' ,12 'COMPANY',18 'PLANT',28 'STORAGE',38'QUANTITY'. AT LINE-SELECTION. LINE SELECTION * Interactive event, details list * Read data corresponding to the selection criteria and * display SELECT MATNR BUKRS WERKS LGORT MENGE FROM EKPO INTO CORRESPONDING FIELDS OF ITAB2 WHERE EBELN = ITAB1 ITAB1-EBELN. EBELN. WRITE: / ITAB2-MATNR, * Material Number 12 ITAB2-BUKRS, * Company code 18 ITAB2-WERKS, , * Plant 28 ITAB2-LGORT, * Storage Location 38 ITAB2-MENGE. *Quantity ENDSELECT.
INTERACTIVE LISTS
Exercise NO: 2 Task: Create a list of all flight connections for each airline carrier. carrier Output the following fields: SPFLI-CARRID SPFLI CARRID, SPFLI-CONNID SPFLI CONNID, SPFLI-CITYFROM SPFLI CITYFROM, SPFLI-CITYTO, SPFLI-DEPTIME, SPFLI-ARRTIME. Define a selection screen on which the user can enter selections for the airline carrier (SPFLI-CARRID) and the connection ID (SPFLI-CONNID). Read the data from table SPFLI in accordance with this selection. When the user selects a line line, the system should display a secondary showing the flights (table SFLIGHT) available for the flight connection concerned (see example list). Output the selected line as the header of the secondary list. Calculate and output the number of vacant seats for each h flight. fli ht Make M k sure that th t the th program can handle h dl invalid i lid line li selection.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
Example list AA 0017 Date 10.29.1995 NEW YORK Price 666.67 USD SAN FRANCISCO Seats max. 660 660 660 11.11.1995 666.67 USD 11.16.1995 666.67 USD occupied free 10 20 38 650 640 622 13:30:00 16:31:00
INTERACTIVE LISTS
Solution REPORT ZABCD00111 . TABLES: SPFLI, SFLIGHT. * Report defined selection criteria for airline and for * connection id SELECT-OPTIONS: SELCARR FOR SPFLI-CARRID, SELCONN FOR SPFLI-CONNID. *A Auxiliary ili fi field: ld number b of f free f seats t DATA: SFREE LIKE SFLIGHT-SEATSMAX. START-OF-SELECTION. START OF SELECTION * Read data corresponding to the selection criteria and * display SELECT * FROM SPFLI WHERE CARRID IN SELCARR AND CONNID IN SELCONN. WRITE: / SPFLI-CARRID, SPFLI-CONNID, , SPFLI-CITYFROM, SPFLI-CITYTO,
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
SPFLI-DEPTIME, SPFLI-DEPTIME SPFLI-ARRTIME. HIDE: SPFLI-CARRID, SPFLI-CONNID. ENDSELECT. END-OF-SELECTION. CLEAR SPFLI-CARRID. "initialization AT LINE-SELECTION. * Interactive event, details list CHECK NOT SPFLI-CARRID IS INITIAL. * Display detail list only if valid line-selection WRITE SY-LISEL. WRITE: /5 TEXT-001, 29 TEXT-002, 49 TEXT-003, / TEXT-004 TEXT 004 UNDER TEXT TEXT-003, 003 60 TEXT TEXT-005, 005 70 TEXT TEXT-006. 006 * D: TEXT-001: Date * D: TEXT-002: Price * D: TEXT-003: Seats * D: TEXT-004: Max * D: TEXT-005: occupied TEXT-006: free
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
ULINE. ULINE SELECT * FROM SFLIGHT WHERE CARRID EQ SPFLI-CARRID AND CONNID EQ SPFLI-CONNID. * Read data for details list using the hided key fields, * list output WRITE: /5 SFLIGHT-FLDATE, SFLIGHT-PRICE, SFLIGHT-CURRENCY. SFREE = SFLIGHT-SEATSMAX - SFLIGHT-SEATSOCC. WRITE: SFLIGHT-SEATSMAX, SFLIGHT-SEATSOCC, SFREE. ENDSELECT. CLEAR SPFLI SPFLI-CARRID. CARRID "initialization
INTERACTIVE LISTS
Summary Extract datasets : An extract is a sequential dataset you can create with a report.Use extracts if you want to process large amount of data as a whole several times Declaring Extract Records as Field Groups Filling an Extract with Data Reading an Extract Sorting an Extract Lists Lists are the output medium for data from ABAP/4 report programs. program g can produce p up p to 21 lists: one basic list and 20 Each p secondary lists.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
INTERACTIVE LISTS
Structure and the options of a list are The Standard List The Self-Defined List Lists with Several Pages Interactive List A list is an interactive list if the user interface allows actions that trigger events and if the corresponding interactive event keywords occur in the report. Events for Interactive Lists AT LINE-SELECTION AT PF<nn> AT USER-COMMAND
Extract datasets Data output in lists( Standard, Self-defined, Lists with several p pages g ) Interactive lists( At line-selection , At User-command) List creation with the ALV grid control
INTRODUCTION
The common features of report are column alignment, sorting, filtering, subtotals, totals etc. To implement these, a lot of coding and logic is to be put. To avoid that we can use a concept called ABAP List Viewer (ALV). Using ALV, we can have three types of reports: 1 Simple 1. Si l Report R t 2. Block Report 3. Hierarchical Sequential Report
There are some function modules which will enable to produce the above reports without much effort. All the definitions of internal tables, structures and constants are declared in a type-pool called SLIS.
SIMPLE REPORT
1.
Simple Report
The important function modules are: Reuse_alv_list_display Reuse_alv_fieldcatalog_merge R Reuse_alv_events_get l t t Reuse_alv_commentary_write Reuse_alv_grid_display
g. It_events
B. REUSE_ALV_FIELDCATALOG_MERGE: This function module is used to populate a fieldcatalog which is essential to display the data in ALV. If the output data is from a single dictionary table and all the columns are selected, then we need not exclusively create the field catalog. Its enough to mention the table name as a parameter(I structure name) in the REUSE_ALV_LIST_DISPLAY. parameter(I_structure_name) REUSE ALV LIST DISPLAY But in other cases we need to create it.
: report id : the internal output table : include or the report name where all the dynamic f forms are handled. h dl d
2. Changing ct_fieldcat
yp SLIS_T_FIELDCAT_ALV : an internal table with the type which is declared in the type pool SLIS.
b. T_OUTTAB_ITEM
BLOCK REPORT
This is used to display multiple lists continuously. continuously The important functions used in this report are:
A. REUSE_ALV_BLOCK_LIST_INIT B REUSE_ALV_BLOCK_LIST_APPEND B. REUSE ALV BLOCK LIST APPEND D. REUSE_ALV_BLOCK_HS_LIST_APPEND C. REUSE_ALV_BLOCK_LIST_DISPLAY
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
BLOCK REPORT CONTD.. A. REUSE_ALV_BLOCK_LIST_INIT Parameters: a. I_CALLBACK_PROGRAM I CALLBACK PROGRAM b. I_CALLBACK_PF_STATUS_SET _ _ _ c. I_CALLBACK_USER_COMMAND This function module is used to set the default GUI status etc. etc
Here the functions REUSE REUSE_ALV_FIELDCATALOG_MERGE, ALV FIELDCATALOG MERGE REUSE_ALV_EVENTS_GET, REUSE_ALV_COMMENTARY_WRITE can be used.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
: : : : : : : :
position of the column i t internal l fieldname fi ld internal table name fieldname (dictionary) (dictionary) y) table ( column with key-color icon hotspot
i. Symbol(1) i S b l(1) j. Checkbox(1) k. just(1) l. do_sum(1) ( ) m. no_out(1) n. outputlen o. seltext-l p seltext_m p. seltext m q. seltext_s r. reptext_ddic s. ddictxt(1) t. datatype
: : : : : : : : : : : :
symbol b l checkbox (R)ight (L)eft (C)ent sum up p (O)blig. (X)no out output length long key word middle key word short key word heading(ddic) (S)hort (M)iddle (L)ong datatype
2. SLIS_T_EVENT : Internal table for storing all the possible events of the ALV. This can be populated by the function module Reuse_alv_events_get Reuse alv events get The columns are : name form : : name of the event name of the routine
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
7. DIALOG PROGRAMMING
A Transaction is a program that conducts a dialog with the User In a typical dialog, the system displays the screen on which the user can enter or request information. As per the user input or request, transaction is used to Branch to the next Screen Display an output Change/Update the database
ABAP/4 Dictionary
Screen Painter
ABAP/4 Editor
Menu Painter
Transactions
Structure of the Dialog Programming SCREEN Painter MENU Painter I Input t Checks Ch k Error Handling Flow Logic Screen Modification Table Control and Step Loop Branching to List Processing
Program Name
Dictionary Structure Global data PBO modules PAI modules Subroutines Screens GUI Status Transaction code
Transactions- Structure
Define screens
Attributes Att ib t Fullscreen ABAP/4 Dict. fields Field list Fl Flow logic l i
Screen Painter
Online program
ABAP/4
Define call
Transaction code
Summary
Creating module pool and maintaining attributes Creating screen 100: - define attributes - define screen templates and field texts - maintain field list - define flow logic see screen 100 Defining ABAP/4 fields (same name as screen fields!) Defining processing (before screen is displa displayed) ed) Defining processing after the user has pressed ENTER Defining the code you use to call the online program
Delivering Solution Excellence and Innovation
Screen 200 Gl b l data Global d t PBO Module PAI Module Transaction code
Satyam SAP PMG SAP PMG
Screen Painter
Each Screen contains fields used to display or request Information Information. The fields can be text Sting, Input/Output fields, Radio Buttons, Check boxes or Pushbuttons . E h screen consists Each i t of f Screen Attributes Screen Elements Screen Fields Screen Flow Logic
Screen Attributes
Program P (type (t M) Screen Number : A four-digit number, unique within the ABAP program, that identifies the screen within the program. Screen Type : A normal screen occupies a whole GUI window. Modal dialog boxes only cover a part of a GUI window. A subscreen is a screen that y you can display p y in a subscreen area on a different screen in the same ABAP program. Next Screen : Specifies the next screen. Hold H ld Data D t : If th the user calls ll th the screen more than th once during d i a terminal t i l session, he or she can retain changed data as default values.
Screen Elements
Text Fields: Display elements, which cannot be changed either by the user or by the ABAP program. Input/Output I t/O t t Fi Fields: ld Used U d to t display di l data d t from f the th ABAP program or for f entering data on the screen. Linked to screen fields Radio Buttons: Special input/output fields that are combined into groups. Within a radio button group, only a single button can be selected at any one time. Check boxes: Special input/output fields which the user can select (value X) or deselect (value SPACE). Pushbuttons: Elements on the screen that trigger the PAI event of the screen flow logic when chosen by the user user. There is a function code attached to each pushbutton, which is passed to the ABAP program when it is chosen.
Screen Elements Subscreen: Area on the screen in which you can place another screen. Table Controls: Tabular input/output fields. Tab T b Strip St i Controls: C t l Areas A on th the screen i in which hi h you can switch it h between b t various pages. Status Icons: Display elements, indicating the status of the application program. Ok_Code Field: Every screen has a twenty-character OK_CODE field (also known as the function code field), which is not displayed on the screen. User actions that trigger the PAI event also place the corresponding function code into this field, from where it is passed to the ABAP program. p g You can also use the command field in the standard toolbar to enter the function code. You must assign a name to the OK_CODE field to be able to use it for a particular screen.
Screen Fields
Screen fields are fields in the working memory of a screen. Their contents are passed to identically-named fields in the ABAP program in the PAI event, and filled from the same identically-named fields in the program in the PBO event. The screen fields are linked with the input/output fields.
Screen Fields(Attributes)
C t Cont..
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
Keyword
MODULE FIELD ON VALUES CHAIN ENDCHAIN CALL LOOP ENDLOOP
Function
Calls a dialog module in an ABAP program Specifies the point at which the contents of a screen field should be transported Used in conjunction with FIELD Used in conjunction conj nction with ith FIELD Starts a processing chain Ends a processing chain Calls a subscreen Starts processing a screen table Stops processing a screen table
Screen Painter
Screen attributes
Screen number Short description Screen type Follow up screen Follow-up ...
Screen layout
Text Fields Input/Output templates
Field attributes
Field Name Data Type Length I Input/Output t/O t t ....
Flow logic
PROCESS BEFORE OUTPUT. MODULE CLEAR. PROCESS AFTER INPUT INPUT. MODULE READ.
Screen Painter
S Screen P Painter i t To T ABAP/4 Edit Editor
Screen attributes
Screen number Short description Screen type Follow up screen Follow-up ...
Screen layout
Text Fields Input/Output templates
Field attributes
Field Name Data Type Length I Input/Output t/O t t ....
SCREEN PAINTER
Flow logic
PROCESS BEFORE OUTPUT. MODULE CLEAR. PROCESS AFTER INPUT INPUT. MODULE READ.
PBO module
MODULE CLEAR OUTPUT OUTPUT. CLEAR NUMBER. ENDMODULE. . . .
PAI module
MODULE READ INPUT INPUT. SELECT ... . . . ENDMODULE. . . .
Screen Painter
To call a module, use the flow logic statement MODULE <mod>. The system starts the module <mod>, which must have been defined for the same event block in which the call occurs. occurs If you only use simple modules in the screen flow logic, the data transport between the ABAP program and the screen is as follows: In the PAI event, all of the data from the screen is transported to the ABAP program (as long as there are program fields with the same names as the screen fields) after the automatic input checks and before the first PAI module is called. This includes the contents of the system fields (for example, SY-UCOMM, which contains the current function code). At the end of the last PBO module, , and before the screen is displayed, p y , all of the data is transported from the ABAP program to any identicallynamed fields in the screen.
Screen Painter
Data Transfer within the Screen and Module Pool work Area .
Screen Painter
ABAP/4
PBO PAI
AREA DATA:
AREATEXT OK-CODE(4).
SAREA-AREATEXT
Financial accounting
OK-CODE OK CODE
Sequence of operation
Screen Painter
PROCESS BEFORE OUTPUT. MODULE A. A MODULE B. PROCESS AFTER INPUT. MODULE C. MODULE D.
Data transport from the ABAP/4 work area to the screen work area
C D
Overview
SET SCREEN
CALL SCREEN
Screen attributes
Screen number 100 . . . Follow-up screen 200
Screen Painter
Screen attributes
Screen number 201 . . . Follow-up screen 301
Screen Painter
Screen Painter
PROCESS AFTER INPUT. MODULE OK_CODE.
. . .
Screen Painter
PROCESS BEFORE OUTPUT.
ABAP/4
MODULE OK_CODE INPUT.
. . . SET SCREEN 201. LEAVE SCREEN.
Screen attributes
Screen number 100 . . . Follow-up screen 200
Screen Painter
Screen attributes
Screen number 201 . . . Modal pop-up window . . . Follow-up screen 301
Screen Painter
Screen Painter
PROCESS AFTER INPUT. MODULE OK_CODE.
ABAP/4
MODULE OK_CODE INPUT. . . . CALL SCREEN 201 STARTING AT 30 10 ENDING AT 60 20.
Satyam SAP PMG SAP PMG
ABAP/4
MODULE OK_CODE INPUT. . . . SET SCREEN 0. LEAVE SCREEN. . . .
Delivering Solution Excellence and Innovation
Leaving Screen
S t Syntax: LEAVE TO SCREEN <screen number>. (or) SET SCREEN <screen number>. LEAVE SCREEN. LEAVE TO SCREEN 0. From called screen From main screen
Menu Painter
SET TITLEBAR T01 WITH v1 1 v2 2 v3 3 v4 4
Example: Module status_100. status 100. SET TITLEBAR T01 with EKKO-EBELN. Endmodule. SET PF-STATUS xxxxxxxx. SET PF-STATUS xxxxxxxx EXCLUDING <itab>.
Example: Module Status_100 Status 100 on input. input SET PF-STATUS PF0100. End Module.
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
Input Checks
Field Fi ld f format t Ch Check k :This Thi format f t limits li it the th kind ki d of f input i t that th t is i valid. lid For ex. , a DATS field (Date field) is an 8 char string in YYYYMMDD format. All char must be numbers . For the given value entered, the system checks that the day value is valid. valid Required Check : In the screen painter you can set a fields required Input Attribute . The system requires the user to enter the input b f before entering t i PAI Processing. P i Foreign Key Check:The field can have a foreign key relationship with another table or its domain can specify p y a fixed value list for the field.The system checks the user input value can be found in the related check table or in the fixed-value lists.
Screen Painter
Field list
Field name DATE . . . AMOUNT Format DATE
DEC
Date Amount
31.11.1993 11.13.1996
E: Invalid date
Required Field
Screen Painter
Field list
Field name OBLIGATORY TEST FIELD X
? ?
Screen Painter
PROCESS AFTER INPUT. FIELD SCOUR-COURSE VALUES ('01', BETWEEN '20' AND '30', 'ABC').
E M E...Message
Satyam SAP PMG SAP PMG
Example
Screen Painter
MODULE CHECK_SCOUR INPUT. SELECT SINGLE * FROM SCOUR WHERE AREA = SCOUR-AREA AND COURSE = SCOUR-COURSE. IF SY SY-SUBRC SUBRC NE 0 0. MESSAGE E123 WITH 'SCOUR'. ENDIF. ENDMODULE ENDMODULE.
ABAP/4
PROCESS AFTER INPUT. CHAIN. FIELD: <screen field1>, <screen field2>, . . . <screen field n>. > MODULE <module>. ENDCHAIN.
Screen Painter
ABAP/4
1 1 1 . . .
1 1 1
E... Message
1
Example
PROCESS AFTER INPUT. CHAIN CHAIN. FIELD: SCOUR-AREA, SCOUR-COURSE. MODULE CHECK_FIELD. ENDCHAIN.
Screen Painter
MODULE CHECK_SCOUR INPUT. SELECT SINGLE * FROM SCOUR WHERE AREA = SCOUR-AREA AND COURSE = SCOUR-COURSE. IF SY SY-SUBRC SUBRC NE 0 0. MESSAGE E123 WITH 'SCOUR,COURSE. ENDIF. ENDMODULE ENDMODULE.
ABAP/4
Conditional Check
ON INPUT INPUT: If the field value is different from the initial value. ON REQUEST: This module will be executed if a value has been entered in the specific field since the screen was displayed. AT EXIT-COMMAND: EXIT COMMAND At EXIT-COMMAND module will be executed only if the invokes a function code with E function type. yp user
Screen Painter
PROCESS AFTER INPUT. C CHAIN. FIELD: <screen field 1>, <screen field 2>, . . . <screen field n>. MODULE <module> ON CHAIN-INPUT. ENDCHAIN. . . .
Satyam SAP PMG SAP PMG
Screen Painter
Screen Painter
PROCESS AFTER INPUT. CHAIN CHAIN. FIELD: <screen field 1>, <screen field 2>, . . . <screen field n>. MODULE <module> ON CHAIN-REQUEST. ENDCHAIN. . . .
Satyam SAP PMG SAP PMG
Screen Painter
At Exit Command I
Field ?
Cancel
Screen Painter
ABAP/4
At Exit Command II
Menu Painter
ABBR
Field
?
Cancel
Screen Painter
ABBR
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
Error Handling
- Displays Error Message on the current screen - Displays Warning Message on the current screen - The current Transaction will be Terminated - Message is displayed on the Following Screen
PROCESS AFTER INPUT. CHAIN CHAIN. FIELD: <screen field 1>, <screen field 2>. MODULE CHECK. ENDCHAIN. ENDCHAIN
Screen Painter
ABAP/4 PROGRAM B220MAIN MESSAGE-ID <id>. . . . MODULE CHECK INPUT. . . . IF SY-SUBRC ...
Change
Change <-> Display
A B
A B
Output template
Input/output template
Field and its attrib. active Required entry field Input field Output field Highlighted Invisible Shorter output length
Screen Painter
ABAP/4
ENDLOOP.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
SCREEN TABLES A screen table is a repeated series of table rows in a screen screen. Each entry contains one or more fields, and all rows have the same field structure. Table controls and step loops are types of screen tables you can add to a screen in the Screen Painter. These are the two mechanisms offered by ABAP/4 for displaying and using table data in a screen.
Table Controls
With table controls, the user can: Scroll through the table vertically and horizontally Re-size the width of a column Select table rows or columns Re-order the sequence of columns
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
Step Loops
The feature of step loops is that their table rows can span more than one line on the screen. By contrast, the rows in a table control are always single lines, but can be very long.
7. DIALOG PROGRAMMING
S Screen (b (basics) i ) Screen logic, g , Screen Painter , Menu Painter Input checks, changing of input values Error handling St loops Step l Table Control Field help and value help
At PBO. Loop at <itab> with control <name> cursor <name>-top_line. Module <mod_name>. Endloop. At PAI. Loop at <itab>. Endloop. Declaration for table control. controls <name> type tableview using screen <no>.
At PBO. Loop at <itab> cursor <var>. Module <mod_name>. Endloop. At PAI. L Loop at t <itab>. it b Endloop.
Leaving to transaction
To branch to another transaction and end the current one, use the LEAVE TO TRANSACTION statement: Syntax LEAVE TO TRANSACTION '<TRAN>'. Once the new transaction starts, the user can not return to the previous transaction by pressing the Exit icon. Any data the user did not save in the previous transaction is lost.
Calling a transaction
If you want the user to be able to return to the initial transaction after processing an interim transaction, use the ABAP/4 statement: Syntax y CALL TRANSACTION '<TRAN>'.
When you call a transaction, transaction you can tell the system to suppress the transaction's initial screen and proceed directly to the next screen in the sequence: syntax: CALL TRANSACTION '<TRAN>' AND SKIP FIRST SCREEN. The initial screen is processed but not displayed. while suppressing the first screen, for all required fields in the initial screen, your program must pass in data values when calling the transaction.
You can pass data to a called program using SPA/GPA parameters. SPA/GPA parameters are field values saved globally in memory. Each parameter is identified by a three-character code. There are two ways to use SPA/GPA parameters: Syntax SET PARAMETER ID 'RID' FIELD <FIELD NAME1>. GET PARAMETER ID 'RID' FIELD <FIELD NAME1>. by setting field attributes in the Screen Painter by using the SET PARAMETER or GET PARAMETER statements
Place the LEAVE TO LIST-PROCESSING logic at the end of PAI. On return from the list display, the system repeats processing for the current screen starting with the beginning of PBO screen, PBO. To display the list output instead of the current screen:
Code the LEAVE TO LIST-PROCESSING logic in the PBO, and follow it with LEAVE SCREEN. This tells the system to display the list without displaying p y g the current screen. PAI processing p g for the current screen is not executed.
Your program runs in list-mode until one of the following occurs The system reaches a LEAVE LIST LIST-PROCESSING PROCESSING statement in your code. The LEAVE LIST-PROCESSING statement returns control to the dialog screen. On return, the system re-starts processing at the beginning of PBO. The user requests BACK or CANCEL from the basic-list level of the report. If the user, exits the list using the BACK or CANCEL icons, you do not need to program an explicit LEAVE LIST-PROCESSING. When the user presses one of these, these the system returns to the screen containing the LEAVE TO LIST-PROCESSING and re-starts PBO processing screen.
When returning to dialog-mode, your program can also re-route the user to a screen different from the one that started the list. To do this, use the keywords AND RETURN TO SCREEN when you first branch to list-mode: syntax t LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.
Programming Field- and Value-Help You can program help texts and possible values lists using the PROCESS ON HELP-REQUEST (POH) and PROCESS ON VALUE-REQUEST (POV) events. Syntax PROCESS ON HELP-REQUEST. FIELD <field> MODULE <module>. PROCESS ON VALUE-REQUEST. FIELD <field> MODULE <module> .
Customizing F1 Help
The ABAP/4 development environment provides a number of ways of designing a context-sensitive F1 help: Data element documentation Using the PROCESS ON HELP-REQUEST event.
Database
DB
INSERT
I Insert t a new record d into i t a database d t b Syntax: INSERT <table>[<workarea>] Eg: MOVE BC BC TO SPLAN SPLAN-AREA. AREA. MOVE BC200 TO SPLAN-COURSE MOVE . INSERT SPLAN. MOVE BC TO REC-AREA. MOVE BC200 BC200 TO REC REC-COURSE COURSE MOVE . INSERT INTO SPLAN VALUES REC.
UPDATE
UPDATE C U Changes a ges a record eco d in t the e database syntax: UPDATE <table>. UPDATE <TABLE> SET <F1> = <V1><FN> = < VN> WHERE <f1> = <x1> . Eg: SELECT SINGLE * FROM SPLAN WHERE AREA = BC AND COURSE = BC200 AND WEEK = 23. SPLAN-TID1 = 007. UPDATE SPLAN. UPDATE SPLAN SET TID1 = 007 TID2 = 003 WHERE AREA = BC BC AND COURSE = BC200 BC200 AND WEEK = 23.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
DELETE
Delete record from the database database. Syntax: DELETE <table> . DELETE FROM <table> table WHERE <F1> F1 = <V1>.. V1 .. Eg: MOVE BC TO SPLAN-AREA. MOVE BC200 TO SPLAN-COURSE MOVE . DELETE SPLAN. DELETE FROM SPLAN WHERE AREA = BC AND COURSE = BC200 AND WEEK = 23.
ARRAY OPERATIONS
ARRAY operations improve the performance of the database updates Syntax: INSERT <table< FROM <itab>. UPDATE <table< FROM <itab>. <itab> DELETE <table< FROM <itab>. g Eg: Data: begin of itab occurs 10. Include structure splan. Data: end of itab. itab Move BC to itab-area. Append itab. .. INSERT SPLAN FROM ITAB. UPDATE SPLAN FROM ITAB. ITAB DELETE SPLAN FROM ITAB.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
. . . MODULE UPDATE INPUT. . . . UPDATE <table1>. IF SY-SUBRC EQ 0. COMMIT WORK. ELSE. ROLLBACK WORK. MESSAGE E ... . ENDIF. UPDATE <table2>. . . . ENDMODULE. . . .
ABAP/4
Dialog1 Dialog2 Dialog3
UPDATE1
UPDATE2
DB-COMMIT
DB-COMMIT
(Implicit) (Explicit)
SAP-COMMIT
To program database T d t b updates d t effectively, ff ti l programmers are mainly i l concerned with: maintaining database correctness. optimizing response times for users.
LUW
If the transaction runs successfully, all changes should be carried out. If the transaction encounters an error, no changes should be carried out, not t even partially. ti ll In the database world, an "all-or-nothing" transaction is called an (Logical Unit of Work).There Work) There are two types of LUW LUWs s. Database LUW SAP LUW LUW
Update Bundling
With Update Bundling you can execute updates at the end of the update transaction, rather than at every screen change. You can avoid your updates being committed at each screen change. You can lock the objects to be updated across multiple screens.
Bundling Techniques
With update bundling, you package your updates in special routines that run only when your program issues a ABAP/4 commit/rollback. To do this you use: this, PERFORM ON COMMIT CALL FUNCTION IN UPDATE TASK CALL FUNCTION IN BACKGROUND TASK These statements specify that a given FORM routine or function module be executed not immediately, but rather at the next ABAP/4 commit/rollback.
The PERFORM ON COMMIT statement calls a form routine in the dialog task, but delays its execution until the system encounters the next COMMIT WORK statement. t t t Updating in the update task: The CALL FUNCTION IN UPDATE TASK statement logs a function module for execution in the update task. The subsequent COMMIT WORK statement triggers actual execution.
The CALL FUNCTION IN BACKGROUND TASK statement logs a function module to run in a background task. Normally, this statement is used to execute functions on remote hosts (by specifying an additional DESTINATION parameter). Background-task B k dt kf functions ti are processed d as low-priority l i it requests, t but b t all ll requests for the same destination run in a common update transaction.
EXAMPLE
In this Exercise we see how to write a simple Transaction First create a program with naming convention SAPMZ<initials>. Eg. SAPMZ_EMPDET
EXAMPLE
N Now create t a screen using i Transaction T ti SE80
EXAMPLE
W can also We l create t a screen using i Transaction T ti SE51
EXAMPLE
Enter a meaningful description for the screen and select the screen type
EXAMPLE
Select the program name and click the change icon icon.
EXAMPLE
Declare the Global variables in this include section
EXAMPLE
Cont. Of the previous screen Click on the SAVE icon to save the code. Click the BACK icon to come out. Click on the LAYOUT BUTTON on the application toolbar to design the screen.
EXAMPLE
C c o Click on t the e DICT/PROGRAM C / OG fields e ds button butto o on the t e app application cat o toolbar too ba to include the fields on the screen from the dictionary tables or internal tables or other fields declared in the program
EXAMPLE
Enter the Internal or Table or field name on the Table/Field name and click on the Get from program
EXAMPLE
Using the corresponding icon (Text (Text, Entry Entry, Check and so on) on the object bar and drag and place the object on he screen.
EXAMPLE
Double Click on the table Control object to view the attributes or properties
EXAMPLE
Now write the code for the PBO PBO, PAI, PAI POV and POH for this screen flow logic
EXAMPLE
In t the e PBO O write te t the e relevant e e a t code for o PF-STATUS S US a and d TITLE BAR
EXAMPLE
This is a GUI status containing buttons and menus for the screen. All ABAP programs will have a default GUI status.
EXAMPLE
Th title The titl Bar B of f the th window i d that th t you will ill use to t display. di l
EXAMPLE
In the I th PAI of f the th flow fl logic l i we can use the th conditional diti l statement t t t AT EXIT-COMMAND as below.
EXAMPLE
Code for o the t e Field e d check c ec in t the e PAI module. odu e
EXAMPLE
In t this s module odu e we e can ca even e e write te t the e code to Retrieve et e e t the e Data, ata, Branching to Different Screen and also use function codes .
EXAMPLE
Depending on the user requirements in the previous screen 100 100, you can dynamically change the Attributes of the object using SCREEN Attributes in the screen 200.
EXAMPLE
In the I th Process P on value l request t (POV) of f the th flow fl logic l i we can use the th search help for a particular field
EXAMPLE
You Can Use the F4 to see the search help
EXAMPLE
In t the e Process ocess o on value a ue Help ep( (POH) O )o of t the e flow o logic og c we e ca can use t the e additional documentation descriptive text for the data element in the ABAP/4 Dict. In the screen painter you place the cursor in the field string of a screen on the field to be documented and select the menu goto > documentation > data el. extra
EXAMPLE
Now you will N ill get t a popup with ith th the data d t element l t and d the th number b of f the th current screen as an identifier for the additional text. In addition to the help contents in the ABAP/4 Dict you can enter your own Description
EXAMPLE
Here you enter your own description and SAVE
EXAMPLE
N Now while hil R Running i t transaction ti place l th the cursor on the th field fi ld and d press F1
EXAMPLE
Layout slide for screen 200 200.
EXAMPLE
Now o Create C eate a t transaction a sact o code for o you your d dialog a og p program og a us using g Txn S SE93 93
EXAMPLE
EXAMPLE
In Screen I S 100 we give i the th required i d input(Employee i t(E l No) N ) and d retrieve ti the th Data from the Data Dictionary and display the details on to the screen 200.
EXAMPLE
The details of the employee in screen 200.
Example : Table Control In our example when the user clicks the LIST Button in the initial screen screen, the complete list of employees will be displayed in the second screen.
Transactions
Su Summary ay The slides explained the structure of transaction, screen and menu painter and all the main features associated with dialog programming. programming
8. DATABASE UPDATES
Database updates with open SQL LUW processing Update Bundling Techniques Programming Bundling Updates Unbundled Updates Local Updates
Database
DB
INSERT
I Insert t a new record d into i t a database d t b Syntax: INSERT <table>[<workarea>] Eg: MOVE BC BC TO SPLAN SPLAN-AREA. AREA. MOVE BC200 TO SPLAN-COURSE MOVE . INSERT SPLAN. MOVE BC TO REC-AREA. MOVE BC200 BC200 TO REC REC-COURSE COURSE MOVE . INSERT INTO SPLAN VALUES REC.
UPDATE
UPDATE C U Changes a ges a record eco d in t the e database syntax: UPDATE <table>. UPDATE <TABLE> SET <F1> = <V1><FN> = < VN> WHERE <f1> = <x1> . Eg: SELECT SINGLE * FROM SPLAN WHERE AREA = BC AND COURSE = BC200 AND WEEK = 23. SPLAN-TID1 = 007. UPDATE SPLAN. UPDATE SPLAN SET TID1 = 007 TID2 = 003 WHERE AREA = BC BC AND COURSE = BC200 BC200 AND WEEK = 23.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
DELETE
Delete record from the database database. Syntax: DELETE <table> . DELETE FROM <table> table WHERE <F1> F1 = <V1>.. V1 .. Eg: MOVE BC TO SPLAN-AREA. MOVE BC200 TO SPLAN-COURSE MOVE . DELETE SPLAN. DELETE FROM SPLAN WHERE AREA = BC AND COURSE = BC200 AND WEEK = 23.
ARRAY OPERATIONS
ARRAY operations improve the performance of the database updates Syntax: INSERT <table< FROM <itab>. UPDATE <table< FROM <itab>. <itab> DELETE <table< FROM <itab>. g Eg: Data: begin of itab occurs 10. Include structure splan. Data: end of itab. itab Move BC to itab-area. Append itab. .. INSERT SPLAN FROM ITAB. UPDATE SPLAN FROM ITAB. ITAB DELETE SPLAN FROM ITAB.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
. . . MODULE UPDATE INPUT. . . . UPDATE <table1>. IF SY-SUBRC EQ 0. COMMIT WORK. ELSE. ROLLBACK WORK. MESSAGE E ... . ENDIF. UPDATE <table2>. . . . ENDMODULE. . . .
ABAP/4
Dialog1 Dialog2 Dialog3
UPDATE1
UPDATE2
DB-COMMIT
DB-COMMIT
(Implicit) (Explicit)
SAP-COMMIT
8. DATABASE UPDATES
Database updates with open SQL LUW processing Update Bundling Techniques Programming Bundling Updates Unbundled Updates Local Updates
LUW
If the transaction runs successfully, all changes should be carried out. If the transaction encounters an error, no changes should be carried out, not t even partially. ti ll In the database world, an "all-or-nothing" transaction is called an (Logical Unit of Work).There Work) There are two types of LUW LUWs s. Database LUW SAP LUW LUW
( (
For a quick introduction before programming updates, see: Transaction in the SAP system. Introduction to Update Bundling. Introduction to SAP Locking
( ( (
In the database world, an "all-or-nothing" transaction is called an LUW (Logical Unit of Work).There are three types of LUWs. ( ( ( Database LUW SAP LUW ABAP/4 Transaction
Transactions in this form consist entirely of processing blocks (dialog modules, event blocks, function module calls, and subroutines). You should be careful to ensure that external subroutines or function modules d not do t lead l d to t COMMIT WORK or ROLLBACK WORK statements t t t accidentally being executed.
8. DATABASE UPDATES
Database updates with open SQL LUW processing Update Bundling Techniques Programming Bundling Updates Unbundled Updates Local Updates
These statements specify that a given FORM routine or function module be executed not immediately, but rather at the next ABAP/4 commit /rollback. An ABAP/4 commit is an ABAP/4 statement that triggers a database commit, , but also p perform other functions.The ABAP/4 statements for performing these commits and roll backs are: ( ( COMMIT WORK ROLL BACK
Delivering Solution Excellence and Innovation
Database Update Techniques The effect of using PERFORM ON COMMIT, Instead of simple perform, is that the system delays execution of the form routine until it encounters the COMMIT WORK statement. You should position the commit WORK at the end of the statement or wherever user can select the save condition.
ASSIGNING RUN PRIORITIES TO FORM ROUTINES: You can assign a run priority to each form routine by adding the level parameter to the PREFORM ON COMMIT statement. For Ex. PERFORM update_table1 ON COMMIT LEVEL 2. . PERFORM update_table2 ON COMMIT LEVEL 3. . PERFORM update_table3 ON COMMIT LEVEL 1.
Database Update Techniques When this reaches COMMIT WORK statement, the FORM routines will run in this order.
First : Update_table3. Second : Update_table1. Update table1 Third : Update_table2.
The CALL FUNCTION IN UPDATE TASK statement logs a function module for execution in the update task. The subsequent COMMIT WORK statement triggers actual execution. You can perform f updates in the dialog task as well as in the update task. Dialog task updates are synchronous updates. Update task updates are asynchronous. (An exception is You can trigger an update function with COMMIT WORK AND WAIT: this is synchronous.)
Set S t this thi option ti f low for l priority i it ("V2") functions f ti th t run in that i their th i own update transactions. These functions can be restarted by the update task in case of errors. To display the attributes screen in the Function Builder, choose Goto - Administration. DEFINING THE INTERFACE Function modules that run in the update task have a limited interface: Result parameters or exceptions are not allowed since task function modules cannot report on their results. update-
You must specify input parameters and tables with reference fields or y reference structures defined in the ABAP Dictionary.
Database Update Techniques a = 1. PERFORM F ON COMMIT. a = 2. PERFORM F ON COMMIT. a=3 3. COMMIT WORK.
FORM f f. CALL FUNCTION 'UPD_FM' IN UPDATE TASK EXPORTING PAR = A. ENDFORM. In this example, the function module UPD_FM is carried out with the value 3 in PAR. The update task executes the function module only once, despite the two PERFORM ON COMMIT statements. This is because a given function module, logged with the same parameter values, can never be executed more than once in the update task.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Here, F1 and F3 are executed in the update task, because the COMMIT WORK for the main program triggers their execution. However, since transaction ZABC contains no COMMIT WORK statement, the function F2 is never executed by the update task. task
Database Update Techniques This statement requests execution of an update function in an external system. The destination specifies the remote system. On encountering this statement, the system writes your request to the log table and then executes it at the next commit statement.
You can also use this statement without the DESTINATION parameter.In this case , the function runs in a separate work process, but on the local host. host All remote host background task functions triggered with same COMMIT WORK run together g in a common LUW.
(V2)
are
Database Update Techniques Runtime errors can occur either in the system itself, or because your program issues an termination message (MESSAGE type A). Also, the ROLLBACK WORK statement automatically signals a runtime error. The y handles errors according g to where they y occur: system
In a FORM routine (called with PERFORM ON COMMIT) Updates already executed for the current update transaction are rolled back. No other FORM routines will be started. No further update-task or background-task functions will be started. An error message appears on the screen.
8. DATABASE UPDATES
Database updates with open SQL LUW processing Update Bundling Techniques Programming Bundling Updates Unbundled Updates Local Updates
( (
8. DATABASE UPDATES
Database updates with open SQL LUW processing Update Bundling Techniques Programming Bundling Updates Unbundled Updates Local Updates
( ( ( (
Enhancements to SAP Objects E h Enhancements t via i Menu M exits it / Screen S exits it / FM exits it Business Add-Ins Modifications ( Registering the Modifications in SSCR, Modification Adjustment, Rules for Modifications )
Enhancements
ADAPTABILITY OF SAP
R/3 Customizing Modifying Project Dependent Menu Exit Function Exit Screen Exit Enhancements Customer Development Project Independent Field Exit Keyword Exit
Enhancements
There are four different ways of adapting the SAP system to fit your needs : : Configuration of system parameters via a special user interface, the possible changes are preplanned and organized. Customizing is required during implementation of the system. z Modification : Alteration of SAP Repository objects in the form of custom changes when SAP changes occur occur, the customer version and the new SAP version must be reconciled manually. z Enhancement concept : Changing of SAP Repository objects by the customer without modification. z Custom development : Creation of custom objects within the customer name range. g Modification and Customer development involve high maintenance and costs. Hence use these only when customer requirements are not met by customizing or by user exits exits.
Satyam SAP PMG SAP PMG z Customizing
Enhancements
Advantages of Enhancements z There Th are two t main i reasons why h you should h ld use exits it rather th than th modifying SAP software yourself. Add-ons attached to exits have the advantage that: z z They do not affect standard SAP source code. They do not affect software updates.
Enhancements to SAP Objects E h Enhancements t via i Menu M exits it / Screen S exits it / FM exits it Business Add-Ins Modifications ( Registering the Modifications in SSCR, Modification Adjustment, Rules for Modifications )
Enhancements
There are three types of exits: z Menu Exits z Screen Exits z Function module Exits
Enhancements
Locating Applications that Have Exits z SAP organizes its exits in packages are called SAP enhancements. Each SAP enhancement can contain many individual exits. Choose utilities -->Enhancements --> Project Management from the ABAP Workbench menu. From here, choose utilities --> SAP enhancements to call a selection screen that lets you look for the exits available in the standard applications. To list all the enhancements in the entire system, choose the Execute function without specifying any selection criteria.
Enhancements
Searching in the Application Hierarchy Application Hierarchy can be accessed by choosing ABAP Workbench --> > Overview --> > Application hierarchy. hierarchy For a particular application area, for example exits associated with Material Management, proceed as follows: z Place the cursor on the material management branch of the application tree and choose sel / dsel --> repository infosys. z Expand the Environment sub-tree sub tree in the repository information system. z Expand the Exit Techniques sub-tree. Choose either Enhancements or Projects. z Choose Execute.
Enhancements
MENU EXITS z Menu exits allow you to attach your own processes to action menu items. For this, the SAP applications programmer reserves certain menu entries in the GUI interface. z The Menu exit entries have function codes that begin with + (Plus sign). z Once you activate the menu exits, they become visible in the application. When the menu item is selected, either the functionality provided by the SAP applications programmer or your own functionality implemented in the program exit is processed.
Enhancements
Step-by-step process of creating Menu Exits z Evoke the Transaction code CMOD or alternatively you can use the path tools --> ABAP workbench --> utilities --> Enhancements --> Project Management. z Specify a Project name in the Enhancement Text box. z Click on the create icon on the screen. For example let us create an enhancement project say zuser.
Enhancements
Enhancements
z In the next screen enter the description of the project. z Save the changes made so far in the development class.
Enhancements
Select Enhancement components. The system lists all customer exits contained in the enhancements included in your project. z Place the cursor on the menu exit you want to add your own function to.
Enhancements
Choose Edit component. The system displays technical information about the menu entry. It also displays two input fields where you can specify a language and the text you want your menu item to have.
Enhancements
Enter the name of your menu function (such as test menu) in the field New text. z Choose Save text. Your special menu function will not appear in the pulldown menu of the corresponding standard transaction until you activate your enhancement project.
Enhancements
Enhancements
z After
activation the menu(rounded) will be visible on the standard menu for the transaction S001.
Enhancements
Screen Exits z Screen exits add fields to screens in R/3 applications. SAP creates screen exits by placing special subscreen areas on a standard R/3 screen and calling a customer subscreen from the standard screens flow logic.
Enhancements
Step-by-step process of creating Screen Exits From the main screen of the Project management transaction, proceed as follows: z Select Enhancement components and choose Change.
Enhancements
z Choose Edit component.
Enhancements
Enhancements
z Create your subscreen using the Screen Painter.
Enhancements
z Design your screen to be added to the standard screen and activate the particular screen and return back to the flow logic .
Enhancements
Choose the PAI and PBO to write down the logic.
Enhancements
z Generate your screen and choose Back (the green arrow) to return to the Project management transaction.
Enhancements
z Go to the transaction ME22 to view the customer defined screen exit.
Enhancements
z Enter the purchase order number and press Enter.
Enhancements
Go to the menu header --> Details.
Enhancements
z Purchase u c ase number u be is s visible s b e on o the t e standard sta da d sc screen(rounded). ee ( ou ded)
Enhancements
Function module Exits z Function module exits allow you, as customer, to implement additional logic in an application function. The SAP applications programmer defines where in the application function the function module exits are placed and which data is to be transferred. The programmer also creates the related function modules with short text, interface, and documentation and describes the intended functionality of the function module exit in the SAP documentation. z You code the function modules, and if needed the screens, text elements, and your own Includes for the function group. z After you activate the enhancement project that contains the function module as component the ABAP/4 code will be processed. Before that, the program exits have no effect effect.
Enhancements
Step-by-step process of creating Functional module Exits. From the main screen of the Project management transaction, or transaction CMOD proceed as follows: z Select Enhancement components and choose Change.
Enhancements
Enhancements
z Place the cursor on the function module exit y you want to use. z Choose Edit component.
Enhancements
z Call the function modules include p program g by y double-clicking g on it.
Enhancements
z Confirm that y you want to create the include p program g .
Enhancements
z Enter y your functions source code in the editor.
z Save Sa e your o r incl include de program and activate acti ate it. it
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Enhancements to SAP Objects E h Enhancements t via i Menu M exits it / Screen S exits it / FM exits it Business Add-Ins Modifications ( Registering the Modifications in SSCR, Modification Adjustment, Rules for Modifications )
Enhancements to SAP Objects E h Enhancements t via i Menu M exits it / Screen S exits it / FM exits it Business Add-Ins Modifications ( Registering the Modifications in SSCR, Modification Adjustment, Rules for Modifications )
Modifications
Registering the Modification in SSCR z A registered development user registers changes in SAP sources and manual l changes h of f SAP Data D t Dictionary Di ti objects. bj t Exceptions E ti to t such h registration are matchcodes, database indices, buffer settings, customer objects, patches and objects whose changes are based on automatic generation If the same user changes the object again at a later time generation. time, no new query is made for the registration key. Once an object is registered, the related key is locally stored and copied automatically for later changes, regardless of which registered user is making the change.
Modifications
How do you benefit from SSCR ( SAP Software Change Registration)? z Quick error resolution and therefore high availability of modified systems All th the changed h d objects bj t are l logged d by b SAP. SAP Based B d on this thi information, i f ti SAP s First Level Customer Service can quickly localize and remove the causes of problems. This increases the availability of your R/3 system. system z Dependable Operation The necessity to register will likely prevent unintended modifications. This in turn promises the dependable operation of your R/3 system. z Simplification of upgrades Upgrades and release changes become considerably easier because of fewer modifications.
Modifications
Procedure for a Registered Modification If you change one of the SAP's Repository objects, the Workbench Organizer will require a change request, same as if you were creating your own object.. The object is automatically added to a repair task. z Once the development is completed, the Programmer releases the task. The objects and the object locks are transferred from the task to the change request.. request z Once the project is completed, you release the change request. This will remove the object locks of the change request. z Change request may be transportable or local. The WBO will automatically classify the change request depending upon the development p class. Only y transportable p change g request q will be transferred to the transport system after their release. z Immediately after the export a test import will check if all objects can be imported into the target system system.
Satyam SAP PMG SAP PMG
Modifications
z Repository objects are exported to the central transport directory. z The result of export and test import are recorded in the transport log of the change request to be verified by the programmer. z The Th import i t into i t the th target t t system t is i not t automatic, t ti rather th it is i initiated i iti t d by the system administrator of the transport control program tp at the operating system level.
Modifications
Modification Adjustment at Release Change z The modifications must be adjusted to the new standard during release change. h z The same is true for maintenance upgrades. z Procedure : Determination of overlap and manual adjustment adjustment.
Modifications
old ZABAP
Release request
Full version
Backward Delta
old ZABAP
Release q request
z When you release a change request, a complete version of all objects contained in the changes request is written to the versions database. z If you later edit a Repository object again, the current object becomes the complete copy and the differences between the old and the new object are stored in the versions database as backward delta delta. z When you assign a Repository object to a task, the system checks whether the current version agrees with the complete copy in the versions database. If not, a complete copy is created. This takes place the first time you change an object.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Modifications
z The versions of a Repository object are the basis for the modification adjustment .To support this adjustments,information on whether the version was created by SAP or by the customer is also stored
Modifications
Objects of the Modification Adjustment z Dictionary objects z Tables, Data Elements, Domains, Matchcodes, Views z ABAP/4 Programs z Reports, Module Pools, Function groups z Screens z Menus z Enterprise Data Models The object listed above are managed by version ,therefore they are included in the modification adjustment.
Modifications
Modification Adjustment zThe modification adjustment for Dictionary objects is done during the release change. Other Repository objects are adjusted after the release change. z A Dictionary adjustment after the release change would result in the loss of new custom fields. z The Dictionary adjustment is done with transaction SPDD, the adjustment of the remaining Repository objects with transaction SPAU.
Modifications
Rules for Modifications z Use the following rules when modifying or adjusting: z Try to concentrate the changes in one place ( possibly by using I l d within Includes ithi the th customer t name range). ) z The workbench Organizer does not allow modifications by DDIC and SAP*. z Release open repairs and open requests containing repair objects prior to the release change. Such repairs and requests will be pointed out to your during the upgrade. z Never create custom programs within the SAP name range. You will find the customer name range in the SAP Style Guide. z Avoid modification adjustments by avoiding modifications.
Modifications
Avoiding g the Adjustments j z Try to avoid changing SAP objects to prevent the necessity for modification adjustments. z By using program enhancements and appends for SAP tables you can enhance SAP object without having these changes overwritten by SAP during an upgrade. z To avoid manual patches ,SAP offers online correction services in release 3.0 which allow automatic implementation and deimplementation of hot packages and patches
Summary
Summary z There are four ways of modifying the standard system. z Customizing z Modifications z Enhancement Concepts z Custom Development z The advantages of enhancements are z They do not affect standard SAP source code z They do not affect software updates z Enhancements can be achieved by Exits. Exits z There are three types of Exits. z Menu Exits z Screen Exits
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Summary
z Function Module Exits z Registering the Modifications in SAP Software Change Registration (SSCR). z Procedure P d for f a Registered R i t d Modification. M difi ti z Rules for modifications or adjusting. z Avoid the adjustment using the program enhancements for SAP tables. tables
Exercise
Exercise Create a menu exit SDW00003 in the area menu TEST and add an userdefined report for that menu exit.
Exercise
Solution Follow the steps mention in the step-by-step process of creating the menu exits. For the F th menu exits it SDW00003, SDW00003 T Transaction ti code d +DW3 DW3 is i predefined. d fi d Now go to transaction SE80 and select the user-defined report say for example : ZTEST56.
Exercise
For the particular report create the transaction as shown in the picture.
Exercise
Mention the transaction code that is predefined by the menu exit and mention the short text, highlight the Program and selection screen radiobutton and press enter.
Exercise
Assign report ZTEST55 to the transaction +DW3 and save it.
Exercise
Go to the transaction S001 and go the menu TEST, there you can find USER DEFINED REPORTS menu item. Click the menu item and it will take you to the output of the report.
Exercise
Output for the report ZTEST56 executed through the transaction +DW3.
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
Introduction to BAPI & BAPI Usage St t Structure of f Business B i Obj Objects t Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation T h i l St Technical Steps f for BAPI Creation C ti List of Macros
Satyam SAP PMG SAP PMG
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
SAP PMG
Introduction to BAPI & BAPI Usage Structure of Business Objects Important Transaction codes BAPI Creation Understanding Business Requirements before BAPI Creation Technical Steps for BAPI Creation List of Macros
Objectives
About SAP Smart Forms D i i Smart Designing S t Forms F Writing g Programs g for Smart Forms
SAP Smart Forms Introduction to Smart Forms Structure of a form Windows Architecture Forms Nodes Form Painter Table Painter PC Editor Style Style Builder Driver Program
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
What is SAP Smart Forms? SAP Smart Forms is introduced in SAP Basis Release 4.6C as the tool for creating and maintaining forms for mass printing in SAP Systems. SAP S Smart tF Forms allow ll you t to execute t simple i l modifications difi ti t to th the f form and di in the form logic by using simple graphical tools. Besides using g the p printer for standard output p y you can also select the Internet (by using a generated HTML output), a fax, or e-mail as output medium. Transaction to start SAP Smart Forms : SMARTFORMS
Advantages
Structure of a Form
A form consists of: pages output areas called windows Addresses graphics graphics (such as company logo) data or text contents. Within an output p area, y you can use static or dynamic y tables to display p y data or texts in lines, columns, or cells. To further structure and format text and data, use paragraphs with the paragraph and character formats formats.
Pages of a form
On the pages of a form you determine the page layout and the sequence of pages with different structures structures. Draft pages and print pages: You use a draft p page g to determine the layout y and the contents of one or several print pages. In SAP Smart Forms, you use the Form Builder to define draft pages. Print pages are those pages that are eventually printed. The page layout includes the page format (for example, example DIN A4 A4, Letter Letter, DIN A5 landscape) and the position of the windows on a page. For each draft page, you must specify a next page to make the page sequence clear. You can also repeatedly call the same draft page if you want recursive output.
Pages of a form
Many forms contain only two pages of different structure, for example one for the letter and one for listing the invoice items. For such a form you need two draft pages; the second page, which is defined as next page of the first one one, calls itself as next page page. If the text does not entirely fit onto the second print page, another print page with identical structure is started automatically. For draft page 2 2, the page break is triggered either automatically by the main window or built into the form logic.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Windows
On a page, there O th are two t different diff t types t of f output t t areas for f texts t t and d data: d t the th main window and the secondary window. You can position windows anywhere on a page, even overlapping. You can position the same window (determined by the technical name on several pages of a form, so that the same contents are displayed on all these pages. You can choose a different size for the window on each page, except for the main window.
Main Window
In a main window you display text and data, which can cover several pages (flow text). As soon as a main window is completely filled with text and data, the system continues displaying the text in the main window of the next page. It automatically triggers the page break. You can define only one window in a form as main window. Th main The i window i d must t have h the th same width idth on each h page, but b t can differ diff i in h height. i ht A page without main window must not call itself as next page, since this would gg an endless loop. p In such a case, , the system y automatically y terminates after trigger three pages.
Secondary Windows
In a secondary window you display text and data in a predetermined output area. There is no flow text display with page break. If you position a secondary window with ith th the same name on several l pages, th the system t di displays l th the contents t t of f this thi secondary window on each page. y window are truncated and not Text and data that do not fit into the secondary displayed.
Architecture
The architecture of SAP Smart Forms separates application data retrieval from the actual definition of the form When you activate the Smart Form, the system generates a function module that encapsulates all attributes of the Smart Form. As soon as the application program calls the function module, the Smart Form uses the module's interface (which corresponds to the form interface) to transfer any table data previously selected l t d and dt to print i t th the f form according di t to the th f form d description. i ti Thi This i is also l referred to as 'calling a Smart Form for printing'.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
When creating a form, you must: Retrieve the application data. Describe your form. Pass the application data to the form form. Printing the Form: Call a function module generated by SAP Smart Forms to print your form. SAP Smart Forms supports the following output options: The form is printed on a printer connected to the SAP System. Before printing, p g, use the p print p preview to check whether the form is correct. The function module generates an XSF data stream that transfers, for example, the form description including the retrieved data to programs of third-party companies.
Describing a Form
Describe the interface of the form. It results from the application data previously selected. 2 Create one or more pages 2. pages. On a page page, you can position windows windows, addresses addresses, and graphics. Within a window, you can create additional elements. 3. Create elements (text, graphics, tables, and so on) for each page, using other tools of the Form Builder: * Use the Form Painter to position windows, graphics, and addresses on a page (the other elements are displayed in an assigned window). * Use the PC Editor to write your texts. tables. * Use the Table Painter to format your tables 4.Use the flow control to control whether and when to print pages and elements
1.
Form Attributes
Form Interface
We define the form interface to pass the data to the form. In the form interface we can define import and export parameters, tables and exceptions.
Global Definitions
Global definition apply for the entire form form. We can use any object defined there in all nodes of the tree. We can initialize the global data before we start processing the start page. Withi the Within th form f routines ti we cannot t access any global l b l data d t unless l we explicitly li itl pass them to the form routine interface.
Global Definitions
Form logic
In the I th Form F Builder B ild you describe d ib a Smart S t Form F by b a set t of f nodes. d To T do d this, thi you build up a tree structure on the left side of the user interface
The numbering of the nodes also shows the sequence in which they are processed (from top to bottom). The first node is the root node.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
SAP Smart Forms Page P Window Text Graphic p Template Table Command Loop Alternative Folder Complex Section Program Lines
Node Types - 1
Possible direct successors A page of the form. Direct successors of this node can Window, graphic, be placed directly on the page. address Output area on a page. There are main windows and All except window and subwindows. page nodes
Node Types - 2
Description Possible Directly Inferior Nodes
Table ab e output
Icon Node Type
Template
You use this node to print a table with fixed layout You use this node to print a table with dynamic layout
All except window, page, table, and template nodes Directly inferior nodes are automatically the three nodes Header , Main Area and Footer . As their directly inferior nodes nodes, loop nodes, folder nodes, or table nodes are allowed. Table cell As with the template node
Table
You use this node to print a table line in a table or template You use this node to print a table cell of a table line according to the line type
Node Types - 3
Possible direct successors
Flow Control
Node type Command Description Executes special commands (next page, (no successor) paragraph numbering, printer control) Processes successor node repeatedly. Branches depending on condition. All except window and page nodes Direct successors are automatically the nodes TRUE and FALSE. The direct successors of these are all nodes except window and page nodes.
Loop Alternative
Other Nodes
N d t Node type Folder D Description i ti P ibl direct Possible di t successors All except window and page nodes All except window and page nodes (no successors) Combines successor nodes to logical groups Complex section Combines all attributes of the node types template, table, loop, folder Program lines Executes ABAP program code (for example, conversion routines).
SAP Smart Forms Form F Painter P i t Table Painter PC Editor Navigation Tree
Form Painter
Used U d to t design d i the th layout l t of f the th Smart S t Form F Used to create and change the size of the windows Add graphical images
Table Painter
Drawing D i rows and d columns l Inserting , cutting ,copying and deleting lines Deleting cells Splitting cells Selecting table patterns Changing cell size and moving cell separator lines
Table Painter
PC Editor
Enter Enter, delete, delete select select, cut cut, and copy texts Assign paragraph and character formats Include, change, and delete fields
Inserting Addresses
In many applications, applications addresses are administered using the Business Address Services (BAS). The addresses are stored in the database tables of the central address administration and identified by the application via a number. Procedure 1.Create a node of type Address in the navigation tree of the Form Builder. 2.Create the address node as directly inferior node of the page node or use the context menu in the layout of the Form Painter. You can then position the address anywhere on the page. 3.Enter a unique name for the node and a description 4D t 4.Determine i th the address dd t type on th the General G l Att Attributes ib t tab. t b For organization addresses you must specify only an address number. For any other address types, yp , you y must specify p yap person number and an address number. To do this, use the search help. In the box Additional Address Specifications you can maintain other attributes to specify how you want to display the address.
You include Y i l d fi fields ld ( (your own fi fields ld and d system t fi fields) ld ) t to di display l variable i bl d data t i in th the form. The field serves as placeholder. When the system displays the form, it replaces the field with the value that was assigned to it during processing. Prerequisites If you use your own fields, you must have defined them either as global data or as parameters in the form interface. The text node into which you want to include a field must exist exist. Process: 1.Include field ( ) to include a defined field into the text 2.A dialog window appears. Enter the field name in a line. Make sure that the field name is enclosed in ampersands ('&').
System Fields
Displays the date. You determine the display format in the user master record. Displays the time of day in the form HH:MM:SS. Inserts the number of the current print page into the text. You determine the format of the page number (for example example, Arabic Arabic, numeric) in the page node node. Displays the total number of pages for the currently processed form. This allows you to include texts such as Page x of y into your output. Contains the total page number of all forms in the currently processed print request. Contains the name of the current window (string in the Window field) Contains the name of the current page (string in the Page field) Smart Forms sets this flag ( SFSY-XSF = 'X' ), if you want to print the form in XSF format or HTML format format. On the Conditions tab of a node, node you can use this field to suppress output that is intended only for these output formats (for example, pushbuttons). Queries whether the original is printed or which number the copy has. COPYCOUNT = 1 : orginal, COPYCOUNT = 2 : first copy; COPYCOUNT = 3: second copy, and so on. Queries whether the original is printed or which number the copy has. COPYCOUNT = 0 : orginal, COPYCOUNT = 1 : first copy; COPYCOUNT = 2 : second copy, and so on. Return value that you can query in program lines nodes. This enables you to react dynamically to error situations during output. Up to now, this field can be used only for include texts and text modules: SFSY-SUBRC = 0 :Text T t module d l or include i l d text t t found f d and d printed i t d SFSY-SUBRC = 4 :Text module or include text not found Logon name of the user who prints the form.
SFSY-USERNAME
You can use the following node types for tabular data layout: The template node. Templates are static because the number of columns and lines are determined before the actual output. The table node. Tables are dynamic because the table size depends on the amount of data selected at runtime. To specify the layout of both node types, use line types. Line Types: You use the line type to describe the following attributes of a table line: The width of the table line The number and width of individual cells within the table line A major difference between line types of templates and line types of tables lies in the height: line types of templates all have the same height, while SAP Smart Forms determines the height of table lines dynamically (depending on the output in the table).
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Style Builder
Use Transaction Code SMARTSTYLES to maintain paragraph and character formats. A Smart Style contains Header data containing the default values of a Smart Style Paragraph formats including indents and spacing, font attributes, tabs, and outline and numbering Character formats including effects (superscript, subscript), bar-code and font attributes Colors and underlines for a paragraph or character format Preview
Style Builder
Driver Program
REPORT ZSALES_PRINT ZSALES PRINT NO STANDARD PAGE HEADING. HEADING DATA FLAG(1). DATA: FORM_NAME(30) ( ) VALUE 'ZSALES_PRINT'. DATA: FM_NAME TYPE RS38L_FNAM. PARAMETERS: VBELN LIKE VBAK-VBELN OBLIGATORY, KUNNR LIKE VBAK VBAK-KUNNR KUNNR OBLIGATORY OBLIGATORY. DATA: BEGIN OF ZITAB OCCURS 0. INCLUDE STRUCTURE VBAP. DATA: END OF ZITAB. DATA ZITAB1 LIKE ZITAB OCCURS 0 WITH HEADER LINE. DATA: SVBELN TYPE DDSHRETVAL. DDSHRETVAL TABLES: VBAK, VBAP. START-OF-SELECTION. SELECT SINGLE * FROM VBAK WHERE VBELN = VBELN AND KUNNR = KUNNR.
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Driver Program
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE ZITAB WHERE VBELN = VBAK-VBELN . CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING FORMNAME = FORM_NAME IMPORTING FM NAME FM_NAME = FM FM_NAME. NAME CALL FUNCTION FM_NAME EXPORTING VBELN = VBELN KUNNR = KUNNR FLAG = FLAG TABLES ZITAB = ZITAB ZITAB1 = ZITAB1.
Example Forms Available in Standard SAP R/3 SF_EXAMPLE_01 Simple example; invoice with table output of flight booking for one customer SF_EXAMPLE_02 Similar to SF_EXAMPLE_01 but with subtotals SF_EXAMPLE_03 SF EXAMPLE 03 Similar to SF_EXAMPLE_02, whereby several customers are selected in the application program; the form is called for each customer and a all form outputs are included in an output request
Forcing a page break within table loop Create a loop around the table. Put a Command node before the table in the loop that forces a NEWPAGE on whatever condition you want. Then only loop through a subset of the internal table (based on the conditions in the Command node) of the elements in the Table node. Font style and Font size Goto Transaction SMARTSTYLES. There you can create Paragraph formats etc just like in sapscript. Then in your window under OUTPUT OPTIONS you include this SMARTSTYLE and use the Paragraph and character formats. Line in Smartform Either t e you ca can use a window do t that at ta takes es up t the e width dt o of you your page a and do only y has as a height eg to of 1 mm. Then you put a frame around it (in window output options). Thus you have drawn a box but it looks like a line. Or you can just draw "__" across the page and play with the fonts so that it joins each UNDER_SCORE.
Difference between 'forminterface' and 'global definitions' in global settings of smart forms The Difference is as follows. Form Interface is where you declare what must be passed in and out of the smartform (in from the print program to the smartform and out from the smartform to the print program). Global definitions is where you declare data to be used within the smartform on a global scope ie: anything you declare here can be used in any other node in the form form.
Sap Script
SAP Script
Sap Script
INTRODUCTION SAP Script is the SAP System's own text-processing system.Also called as Word processing tool of SAP. SAP Script is tightly integrated into the SAP System Note: Entering and formatting text in SAP script is a little bit different than traditional text-processing p g programs p g on a PC. The main difference: the text that you enter is not in its final format. SAP script applies your formatting to text only when a document is printed, print-previewed, or displayed on-line in the SAP System
Sap Script
How does a SAP Script work ? Every Script has a driver / print program attached or calling it. In case you are creating an entirely new script ,you you also need to create the driver program. This program can be executed directly or attached to attached to certain events viz. Creation of Purchase Order , Sales Order , Hiring an Employee. Standard SAP scripts p can be modified by y copying py g them in the customer name space and making the required chnages.
Sap Script
Components of a SAP Scripts 1. Standard Text This is like a normal document.You can create letters , articles bascially y any static text. This can be created from transaction SO10. 2. Layout Set This also called as Form created from Transaction SE71. 3 P 3. Print i t Program P This program retrieves desired data from the database , calls the Form, supplies data to the Form and finally closes the Layout Set ( Form ).
Sap Script
Supplies S li data Driver Program Layout set Gets printed
Defines
Sap Script
Name House name Postal Code City
WINDOW
Page window Particular area in the page where the window is printed out o t
Page
Transaction SO10
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
If you want text in your standard text to appear as per attributes of character string , you need to enclose the text <character string>TEXT</>.
OBJECTS OF LAYOUT SET Header Paragraph and Character format Windows and Text Elements Pages Page g Windows
Header data is found both in style and layout set maintenance. In style maintenance, it is used primarily to present information designed to make it easier for the end user to select a style. The header Th h d data d t in i layout l t set t maintenance, i t on the th other th hand, h d is i used d for f information and control purposes.
In SAP Script, I S i t paragraphs h are formatted f tt d using i formats f t and d their th i corresponding attributes. Word processing is simplified by the use of different paragraph attribute groups: Standard Font Tabs Outline
Paragraph Format
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Character formats you to format entire blocks of text within a p paragraph g p Allow y Which will override the paragraph format Character formats are defined in character strings Eg: <B1> &VBDKA-TDNAME& ,, &VBDKA-TFGEU&</>
WINDOWS We can combine information contained in a document into certain groups and make each group appear on the printed page in an individual area. SAP Scripts calls such a group a window To refer a window via program each window must have a unique name We W can assign i text t t to t each h windows i d via i text t t elements l t TEXT ELEMENTS Text elements can be defined in layout set maintenance for each window. The text elements are accessed by name by a print program, formatted, and output in the respective window. The /E in the tag column is used to identify the text as a text element
Windows Wi d are defined d fi d in i layout l t set t maintenance. i t They Th represent t areas which are positioned on pages -- as page windows -- and in which text is later output. At least one window must be defined for each layout set. If not not, a text cannot be formatted by SAP Script. Script The following window types can be used: main variable constant
WINDOWS
MAIN Main window in which continuous text is output. The text in the main window can extend over several pages. If the text fills one page, output continues in the window of the next and subsequent pages, as long as MAIN has been defined for these pages. VAR Window with variable contents. The text can vary on each page in which the window is positioned. Variable windows are formatted for each page. CONST Window with constant contents which is only formatted once.
At t least east o one e page must ust be de defined ed for o e every e y layout ayout set set. You ou must ust a also so designate a "first" page in the layout set header. Otherwise text formatting is not possible.
PAGES
When you define Wh d fi page windows, i d the th window i d names are linked li k d to t page names. To do this, you need to specify the position and size of the window on the assigned page. Width of the main window must be the same on all pages.
PAGE WINDOWS
Sap Script
The text elements are related to a window . Th print The i t program calls ll the th respective ti text t t elements l t of f the th window i d TYPES OF TEXT ELEMENTS TEXT ELEMENTS WITH OUT NAMES TEXT ELEMENTS WITH NAME
NAMED TEXT ELEMENTS We recognize named text elements by paragraph format /E The name can be up to 40 characters The different windows can have same named text elements To out put named text elements we have to call the function module WRITE_FORM
A sty style e de defines es t the e set o of pa paragraph ag ap a and dc character a acte formats o ats t that at a are e available for formatting a document. If a style is selected, then it provides the character and paragraph formats for your document. Any formats defined in the layout set selected for a document are then ignored.
Layout sets are used to control the page layout and also the text formatting in your documents. If a document is formatted for output to the screen or to a printer, then a l layout t set t must t be b specified ifi d for f it. it If no other layout set is specified for a document, then the SYSTEM layout set is assigned to the document by default. default
LAYOUT SET CONTROL OPEN_FORM CLOSE_FORM - Initializes the SAP script composer and opens the specified p layout y set - Closes the layout set ( if close_form is missing in the program nothing will be printed)
WRITE_FORM , WRITE_FORM_LINES, CONTROL_FORM - To output data( this can be used as many times between OPEN_FORM and CLOSE_FORM) PAGE CONTROL IN LAYOUT SETS STATIC DEFINITION- Specify the starting page in header and for each page specify the subsequent page DYNAMIC DEFINITION - Specify START PAGE when you call START FORM START_FORM
SYMBOLS Symbols are constants that can be inserted in a document. They save the user unnecessary work k when h replacing l i sections ti of f text, t t phrases, h etc. t Possible symbol types are: System y symbols y Standard symbols Program symbols Text symbols.
THE SYNTAX OF SYMBOLS The delimiter & must be used both immediately before and after the symbol. symbol The name of a symbol may not contain spaces. A SAP Script editor line break should not occur between the symbol delimiters. If additional formatting options are required, these should be enclosed in round brackets and inserted immediately after the symbol name. The code letters identifying these options must be given in capitals.
SYSTEM S S SYMBOLS S O S SAP script provides values for the system symbols Example &date& &time& &month& &year& &uline& &vline& &page& STANDARD SYMBOLS Standard St d d symbols b l are defined d fi d in i the th TTDTG table. t bl This table contains both the name of each symbol and its value. The value, which is language-dependent, can contain up to 60 chars. This table is delivered complete with standard entries supplied by SAP SAP. It may be extended with customer-specific symbols
Symbols
PROGRAM SYMBOL SAP Script cannot read this data out of the SAP database itself, but has to call ll on another th program t to d do thi this. The Th data d t are then th copied i d into i t work k areas declared using TABLES. If SAP Script is now called from this program in order to format a text, it can copy the data out of these work areas. areas Symbols which obtain their values from this kind of data area are called program symbols. Note The value of a p program g symbol y is limited up p to a maximum of 255 chars. The name of a program symbol consists of the table name and the field name separated by a hyphen.
TEXT S SYMBOLS O S All symbols which do not correspond to one of the three types of symbol described above are text symbols. You define the value of a text symbol yourself in the text module. There are two ways of doing this: Use U th the menu entries t i in i the th text t t editor dit Use the control command DEFINE for e e.g g /: DEFINE &mysymbol& = XXXX / &mysymbol& /: DEFINE &mysymbol& = YYYY YYYY / &mysymbol&
would print XXXX YYYY
Delivering Solution Excellence and Innovation
Control Commands
Control Command is a type of SAP script command which are used to control output formatting. The Syntax of Control Commands The paragraph format /: must be entered in the format column to identify a control. You enter the command itself in the text line. A control command, together with any parameters it requires, may not occupy more than a single line A maximum of one control command may appear in each line
Control Commands
SYNTAX OF CONTROL COMMANDS In tag column, indicate control commands with paragraph format /: Enter complete control commands and necessary parameters on one line Enter only one control command per line Editor formatting does not affect lines with control commands
Control Commands
SOME IMPORTANT CONTROL COMMANDS: /: NEW-PAGE /: PROTECT & /: ENDPROTECT
/: SET DATE MASK = 'date_mask /: SET TIME MASK = 'time_mask / RESET paragraph_format /: h f t /: INCLUDE name [OBJECT o] [ID i] [LANGUAGE l ] [PARAGRAPH p] [NEW-PARAGRAPH np]
(Cont..
Satyam SAP PMG SAP PMG
Next page)
Control Commands
Control Commands
SET DATE MASK command The formatting for date fields can be defined with the SAPscript SET DATE MASK command. Executing this command causes all subsequent date fields to be output using the specified formatting. formatting Syntax /: SET DATE MASK = 'date date_mask mask' The following templates may be used in the date mask: For day y : DD / DDD / DDDD For month : MM / MMM / MMMM For year : YY / YYYY
Control Commands
SET TIME MASK command You can use the SAPscript SET TIME MASK command to format time fields in a way that differs from the standard setting. Executing this command causes all subsequent time fields to be output using the specified formatting. Syntax: /: SET TIME MASK = 'time_mask' The following g templates p may y be used in the time mask: HH hours (two digits) MM minutes (two digits) SS seconds (two digits)
Control Commands
BOXES LINES, BOXES, LINES SHADING: BOX, BOX POSITION, POSITION SIZE The BOX, POSITION and SIZE commands for drawing boxes, lines and shadowing can be used for specifying that within a layout set particular windows or passages of text within a window are to be output in a frame or with shadowing. Syntax 1. /: BOX [XPOS] [YPOS] [WIDTH] [HEIGHT] [FRAME] [INTENSITY] 2. /: POSITION [XORIGIN] [YORIGIN] [WINDOW] [PAGE] 3. /: SIZE [WIDTH] [HEIGHT] [WINDOW] [PAGE]
Control Commands
ADDRESS The command formats an address according to the postal standards of the destination country defined in the parameter COUNTRY sap scripts calls function module ADDRESS_INTO_PRINTFORM to format the address /: ADDRESS[DELIVERY] [ ][ [PARAGRAPH a] ][ [PRIORITY p] [LINES [ l] ] /: TITLE title /: NAME name1[,name 2[,name 3[,name 4]]] /:STREET street /:POBOX po box[CODE zip code] /:CITY town1[,town 2] /:REGION region / COUNTRY country /:COUNTRY t /: FROMCOUNTRY from country /: ENDADDRESS
Control Commands
BOTTOM /ENDBOTTOM /:BOTTOM The text te t lines bet between een the t two o commands are o output tp t at the bottom of MAIN window /:ENDBOTTOM /:DEFINE &symbolname& = value Text symbol receive their value through an explicit assignment. This assignment can be done interactively in the editor via include-symbolsg value may y have a maximum of 60 characters text. The assigned
Incorporating Graphics
For e.g Company Logo 1. .bmp / .jpg file has to be converted to .tiff file 2. Upload the file as text module using ABAP/4 report RSTXLDMC specify BMON or BCOL 3 S 3. System t generates t a suggested t d name for f the th text t t e.g ZHEX-MACRO-LOGO Use ID ST and logon language. 4 Include ZHEX-MACRO-LOGO 4. ZHEX MACRO LOGO object Text ID ST in the Layout Layout.
Example
Example
Pages
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Example
Windows
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Example
Page Windows
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
Example
Formatting Options
Offset - specifying an offset of n , n left most characters are not displayed. Eg E.g &symbol& &s mbol& ---> > 1234576789 &symbol+3& ----> 456789 Output p Length g &symbol(3)& ----> 123 &symbol(7)& ----> 1234567 Time Mask &Time& Normally 10:08:12 (hh) : (mm): (ss) /: Set Time Mask = HH:MM &Time& = 10:08 /: Set Time Mask = HH hours MM minutes &Time& = 10 hours 08 minutes &Time(Z)& = 10 hours 8 minutes
Example
Date Mask /: Set Date / ate Mask as = DDMMYY &Date& = 01 05 01 /: Set Date Mask = MMMM DD,YYYY &Date& = May 01,2001 Fill Character Leading spaces in a value can be replaced with a fill character. The F option p is used and character to be filled is specified. p E.g &KNA1-UMSAT& = 700.00 &KNA1-UMSAT(F*)& = **700.00 Space Compression &symbol(C)& It has a effect of replacing each string of space characters with a single space and shifting the words to left as necessary to close up gaps. Also Leading spaces are completely removed. Omitting Leading Zeros &symbol(Z)& &Day& = 01 &DAY(Z)& = 1
Satyam SAP PMG SAP PMG Delivering Solution Excellence and Innovation
WfMC
WfMC : The Workflow Management Coalition is the globally recognized body for the advancement of workflow management technology and its use in industry.
Definition of Workflow
According to WfMC , Workflow is defined as the automation of a business process , in whole or part , during which documents , information or tasks are passed from one participant to another for action , according to a set of procedural rules.
Integration
SAP Business Workflow uses the existing g transactions and functions of the R/3 System and does not change the functions. You can combine the existing functions of the R/3 System to form new business processes with SAP Business Workflow. The workflow system takes over control of the business processes.
Technical Principles
The definition and execution of Workflow can be divided into four main areas. Business Workplace Workflow Builder Tasks Business Object Repository (BOR)
Technical Principles
Technical Principles
BUSINESS WORKPLACE o Work items are displayed to the user for execution in their SAP Inbox WORKFLOW BUILDER o W Workflow kfl d definitions fi iti are defined d fi d which hi h are made d up of f steps t that th t control t l the workflow or the tasks to be executed . This linking is defined in Workflow Builder . TASKS o Tasks describe elementary business activities . They always refer to the method of the object . Tasks can be background tasks or dialog tasks . OBJECTS AND OBJECT TYPE o Object type describes the data with which you want to work in workflow , e.g. MATERIAL . Each Object type has methods in which activities are g creation of material . defined which can be executed with data e.g.
Events
o You define the events used to initiate and control the Workflow.
Demo Example
Process Flow
o An employee enters a notification of absence (leave request) in the R/3 System by filling out the relevant input template. o The direct superior of the employee is responsible for approving or rejecting the notification of absence. The R/3 System determines the direct superior automatically on the basis of the organizational i ti l plan l maintained. i t i d o If the request is approved the creator is notified by mail: o If the request is not approved, the creator is informed and can decide whether to withdraw the notification of absence or revise it. If the superior has given reasons for the rejection in an attachment, the creator can take these into consideration.
Demo Example
Process Flow
o If the creator revises the request, it is submitted to the superior for approval again. The applicant can also add an attachment, which hi h can then th be b accessed db by th the superior. i o This cycle is repeated until either the superior approves the leave request or the creator withdraws it. o The applicant can find out the current processing status at any time by looking in their workflow outbox.
Demo Example
Roles in Workflow
Process Cons Consultant ltant
Person within the system of workflow roles who analyses the existing business processes, identifies those that are suitable for SAP Business Workflow and maps them onto a business process model. The process consultant is also responsible for the maintenance of the organizational plan required for the workflow. Roles to be assigned
9 SAP_BC_SRV_USER SAP BC SRV USER 9 SAP_BC_BMT_WFM_PROCESS
Roles in Workflow
Workflow Workflo Developer De eloper
Person within the system of workflow roles who implements the workflow based on the business process model developed by the process consultant and using the SAP Business Workflow definition tools
Roles to be assigned
9 SAP_BC_BMT_WFM_DEVELOPER
Roles in Workflow
Workflow Workflo System S stem Administrator
Person within the system of workflow roles who is responsible for the technical maintenance of the development environment and the runtime behavior after automatic Customizing. Roles to be assigned
9 SAP_BC_ENDUSER 9 SAP_BC_SRV_USER 9 SAP_BC_BMT_WFM_ADMIN SAP BC BMT WFM ADMIN
Roles in Workflow
Workflow Workflo Agent
Person within the system of workflow roles who appears as an end user in productive workflows workflows. The workflow agent starts workflows and processes work items. Their work area is the Business Workplace. Roles to be assigned
9 SAP_BC_SRV_USER
Roles in Workflow
Process Controller
Person within the system of workflow roles who evaluates the workflow from a business perspective at runtime, and is responsible for suggesting improvements. g Roles to be assigned
9 SAP_BC_SRV_USER
9 SAP_BC_BMT_WFM_CONTROLLER
FEATURES :
o Various functions such as check, test, generate or where-used list are available.
FEATURES
o You create a new object type with initially just its basic data. This assigns the appropriate position in the Business Object Repository to the object type
PROCEDURE :
1. Choose Tools Business Workflow Development Definition tools Business Object Builder. This displays the screen Business Object Builder: Initial Screen. 2. Select Create. 3 The 3. Th Create C Object Obj Type T di dialog l box b appears. 4. Edit the fields Object type, Object name, Name and Description. When doing so, bear in mind the general naming conventions for object types. Leave the field Supertype blank. 5. Enter the name of a new program for the implementation of the object type Bear in mind the naming conventions in your application. type. application 6. Specify the code letter of your application (usually Y or Z).
Examples E l of f object bj t type t component t IDs ID of f th the object bj t t type Material are:
Key field : Attribute : Method : Event : Material.Material Material.Industry Material.Display Material.Created
Description
Key fields
o o
Attributes
Procedure
o o
o o
Implemented
R l Released d
Test/Execute
To test whether the implementation of the methods and attributes of the object type was successful, select Test. j already y exist for the object j type, yp , select an object j for testing g the instanceIf objects dependent attributes and methods. This displays the screen for testing an object type. If no objects exist yet for the object type, only the attributes and methods that are defined as instance-independent are offered for testing . To test the attributes and methods that operate on an object as well, select Create instance. You are then asked to enter the key fields of an object of the type to be executed in order to specify it. A screen with the attributes of the object and their current values is displayed. You execute the methods on this object by double-clicking on the appropriate line.
o o o
Satyam SAP PMG SAP PMG
In the implementation of this method, the container element RESULT of the method container must be assigned one of the four values at the end
DATABASE FIELD
OBJECT STATUS
Attribute whose value is an object status
o o
Satyam SAP PMG SAP PMG
0001-1000: 0001 1000 E Exceptions ti defined d fi d f for i interfaces t f 1001-7999: Application-specific exceptions, reserved for SAP development 8000-8999: Exceptions p triggered gg by y the object j manager g 9000-9999: Customer-defined exceptions, reserved for customers
Delivering Solution Excellence and Innovation
The reference to the object whose change of state is described by the event. The user name of the party who triggered the event creation.
Delivering Solution Excellence and Innovation
o o o
RAISING EXCEPTIONS
STANDARD EXCEPTIONS
On the screen Business Object Builder: Initial Screen, enter the ID of an object type as a frontend-specific delegation type in the field Object/interface type. You can only specify a frontend-specific delegation for an object type if you checked "GUI-specific GUI specific" beforehand for this object type when maintaining system-wide delegation. Choose Settings Delegation Frontend.
T k Tasks
DEFINITION OF TASK o You use a Task to define an activity that can be executed within a workflow definition or independently (as a single step). This activity can be an SAP System transaction. o You have to create new tasks as standard tasks .
CREATING A TASK
Choose Tools Business Workflow Development Definition Tools Tasks/Task Groups Create. Select the relevant elevant task type.
T k Tasks
SINGLE STEP TASK
Maintain names, work item text, object type and method Maintain agent assignment Maintain elements in task container Maintain triggering events Maintain terminating events Maintain default rules Maintain description and notification texts Maintain additional data Tab page Basic data Additional data Agent assignment Maintain Container Tab page Triggering events Tab page Terminating events Tab page Default rules Tab page Description Additional data Selection criteria...Additional data Classification Change Tab page SAPphone.
T k Tasks
MULTI STEP TASK
Maintain names, work item text, object type and method Maintain agent assignment Maintain elements in task container Maintain triggering events Maintain description and notification texts Maintain additional data Tab page Basic data Additional data Agent assignment Maintain Container Tab page Triggering events Tab page Description Additional data Selection criteria...Additional data Classification Change Tab page SAPphone.
Tasks
CONTAINER
The elements of a container are described with ID, data type reference and other properties
Types of Container
Method Container Event Container Rule Container Task Container Workflow Container
Usually containers are already defined. These containers hold standard container elements defined by the workflow system
BINDING
Values can be assigned to container elements in different ways.
Value assignment using a binding from another container according to a binding definition carried out previously. V l assignment Value i directly di l to a container i instance i in i the h program of f an application. Value assignment with an initial value determined at definition time when the container instance is created.
At definition time you create binding definitions for the workflow. This involves specifying p y g the assignment g rules for how data is exchanged g between two containers. At runtime these binding definitions are executed making workflow execution possible
BINDING
BINDING
Binding Definition from Task Container
You define the bindings from the task container in the following two places. In the definition of a task
BINDING
Binding Definition from Method Container
You define the binding from the method container to the task container (for export parameters of the method with synchronous methods) during definition of a task.
Workflow Builder
WORKFLOW BUILDER
This is the main WebFlow Engine tool for creating, displaying, and processing i workflow kfl d definitions. fi iti You Y can test t t workflow kfl definitions d fi iti and d generate operable versions. provides a g graphical p and an alphanumeric p The Workflow Builder p modeling view and also a tree display of the workflow definition You can only use the graphical modeling view if you are working with the SAPGUI for Windows Windows. If you call the Workflow Builder using a different SAP GUI, the alphanumeric modeling view is displayed automatically
WORKFLOW BUILDER
WORKFLOW BUILDER
Workflow
Here you can insert new steps into the workflow definition and process existing ones. Double-clicking on a step calls the associated step definition. The overview graphic is displayed here. The part of the workflow graphic displayed in the screen area Workflow is marked with a green rectangle. Changing the size or position of the rectangle changes the display in the screen area Workflow. All step types that you can use in the workflow are displayed here if you are in change mode. You can insert a new step using Drag&Drop. This screen area contains the following:
Overview
Step types
Objects
WORKFLOW BUILDER
Workflow container
All workflow container elements are displayed here. here You can also define new container elements and generate a where-used list here. In the options in the Workflow Builder, you can choose not to display the workflow system elements here.
Document templates
All the workflow's document templates that can be used in steps of the type document from template are displayed here. You can use a where-used list to determine the steps in which a document template is used used.
Workflow Wizards
All Workflow Wizards that you can use in the definition of your workflow are displayed here.
T Teamworking ki
Here you can search for steps by selected criteria. The result is displayed graphically in the workflow area.
WORKFLOW BUILDER
Navigation
The workflow steps are displayed here according to the workflow definition display. You can go directly to the relevant step definition from the list. All messages generated in where where-used used lists and workflow tests are displayed here. Double-clicking on a message takes you to the relevant step definition. This displayed which workflow is loaded in which definition, the status of the respective workflow, and the version number of this workflow in the original system
Messages
Information
WORKFLOW BUILDER
CALLING THE WORKFLOW BUILDER
Direct Start
Tools Business Workflow Development Definition tools Workflow Builder . If you start the Workflow Builder from a screen for processing or displaying a multistep task, choose Workflow Builder on the tab page Basic Data. The active version of the workflow definition is loaded. If there is no active version, the version with the highest version number is loaded. To call another version of the workflow definition, choose Goto Workflow Builder Choose version in the task definition. This takes you to a dialog box in which you can choose a version of the workflow definition.
WORKFLOW BUILDER
WORKFLOW BUILDER
Maintenance of Activities
At runtime, an activity is represented with a work item of one of the following types:
Dialog work item if the activity references a task with dialog. Background work item if the activity references a task processed by the system without dialog. Workflow work item if the activity represents a workflow.
WORKFLOW BUILDER
Maintenance of Mail Transmission You use this step type to send a mail to different recipients. You define the text and subject of the mail when defining the step. Y can use variables You i bl i in th the t text, t which hi h are fill filled d from f the th task t k container at runtime. This step type replaces the wizard Include "Send mail". The system creates a task automatically automatically, which sends the mail mail. The text to be sent is stored with the task. The system creates the variables used within the step definition in the task container and defines a binding from the workflow container to the task container for them
WORKFLOW BUILDER
Maintenance of Form Steps
This step type enables you to display or process the data in a container element of the workflow container. The container element must refer to a structure whose fields are used in the form. A form can be generated automatically by the workflow system. You can process the form generated to adapt it to suit your individual requirements The maintenance of a form step is spread across several tab pages. You can process its it properties ti on them, th such h as: Data for deadline monitoring Outcomes Responsible p agents g At runtime, a form step is represented by a dialog work item
WORKFLOW BUILDER
Maintenance of User Decision In a user decision, the recipients receive the task description together with the possible decision options during execution. You can use a user decision d i i in i the th following f ll i situations: it ti
Only one of several possible alternatives can be processed in the workflow from a business point of view at execution time. A decision about the p progression g of the workflow must be made in dialog with a user. An instruction (= user decision with only one decision option) is required to continue the workflow. For approval and release steps, possibly in connection with a secondary method (the latter is possible without the application having to cater for these functions).
WORKFLOW BUILDER
Maintenance of Documents from a Template p You use this step type to create documents of various PC applications and process them within the workflow. The work item recipient creates the document based on a document template, which hi h can also l contain i container i elements l of f the h workflow kfl container The maintenance is spread across several tab pages. You can process properties on them, them such as:
Template selection Responsible agents Deadline monitoring g
At runtime, this step is represented by a dialog work item in the Workflow Inbox of its recipients.
WORKFLOW BUILDER
Maintenance of Conditions You use a condition in a workflow definition if:
At execution time, only one of two possible alternatives can be processed during the workflow, from a business point of view. The workflow system can make a decision based on the contents of the workflow container without user interaction
The system inserts a step of the type condition into the workflow definition The system adds a branch to the workflow definition for definition. each outcome. To ensure the consistency of the block structure, all branches created are brought together before the next step of the workflow definition
WORKFLOW BUILDER
Maintenance of Multiple p Conditions You use a multiple condition in a workflow definition if:
At execution time, only one of several possible alternatives can be processed during the workflow, from a business point of view. The workflow system can make a decision based on the contents of the workflow container. The decision can be formulated based on a comparison between an expression p from workflow container and a finite amount of comparison values (constants, expressions). The system inserts a step of the type condition into the workflow definition. The system adds a branch to the workflow definition for each outcome. To ensure the consistency of the block structure, all branches created are brought together before the next step of the workflow definition
WORKFLOW BUILDER
Maintenance of Event Creators Use an event creator if you want to publish an event from a workflow. This event can be used as follows:
To start other workflows or tasks. For this, the event must be entered as a triggering event for the relevant workflow or task. As a terminating event of a task. For internal communication and synchronization
WORKFLOW BUILDER
Maintenance of Wait Steps The following shows possible uses of a wait step in a workflow definition:
To suspend d the h entire i execution i of f the h workflow kfl until il a defined d fi d event has occurred. To wait for an event in a parallel processing branch, which renders processing in the other branches unnecessary
WORKFLOW BUILDER
Maintenance of Container Operations You use a container operation to change a container element of the workflow kfl container i at runtime i Maintenance of Process Controls Y use this You hi step type to complete l or cancel l other h work k items i of f the current workflow or the workflow itself at runtime
WORKFLOW BUILDER
Maintenance of Until Loops p You use an UNTIL loop in a workflow definition if:
At execution time with one of two possible alternatives, the workflow is to "jump back" to process sections of the workflow d fi i i again. definition i The workflow system can make a decision based on the contents of the workflow container
Maintenance of While Loops You use the WHILE loop in a workflow definition if:
At execution time, only one of several possible alternatives can be processed in the workflow from a business point of view, and then h the h comparison i is i to be b performed f d again. i The workflow system can make a decision based on the contents of the workflow container. The decision can be formulated based on a comparison p between an expression from workflow container and a finite amount of comparison values (constants, expressions).
Delivering Solution Excellence and Innovation
WORKFLOW BUILDER
Maintenance of Forks You use a fork in a workflow definition when the business process can be continued by several users at the same time. You can also configure fi th the f fork ki in such h a manner th that t not t all ll branches b h have h to t be b processed .
Events in Workflow
EVENTS
An event is created from any application program and published system-wide. Any number of receivers can react to the event Events that you want to use must be defined as components of an object type. Events are published without the creating application knowing whether a receiver reacts to them. The event manager checks whether there are active linkages for the published event
EVENTS
An event can be used as follows in SAP Business Workflow:
As a triggering event of a task or a workflow.
When the event occurs, the task or workflow is started as a response. When the event occurs, the task is terminated as a response.
In workflow definition steps of the types event creator and wait for event
If you use events only within SAP Business Workflow, the linkages required are created automatically by the workflow system. You can edit existing linkages .
EVENTS
EVENT CREATION
Events can be created in following ways :
Function Module like SWE_EVENT_CREATE Change Documents : Events are created when change documents are written General Status Management : Events creation at status changes Message Control LIS : Event creation when an exception situation occurs Business Transaction Events HR Master Data : Event creation when HR Master data changes
EVENTS
EVENT CONTAINER
The event Th t container t i contains t i the th event t parameters t as container t i elements. If you define triggering events or terminating events for a task, you can specify the binding from the event container to the task container. If you define triggering events for a workflow, you can specify the binding from the event container to the workflow container You define a binding from the workflow container to the event container in the definition of an event creator. You define a binding from the event container to the workflow container i in i the h definition d fi i i of f a wait i step. The event container contains workflow system elements as standard. You can add more container elements to the event container within object type definition in the Business Object Builder
Delivering Solution Excellence and Innovation
EVENTS
USING LINKAGES
A linkage defines the assignment of events to the event receivers interested in them The p potential receiver of an event must define the linkage. g This can be done using function modules provided or a maintenance transaction The workflow system in the form of the event manager evaluates all ll the h events created. d In I doing d i this, hi the h event manager carries i out the following steps:
EVENTS
EVENTS
Receiver Type Function Module
You can enter Y t a receiver i type t function f ti module d l for f the th linkage li k to t determine a receiver type at runtime . The interface of the receiver type function module is described in the documentation for the function module SWE_TEMPLATE_RECTYPE_FB _ _ _ . This function module can be used as a template and is stored in the function group SWE_TEMPLATE . You can enter a check function module for the linkage to decide whether the receiver function module should actually be called. The data in the event container can be used for this A receiver function module must be entered for each linkage, which executes the actual reaction to the event
Thank You