70
Dialog Programming Overview

ABAP Dialog Programming Overview

Embed Size (px)

DESCRIPTION

Download this and other parts of ABAP presentations from http://hotfile.com/dl/21410715/21bc2bb/SAP-ABAP-Slides.rar.htmlWant to get more SAP ABAP Materials ?Visit http://sapdocs.info/

Citation preview

Dialog Programming Overview

SAP System : Dialog Processing (Report)

Database Server

Application Server

Dispatcher

RequestQueue

D D D D…

SAP Buffer

Program

1

3

45

68

9

10

Report zpsm1.

Tables customers.

Select single * from

customers where id = 1.

Write: / customers-name.

Execute ABAP statement

Check Program in Program Buffer

7

Load&Gen Program

SQL Request

Send List

Generate Screen(List)Send Request

Request List

2 Search for free WP

Store request to queue

Send request to WP

SAP GUI

Dialog WP : Executable ProgramDialog WP : Executable ProgramDialog WP

TaskHandler

DYNPRO Processor

ABAP Processor

Database

Local Memory

Memory Space

DB Interface

List Buffer

Result Set Memory

Types of ABAP Report

1. Report Listing

2. Drill-down Report

3. Control-break Report

4. ALV Report

1

3

4

SAP System : Dialog Processing (DIALOG)

Database Server

Application Server

Dispatcher

RequestQueue

D D D D…

SAP Buffer

Program

1

3

45

68

9

10

Program sapmzex001.

Include ….

Set screen 100.

Execute ABAP statement

Check Program in Program Buffer

7

Load&Gen Program

SQL Request

Send List

Generate Dialog ScreenSend Request

Request Screen

2 Search for free WP

Store request to queue

Send request to WP

SAP GUI

Dialog WP : Dialog ProgramDialog WP : Dialog ProgramDialog WP

TaskHandler

DYNPRO Processor

ABAP Processor

Database

Local Memory

ABAP Memory

DB Interface

Screen Buffer

Result Set Memory

Dialog Program : Transaction

Dialog Program ComponentsTransaction Code

Transaction Code

Screen : 100100(Screen Layout)

Screen : 200200(Screen Layout)

Flow Logic

Flow Logic

PBO

PAI

ABAP Module Pool

ABAP Module Pool

PBO

PAI

ABAP Module Pool

ABAP Module Pool

Dialog ProgramDialog Program Program Naming Convention : SAPM…

SAP Transaction

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

DB Commit DB Commit

Data Transfer (Local Memory)

Screen BufferABAP Memory Space

Screen Work Area ABAP Work Area

PBOPBO

PAIPAI

customers-id

customers-name

customers

id name city … 0000000

ok_code

ok_code

Local Memory

Element List

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 orCommand 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 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 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 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 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 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 IncludeTABLES customers.DATA ok_code TYPE sy-ucomm. Create Transaction CodeTransaction 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

Cursor Position

PROCESS BEFORE OUTPUT. MODULE STATUS_0200. MODULE set_cursor.

MODULE set_cursor OUTPUT. SET CURSOR FIELD ‘CUSTOMERS-CITY’ OFFSET 3. ENDMODULE.

Avoiding the Unexpected Processing Step of ok_code

Field

1. Auxiliary OK_CODE Variable

TOP IncludeTABLES 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 : 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 : 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 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 : 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 II

Maintain Customers Data Check Input Data ManuallyCheck 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 Check Input Data Using FieldField CommandCommand

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 Transport

PROCESS AFTER INPUT. MODULE a. FILED f1 MODULE b. FILED f2 MODULE c. MODULE d.

f1 f2

f3 f4

Screen 100

•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

When user chooses a function with type E,the screen flow logic jumps directly to the following statement

MODULE <module> AT EXIT-MODULE <module> AT EXIT-COMMANDCOMMAND

No other screen fields are transported to the program except OK Code field

At exit-command

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. WHEN ‘EXIT’. LEAVE PROGRAM. ENDCASE.

ENDMODULE.

LEAVE PROGRAM.

Function Module (POPUP_TO_CONFIRM_LOSS_OF_DAT

A)

Example IV

Maintain Customer Data Popup confirmation data using Popup confirmation data using function function ‘ ‘POPUP_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

SAP LUW

DB LUW

SAP Database Maintenance Steps

Check data locking by calling function ‘ENQUEUE_<lock objectlock object>’

Read data from Database Ex. Select single …

Data Processing Ex. Update ... Release lock by calling function

‘DEQUEUE_<lock objectlock object>’

SAP Lock Object

Transaction SE11 : Lock object ENQUEUE_<lock objectlock object> DEQUEUE_<lock objectlock 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 id = customers-id ... 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.

...

message id sy-msgid type sy-msgty number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

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