Report Layout
Report Heading
Report Body
Column Heading
Report Title
Standard Page Heading
Standard Page Heading
Execute
Report Statement : Standard Report Statement : Standard HeadingHeading
REPORT <Report Name> [NO STANDARD PAGE HEADING].
REPORT ztest1 NO STANDARD PAGE HEADING.
No Standard Page Heading
Execute
WRITE …Column Number…
WRITE: 10 ‘Hello’, 50 ‘World’.
Report Statement : Line SizeReport Statement : Line Size
REPORT <Report Name> [LINE-SIZE no. of columns].
REPORT ztest LINE-SIZE 255 .
sy-linsz
Exercise
Column : 50
Column : 170
WRITE StatementWRITE Statement
*Write data WRITE ‘Hello World’.
WRITE : ‘OK’ , ‘Test data’.WRITE: /15(10) ‘ABCDEFGHIJKLMNOPQ’.WRITE /20 ‘Test data’.
Breaking to a New LineBreaking to a New Line
*Write dataWRITE: / ‘First Line ’, ‘Data 1’, / ‘Second Line’,‘Data 2 ’, /(20 ) ‘Third Line’,‘Data 3 ’, /35 ‘Fourth Line’,‘Data 4 ’.
sy-colno
Exercise
Column : 50Line : 1 Column :
170Line : 2
Creating Lists ABAP statement that create list
WRITE ULINE SKIP
The complete report list will appears automatically at the end of the processing block
List BufferList Buffer
Dialog WP
TaskHandler
Dynpro Processor
ABAP Processor
Local Memory
Memory Space
DB Interface
List Buffer
WRITE,SKIP,ULINE
User Context
Inserting Blank Lines(SKIP)Inserting Blank Lines(SKIP)
*Skip StatementSKIP.WRITE : ‘Hello World’, sy-linno.SKIP.WRITE: ‘Test 1’.SKIP 5.WRITE : ‘Test 2’.
SKIP TO LINE 20. WRITE ‘This is line 20’.
NEW-LINENEW-LINE
WRITE ‘Hello World’.NEW-LINE.WRITE ‘OK’.
WRITE ‘Hello World’.WRITE / ‘OK’.
=
Exercise
Column : 50Line : 5
Column : 170Line : 7
Inserting Horizontal Inserting Horizontal Lines(ULINE)Lines(ULINE)
* UlineWRITE: :::::: ::::: ’.ULINE /1(20).WRITE: /(20) sy-uline.WRITE: / sy-vline, 20 sy-vline.ULINE /(20).WRITE : / ‘This is an underlin:’.::::E.
Frame Example
FrameFrame
ULINE: /1(45).WRITE: /1 sy-vline, 'Column #1', 15 sy-vline, 'Column #2', 30 sy-vline, 'Column #3', 45 sy-vline.ULINE /(45).
Exercise I
sy-datum
sy-uzeit
8020 55 80
FORMAT StatementFORMAT Statement
FORMAT [COLOR <color>].
[COLOR OFF].
FORMAT StatementFORMAT Statement
1FORMAT COLOR . : / ‘ ’, ‘’ 7. ::::: ::::.
FORMAT COLORFORMAT COLOR
FORMAT COLOR col_heading. “ 1 FORMAT COLOR col_normal. 2“color FORMAT COLOR col_total. 3“color FORMAT COLOR col_key. 4“color FORMAT COLOR col_positive. 5“color FORMAT COLOR col_negative. 6“color FORMAT COLOR col_group. 7“color FORMAT COLOR col_background. “color 0
Color Using Example
Exercise I
Text SymbolText Symbol
Text Element Text Symbols Text Symbol Text
Text 2
Text 1
REPORT ztest.
WRITE: text-001,
text-002.
001
002
Text Symbol
WRITE: / text-001.WRITE: / text-001.WRITE: / text-001.WRITE: / text-001.WRITE: / text-001.
CONSTANTSCONSTANTS
* Constant variableCONSTANTS ctext TYPE string VALUE ‘Hello World’. WRITE / ctext.WRITE / ctext.WRITE / ctext.WRITE / ctext.WRITE / ctext.
Text Symbol : Language Translation
Text Symbol : Language Translation
Options of the WRITE StatementOptions of the WRITE Statement
* Write SyntaxWRITE var [NO-ZERO]
[NO-SIGN]
[NO-GROUPING]
[NO-GAP]
[DECIMALS no of decimals]
Suppressing Zero With Blanks (NO-ZERO)Suppressing Zero With Blanks (NO-ZERO)
* No ZeroDATA: number(10) TYPE N VALUE 23.WRITE: number, number NO-ZERO.
Suppressing Number(+ / -) SignSuppressing Number(+ / -) Sign
* No SignDATA: v_integer TYPE i VALUE -1.WRITE: v_integer, v_integer NO-SIGN.
NO-GROUPINGNO-GROUPING
* No groupingDATA: v_integer TYPE i VALUE 120000.
WRITE: v_integer, v_integer NO-GROUPING.
NO-GAPNO-GAP
* No gapWRITE: ‘Hello’ NO-GAP, ‘World’.
DECIMALSDECIMALS
* DecimalsDATA: v_pack TYPE P DECIMALS 4 VALUE ‘1234.5678’.WRITE: v_pack, v_pack DECIMALS 2.
Formatting OptionsFormatting Options
* Format options of WRITE statement* LEFT-JUSTIFIED for Numeric data* RIGHT-JUSTIFIED for Character data* CENTEREDDATA tmp1(20) VALUE ‘test’. WRITE: tmp1 CENTERED.
testtmp1
STRLEN Built-in FunctionSTRLEN Built-in Function
DATA: tmp(20) VALUE ‘Test String’, count TYPE :.count = strlen( tmp ).WRITE count.
Include Program You can create a program with program type include
program in the program attribute Include program do not have to have an introductory
statement During the syntax check and during program generation
by the ABAP compiler, the INCLUDE statement is replaced by the source text of the defined include program
DATA tmp(10).DATA tmp1 TYPE i. DATA tmp2 TYPE p.DATA tmp3.
Include Program : ZINCLUDE1
REPORT ztest1.INCLUDE zinclude1. …
REPORT ztest2.INCLUDE zinclude1. …
Flow Control in ABAP
Flow Control in ABAP Flow Control in ABAP
Branching ==> IF, CASE. Looping ==> DO, WHILE.
IF StatementIF Statement
IF <Condition>. <Statement Block>ELSEIF <Condition>. <Statement Block>ELSEIF <Condition>. <Statement Block>ELSE. <Statement Block>ENDIF.
IF StatementIF Statement
- IF sy mandt = ‘100’. WRITE: / ‘This is Production Client’.
-: :::: : := ‘ 800’ or sy-mandt = ‘805’. WRITE: / ‘This is Training Client’. WRITE / sy-mandt.ELSE. WRITE: / ‘This is Test Client’.ENDIF.
CASE StatementCASE Statement
CASE <field>. WHEN <value1>. <Statement Block> WHEN <value2>. <Statement Block> ... WHEN OTHERS. <Statement Block> ENDCASE.
CASE StatementCASE Statement
-CASE sy mandt. WHEN ‘100’. WRITE: / ‘This is Production Client’. WHEN ‘800’ or ‘805’. WRITE: / ‘This is Training Client’. WRITE / sy-mandt. WHEN OTHERS. WRITE: / ‘This is Test Client ’. ENDCASE.
DO StatementDO Statement
DO. WRITE sy-index. IF sy-index = 3. EXIT. ENDIF. WRITE: sy-index.ENDDO.
Loop Counter
DO StatementDO Statement
DO 10 TIMES. WRITE / sy-index.ENDDO.
Loop Counter
WHILE StatementWHILE Statement
DATA: count TYPE i value 1.WHILE count <> 4. WRITE: sy-index. count = count + 1.ENDWHILE.
Loop Counter
WHILE sy-index <> 4. WRITE: sy-index.ENDWHILE.
Logical ExpressionsLogical Expressions
>,GT<,LT>=, =>, GE<=, =<, LE=, EQ<>, ><, NEBETWEEN <value1> AND <value2>IS INITIAL
Arithmetic OperatorsArithmetic Operators
+ , - , * , / , ** DIVMOD
Example :9 / 2 = 4.59 DIV 2 = 4.09 MOD 2 = 12 ** 4 = 16
ABAP : Data Retrieval
Open SQL (SELECT)
SAP System : 3 Tier Client/ServerSAP System : 3 Tier Client/Server
DB Server
SAP Application Server
SAP GUI Presentation
Server
SAP GUISAP GUI
SAP SYSTEM (3 Tier Architecture)SAP SYSTEM (3 Tier Architecture)
Presentation Layer
(Windows based)
Application Layer
(Windows Server/UNIX)
Database Server
Database Layer
(Windows Server/UNIX)
M
SAP Instance
Oracle
Informix
DB2
MS SQL Server
MaxDB
G
Dispatcher
RequestQueue
D D B V S E
SAP Buffer(Shared Mem)
SAP GUI SAP GUI
Database Server
Application Server
Dispatcher
RequestQueue
D D D B…
SAP Buffer
Program
…
User ContextArea
1
3
46
79
10
11
Report zpsm1.
Tables customers.
Select single * from customers
where id = 1.
Write: / customers-name.
5
Execute ABAP statement
Check Program in Program Buffer
Roll in
8
Load&Generate Program
SQL Request
Send List
Generate Screen(List)Send Request
Request List
2 Search for free WP
Store request to queue
Send request to WP
SAP GUI
REPOSRC
Report zpsm1.
Tables customers.
Select single * from customers
where id = 1.
Write: / customers-name.
SAP System : Dialog Processing
customers
TaskHandler
DYNPRO Processor
ABAP Processor
Local Memory
Memory Space
DB Interface
List Buffer
Database Server
Dialog Work Process
User Context
Dialog Work Process Architecture
Result Set Memory
Open SQL SELECT ...
Data Objects : Tables Data Objects : Tables StructureStructure
Memory Space
Structure
Tables Structure
Internal Table
Variable
Constants<Field-symbols>
DB InterfaceDB Interface
Data
SAP Application Server
Local Memory
DataData
Dialog WP
TaskHandler
DB Interface
Result Set
DataData
Database Server
~ 32 KB in length
ABAP Processor
DYNPRO
Memory Space
List Buffer
Example Tables in DB
carrid connid cityfrom cityto distance
LH 0400 LA NY 100
LH 0402 BK NY 540
SQ 0110 SQ BK 250
id name city
1 John New York
2 Peter Singapore
3 David
London
customersspfli
Example Tables in DB
carrid connid fldate price
LH 0400 20010101
150
LH 0400 20010110
145
LH 0400 20010228
130
SQ 0110 20010226
75
sflight
SELECT Overview
SELECT <Column List> Which Columns?
FROM <table> Which Table?
INTO <destination> Where to place?
WHERE <condition> Which Lines?
SELECT Statement Select multiple records from database
Select single record from database
SELECT * FROM customers. …ENDSELECT.
SELECT SINGLE * FROM customers WHERE id = 1. …
SELECT Multiple Records : SPFLI
TABLES spfli.SELECT * FROM spfli. WRITE - -: / spfli carrid, spfli connid, spfli-cityfrom, spf -li cityto.ENDSELECT.
spfli-carrid spfli-connid spfli-cityfrom spfli-cityto
SELECT Multiple Records : SFLIGHT
TABLES sflight.SELECT * FROM sflight. WRITE : / sflight- carrid, sflight-connid, sflight-fldate, sflight-price.ENDSELECT.
sflight-carrid sflight-connid sflight-fldate sflight-price
Exercise
CUSTOMERS-ID CUSTOMERS-NAME CUSTOMERS-CITY
SELECT Multiple Records : CUSTOMERS
TABLES customers.SELECT * FROM customers. WRITE : / customers- id, customers-name, customers-city.ENDSELECT.
Dialog WPDialog WPDialog WP
TaskHandler
DYNPRO Processor
ABAP Processor
Database
Local Memory
DB InterfaceResult Set
Memory Space
List buffer
User Context
SELECT Statement Working Steps
1. Transform open SQL to DB SQL and return result set into result set work area
SELECT * FROM customers. …ENDSELECT.
SELECT * FROM customers;
2. Loop with data in result set and transfer each record to work area in memory space
SELECT * FROM customers. …ENDSELECT.
Table Structure in Memory Space
sy-subrc = 0
ABAP Processor
DB Interface
Select Multiple Records : SPFLI
TABLES spfli.SELECT * FROM spfli. WRITE : / - -spfli carrid, spfli connid,
spfli-cityfrom,spf -li cityto.ENDSELECT.
SELECT Statement Working Steps
1. Transform open SQL to DB SQL and return result set into result set work area
SELECT * FROM spfli. …ENDSELECT.
SELECT * FROM spfli;
2. Loop with data in result set and transfer each record to work area in memory space
SELECT * FROM spfli. …ENDSELECT.
Table Structure in Memory Space
sy-subrc = 0
ABAP Processor
DB Interface
SELECT Multiple Records : CUSTOMERS
TABLES customers.SELECT * FROM customers. WRITE : / customers- id, customers-name, customers-city.ENDSELECT.
SELECT INTO Table Structure
TABLES customers.SELECT * FROM customers INTO customers. WRITE : / customers- id, customers-name, customers-city.ENDSELECT.
SELECT … INTO Work Area
DATA wa LIKE customers.SELECT * FROM customers INTO wa. WRITE : / wa- id, wa-name, wa-city.ENDSELECT.
Table TRBAT
SELECT … FROM …
TABLES trbat.SELECT * FROM trbat . WRITE : / trbat-function.ENDSELECT.
SELECT Statement : No Data Found
1. Transform open SQL to DB SQL and return result set into result set work area (If no data found in DB table)
SELECT * FROM trbat. …ENDSELECT.
SELECT * FROM trbat;
2. Go to statement after ENDSELECT
SELECT * FROM trbat. …ENDSELECT.
sy-subrc > 0
ABAP Processor
DB Interface
SELECT … FROM …
TABLES trbat.SELECT * FROM trbat . WRITE : / trbat-function.ENDSELECT.IF sy-subrc <> 0. WRITE: / ‘No data found!!!’.ENDIF.
SELECT Multiple Records
TABLES customers.SELECT * FROM customers. WRITE : / customers- id, customers-name, customers-city.ENDSELECT.IF - sy subrc <> 0.
WRITE : / ‘No Data Found’.ENDIF.
Exercise I
customers-id customers-name
customers-city
SELECT with WHERE Clause
Loop Processing with Restriction
TABLES customers.SELECT * FROM customers WHERE city = ‘Bangkok’. WRITE : / customers- id, customers-name.ENDSELECT.IF - 0sy subrc <> . WRITE / ‘no data’.ENDIF.
Loop Processing with RestrictionTABLES spfli.SELECT * FROM sssss WHERE cityfrom = ‘FRANKFURT’. WRITE - -: / spfli carrid, spfli cityto.ENDSELECT.IF - 0sy subrc <> . WRITE / ‘no data’.ENDIF.
Select With Range
TABLES sflight.SELECT * FROM sflight WHERE price BETWEEN 100 AND
1000. WRITE: / sflight-carrid, sflight-connid, sflight-price.ENDSELECT.
SELECT … With IN List
TABLES sflight.SELECT * FROM sflight WHERE price IN ( 100, 1000 ). WRITE: / sflight-carrid, sflight-
connid, sflight-price.ENDSELECT.
SELECT … With TemplateTABLES customers.SELECT s* ROM customers WHERE name LIKE ‘_r%’. WRITE - -: / customers id,customers name.ENDSELECT.
Select Single Record
Select Single Record
TABLES customers.SELECT SINGLE * FROM customers
WHERE id = 1.IF -sssss s s s0
WRITE : / customers- id, customers-name, customers-ssss, customers-discount.
ELSE.WRITE : / ‘Data not found’.
ENDIF.
Select Column List
Select * : Example
SELECT *
bkpf-belnr bkpf-gjahr
Select Column : Using Structure
bkpf-belnr bkpf-gjahr
SELECT …* FROM …
TABLES customers.SELECT * FROM customers. WRITE : / customers-id, customers-name, customers-city.ENDSELECT.IF sy-subrc <> 0. WRITE: / ‘No data found’.ENDIF.
Reading Selected Column DATA: BEGIN OF wa, id LIKE customers-id, name LIKE customers-name, city LIKE customers-city, END OF wa.
SELECT id name city INTO wa FROM customers. WRITE : / wa-id, wa-name , wa-city.ENDSELECT.IF - sy subrc <> 0. WRITE / ‘No Data found’.ENDIF.
customers-id customers-name customers-city
1
2
Exercise I
customers-id customers-name
customers-city
ห้�ามใช้� SELECT *
ABAP : Inner Join
Flight Data Model
Flight Data Model
Tables Join
Question: Select carrid, connid and cityto from spfli and fldate,price from sflight where carrid = ‘LH’
spfli-carrid spfli-connid sflight-fldate spfli-cityto sflight-price
เงื่� อนไข : ให้�แสดงื่ข�อม�ลเฉพาะสายการบิ�น ‘LH’ เท่ าน!"น
Open SQL – Inner JoinTABLES: spfli,sflight.SELECT spfli~carrid spfli~connid sflight~fldate spfli~cityto sflight~price INTO (spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price) FROM spfli INNER JOIN sflight ON spfli~carrid = sflight~carrid AND spfli~connid = sflight~connid WHERE spfli~carrid = ‘LH’. WRITE: / spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price.ENDSELECT.
Open SQL – Inner JoinTABLES: A,B.SELECT A~a B~b B~c INTO (A-a,B-b,B-c) FROM A INNER JOIN B ON A~b = B~b. WRITE: / A-a,B-b,B-c.ENDSELECT.
a ba1 b1
a2 b2
Table : A
b cb1 c1
b2 c2
b3 c3
Table : B
A-a B-b B-c
SELECT INNER JOIN Working Steps
1. Transform open SQL to DB SQL and return result set into result set work area
SELECT A~a B~b B~c ….FROM A INNER JOIN B …ENDSELECT.
SELECT A.a, B.b, B.c FROM A,B WHERE A.b = B.b;
2. Loop with data in result set and transfer each record to work area in memory space
SELECT A~a B~b B~c …ENDSELECT.
Tables Structure in Memory Space
sy-subrc = 0
ABAP Processor
DB Interface
Open SQL – Inner Join
a ba1 b1
a2 b2
Table : Ab cb1 c1
b2 c2
b3 c3
Table : B
A~a B~b B~ca1 b1 c1
a2 b2 c2
Single Result Table(Result set)
Select …
inner join..
Endselect.
Database
Server
Application Server
1
2
Open SQL – Alias Table Name
TABLES: spfli,sflight.SELECT a~carrid a~connid b~fldate a~cityto b~price INTO (spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price) FROM spfli AS a INNER JOIN sflight AS b ON a~carrid = b~carrid and a~connid = b~connid WHERE a~carrid = ‘LH’. WRITE: / spfli-carrid, spfli-connid, sflight-fldate, spfli-cityto, sflight-price.ENDSELECT.
Exercise : Sale Document
VBAK-VBELN VBAK-ERDAT VBAK-KUNNR VBAP-MATNR VBAP-NETWR
Document Number (VBAK-VBELN)‘0000004970’
Open SQL – Inner Join > 2 Tables
TABLES: A,B,C.SELECT A~a B~c C~y INTO (A-a,B-c,C-y) FROM A INNER JOIN B ON A~b = B~b INNER JOIN C ON C~x = B~c. WRITE: / A-a,B-c,C-y.ENDSELECT.
a b… …
Table : A
b c… ...
… ...
… …
Table : B
x y… ...
Table : CA-a B-c C-y
Flight Data Model
Open SQL – Inner Join > 2 Tables
REPORT ZINNERJOIN02 NO STANDARD PAGE HEADING.TABLES : sflight,sbook,scustom.SELECT a~carrid a~connid a~fldate b~bookid b~customid c~name b~luggweight INTO (sflight-carrid,sflight-connid,sflight-fldate, sbook-bookid,sbook-customid,scustom-name,sbook-luggweight) FROM sflight AS a INNER JOIN sbook AS b ON a~carrid = b~carrid AND a~connid = b~connid AND a~fldate = b~fldate INNER JOIN scustom AS c ON c~id = b~customid. WRITE : / sflight-carrid,sflight-connid,sflight-fldate, sbook-bookid,sbook-customid,scustom-name,sbook-luggweight.ENDSELECT.
SFLIGHT-CARRID SFLIGHT-CONNID SFLIGHT-FLDATE SBOOK-BOOKID SBOOK-CUSTOMID SCUSTOM-NAME SBOOK-LUGGWEIGHT
Exercise : Sale Document
VBAK-VBELN VBAK-ERDAT KNA1-NAME1 VBAP-MATNR VBAP-NETWR
Document Number(VBAK-VBELN)
= ‘0000004970’
Flight Data Model
Flight Information : Inner Join
SFLIGHT-CARRID SCARR-CARRNAME SFLIGHT-CONNID SFLIGHT-FLDATE SBOOK-BOOKID SBOOK-CUSTOMID SCUSTOM-NAME SBOOK-LUGGWEIGHT
Internal Table
Data Objects : Internal TableData Objects : Internal Table
Memory Space
Structure
Tables Structure
Internal Table
Variable
Constants<Field-symbols>
INTERNAL TABLEwa (Structure)
id name city
Internal Tabletab (Internal Table)
id name city
Header Line
Table Bodies
‘00000000’
‘00000000’
Structure
Structure
DATA: BEGIN OF wa,id LIKE customers-id,name LIKE customers-name,city LIKE customers-city,
END OF wa.
wa- id = 1.wa-name = ‘John’.wa-city = ‘Bangkok’.
WRITE: / wa-id, wa-name.
INTERNAL TABLE
DATA: BEGIN OF tab OCCURS 10,id LIKE customers-id,
name LIKE customers-name,city LIKE customers-city,
END OF tab.
INTERNAL TABLE
DATA: BEGIN OF tab OCCURS 0,id LIKE customers-id,
name LIKE customers-name,city LIKE customers-city,
END OF tab.
USING ABAP DICTIONARY STRUCTURE
DATA: BEGIN OF tab OCCURS 0.INCLUDE STRUCTURE customers.
DATA END OF tab.
INTERNAL TABLE USING LIKE
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE.
id name city
Header Line
Table Bodies
8 KB
tab (Internal Table)
‘00000000’
Append And Read Data
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE.tab-id = 1.tab-name = ‘John’.tab-city = ‘Bangkok’.APPEND tab.tab-id = 2.tab-name = ‘Peter’.tab-city = ‘London’.APPEND tab.LOOP AT tab. WRITE: / tab-id, tab-name, tab-city.ENDLOOP.
Reading Data From Internal Table
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE.SELECT * FROM customers INTO TABLE tab.IF sy-subrc = 0. LOOP AT tab. WRITE : / tab-id , tab-name,tab-city. ENDLOOP.ELSE. WRITE : / ‘No Data’.ENDIF.
Access Database Without Internal Table
Access Database Using Internal Table
Access Database Using Internal Table
BKPF-BELNR BKPF-GJAHR
SELECT <Column>… ENDSELECTSELECT <Column>… ENDSELECT
Dialog WP
TaskHandler
DYNPRO Processor
ABAP Processor
Database
Local Memory
Memory Space
DB Interface
00000001 John00000002 Peter00000003 David
List buffer
Result Set
3 | David
WA Structure
1
2
SELECT …INTO TABLE …SELECT …INTO TABLE …Dialog WP
TaskHandler
DYNPRO Processor
ABAP Processor
Database
Local Memory
Memory Space
DB Interface
List buffer
Result Set
1
2
Internal Table
Reading Data From Internal TableDATA: BEGIN OF tab OCCURS 0, id LIKE customers-id, name LIKE customers-name, END OF tab.
SELECT id name FROM customers INTO TABLE tab.
IF sy-subrc = 0. LOOP AT tab. WRITE - : / tab id, tab-name. ENDLOOP.ELSE. WRITE: / ‘No Data’.ENDIF.
1
2
3
customers-id customers-name
Exercise I : Change
Using Internal Table
SORTING INTERNAL TABLE (SORT)
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE.…SORT tab BY name.SORT tab BY name ASCENDING
city DESCENDING.
INTERNAL TABLE PROCESSING...LOOP AT tab. WRITE : / tab- d, tab-name.ENDLOOP. LOOP AT sab WHERE city = ‘Bangkok’. WRITE : / tab-id, tab-name.ENDLOOP. LOOP AT tab FROM 1 TO 10. WRITE : / -sy tabix ,tab-id, tab-name.ENDLOOP.
Record Pointer
Internal Table Template Condition
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE.
...LOOP AT tab WHERE name CP ‘+r*’....
Reading Single Record
DATA tab LIKE customers OCCURS 0 WITH HEADER LINE....SORT tab BY name city.READ TABLE tab
WITH KEY name = ‘John’ city = ‘Bangkok’ BINARY SEARCH.IF - sy subrc = 0 . WRITE : / tab- id, tab-name, tab-city, tab-telephone.ENDIF.
Reading Single Record using Index
...READ TABLE tab INDEX 3.Is - sy subrc = 0. WRITE : / tab-id, tab-name.
ENDIF.
DELETING Data in INTERNAL TABLE
CLEAR tab.
REFRESH tab.
FREE tab.
DATA tab LIKE sflight OCCURS 0 WITH HEADER LINE.
SELECT … INNER JOIN
TABLES: scarr,spfli.SELECT spfli~carrid scarr~carrname spfli~connid INTO (spfli-carrid, scarr-carrname, spfli~connid) FROM spfli INNER JOIN scarr ON spfli~carrid = scarr~carrid. WRITE: / spfli-carrid, scarr-carrname , spfli~connid.ENDSELECT.
SPFLI-CARRID SCARR-CARRNAME SPFLI-CONNID
Inner Join using Internal Table
DATA: BEGIN OF tab OCCURS 0, carrid LIKE spfli-carrid, carrname LIKE scarr-carrname, connid LIKE spfli-connid, END OF tab. SELECT spfli~carrid scarr~carrname spfli~connid INTO TABLE tab FROM spfli INNER JOIN scarr ON spfli~carrid = scarr~carrid.…LOOP AT tab. WRITE: / tab-carrid,tab-carrname,tab-connid.ENDLOOP.
SPFLI-CARRID SCARR-CARRNAME SPFLI-CONNID
Exercise : Using Internal Table
VBAK-VBELN VBAK-ERDAT VBAK-KUNNR VBAP-MATNR VBAP-NETWR
Document Number(VBAK-VBELN)
= ‘0000004970’
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.AT LINE-SELECTION. WRITE: / ‘This is ’. WRITE : ‘Detail List’.START-OF-:ELECTION. WRITE: / ‘This is ’. WRITE: / ‘Basic List’.
Events
START-OF-SELECTION. AT LINE-SELECTION. INITIALIZATION. AT SELECTION-SCREEN.
AT LINE-SELECTION Event(Drill-down Report)
Database Server
Application Server
Dispatcher
RequestQueue
D D D B…
SAP Buffer
Program
…
User ContextArea
1
3
46
79
10
11
Report zpsm1.
Tables customers.
Select single * from
customers where id = 1.
Write: / customers-name.
5
Execute ABAP statement
Check Program in Program Buffer
Roll in
8
Load&Generate Program
SQL Request
Send List
Generate Screen(List)Send Request
Request List
2 Search for free WP
Store request to queue
Send request to WP
SAP GUI
..
D010S
Report zpsm1.
Tables customers.
Select single * from
customers where id = 1.
Write: / customers-name.
SAP System : Dialog Processing
customers
12Roll out
TaskHandler
DYNPRO Processor
ABAP Processor
Local Memory
Memory Space
DB Interface
List Buffer
Database Server
Dialog Work Process
User Context
Dialog Work Process Architecture
Result Set Memory
Server
Database Server
Application Server
Dispatcher
RequestQueue
D D D B…
SAP Buffer
Program
…
User Context Area
1
3
46
79
10
11
Report zpsm1.
Tables customers.
Select single * from
customers where id = 1.
Write: / customers-name.
5
Execute ABAP statement
Check Program in Program Buffer
Roll in
8
Load&Generate Program
SQL Request
Send List
Generate Screen(List)Send Request
Request List
2 Search for free WP
Store request to queue
Send request to WP
SAP GUI
..
D010S
Report zpsm1.
Tables customers.
Select single * from
customers where id = 1.
Write: / customers-name.
Dialog Processing : Roll Out
customers
12Roll out
AT LINE-SELECTION
START-OF-SELECTION. WRITE : ‘ ’ .AT LINE-SELECTION. WRITE : ‘Detail ’ .
(Basic list)
DoubleClickWRITE, ULINE
AT LINE-SELECTION
1. Double Click 2. Choose Button
3. Hotspot
Navigating Between Lists
Basic list
Detail list 20Exit
Detail list 1
Detail list 2
ABAP Editor
Back
Cancel
Runtime Error : Detail List > 20
Detail List and SY-LSIND
START-OF-SELECTION. WRITE : ‘Basic List’.
AT LINE-SELECTION. CASE -sy lsind. WHEN 1. WRITE : ‘Detail List :’,sy-lsind. WHEN2 . WRITE : ‘Detail List :’,sy-lsind. ENDCASE.
Detail list : 2SY-LSIND = 2
Detail list : 1SY-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 :’ , custom
-ers 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 n
ame.
HIDE area of list level 1
line Field name Value1 customers-name John 2 customers-name Peter
3 customers-name David
JohnPeterDavid
List Buffer
Hide Area in ListHide Area in ListDialog 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
JohnPeterDavid
Basic List
HIDE area of list level 1line Field name Value1 customers-name John 2 customers-name Peter3 customers-name David
At Line Selection(Hide Statement)
HIDE area of list level 1
line Field name Value1 customers-name John 2 customers-name Peter
3 customers-name David
JohnPeterPeterDavid
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 1line Field name Value1 customers-id 00000001 1 customers-name John
2 customers-id 000000022 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 John00000002 Peter00000003 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 John00000002 Peter00000002 Peter00000003 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)
ZATLINE4
Exercise : Flight Information
Basic List
Drill-down Level 1
SCARR
SPFLI
Good ProgramDATA: BEGIN OF tab_spfli OCCURS 0, carrid LIKE spfli-carrid, connid LIKE spfli-connid, cityto LIKE spfli-cityto, END OF tab_spfli.DATA: BEGIN OF tab_sflight OCCURS 0, carrid LIKE sflight-carrid, connid LIKE sflight-connid, fldate LIKE sflight-fldate, END OF tab_sflight.
START-OF-SELECTION. SELECT carrid connid cityto FROM spfli INTO TABLE tab_spfli. IF sy-subrc = 0. LOOP AT tab_spfli. WRITE: / tab_spfli-carrid,tab_spfli-connid, tab_spfli-cityto. HIDE: tab_spfli-carrid,tab_spfli-connid. ENDLOOP. ELSE. WRITE: / 'No data found'. ENDIF.
AT LINE-SELECTION. CASE sy-lsind. WHEN 1. SELECT carrid connid fldate INTO TABLE tab_sflight FROM sflight WHERE carrid = tab_spfli-carrid AND connid = tab_spfli-connid. LOOP AT tab_sflight. WRITE: / tab_sflight-carrid,tab_sflight-connid, tab_sflight-fldate. ENDLOOP. ENDCASE.
Exercise : Sale DocumentBasic List
Drill-down Level 1
VBAK
VBAP
Selection Screen
Selection Screen
PARAMETERS Statement SELECT-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 TYPE p DECIMALS 2, tmp7(5) TYPE n,
airline1(3), airline2 LIKE spfli-carrid.DATA id LIKE customers-id.
START-OF-SELECTION. WRITE: / tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,airline1,airline2,id.
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.
PARAMETERS : Check box
PARAMETERS :: : AS CHECKBOX DEFAULT ‘X’.
PARAMETERS : Radio Button
PARAMETERS: test1 RADIOBUTTON GROUP grp1,
test2 RADIOBUTTON GROUP grp1.
RADIOBUTTON : SAP ECC 6.0
Required Field with PARAMETERS
PARAMETERS tmp LIKE sy-datum OBLIGATORY.
ABAP Exercise