basic programming
TRANSCRIPT
Basic Programming
• WRITE :1. Use to print the output.2. Ex: a) write : ‘Donald’.b) Write : ‘Donald’ , ‘Sap abap’.c) Write : ‘Donald ‘ , / ‘Sap abap’.d) Write : ‘Donald ‘ , / ‘Sap abap’ color 2. (1-7)e) Write : 30 ‘Donald ‘ , / ‘Sap abap’.f) Write : 30 ‘Donald ‘ , / 30 ‘Sap abap’.g) Write : 30 ‘Donald ‘ , / , /30 ‘Sap abap’. or Write : 30 ‘Donald ‘ . skip. write : ‘Sap abap’.h) Skip 10.
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 Editor2. Selection Screen3. Output ScreenData:• 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.
Data DeclarationData 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.00000000000E+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
Control Break Statements:
1. Do --- endo.
2. While -- endwhile.
3. If.. Endif.
4. Case … endcase.
5. If…. Elseif … elseif … endif.
Do enddo• Ex: Data : count type I. Parameters : num type I. count = 1.
Do num times. write : / count. count = count + 1. enddo.
While .. Endwhile• Ex: DATA: COUNT TYPE I.
PARAMETERS : NUM TYPE I.
COUNT = 1.
WHILE COUNT <= NUM .WRITE : / COUNT .COUNT = COUNT + 1.ENDWHILE.
If … endif• Ex:
PARAMETERS : SAL TYPE I.
IF SAL > 25000.
WRITE : 'software engineer'.
ENDIF.
If… else … endif• Ex :PARAMETERS : SAL TYPE I.IF SAL > 25000.
WRITE : 'software engineer'.
else.
WRITE : 'Support Engineer'.
ENDIF.
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.
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 codeAll 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.
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.
• 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.
• 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.
• 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 .
• 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.
• 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.
• TRANSLATE : It works similar to replace all occurrences of
PARAMETERS : p_text(20) TYPE c.
TRANSLATE p_text USING 'AB'.
WRITE : p_text.
• 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.
• 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.
Structures• Structures are combination of different variables or types.
• Syntax : types : Begin of <structure name>, ------ ------ End of <structure name>.
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.
• 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.
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.
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.
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.
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.
• 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 .
• 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 .
• 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 .
• 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 .
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.
Internal TableEx: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.
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.
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.
For all entries inEx :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.
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.
• 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.
• 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.
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 lineEx: Types : begin of stru, name(20) type c, age(2) type c, end of stru.Data: wa type stru, itab type table of stru.
• Internal table with header line.ExTypes : 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.
• 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>
• 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 >
• 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>