0% found this document useful (0 votes)
29 views

Aabap Dialog Program Overview

1. Dialog programming in SAP allows creating multi-screen programs to maintain database tables. 2. It involves defining screens with fields, flow logic using PBO and PAI modules, and moving between screens to view and update data. 3. An example program uses two screens - one to search a customer ID and another to edit the customer details. PBO and PAI modules define screen flow and data transfer between screens on input and output.

Uploaded by

rvigrag8805
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

Aabap Dialog Program Overview

1. Dialog programming in SAP allows creating multi-screen programs to maintain database tables. 2. It involves defining screens with fields, flow logic using PBO and PAI modules, and moving between screens to view and update data. 3. An example program uses two screens - one to search a customer ID and another to edit the customer details. PBO and PAI modules define screen flow and data transfer between screens on input and output.

Uploaded by

rvigrag8805
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 70

Dialog Programming Overview

SAP System : Dialog Processing (Report)


SAP GUI

Report zpsm1.
Request Tables customers.
List Select single * from
Generate Screen(List)
1 10
customers where id = 1.

Application Server Send Request Write: / customers-name.

Store request to queue


3 Dispatcher
Send List 2 Search for free WP SAP Buffer
9
Request Check Program in Program Buffer 7
Program
Queue Send request to WP 5 Execute ABAP
4 statement

D D D … D

8 6

SQL Request Load&Gen Program


Database Server
Dialog WP : Executable Program
Dialog WP Local Memory

TaskHandler Memory Space

ABAP Processor

DYNPRO Processor
List Buffer

DB Interface
Result Set Memory

Database
Types of ABAP Report

1. Report Listing
4 2. Drill-down Report
3. Control-break Report
4. ALV Report
SAP System : Dialog Processing (DIALOG)
SAP GUI

Program sapmzex001.
Request Include ….
Screen Set screen 100.
Generate Dialog Screen
1 10

Application Server Send Request


Store request to queue
3 Dispatcher
Send List 2 Search for free WP SAP Buffer
9
Request Check Program in Program Buffer 7
Program
Queue Send request to WP 5 Execute ABAP
4 statement

D D D … D

8 6

SQL Request Load&Gen Program


Database Server
Dialog WP : Dialog Program
Dialog WP Local Memory
ABAP Memory
TaskHandler

ABAP Processor

DYNPRO Processor
Screen Buffer

DB Interface
Result Set Memory

Database
Dialog Program : Transaction
Dialog Program Components
Transaction Code
Transaction Code

Dialog Program Program Naming Convention : SAPM…


Dialog Program

ABAP Module Pool


Screen : 100 PBO
(Screen Layout) Flow Logic

PAI ABAP Module Pool

PBO ABAP Module Pool


Screen : 200
(Screen Layout) Flow Logic

PAI ABAP Module Pool


SAP Transaction
DB 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 Area ABAP Work Area


ok_code

Screen Buffer
ABAP Memory Space
PBO
Element List

customers

id name city …
customers-id 0000000

customers-name
ok_code
PAI
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 Screen

OK Code Field or
Command Field
(ok_code in Element List)
Defining Screen (4 Steps)
 Screen Attribute
 Screen Layout
 Flow Logic Element List(ok_code field)

 Element List
Flow Logic in Screen 100
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.
PBO in Screen 100

MODULE status_0100 OUTPUT.


SET PF-STATUS ‘0100’.
SET TITLEBAR ‘0100’.
ENDMODULE.
PAI in Screen 100
MODULE 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 I

Maintain Customers Data


Screen : 100 Screen : 200
Example I
 Create Dialog Program SAPMZEX<nn> for
changing Customers table
 Screen 100

 Field customers-id

 Screen 200

 Field customers-id and customers-name


Example I
 Screen 100

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.
Example I
 Screen 100

MODULE status_0100 OUTPUT.


SET PF-STATUS ‘0100’.
SET TITLEBAR ‘0100’.
ENDMODULE.
Example I
 Screen 100
MODULE 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 200

PROCESS BEFORE OUTPUT.


MODULE STATUS_0200.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0200.
Example I
 Screen 200

MODULE 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
TABLES customers.
DATA ok_code TYPE sy-ucomm.
 Create Transaction Code
Transaction Code : ZEX<nn>
Exercise

Create Dialog Program : SAPMZCUST<nn>


Transaction Code : ZCUST<nn>
Exercise : Customers Maintenance
Screen : 100 Screen : 200
Setting the Cursor Position Dynamically

PROCESS 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 : PAI
MODULE 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 : PAI
MODULE 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 : PAI
MODULE 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 Logic

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.
MODULE clear_ok_code.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.
Clear OK_CODE at PBO
 Screen 100 : PBO
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘0100’.
SET TITLEBAR ‘0100’.
ENDMODULE.

MODULE clear_ok_code OUTPUT.


CLEAR ok_code.
ENDMODULE.
Checking User Input
Example II
Maintain Customers Data
 Check Input Data Manually
Example II
 Screen 100 : PAI
MODULE 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 III
Maintain 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 : PAI
MODULE 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 Transport
PROCESS AFTER INPUT.
MODULE a. •Transfer f3,f4
•Call module a
FILED f1 MODULE b. •Transfer f1
•Call module b
FILED f2 MODULE c.
•Transfer f2
MODULE d. •Call module c
Screen 100 •Call module d
f1 f2

f3 f4
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 <module> AT EXIT-COMMAND
 No other screen fields are transported to the
program except OK Code field
At exit-command
 Screen 100 : Flow Logic

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.

PROCESS AFTER INPUT.


MODULE exit AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
At exit-command
 Screen 100 : PAI

MODULE exit INPUT.


CASE ok_code.
LEAVE PROGRAM.
WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
Function Module
(POPUP_TO_CONFIRM_LOSS_OF_DATA)
Example IV
Maintain Customer Data
 Popup confirmation data using function

‘POPUP_TO_CONFIRM_LOSS_OF_DATA’
Example IV
 TOP Include
...
DATA ans.
Example IV
 Screen 100 : PAI
MODULE 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_<lock object>’
 Read data from Database Ex. Select single …
 Data Processing Ex. Update ...
 Release lock by calling function
‘DEQUEUE_<lock object>’
SAP Lock Object
 Transaction SE11 : Lock object
 ENQUEUE_<lock object>
 DEQUEUE_<lock object>
SAP Lock Object : Function Module
Example IV
 ENQUEUE /DEQUEUELock Object(SE11)
CALL FUNCTION ‘ENQUEUE_EZCUST<nn>’
CALL FUNCTION ‘DEQUEUE_EZCUST<nn>’

User 1 User 2
Example IV (I)
 Screen 100 : PAI
MODULE 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 : PAI
MODULE 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
IF sy-subrc <> 0.
CONCATENATE ‘Data was locked by :’ sy-msgv1 INTO mess.
sy-msgv3 sy-msgv4.
MESSAGE E000(38) WITH mess.
ELSE.
SELECT SINGLE * FROM customers WHERE id = customers-id.
...
Example IV
 Screen 200 : PAI
MODULE user_command_0200 INPUT.
...
WHEN ‘BACK’.
CALL FUNCTION ‘DEQUEUE_EZCUST00’
EXPORTING

id = customers-id.
LEAVE TO SCREEN 100.

Example IV
 Screen 200 : PAI
MODULE 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

You might also like