Module Pool Programming
Module Pool Programming
ABAP Transactions:
It is also known as Module Pool Programming
It is also known as Dialog Programming
Transaction:
A transaction is a series of Dialog (Screen) Steps in which application will
accept data from user which is finally updated to Database
Name1
Display exit
Note:
Flow Logic (Events) acts as interface between Screen Painter & Dialog
Programming
PAI:
It triggers after processing input values in a screen
This event triggers whenever user interacts with a screen
PBO:
It triggers before screen display
Note:
1. PAI will brings the data from Screen to Program Variables
2. PBO will brings the data from Program Variables to Screen
POH:
It triggers whenever user select F1 Function Key. It is for help
POV:
It triggers whenever user select F4 Function Key. It is for search help
FCT FCT
Display Insert
Dialog Programming
SY-UCOMM:
It returns FCT value for a function key (button) in Dialog programming selected
by user
Steps:
1. Work with SE38 (create a Dialog Programming)
2. Work with SE51 (create a Screen)
3. Work with SE93 (create a T code)
4. Run the T code
Requirement:
2132
Kunnr
Land1
Name1
Ort01
Pstlz
stras
Solution:
Step-1:
Go to SE38
Program: ZSD_CUSTOMER_DETAILS
Create
Title: Customer Details
Type: Module Pool
Enter
Package: ZABAP
Save
Create Request
Short Description: SD/ABAP: Customer Details (25.09.2019)
Enter
Enter
Step-2:
Go to SE51
Program: ZSD_CUSTOMER_DETAILS
Screen Number: 100
Create
Short Description: Screen 100
Layout button
Place a box (last from 6th option) on the screen
Note:
Place the mouse pointer on the icon & click on it
Bring mouse pointer on the screen & drag & drop it on the screen
according to requirement
Double click on Frame of the box
You will find an attributes pop-up
Provide Text: Customer Details
Close
Select Dictionary Program Fields button (F6)
You will find a pop-up
Table Name: KNA1
Enter
You will find fields of the table
Select Kunnr, Land1, Name1, Ort01, Pstlz, Stras
Enter
Place the fields with the help of mouse pointer on the box & right click
Place 3 Push buttons (starting from 6th option) on Tool bar
Double click on 1st Push button
Text: Display
FCT Code: Display
Close
Double click on 2nd Push button
Text: Clear
FCT Code: Clear
Close
Double click on 3rd Push button
Text: Exit
FCT Code: Exit
Close
Flow Logic button (F9)
Remove comment for MODULE USER_COMMAND_100.
Double click on USER_COMMAND_100
You will find a pop-up Create Object: Yes
By default New Include selected
Select Main Program
Enter
Yes
TABLES: KNA1.
CASE SY-UCOMM.
WHEN ‘Display’.
SELECT SINGLE land1 name1 ort01 pstlz stras INTO wa_kna1
FROM KNA1
WHERE kunnr EQ KNA1-kunnr.
WHEN ‘Clear’.
CLEAR: wa_kna1, KNA1-kunnr.
WHEN ‘Exit’.
LEAVE PROGRAM.
ENDCASE.
KNA1-land1 = wa_kna1-land1.
KNA1-name1 = wa_kna1-name1.
KNA1-ort01 = wa_kna1-ort01.
KNA1-pstlz = wa_kna1-pstlz.
KNA1-stras = wa_kna1-stras.
Brief Flow:
1. PBO (Screen is called)
2. PAI (This event will triggers whenever you select a Button)
3. PBO (This will carry the data from Program Variables i.e. wa_kna1-
kunnr = KNA1-kunnr to screen field)
Object:
Truck Entry Screen
Vendor
Screen 100
Solution:
Step-1:
Go to SE11
Database Table: ZMM_DEMO
Create
Short Description: Truck Entry Table
Delivery Class: A
Table View Maintenance: Table View Maintained with Restrictions
Fields
Field key Data Element
MANDT _/ MANDT
DCNO _/ ZDCNO
DCDATE _/ ZDC_DATE
TNO ZTNO
BRGEW BRGEW
TWT TWT
NTGEW NTGEW
EBELN EBELN
LIFNR LIFNR
Technical Settings
Data Class: APPL1
Size Category: 0
Save
Back (F3)
Activate Table
Yes
Step-2:
Go to SE80
Function Group: ZTCGR
Enter
Yes
Short Text: Function Group for Truck Details
Enter
Local Object
Under ZTCGR you will find INCLUDES, Expand it
You will find 2 INCLUDES
Double click on an include with TOP as suffix
Select Display/Change option
TABLES: ZMM_DEMO1, LFA1.
CONTROLS: vcontrol TYPE TABLEVIEW USING SCREEN '100'.
DATA: n TYPE I,
wa_demo TYPE zmm_demo1,
wa_demo2 TYPE zmm_demo1,
it_demo TYPE TABLE OF zmm_demo1.
Activate
Back (F3)
Right click on ZTCGR function group
Create
Screen
You will find a pop-up
Program: SAPLZTCGR
Screen Number: 100
Enter
Short Description: Screen 100
Layout
F6
Table Name: LFA1
Enter
Select Lifnr
Enter
Place the field on top of the screen
Place a Box on the screen
Double click on box frame
Text: Truck Entry
Close
Place Table Control (last from 4th option) on the box
Double click on Table Control
At bottom under Separators check Vertical & check Horizontal
Close
F6
Table Name: wa_demo2
Select all fields except MANDT
Enter
Place the fields on table contro
Provide header text for each column of table control
Place 5 push buttons under table control
Provide Text & FCT code as per requirement
Flow Logic
Step-3:
Place cursor under PROCESS AFTER INPUT.
LOOP AT it_demo.
chain.
FIELD: wa_demo2-dcno,
ZMM_demo-dcdate,
ZMM_demo-tno,
ZMM_demo-brgew,
ZMM_demo-twt,
ZMM_demo-ntgew,
ZMM_demo-ebeln,
ZMM_demo-lifnr.
endchain.
MODULE tab_modify."" on CHAIN-REQUEST.
ENDLOOP.
MODULE USER_DML.
MODULE USER_COMMAND_0100.
ELSE.
append wa_demo2 to it_demo.
ENDIF.
CASE SY-UCOMM.
WHEN 'INSERT'.
MODIFY zmm_demo1 FROM wa_demo2.
IF SY-SUBRC EQ 0.
MESSAGE 'Record Inserted' TYPE 'S'.
ENDIF.
WHEN 'UPDATE'.
UPDATE zmm_demo1 SET brgew = wa_demo2-brgew
twt = wa_demo2-twt
ntgew = wa_demo2-ntgew
WHERE dcno = wa_demo2-dcno.
IF SY-SUBRC EQ 0.
MESSAGE 'Record Updated' TYPE 'S'.
ENDIF.
WHEN 'ENTER'.
wa_demo2-ntgew = wa_demo2-brgew - wa_demo2-twt.
ENDCASE.
ENDMODULE.
Activate
Back (F3)
lv_lifnr = lfa1-lifnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_lifnr
IMPORTING
OUTPUT = lv_lifnr
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
SELECT * FROM zmm_demo1 INTO TABLE it_demo WHERE lifnr =
lv_lifnr.
WHEN 'RESET'.
*REFRESH it_demo.
clear:zmm_demo1.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
IF zmm_demo1 IS NOT INITIAL.
MODIFY it_demo FROM zmm_demo1 INDEX vcontrol-current_line.
IF SY-SUBRC NE 0.
APPEND zmm_demo1 TO it_demo.
ENDIF.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
Activate
Back (F3)
Remove comment for MODULE STATUS_100.
Double click on STATUS_0100
Yes
Enter
Enter
Yes
SET PF-STATUS 'ZQUICK'.
* SET TITLEBAR 'xxx'.
MOVE wa_demo-dcno TO wa_demo2-dcno.
MOVE wa_demo-dcdate TO wa_demo2-dcdate.
MOVE wa_demo-tno TO wa_demo2-tno.
MOVE wa_demo-brgew TO wa_demo2-brgew.
MOVE wa_demo-twt TO wa_demo2-twt.
MOVE wa_demo-ntgew TO wa_demo2-ntgew.
MOVE wa_demo-ebeln TO wa_demo2-ebeln.
MOVE wa_demo-lifnr TO wa_demo2-lifnr.
DESCRIBE TABLE it_demo LINES n.
vcontrol-lines = n. "" //---it activates vertical scroll bar
Back (F3)
Activate screen
All Code:
PROCESS BEFORE OUTPUT.
LOOP AT it_demo INTO wa_demo WITH CONTROL vcontrol.
MODULE STATUS_0100.
ENDLOOP.
*
PROCESS AFTER INPUT.
LOOP AT it_demo.
chain.
FIELD: wa_demo2-dcno,
wa_demo2-dcdate,
wa_demo2-tno,
wa_demo2-brgew,
wa_demo2-twt,
wa_demo2-ntgew,
wa_demo2-ebeln,
wa_demo2-lifnr.
endchain.
MODULE tab_modiy."" on CHAIN-REQUEST.
ENDLOOP.
MODULE USER_DML.
MODULE USER_COMMAND_0100.
Ques-1: Suppose in table control when I entered few records then I selected
‘Enter’ option, I found that the records are completely vanished from table
control. Why it happens & What logic you will write to avoid problem?
Ans:
When you select ‘Enter’ control will moves from screen to program
In program there is no logic provided for storing the table control data in
internal table
So nothing is transferred back to table control screen
So it looks like empty
Logic:
IF it_demo IS NOT INITIAL.
MODIFY it_demo FROM wa_demo2 INDEX vcontrol-current_line.
ELSE.
append wa_demo2 to it_demo.
ENDIF.
CHAIN Keyword:
By default standard application allows screen level validations
If you want to perform field level validations you should write logic
explicitly using CHAIN……..ENDCHAIN