Date post: | 11-Sep-2014 |
Category: |
Documents |
Upload: | ashish-rajan-singh |
View: | 156 times |
Download: | 12 times |
Dialog Programming Overview
SAP System : Dialog Processing (Report)SAP GUIReport zpsm1.
Request
Tables customers.
Application ServerStore request to queue3
Send Request
1
Generate Screen(List)10
List
Select single * from customers where id = 1. Write: / customers-name.
DispatcherSend List2 9
Search for free WP
SAP BufferProgram
Request Queue Send request to WP4
Check Program in Program Buffer5
7
Execute ABAP statement
D8
DSQL Request
D
D6
Load&Gen Program
Database Server
Dialog WP : Executable ProgramDialog WPTaskHandler
Local Memory
Memory Space
ABAP Processor
DYNPRO Processor
List Buffer
DB InterfaceResult Set Memory
Database
Types of ABAP Report1 3
1. Report Listing
4
2. Drill-down Report 3. Control-break Report 4. ALV Report
SAP System : Dialog Processing (DIALOG)SAP GUIProgram sapmzex001.
Request
Include .
Application ServerStore request to queue3
Send Request
1
Generate Dialog Screen10
Screen
Set screen 100.
DispatcherSend List2 9
Search for free WP
SAP BufferProgram
Request Queue Send request to WP4
Check Program in Program Buffer5
7
Execute ABAP statement
D8
DSQL Request
D
D6
Load&Gen Program
Database Server
Dialog WP : Dialog ProgramDialog WPTaskHandler
Local MemoryABAP Memory
ABAP Processor
DYNPRO Processor
Screen Buffer
DB InterfaceResult Set Memory
Database
Dialog Program : Transaction
Dialog Program ComponentsTransaction Code
Dialog Program
Program Naming Convention : SAPM
Screen : 100(Screen Layout)Flow Logic
PBOPAI
ABAP Module Pool
ABAP Module Pool
Screen : 200(Screen Layout)Flow Logic
PBO PAI
ABAP Module Pool
ABAP Module Pool
SAP TransactionDB Commit DB Commit
An SAP transaction consists of Dialog steps. A Dialog step begins when the user press Enter,activates a function by pressing a function key,double-clicks or chooses a function from a menu.It ends when the next screen is display In the course of a Dialog step,The PAI modules belonging to the current screen and the PBO modules belonging to the next screen
Data Transfer (Local Memory)Local Memory
Screen Work Areaok_code
ABAP Work AreaABAP Memory Spacecustomers id name city
Screen BufferElement List
PBO
customers-id customers-name
0000000
PAI
ok_code
Flow Logic
Process Before Output(PBO)
After it has processed all of the modules in the PBO processing block, the system copies the contents of the fields in the ABAP work area to their corresponding fields in the screen work area.
Process After Input(PAI)
Before it processes the first module in the PAI processing block, the system copies the contents of the fields in the screen work area to their corresponding fields in the ABAP work area.
OK Code Field in ScreenOK Code Field or Command Field (ok_code in Element List)
Defining Screen (4 Steps)
Screen Attribute Screen Layout Flow Logic Element List
Element List(ok_code field)
Flow Logic in Screen 100PROCESS BEFORE OUTPUT. MODULE STATUS_0100.
PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
PBO in Screen 100MODULE status_0100 OUTPUT. SET PF-STATUS 0100. SET TITLEBAR 0100. ENDMODULE.
PAI in Screen 100MODULE user_command_0100 INPUT. CASE ok_code. WHEN EXIT. Leave program SET SCREEN 0. LEAVE SCREEN. Leave to screen 0 WHEN SAVE. UPDATE customers. MESSAGE S000(38) WITH Update OK. SET SCREEN 50. LEAVE SCREEN. ENDCASE. ENDMODULE.
How to Create Dialog Program
Transaction SE80 : Create Dialog Program Create Screen(4 steps) Screen Attribute Screen Layout Flow Logic(PBO,PAI) Define Variable ok_code in Element List Define Data Object in ABAP Work Area at TOP Include(Tables, Data,...) Check and Activate Dialog Program Create Transaction Code
Example IMaintain Customers DataScreen : 100
Screen : 200
Example I
Create Dialog Program SAPMZEX for changing Customers table Screen 100 Field customers-id Screen 200 Field customers-id and customers-name
Example I
Screen 100PROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
Example I
Screen 100MODULE status_0100 OUTPUT. SET PF-STATUS 0100. SET TITLEBAR 0100. ENDMODULE.
Example I
Screen 100MODULE user_command_0100 INPUT. CASE ok_code. WHEN BACK. LEAVE PROGRAM. leave to screen 0 WHEN space. if not assign Enter Key SELECT SINGLE * FROM customers WHERE id = customers-id. LEAVE TO SCREEN 200. ENDCASE. ENDMODULE.
Example I
Screen 200PROCESS BEFORE OUTPUT. MODULE STATUS_0200. PROCESS AFTER INPUT. MODULE USER_COMMAND_0200.
Example I
Screen 200MODULE status_0200 OUTPUT. SET PF-STATUS 0200. SET TITLEBAR 0200. ENDMODULE.
Example I
Screen 200
MODULE user_command_0200 INPUT. CASE ok_code. WHEN BACK. LEAVE TO SCREEN 100. set screen 100 WHEN SAVE. UPDATE customers. MESSAGE S000(38) WITH Update OK!. LEAVE TO SCREEN 100. ENDCASE. ENDMODULE.
Example I
TOP Include Create Transaction Code
TABLES customers. DATA ok_code TYPE sy-ucomm.
Transaction Code : ZEX
ExerciseCreate Dialog Program : SAPMZCUST Transaction Code : ZCUST
Exercise : Customers MaintenanceScreen : 100
Screen : 200
Setting the Cursor Position DynamicallyPROCESS BEFORE OUTPUT. MODULE STATUS_0200. MODULE set_cursor.
MODULE set_cursor OUTPUT. SET CURSOR FIELD CUSTOMERS-CITY OFFSET 3. ENDMODULE.
Cursor Position
Avoiding the Unexpected Processing Step of ok_code Field
1. Auxiliary OK_CODE Variable
TOP Include
TABLES customers. DATA ok_code TYPE sy-ucomm. DATA save_ok TYPE sy-ucomm.
Example I - Change
Screen 100 : PAIMODULE user_command_0100 INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN BACK. LEAVE PROGRAM. WHEN space. SELECT SINGLE * FROM customers WHERE id = customers-id. LEAVE TO SCREEN 200. ENDCASE. ENDMODULE.
Example I - Change
Screen 200 : PAIMODULE user_command_0200 INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN BACK. LEAVE TO SCREEN 100. WHEN space. LEAVE TO SCREEN 200. WHEN SAVE. UPDATE customers. MESSAGE s000(38) WITH Update OK!. LEAVE TO SCREEN 100. ENDCASE.
ENDMODULE.
2. Specify the Enter Function at GUI Status
Check Enter Function
Screen 100 : PAIMODULE user_command_0100 INPUT. CASE ok_code. WHEN BACK. LEAVE PROGRAM. WHEN ENTE. SELECT SINGLE * FROM customers WHERE id = customers-id. LEAVE TO SCREEN 200. ENDCASE.
ENDMODULE.
3. Clear OK_CODE at PBO
Screen 100 : Flow LogicPROCESS BEFORE OUTPUT. MODULE STATUS_0100. MODULE clear_ok_code. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
Clear OK_CODE at PBO
Screen 100 : PBOMODULE status_0100 OUTPUT. SET PF-STATUS 0100. SET TITLEBAR 0100. ENDMODULE.
MODULE clear_ok_code OUTPUT. CLEAR ok_code. ENDMODULE.
Checking User Input
Example IIMaintain Customers Data
Check Input Data Manually
Example II
Screen 100 : PAIMODULE user_command_0100 INPUT. ... WHEN SPACE. SELECT SINGLE * FROM customers WHERE id = customers-id. IF sy-subrc 0. MESSAGE S000(38) WITH Customers data not found. LEAVE TO SCREEN 100. ELSE. LEAVE TO SCREEN 200. ENDIF. ENDCASE. ENDMODULE.
Example IIIMaintain Customers Data
Check Input Data Using Field Command
Example III Field Statement
Screen 100 : Flow Logic (PAI)PROCESS AFTER INPUT. FIELD customers-id MODULE user_command_0100.
Example III
Screen 100 : PAIMODULE user_command_0100 INPUT. ... WHEN SPACE. SELECT SINGLE * FROM customers WHERE id = customers-id. IF sy-subrc 0. MESSAGE E000(38) WITH Customers data not found. ELSE. LEAVE TO SCREEN 200. ENDIF. ENDCASE. ENDMODULE.
Field Input Checking
If you want to check input values in the module pool and start dialog in the event of a negative result,you use the FIELD statement with the addition MODULE. If the module results in an error(E) or warning(W) message,the screen is redisplayed without processing the PBO modules.The message text is displayed and only the field being checked by this module becomes ready for input again
Field Statement With More Than 1 Field
Screen 100 : Flow Logic (PAI)PROCESS AFTER INPUT. CHAIN. FIELD: customers-id,customers-custtype MODULE user_command_0100. ENDCHAIN.
PROCESS AFTER INPUT. CHAIN. FIELD customers-id MODULE user_command_0100. FIELD customers-custtype MODULE user_command_0100. ENDCHAIN.
Field Statement & Data TransportPROCESS AFTER INPUT. MODULE a. FILED f1 MODULE b. FILED f2 MODULE c. MODULE d.Screen 100f1 f3 f2 f4
Transfer f3,f4 Call module a Transfer f1 Call module b Transfer f2 Call module c Call module d
Required Field
Required Field
Required Field
At exit-command
Function Type : Exit Command
At exit-command
When user chooses a function with type E,the screen flow logic jumps directly to the following statement
MODULE AT EXIT-COMMAND
No other screen fields are transported to the program except OK Code field
At exit-command
Screen 100 : Flow LogicPROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. MODULE exit AT EXIT-COMMAND. MODULE USER_COMMAND_0100.
At exit-command
Screen 100 : PAIMODULE exit INPUT. CASE ok_code. WHEN EXIT. LEAVE PROGRAM. ENDCASE. ENDMODULE.
LEAVE PROGRAM.
Function Module (POPUP_TO_CONFIRM_LOSS_OF_DATA)
Example IVMaintain Customer Data
Popup confirmation data using functionPOPUP_TO_CONFIRM_LOSS_OF_DATA
Example IV
TOP Include... DATA ans.
Example IV
Screen 100 : PAIMODULE exit INPUT.CALL FUNCTION POPUP_TO_CONFIRM_LOSS_OF_DATA EXPORTING textline1 = Are you sure? titel = Please Confirm!!! IMPORTING answer = ans. IF ans = J. J = Ja in German= Yes in English LEAVE PROGRAM. ELSE. ENDIF.
ENDMODULE.
SAP Transaction : Enqueue Lock Object
SAP Transaction & DB Transaction
Each Dialog step can contain update requests(INSERT,DELETE,UPDATE) After each Dialog step,the R/3 system automatically passes a database commit to the database system.The database system then distributes the update requests from the individual dialog steps across several database transactions A rollback in one Dialog step has no effect on database updates performed in previous Dialog steps
SAP Transaction(LUW)DB Commit DB Commit
DB LUW
SAP LUW
SAP Database Maintenance Steps
Check data locking by calling function ENQUEUE_ Read data from Database Ex. Select single Data Processing Ex. Update ... Release lock by calling function DEQUEUE_
SAP Lock Object
Transaction SE11 : Lock object
ENQUEUE_ DEQUEUE_
SAP Lock Object : Function Module
Example IV
ENQUEUE /DEQUEUELock Object(SE11) CALL FUNCTION ENQUEUE_EZCUST CALL FUNCTION DEQUEUE_EZCUST
User 1
User 2
Example IV (I)
Screen 100 : PAIMODULE user_command_0100 INPUT. ... WHEN SPACE. CALL FUNCTION ENQUEUE_EZCUST00 EXPORTING id = customers-id EXCEPTIONS ... IF sy-subrc 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE. SELECT SINGLE * FROM customers WHERE id = customers-id. ...
Example IV (II)
Screen 100 : PAIMODULE user_command_0100 INPUT. ... WHEN SPACE. CALL FUNCTION ENQUEUE_EZCUST00 EXPORTING message id sy-msgid type sy-msgty number id = customers-id sy-msgno with sy-msgv1 sy-msgv2 ... sy-msgv3 sy-msgv4. IF sy-subrc 0. CONCATENATE Data was locked by : sy-msgv1 INTO mess. MESSAGE E000(38) WITH mess. ELSE. SELECT SINGLE * FROM customers WHERE id = customers-id. ...
Example IV
Screen 200 : PAIMODULE user_command_0200 INPUT. ... WHEN BACK. CALL FUNCTION DEQUEUE_EZCUST00 EXPORTING id = customers-id. LEAVE TO SCREEN 100.
Example IV
Screen 200 : PAIMODULE user_command_0200 INPUT. ... WHEN SAVE. UPDATE customers. MESSAGE S000(38) WITH Update OK!. CALL FUNCTION DEQUEUE_EZCUST00 EXPORTING id = customers-id. LEAVE TO SCREEN 100. ... ...
Monitoring Enqueue Lock : SM12