SlideShare ist ein Scribd-Unternehmen logo
1 von 106
Module pool programming

           By – SUDHIR KUMAR
Module pool programming



        1            Introduction

             2       Syntax Description

                 3   Demonstration

                 4   Exercises

            5        HelpMe
                                          2
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
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.




                                                                   4
Module pool programming



        1            PrepareMe

             2       Syntax description

                 3   Demonstration

                 4   Exercises

            5        HelpMe
                                          5
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
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
Program Structure


  Module pool program when viewed from SE80 transaction will have structure
   as below,




                                                                               8
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
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
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
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
Developing Screen



 A screen number must be unique and up to 4 numbers long.

  All screen numbers above 9000 are reserved for Sap’s
 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
Developing Screen


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




                                        14
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
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
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
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
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
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
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
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
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
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
Screen Elements

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




                                                                                                           25
Testing Screen
Screen can tested by executing F8 or click on button




                                                        26
Testing Screen




                 27
Flow Logic



  Default flow logic for any screen is generated as shown below,




                                                                    28
Menu Painter


 In all programs GUI consists of a menu bar, a standard toolbar, an application
  toolbar and title bar.
 A program’s 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
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
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
Menu Painter


  Enter description and choose the status type as Normal screen which is
   default.




                                                                            32
Menu Painter


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




                                                                             33
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
Creating Application Tool bar




  Application tool bar can also be created in same way as menu bar.




                                                                       35
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
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
Execution

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




                                                                                  38
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
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
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
PBO Event

  By default the module created in PBO event will be like
          MODULE STATUS_<screen number>
          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
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
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
PAI Event

 Default module in PAI event will be
       MODULE USER_COMMAND_<screen number>.
      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
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
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
Includes


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




                                                                                  48
Includes

  We can gave the include names as Z<Program>_TOP, Z<Program>_PBO,
   Z<Program>_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
Message Statement



  The “MESSAGE” statement is used to issue user messages.
  Syntax is MESSAGE <tnnn> [WITH <var1> <var2> <var3> <var4>].


    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
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
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
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
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
Handling Error messages


There 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 <screen field> MODULE <module name>.




                                                                                  55
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
Error for invalid input


   Error for Purchase order when invalid number is entered.




                                                               57
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
Values option

  PO_NO with values 1 and 100.




                                  59
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: <f1>, <f 2>,...
           MODULE <mod1>.
         FIELD: <g1>, <g 2>,...
             MODULE <mod2>.
         ...
      ENDCHAIN.
  If an error or warning message is issued in <module name>, all the screen
   fields listed in the “FIELD” statements will be open for input.




                                                                               60
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 <field name>
           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
Screen commands

 The LEAVE SCREEN statement ends the current screen and calls the
  subsequent screen.


 When the system encounters the “SET SCREEN <screen #>” ABAP statement, it
  temporarily overrides the “Next Screen” attribute with this <screen #> and the
  PAI processing continues. After all PAI modules are executed, the system goes
  to the PBO event of
    <screen #>.




                                                                                   62
Screen commands


  “LEAVE TO SCREEN <screen #>” ABAP statement, terminates the screen’s
   PAI event and immediately goes to the PBO of <screen #>.


  The “LEAVE TO SCREEN <screen #> statement performs the functionality of
   two statements: “SET SCREEN <screen #>“ and “LEAVE SCREEN”.


  “CALL SCREEN <screen #>” ABAP statement, temporarily suspends the
   current screen’s PAI processing and immediately goes to the PBO event of
   <screen #>. When control returns back to the “calling” screen, its PAI
   processing will resume.




                                                                              63
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
ON INPUT

With the “ON INPUT” addition to the “MODULE” statement, a module will be executed
 only if the specified field’s 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 <screen field> MODULE <module> ON INPUT.
   − The PAI <module> will be executed only if the value in
    <screen field> 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
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 <screen field> MODULE <module> ON REQUEST.

   − The PAI <module> will be executed only if a value was
     entered in <screen field> 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
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 <module> AT EXIT-COMMAND.




                                                                                    67
AT EXIT-COMMAND




    − The PAI <module> 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
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
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 <mod> AT CURSOR-SELECTION .


 The module <mod> 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
