Sie sind auf Seite 1von 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
ABAP Editor

Detail list 20

Detail list 2
Cancel

Detail list 1

Basic list

Back

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.
List Buffer
John Peter David

HIDE area of list level 1 line Field name


1 2 3 customers-name customers-name customers-name

Value
John Peter David

Hide Area in List


Application Server

Dialog WP
TaskHandler

Local Memory
Memory Space
Customers Structure

ABAP Processor

3 | David | ....

List buffer DYNPRO Processor


Basic List
John Peter David
HIDE area of list level 1 line Field name 1 customers-name 2 customers-name 3 customers-name

DB Interface
Result Set Memory

Value John Peter David

Database Server

Database

At Line Selection(Hide Statement)


Basic List Detail List
You choose : Peter

John Peter David


1
SY-LILLI = 2

5
At Line-selection

4 2
HIDE area of list level 1
Customers Structure

line Field name


1 2 3 customers-name customers-name customers-name

Value
John Peter David

3 | Peter | ....
3

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.
List Buffer
00000001 John 00000002 Peter 00000003 David

HIDE area of list level 1 line Field name Value


1 1 2 2 customers-id customers-name customers-id customers-name 00000001 John 00000002 Peter

At Line Selection(Hide Statement)


Basic List
00000001 John 00000002 Peter 00000003 David

Detail List
You choose : 00000002 Peter

5
At Line-selection

1
SY-LILLI = 2 HIDE area of list level 1 line Field name
2 2 3 customers-id customers-name customers-id

4
Customers Structure

Value
00000002 Peter 00000003

2 | Peter | ....
3

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

zcustomers-id

Detail List
zcustomers

zcustomers-name

zsales-cust_id zsales-prod_id

zsales-qty

zsales

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.

List Buffer
Customers Name ----------------------------John Peter David

HIDE area of list level 1 line Field name


3 4 5 customers-name customers-name customers-name

Value
John Peter David

At Line Selection(Hide Statement)


Basic List
Customers Name ----------------------------John Peter David

Detail List
You choose : Peter

5
At Line-selection

1
SY-LILLI = 4

4 2
HIDE area of list level 1
Customers Structure

line Field name


3 4 5 customers-name customers-name customers-name

Value
John Peter David

3 | Peter | ....
3

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

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

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-cust_id zsales-prod_id zsales-qty zsales-sale_id

zproducts
zproducts-p_id

Detail List
zproducts-on_hand zsalereps-sale_id

zsalereps
zsalereps-name

Drill-Down 2 Levels Example

Detail list level 2 (ZPRODUCTS) Basic list (ZCUSTOMERS)

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. 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. IF sy-subrc = 0. WRITE: / zproducts-p_id,15 zproducts-prod_name,38 zproducts-on_hand. ENDIF. CLEAR zsales-prod_id. ENDIF. ENDCASE.

Drill Down Level 1

Drill Down Level 2

Basic List
SCARR

Exercise
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 Sign
Option

Value I = Include E = Exclude 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 I I I Option CP EQ BT Low M* Smith A High

John

SELECT-OPTIONS
sname
Sign I I I Option CP EQ BT Low M* Smith A High
Transform

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

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