3. Parameters :
• To provide the input option to the user.
• Ex :
parameters : p_name type c.
write : p_name.
• Every program is having 3 screens.
1. ABAP Editor
2. Selection Screen
3. Output Screen
Data:
• Used to declare variables.
ex : data : p3 type i.
SELECT-OPTIONS : To provide the range input option to the user.
Ex: select-options : p_vbeln for VBAK-vbeln.
4. Data Declaration
Data Type Description Length Declaration Default Value
C CHAR REQUIRE VAR(10) TYPE C SPACE
I INT --- VAR TYPE I 0
N NUM REQUIRE VAR(3) TYPE N 000
D DATE ----- VAR TYPE D 00000000
T TIME --------- VAR TYPE T 000000
F FLOAT
(MAX 8)
VAR TYPE F 0.0000000000
0E+00
P PACKED
DECIMAL
(MAX 16) VAR TYPE P DECIMAL 2 0.00
X XSTRING ----- VAR TYPE X 00
STRING STRING -------- VAR TYPE STRING SPACE
5. Control Break Statements:
1. Do --- endo.
2. While -- endwhile.
3. If.. Endif.
4. Case … endcase.
5. If…. Elseif … elseif … endif.
6. Do enddo
• Ex:
Data : count type I.
Parameters : num type I.
count = 1.
Do num times.
write : / count.
count = count + 1.
enddo.
7. While .. Endwhile
• Ex:
DATA: COUNT TYPE I.
PARAMETERS : NUM TYPE I.
COUNT = 1.
WHILE COUNT <= NUM .
WRITE : / COUNT .
COUNT = COUNT + 1.
ENDWHILE.
8. If … endif
• Ex:
PARAMETERS : SAL TYPE I.
IF SAL > 25000.
WRITE : 'software engineer'.
ENDIF.
9. If… else … endif
• Ex :
PARAMETERS : SAL TYPE I.
IF SAL > 25000.
WRITE : 'software engineer'.
else.
WRITE : 'Support Engineer'.
ENDIF.
10. Case .. endcase
• Ex:
PARAMETERS: color TYPE i.
CASE COLOR.
WHEN '1'.
WRITE 'color 1' COLOR 1.
WHEN '2'.
WRITE 'color 2' COLOR 2.
WHEN '3'.
WRITE 'color 3' COLOR 3.
WHEN '4'.
WRITE 'color 4' COLOR 4.
WHEN '5'.
WRITE 'color 5' COLOR 5.
WHEN OTHERS.
WRITE : 'color not found'.
ENDCASE.
11. System Variables
• SY-DATUM : System date.
• SY-UZEIT : System time
• SY-CPROG: Current program name
• SY-REPID: Current program name
• SY-UNAME: System username
• SY-LANGU: System language
• SY-LINNO: Current line number
• SY-ULINE: Horizontal line
• SY-VLINE: Vertical Line
• SY-TCODE : Current Transaction code
All the system variable available in structure SYST
• SY-SUBRC : returns 0 if previous statement executed successfully.
• SY-TABIX: Stores internal table index.
• SY-INDEX : Can be used as a counter in the loops.
• SY-LSIND : returns list index.
12. Operation on string
• Concatenate : Used to combine the character.
• Ex:
data: name(20) TYPE c.
PARAMETERS : name1(10) TYPE c,
name2(10) TYPE c.
CONCATENATE name1 name2 INTO name.
WRITE name.
13. • Separated by : To maintain the space between 2 strings.
Ex:
data: name(20) TYPE c.
PARAMETERS : name1(10) TYPE c,
name2(10) TYPE c.
CONCATENATE name1 name2 INTO name SEPARATED BY space.
WRITE name.
14. • Alignments
• RIGHT-JUSTIFIED AND LEFT-JUSTIFIED :
• By default always characters are left justified and numbers are
right justified.
Ex :
PARAMETERS : name(10) TYPE c,
num TYPE i.
WRITE : name COLOR 2 RIGHT-JUSTIFIED,
/ num COLOR 3 LEFT-JUSTIFIED.
CENTERED :
PARAMETERS : name(10) TYPE c,
num TYPE i.
WRITE : name COLOR Centered ,
/ num COLOR 3 LEFT-JUSTIFIED.
15. • Split : Using to split.
Ex:
data: var1(10) TYPE c,
var2(10) TYPE c.
PARAMETERS : p_name(20) TYPE c.
SPLIT p_name at '.' INTO var1 var2.
WRITE : / var1,
/ var2 .
16. • Replace : It replace only 1st occurrence in string.
Ex:
PARAMETERS : p_name(20) TYPE c.
REPLACE 'A' WITH 'B' into p_name.
WRITE : p_name.
17. • Replace all occurrences of : To replace the all the occurrence
of given string.
• Ex :
PARAMETERS : p_name(20) TYPE c.
REPLACE ALL OCCURRENCES OF 'A' in p_name WITH 'B'.
WRITE : p_name.
18. • TRANSLATE : It works similar to replace all occurrences of
PARAMETERS : p_text(20) TYPE c.
TRANSLATE p_text USING 'AB'.
WRITE : p_text.
19. • Offset : Splitting based on position.
Ex :
DATA : p1(10) TYPE c,
p2(10) TYPE c.
PARAMETERS : p_text(10) TYPE c.
p1 = p_text(2).
p2 = p_text+2(8).
WRITE : / p1 , / p2.
20. • CONDENSE :
Ex :
PARAMETERS : k(5) TYPE c.
CONDENSE k NO-GAPS.
WRITE : k .
• NO-GAP : Use to remove the gap.
Ex:
WRITE : 'jugul' , 'donald'.
WRITE : / 'jugul' NO-GAP, 'donald'.
• NO-ZERO : Use to remove zero’s.
Ex :
PARAMETERS : k(5) TYPE n.
WRITE : k no-zero.
21. Structures
• Structures are combination of different variables or types.
• Syntax :
types : Begin of <structure name>,
------
------
End of <structure name>.
22. Ex :
Types: Begin of ABC,
name(10) type c,
DOB type d,
age(2) type c,
End of ABC.
A variable which has been declared with reference of structure
is Know as Work Area.
DATA: WA type ABC.
• Assigning value to Work area.
WA-NAME = ‘STEVE’.
WA-DOB = ‘22-07-1990’.
WA-AGE = ’26’.
WRITE : / WA-NAME , WA-DOB, WA-AGE.
23. • Clear : Clear is used to clear the content of variable.
TYPES : BEGIN OF T_STD,
NAME(20) TYPE C,
AGE TYPE I,
CLASS TYPE I,
END OF T_STD.
DATA : WA TYPE T_STD.
WA-NAME = 'DONALD'.
WA-AGE = 25.
WA-CLASS = 2.
WRITE : / WA-NAME , WA-AGE ,WA-CLASS.
CLEAR WA.
WA-NAME = 'JUGUL'.
WA-CLASS = 3.
WRITE : / WA-NAME , WA-AGE ,WA-CLASS.
24. Internal Table
• Internal table is like table which can be able to hold multiple
records.
• Syntax :
< variable name> type table of <structure/table name >.
Ex :
TYPES : BEGIN OF T_STD,
NAME(20) TYPE C,
AGE TYPE I,
CLASS TYPE I,
END OF T_STD.
DATA : WA TYPE T_STD,
ITAB TYPE TABLE OF T_STD.
25. WA-NAME = 'DONALD'.
WA-AGE = 25.
WA-CLASS = 2.
• Append is used to append the record from work area to
internal table.
APPEND WA TO ITAB.
CLEAR WA.
WA-NAME = 'JUGUL'.
WA-CLASS = 3.
APPEND WA TO ITAB.
CLEAR WA.
• To access data from internal table .
LOOP AT ITAB INTO WA.
WRITE : / WA-NAME ,WA-AGE , WA-CLASS.
ENDLOOP.
26. To select record from Database
table into work Area.
• Ex:
DATA : WA TYPE ZSTUD.
SELECT SINGLE * FROM ZSTUD
INTO WA
WHERE STUDID = '124'.
WRITE:/ WA-STUDID , WA-DEPARTID1, WA-STUDNAME , WA-
FEES.
27. Corresponding fields of
• Used to place the selected fields at corresponding fields in
WA/internal table.
• Ex :
DATA : WA TYPE ZSTUD.
SELECT SINGLE DEPARTID1 STUDNAME FROM ZSTUD
INTO CORRESPONDING FIELDS OF WA
WHERE STUDID = '124'.
WRITE:/ WA-DEPARTID1, WA-STUDNAME .
• If we want to put data into work area , then we have to use
single in our selection statement.
• Using corresponding fields of in program reduces the
performance.
28. • How to avoid ?
Ans : create the structure for required field.
Ex :
TYPES: BEGIN OF T_STD,
DEPARTID1(2) TYPE C,
STUDNAME(60) TYPE C,
END OF T_STD.
DATA: WA TYPE T_STD.
SELECT SINGLE DEPARTID1 STUDNAME FROM ZSTUD
INTO WA
WHERE STUDID = '124'.
WRITE:/ WA-DEPARTID1, WA-STUDNAME .
29. • In structure instead of assigning data type and length ,we can
also assign the database table and field name.
Ex:
TYPES: BEGIN OF T_STD,
DEPARTID1 TYPE ZSTUD-DEPARTID1,
STUDNAME TYPE ZSTUD-STUDNAME,
END OF T_STD.
DATA: WA TYPE T_STD.
SELECT SINGLE DEPARTID1 STUDNAME FROM ZSTUD
INTO WA
WHERE STUDID = '124'.
WRITE:/ WA-DEPARTID1, WA-STUDNAME .
30. • Also we can do it, by assigning data element directly.
• Ex:
TYPES: BEGIN OF T_STD,
DEPARTID1 TYPE ZDEPID,
STUDNAME TYPE ZSTUDNAME1,
END OF T_STD.
DATA: WA TYPE T_STD.
SELECT SINGLE DEPARTID1 STUDNAME FROM ZSTUD
INTO WA
WHERE STUDID = '124'.
WRITE:/ WA-DEPARTID1, WA-STUDNAME .
31. • Using parameter:
Ex :
TYPES: BEGIN OF T_STD,
DEPARTID1 TYPE ZDEPID,
STUDNAME TYPE ZSTUDNAME1,
END OF T_STD.
DATA: WA TYPE T_STD.
PARAMETERS : STUID TYPE ZSTUD-STUDID.
SELECT SINGLE DEPARTID1 STUDNAME FROM ZSTUD
INTO WA
WHERE STUDID = STUID.
WRITE:/ WA-DEPARTID1, WA-STUDNAME .
32. Select ---- EndSelect
• Used to select multiple records directly from database table.
Ex :
DATA : WA TYPE MAKT.
PARAMETERS : P_MATNR TYPE MAKT-MATNR.
SELECT * FROM MAKT
INTO WA WHERE MATNR = P_MATNR.
WRITE : / WA-MATNR , WA-SPRAS, WA-MAKTX, WA-MAKTG.
ENDSELECT.
• It fetches records multiple time from database table. So it
reduces the performance.
33. Internal Table
Ex:
DATA : WA TYPE MAKT,
ITAB TYPE TABLE OF MAKT.
PARAMETERS : P_MATNR TYPE MAKT-MATNR.
SELECT * FROM MAKT
INTO TABLE ITAB WHERE MATNR = P_MATNR.
LOOP AT ITAB INTO WA.
WRITE : / WA-MATNR , WA-SPRAS, WA-MAKTX, WA-MAKTG.
ENDLOOP.
Note : if there is no composite key , then work area is sufficient to fetch data from
database.
34. Fetching data from 2 tables.
• Ex :
TYPES : BEGIN OF T_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
END OF T_VBAP.
DATA : ITAB TYPE TABLE OF T_VBAP,
WA TYPE T_VBAP,
WA1 TYPE MAKT.
PARAMETERS : P_VBELN TYPE VBAP-VBELN.
SELECT VBELN POSNR MATNR FROM VBAP
INTO TABLE ITAB WHERE VBELN = P_VBELN.
LOOP AT ITAB INTO WA.
WRITE : / WA-VBELN , WA-POSNR , WA-MATNR.
SELECT SINGLE * FROM MAKT INTO WA1 WHERE MATNR = WA-MATNR AND SPRAS = 'EN'.
WRITE : WA1-MAKTX.
ENDLOOP.
Note: It reduces the performance . Because within the loop fetching data from database number of times.
35. Inner JoinEx:
TYPES : BEGIN OF T_STR,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF T_STR.
DATA : ITAB TYPE TABLE OF T_STR,
WA TYPE T_STR.
PARAMETERS : P_VBELN TYPE VBAP-VBELN.
SELECT VBELN
POSNR
A~MATNR
MAKTX
INTO TABLE ITAB
FROM VBAP AS A INNER JOIN MAKT AS B ON B~MATNR = A~MATNR
WHERE VBELN = P_VBELN AND SPRAS = 'EN'.
LOOP AT ITAB INTO WA.
WRITE : / WA-VBELN , WA-POSNR , WA-MATNR , WA-MAKTX.
ENDLOOP.
Note : Whenever tables are less than or equal 3 go for inner join technique.
36. For all entries in
Ex :
TYPES : BEGIN OF T_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
END OF T_VBAP.
TYPES : BEGIN OF T_MAKT,
MATNR TYPE MAKT-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF T_MAKT.
TYPES : BEGIN OF T_FINAL,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF T_FINAL.
DATA : WA TYPE T_VBAP,
ITAB TYPE TABLE OF T_VBAP,
WA1 TYPE T_MAKT,
ITAB1 TYPE TABLE OF T_MAKT,
WA2 TYPE T_FINAL,
ITAB2 TYPE TABLE OF T_FINAL.
PARAMETERS : P_VBELN TYPE VBAP-VBELN.
37. START-OF-SELECTION.
SELECT VBELN POSNR MATNR FROM VBAP
INTO TABLE ITAB
WHERE VBELN = P_VBELN .
IF ITAB IS NOT INITIAL.
SELECT MATNR MAKTX FROM MAKT
INTO TABLE ITAB1 FOR ALL ENTRIES IN ITAB
WHERE MATNR = ITAB-MATNR AND SPRAS = 'EN'.
ENDIF.
LOOP AT ITAB INTO WA.
WA2-VBELN = WA-VBELN.
WA2-POSNR = WA-POSNR.
WA2-MATNR = WA-MATNR.
CLEAR WA1.
READ TABLE ITAB1 INTO WA1 WITH KEY MATNR = WA-MATNR.
If sy-subrc = 0.
WA2-MAKTX = WA1-MAKTX.
Endif.
APPEND WA2 TO ITAB2.
ENDLOOP.
LOOP AT ITAB2 INTO WA2.
WRITE : / WA2-VBELN , WA2-POSNR , WA2-MATNR , WA2-MAKTX.
ENDLOOP.
38. • Note :
1. Check the for all entries table is not empty .
2. Write all key field in selection criteria.
3. Data type and length of for all entries matching field should
be match for both the table.
39. • Important : Read table.
1. Clear the work area before read the table.
2. After reading table use sy-subrc .
3. To improve the performance use Binary search in read
statement.
Ex :
READ TABLE ITAB1 INTO WA1 WITH KEY MATNR = WA-
MATNR binary search.
* before the loop sort the internal table.
sort itab1 by matnr.
40. Different Types of Internal
Table
• Based on header line internal tables are classified into 2 types:
• Header Line nothing but work area.
1. Internal table with header line .
2. Internal table without header line.
• Internal table without header line
Ex:
Types : begin of stru,
name(20) type c,
age(2) type c,
end of stru.
Data: wa type stru,
itab type table of stru.
41. • Internal table with header line.
Ex
Types : begin of stru,
name(20) type c,
age(2) type c,
end of stru.
Data: itab type table of stru with header line.
Itab-name = ‘Donald’.
Itab-age = 25.
Append itab.
Loop at itab.
write : / itab-name , itab-age.
Endloop.
42. • Based on sorting technique internal tables can divided 3 types.
1. Standard internal table.
2. Sorted internal table.
3. Hashed internal table.
• By default any internal table is standard internal table.
1. Standard internal table.
• This is follows linear search(one by one) algorithm.
• Searching time is proportional to number of records.
• Syntax:
Data : <internal table > TYPE STANDARD TABLE OF <TB /STR
name> WITH NON-UNIQUE KEY <key > WITH HEADER LINE.
<optional>
43. • Sorted internal tables :
1. This is follows binary search help.
2. It supports unique as well as no-unique key.
3. Syntax :
Data : <internal table > TYPE SORTED TABLE OF <tab/str name>
WITH <UNIQUE / non-unique > KEY <keyname> WITH
HEADER LINE .
<optional >
44. • Hashed internal table.
1. There is no non-unique key.
2. Its follows index based search.
3. Syntax :
Data : <internal table > TYPE HASHED TABLE OF <TB/STR NAME>
WITH UNIQUE KEY <KEY> WITH HEADER LINE.
<OPTIONAL>