Beruflich Dokumente
Kultur Dokumente
Dec-2008
Objectives
Dec-2008
Dec-2008
The Challenges
First Challenge:
How did the ABAP code know when and which record
the user has selected?
Second Challenge:
How is this record sent back as criteria to an
ABAP SELECT statement?
Dec-2008
A New
ABAP
Event
SYNTAX: AT LINE-SELECTION.
Dec-2008
A New
ABAP
System Field
CHICAGO
Dec-2008
SELECT *
DATA:WA_LFA1 TYPE LFA1.
CHECK
START-OF-SELECTION.
SY-SUBRC
SELECT * FROM LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1-ORT01.
ENDSELECT.
Dec-2008
Dec-2008
Dec-2008
100141
A B Anders
Heidelberg
However, if we could somehow send only
individual fields from the selected record, we
would then process that data with an ABAP
SELECT statement.
10
Dec-2008
Demonstration
Use of AT LINE-SELECTION event and SY-LISEL system field.
11
Dec-2008
Practice
Use of AT LINE-SELECTION event and SY-LISEL system field.
12
Dec-2008
A New
ABAP
Reserved
Word
SELECT *
CHECK
START-OF-SELECTION.
SY-SUBRC
SELECT * FROM LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1-ORT01.
HIDE: WA_LFA1-LIFNR.
ENDSELECT.
13
Dec-2008
CHECK
SY-SUBRC
START-OF-SELECTION.
SELECT * FROM LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1-ORT01.
HIDE: WA_LFA1-LIFNR.
ENDSELECT.
MEMORY
LIST
WRITE: /
RECORD # 2
HIDE
14
Dec-2008
CHECK
SY-SUBRC
This is what the HIDE memory area and
work area WA_LFA1 look like after the
SELECT statement above has finished
processing.
MEMORY
INDEX
1
2
3
4
5
WA_LFA1-LIFNR
------VEND011
VEND012
VEND013
RECORD # 3
LFA1 WORK AREA
15
Dec-2008
The HIDE Memory Area : (with More than One Field Stored)
SELECT *
START-OF-SELECTION.
SELECT * FROM LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1-ORT01.
HIDE: WA_LFA1-LIFNR, WA_LFA1-TELF1.
ENDSELECT.
HIDE MEMORY
CHECK
SY-SUBRC
If we used the HIDE
statement to hide both
LIFNR and TELF1, our
HIDE memory area would
look like this.
16
INDEX
1
2
3
4
5
WA_LFA1LIFNR
------VEND011
VEND012
VEND013
WA_LFA1-TELF1
------555-1111
555-2222
555-3333
Dec-2008
INDEX
1
2
3
4
MEMORY
VEND012
INDEX
1
2
3
4
5
WA_LFA1-LIFNR
------VEND011
VEND012
VEND013
WORK AREA
WA_LFA1
17
Dec-2008
REPORT Y190XX02.
DATA: WA_LFA1 TYPE LFA1 ,
WA_BSIK TYPE BSIK.
SELECT *
CHECK
SY-SUBRC
START-OF-SELECTION.
SELECT * FROM LFA1 INTO WA_LFA1.
WRITE: / WA_LFA1-LIFNR, WA_LFA1-NAME1, WA_LFA1-ORT01.
HIDE: WA_LFA1-LIFNR, WA_LFA1-TELF1.
ENDSELECT.
18
Dec-2008
BASIC LIST
WRITE
SELECT
HIDE
19
1
2
3
4
5
(header)
(uline)
VEND011
VEND012
VEND013
HIDE MEMORY
INDEX WA_LFA1WA_LFA11
LIFNR
TELF1
2
------------3
VEND011
555-1111
4
VEND012
555-2222
5
VEND013
555-3333
Dec-2008
(header)
(uline)
VEND011
VEND012
VEND013
VEND 555011
1111
20
HIDE MEMORY
INDEX WA_LFA11
LIFNR
WA_LFA1Star Craft Metal
2
---TELF1
Quality Fabr.
---3
---Euro Output SA
VEND011
---4
VEND012 555-1111
5
VEND013 555-2222
555-3333
TABLE WORK AREA
(Field String)
data available for further processing
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Dec-2008
Old
Data
Old
Data
Old
Data
AT LINE-SELECTION.
SELECT *
CHECK SY-LSIND = 1.
WINDOW STARTING AT 10 4
ENDING AT 77 12.
SELECT * FROM BSIK INTO WA_BSIK WHERE
LIFNR = WA_LFA1-LIFNR.
WRITE: / WA_LFA1-LIFNR, WA_BSIK-BELNR.
ENDSELECT.
IF SY-SUBRC <> 0.
WRITE: / No invoices for vendor, WA_LFA1-LIFNR.
ENDIF.
Remember...
Remember... This
This is
is
referencing
referencing the
the program
program
field!
field! The
The value
value of
of this
this
field
field is
is dependent
dependent upon
upon
which
which line
line you
you doubledoubleclicked
clicked in
in the
the on-screen
on-screen
report.
report.
?
LFA1
LFA1 WORK
WORK AREA
AREA
21
Dec-2008
Demonstration
Usage of HIDE command in Interactive Reporting.
22
Dec-2008
Practice
Usage of HIDE command in Interactive Reporting.
23
Dec-2008
Challenges Revisited
First Challenge:
How did the ABAP code know which record the user
has selected?
METHOD: When a user event is triggered, the system
automatically records the line selected (via SY-LISEL
and other system fields).
Second Challenge:
How is this record sent back as criteria to an
ABAP SELECT statement?
METHOD: HIDE memory area.
24
Dec-2008
25
Dec-2008
26
Dec-2008
(header)
(uline)
VEND011
VEND012
VEND013
INDEX
1
2
3
4
5
HIDE MEMORY
WA_LFA1WA_LFA1LIFNR
TELF1
------------VEND011
VEND012 555-1111
VEND013 555-2222
555-3333
27
Phila.
PA
USA
Mr.
19103 Jones $100
Dec-2008
NET
30
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION.
GET <table>.
GET <table> LATE.
A New
ABAP
Event
SYNTAX: END-OF-SELECTION.
28
Dec-2008
END-OF-SELECTION.
1
CLEAR WA_LFA1-LIFNR.
29
Dec-2008
(header)
(uline)
VEND011
VEND012
VEND013
HIDE MEMORY
WA_LFA1INDEX LIFNR
1
------2
VEND011
3
VEND012
4
VEND013
5
WA_LFA1TELF1
------555-1111
555-2222
555-3333
30
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Dec-2008
Old
Data
Old
Data
Old
Data
(header)
(uline)
VEND011
VEND012
VEND013
HIDE MEMORY
INDEX
1
2
3
4
5
WA_LFA1LIFNR
------VEND011
VEND012
VEND013
WA_LFA1TELF1
------555-1111
555-2222
555-3333
31
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Old
Data
Dec-2008
Old
Data
Old
Data
Old
Data
AT LINE-SELECTION.
CHECK SY-LSIND = 1.
2
CHECK NOT WA_LFA1-LIFNR IS INITIAL.
WINDOW STARTING AT 10 4
ENDING AT 77 12.
SELECT * FROM BSIK INTO WA_BSIK WHERE
LIFNR = WA_LFA1-LIFNR.
WRITE: / WA_LFA1-LIFNR, WA_BSIK-BELNR.
ENDSELECT.
SELECT *
IF SY-SUBRC <> 0.
WRITE: / No invoices for vendor, WA_LFA1-LIFNR.
1
ENDIF.
CLEAR WA_LFA1-LIFNR.
32
Dec-2008
Flow of Data
BASIC
LIST
HIDE
MEMORY
DATA
SOURCE
WORK AREA
33
Dec-2008
Summary
AT LINE-SELECTION event is triggered when a user double-clicks on a line in
the list (or single-clicks on a line and clicks on CHOOSE button or presses F2).
System field SY-LISEL contains the contents of the line selected by the user and
SY-LILLI contains the number of the line selected.
HIDE memory area exists for each lists in a report. This area gets populated with
the program fields when the system encounters the HIDE statement.
Specific fields can be stored in the memory using HIDE statement. HIDE
command can be used to place multiple fields in HIDE memory area.
HIDE memory area cannot be directly accessed using an ABAP statement.
Information is fetched from this area depending on the line the user selects.
34
Dec-2008
Question
Which system field contains the content of the selected line ?
What does a HIDE statement do ?
How is the HIDE statement used for producing detail lists ?
What is an invalid line in the context of drill down reporting ?
How do you determine if the user has clicked on a valid line ?
What records are stored in a HIDE memory area ? How do the system get the
value for a particular field for the selected line from HIDE memory area ?
35
Dec-2008