ABAP Event-driven Programming &Selection Screen

  • 27,932 views
Uploaded on

You can find more SAP ABAP documents at http://sapdocs.info/category/sap/abap/

You can find more SAP ABAP documents at http://sapdocs.info/category/sap/abap/

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
27,932
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
1,808
Comments
3
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ABAP Chapter 4  Event-driven Programming  Selection Screen
  • 2. Event-driven Programming
  • 3. Application Driven Programming REPORT ztest. DATA: today TYPE D. today = ‘19991231’. today = today + 1. WRITE: / today.
  • 4. Event-Driven Programming Data tmp type i. Start-of-Selection. Write: / ‘This is ’. Write: / ‘Basic List’. At line-selection. Write: / ‘This is ’. Write: ‘Detail List’.
  • 5. Events  START-OF-SELECTION.  END-OF-SELECTION.  TOP-OF-PAGE.  TOP-OF-PAGE DURING LINE- SELECTION.  END-OF-PAGE.  AT LINE-SELECTION.  AT USER-COMMAND.  INITIALIZATION.  AT SELECTION-SCREEN.
  • 6. AT LINE-SELECTION Event (Drill-down Report)
  • 7. AT LINE-SELECTION Start-of-selection. Write : ‘Basic List’. At Line-selection. Write : ‘Detail List’. Double Click Basic list
  • 8. Navigating Between Lists Exit Detail list 20 ABAP Editor Detail list 2 Cancel Detail list 1 Basic list Back
  • 9. Detail List and SY-LSIND Detail list 2 Start-of-selection. SY-LSIND = 2 write: ‘Basic List’. AT Line-selection. CASE sy-lsind. Detail list 1 SY-LSIND = 1 WHEN 1. write: ‘Detail List #1’. WHEN 2. write: ‘Detail List #2’. Basic list ENDCASE.
  • 10. At Line Selection Tables customers. Start-of-Selection. Select * from customers. write : / customers-name . Endselect. At line-selection. Write: ‘You Choose :’ , customers- name.
  • 11. At Line Selection(Hide Statement) Tables customers. List Buffer Start-of-Selection. John Peter Select * from customers. David write : / customers-name. Hide customers-name. Endselect. HIDE area of list level 1 At line-selection. line Field name Value Write: ‘You Choose :’ , 1 2 customers-name customers-name John Peter customers-name. 3 customers-name David
  • 12. Hide Area in List Application Server Dialog WP Local Memory Memory Space TaskHandler Customers Structure 3 | David | .... ABAP Processor List buffer DYNPRO Processor Basic List John Peter HIDE area of list level 1 line Field name Value David DB Interface 1 2 customers-name customers-name John Peter Result Set Memory 3 customers-name David Database Server Database
  • 13. At Line Selection(Hide Statement) Detail List Basic List John You choose : Peter Peter 5 David At Line-selection 1 SY-LILLI = 2 4 HIDE area of list level 1 Customers Structure 2 line Field name Value 3 | Peter | .... 1 customers-name John 2 customers-name Peter 3 3 customers-name David
  • 14. At Line Selection(Hide Statement) Tables customers. List Buffer Start-of-Selection. 00000001 John 00000002 Peter Select * from customers. 00000003 David write : / customers-id,customers- name. Hide: customers-id,customers-name. 1 HIDE area of list level line Field name Value Endselect. 1 customers-id 00000001 1 customers-name John At line-selection. 2 customers-id 00000002 2 customers-name Peter Write: ‘You Choose :’ , customers-id, …
  • 15. At Line Selection(Hide Statement) Basic List Detail List You choose : 00000002 Peter 00000001 John 00000002 Peter 5 00000003 David At Line-selection 1 SY-LILLI = 2 4 HIDE area of list level 1 Customers Structure 2 line Field name Value 2 | Peter | .... … … … 2 2 customers-id customers-name 00000002 Peter 3 3 customers-id 00000003 …
  • 16. At Line Selection Tables: spfli,sflight. Basic List (SPFLI) Start-of-selection. Select * from spfli. write : / spfli-carrid, spfli- connid, spfli-cityto. Hide : spfli-carrid, spfli- connid. Endselect. Detail List (SFLIGHT) At Line-selection. select * from sflight where carrid = spfli-carrid and connid =
  • 17. Exercise Basic List Detail List zcustomers-id zcustomers zcustomers-name zsales-cust_id zsales-qty zsales-prod_id zsales
  • 18. Hide Statement (Report Heading) List Buffer Tables customers. Customers Name Top-of-page. ----------------------------- write: / ‘Customers Name’. John Peter uline. David Start-of-Selection. Select * from customers. write : / customers-name. Hide customers-name. HIDE area of list level 1 Endselect. At line-selection. line Field name Value 3 customers-name John Write: ‘You Choose :’ , customers-name. customers-name 4 Peter 5 customers-name David
  • 19. At Line Selection(Hide Statement) Detail List Basic List Customers Name ----------------------------- You choose : Peter John 5 Peter David At Line-selection 1 SY-LILLI = 4 4 HIDE area of list level 1 Customers Structure 2 line Field name Value 3 | Peter | .... 3 customers-name John 4 customers-name Peter 3 5 customers-name David
  • 20. Invalid Line Selection … TOP-OF-PAGE. … Hide: spfli-carrid, spfli-connid. … Endselect. Clear: spfli-carrid,spfli-connid. At Line-selection. Select * From sflight Where carrid = spfli-carrid and connid = spfli-connid. Write: / spfli-carrid, spfli-connid ,sflight-fldate. Endselect. Clear: spfli-carrid,spfli-connid.
  • 21. Page Heading Start-of-selection. Write: ‘Basic List’. At Line-selection. Write: ‘Detail List’. Top-of-page. Write: ‘Header-Basic List’. Top-of-page During Line-selection. Write: ‘Header-Detail List’.
  • 22. Detail List Page Heading ... top-of-page during line-selection. case sy-lsind. when 1. write: / ‘Detail List Header #1’. when 2. write: / ‘Detail List Header #2’. endcase. ..... .....
  • 23. ... Column Selection data: fieldname(30). ... start-of-selection. select * from spfli. write: / spfli-carrid,15 spfli-connid, 25 spfli-cityto. hide: spfli-carrid,spfli-connid. endselect. at line-selection. case sy-lsind. when 1. get cursor field fieldname. case fieldname. when 'SPFLI-CARRID'. select single * from scarr where carrid = spfli-carrid. if sy-subrc = 0. write: / spfli-carrid,scarr-carrname. endif. when 'SPFLI-CONNID'. select * from sflight where carrid = spfli-carrid and connid = spfli-connid.
  • 24. Column Selection : Value ... data: fieldname(30),fieldvalue(30). ... start-of-selection. select * from spfli. write: / spfli-carrid,15 spfli-connid, 25 spfli-cityto. hide: spfli-carrid,spfli-connid. endselect. at line-selection. case sy-lsind. when 1. get cursor field fieldname value fieldvalue. case fieldname. when 'SPFLI-CARRID'. select single * from scarr where carrid = spfli-carrid. if sy-subrc = 0. write: / spfli-carrid,scarr-carrname. endif. when 'SPFLI-CONNID'. ...
  • 25. Creating List in Modal Dialog Box ... at line-selection. window starting at 10 10 ending at 65 20. select * from sflight where carrid = spfli-carrid and connid = spfli-connid. write: / sflight-carrid,sflight-connid,sfligh fldate. endselect. ...
  • 26. Exercise Basic List zsales zsales-qty zsales-cust_id zsales-prod_id zsales-sale_id zproducts Detail List zsalereps zproducts-on_hand zproducts-p_id zsalereps-sale_id zsalereps-name
  • 27. Drill-Down 2 Levels Example Detail list level 2 (ZPRODUCTS) Basic list (ZCUSTOMERS) 2 1 Detail list level 1 (ZSALES)
  • 28. Program Example START-OF-SELECTION. SELECT * FROM zcustomers. WRITE: / zcustomers-id COLOR 4 HOTSPOT, 15 zcustomers-name. HIDE: zcustomers-id,zcustomers-name. ENDSELECT. CLEAR zcustomers-id. Hide Level 1 AT LINE-SELECTION. CASE sy-lsind. WHEN 1. GET CURSOR FIELD fieldname. IF fieldname = 'ZCUSTOMERS-ID'. SELECT * FROM zsales WHERE cust_id = zcustomers-id. IF sy-dbcnt = 1. WRITE: / zcustomers-id,15 zcustomers-name,30 zsales-prod_id HOTSPOT, 45 zsales-qty. Drill Down Level 1 HIDE: zsales-prod_id. ELSE. WRITE: /30 zsales-prod_id HOTSPOT, 45 zsales-qty. HIDE: zsales-prod_id. ENDIF. Hide Level 2 ENDSELECT. CLEAR: zcustomers-id,zsales-prod_id. ENDIF. WHEN 2. GET CURSOR FIELD fieldname. IF fieldname = 'ZSALES-PROD_ID'. SELECT SINGLE * FROM zproducts WHERE p_id = zsales-prod_id. Drill Down Level 2 IF sy-subrc = 0. WRITE: / zproducts-p_id,15 zproducts-prod_name,38 zproducts-on_hand. ENDIF. CLEAR zsales-prod_id. ENDIF. ENDCASE.
  • 29. Basic List Exercise SCARR Drill-down Level 1 SPFLI Drill-down Level 2 SFLIGHT Drill-down Level 3 SBOOK
  • 30. GUI Interface (User Interface)
  • 31. GUI Interface SET PF-STATUS …. => GUI Status SET TITLEBAR …. => GUI Title
  • 32. AT USER-COMMAND Event SET PF-STATUS ‘TEST’. ... AT USER-COMMAND. CASE sy-ucomm. WHEN ‘CODE1’. . WHEN ‘CODE2’. . ENDCASE.
  • 33. Standard Toolbar : System Function  System function do not trigger event AT USER-COMMAND  %EX = Exit  %PC = Save to file  %SC = Find  %SC+ = Find next  %ST = Save in report tree  BACK = Back  RW = Cancel  PRI = Print  P- = Scroll to previous page  P-- = Scroll to first page  P+ = Scroll to next page  P++ = Scroll to last page
  • 34. Alternative with AT USER-COMMAND REPORT ZRSDEM002. . START-OF-SELECTION SET PF-STATUS ‘BASE’. . . AT USER-COMMAND. CASE SY-UCOMM. WHEN ‘CARR’. SET PF_STATUS SPACE. “Set to standard GUI interface . WHEN ‘FLIG’. SET PF-STATUS ‘FLIG’. WRITE …
  • 35. GUI Status Excluding Function Code REPORT ztest. ... SET PF-STATUS ‘0100’. ... AT USER-COMMAND. CASE SY-UCOMM. WHEN ‘LIST’. SET PF-STATUS ‘0100’ excluding ‘LIST’. . WHEN ‘DISP’. SET PF-STATUS ‘0100’ excluding ‘DISP’. WRITE … . ....
  • 36. GUI Status Excluding Function Code REPORT ztest. DATA exctab(10) occurs 0 with header line. .... START-OF-SELECTION. SET PF-STATUS ‘0100’. ... exctab = ‘LIST’. APPEND exctab. exctab = ‘TEST’. APPEND exctab. ... AT USER-COMMAND. CASE SY-UCOMM. WHEN ‘LIST’. SET PF-STATUS ‘0100’ excluding exctab.
  • 37. GUI TITLE ... SET TITLEBAR ‘0100’.
  • 38. ABAP Practice
  • 39. Selection Screen
  • 40. Selection Screen  PARAMETERS Statement  SELECT-OPTIONS Statement
  • 41. parameters
  • 42. Parameters PARAMETERS: tmp1(10) TYPE C, tmp2(10) TYPE C lower case, tmp3 LIKE sy-datum default sy-datum, tmp4 TYPE D default ‘19991231’, tmp5 TYPE i,
  • 43. Parameters Example Tables customers. Parameters pid like customers-id. START-OF-SELECTION. select single * from customers where id = pid. if sy-subrc = 0. write: / customers-name. else. write: / ‘No data found’. endif.
  • 44. Selection-Text  By default , the System displays the name of the selection as text on the Selection Screen  You Should use the Text element/Selection texts function to store a text line for each Selection Criterion.
  • 45. Check box Parameters tmp as checkbox default ‘X’.
  • 46. Radio Button Parameters: test1 Radiobutton group grp1, test2 Radiobutton group grp1.
  • 47. Required field with Parameters Parameters tmp like sy- datum obligatory.
  • 48. ABAP Exercise
  • 49. select-options
  • 50. Complex Selection (Select-options) Tables spfli. Select-options carrid for spfli- carrid. START-OF-SELECTION. Select * From spfli Where carrid in carrid. . . .
  • 51. Select-Options “ต้องการให้แสดงข้อมูล customers ของ ลูกค้าที่มีชื่อ(คอลัมน์ name) ขึ้นต้นด้วย ตัว ‘M’ และลูกค้าที่ชื่อ ‘Smith’ และลูกค้า ที่ชื่ออยู่ระหว่าง ‘A’ กับ ‘John’ โดยใช้คำา สั่ง SELECT” Select * from customers where (name like ‘M%’) or (name = ‘Smith’) or (name between ‘A’ and
  • 52. Select-Options Tables customers. Select-options sname for customers-name. START-OF-SELECTION. Select * from customers Where name in sname.
  • 53. Internal Structure of Select-options sname Sign Option Low High
  • 54. Internal Structure of Select-options Field Value . Sign I = Include E = Exclude Option BT = Between CP = Contains Pattern EQ = Equal GT = Greater Than LT = Less Than GE = Grater Than or Equal LE = Less Than or Equal NE = Not Equal
  • 55. Internal Structure of Select-options sname Sn ig Ot n pio Lw o Hh ig I CP M* I EQ S it mh I BT A John
  • 56. SELECT-OPTIONS sname Sign O tion p Low Hh ig Select * from customers Transform where (name like ‘M%’) or I CP M* (name = ‘Smith’) or I EQ Smith (name between ‘A’ and ‘Jo I BT A John Select * from customers where name in sname.
  • 57. INITIALIZATION Event Tables Customers. Select-options sname for customers-name. Initialization. sname-sign = ‘I’. sname-option = ‘EQ’. sname-low = ‘Smith’. append sname. Start-of-Selection. Select * from customers Where name in sname.
  • 58. Select-options Options Select-options sname for customers- name obligatory. Select-options sname for customers- name no-extension. Select-options sname for customers- name no intervals.
  • 59. Designing Selection Screen Selection-screen begin of block test with frame Title text-001. . Selection-screen uline. Selection-screen skip 3. Selection-screen comment 3(10) text-001. Parameters month(2) type n. . Selection-screen end of block test.
  • 60. Designing Selection Screen selection-screen begin of line. selection-screen comment 1(7) text-001. selection-screen position 9. parameters month(2) type n. selection-screen comment 16(6) text-002. parameters year(4) type n. selection-screen end of line.
  • 61. Designing Selection Screen Selection-screen begin of block name1 with frame title text-001. Selection-screen begin of line. Parameters test1 radiobutton group test default ‘X’. Selection-screen comment 4(10) text-002. Selection-screen position 35. Parameters tcheck as checkbox. Selection-screen comment 37(15) text-003. Selection-screen end of line. Selection-screen begin of line. Parameters test2 radiobutton group test. Selection-screen comment 4(10) text-004. Selection-screen end of line. Selection-screen end of block name1.
  • 62. ABAP Exercise
  • 63. Checking User Input Tables customers. Data pcode_len type i. Parameters pcode like customers-postcode. At selection-screen. pcode_len = strlen( pcode ). if pcode_len <> 5. message e000(38) with ‘Please enter postcode 5 characters’. endif. Start-of-Selection. select * from customers where postcode =
  • 64. ABAP Exercise
  • 65. ABAP Program Processing Steps TABLES sflight. PARAMETERS nextday LIKE sy-datum. INITIALIZATION. nextday = sy-datum + 1. AT SELECTION-SCREEN. IF nextday < sy-datum. MESSAGE e000(38) WITH ‘Please enter da >= today’. ENDIF. START-OF-SELECTION. SELECT * FROM sflight WHERE ... fldate = nextday… …
  • 66. ABAP Practice