07-24-2007 8:59 AM
Hi,
Can ne1 plz tell me wat the events PBO & PAI exacely do????
Thanks,
Mohit.
07-24-2007 9: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://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
07-24-2007 9:04 AM
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????
07-24-2007 9: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.
07-24-2007 9: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
07-24-2007 9:05 AM
Hi,
The variables are local. Since they are executed for every dialog step.
Regards,
Sesh
07-24-2007 9: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
07-24-2007 9: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).
07-24-2007 9:07 AM
07-24-2007 12:58 PM
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
07-24-2007 1: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