Wednesday, 30 May 2012

MODULE POOL

SIMPLE PROGRAM ON MODULE POOL

Scenario : Here we would design a single screen(9000) with two i/p fields & one o/p field. Upon entering the values in the i/p field, if the user clicks on the add button then the sum will be displayed in the o/p field.

Step-1. Go to SE80. Choose Program And Give a Name ( zmp_test1 ) and press Enter.

Step-2. Choose Yes .


Step -3. Uncheck the check box and Click Yes button.

Step-4. Select Module Pool From the Type and Click on Save button.

 Step-5. Click on Local Object To save it local package ($TMP).

Step-6. Double Click on Program Name & Click on Change Button.

Step-7. Create A screen - right click on Program Name ->Create->Screen

  Step-8.  Give Screen number - 9000 & click on Yes Button.

Step-9. Give a short Description &  It's a normal Screen.

Step-10. Click on layout Button & the Screen Painter Window will appear .

Step-11. Create two input fields , one push button & an output field & at last click on flow logic button on the toolbar.

Step-12.  Now uncomment the two modules in PBO & PAI . Double click on the module name and create it in main program.







Step-13. Write the code in the program.

PROGRAM  zmp_test1.

DATA : num1 TYPE i,
       num2 
TYPE i,
       res 
TYPE i.

MODULE status_9000 OUTPUT.
  
SET PF-STATUS 'STATUS'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 
" STATUS_9000  OUTPUT

MODULE user_command_9000 INPUT.
  
CASE sy-ucomm.
    
WHEN 'SHOW'.
      res = num1 + num2.
    
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
      
LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.                 
" USER_COMMAND_9000  INPUT

Step-14. Uncomment the SET PF-STATUS 'XXXX'  line  and give any name(STATUS) & double click  on it to create it. From the popup click on yes .

 Step-15. Give A short text and Click on yes button.

 Step-16. Click on the (+) Button on the right of Function keys to expand it. Give SAVE, BACK,   EXIT & CANCEL in the standard toolbar & activate it and press back button to come back to the program.

Step-17. Now create a transaction code for the program. Right click on program name->create->transaction.





Step-18. Give a T-code, short description and click yes button.

Step-19. Give program name , screen number and click on the three check boxes and then click on save button on the standard toolbar. Click on back button to come the program.

 Step-20. Now  open a new session and put the T-code of the program in the Command field and press Enter.

Step-21. Fill the two input field with some values and then press ADD button. Find the Result.

PROGRAM DEMONSTRATING (ON INPUT)

data : N1 type i.
data : N2 type i.
data ok_code type sy-ucomm.

module STATUS_9000 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

endmodule.                 " STATUS_9000  OUTPUT

module USER_COMMAND_9000 input.
CASE OK_CODE.
  
WHEN 'SHOW'.
  
CALL  SCREEN 9001.
  
ENDCASE.
endmodule.                 " USER_COMMAND_9000  INPUT

module STATUS_9001 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
N2 
N1.
endmodule.                 " STATUS_9001  OUTPUT

module USER_COMMAND_9001 input.
CASE OK_CODE.
  
WHEN 'BACK'.
    
CALL SCREEN 9000.
  
ENDCASE.
endmodule.                 " USER_COMMAND_9001  INPUT


module CHECK_N1 input.
N1 
N1 + 10.
endmodule.                 " CHECK_M1  INPUT


FLOW LOGIC OF SCREEN 9000
PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9000.

PROCESS AFTER 
INPUT.
FIELD N1 MODULE CHECK_N1 ON INPUT.
MODULE USER_COMMAND_9000.



FLOW LOGIC OF SCREEN 9001

PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9001.

PROCESS AFTER 
INPUT.
 
MODULE USER_COMMAND_9001.




 Run the program and if you give any value to the input field (n1) then only    CHECK_N1  module will execute . press SHOW & BACK button many times to see the change. If it finds any value in the input field (n1) then every time  CHECK_N1 module will execute and it will add up 10 to its value.

PROGRAM DEMONSTRATING (ON REQUEST)

data : N1 type i.
data : N2 type i.
data ok_code type sy-ucomm.

module STATUS_9000 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

