You are on page 1of 66

ABAP Chapter 4

Event-driven Programming
Selection Screen

Event-driven Programming
Application Driven Programming

REPORT ztest.
DATA: today TYPE D.
today = 19991231.
today = today + 1.
WRITE: / today.



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.
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.

AT LINE-SELECTION Event
(Drill-down Report)
AT LINE-SELECTION
Start-of-selection.
Write : Basic List.
At Line-selection.
Write : Detail List.
Basic list
Double
Click
Navigating Between Lists
Basic list




Detail list 20



Exit





Detail list 1







Detail list 2



ABAP Editor
Back
Cancel
Detail List and SY-LSIND
Start-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 2
SY-LSIND = 2





Detail list 1
SY-LSIND = 1



Basic list
At Line Selection
Tables 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 Value
1 customers-name John
2 customers-name Peter
3 customers-name David

John
Peter
David
List Buffer
Hide Area in List
Dialog WP

TaskHandler
DYNPRO Processor
ABAP Processor
Database
Local Memory
Memory Space
DB Interface

List buffer
Result Set Memory
Database Server
Application Server
3 | David | ....
Customers Structure
John
Peter
David

Basic List

HI DE area of list level 1
line Field name Value
1 customers-name John
2 customers-name Peter
3 customers-name David

At Line Selection(Hide Statement)

HIDE area of list level 1

line Field name Value
1 customers-name John
2 customers-name Peter
3 customers-name David

John
Peter
David
You choose : Peter


Basic List
Detail List
SY-LILLI = 2
3 | Peter | ....
Customers Structure
1
2
3
4
At Line-selection
5
HIDE area of list level 1
line Field name Value
1 customers-id 00000001
1 customers-name John
2 customers-id 00000002
2 customers-name Peter

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.
00000001 John
00000002 Peter
00000003 David
List Buffer
At Line Selection(Hide Statement)

HIDE area of list level 1

line Field name Value

2 customers-id 00000002
2 customers-name Peter
3 customers-id 00000003


00000001 John
00000002 Peter
00000003 David
You choose : 00000002 Peter


Basic List
Detail List
SY-LILLI = 2
2 | Peter | ....
Customers Structure
1
2
3
4
At Line-selection
5
At Line Selection
Tables: 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)
Exercise
zcustomers
zsales
Basic List
Detail List
zcustomers-id
zcustomers-name
zsales-cust_id
zsales-prod_id
zsales-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 Value
3 customers-name John
4 customers-name Peter
5 customers-name David

Customers Name
-----------------------------
John
Peter
David
List Buffer
At Line Selection(Hide Statement)

HIDE area of list level 1

line Field name Value
3 customers-name John
4 customers-name Peter
5 customers-name David

Customers Name
-----------------------------
John
Peter
David
You choose : Peter


Basic List
Detail List
SY-LILLI = 4
3 | Peter | ....
Customers Structure
1
2
3
4
At Line-selection
5
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 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.
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.
...
Exercise
Basic List
Detail List
zsales
zsalereps
zproducts
zsales-cust_id zsales-prod_id
zsales-qty
zsales-sale_id
zsalereps-sale_id zsalereps-name
zproducts-on_hand
zproducts-p_id
Drill-Down 2 Levels Example
1
Detail list level 1 (ZSALES)
Detail list level 2 (ZPRODUCTS)
Basic list (ZCUSTOMERS)
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.

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 1
Hide Level 2
Drill Down Level 1
Drill Down Level 2
Exercise
Basic List
Drill-down Level 1
Drill-down Level 2
Drill-down Level 3
SCARR
SPFLI
SFLIGHT
SBOOK
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 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
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
.
.

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
. ....

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.

GUI TITLE
...
SET TITLEBAR 0100.

ABAP Practice
Selection Screen
Selection Screen
PARAMETERS Statement
SELECT-OPTIONS Statement
parameters
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,
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-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.
Check box
Parameters tmp as checkbox default X.
Radio Button
Parameters: test1 Radiobutton group grp1,
test2 Radiobutton group grp1.

Required field with Parameters
Parameters 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)

Smith

A John

SELECT
Select * from customers
where (name like M%) or
(name = Smith) or
(name between A and John).


Select-Options
Tables customers.
Select-options sname for customers-name.
START-OF-SELECTION.
Select *
from customers
Where name in sname.

Internal Structure of Select-options
sname
Sign Option Low High
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
Sign Option Low High
I CP M*
I EQ Smith

I BT A
John


SELECT-OPTIONS
Sign Option Low High
I CP M*
I EQ Smith

I BT A
John


sname
Select * from customers
where name in sname.
Select * from customers
where (name like M%) or
(name = Smith) or
(name between A and John).

Transform
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.

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.
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.

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 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.

ABAP Exercise
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 = pcode.



ABAP Exercise
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 date >= today.
ENDIF.
START-OF-SELECTION.
SELECT * FROM sflight WHERE ... fldate = nextday



ABAP Practice

You might also like