Skip to Content
avatar image
Former Member

PBO & PAI Events

Hi,

Can ne1 plz tell me wat the events PBO & PAI exacely do????

Thanks,

Mohit.

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

8 Answers

  • avatar image
    Former Member
    Jul 24, 2007 at 08:02 AM

    Hi,

    Process before Output (PBO) modules are executed before displaying a screen..

    and Process After Input (PAI) modules are executed after inputting any value on a screen.

    check this link

    http://help.sap.com/saphelp_47x200/helpdata/en/47/e07f622b9911d2954f0000e8353423/content.htm

    Reward if helpful.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 08:05 AM

    Hi,

    Every Dynpro screen will have set of PBO modules and PAI modules.

    PBO(Process Before Ouput) modules will be called before displaying the screen to user.

    PAI(Process After Input) modules will be called when user performs some action on the screen. (For example clicking a button, selecting an option in drop down box).

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 12:24 PM

    PBO - Process Before Output

    This module will be called once the screen statement in your program is being called that is either set screen or call screen

    that is Before the output display what ever the opertaion you want to do you can perform in this module

    PAI - Process After Input

    This module is called once the user gives the input

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 08:01 AM

    hi,

    These are 2 events for designing the screens in module pool programing

    PAI is used to write the code for the User actions on the screen.

    Here data moves from screen to program.

    PBO is used to display the fields from the program to the screen.

    and we build the gui statuses in this PBO.

    see the sample code

    REPORT ZBHMOD1 .

    DATA:OKCODE1 LIKE SY-UCOMM,

    OKCODE2 LIKE SY-UCOMM.

    DATA:N1(10) TYPE N,N2(10) TYPE N,RES(12) TYPE N.

    MODULE USER_COMMAND_1000 INPUT.

    CASE OKCODE1.

    WHEN 'NEXT'.

    RES = N1 + N2.

    SET SCREEN 1001.

    WHEN 'CLEA'.

    CLEAR:N1,N2.

    WHEN 'BACK'.

    SET SCREEN '0'.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_1000 INPUT

    MODULE STATUS_1000 OUTPUT.

    • SET PF-STATUS 'xxxxxxxx'.

    SET TITLEBAR 'TIT1'.

    ENDMODULE. " STATUS_1000 OUTPUT

    MODULE USER_COMMAND_1001 INPUT.

    CASE OKCODE2.

    WHEN 'BACK'.

    SET SCREEN 1000.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_1001 INPUT

    MODULE STATUS_1001 OUTPUT.

    • SET PF-STATUS 'xxxxxxxx'.

    SET TITLEBAR 'TIT2'.

    ENDMODULE. " STATUS_1001 OUTPUT

    FLOW LOGIC:

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_1000.

    *

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_1000.

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_1001.

    *

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_1001.

    **************************************************************************

    ************************************************************************

    2)

    REPORT ZBHMOD2.

    DATA: OKCODE1 TYPE SY-UCOMM,

    OKCODE2 TYPE SY-UCOMM,

    ENAME(10) TYPE C,

    DNAME(10) TYPE C.

    MODULE STATUS_1000 OUTPUT.

    • SET PF-STATUS 'xxxxxxxx'.

    SET TITLEBAR 'TIT1'.

    ENDMODULE. " STATUS_1000 OUTPUT

    MODULE STATUS_1001 OUTPUT.

    • SET PF-STATUS 'xxxxxxxx'.

    SET TITLEBAR 'TIT2'.

    ENDMODULE. " STATUS_1001 OUTPUT

    MODULE USER_COMMAND_1000 INPUT.

    CASE OKCODE1.

    WHEN 'BACK'.

    SET SCREEN '0'.

    WHEN 'NEXT'.

    DNAME = ENAME.

    SET SCREEN '1001'.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_1000 INPUT

    MODULE USER_COMMAND_1001 INPUT.

    CASE OKCODE2.

    WHEN 'BACK'.

    SET SCREEN '1000'.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_1001 INPUT

    FORM ON_CTMENU_FORM USING ZDEMO1 TYPE REF TO CL_CTMENU.

    CALL METHOD ZDEMO1->LOAD_GUI_STATUS

    EXPORTING

    PROGRAM = 'ZDEMO1'

    STATUS = 'ZDEMO1'

    MENU = ZDEMO1.

    ENDFORM. " ON_CTMENU_FORM

    FLOW LOGIC:

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_1000.

    *

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_1000.

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_1001.

    *

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_1001.

    *************************************************************

    Every Screen has a pbo and a pai.

    Screen elements are the textbox, buttons, radio buttons and check boxes .....

    If we want to pass data from a abap program to a screen element, we have to create a variable with the name we have given in the screen.So whatever the value is present in that variable is reflected on to the screen element.

    Here is an example :

    Using subscreens and some of the screen elements

    REPORT demo_dynpro_subscreens.

    DATA: ok_code TYPE sy-ucomm,

    save_ok TYPE sy-ucomm.

    DATA: number1(4) TYPE n VALUE '0110',

    number2(4) TYPE n VALUE '0130',

    field(10) TYPE c, field1(10) TYPE c, field2(10) TYPE c.

    CALL SCREEN 100.

    MODULE status_100 OUTPUT.

    SET PF-STATUS 'SCREEN_100'.

    ENDMODULE.

    MODULE fill_0110 OUTPUT.

    field = 'Eingabe 1'(001).

    ENDMODULE.

    MODULE fill_0120 OUTPUT.

    field = field1.

    ENDMODULE.

    MODULE fill_0130 OUTPUT.

    field = 'Eingabe 2'(002).

    ENDMODULE.

    MODULE fill_0140 OUTPUT.

    field = field2.

    ENDMODULE.

    MODULE cancel INPUT.

    LEAVE PROGRAM.

    ENDMODULE.

    MODULE save_ok INPUT.

    save_ok = ok_code.

    CLEAR ok_code.

    ENDMODULE.

    MODULE user_command_0110 INPUT.

    IF save_ok = 'OK1'.

    number1 = '0120'.

    field1 = field.

    CLEAR field.

    ENDIF.

    ENDMODULE.

    MODULE user_command_0130 INPUT.

    IF save_ok = 'OK2'.

    number2 = '0140'.

    field2 = field.

    CLEAR field.

    ENDIF.

    ENDMODULE.

    MODULE user_command_100 INPUT.

    CASE save_ok.

    WHEN 'SUB1'.

    number1 = '0110'.

    WHEN 'SUB2'.

    number1 = '0120'.

    CLEAR field1.

    WHEN 'SUB3'.

    number2 = '0130'.

    WHEN 'SUB4'.

    number2 = '0140'.

    CLEAR field2.

    ENDCASE.

    ENDMODULE.

    • flow logic for screen 100

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_100.

    CALL SUBSCREEN: AREA1 INCLUDING SY-REPID NUMBER1,

    AREA2 INCLUDING SY-REPID NUMBER2.

    PROCESS AFTER INPUT.

    MODULE CANCEL AT EXIT-COMMAND.

    MODULE SAVE_OK.

    CALL SUBSCREEN: AREA1,

    AREA2.

    MODULE USER_COMMAND_100.

    • flow logic for screen 110

    PROCESS BEFORE OUTPUT.

    MODULE FILL_0110.

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_0110.

    • flow logic for screen 120

    PROCESS BEFORE OUTPUT.

    MODULE FILL_0120.

    PROCESS AFTER INPUT.

    • flow logic for screen 130

    PROCESS BEFORE OUTPUT.

    MODULE FILL_0130.

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_0130.

    • flow logic for screen 140

    PROCESS BEFORE OUTPUT.

    MODULE FILL_0140.

    PROCESS AFTER INPUT.

    Check the below link:

    http://wiki.ittoolbox.com/index.php/FAQ:What_is_module_pool_program_in_abap%3F

    http://help.sap.com/saphelp_46c/helpdata/en/35/26b1aaafab52b9e10000009b38f974/content.htm

    http://sap.mis.cmich.edu/sap-abap/abap09/sld011.htm

    http://sap.mis.cmich.edu/sap-abap/abap09/index.htm

    http://www.geocities.com/ZSAPcHAT

    http://www.allsaplinks.com/files/using_table_in_screen.pdf

    http://help.sap.com/saphelp_webas630/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/content.htm

    http://www.sapdevelopment.co.uk/dialog/dialoghome.htm

    http://www.sap-img.com/

    http://help.sap.com/saphelp_46c/helpdata/en/08/bef2dadb5311d1ad10080009b0fb56/content.htm

    http://www.sapgenie.com/links/abap.htm

    http://help.sap.com/saphelp_nw04/helpdata/en/c9/5472fc787f11d194c90000e8353423/frameset.htm

    You can also check the transaction ABAPDOCU which gives you lot of sample programs.

    Also you can see the below examples...

    Go to se38 and give demodynpro and press F4.

    YOu will get a list of demo module pool programs.

    One more T-Code is ABAPDOCU.

    YOu can find more examples there.

    See the prgrams:

    DEMO_DYNPRO_TABLE_CONTROL_1 Table Control with LOOP Statement

    DEMO_DYNPRO_TABLE_CONTROL_2 Table Control with LOOP AT ITAB

    http://www.geocities.com/ZSAPcHAT

    http://www.allsaplinks.com/files/using_table_in_screen.pdf

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Thanks for the reply Roja. But can u tell me that a variable declared in a module is local to that module or is it global and why????

  • Jul 24, 2007 at 08:04 AM

    Hi,

    PBO is Process Before Output, all these PBO modules are executed before you get to see the screen.

    SO here you can hide/disable enable your fields, or you can set some initial values etc.

    PAI means Process After Input, this is the event where you will check your screen input and based onthe input and user events.

    Regards,

    Sesh

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 08:04 AM

    Hi Mohit,

    PBO is Process Befor Output and PAI is Process After Input.

    Suppose you are creating one input screen in SE51 and in one filed you have to fetch record at the time of calling that screen then you have to code it in PBO module.

    And after puting some values in initial screen if you want to call another screen or want to do some other calculation then at that time you have to put it into PAI part.

    Hope you understand from this.

    <b>Rewards points for useful Answer.</b>

    Regards,

    Kinjal

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 08:07 AM

    hi,

    Yes the variables are local.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2007 at 11:58 AM

    Hi,

    <b>PROCESS BEFORE OUTPUT (PBO)</b> is automatically triggered after the PAI processing of the previous screen and before the current screen is displayed. You can program the PBO processing of the screen in this block. At the end of the PBO processing, the screen is displayed.

    <b>PROCESS AFTER INPUT (PAI)</b> is triggered when the user chooses a function on the screen. You can program the PAI processing of the screen in this block. At the end of the PAI processing, the system either calls the next screen or carries on processing at the point from which the screen was called.

    Regards,

    Bhaskar

    Add comment
    10|10000 characters needed characters exceeded