Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
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’.
Double
Click

Basic list
Navigating Between Lists

Exit Detail list 20

ABAP Editor

Detail list 2

Cancel
Detail list 1

Basic list Back


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
WHEN 1. SY-LSIND = 1

write: ‘Detail List #1’.


WHEN 2.
write: ‘Detail List #2’.
ENDCASE. 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. List Buffer
Start-of-Selection. John
Select * from customers. Peter
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 customers-name John
2 customers-name Peter
customers-name. 3 customers-name David
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
At Line Selection(Hide Statement)
Basic List Detail 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
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.
Endselect. HIDE area of list level 1
At line-selection. line Field name Value
1 customers-id 00000001
1 customers-name John
Write: ‘You Choose :’ , customers-id,
2 customers-id 00000002
customers-name. 2 customers-name Peter

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

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.
At Line-selection.
select * from sflight where carrid = spfli-carrid Detail List (SFLIGHT)

and connid = spfli-connid.


write: / spfli-carrid, spfli-connid,sflight-fldate.
endselect.
Exercise
Basic List

Detail List
zcustomers-id

zcustomers

zcustomers-name
zsales-cust_id
zsales-qty
zsales-prod_id

zsales
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. 4 customers-name Peter
5 customers-name David
At Line Selection(Hide Statement)
Basic List Detail 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
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
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
Drill-Down 2 Levels Example

Detail list level 2 (ZPRODUCTS)

Basic list (ZCUSTOMERS) 2


1

Detail list level 1 (ZSALES)


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

Exercise
SCARR

Drill-down Level 1
SPFLI

Drill-down Level 2
SFLIGHT

Drill-down Level 3
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) ขึ้น
ต้ นด้ วยตัว ‘M’ และลูกค้ าทีช่ ่ือ ‘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
Internal Structure of Select-options

sname
Sign Option Low High

I CP M*
I EQ Smith
I BT A John
SELECT-OPTIONS
sname
Sign Option Low High Select * from customers
Transform
where (name like ‘M%’) or
I CP M* (name = ‘Smith’) or
I EQ Smith (name between ‘A’ and ‘John’).
I BT A John

Select * from customers


where name in sname.
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