ABAP Chapter 4Event-driven ProgrammingSelection Screen
Event-driven Programming
Application Driven Programming
REPORT ztest.DATA: today TYPE D.today = 19991231.today = today + 1.WRITE: / today.
Event-Driven ProgrammingData tmp type i.Start-of-Selection. Write: / This is . Write: / Basic List.At line-selection. Write: / This is . Write: Detail List.
EventsSTART-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.
AT LINE-SELECTION Event(Drill-down Report)
AT LINE-SELECTIONStart-of-selection. Write : Basic List.At Line-selection. Write : Detail List.Basic listDoubleClick
Navigating Between ListsBasic list
Detail list 20
Exit
Detail list 1
Detail list 2
ABAP EditorBackCancel
Detail List and SY-LSINDStart-of-selection. write: Basic List.AT Line-selection. CASE sy-lsind. WHEN 1. write: Detail List #1. WHEN 2. write: Detail List #2. ENDCASE.
Detail list 2SY-LSIND = 2
Detail list 1SY-LSIND = 1
Basic list
At Line SelectionTables customers.Start-of-Selection. Select * from customers. write : / customers-name . Endselect.At line-selection. Write: You Choose : , customers-name.
At Line Selection(Hide Statement)Tables customers.Start-of-Selection. Select * from customers. write : / customers-name. Hide customers-name. Endselect.At line-selection. Write: You Choose : , customers-name.
HIDE area of list level 1
line Field name Value1 customers-name John 2 customers-name Peter3 customers-name David
JohnPeterDavidList Buffer
Hide Area in ListDialog WP TaskHandlerDYNPRO ProcessorABAP ProcessorDatabaseLocal MemoryMemory SpaceDB Interface List bufferResult Set MemoryDatabase ServerApplication ServerJohnPeterDavid Basic List
At Line Selection(Hide Statement)
HIDE area of list level 1
line Field name Value1 customers-name John 2 customers-name Peter3 customers-name David
JohnPeterDavidYou choose : Peter
Basic ListDetail ListSY-LILLI = 23 | Peter | .... Customers Structure1234At Line-selection5
At Line Selection(Hide Statement)Tables customers.Start-of-Selection. Select * from customers. write : / customers-id,customers-name. Hide: customers-id,customers-name. Endselect.At line-selection. Write: You Choose : , customers-id, customers-name.HIDE area of list level 1line Field name Value1 customers-id 00000001 1 customers-name John2 customers-id 000000022 customers-name Peter00000001 John00000002 Peter00000003 DavidList Buffer
At Line Selection(Hide Statement)
HIDE area of list level 1
line Field name Value 2 customers-id 00000002 2 customers-name Peter3 customers-id 00000003
00000001 John00000002 Peter00000003 DavidYou choose : 00000002 Peter
Basic ListDetail ListSY-LILLI = 22 | Peter | .... Customers Structure1234At Line-selection5
At Line SelectionTables: spfli,sflight.Start-of-selection. Select * from spfli. write : / spfli-carrid, spfli-connid, spfli-cityto. Hide : spfli-carrid, spfli-connid. Endselect.At Line-selection. select * from sflight where carrid = spfli-carrid and connid = spfli-connid. write: / spfli-carrid, spfli-connid,sflight-fldate. endselect.Basic List (SPFLI)Detail List (SFLIGHT)
ExercisezcustomerszsalesBasic ListDetail Listzcustomers-idzcustomers-namezsales-cust_idzsales-prod_idzsales-qty
Hide Statement (Report Heading)
Tables customers.Top-of-page. write: / Customers Name. uline.Start-of-Selection. Select * from customers. write : / customers-name. Hide customers-name. Endselect.At line-selection. Write: You Choose : , customers-name.
HIDE area of list level 1
line Field name Value3 customers-name John 4 customers-name Peter5 customers-name David
Customers Name-----------------------------JohnPeterDavidList Buffer
At Line Selection(Hide Statement)
HIDE area of list level 1
line Field name Value3 customers-name John 4 customers-name Peter5 customers-name David
Customers Name-----------------------------JohnPeterDavidYou choose : Peter
Basic ListDetail ListSY-LILLI = 43 | Peter | .... Customers Structure1234At Line-selection5
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.
Page HeadingStart-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.
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...........
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. ...
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'. ...
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,sflight-fldate. endselect. ...
ExerciseBasic ListDetail Listzsaleszsalerepszproductszsales-cust_idzsales-prod_idzsales-qtyzsales-sale_idzsalereps-sale_idzsalereps-namezproducts-on_handzproducts-p_id
Drill-Down 2 Levels Example12Detail list level 1 (ZSALES)Detail list level 2 (ZPRODUCTS)Basic list (ZCUSTOMERS)
Program ExampleSTART-OF-SELECTION. SELECT * FROM zcustomers. WRITE: / zcustomers-id COLOR 4 HOTSPOT, 15 zcustomers-name. HIDE: zcustomers-id,zcustomers-name. ENDSELECT. CLEAR zcustomers-id.
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. HIDE: zsales-prod_id. ELSE. WRITE: /30 zsales-prod_id HOTSPOT, 45 zsales-qty. HIDE: zsales-prod_id. ENDIF. 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. IF sy-subrc = 0. WRITE: / zproducts-p_id,15 zproducts-prod_name,38 zproducts-on_hand. ENDIF. CLEAR zsales-prod_id. ENDIF. ENDCASE.
Hide Level 1Hide Level 2Drill Down Level 1Drill Down Level 2
ExerciseBasic ListDrill-down Level 1Drill-down Level 2Drill-down Level 3SCARRSPFLISFLIGHTSBOOK
GUI Interface (User Interface)
GUI Interface SET PF-STATUS . => GUI Status SET TITLEBAR . => GUI Title
AT USER-COMMAND Event SET PF-STATUS TEST. ...AT USER-COMMAND. CASE sy-ucomm. WHEN CODE1. . WHEN CODE2. . ENDCASE.
Standard Toolbar : System FunctionSystem function do not trigger event AT USER-COMMAND%EX = Exit %PC = Save to file%SC = Find%SC+ = Find next%ST = Save in report treeBACK = BackRW = CancelPRI = PrintP- = Scroll to previous pageP-- = Scroll to first page P+ = Scroll to next pageP++ = Scroll to last page
Alternative with AT USER-COMMANDREPORT 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 . .
GUI Status Excluding Function CodeREPORT 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 . ....
GUI Status Excluding Function CodeREPORT 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.
GUI TITLE ... SET TITLEBAR 0100.
ABAP Practice
Selection Screen
Selection ScreenPARAMETERS StatementSELECT-OPTIONS Statement
parameters
ParametersPARAMETERS: 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, tmp6(5) TYPE N.
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.
Selection-TextBy default , the System displays the name of the selection as text on the Selection ScreenYou Should use the Text element/Selection texts function to store a text line for each Selection Criterion.
Check boxParameters tmp as checkbox default X.
Radio ButtonParameters: test1 Radiobutton group grp1, test2 Radiobutton group grp1.
Required field with ParametersParameters tmp like sy-datum obligatory.
ABAP Exercise
select-options
Complex Selection (Select-options)Tables spfli.Select-options carrid for spfli-carrid.START-OF-SELECTION.Select * From spfli Where carrid in carrid. . . .Endselect.
Select-Options customers ( name) M Smith A John SELECT Select * from customers where (name like M%) or (name = Smith) or (name between A and John).
Select-OptionsTables customers.Select-options sname for customers-name.START-OF-SELECTION.Select * from customers Where name in sname.
Internal Structure of Select-optionssname
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 NB = Not Between
Internal Structure of Select-options sname
SELECT-OPTIONSsnameSelect * from customers where name in sname.Select * from customers where (name like M%) or (name = Smith) or (name between A and John).
Transform
INITIALIZATION EventTables 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.
Select-options OptionsSelect-options sname for customers-name obligatory. Select-options sname for customers-name no-extension.
Select-options sname for customers-name no intervals.
Designing Selection ScreenSelection-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.
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.
Designing Selection ScreenSelection-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.
ABAP Exercise
Checking User InputTables 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 = pcode.
ABAP Exercise
ABAP Program Processing StepsTABLES sflight.PARAMETERS nextday LIKE sy-datum.INITIALIZATION. nextday = sy-datum + 1.AT SELECTION-SCREEN. IF nextday < sy-datum. MESSAGE e000(38) WITH Please enter date >= today. ENDIF.START-OF-SELECTION. SELECT * FROM sflight WHERE ... fldate = nextday
ABAP Practice
Top Related