MODULE POOL PROGRAMMING
Module Pool Programming (also known as Dialog Programming) is used to create custom
interactive screens in ABAP. It allows developers to design full-screen applications with
customized screen flow logic, input validation, and data manipulation.
When working with tables in module pool programming, the main goal is to display, insert,
update, or delete records using a custom UI and logic.
✅ Key Components in Module Pool Programming
1. ABAP Program (Type: Module Pool - Executable using transaction code)
2. Screens (dynpros) created in SE80 or SE51
3. Screen Elements (input fields, table controls, buttons)
4. Data Modules (MODULE for PBO and PAI)
5.
Feature SM30 Module Pool Programming
Fast and easy setup ✅ ❌ (Manual development)
Custom UI ❌ ✅ Fully customizable
Advanced validations Limited ✅ Complex logic possible
User control ❌ Limited to standard flow ✅ Full control over screen flow
v
CODE
PROGRAM Z630MPTEST.
DATA: ff1 TYPE z630progemdp1-emp_no,
ff2 TYPE z630progemdp1-emp_name,
ff3 TYPE z630progemdp1-dept_no,
ff4 TYPE z630progemdp1-dept_name,
ff5 TYPE z630progemdp1-jdate,
ff6 TYPE z630progemdp1-jtime.
DATA: vflag TYPE i.
*---------------------------------------------------------------------*
* PBO Module: Set status and control field visibility
*---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
IF vflag = 0.
SET PF-STATUS 'ABC'.
PERFORM invisiblefields.
ELSEIF vflag = 1.
PERFORM visiblefields.
ENDIF.
ENDMODULE.
*---------------------------------------------------------------------*
* PAI Module: Handle user actions like GET DATA and EXIT
*---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'P2' OR 'BACK'.
LEAVE PROGRAM.
WHEN 'P1'. " Get Data button
SELECT SINGLE emp_no emp_name dept_no dept_name jdate jtime
INTO (ff1, ff2, ff3, ff4,ff5,ff6)
FROM z630progemdp1
WHERE emp_no = ff1.
IF sy-subrc = 0.
vflag = 1.
ELSE.
MESSAGE 'Employee not found' TYPE 'E'.
ENDIF.
ENDCASE.
ENDMODULE.
*---------------------------------------------------------------------*
* FORM: Hide fields (initial state)
*---------------------------------------------------------------------*
FORM invisiblefields.
LOOP AT SCREEN.
IF screen-name = 'FF2' or screen-name = 'FF3' or screen-name = 'FF4'
or screen-name = 'Ff5' or screen-name = 'Ff6' or screen-name = 'Ff7'
or screen-name = 'F3' or screen-name = 'F4'
or screen-name = 'F5' or screen-name = 'F6' or screen-name = 'F7'.
screen-invisible = '1'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM: Make fields visible (after fetching data)
*---------------------------------------------------------------------*
FORM visiblefields.
LOOP AT SCREEN.
IF screen-name = 'FF2' or screen-name = 'FF3' or screen-name = 'FF4'
or screen-name = 'FF5' or screen-name = 'FF6' or screen-name = 'Ff7'
or screen-name = 'F3' or screen-name = 'F4'
or screen-name = 'F5' or screen-name = 'F6' or screen-name = 'F7'.
screen-invisible = '0'.
screen-input = '1'. " Set to 1 if you want user to edit
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.