endmodule.                 " STATUS_9000  OUTPUT

module USER_COMMAND_9000 input.
CASE OK_CODE.
  
WHEN 'SHOW'.
  
CALL  SCREEN 9001.
  
ENDCASE.
endmodule.                 " USER_COMMAND_9000  INPUT

module STATUS_9001 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
N2 
N1.
endmodule.                 " STATUS_9001  OUTPUT

module USER_COMMAND_9001 input.
CASE OK_CODE.
  
WHEN 'BACK'.
    
CALL SCREEN 9000.
  
ENDCASE.
endmodule.                 " USER_COMMAND_9001  INPUT

module CHECK_N1 input.
N1 
= N1 + 20.
endmodule.                 " CKECK_N1  INPUT

FLOW LOGIC OF SCREEN 9000
PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9000.
*
PROCESS AFTER 
INPUT.
field N1 MODULE CHECK_N1 on REQUEST.
 
MODULE USER_COMMAND_9000.
FLOW LOGIC OF SCREEN 9001
PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9001.
*
PROCESS AFTER 
INPUT.
 
MODULE USER_COMMAND_9001.

  Run the program and if you give any value to the input field (n1) then only    CHECK_N1  module will execute . press SHOW & BACK button many times to see the change.

PROGRAM DEMONSTRATING (ON CHAIN-INPUT)

DATA : N1 TYPE i.
DATA : N2 TYPE i.
DATA : N3 TYPE i.
DATA res TYPE i.
DATA ok_code TYPE sy-ucomm.

MODULE status_9000 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_9000  OUTPUT

MODULE user_command_9000 INPUT.
  
CASE ok_code.
    
WHEN 'ADD'.
      
CALL  SCREEN 9001.
  
ENDCASE.
ENDMODULE.                 " USER_COMMAND_9000  INPUT

MODULE status_9001 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
  res 
= N1 + N2 + N3.
ENDMODULE.                 " STATUS_9001  OUTPUT

MODULE user_command_9001 INPUT.
  
CASE ok_code.
    
WHEN 'BACK'.
      
CALL SCREEN 9000.
  
ENDCASE.
ENDMODULE.                 " USER_COMMAND_9001  INPUT

module CHECK_TWO_NUMBER input.
N1 
= N1 + 10.
N2 
= N2 + 10.

endmodule.                 " CKECK_THREE_NUMBER  INPUT

FLOW LOGIC OF SCREEN 9000

PROCESS BEFORE OUTPUT.
  MODULE status_9000.
PROCESS AFTER INPUT.
  CHAIN.
    FIELD : N1,N2.
    MODULE CHECK_TWO_NUMBER ON CHAIN-INPUT.
  ENDCHAIN.
  MODULE user_command_9000.






FLOW LOGIC OF SCREEN 9001
PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9001.

PROCESS AFTER 
INPUT.
 
MODULE USER_COMMAND_9001.

  Run the program and if you provide any value to either n1 or n2  or both  then only  CHECK_TWO_NUMBER  module will execute . press ADD & BACK button many times to see the change.

PROGRAM DEMONSTRATING (ON CHAIN-REQUEST)

DATA : N1 TYPE i.
DATA : N2 TYPE i.
DATA : N3 TYPE i.
DATA res TYPE i.
DATA ok_code TYPE sy-ucomm.

MODULE status_9000 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_9000  OUTPUT

MODULE user_command_9000 INPUT.
  
CASE ok_code.
    
WHEN 'ADD'.
      
CALL  SCREEN 9001.
  
ENDCASE.
ENDMODULE.                 " USER_COMMAND_9000  INPUT

MODULE status_9001 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
  res 
= N1 + N2 + N3.
ENDMODULE.                 " STATUS_9001  OUTPUT

MODULE user_command_9001 INPUT.
  
CASE ok_code.
    
WHEN 'BACK'.
      
CALL SCREEN 9000.
  
ENDCASE.
ENDMODULE.                 " USER_COMMAND_9001  INPUT


module CHECK_TWO_NUMBER input.
N1 
= N1 + 10.
N2 
= N2 + 10.
endmodule.                 " CKECK_TWO_NUMBER  INPUT
FLOW LOGIC OF SCREEN 9000
PROCESS BEFORE OUTPUT.
  
