SlideShare a Scribd company logo
Dialog Programming Overview
SAP System : Dialog Processing (Report) Database Server Application Server Dispatcher Request Queue D D D D … SAP Buffer Program … … 1 3 4 5 6 8 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 Program Dialog 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 Request Queue D D D D … SAP Buffer Program … … 1 3 4 5 6 8 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 Screen Send Request Request Screen 2 Search for free WP Store request to queue Send request to WP SAP GUI
Dialog WP : Dialog Program Dialog WP TaskHandler DYNPRO Processor ABAP Processor Database Local Memory ABAP Memory   DB Interface Screen Buffer Result Set Memory
Dialog Program : Transaction
Dialog Program Components Transaction Code Screen :  100 (Screen Layout) Screen :  200 (Screen Layout) Flow Logic Flow Logic PBO PAI ABAP Module Pool ABAP Module Pool PBO PAI ABAP Module Pool ABAP Module Pool Dialog 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 Buffer ABAP Memory Space Screen Work Area ABAP Work Area PBO PAI 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 or Command Fi e ld (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 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 : SAPMZ CUST< nn > Transaction Code : Z CUST< 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 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. 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-COMMAND 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_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 SAP LUW DB 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 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

More Related Content

PPT
Module pool programming
PDF
Dialog programming ABAP
PDF
Module-Pool-Tutorial.pdf
PPT
07.Advanced Abap
PPTX
Sap User Exit for Functional Consultant
PPT
08.Abap Dialog Programming Overview
PDF
Bapi step-by-step
DOCX
Field symbols
Module pool programming
Dialog programming ABAP
Module-Pool-Tutorial.pdf
07.Advanced Abap
Sap User Exit for Functional Consultant
08.Abap Dialog Programming Overview
Bapi step-by-step
Field symbols

What's hot (20)

PPT
Ab1011 module pool programming
DOC
Basic Debugging
PPT
Message, Debugging, File Transfer and Type Group
PDF
Sap Abap Reports
PPTX
SAP ALE Idoc
PPTX
Abap dictionary 1
PDF
Abap reports
PDF
SAP ABAP data dictionary
PPT
07 sap scripts
PDF
Sap abap tutorial
PPTX
Sap Purchase Order Workflow
PPT
Alv theory
PPT
abap list viewer (alv)
PPT
Introduction to ABAP
PPTX
PPTX
SAP ABAp module Pool programming give by Rahul Mehta
PPT
How to delete the production order - murali krishna nookella
PPT
Chapter 02 sap script forms
PPT
Abap function module help
PDF
Ps training mannual power users
Ab1011 module pool programming
Basic Debugging
Message, Debugging, File Transfer and Type Group
Sap Abap Reports
SAP ALE Idoc
Abap dictionary 1
Abap reports
SAP ABAP data dictionary
07 sap scripts
Sap abap tutorial
Sap Purchase Order Workflow
Alv theory
abap list viewer (alv)
Introduction to ABAP
SAP ABAp module Pool programming give by Rahul Mehta
How to delete the production order - murali krishna nookella
Chapter 02 sap script forms
Abap function module help
Ps training mannual power users
Ad

Viewers also liked (14)

PPT
Sap abap ale idoc
PPT
ABAP Open SQL & Internal Table
PPT
List Processing in ABAP
PPT
ABAP Advanced List
PPT
Modularization & Catch Statement
PPT
SAP Accounts Reveivable Functions | http://sapdocs.info
PPT
ABAP Programming Overview
PPT
Open SQL & Internal Table
PPT
ABAP Message, Debugging, File Transfer and Type Group
PPT
List Processing in ABAP
PPT
SAP Accounts Reveivable Customer Master | http://sapdocs.info
PPT
SAP Accounts Reveivable Introduction | http://sapdocs.info
PPT
ABAP Event-driven Programming &Selection Screen
PPT
HR ABAP Technical Overview | http://sapdocs.info/
Sap abap ale idoc
ABAP Open SQL & Internal Table
List Processing in ABAP
ABAP Advanced List
Modularization & Catch Statement
SAP Accounts Reveivable Functions | http://sapdocs.info
ABAP Programming Overview
Open SQL & Internal Table
ABAP Message, Debugging, File Transfer and Type Group
List Processing in ABAP
SAP Accounts Reveivable Customer Master | http://sapdocs.info
SAP Accounts Reveivable Introduction | http://sapdocs.info
ABAP Event-driven Programming &Selection Screen
HR ABAP Technical Overview | http://sapdocs.info/
Ad

Similar to Dialog Programming Overview (20)

PPT
ABAP Dialog Programming Overview.ppt
PPT
08.abap dialog programming overview
DOCX
Kalyan 27 oct 2018
PPTX
SAP ABAP Dialog Programming A Deep Dive.pptx
PDF
Complete reference to_abap_basics
DOC
SAP ABAP Online Training
PPSX
SAP ABAP online training
PPT
258lec11
PPTX
SAP ABAP Online Course Training | Imaginelife
PPT
Abap slide class3
PDF
Abap slides set1
DOC
Complete list of all sap abap keywords
PDF
SAP ABAP Online Training
DOC
Sap abap online training course
PDF
SAP ABAP Online Training
PPT
Lecture05 abap on line
PPTX
PPTX
PPT
03 abap3-090715081232-phpapp01 (1)
PPT
03 abap3-090715081232-phpapp01 (1)
ABAP Dialog Programming Overview.ppt
08.abap dialog programming overview
Kalyan 27 oct 2018
SAP ABAP Dialog Programming A Deep Dive.pptx
Complete reference to_abap_basics
SAP ABAP Online Training
SAP ABAP online training
258lec11
SAP ABAP Online Course Training | Imaginelife
Abap slide class3
Abap slides set1
Complete list of all sap abap keywords
SAP ABAP Online Training
Sap abap online training course
SAP ABAP Online Training
Lecture05 abap on line
03 abap3-090715081232-phpapp01 (1)
03 abap3-090715081232-phpapp01 (1)

More from sapdocs. info (20)

PDF
SAP PM Master Data Training Guide
DOCX
SAP SD Certification (C_TSCM62_66) Preparation Training Notes
DOCX
Variant Configuration in SAP PP: Beginner's Guide
PDF
SAP FICO BBP Sample Document PDF NEW!
PDF
SAP PP MRP Guide for Beginners
PDF
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
PDF
SAP PM Training Manual - www.sapdocs.info
PDF
ABAP Basico para Consultores Funcionales
PDF
SAP Configuration Guide for Functional Modules (Based on IDES)
PDF
SAP FI-AP TCODES & MENU PATHS
PDF
SAP FI-AR TCODES & MENU PATHS
DOC
SAP CO Configuration Guide - Exclusive Document
DOC
SAP PP End User Document - www.sapdocs.info
PDF
ABAP for Beginners - www.sapdocs.info
PDF
SAP MM Configuration - Real Project Documentation
PDF
SAP FI AP: Configuration & End User Guide
PDF
SAP FI AR: End User Guide for Beginners
PDF
SAP FI AP: End User Guide for Beginners
PDF
SAP FI Asset Accounting: End User Guide for Beginners
PDF
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
SAP PM Master Data Training Guide
SAP SD Certification (C_TSCM62_66) Preparation Training Notes
Variant Configuration in SAP PP: Beginner's Guide
SAP FICO BBP Sample Document PDF NEW!
SAP PP MRP Guide for Beginners
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
SAP PM Training Manual - www.sapdocs.info
ABAP Basico para Consultores Funcionales
SAP Configuration Guide for Functional Modules (Based on IDES)
SAP FI-AP TCODES & MENU PATHS
SAP FI-AR TCODES & MENU PATHS
SAP CO Configuration Guide - Exclusive Document
SAP PP End User Document - www.sapdocs.info
ABAP for Beginners - www.sapdocs.info
SAP MM Configuration - Real Project Documentation
SAP FI AP: Configuration & End User Guide
SAP FI AR: End User Guide for Beginners
SAP FI AP: End User Guide for Beginners
SAP FI Asset Accounting: End User Guide for Beginners
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info

Recently uploaded (20)

PDF
COST SHEET- Tender and Quotation unit 2.pdf
PDF
How to Get Funding for Your Trucking Business
PPT
Data mining for business intelligence ch04 sharda
PDF
Ôn tập tiếng anh trong kinh doanh nâng cao
PPTX
ICG2025_ICG 6th steering committee 30-8-24.pptx
PDF
Katrina Stoneking: Shaking Up the Alcohol Beverage Industry
PDF
Chapter 5_Foreign Exchange Market in .pdf
PPTX
Amazon (Business Studies) management studies
PDF
MSPs in 10 Words - Created by US MSP Network
PPTX
CkgxkgxydkydyldylydlydyldlyddolydyoyyU2.pptx
PPTX
Dragon_Fruit_Cultivation_in Nepal ppt.pptx
PPTX
New Microsoft PowerPoint Presentation - Copy.pptx
PDF
kom-180-proposal-for-a-directive-amending-directive-2014-45-eu-and-directive-...
PDF
Unit 1 Cost Accounting - Cost sheet
PPTX
job Avenue by vinith.pptxvnbvnvnvbnvbnbmnbmbh
PDF
DOC-20250806-WA0002._20250806_112011_0000.pdf
PDF
Stem Cell Market Report | Trends, Growth & Forecast 2025-2034
PDF
SIMNET Inc – 2023’s Most Trusted IT Services & Solution Provider
PDF
Nidhal Samdaie CV - International Business Consultant
PDF
WRN_Investor_Presentation_August 2025.pdf
COST SHEET- Tender and Quotation unit 2.pdf
How to Get Funding for Your Trucking Business
Data mining for business intelligence ch04 sharda
Ôn tập tiếng anh trong kinh doanh nâng cao
ICG2025_ICG 6th steering committee 30-8-24.pptx
Katrina Stoneking: Shaking Up the Alcohol Beverage Industry
Chapter 5_Foreign Exchange Market in .pdf
Amazon (Business Studies) management studies
MSPs in 10 Words - Created by US MSP Network
CkgxkgxydkydyldylydlydyldlyddolydyoyyU2.pptx
Dragon_Fruit_Cultivation_in Nepal ppt.pptx
New Microsoft PowerPoint Presentation - Copy.pptx
kom-180-proposal-for-a-directive-amending-directive-2014-45-eu-and-directive-...
Unit 1 Cost Accounting - Cost sheet
job Avenue by vinith.pptxvnbvnvnvbnvbnbmnbmbh
DOC-20250806-WA0002._20250806_112011_0000.pdf
Stem Cell Market Report | Trends, Growth & Forecast 2025-2034
SIMNET Inc – 2023’s Most Trusted IT Services & Solution Provider
Nidhal Samdaie CV - International Business Consultant
WRN_Investor_Presentation_August 2025.pdf

Dialog Programming Overview

  • 2. SAP System : Dialog Processing (Report) Database Server Application Server Dispatcher Request Queue D D D D … SAP Buffer Program … … 1 3 4 5 6 8 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
  • 3. Dialog WP : Executable Program Dialog WP TaskHandler DYNPRO Processor ABAP Processor Database Local Memory Memory Space DB Interface List Buffer Result Set Memory
  • 4. Types of ABAP Report 1. Report Listing 2. Drill-down Report 3. Control-break Report 4. ALV Report 1 3 4
  • 5. SAP System : Dialog Processing (DIALOG) Database Server Application Server Dispatcher Request Queue D D D D … SAP Buffer Program … … 1 3 4 5 6 8 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 Screen Send Request Request Screen 2 Search for free WP Store request to queue Send request to WP SAP GUI
  • 6. Dialog WP : Dialog Program Dialog WP TaskHandler DYNPRO Processor ABAP Processor Database Local Memory ABAP Memory DB Interface Screen Buffer Result Set Memory
  • 7. Dialog Program : Transaction
  • 8. Dialog Program Components Transaction Code Screen : 100 (Screen Layout) Screen : 200 (Screen Layout) Flow Logic Flow Logic PBO PAI ABAP Module Pool ABAP Module Pool PBO PAI ABAP Module Pool ABAP Module Pool Dialog Program Program Naming Convention : SAPM …
  • 9. 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
  • 10. Data Transfer (Local Memory) Screen Buffer ABAP Memory Space Screen Work Area ABAP Work Area PBO PAI customers-id customers-name customers id name city … 0000000 ok_code ok_code Local Memory Element List
  • 11. 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.
  • 12. OK Code Field in Screen OK Code Field or Command Fi e ld (ok_code in Element List)
  • 13. Defining Screen (4 Steps) Screen Attribute Screen Layout Flow Logic Element List Element List(ok_code field)
  • 14. Flow Logic in Screen 100 PROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
  • 15. PBO in Screen 100 MODULE status_0100 OUTPUT. SET PF-STATUS ‘0100’. SET TITLEBAR ‘0100’. ENDMODULE.
  • 16. 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.
  • 17. 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
  • 18. Example I Maintain Customers Data Screen : 100 Screen : 200
  • 19. Example I Create Dialog Program SAPMZEX < nn > for changing Customers table Screen 100 Field customers-id Screen 200 Field customers-id and customers-name
  • 20. Example I Screen 100 PROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
  • 21. Example I Screen 100 MODULE status_0100 OUTPUT. SET PF-STATUS ‘0100’. SET TITLEBAR ‘0100’. ENDMODULE.
  • 22. 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.
  • 23. Example I Screen 200 PROCESS BEFORE OUTPUT. MODULE STATUS_0200. PROCESS AFTER INPUT. MODULE USER_COMMAND_0200.
  • 24. Example I Screen 200 MODULE status_0200 OUTPUT. SET PF-STATUS ‘0200’. SET TITLEBAR ‘0200’. ENDMODULE.
  • 25. 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.
  • 26. Example I TOP Include TABLES customers. DATA ok_code TYPE sy-ucomm. Create Transaction Code Transaction Code : ZEX< nn >
  • 27. Exercise Create Dialog Program : SAPMZ CUST< nn > Transaction Code : Z CUST< nn >
  • 28. Exercise : Customers Maintenance Screen : 100 Screen : 200
  • 29. 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.
  • 30. Avoiding the Unexpected Processing Step of ok_code Field
  • 31. 1. Auxiliary OK_CODE Variable TOP Include TABLES customers. DATA ok_code TYPE sy-ucomm. DATA save_ok TYPE sy-ucomm.
  • 32. 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.
  • 33. 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.
  • 34. 2. Specify the Enter Function at GUI Status
  • 35. 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.
  • 36. 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.
  • 37. 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.
  • 39. Example II Maintain Customers Data Check Input Data Manually
  • 40. 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.
  • 41. Example III Maintain Customers Data Check Input Data Using Field Command
  • 42. Example III – Field Statement Screen 100 : Flow Logic (PAI) PROCESS AFTER INPUT. FIELD customers-id MODULE user_command_0100.
  • 43. 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.
  • 44. 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
  • 45. 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.
  • 46. 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
  • 51. Function Type : Exit Command
  • 52. 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
  • 53. 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.
  • 54. At exit-command Screen 100 : PAI MODULE exit INPUT. CASE ok_code. WHEN ‘EXIT’. LEAVE PROGRAM . ENDCASE. ENDMODULE. LEAVE PROGRAM.
  • 55. Function Module ( POPUP_TO_CONFIRM_LOSS_OF_DATA)
  • 56. Example IV Maintain Customer Data Popup confirmation data using function ‘ POPUP_TO_CONFIRM_LOSS_OF_DATA’
  • 57. Example IV TOP Include ... DATA ans.
  • 58. 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.
  • 59. SAP Transaction : Enqueue Lock Object
  • 60. 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
  • 61. SAP Transaction(LUW) DB Commit DB Commit SAP LUW DB LUW
  • 62. 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 >’
  • 63. SAP Lock Object Transaction SE11 : Lock object ENQUEUE_< lock object > DEQUEUE_< lock object >
  • 64. SAP Lock Object : Function Module
  • 65. Example IV ENQUEUE /DEQUEUELock Object(SE11) CALL FUNCTION ‘ENQUEUE_EZCUST < nn > ’ CALL FUNCTION ‘DEQUEUE_EZCUST < nn > ’ User 1 User 2
  • 66. 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. ...
  • 67. 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.
  • 68. Example IV Screen 200 : PAI MODULE user_command_0200 INPUT. ... WHEN ‘BACK’. CALL FUNCTION ‘DEQUEUE_EZCUST00’ EXPORTING … id = customers-id. LEAVE TO SCREEN 100. …
  • 69. 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. ... ...