AT CURSOR-SELECTION


 You can also combine this MODULE statement with the FIELD statement:
        FIELD <f> MODULE <mod> AT CURSOR-SELECTION.


 For more than one field:
   CHAIN.
    FIELD: <f1>, <f 2>,...
    MODULE <mod> AT CURSOR-SELECTION.
  ENDCHAIN.




                                                                         71
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
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
Logical Unit of Work (LUW)



          Screen               Screen                Screen
            1                    2                     3
         SELECT A
                               UPDATE A              DELETE B
         SELECT B

                                Database               Database
          Database
                               Transaction            Transaction
         Transaction
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.




                                                                                       74
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
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
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_<lock object name> and DEQUEUE_<lock object name> when a lock
   is generated.


  Locks can be set and released on corresponding database table by calling
   these function modules in program.




                                                                                       77
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
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 <ctrl> TYPE TABLEVIEW USING SCREEN <scr>.
      where <ctrl> is the name of the table control on a screen.




                                                                                   79
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
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
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
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
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
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
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
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 program’s
   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.
                . . . <flow logic statements> . . .
           ENDLOOP.



                                                                                      87
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 user’s
   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
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
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
Creating Subscreen

  User can design in the subscreen area as below,




                                                     91
Call subscreen in PBO



 To include a subscreen in a predefined area on the “main” screen, use the “CALL
  SUBSCREEN” statement in the “main” screen’s PBO event.


 syntax : CALL SUBSCREEN <area> INCLUDING <program> <subscreen #>.

    − <area> : name of the subscreen area defined on the
      “main” screen. This subscreen area will be the
      location of the subscreen. This <area> cannot be
      enclosed in single quotes.
    − <program> : name of the program where the
      subscreen exists.




                                                                                    92
Call subscreen in PBO

     − <subscreen #> : number of the subscreen to display in
      the subscreen area.
     − The <program> and <subscreen #> can be literals (i.e.
      enclosed in single quotes) or variables.

  When the “CALL SUBSCREEN” statement is encountered in the “main” screen’s
   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
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 <area>.

     − The <area> is the name of the subscreen area
      defined on the “main” screen. This <area> 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” screen’s PAI event, the             system
   executes the PAI event of the subscreen.




                                                                            94
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
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
Subscreen Restrictions


  The following ABAP/4 statements cannot be used in a subscreen’s 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
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
Process on Help



  This event is a user programmed help.


  If the user presses the ‘F1’ key with the cursor is positioned in <screen field>,
   the <supplemental documentation> will be displayed along with the data
   element’s short text and documentation.

  The only other Flow Logic statement that can be used in the POH event is:

            FIELD <screen field> MODULE <module>.




                                                                                       99
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 <screen field> MODULE <module>.




                                                                                    100
Module pool programming


       1            PrepareMe

            2       Syntax Description

                3   Demonstration

                4   Exercises

           5        HelpMe
                                         101
Demonstration

  Please refer the attached document for demo example.




            Microsoft Word
              Document




                                                         102
Module pool programming



        1            Introduction

             2       Syntax Description

                 3   Demonstration

                 4   Exercises

            5        HelpMe
                                          103
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
Module pool programming



        1            Introduction

             2       Syntax Description

                 3   Demonstration

                 4   Exercises

            5        HelpMe
                                          105
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

Weitere ähnliche Inhalte

Was ist angesagt?

Sap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantSap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantAnkit Sharma
 
abap list viewer (alv)
abap list viewer (alv)abap list viewer (alv)
abap list viewer (alv)Kranthi Kumar
 
Introducing enhancement framework.doc
Introducing enhancement framework.docIntroducing enhancement framework.doc
Introducing enhancement framework.docKranthi Kumar
 
Introduction to ABAP
Introduction to ABAPIntroduction to ABAP
Introduction to ABAPsapdocs. info
 
SAP ABAP - Needed Notes
SAP   ABAP - Needed NotesSAP   ABAP - Needed Notes
SAP ABAP - Needed NotesAkash Bhavsar
 
Oops abap fundamental
Oops abap fundamentalOops abap fundamental
Oops abap fundamentalbiswajit2015
 
08.Abap Dialog Programming Overview
08.Abap Dialog Programming Overview08.Abap Dialog Programming Overview
08.Abap Dialog Programming Overviewsapdocs. info
 
1000 solved questions
1000 solved questions1000 solved questions
1000 solved questionsKranthi Kumar
 
Chapter 01 user exits
Chapter 01 user exitsChapter 01 user exits
Chapter 01 user exitsKranthi Kumar
 
ABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infoABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infosapdocs. info
 
Sap abap real time questions
Sap abap real time questionsSap abap real time questions
Sap abap real time questionstechie_gautam
 
How to extend an outbound i doc
How to extend an outbound i docHow to extend an outbound i doc
How to extend an outbound i docrupesh chouhan
 
Call transaction method
Call transaction methodCall transaction method
Call transaction methodKranthi Kumar
 

Was ist angesagt? (20)

Dialog programming ABAP
Dialog programming ABAPDialog programming ABAP
Dialog programming ABAP
 
