ABAP Chapter 2
Report Statement
Write & Format Statement
Flow Control in ABAP
Manipulating Character Data
Report Driven : Page Report (List Header)
List Processing
Report Header
Report Listing
(Body)
Report Statement
Syntax
EPORT < report name >
[NO STANDARD PAGE HEADING]
[LINE-SIZE no of columns ]
[LINE-COUNT no of lines [( no of footer )]].
EPORT ztest1 NO STANDARD PAGE HEADING.
EPORT ztest LINE-SIZE 132 LINE-COUNT 65(2
sy-linsz
Text Element : Title&Headers
Report ztest.
Write ‘Hello World’.
Text Element
Title and Headers
List Header This is test program by Prapoj
Column Header
Column Column
#1 #2
Creating Lists
ABAP statement that create list
WRITE
SKIP
ULINE
The complete report list will appears
automatically at the end of the
processing block
List Buffer
Dialog WP Local Memory
Memory Space
TaskHandler
ABAP Processor
List Buffer
WRITE,SKI
Dynpro Processor P,ULINE
DB Interface
Breaking to a New Line
* Write data
WRITE: / ‘First Line’, ‘Data 1’,
/ ‘Second Line’, ‘Data 2’,
/(20) ‘Third Line’, ‘Data 3’,
/35 ‘Fourth Line’, ‘Data 4’.
sy-
colno
Text Symbol
Report ztest.
Write: Text-001,
Text-002.
Text Element
Text Symbols
Text Symbol Text
001 Text 1
002 Text 2
Text Symbol
write: / Text-00
write: / Text-00
write: / Text-00
write: / Text-00
write: / Text-00
Column Position
DATA colno type I value 10.
write: /5 ‘Hello’, at colno ‘World’.
write: at /colno ‘OK’.
Options of the WRITE Statement
* Write Syntax
WRITE var [NO-ZERO]
[NO-SIGN]
[NO-GROUPING]
[NO-GAP]
[DECIMALS no of decimals]
Suppressing Blanks(NO-ZERO)
* No Zero
DATA: number(10) TYPE N VALUE 23.
WRITE: number, number NO-ZERO.
Suppressing Number(+ / -) Sign
* No Sign
DATA: v_integer TYPE I VALUE -1.
WRITE: v_integer, v_integer NO-SIGN.
NO-GROUPING
* No grouping
DATA: v_integer TYPE I VALUE 120000.
WRITE: v_integer, v_integer NO-GROUPING.
NO-GAP
* No gap
WRITE: ‘Hello’ NO-GAP, ‘World’.
DECIMALS
* Decimals
DATA: v_pack TYPE P DECIMALS 4
VALUE ‘1234.5678’.
WRITE: v_pack, v_pack DECIMALS 2.
Formatting Options
* Format options of WRITE statement
* LEFT-JUSTIFIED for Integer data
* RIGHT-JUSTIFIED for Character data
* CENTERED
Data tmp1(20) value ‘test’. test
WRITE: tmp1 CENTERED.
Inserting Blank Lines(SKIP)
*Skip Statement
SKIP.
WRITE: ‘Hello World’, sy-linno.
SKIP.
WRITE: ‘Test 1’.
SKIP 5.
WRITE: ‘Test 2’.
SKIP TO LINE 20.
WRITE ‘This is line 20’.
FORMAT Statement
FORMAT [INTENSIFIED]
[INTENSIFIED OFF]
[COLOR <color>]
[COLOR OFF]
[HOTSPOT ON]
[HOTSPOT OFF]
[RESET]
FORMAT Statement
FORMAT COLOR 1.
WRITE: / ‘Hello World’, ‘Test’ COLOR 7
FORMAT COLOR OFF.
FORMAT COLOR
FORMAT COLOR col_heading. “color 1
FORMAT COLOR col_normal. “color 2
FORMAT COLOR col_total. “color 3
FORMAT COLOR col_key. “color 4
FORMAT COLOR col_positive. “color 5
FORMAT COLOR col_negative. “color 6
FORMAT COLOR col_group. “color 7
FORMAT COLOR col_background. “color off
Exercise I
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
REPORT ztest1.
Include Program :
INCLUDE zinclude1. ZINCLUDE1
Data tmp(10).
… Data tmp1 type i.
Data tmp2 type p. REPORT ztest2.
Data tmp3.
INCLUDE zinclude1
…
Symbols and Icons
* Display Icon or Symbol in List
INCLUDE <LIST>.
WRITE: / ‘Phone :’, SYM_PHONE AS SYMBOL.
WRITE: / ‘Alarm :’, ICON_ALARM AS ICON.
WRITE: / ‘Green Light :’,
ICON_GREEN_LIGHT AS ICON HOTSPOT
FORMAT HOTSPOT ON.
WRITE: / ‘Hello ABAP’, ’Hi!’.
FORMAT HOTSPOT OFF.
Flow Control in ABAP
Flow Control in ABAP
Branching ==> IF, CASE.
Looping ==> DO, WHILE.
IF Statement
IF sy-mandt = ‘100’.
WRITE: / ‘This is Production Client’.
ELSEIF sy-mandt = ‘800’.
WRITE: / ‘This is Development Client’.
ELSE.
WRITE: / ‘This is Test Client’.
ENDIF.
CASE Statement
CASE < field >.
WHEN < value1 >.
<Statement Block>
WHEN < value2 >.
<Statement Block>
...
WHEN OTHERS.
<Statement Block>
ENDCASE.
CASE Statement
CASE sy-mandt.
WHEN ‘100’.
WRITE: / ‘Production Client’.
WHEN ‘800’.
WRITE: / ‘Development Client’.
WHEN OTHERS.
WRITE: / ‘Test Client’.
ENDCASE.
DO Statement
DO.
WRITE sy-index.
IF sy-index = 3.
EXIT.
ENDIF.
WRITE: sy-index.
ENDDO.
CONTINUE Statement
DO 5 TIMES.
IF sy-index = 3.
CONTINUE.
ENDIF.
WRITE: sy-index.
ENDDO.
CHECK Statement
DO 4 TIMES.
CHECK sy-index BETWEEN 2 AND 3.
WRITE: sy-index.
ENDDO.
WHILE Statement
DATA: count TYPE I value 1.
WHILE count <> 4.
WRITE: sy-index.
count = count + 1.
ENDWHILE.
Logical Expressions
>,GT
<,LT
>=, =>, GE
<=, =<, LE
=, EQ
<>, ><, NE
BETWEEN value1 AND value2
IS INITIAL
Arithmetic Operators
+ , - , * , / , **
DIV
MOD
Example :
9 / 2 = 4.5
9 DIV 2 = 4.0
9 MOD 2 = 1
SQRT( 2 ) = 1.41
2 ** 4 = 16
Character String Operator
T
if ‘AABB’ co ‘AB’. F
if ‘ABCD’ co ‘ABC’.
T
if ‘AXCZ’ ca ‘AB’.
F
if ‘ABCD’ ca ‘XYZ’.
T
if ‘ABCD’ cp ‘+B*’.
Manipulating Character Data
Manipulating Character Data
* Substrings with offsets
DATA tmp(10) VALUE ‘ABCDEFGHIJ’.
DEFGHIJ
DATA tmp1(2).
WRITE: tmp+3(7), BCDE
tmp+1(4), ABCDEFGH
tmp+0(8),
HIJ
tmp+7(3).
MOVE tmp+4(2) TO tmp1.
SHIFT Statement
* SHIFT Statement
DATA tmp(5) VALUE ‘12345’.
SHIFT tmp. 2345_
SHIFT tmp BY 2 PLACES. 345__
SHIFT tmp BY 2 PLACES CIRCULAR. 34512
SHIFT tmp UP TO ‘3’. 345__
SHIFT tmp UP TO ‘3’ RIGHT. __123
SHIFT tmp UP TO ‘3’ RIGHT CIRCULAR.
45123
SHIFT tmp RIGHT DELETING TRAILING SPACE.
SHIFT tmp LEFT DELETING LEADING SPACE.
SHIFT
* Shift
DATA name(30) VALUE ‘Alexander Bill Charl
SHIFT name UP TO ‘Bill’.
WRITE: / name.
Bill Charles
SEARCH(Non Case-
sensitive)
* Search
DATA tmp(5) VALUE ‘ABCDE’.
SEARCH tmp FOR ‘C’.
DATA tmp1(10) VALUE ‘Till Bill’.
SEARCH tmp1 FOR ‘Bill’.
IF SY-SUBRC = 0.
WRITE: / SY-FDPOS.
ENDIF.
TRANSLATE
* Translate
DATA tmp(5) VALUE ‘abc ‘.
TRANSLATE tmp TO UPPER CASE.
TRANSLATE tmp TO LOWER CASE.
TRANSLATE tmp USING ‘ 0’.
TRANSLATE tmp USING ‘ 0aA’.
REPLACE
* Replace
DATA tmp(20) VALUE ‘I was a boy’.
REPLACE ‘was’ WITH ‘am’ INTO tmp.
IF sy-subrc = 0.
write ‘Replace OK’.
ELSE.
write ‘Cannot find data to be replaced’.
ENDIF.
Removing Spaces(CONDENSE)
* Condense
DATA: tmp(20) VALUE ‘I am a boy’.
CONDENSE tmp. I am a boy
CONDENSE tmp NO-GAPS.
Iamaboy
Concatenation String(CONCATENATE)
* Concatenate
DATA: tmp1(2) VALUE ‘AB’,
ABCDE
tmp2(3) VALUE ‘CDE’,
tmp3(10).
CONCATENATE tmp1 tmp2 INTO tmp3.
CONCATENATE tmp1 tmp2 INTO tmp3
SEPARATED BY ‘ ‘.
AB CDE
Split
* Split
DATA: name(30) value ‘David, John, Peter’,
one(10), two(10), three(30).
split name at ‘,’ into one two three.
Working with Date Variables
* Date
DATA today TYPE D.
today = sy-datum.
WRITE: today, sy-datum+0(4)
‘Year :’ , today+0(4),
‘Month :’, today+4(2),
‘Day :’ , today+6(2).
WRITE … TO …
DATA: today TYPE D, tmp(10).
today = sy-datum.
tmp = today.
WRITE tmp.
WRITE today TO tmp.
WRITE tmp.
CLEAR today.
WRITE today NO-ZERO TO tmp.
WRITE tmp.
Invalid Date
DATA: today TYPE D.
today = ‘20061321’.
today = today + 0.
if today is initial.
write: / ‘invalid date’.
else.
write: / today.
endif.
Built-in Functions
ABAP provides a lot of built-in functions
A Built-in function calculates a return
value from an argument
abs = Absolute value of argument
sign = +/- sign of argument
sqrt = Square root
strlen = Number of characters in arg
xstrlen = Number of bytes in arg
STRLEN Built-in Function
DATA: tmp(20) VALUE ‘Test String’,
count TYPE I.
count = strlen( tmp ).
WRITE count.
STRLEN Built-in Function Example
DATA: tmp(20) VALUE ‘xxax’,
cntlen TYPE I.
cntlen = strlen( tmp ).
cntlen = cntlen – 2.
if tmp+cntlen(1) = ‘a’. “cntlen >= 0
write: / ‘OK’.
endif.
WRITE ‘
*If we need the word like this I’m a boy
WRITE: ‘I’’m a boy’.
Exercise
Create program to display current
month in text for example October
Report Driven : Page Report
Application Driven Programming
REPORT ztest.
DATA: today TYPE D.
today = ‘20061321’.
today = today + 0.
IF today IS INITIAL.
WRITE: / ‘invalid date’.
ELSE.
WRITE: / today.
ENDIF.
Event Driven Programming
REPORT ztest.
DATA today TYPE D.
TOP-OF-PAGE.
<ABAP statement>
END-OF-PAGE.
<ABAP statement>
START-OF-SELECTION.
<ABAP statement>
Report Driven List Header
EPORT ztest NO STANDARD PAGE HEADING
OP-OF-PAGE.
FORMAT COLOR 1.
WRITE: /5 ‘User Name’, 25 ‘Program Name’.
ULINE.
TART-OF-SELECTION.
WRITE: /5 sy-uname, 25 sy-repid.
Report Driven Page Footer
REPORT ztest no standard page heading LINE-COUNT 10(2).
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE: / ‘Page :’, sy-pagno.
ULINE.
END-OF-PAGE.
ULINE.
WRITE: / ‘To be continue on next page…’ .
START-OF-SELECTION.
DO 20 TIMES.
WRITE: / sy-index.
ENDDO.
TOP-OF-PAGE
REPORT ztest no standard page heading.
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE: / 'Report Header'.
ULINE.
START-OF-SELECTION.
DO 100 TIMES.
WRITE: / sy-index.
ENDDO.
ABAP Program Structure
Report ztest.
*Data declaration
data ...
data begin of ...
*Top-of-Page event
top-of-page.
*End-of-Page event
end-of-page.
*Start-of-selection
Start-of-selection.
0 comments
Post a comment