106
Module pool programming By – SUDHIR KUMAR

modulepoolprogramming-130227082317-phpapp01

Embed Size (px)

DESCRIPTION

module

Citation preview

  • Module pool programming

    By SUDHIR KUMAR

    *

    Module pool programming1Introduction2Syntax Description3Demonstration4Exercises5HelpMe

    *

    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.

    *

    Use

    user-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.

    *

    Module pool programming1PrepareMe2Syntax description 3Demonstration4Exercises5HelpMe

    *

    Developing Module pool ProgramTools 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.

    *

    Creating a ProgramCreate 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.

    *

    Program StructureModule pool program when viewed from SE80 transaction will have structure as below,

    *

    Assigning transaction codeDialog 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)

    *

    Use of ScreenScreen 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.

    *

    Screen PainterTo 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.

    *

    Developing ScreenFrom Object navigator (SE80) we can create the screen as shown, Click on Screen, right click and select create option. Now enter screen number.

    *

    Developing ScreenA 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.

    *

    Developing Screen Enter description and save. Check the screen and activate it.

    *

    Screen AttributesShort 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.

    *

    Screen AttributesScreen 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.

    SettingsHold 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.

    *

    Screen AttributesSettings

    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 AttributesNext Screen Next screen number to be displayed.

    *

    Screen AttributesOther AttributesCursor 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, SubscreensGlobal Class CL_CTMENU , methods- LOAD_GUI_STATUS, ADD_FUNCTION, ADD_MENU etc..

    *

    Screen Layout ModeThe 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.

    *

    Screen DesigningWe have learnt about creating a screen.To start screen design, click on layout button on screen.Graphical Screen painter will start loading.

    *

    Components of Layout EditorElement 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.

    *

    Screen ComponentsScreen 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.

    *

    Screen ElementsScreen elements are, Text fieldInput/Output fieldCheck boxRadio buttonPush buttonTab stripBoxSub screen areaTable controlCustom controlStatus Icon

    Each element will have unique name. Function code will be assigned for push buttons, tab titles in tab strip controls, Input/output fields with the "Dropdown box" attribute. Each element will have its position on screen, visible/definite length, mode of display etc.

    *

    Screen ElementsPush 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.

    *

    Screen ElementsOnce screen is designed, it should be saved and checked for errors and activated. Screen looks as below,

    *

    Testing ScreenScreen can tested by executing F8 or click on button

    *

    Testing Screen

    *

    Flow LogicDefault flow logic for any screen is generated as shown below,

    *

    Menu PainterIn 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.

    *

    Menu PainterNow 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

    *

    Menu PainterUncomment the line SET PF-STATUS 'xxxxxxxx'. and replace 'xxxxxxxx with name STATUS_400.

    Click on STATUS_400. Click Yes on the pop-up.

    *

    Menu PainterEnter description and choose the status type as Normal screen which is default.

    *

    Menu PainterClick on to expand the menu bar, application toolbar and function keys. System and Help are default in menu bar

    *

    Creating Menu barTo 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,

    *

    Creating Application Tool barApplication tool bar can also be created in same way as menu bar.

    *

    Assigning function keysWe 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.

    *

    ExecutionWe 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.

    *

    ExecutionOutput as below, New Menu is added, Find Item in Application tool bar, Save, Back & Print button on standard tool bar enabled.

    *

    More on Flow LogicFlow 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.

    *

    More on Flow LogicEach 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.

    *

    Keywords supportedKeywords supported by flow logic events are as below,

    KeywordFunctionMODULECalls a dialog module in an ABAP programFIELDSpecifies the point at which the contents of a screen field should be transportedONUsed in conjunction with FIELDVALUESUsed in conjunction with FIELDCHAINStarts a processing chainENDCHAINEnds a processing chainCALLCalls a sub screenLOOPStarts processing a screen tableENDLOOPStops processing a screen table

    *

    PBO EventBy 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

    *

    PBO EventMenu 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.

    *

    PBO EventTitle BarTo 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.

    *

    PAI EventDefault 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.

    *

    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

    *

    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.

    *

    IncludesTo create include right click on object name, select Include from the Create menu.

    *

    IncludesWe 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.

    *

    Message StatementThe 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.

    *

    Message TypesS:success

    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.

    *

    MessagesSuccess 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.

    *

    MessagesAbend 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.

    *

    MessagesERROR 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.

    *

    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 .

    *

    FIELD with select statementScreen 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

    *

    Error for invalid inputError for Purchase order when invalid number is entered.

    *

    FIELD with Values CheckThe 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.

    *

    Values optionPO_NO with values 1 and 100.

    *

    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.

    *

    Cursor PositionBy 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 .

    *

    Screen commandsThe 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 .

    *

    Screen commandsLEAVE 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.

    *

    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

    *

    ON INPUT

    With 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.

    *

    ON REQUEST

    With 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.

    *

    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.

    *

    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.

    *

    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.

    *

    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.

    *

    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.

    *

    Modifying Screen FieldsAll 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.

    *

    Modifying Screen Fields

    You can dynamically modify the following attributes of a field:ACTIVE REQUIREDINPUTOUTPUTINTENSIFIEDINVISIBLELENGTHDISPLAY 3DVALUE 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.

    *

    Logical Unit of Work (LUW)

    LUW 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. Screen2Screen1Screen3SELECT ASELECT BUPDATE ADELETE BDatabaseTransactionDatabaseTransactionDatabaseTransaction

    *

    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.

    *

    LUWSince 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.

    *

    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.

    *

    SAP LocksConsider 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.

    *

    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.

    *

    Table ControlYou 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.

    *

    Table ControlSample 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.

    *

    Tab Strip ControlsUse 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.

    *

    Tab Strip Control componentsComponents of tab strip control

    Tab Title Title of the component to which user can navigate. They are push buttons.

    *

    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 .

    Tab Strip Control components

    *

    Step loopsStep 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.

    *

    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.

    *

    Step loopsTo 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.

    *

    SubscreenA 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.

    *

    Creating SubscreenIn 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

    *

    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.

    *

    Creating SubscreenUser can design in the subscreen area as below,

    *

    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.

    *

    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.

    *

    Call subscreen in PAIIf 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.

    *

    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.

    *

    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.

    *

    Subscreen RestrictionsThe 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-STATUSSET TITLEBARSET SCREENLEAVE TO SCREENCALL SCREEN

    Note: These ABAP/4 statements in a subscreen will pass a syntax check; however, they will result in runtime errors.

    *

    Additions with ABAP OOPSEnjoy 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)

    *

    Process on HelpThis 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 .

    *

    Process on ValueThis 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 .

    *

    Module pool programming1PrepareMe2Syntax Description3Demonstration4Exercises5HelpMe

    *

    DemonstrationPlease refer the attached document for demo example.

    Demo Example in IDES system

    1. Demo example has screen designing and Menu painter used.

    2. All 4 events (PAI, PBO, POH, and POV) are implemented.

    3. Exit-command is used.

    4. Table control and step loop used.

    Execute the transaction code Z_MOD. Screen below will be displayed.

    Here there are 3 menu options- NewMenu, and SAP provided default menus (System and Help). NewMenu is user defined menu.

    Click F1 button on the Purchase Order input field. F1 user help will be displayed as shown below.

    User will enter purchase order number in this screen.

    Enter as 12345 and click on either of the buttons (Details/Next/Get PO Type/From NewMenu option Display PO Type/ Enter key).

    An error message will be displayed as Invalid Purchase Order.

    User can enter purchase order number or can select using F4 help provided.

    On clicking F4 help for PO number, list of PO available will be displayed and user can select from this list.

    On entering a valid PO number, we can perform the below operations,

    1. On clicking Details button, Company and PO Doc Category will be displayed in the subscreen area.

    2. On clicking Get PO Type button or from NewMenu Display PO Type option, PO Doc Type will be displayed.

    3. On the screen by default radio button Display in Table control is marked. On click on Next button or selecting option Next from NewMenu will display next screen as below,

    Here PO number, item number and company code will be displayed in table control. On click on Back function key user will be directed to previous screen.

    4. Click on radio button Display in Step loop and click on Next button.

    Here the function keys back, cancel and exit are active. On click on Back and cancel will take the user to initial PO screen. Click on exit will leave on SAP main screen.

    Click on Details

    *

    Module pool programming1Introduction2Syntax Description3Demonstration4Exercises5HelpMe

    *

    ExercisesPlease refer the attached documents for hands-on.Exercise 1 This covers input/output, radio button, table control, screen navigation, flow logic events, Menu painter.

    Exercise 2 This covers tab strip, subscreen, table control, 4 flow logic events, screen navigation, menu painter.

    First screen

    User will enter Sales Order no (VBAK_VEBLN) on the screen. Provide F4 and F1 help for sales order no. Also validate the sales order against table VBAK and display appropriate error message if order is invalid.

    Design a Tab strip with tab titles as Sales Details and Items.

    Sales Details and Items will be two sub screens to be designed.

    Activate Back function key using Menu painter. Clicking on Back should navigate user to SAP main screen.

    Sales Details Subscreen

    All the fields are taken from VBAK table based on sales order number. Field names are as below,

    Sold to party (VBAK-KUNNR)

    SD doc category (VBAK-AUART)

    Sales Org (VBAK-VKORG)

    Distribution channel (VBAK-VTWEG)

    Division (VBAK-SPART)

    Items Subscreen

    Here a table control will be displayed as below,

    Item

    Material

    Order Qty

    10

    1000345

    10

    20

    1003456

    25

    30

    12345

    40

    Save button at the bottom of table control.

    Item and material are non-editable field. On double clicking on any material user should navigate to Material screen. Material screen design is given below.

    Order Qty is an editable field. User can change the Qty and on save button click qty should get saved.

    If no values for quantity is changed and user clicks on save a information pop up with message No changes done should be displayed.

    Fields are from VBAP table.

    Sales doc item (VBAP-POSNR)

    Material (VBAP-Matnr)

    Order Qty (VBAP-KWMENG)

    Material Screen-

    Here material related information will be displayed.

    Material no (VBAP-MATNR)

    Material description (MAKT-MAKTX)

    Plant (MARC-WERKS)

    All fields should be non-editable.

    Back function key has to be active in Menu bar. On click on Back user should navigate to Items subscreen.

    Sold to party

    SD doc

    Category

    Sales Org

    Dis. Channel

    Division

    Save

    Material

    Description

    Plant

    Purchase Order entry screen -

    Use will enter PO number.

    F4 help for PO number has to be provided.

    Po number should be validated before further processing.

    There will be 3 radio buttons for Delivery Details, Address and Line item details. At any time only one radio button has to be checked.

    Also create a menu bar called PO Menu using Menu Painter.

    PO Menu should have below options

    Next

    Back

    Also provide a button on tool bar as Process. This will have the same functionality as Next button and Next option from Menu.

    Back will navigate to SAP main sceen.

    Delivery Details Screen-

    Activate function keys back and Cancel.

    Click on Back should navigate to Purchase Order Entry screen.

    Click on Cancel should navigate to SAP main screen.

    Filed selection is as below,

    Payment terms- EKKO-ZTERM

    Discount days EKKO-ZBD1T

    Inco terms EKKO-INCO1

    Currency EKKO-WARES

    Exchange rate EKKO-WKURS

    Address Details-

    Get the address of PO from ADRC table. Select data from ADRC table based on Address number ADRNR from EKKO table for the PO. All fields should be non-editable.

    Provide back and cancel function keys. Back should navigate user to Purchase Order Entry screen.

    Click on Cancel should navigate to SAP main screen.

    Provide a button Delivery Details on Tool bar. Clicking on this should navigate user to Delivery details screen.

    Street ADRC-STREET

    Location ADRC-LOCATION

    City ADRC-CITY1

    City Code ADRC-CITY_CODE

    Country ADRC-COUNTRY

    Line Items Screen-

    Here display PO line item number EKPO-EBELN

    PO Quantity EKPO-MENGE

    Net price EKPO-NETPR in a step loop.

    Provide back and cancel function keys. Back should navigate user to Purchase Order Entry screen.

    Click on Cancel should navigate to SAP main screen.

    Provide a button Delivery Details and Address Details on Tool bar.

    Clicking on Delivery Details should navigate user to Delivery details screen.

    Click on Address details should navigate to Address screen.

    Purchase Order

    Delivery Details

    Address Details

    Line Items

    Next

    Delivery Details

    Payment Terms

    Discount Days

    Inco Terms

    Currency

    Exchange Rate

    Address Details

    Street

    City

    Country

    City code

    Location

    Line Item Details

    Step loop with fields mentioned above.

    *

    Module pool programming1Introduction2Syntax Description3Demonstration4Exercises5HelpMe

    *

    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.

    Module pool programs are also called as dialog programs, Online programs or transactionsThese programs are a collection of screens, their Flow Logic, and the code within the main ABAP program.

    The term screen refers to the actual, physical image that the users sees.

    The term flow logic refers to the code behind the screens (i.e., the logic that initializes screens and responds to a users requests on the screens). Each screen has its own Flow Logic.

    The term dynpro (dynamic program) refers to the combination of the screen and its Flow Logic.

    Menu will also have user interface for ABAP programs. Sample code:loop at screen. if screen-name = 'GV_OBJ_ID'. screen-input = 1. modify screen. endif.endloop.

    This will enable the screen field GV_OBJ_ID for input. SCREEN is an internal table provided by SAP.