Transcript of Module pool programming
- 1. Module pool programming By SUDHIR KUMAR
- 2. Module pool programming 1 Introduction 2 Syntax Description
3 Demonstration 4 Exercises 5 HelpMe 2
- 3. Purpose For performing any kind of task in SAP R/3 system, a
transaction is used. SAP provides a standard set of transactions to
manipulate data in the system. But sometimes, the need to create a
customer specific transaction arise due to following reasons :
Standard SAP may not support that task. A particular transaction
needs to be customized to suit the customer requirements . A
transaction is defined as a sequence of dynpros(sap term for
screens) having input and output fields and corresponding
processing logic behind them to perform particular task. 3
- 4. Useuser-friendly user interface.format and consistency
checks for the data entered by the user.an easy way of correcting
wrong entries.access to data by storing it in the database. 4
- 5. Module pool programming 1 PrepareMe 2 Syntax description 3
Demonstration 4 Exercises 5 HelpMe 5
- 6. Developing Module pool Program Tools used: ABAP Editor(SE38)
To maintain main ABAP program. Program contains data declarations
and modules. Screen Painter(SE51) used to maintain components of
screen. Menu Painter(SE41) Used to design GUI. Maintain
Transaction(SE93) To create transaction code for program. Object
Navigator (Repository Browser)(SE80) - You should always use the
object navigator for online programs because you will be able to
see the hierarchy. From this hierarchy list, you will be able to
branch to the Screen Painter, ABAP Editor, Menu Painter, and ABAP
Dictionary. 6
- 7. Creating a Program Create a program using transaction SE38.
Program name as Z_MODULE_TRAINING. Program type should be Module
Pool. Save and activate the program. Use object navigator(SE80) to
further develop the object. 7
- 8. Program Structure Module pool program when viewed from SE80
transaction will have structure as below, 8
- 9. Assigning transaction code Dialog program is executed using
transaction code. We can not execute this like normal report using
execute or pressing F8 button. Transaction is created using SE93
transaction or from object browser by right clicking on
transaction, click on create. Give name and description and select
the radio button Program and screen (dialog transaction) 9
- 10. Use of Screen Screen is a interface between user and SAP.
Using screen user can provide input to program and in turn program
will display result on screen. Screen is made up of screen elements
such as text box, input/output field, check box, radio button etc.
One of the strength is that screen elements are combined with the
ABAP dictionary to allow check the consistency of the data that
user has entered. 10
- 11. Screen Painter To start the Screen Painter, choose the
corresponding pushbutton on the initial screen of the ABAP
Workbench or enter Transaction SE51. Best practice is to go to
transaction SE80, enter program name and you can perform one of the
below, 1. Create new screens. 2. Test an existing screen. 3. Create
new components for an existing screen . Screen is always created
for an existing program. 11
- 12. Developing Screen From Object navigator (SE80) we can
create the screen as shown, Click on Screen, right click and select
create option. Now enter screen number. 12
- 13. Developing Screen A screen number must be unique and up to
4 numbers long. All screen numbers above 9000 are reserved for Saps
customers. The number 1000 is reserved for table screens and report
selection screen. Usual practice is to have screen numbers starting
with 100 then continue as 200, 300. Enter screen number and click
on create. 13
- 14. Developing Screen Enter description and save. Check the
screen and activate it. 14
- 15. Screen Attributes Short description Describes screen
purpose Original language Default logon language Package Identifies
the package with which screen is saved Last changed on/by Date
& time screen is last changed Last generation Date & time
screen is last generated. 15
- 16. Screen Attributes Screen Type Normal Default setting
Subscreen To indicate the screen as a subscreen Modal dialog box
used to display details in a dialog box. Used for data input,
confirmation/error/help messages. Selection screen Identifies
selection screen. The system sets this attribute automatically.
Settings Hold data On checking this, system can hold entries made
on the screen at runtime. System automatically displays this data
if the user calls the particular screen again. 16
- 17. Screen Attributes Settings Switch off runtime compress On
setting this option, the screen is not compressed at runtime. If
you hide fields dynamically at runtime, empty lines may appear on
the screen and the processing may take longer time. Template non
executable If this attribute is set: The screen cannot be generated
or activated and therefore cannot be executed. The screen is not
included in the screen consistency checks during the extended
program check. This attribute is primarily for internal use by SAP.
Hold scroll position On setting the attribute, the scroll position
is retained when the user returns to the screen after processing
another screen. Without application tool bar To suppress the
display of the application toolbar belonging to the current program
status. Other Attributes Next Screen Next screen number to be
displayed. 17
- 18. Screen Attributes Other Attributes Cursor position
Identifies the screen element that contains the cursor when a
screen is first displayed. If you leave this field blank, the
system uses the first screen field that can accept input. Screen
group Specifies a four-character identifier of a group of
associated screens. Line/Columns Occupied Specifies the size of the
screen area currently occupied with screen elements Maintained Size
of the screen in rows/columns. Context menu It will hold a routine
name required to set up the context menu in the program. This
routine connects the screen (elements) from the Screen Painter to
the context menu of the program. Input/output fields , Text fields,
Table controls, Subscreens Global Class CL_CTMENU , methods-
LOAD_GUI_STATUS, ADD_FUNCTION, ADD_MENU etc.. 18
- 19. Screen Layout Mode The Screen Painter has a layout editor
that you use to design your screen layout. It works in two modes:
Graphical mode Drag and drop interface is used, similar to a
drawing tool. Alphanumeric mode Keyboard and menus are used for
designing. Both modes offer the same functions but use different
interfaces. Graphical mode of screen designing is commonly used.
19
- 20. Screen Designing We have learnt about creating a screen. To
start screen design, click on layout button on screen. Graphical
Screen painter will start loading. 20
- 21. Components of Layout Editor Element palette Used for
creating screen elements. These can be drag & dropped on
screen. Work Area Screen design is done in this area. Element bar
screen element attributes appear in this line. You can also change
these attributes in the corresponding field. 21
- 22. Screen Components Screen element properties can be seen in
detail by double clicking on the element. Properties of an element
can be set here, such as variable length, F4 help, input/output,
mode of display etc. Best practice is to define screen elements by
adopting the corresponding field from the ABAP Dictionary. However,
you can also use field descriptions that you defined in your
program. To do this you must generate the program first. 22
- 23. Screen Elements Screen elements are, Each element will have
unique name. Text field Function code will be assigned for push
buttons, tab titles in tab strip Input/Output field controls,
Input/output fields with the "Dropdown box" attribute. Check box
Each element will have its position on screen, visible/definite
length, mode of display etc. Radio button Push button Tab strip Box
Sub screen area Table control Custom control Status Icon 23
- 24. Screen Elements Push Button Can be placed on screen by drag
& drop from Element palette. To set the properties, double
click on it. Each screen element should have unique name. In
addition to that push button will have text and function code
assigned to it. 24
- 25. Screen ElementsOnce screen is designed, it should be saved
and checked for errors and activated. Screen looks as below,
25
- 26. Testing ScreenScreen can tested by executing F8 or click on
button 26
- 27. Testing Screen 27
- 28. Flow Logic Default flow logic for any screen is generated
as shown below, 28
- 29. Menu Painter In all programs GUI consists of a menu bar, a
standard toolbar, an application toolbar and title bar. A programs
GUI is created in Menu Painter. To Create a Menu for a screen, in
flow logic uncomment MODULE STATUS_0400. in PBO event PROCESS
BEFORE OUTPUT. MODULE STATUS_0400. PROCESS AFTER INPUT. * MODULE
USER_COMMAND_0400. 29
- 30. Menu Painter Now double click on STATUS_0400. A pop up
window will appear. Click on Yes. Module will be created as below,
*&---------------------------------------------------------------------*
*& Module STATUS_0400 OUTPUT
*&---------------------------------------------------------------------*
module STATUS_0400 output. * SET PF-STATUS xxxxxxxx. * SET TITLEBAR
xxx. endmodule. " STATUS_0400 OUTPUT 30
- 31. Menu Painter Uncomment the line SET PF-STATUS xxxxxxxx. a
nd replace xxxxxxxx with name STATUS_400. Click on STATUS_400.
Click Yes on the pop-up. 31
- 32. Menu Painter Enter description and choose the status type
as Normal screen which is default. 32
- 33. Menu Painter Click on to expand the menu bar, application
toolbar and function keys. System and Help are default in menu bar
33
- 34. Creating Menu bar To create a user defined menu enter the
name of the menu and double click on it. We can define options for
the menu here as below, 34
- 35. Creating Application Tool bar Application tool bar can also
be created in same way as menu bar. 35
- 36. Assigning function keys We can assign code to existing
function keys. Only keys for which code is assigned will be active.
We can see this when the menu painter is executed. 36
- 37. Execution We can test the menu painter by clicking on F8
key or execute button Enter a screen number and title if you want
to simulate a whole screen. If you do not enter a screen number,
the system simulates the status using an empty test screen. 37
- 38. Execution Output as below, New Menu is added, Find Item in
Application tool bar, Save, Back & Print button on standard
tool bar enabled. 38
- 39. More on Flow Logic Flow logic refers to code behind the
screens. It is the code that processes a screen. Flow Logic
commands are different than ABAP commands (e.g., IF ENDIF is not
valid in Flow Logic). Dynamic Processor (DYNPRO) controls the flow
logic and prepares data to be displayed on the screen. 39
- 40. More on Flow Logic Each screen has its own Flow Logic which
is divided into four main events: PROCESS BEFORE OUTPUT (PBO) -
event processed before the screen is displayed. PROCESS AFTER INPUT
(PAI) - event processed after the user has invoked a function code
(e.g., clicked on a pushbutton) or pressed the Enter key. Process
on Value Request (POV) - Triggered when the user requests field
help (F1) Each screen must be generated. If you make a change to
any component of a screen, the screen must be re-generated before
execution. 40
- 41. Keywords supported Keywords supported by flow logic events
are as below, Keyword Function MODULE Calls a dialog module in an
ABAP program FIELD Specifies the point at which the contents of a
screen field should be transported ON Used in conjunction with
FIELD VALUES Used in conjunction with FIELD CHAIN Starts a
processing chain ENDCHAIN Ends a processing chain CALL Calls a sub
screen LOOP Starts processing a screen table ENDLOOP Stops
processing a screen table 41
- 42. PBO Event By default the module created in PBO event will
be like MODULE STATUS_ Ex:-MODULE STATUS_0100. This module will be
processed before the screen is displayed. By default this module
will be commented. To use this uncomment and double click on it to
get the module created.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
module STATUS_0100 output. * SET PF-STATUS XXX. * SET TITLEBAR xxx.
endmodule. " STATUS_0100 OUTPUT 42
- 43. PBO Event Menu bar and title bar can be set in this module.
Menu Bar- To set menu bar uncomment the SET PF_STATUS and give a
name to status as , SET PF-STATUS STATUS100. Double click on
STATUS100 and click yes to create GUI status. 43
- 44. PBO Event Title Bar To assign a title uncomment SET
TITLEBAR and give a name as, SET TITLEBAR TITLE100. Double click on
TITLE100 and click yes to create GUI title. Enter title as below
and click on , save and activate. Once all the modules in the PBO
block are processed, the system copies the content of the fields in
the ABAP work area to their corresponding fields in the screen work
area. 44
- 45. PAI Event Default module in PAI event will be MODULE
USER_COMMAND_. Ex:- MODULE USER_COMMAND_0100. This event is
triggered once the user invokes function code or presses Enter key
on the screen. System variable SY-UCOMM will hold the function code
assigned to the screen elements (push button, radio button, check
box etc). Within the above module code has to written to branch to
group of code based on the function code from SY-UCOMM. The system
copies the contents of the fields in the screen work area to their
corresponding fields in the ABAP work area once user clicks Enter
key on screen or any function code is invoked. 45
- 46. PAI Event- Sample Code
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN ENT. SELECT
ebeln ebelp bukrs INTO CORRESPONDING FIELDS OF TABLE it_po FROM
ekpo WHERE ebeln = po_no. WHEN BCK. LEAVE TO SCREEN 0. ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT 46
- 47. Includes To have structured way of code it is best practice
to have includes. There should be a TOP include which will have the
data declarations. Include for PBO modules, include for PAI
modules. Include for POV and POH modules if any. 47
- 48. Includes To create include right click on object name,
select Include from the Create menu. 48
- 49. Includes We can gave the include names as Z_TOP, Z_PBO,
Z_PAI. This will help to understand which modules are covered in
each include. Each include program will insert a include statement
in the main program. 49
- 50. Message Statement The MESSAGE statement is used to issue
user messages. Syntax is MESSAGE [WITH ]. t Message type nnn
Message Number WITH This is optional. It is needed if variables are
used in a message. A message can contain up to four variables,
indicated with an ampersand (&) in the message text. We can
code the Message statement in the PAI event. 50
- 51. Message Types S:success I I: information A: abend X: exit
W: warning E: error X The message type determines where the message
is displayed and what action the user can or must take on the
current screen. 51
- 52. Messages Success message is displayed at the bottom of the
screen. If you have next screen then the message will be displayed
at the bottom of the next screen. Information message is displayed
in a dialog box in same screen. After pressing Enter key on dialog
box user will be taken to next screen. The user is not restricted
from going on to the next screen. 52
- 53. Messages Abend message is displayed on the current screen
in a dialog box. The user cannot make any changes to the values on
the current screen. After pressing the Enter key on the dialog box,
transaction will be terminated. Exit message is identical to the
ABEND message except that the transaction is terminated with a
short dump instead of the message in a dialog box. WARNING message
is displayed at the bottom of the current screen. On pressing the
Enter key on the current screen, the user will be taken to the next
screen even if no changes were made on the current screen . Thus
user is not restricted from going on to the next screen. 53
- 54. Messages ERROR message is displayed at the bottom of the
current screen. The user must make changes to the values on the
current screen. On pressing the Enter key on the current screen,
the user will be taken to the next screen only if the appropriate
corrections were made on the current screen. If no corrections were
made, the error message would be redisplayed at the bottom of the
current screen. When a warning or error message is triggered the
system will stop at current screen, prompting the user to make
corrections. However the input fields on the screen will be
disabled for input. 54
- 55. Handling Error messagesThere are 2 ways to issue
error/warning messages. Issue an error or warning message with the
Flow Logic SELECT statement. Define valid values for a screen field
with the Flow Logic VALUES statement.FIELD statement is a Flow
Logic command, not an ABAP command.The purpose of the FIELD
statement is to keep a single screen field open for input after an
error or warning message is issued.FIELD statement is used in PAI
event.Syntax is: FIELD MODULE . 55
- 56. FIELD with select statement Screen field can be validated
against entry in database table. To validate Purchase order number
in PAI module, PROCESS AFTER INPUT. field PO_NO module PO_CHECK.
MODULE USER_COMMAND_0100. Module PO_CHECK is as below, module
po_check input. data: lv_ebeln type ekko-ebeln. select single ebeln
into lv_ebeln from ekko where ebeln = PO_NO. if sy-subrc ne 0.
message e003(Z6). endif. endmodule. " po_check INPUT 56
- 57. Error for invalid input Error for Purchase order when
invalid number is entered. 57
- 58. FIELD with Values Check The Flow Logic VALUES statement
defines a set of valid values for the screen field specified in the
FIELD statement. If the value entered in this field is not in the
valid set, an error message will be issued by the system. PROCESS
AFTER INPUT. field PO_NO values (1, 100). This indicates PO_NO can
take input as either 1 or 100. For any other value system will
through error and the field will be open for input. With VALUES
parameter for field, we can get a list of possible values by
clicking on the drop-down arrow of the screen fields or pressing
the F4 key. It will list the values mentioned. 58
- 59. Values option PO_NO with values 1 and 100. 59
- 60. CHAIN Statement To keep multiple screen fields open for
input after an error or warning message is displayed, you need to
use the CHAIN and ENDCHAIN Flow Logic commands. These statements
group the FIELD statements and the MODULE statements together. The
basic syntax of these statements is: CHAIN. FIELD: , ,... MODULE .
FIELD: , ,... MODULE . ... ENDCHAIN. If an error or warning message
is issued in , all the screen fields listed in the FIELD statements
will be open for input. 60
- 61. Cursor Position By default, the cursor will be positioned
in the first field open for input on a screen. Cursor position can
be changed in two ways 1. By setting the cursor position in PBO
event- Syntax - SET CURSOR FIELD Cursor will be placed on the
screen field mentioned. 2. Cursor position in screen attributes-
Mention the field name where cursor to be placed on screen in
cursor position attribute . 61
- 62. Screen commands The LEAVE SCREEN statement ends the current
screen and calls the subsequent screen. When the system encounters
the SET SCREEN ABAP statement, it temporarily overrides the Next
Screen attribute with this and the PAI processing continues. After
all PAI modules are executed, the system goes to the PBO event of .
62
- 63. Screen commands LEAVE TO SCREEN ABAP statement, terminates
the screens PAI event and immediately goes to the PBO of . The
LEAVE TO SCREEN statement performs the functionality of two
statements: SET SCREEN and LEAVE SCREEN. CALL SCREEN ABAP
statement, temporarily suspends the current screens PAI processing
and immediately goes to the PBO event of . When control returns
back to the calling screen, its PAI processing will resume. 63
- 64. More on PAI modules All modules listed in the PAI event get
executed from top to bottom. We can control the execution of the
modules using additions to MODULE. Additions are, ON INPUT ON
REQUEST AT EXIT-COMMAND AT CURSOR-SELECTION 64
- 65. ON INPUTWith the ON INPUT addition to the MODULE statement,
a module will be executed only if the specified fields value is not
equal to the initial value appropriate to its data type Ex- blanks
for character fields and zeroes for numeric fields.The basic syntax
for this conditional execution Flow Logic command is: FIELD MODULE
ON INPUT. The PAI will be executed only if the value in is not
equal to its initial value. The ON INPUT addition must be used with
a FIELD statement because this condition depends on the value of a
particular field.If you want to conditionally execute a module that
is coded within a CHAIN ENDCHAIN, you must use ON CHAIN-INPUT.
65
- 66. ON REQUESTWith the ON REQUEST, a module will be executed
only if a value has been entered in the specified field since the
screen was displayed. The basic syntax for this conditional
execution Flow Logic command is: FIELD MODULE ON REQUEST. The PAI
will be executed only if a value was entered in since the screen
was displayed. The ON REQUEST addition must be used with a FIELD
statement because this condition depends on the value of a
particular field.If you want to conditionally execute a module that
is coded within a CHAIN ENDCHAIN, you must use ON CHAIN-REQUEST.
66
- 67. AT EXIT-COMMAND With the AT EXIT-COMMAND addition to the
MODULE statement, a module will be executed only if the user
invokes a function code with the E function type. Function type
assigning is explained in slide 73. The basic syntax for this
conditional execution Flow Logic command is: MODULE AT
EXIT-COMMAND. 67
- 68. AT EXIT-COMMAND The PAI will be executed only if the user
invokes a FUNCTION type E. The AT EXIT-COMMAND addition cannot be
used with a FIELD statement. If the user invokes a type E function
code, a module with the AT EXIT- COMMAND addition will be executed
immediately. It will be executed even before the automatic field
checks. 68
- 69. Assigning Function type Function type can be assigned for
screen buttons and for menu painter keys. In menu painter, click on
the required key. In the pop-up window select function type as E
from drop down. 69
- 70. AT CURSOR-SELECTION You can specify that a module should
only be called if the cursor is positioned on a particular screen
element. Syntax - MODULE AT CURSOR-SELECTION . The module is called
whenever the function code of the user action is CS with function
type S. The module is called in the sequence in which it occurs in
the flow logic. It does not bypass the automatic input checks.
70
- 71. AT CURSOR-SELECTION You can also combine this MODULE
statement with the FIELD statement: FIELD MODULE AT
CURSOR-SELECTION. For more than one field: CHAIN. FIELD: , ,...
MODULE AT CURSOR-SELECTION. ENDCHAIN. 71
- 72. Modifying Screen Fields All fields of the current screen
are stored in the system table SCREEN with their attributes. The
LOOP AT SCREEN statement places this information in the header line
of the system table. We can modify the attributes of the fields and
update the screen table using MODIFY SCREEN. Sample code: loop at
screen. if screen-name = GV_MATNR. screen-input = 1. modify screen.
endif. endloop. 72
- 73. Modifying Screen Fields You can dynamically modify the
following attributes of a field: ACTIVE REQUIRED INPUT OUTPUT
INTENSIFIED INVISIBLE LENGTH DISPLAY 3D VALUE HELP A field
attribute is turned on with a value of 1. It is turned off with a
value of 0. The statements LOOP AT SCREEN ... ENDLOOP define a loop
around a statement block. 73
- 74. Logical Unit of Work (LUW) Screen Screen Screen 1 2 3
SELECT A UPDATE A DELETE B SELECT B Database Database Database
Transaction Transaction TransactionLUW refers to a collection of
actions performed at the database level as a complete unit. In this
ex: LUW is selecting A and B from the database, updating A, and
deleting B. This would be the desired LUW because we would want to
rollback all changes if any of these actions failed. 74
- 75. LUW Changes will be saved (commit work) in database at the
end of third screen. An SAP LUW will end with either the COMMIT
WORK or ROLLBACK WORK statement. A logical unit consisting of
dialog steps, whose changes are written to the database in a single
database LUW is called an SAP LUW. If an SAP LUW contains database
changes, you should either write all of them or none at all to the
database. Include a database commit when the transaction has ended
successfully, and a database rollback in case the program detects
an error. 75
- 76. LUW Since database changes from a database LUW cannot be
reversed in a subsequent database LUW, you must make all of the
database changes for the SAP LUW in a single database LUW. In our
example, we need to perform UPDATE A and DELETE B at the end of
third screen. 76
- 77. SAP Locks R/3 system contain lock mechanism for SAP LUWs
called SAP Locks. Lock object is created in ABAP Dictionary. A lock
object definition contains the database tables and their key fields
on the basis of which you want to set a lock. System automatically
generates two function modules with the names ENQUEUE_ and DEQUEUE_
when a lock is generated. Locks can be set and released on
corresponding database table by calling these function modules in
program. 77
- 78. SAP Locks Consider below example, When user clicks on
change, the program locks the relevant database object by calling
the corresponding ENQUEUE function. You can release the lock by
calling DEQUEUE function when user clicks on SAVE or when user
clicks on BACK button. 78
- 79. Table Control A table control is an area on the screen
where the system displays data in a tabular form. It is processed
using a loop. To create a table control, drag & drop table
control from screen elements on screen painter. Give a name to
table control. Select the table definition and fields clicking on
Dictionary/Program fields object button. Each table control need to
be declared in declaration part of the program as, CONTROLS TYPE
TABLEVIEW USING SCREEN . where is the name of the table control on
a screen. 79
- 80. Table Control You must code a LOOP statement in both the
PBO and PAI events for each table in your screen. This is because
the LOOP statement causes the screen fields to be copied back and
forth between the ABAP program and the screen field. For this
reason, at least an empty LOOP...ENDLOOP must be there. 80
- 81. Table Control Sample code - PROCESS BEFORE OUTPUT. MODULE
STATUS_0100. LOOP AT it_po INTO wa_ekpo WITH CONTROL tab2 CURSOR
tab2-current_line. ENDLOOP. PROCESS AFTER INPUT. field po_no module
po_check. module exit_mod at exit-command. MODULE
USER_COMMAND_0100. loop at it_po. endloop. 81
- 82. Tab Strip Controls Use To give complex applications a
uniform structure and make it easier for users to navigate between
their components. To make the structure of the application easier
for users to learn and understand. 82
- 83. Tab Strip Control components Components of tab strip
control Tab Title Title of the component to which user can
navigate. They are push buttons. 83
- 84. Tab Strip Control components Tab title row - All tab titles
will appear in a row. Tab Page - A tab page contains a collection
of fields that logically belong together. Tab pages are implemented
using subscreens. Tab Environment - The screen environment around
the tabstrip must remain constant. When you change between tab
pages, the menus, application toolbar, and other fields outside the
tabstrip control must not change. For designing and using tab strip
controls, see Transaction BIBS . 84
- 85. Step loops Step loops are considerable less flexible than
table controls. Used to group screen elements together. A step loop
is a repeated series of loop blocks. A loop block consists of one
or more loop lines of graphical screen elements. Loop blocs can be
defined as fixed or variable. In a fixed loop, the lower limit of
the loop area always remains as originally defined. For a variable
loop, the number of repetitions is adjusted dynamically in the
screen program to suit the size of the current window. 85
- 86. Creating a Step loop Open a screen in the layout editor. In
one or more lines, create the elements you want to repeat. Select
all the elements on the desired line(s) as a group. Choose Edit
Grouping Step loop Define. Your element lines now make up a single
step loop block. The block includes the original elements with
their attributes and a predefined number of repetition blocks. Each
repetition contains a copy of the first block without attributes.
The repetition blocks are consecutively numbered, so that you can
establish a reference to a particular line. 86
- 87. Step loops To use a Step-Loop block in an online program,
you must create one work area for the Step-Loop block. To hold all
the lines of a Step-Loop block in the programs memory area, use an
internal table. Ex:-TYPES: BEGIN OF TY_REC, MATNR TTPE MARA-MATNR,
MATKL TYPE MARA-MATKL, END OF TY_REC. DATA: GT_MARA TYPE TABLE OF
TY_REC WITH HEADER LINE. For Step loop the flow logic statement
loop must be coded in both PBO and PAI event. One form of the Flow
Logic LOOP statement is; LOOP. . . . . . . ENDLOOP. 87
- 88. Subscreen A subscreen is a screen that is displayed in a
specified area of the main screen. A subscreen cannot be displayed
by itself. The subscreen displayed in the predefined area will
depend on the users request on the main screen. Subscreen is used
to vary the fields displayed on a screen. As an example: The main
screen contains the customer number, name, and a predefined area
for a subscreen. One subscreen contains customer address
information. Another subscreen contains customer bank information .
88
- 89. Creating Subscreen In main screen, In the screen layout,
place the screen element subscreen on layout. You can set the
length and width of the subscreen by double clicking on subscreen.
Provide unique name to subscreen, save and activate it. Subscreen
89
- 90. Creating Subscreen Create a subscreen Create a screen as
given in earlier slides. Screen type should be subscreen. Specify
the screen length and height as in main screen. Save the subscreen
and go to screen layout. Here subscreen are will be displayed.
90
- 91. Creating Subscreen User can design in the subscreen area as
below, 91
- 92. Call subscreen in PBO To include a subscreen in a
predefined area on the main screen, use the CALL SUBSCREEN
statement in the main screens PBO event. syntax : CALL SUBSCREEN
INCLUDING . : name of the subscreen area defined on the main
screen. This subscreen area will be the location of the subscreen.
This cannot be enclosed in single quotes. : name of the program
where the subscreen exists. 92
- 93. Call subscreen in PBO : number of the subscreen to display
in the subscreen area. The and can be literals (i.e. enclosed in
single quotes) or variables. When the CALL SUBSCREEN statement is
encountered in the main screens PBO event, the system executes the
PBO event of the subscreen. Then, the system returns to finish the
PBO event of the main screen . 93
- 94. Call subscreen in PAI If the subscreen contains any PAI
code, use the CALL SUBSCREEN statement in the PAI event of the main
screen. Syntax : CALL SUBSCREEN . The is the name of the subscreen
area defined on the main screen. This cannot be enclosed in single
quotes. The CALL SUBSCREEN statement must be used to invoke the PAI
event of the subscreen. - When the CALL SUBSCREEN statement is
encountered in the main screens PAI event, the system executes the
PAI event of the subscreen. 94
- 95. Call subscreen in PAI Then, the system returns to finish
the PAI event of the main screen. Without this CALL SUBSCREEN
statement in the PAI event of the main screen, the PAI event of the
subscreen cannot be processed by the system. If the subscreen does
not contain any PAI code, this CALL SUBSCREEN statement is not
needed in the PAI event of the main screen. In both the PBO and PAI
of the main screen, the CALL SUBSCREEN statement cannot be used
inside a LOOP or a CHAIN. 95
- 96. Main screen Flow logic Main screen flow logic for calling
subscreen. PROCESS BEFORE OUTPUT. MODULE STATUS_0100. call
subscreen SUB1 including Z_MODULE_TRAINING 0110. PROCESS AFTER
INPUT. call subscreen SUB1. MODULE USER_COMMAND_0100. 96
- 97. Subscreen Restrictions The following ABAP/4 statements
cannot be used in a subscreens PBO or PAI modules (instead, they
must be used in the main screen): SET PF-STATUS SET TITLEBAR SET
SCREEN LEAVE TO SCREEN CALL SCREEN Note: These ABAP/4 statements in
a subscreen will pass a syntax check; however, they will result in
runtime errors. 97
- 98. Additions with ABAP OOPS Enjoy SAP controls (ALV Grid , ALV
Tree, HTML controls etc) can be displayed in screen. To place these
grids we need to have screen element Custom Control placed on the
screen. Also we need to have ABAP OOPS knowledge. ( Refer package
SLIS for examples) 98
- 99. Process on Help This event is a user programmed help. If
the user presses the F1 key with the cursor is positioned in , the
will be displayed along with the data elements short text and
documentation. The only other Flow Logic statement that can be used
in the POH event is: FIELD MODULE . 99
- 100. Process on Value This event is a user-programmed help that
occurs when the user presses F4 with the cursor positioned on a
screen field. The modules specified in the subsequent FIELD
statement is called instead of the SAP help. Syntax is: FIELD
MODULE . 100
- 101. Module pool programming 1 PrepareMe 2 Syntax Description 3
Demonstration 4 Exercises 5 HelpMe 101
- 102. Demonstration Please refer the attached document for demo
example. Microsoft Word Document 102
- 103. Module pool programming 1 Introduction 2 Syntax
Description 3 Demonstration 4 Exercises 5 HelpMe 103
- 104. Exercises Please refer the attached documents for
hands-on. Exercise 1 This covers input/output, radio button, table
control, screen navigation, flow logic events, Menu painter.
Microsoft Word Exercise 2 This covers tab Document strip,
subscreen, table control, 4 flow logic events, screen navigation,
menu painter. Microsoft Word Document 104
- 105. Module pool programming 1 Introduction 2 Syntax
Description 3 Demonstration 4 Exercises 5 HelpMe 105
- 106. HelpMe Refer help.sap.com Refer Transaction code ABAPDOCU
(check in drop down ABAP User Dialogs) for documentation and
examples For screen elements and controls (table control, tabstrip)
refer transaction BIBS. Refer package SLIS for examples of ALV
grids, ALV Tree. 106