Sap User Exit for Functional Consultant
Sap User Exit for Functional ConsultantSap User Exit for Functional Consultant
Sap User Exit for Functional Consultant
 
abap list viewer (alv)
abap list viewer (alv)abap list viewer (alv)
abap list viewer (alv)
 
Alv theory
Alv theoryAlv theory
Alv theory
 
Introducing enhancement framework.doc
Introducing enhancement framework.docIntroducing enhancement framework.doc
Introducing enhancement framework.doc
 
Reports
ReportsReports
Reports
 
Introduction to ABAP
Introduction to ABAPIntroduction to ABAP
Introduction to ABAP
 
SAP ABAP - Needed Notes
SAP   ABAP - Needed NotesSAP   ABAP - Needed Notes
SAP ABAP - Needed Notes
 
Oops abap fundamental
Oops abap fundamentalOops abap fundamental
Oops abap fundamental
 
08.Abap Dialog Programming Overview
08.Abap Dialog Programming Overview08.Abap Dialog Programming Overview
08.Abap Dialog Programming Overview
 
1000 solved questions
1000 solved questions1000 solved questions
1000 solved questions
 
CDS Views.pptx
CDS Views.pptxCDS Views.pptx
CDS Views.pptx
 
Chapter 01 user exits
Chapter 01 user exitsChapter 01 user exits
Chapter 01 user exits
 
Sap abap
Sap abapSap abap
Sap abap
 
ABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infoABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.info
 
Sap abap real time questions
Sap abap real time questionsSap abap real time questions
Sap abap real time questions
 
ABAP Advanced List
ABAP Advanced ListABAP Advanced List
ABAP Advanced List
 
How to extend an outbound i doc
How to extend an outbound i docHow to extend an outbound i doc
How to extend an outbound i doc
 
Call transaction method
Call transaction methodCall transaction method
Call transaction method
 
SAP Smart forms
SAP Smart formsSAP Smart forms
SAP Smart forms
 

Andere mochten auch

SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsSAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsGaruda Trainings
 
Dialog Programming Overview
Dialog Programming OverviewDialog Programming Overview
Dialog Programming Overviewsapdocs. info
 
ABAP Message, Debugging, File Transfer and Type Group
ABAP Message, Debugging, File Transfer and Type GroupABAP Message, Debugging, File Transfer and Type Group
ABAP Message, Debugging, File Transfer and Type Groupsapdocs. info
 
Open SQL & Internal Table
Open SQL & Internal TableOpen SQL & Internal Table
Open SQL & Internal Tablesapdocs. info
 
ABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection ScreenABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection Screensapdocs. info
 
Chapter 08 abap dictionary objects views1
Chapter 08 abap dictionary objects views1Chapter 08 abap dictionary objects views1
Chapter 08 abap dictionary objects views1Kranthi Kumar
 
Chapter 06 printing sap script forms
Chapter 06 printing sap script formsChapter 06 printing sap script forms
Chapter 06 printing sap script formsKranthi Kumar
 
Sap Abap Reports
Sap Abap ReportsSap Abap Reports
Sap Abap Reportsvbpc
 
ASAP methodology overview
ASAP methodology overviewASAP methodology overview
ASAP methodology overviewBogdan Gorka
 
Sap abap ale idoc
Sap abap ale idocSap abap ale idoc
Sap abap ale idocBunty Jain
 

Andere mochten auch (17)

SAP ABAP data dictionary
SAP ABAP data dictionarySAP ABAP data dictionary
SAP ABAP data dictionary
 
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda TrainingsSAP ABAP Latest Interview Questions with Answers by Garuda Trainings
SAP ABAP Latest Interview Questions with Answers by Garuda Trainings
 
07.Advanced Abap
07.Advanced Abap07.Advanced Abap
07.Advanced Abap
 
Dialog Programming Overview
Dialog Programming OverviewDialog Programming Overview
Dialog Programming Overview
 
ABAP Message, Debugging, File Transfer and Type Group
ABAP Message, Debugging, File Transfer and Type GroupABAP Message, Debugging, File Transfer and Type Group
ABAP Message, Debugging, File Transfer and Type Group
 
Open SQL & Internal Table
Open SQL & Internal TableOpen SQL & Internal Table
Open SQL & Internal Table
 
ABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection ScreenABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection Screen
 
SAP ABAP Material
SAP ABAP MaterialSAP ABAP Material
SAP ABAP Material
 
Chapter 08 abap dictionary objects views1
Chapter 08 abap dictionary objects views1Chapter 08 abap dictionary objects views1
Chapter 08 abap dictionary objects views1
 