MODULE status_9000.

PROCESS AFTER 
INPUT.
  CHAIN
.
    
FIELD : N1,N2.
    
MODULE CHECK_TWO_NUMBER ON CHAIN-REQUEST.
  ENDCHAIN
.
  
MODULE user_command_9000.
FLOW LOGIC OF SCREEN 9001
PROCESS BEFORE OUTPUT.
 
MODULE STATUS_9001.

PROCESS AFTER 
INPUT.
 
MODULE USER_COMMAND_9001.

  Run the program and if you provide any value to either n1 or n2  or both  then only  CHECK_TWO_NUMBER  module will execute . press ADD & BACK button many times to see the change.

PROGRAM DEMONSTRATING (AT EXIT-COMMAND)

Scenario : Generally if a screen contains any obligatory(Required) input field & we execute the MP program , the screen appears & if we want to come out of the program it will not allow us . We have to fill the mandatory field on the screen and then we can come out of the program by clicking on the application tool bar buttons. To overcome this problem , generally we use AT EXIT-COMMAND at PAI of the screen to force exit from the screen that contains a required field without filling any value to it.

Here we have two screens 9000 and 9001. In the 9000 screen we have an required i/p field & a single record is displayed on 9001 screen based on the i/p.

******** program on at exit-command *************

data : p_carr type spfli-carrid,
       wa_spfli 
type spfli,
       ok_code 
type sy-ucomm.

module STATUS_9000 output.
  
SET PF-STATUS 'STATUS'. " DOUBLE CLICK ON 'STATUS' TO CREATE IT
*  SET TITLEBAR 'xxx'.

endmodule.                 
" STATUS_9000  OUTPUT

module FORCE_EXIT input.
CASE OK_CODE.
  
WHEN 'EXIT' OR 'CANCEL'.
    
LEAVE PROGRAM.
  ENDCASE.
endmodule.                 
" FORCE_EXIT  INPUT

module USER_COMMAND_9000 input.
case ok_code.
  
WHEN 'DISP'.
    
CALL SCREEN 9001.
    
WHEN 'BACK'.
      
LEAVE PROGRAM.
  endcase.
endmodule.                 
" USER_COMMAND_9000  INPUT

module STATUS_9001 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
  
SELECT SINGLE FROM SPFLI INTO WA_SPFLI WHERE CARRID = P_CARR.

endmodule.                 
" STATUS_9001  OUTPUT

module USER_COMMAND_9001 input.
case ok_code.
  
when 'BACK'.
    
LEAVE TO SCREEN 0.
  endcase.
endmodule.                 
" USER_COMMAND_9001  INPUT


TO CREATE PF STATUS 
STEP-1 : Double click on 'STATUS' to create pf status and click on yes button.
STEP-2:  Give a short description.
 STEP-3: Click on the '+' button of the Function key & fill values 'BACK',  'EXIT' & 'CANCEL'.
 STEP-4: Double click on 'EXIT' & the following screen will appear. Click of the value help of theFunction Type field and choose the first entry. 'E' type.
STEP-5  : Click yes to set 'E' for the EXIT and also set 'E' type also for 'CANCEL'




 FLOW LOGIC OF SCREEN 9000
PROCESS BEFORE OUTPUT.
  MODULE status_9000.

PROCESS AFTER INPUT.
  MODULE force_exit AT EXIT-COMMAND.
  MODULE user_command_9000.

















FLOW LOGIC OF SCREEN 9001
PROCESS BEFORE OUTPUT.
 MODULE STATUS_9001.
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_9001.

 














OUTPUT:


4 comments:

  1. How to create a status bar in module pool /user dialog abapprogramming, you could check this link http://saptechnicals.blogspot.com/2012/12/module-pool-programming-create-gui.html

    ReplyDelete
  2. how to create radio buttons in module pool program

    ReplyDelete
    Replies
    1. Create a variable like data: rb1 type c. and take it to the module pool screen. Then right click on the element on the screen to convertt it to a radio button or check box and follow the path: Transform-Radiobutton-Left button/Right button.

      Delete

Document Catagories :

1. Simple ABAP Programs