basic programming

44
Basic Programming

Upload: jugul-crasta

Post on 13-Apr-2017

221 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Basic programming

Basic Programming

Page 2: 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.

Page 3: Basic programming

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.

Page 4: Basic programming

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

Page 5: Basic programming

Control Break Statements:

1. Do --- endo.

2. While -- endwhile.

3. If.. Endif.

4. Case … endcase.

5. If…. Elseif … elseif … endif.

Page 6: Basic programming

Do enddo• Ex: Data : count type I. Parameters : num type I. count = 1.

Do num times. write : / count. count = count + 1. enddo.

Page 7: Basic programming

While .. Endwhile• Ex: DATA: COUNT TYPE I.

PARAMETERS : NUM TYPE I.

COUNT = 1.

WHILE COUNT <= NUM .WRITE : / COUNT .COUNT = COUNT + 1.ENDWHILE.

Page 8: Basic programming

If … endif• Ex:

PARAMETERS : SAL TYPE I.

IF SAL > 25000.

WRITE : 'software engineer'.

ENDIF.

Page 9: Basic programming

If… else … endif• Ex :PARAMETERS : SAL TYPE I.IF SAL > 25000.

WRITE : 'software engineer'.

else.

WRITE : 'Support Engineer'.

ENDIF.

Page 10: Basic programming

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.

Page 11: Basic programming

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.

Page 12: Basic programming

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.

Page 13: Basic programming

• 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.

Page 14: Basic programming

• 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.

Page 15: Basic programming

• 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 .

Page 16: Basic programming

• 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.

Page 17: Basic programming

• 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.

Page 18: Basic programming

• TRANSLATE : It works similar to replace all occurrences of

PARAMETERS : p_text(20) TYPE c.

TRANSLATE p_text USING 'AB'.

WRITE : p_text.

Page 19: Basic programming

• 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.

Page 20: Basic programming

• 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.

Page 21: Basic programming

Structures• Structures are combination of different variables or types.

• Syntax : types : Begin of <structure name>, ------ ------ End of <structure name>.

Page 22: Basic programming

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.

Page 23: Basic programming

• 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.

Page 24: Basic programming

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.

Page 25: Basic programming

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.

Page 26: Basic programming

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.

Page 27: Basic programming

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.

Page 28: Basic programming

• 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 .

Page 29: Basic programming

• 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 .

Page 30: Basic programming

• 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 .

Page 31: Basic programming

• 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 .

Page 32: Basic programming

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.

Page 33: Basic programming

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.

Page 34: Basic programming

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.

Page 35: Basic programming

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.

Page 36: Basic programming

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.

Page 37: Basic programming

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.

Page 38: Basic programming

• 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.

Page 39: Basic programming

• 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.

Page 40: Basic programming

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.

Page 41: Basic programming

• 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.

Page 42: Basic programming

• 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>

Page 43: Basic programming

• 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 >

Page 44: Basic programming

• 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>