control techniques
control techniquescontrol techniques
control techniques
 
Abap slides set1
Abap slides set1Abap slides set1
Abap slides set1
 
Chapter 06 printing sap script forms
Chapter 06 printing sap script formsChapter 06 printing sap script forms
Chapter 06 printing sap script forms
 
Sap Abap Reports
Sap Abap ReportsSap Abap Reports
Sap Abap Reports
 
Asap methodology
Asap methodologyAsap methodology
Asap methodology
 
Abap hr programing
Abap hr programingAbap hr programing
Abap hr programing
 
ASAP methodology overview
ASAP methodology overviewASAP methodology overview
ASAP methodology overview
 
Sap abap ale idoc
Sap abap ale idocSap abap ale idoc
Sap abap ale idoc
 

Ähnlich wie Module pool programming

Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...marjoramg
 
Copy of 22_Mobile Data entry.pptx
Copy of 22_Mobile Data entry.pptxCopy of 22_Mobile Data entry.pptx
Copy of 22_Mobile Data entry.pptxMAYANKJAIN782497
 
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and TricksIBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and TricksSenturus
 
Creation of derive roles with secatt
Creation of derive roles with secattCreation of derive roles with secatt
Creation of derive roles with secattRoberto B.
 
Step by step guide to basic web dynpro abap
Step by step guide to basic web dynpro abapStep by step guide to basic web dynpro abap
Step by step guide to basic web dynpro abapKranthi Kumar
 
Work spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWork spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWilliam McIntosh
 
Work spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWork spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWilliam McIntosh
 
Abap objects in action
Abap objects in actionAbap objects in action
Abap objects in actionFaina Fridman
 
Sap step-by-step-navigation-guide-for-beginners
Sap step-by-step-navigation-guide-for-beginnersSap step-by-step-navigation-guide-for-beginners
Sap step-by-step-navigation-guide-for-beginnersHossam Abdo
 
ERP Magazine April 2018 Issue 1
ERP Magazine April 2018 Issue 1 ERP Magazine April 2018 Issue 1
ERP Magazine April 2018 Issue 1 Rehan Zaidi
 
ERP Magazine April 2018 - The magazine for SAP ABAP Professionals
ERP Magazine April 2018 - The magazine for SAP ABAP ProfessionalsERP Magazine April 2018 - The magazine for SAP ABAP Professionals
ERP Magazine April 2018 - The magazine for SAP ABAP ProfessionalsRehan Zaidi
 
Get the Jump on Mobilizing your Notes and Domino Applications Today! (JMP103...
Get the Jump on Mobilizing your Notes and Domino Applications Today!  (JMP103...Get the Jump on Mobilizing your Notes and Domino Applications Today!  (JMP103...
Get the Jump on Mobilizing your Notes and Domino Applications Today! (JMP103...Paul Della-Nebbia
 
Abap fundamentals-training-course-document
Abap fundamentals-training-course-documentAbap fundamentals-training-course-document
Abap fundamentals-training-course-documentjohnbryan26
 

Ähnlich wie Module pool programming (20)

Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
 
Sap consultancy 1
Sap consultancy 1Sap consultancy 1
Sap consultancy 1
 
Copy of 22_Mobile Data entry.pptx
Copy of 22_Mobile Data entry.pptxCopy of 22_Mobile Data entry.pptx
Copy of 22_Mobile Data entry.pptx
 
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and TricksIBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
 
Unit 2
Unit 2Unit 2
Unit 2
 
Creation of derive roles with secatt
Creation of derive roles with secattCreation of derive roles with secatt
Creation of derive roles with secatt
 
Step by step guide to basic web dynpro abap
Step by step guide to basic web dynpro abapStep by step guide to basic web dynpro abap
Step by step guide to basic web dynpro abap
 
Android tools
Android toolsAndroid tools
Android tools
 
Authoring metaphors
Authoring metaphorsAuthoring metaphors
Authoring metaphors
 
GUI_part_1.pptx
GUI_part_1.pptxGUI_part_1.pptx
GUI_part_1.pptx
 
Work spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWork spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guide
 
Work spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guideWork spaceconnect 2.0 user guide
Work spaceconnect 2.0 user guide
 
Abap objects in action
Abap objects in actionAbap objects in action
Abap objects in action
 
Vb%20 tutorial
Vb%20 tutorialVb%20 tutorial
Vb%20 tutorial
 
Sap step-by-step-navigation-guide-for-beginners
Sap step-by-step-navigation-guide-for-beginnersSap step-by-step-navigation-guide-for-beginners
Sap step-by-step-navigation-guide-for-beginners
 
ERP Magazine April 2018 Issue 1
ERP Magazine April 2018 Issue 1 ERP Magazine April 2018 Issue 1
ERP Magazine April 2018 Issue 1
 
ERP Magazine April 2018 - The magazine for SAP ABAP Professionals
ERP Magazine April 2018 - The magazine for SAP ABAP ProfessionalsERP Magazine April 2018 - The magazine for SAP ABAP Professionals
ERP Magazine April 2018 - The magazine for SAP ABAP Professionals
 
Get the Jump on Mobilizing your Notes and Domino Applications Today! (JMP103...
Get the Jump on Mobilizing your Notes and Domino Applications Today!  (JMP103...Get the Jump on Mobilizing your Notes and Domino Applications Today!  (JMP103...
Get the Jump on Mobilizing your Notes and Domino Applications Today! (JMP103...
 
Abap fundamentals-training-course-document
Abap fundamentals-training-course-documentAbap fundamentals-training-course-document
Abap fundamentals-training-course-document
 
GuideMaker Design Customization Guideline
GuideMaker Design Customization GuidelineGuideMaker Design Customization Guideline
GuideMaker Design Customization Guideline
 

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. 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. 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 Sap’s 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 Elements Once screen is designed, it should be saved and checked for errors and activated. Screen looks as below, 25
  • 26. Testing Screen Screen can tested by executing F8 or click on button 26
  • 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 program’s 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_<screen number> 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_<screen number>. 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<Program>_TOP, Z<Program>_PBO, Z<Program>_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 <tnnn> [WITH <var1> <var2> <var3> <var4>]. 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 messages There 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 <screen field> MODULE <module name>. 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: <f1>, <f 2>,...   MODULE <mod1>.    FIELD: <g1>, <g 2>,...    MODULE <mod2>. ... ENDCHAIN. If an error or warning message is issued in <module name>, 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 <field name> 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 <screen #>” ABAP statement, it temporarily overrides the “Next Screen” attribute with this <screen #> and the PAI processing continues. After all PAI modules are executed, the system goes to the PBO event of <screen #>. 62
  • 63. Screen commands “LEAVE TO SCREEN <screen #>” ABAP statement, terminates the screen’s PAI event and immediately goes to the PBO of <screen #>. The “LEAVE TO SCREEN <screen #> statement performs the functionality of two statements: “SET SCREEN <screen #>“ and “LEAVE SCREEN”. “CALL SCREEN <screen #>” ABAP statement, temporarily suspends the current screen’s PAI processing and immediately goes to the PBO event of <screen #>. 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 INPUT With the “ON INPUT” addition to the “MODULE” statement, a module will be executed only if the specified field’s 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 <screen field> MODULE <module> ON INPUT. − The PAI <module> will be executed only if the value in <screen field> 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 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 <screen field> MODULE <module> ON REQUEST. − The PAI <module> will be executed only if a value was entered in <screen field> 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 <module> AT EXIT-COMMAND. 67
  • 68. AT EXIT-COMMAND − The PAI <module> 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 <mod> AT CURSOR-SELECTION . The module <mod> 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 <f> MODULE <mod> AT CURSOR-SELECTION. For more than one field: CHAIN.   FIELD: <f1>, <f 2>,...   MODULE <mod> 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 Transaction 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. 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_<lock object name> and DEQUEUE_<lock object name> 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 <ctrl> TYPE TABLEVIEW USING SCREEN <scr>. where <ctrl> 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 program’s 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. . . . <flow logic statements> . . . 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 user’s 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” screen’s PBO event. syntax : CALL SUBSCREEN <area> INCLUDING <program> <subscreen #>. − <area> : name of the subscreen area defined on the “main” screen. This subscreen area will be the location of the subscreen. This <area> cannot be enclosed in single quotes. − <program> : name of the program where the subscreen exists. 92
  • 93. Call subscreen in PBO − <subscreen #> : number of the subscreen to display in the subscreen area. − The <program> and <subscreen #> can be literals (i.e. enclosed in single quotes) or variables. When the “CALL SUBSCREEN” statement is encountered in the “main” screen’s 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 <area>. − The <area> is the name of the subscreen area defined on the “main” screen. This <area> 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” screen’s 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 subscreen’s 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 <screen field>, the <supplemental documentation> will be displayed along with the data element’s short text and documentation. The only other Flow Logic statement that can be used in the POH event is: FIELD <screen field> MODULE <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 <screen field> MODULE <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

Hinweis der Redaktion

  1. Module pool programs are also called as dialog programs, Online programs or transactions These 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 user’s 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.
  2. Sample code: loop at screen. if screen-name = &apos;GV_OBJ_ID&apos;. 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.