1 of 261

SAP ABAP TRAINING MODULE ���SAP ABAP TRAINING� ABAP : ADVANCED BUSSINESS APPLICATION PROGRAMMING ��Santanu Boral�Santanu.dec@gmail.com�

2 of 261

SYSTEMS, APPLICATIONS, PRODUCTS FOR DATA PROCESSING

  • 1.HISTORY
  • 1972 4 IBM EMPLOYEES WALLDORF , WEST GERMANY
  • R/2 TECHNOLOGY (REAL TIME 2 TIER TECHNOLOGY) : MAIN FRAMES

  • 1992 R/3 TECHNOLOGY (REAL TIME 3 TIER TECHNOLOGY) : CLIENT-SERVER

  • 2002 SAP 4.6 A, B, C

  • 2004 SAP 4.7 EE

  • 2005 SAP 5.0

  • 2006 SAP 6.0

  • 2013 SAP 7.0 (UN-RELEASED) FASTEST VERSION
  • MOBILE TECHNOLOGY, SYBASE (BACKEND SERVER)

  • IDES: INTERNATIONAL DEMO EDUCATIONAL SYSTEM : LEARNING VERSION OF SAP

  • PRODUCTION VERSION: BY MNC (SOFTWARE): INSURANCE, BANKING, RETAIL, MANUFACTURING, OIL AND NATURAL GAS, EDU.INSTITUTIONS, PHARMA
  • 8000+ FORTUNE COMPANIES

  • ERP : ENTERPRISE RESOURCE PLANNING (3RD LARGEST SOFTWARE COMPANY)

3 of 261

2.MODULES :

  • INTEGRATION {60 + MODULES } SAP
  • 20+ MODULES

  • 140 APPLICATIONS RUNNING IN SAP

  • SAP-TESTING, SAP-SECURITY, SAP-HCM, SAP-CRM , SAP-XI, SAP NETVIEWER (JAVA)

4 of 261

3.PEOPLE:

1.TECHNICAL : SYSTEM : BIW: DATABASE ADMIN

BC: BASIS :SYSTEM ADMIN

ABAP/CA: PROGRAMMING IN SAP

WORKFLOW: CONTROLLING OF JOBS

2.FUNCTIONAL: DOMAIN: SD,MM,HR,FI,CO, TR,,

3.TECHNO-FUNCTIONAL : ABAP-CRM, ABAP-HR, ABAP-WORKFLOW, ABAP-WEBDYNPRO

5 of 261

ABAP: features

IT IS THE ONLY LANGUAGE USED IN THE SAP

IT IS A SEQUENTIAL LANGUAGE LIKE C, C++

IT IS A EVENT-DRIVEN LANGUAGE (EVENTS: FIRED IN A PARTICULAR POSITION/PLACE)

IT IS NOT CASE-SENSITIVE LANGUAGE

IT USES TOP-DOWN APPROACH

6 of 261

R/3 ARCHITECTURE�

  • PRESENTATION SERVER LAYER : SAP GUI : SCREENS
  • /
  • APPLICATION SERVER LAYER : SAP KERNAL (PROCESSING OF JOBS)
  • /
  • DATABASE SERVER LAYER : SAP DATABASE : TABLES (RELATED)

  • PRES.SERVER LAYER---APPL.SERVER LAYER----MESSAGE SERVER----DATABASE SERVER
  • AUTHORIZATION

  • HIGH END SECURITY IS PROVIDED

  • IDES VERSION: DOES NOT IMPLEMENT ANY SECURITY

7 of 261

ABAP BASICS� LANGUAGE CONSTRUCTIONS

  • 1.COMMANDS:

  • / START FROM A NEW LINE ANY TEXT
  • /50 START FROM 50 THE COL.NO
  • SKIP OMIT A LINE EX: SKIP 4.
  • ULINE DRAW A LINE FROM ONE END TO OTHER
  • WRITE OUTPUT STATMENT : EX : WRITE / 'RAVI'.
  • COLOR(1-7) TO HIGH LIGHT THE TEXT WITH A BACKGROUND COLOR EX: WRITE / 'RAJ' COLOR 4.

8 of 261

2.COMMENTS:

* AT THE BEGINNING OF LINE BECOMES LINE COMMENT

" PART OF LINE COMMENT EX: WRITE / 'HARI'. "HARI IS GOOD

KEY BOARD SHORTCUTS

CNTRL + A : TO SELECT ALL THE LINES

CNTRL + < : TO COMMENT ALL THE LINES

CNTRL + > : TO UN-COMMENT ALL THE LINES

CNTRL + X : CUT

CNTRL + V : PASTE

CNTRL + C : COPY

9 of 261

LEARNING VERSION��SAP IDES ECC 6.0��ENTERPRISE CENTRAL COMPONENT�

3.NAMING CONVENTION FOR ABAP PROGRAMS

  • PROGRAM Z______________________
  • Y______________________

  • A-X : SAP SYSTEM PROGRAMS
  • T : TESTING PROGRAMS
  • Z,Y : USER-DEFINED PROGRAMS

4.TRANSACTION CODES (T-CODES)

  • RE USED FOR NAVIGATION PURPOSE. IT IS USED TO NAVIGATE TO A PARTICULAR APPLICATION IN SAP

  • SE38: ABAP EDITOR : ABAP PROGRAMS
  • SE11: DATA DICTIONARY: TABLES, VIEWS , STRUCTURES
  • SE37: FUNCTION BUILDER: FUNCTION MODULES

  • 1 LAC T-CODES IN SAP 6.0 VERSION
  • 12,094 T-CODES IN SAP 4.6 E

10 of 261

server does 5 work processes�

  • dia : dialog: to display the screens
  • upd : update : save mechanism
  • spl : spool: printing jobs
  • btc: background jobs
  • enq : enqueue: locking mechnism

  • intial state: run no
  • final state : wait yes
  • down: down no (re-start the server)

11 of 261

LOG IN…

  • client:

  • client : 800 (default) it is a 3 digit no.. it is a independent sap environment

  • username: sapuser (basis)
  • password: welcome

  • lg: en (default language is de)

  • continue

  • prompt: commands

  • /n to close the current transaction
  • /o to create a new session
  • /i to terminate the session
  • /nex to close all the sessions without prompt
  • /nse38 close the current transaction and take to abap editor

12 of 261

Create: my first program in abap

title: my first program in abap

type: executable program

press save the program as local objects (non-transportable : client dependent)

REPORT Zsantanu1.

*my first program

WRITE / 'MY FIRST STATEMENT IN ABAP'.

SKIP 3.

ULINE.

WRITE /50 'SECOND STATEMENT IN ABAP'.

ULINE.

WRITE / 'THIRD STATEMENT IN ABAP' COLOR 4.

ULINE.

SAVE : SAVE THE PROGRAM IN SAP REPOSITORY

CHECK: CHECK FOR SYNTAX ERRORS

ACTIVATE: TO MAKE THE PROGRAM READY FOR EXECUTION IN THE MEMORY

DIRECT PROCESSING: TO EXECUTE THE RESULT OF THE PROGRAM

13 of 261

14 of 261

15 of 261

Output:

16 of 261

DATA TYPES

1.ELEMENTARY DATA TYPES 1.PRE-DEFINED DATA TYPES : N,C,I,P,F,X,D,T,STRING

2.USER-DEFINED DATA TYPES : TYPES (KEYWORD)

2.STRUCTURED DATA TYPES 1.PRE-DEFINED DATA TYPES: TABLES (KEYWORD)

2.USER-DEFINED DATA TYPE: INTERNAL TABLES

DATA OBJECTS : VARIABLES: THEY CHANGE THEIR VALUE DURING RUNTIME/EXECUTION TIME.

EX: A A IS ONE CHARACTER BY DEFAULT.

DATA TYPE: WHAT TYPE OF DATA, DATA OBJECT IS GOING TO STORE IN IT IS KNOWN AS DATA TYPE

A I (INTEGER IS DATA TYPE)

DATA: KEYWORD TO DEFINE DATA OBJECTS

SYNTAX:

DATA <DATA OBJECT NAME> TYPE <PRE-DEFINED DATA TYPE>.

DATA: <DATA OBJECT NAME> LIKE <EXISTING DATA OBJECT>.

EX: DATA: A TYPE I.

DATA: B LIKE A.

EX: DATA: CNO LIKE KNA1-KUNNR.

KNA1: CUSTOMER TABLE, KUNNR : CUSTOMER NUMBER

CONSTANTS: HAS FIXED VALUE

EX: CONSTANTS : A = 20.

17 of 261

ELEMENTARY DATA TYPES 1.PRE-DEFINED DATA TYPES : N,C,I,P,F,X,D,T,STRING�

n: numeric : (0-9) digits. it is not used for calculations. it is used to represent sequence of numbers such as

empno, vendno, matno etc.,

ex: '1000', 1000.

c: character (a-z, alphanumeric a333) default data type is allways a character

'ravi'.

i: integer (-3,-2,-1,0,1,2,3,,,) no-decimals. it is used for calculations.

p: packed decimals : keyword : decimals . max decimals : 14

data: numb type p decimals 2.

f: float : exponential result is displayed with the float. '0.0000000000000000+e01'

it is not used to give input to any program

x: hexa decimals: binary nos, system nos

d: date : yyyy mm dd ( 8chars)

t: time: hh mm ss

string : ' '

18 of 261

Prog on data types:�

Prog: 1

  • 1.
  • *n,c data types
  • data : numb(4) type n,
  • name(30) type c.

  • numb = '1000'.
  • name = 'ravi krishna'.

  • write:/ numb, name.

  • result: 1000 ravi krishna

Prog: 2/move

  • *n,c data types
  • data : numb(4) type n,
  • name(30) type c.

  • move '1000' to numb.
  • move 'ravi krishna' to name.

  • write:/ numb, name.

  • result: 1000 ravi krishna

19 of 261

20 of 261

21 of 261

22 of 261

23 of 261

  • *prg for i data type

  • data: a type i,
  • b type i,
  • c type i.

  • a = 60.
  • b = 70.
  • c = a + b.
  • write:/ c.
  • parameters : is a keyword to give input values at the runtime

  • *prg using i data type
  • parameters: a type i,
  • b type i.
  • data: c type i.

  • c = a + b.
  • write:/ c.

24 of 261

�prg for i data type

25 of 261

*prg using packed decimals

  • data: num type p decimals 2 value '4.11',
  • den type p decimals 2 value '1.11',
  • res type p decimals 14
  • .

  • res = num / den.
  • write:/ res. "it gives exact division

  • res = num div den.
  • write:/ res. "it gives quantant

  • res = num mod den.
  • write:/ res. "it gives reminder

26 of 261

3.STRUCTURE DATA OBJECTS

  • OBJECTS IN RELATIONSHIP ARE KNOWN AS STRUCTURE DATA OBJECTS

  • CUST {CNO,CNAME,CITY,PIN}

  • SYNTAX:

  • DATA: BEGIN OF <STRUCTURE DATA OBJECT NAME>,
  • <FIELDS>,
  • END OF <STRUCTURE DATA OBJECT NAME>.

  • *PRG USING STRUCTURE DATA OBJECTS

  • data: begin of str1,
  • no(4) type n,
  • name(30) type c,
  • city(30) type c,
  • end of str1.

  • data: cust like str1.

  • data: vend like cust.

  • str1-no = '1000'.
  • str1-name = 'raj'.
  • str1-city = 'hyd'.
  • write:/5 str1-no, 10 str1-name, 20 str1-city.
  • uline.

  • cust-no = '2000'.
  • cust-name = 'ravi'.
  • cust-city = 'chennai'.
  • write:/5 cust-no, 10 cust-name, 20 cust-city.
  • uline.

  • vend-no = '3000'.
  • vend-name = 'hari'.
  • vend-city = 'delhi'.
  • write:/5 vend-no, 10 vend-name, 20 vend-city.
  • uline.

27 of 261

28 of 261

29 of 261

type-pools : contains structure data objects that are used in several programs.�

  • str1 str1 str1 : type-pools
  • prg1 prg2 prg3

  • step1: we define the structure data object in type-pools
  • go to t-code se11: data dictionary

  • select option type-group: zsan create
  • short text: my type-pools
  • save as local object
  • �types: begin of zsan_str1,�         no(4) type n,�         name(30) type c,�         city(30) type c,�       end of zsan_str1.��types: begin of zsan_cust,�        cno(4) type n,�        cname(30) type c,�       end of zsan_cust.��types: begin of zsan_vend,�         vno(4) type n,�         vname(30) type c,�       end of zsan_vend
  • Save>check>activate

30 of 261

Se11>type group>zsan>create

31 of 261

short text: my type-pools�save as local object�

32 of 261

33 of 261

step2: calling is done in any executable program in abap editor��go to se38: abap editor/program: zshancalltyp create��title: calling program for type pool

  • type: executable program save as local object

  • REPORT ZSHANCALLTYP.
  • type-pools: zshan.

  • data: emp type zshan_str1.

  • data: cust type zshan_cust.

  • data: vend type zshan_vend.

  • emp-no = '1000'.
  • emp-name = 'raj'.
  • emp-city = 'hyd'.
  • write:/5 emp-no, 10 emp-name, 20 emp-city.
  • uline.

  • cust-cno = '2000'.
  • cust-cname = 'ravi'.
  • write:/5 cust-cno, 10 cust-cname.
  • uline.

  • vend-vno = '3000'.
  • vend-vname = 'hari'.
  • write:/5 vend-vno, 10 vend-vname.
  • uline.

  • save-check-activate-test

34 of 261

35 of 261

36 of 261

37 of 261

38 of 261

standard type-pool: SLIS (it is used in ALV REPORTING) SAP LIST VIEWER/ ABAP LIST VIEWER��types: is a reserved word to define user-defined objects.�DATA TYPES: ELEMENTARY DATA TYPES 1.PRE-DEFINED� 2.USER-DEFINED : TYPES (KEYWORD)���

WRONG USAGE OF TYPES KEYWORD

  • TYPES: NUM TYPE NUMB,
  • NAM TYPE NAME.

  • DATA: NUMB(4) TYPE N,
  • NAME(30) TYPE C.

  • NUMB = 1000.
  • NAME = 'RAVI'.
  • WRITE:/ NUMB, NAME.

NUMB, NAME ARE RESERVED WORDS IN SAP

  • *WRONG USAGE OF TYPES

  • TYPES: CNO TYPE A,
  • CNAME TYPE B,
  • PIN TYPE C.

  • DATA: A(4) TYPE N, "CNO
  • B(30) TYPE C, "CNAME
  • C(6) TYPE N. "PIN.

  • A = '3000'.
  • B = 'HARI'.
  • C = '500035'.
  • WRITE:/ A, B, C.

39 of 261

LOOPS:�

  • 1.BRANCHING LOOPS 1.if...else...endif.
  • 2.if...elseif...elseif...else...endif
  • 3.case...endcase.

  • 2.LOOPING LOOPS 1.do...enddo
  • 2.while.endwhile

  • 3.LOOP AT ITAB....ENDLOOP (ONLY FOR INTERNAL TABLES)

  • loops means next step, next iteration or repitition of same step is a loop.

  • BRANCHING LOOPS

  • 1.IF...ELSE...ENDIF

  • SYNTAX: IF <CONDITION>.
  • <STMT BLOCK>.
  • ELSE.
  • <STMT BLOCK>.
  • ENDIF.

  • *prg for if...else..endif

  • parameters: numb type i.

  • if numb > 0.
  • write:/ '+ve number entered'.
  • else.
  • write:/ '-ve number entered'.
  • endif

40 of 261

Se38>zsantanu1>create

41 of 261

Check results..

42 of 261

2.IF...ELSEIF...ELSEIF...ELSEIF...ELSE...ENDIF

  • SYNTAX: IF <CONDITION>.
  • <STMT BLOCK>.
  • ELSEIF <CONDITION>.
  • <STMT BLOCK>.
  • ELSEIF <CONDITION>.
  • <STMT BLOCK>.
  • ...
  • ELSE.
  • <STMT BLOCK>.
  • ENDIF.

  • *PRG FOR IF...ELSEIF...ELSEIF...ELSE...ENDIF.

  • PARAMETERS : SUB1 TYPE I,
  • SUB2 TYPE I,
  • SUB3 TYPE I.

  • DATA: TOT TYPE I.

  • COMPUTE TOT = ( SUB1 + SUB2 + SUB3 ) / 3.

  • IF TOT <= 40.
  • WRITE:/ 'FAIL'.
  • ELSEIF TOT > 40 AND TOT <= 50.
  • WRITE:/ 'THIRD'.
  • ELSEIF TOT > 50 AND TOT <= 60.
  • WRITE:/ 'SECOND'.
  • ELSEIF TOT > 60 AND TOT <= 70.
  • WRITE:/ 'FIRST'.
  • ELSE.
  • WRITE:/ 'DISTINCTION'.
  • ENDIF.

43 of 261

Se38>zsantanu1>change>�Write prog>save>check>act.

44 of 261

Next..

45 of 261

Case..endcase..

  • COMPUTE USES BODMAS PRINCIPLE IN MATHS. IT IS USED FOR FORMUALE CALCULATION.

  • AND, OR

  • <= LE
  • >= GE
  • <> NE
  • = EQ
  • CASE...ENDCASE

  • CASE <F>.
  • WHEN <F1>.
  • <1ST STMT BLOCK>.
  • WHEN <F2>.
  • <2ND STMT BLOCK>.
  • WHEN <F3>.
  • <3RD STMT BLOCK>.
  • ...
  • WHEN OTHERS.
  • <STMT BLOCK>.
  • ENDCASE.

  • IF F = F1, IT WILL EXECUTE 1ST STMT BLOCK
  • IF F = F2, IT WILL EXECUTE 2ND STMT BLOCK
  • IF F = F3, IT WILL EXECUTE 3RD STMT BLOCK
  • IF F <> F1, OR F2 OR F3, IT WILL EXECUTE WHEN OTHERS STMT BLOCK.

  • CASE IS CASE-SENSITIVE.

46 of 261

Case..endcase..

  • *PRG FOR CASE...ENDCASE

  • PARAMETERS: WEEK TYPE I.

  • CASE WEEK.
  • WHEN 1.
  • WRITE:/ 'SUN'.
  • WHEN 2.
  • WRITE:/ 'MON'.
  • WHEN 3.
  • WRITE:/ 'TUE'.
  • WHEN 4.
  • WRITE:/ 'WED'.
  • WHEN 5.
  • WRITE:/ 'THU'.
  • WHEN 6.
  • WRITE:/ 'FRI'.
  • WHEN 7.
  • WRITE:/ 'SAT'.
  • WHEN OTHERS.
  • WRITE:/ 'NO WEEK DAY EXISTS'.
  • ENDCASE.

  • *PRG FOR CASE..ENDCASE...(CASE SENSITIVE)

  • PARAMETERS: GIFT(30) TYPE C.

  • CASE(GIFT).
  • WHEN 'BIKE'.
  • WRITE:/ 'YOUR CHOICE IS SPLENDOR'.
  • WHEN 'GOLD'.
  • WRITE:/ 'YOUR CHOICE IS MALABAR GOLD'.
  • WHEN OTHERS.
  • WRITE:/ 'YOUR CHOICE IS', GIFT.
  • ENDCASE.

  • NOTE: BIKE AND GOLD SHOULD BE GIVEN IN CAPITALS ONLY

  • ====================================

47 of 261

48 of 261

  • LOOPING LOOPS

  • DO...ENDDO.

  • SYNTAX: DO <VALUE> TIMES.
  • <STMT BLOCK>.
  • ENDDO.

  • *PRG
  • DO 5 TIMES.
  • WRITE:/ 'SANTANU'.
  • ENDDO.

  • SYSTEM VARIABLE (172 VARIABLE ARE AVAILABLE) THEY ARE USED IN ANY PROGRAM WITHOUT DECLARATION.
  • SY-INDEX : IT POINTS TO NO OF ITERATION OF DO...LOOP.

  • *PRG
  • DO 5 TIMES.
  • WRITE:/ SY-INDEX.
  • ENDDO.

  • RESULT:
  • 1
  • 2
  • 3
  • 4
  • 5

49 of 261

50 of 261

FAQ: �DO.�WRITE:/ 'RAJU'.�ENDDO.�SAVE/CHECK/ACTIVATE�/RESULT???: IT GOES TO INFINITE LOOP. IT IS KNOWN AS RUN-TIME ERROR.�

  • *PRG
  • DO 5 TIMES.
  • IF SY-INDEX = 1.
  • WRITE:/ 'HARI'.
  • ELSEIF SY-INDEX = 2.
  • WRITE:/ 'LATA'.
  • ELSEIF SY-INDEX = 3.
  • WRITE:/ 'RAJU'.
  • ELSE.
  • WRITE:/ 'NO-NAME'.
  • ENDIF.
  • ENDDO.

  • RESULT:
  • HARI
  • LATA
  • RAJU
  • NO-NAME
  • NO-NAME

51 of 261

STOP/EXIT/CONTINUE. STATEMENTS CAN BE USED FOR TERMINATING THE PROGRAM�

  • DO.
  • WRITE:/ 'RAJ'.
  • STOP.
  • ENDDO.
  • WRITE:/ 'HARI'.

  • RESULT: RAJ.

  • DO.
  • WRITE:/ 'RAJ'.
  • EXIT.
  • ENDDO.
  • WRITE:/ 'HARI'.

  • RESULT: RAJ
  • HARI

52 of 261

WHILE...ENDWHILE�

  • SYNTAX: WHILE <CONDITION>.
  • <STMT BLOCK>.
  • CNT = CNT + 1.
  • ENDWHILE.

  • *PRG USING WHILE...ENDWHILE.

  • DATA: NUMB TYPE I VALUE 1.

  • WHILE NUMB <= 11.
  • WRITE:/ NUMB.
  • NUMB = NUMB + 1.
  • ENDWHILE.

53 of 261

STRINGS

  • OPERATIONS:

  • 1.SHIFT
  • 2.STRLEN
  • 3.SEARCH
  • 4.SPLIT
  • 5.CONCATENATE
  • 6.MOVE
  • 7.REPLACE
  • 8.TRANSLATE
  • 9.OVERLAY
  • 10.CONDENSE
  • ----------> left
  • abcdefghij
  • <---------- right

  • *shift : to a new position/ places

  • *prg using shift to a new position
  • DATA: STR4(10) TYPE C VALUE 'abcdefghij',
  • str5 like str4,
  • str6(2) type c value 'ef'.

  • str5 = str4.
  • shift str5 up to str6.
  • write:/ str5. "efghij

  • str5 = str4.
  • shift str5 up to str6 left. "efghi9j
  • write:/ str5.

  • str5 = str4.
  • shift str5 up to str6 right. "abcdef
  • write:/ str5.

  • str5 = str4.
  • shift str5 up to str6 circular. "efghijabcd
  • write:/ str5.

54 of 261

55 of 261

shift to number of places

56 of 261

String lenth and condense.

  • *PRG FOR STRLEN

  • DATA: WORD1(10) TYPE C VALUE '12345',
  • WORD2(10) TYPE C,
  • WORD3(10) TYPE C VALUE ' 4 ',
  • LEN TYPE I.

  • LEN = STRLEN( WORD1 ).
  • WRITE:/ LEN. "5

  • LEN = STRLEN( WORD2 ).
  • WRITE:/ LEN. "0

  • LEN = STRLEN( WORD3 ).
  • WRITE:/ LEN. "4

  • CONDENSE: IT REMOVES UNWANTED SPACES IN THE STRING , IT GIVES EQUAL SPACING

  • EX: RAMA IS A GOOD BOY
  • CONDENSE : RAMA IS A GOOD BOY

  • *PRG FOR THE CONDENSE
  • DATA: STR7(60) TYPE C VALUE 'ONE TWO THREE FOUR',
  • STR8 LIKE STR7,
  • LEN TYPE I.

  • STR8 = STR7.
  • WRITE:/ STR8.
  • LEN = STRLEN( STR8 ).
  • WRITE:/ LEN. "23

  • CONDENSE STR8.
  • WRITE:/ STR8. "ONE TWO THREE FOUR
  • LEN = STRLEN( STR8 ).
  • WRITE:/ LEN. "18
  • STR8 = STR7.
  • CONDENSE STR8 NO-GAPS.
  • WRITE:/ STR8. "ONETWOTHREEFOUR
  • LEN = STRLEN( STR8 ).
  • WRITE:/ LEN. "15

57 of 261

  • 4.SPLIT: TO BREAK THE STRING INTO PARTS

  • *PRG USING SPLIT
  • DATA: STR3(60) TYPE C VALUE 'PART1 PART2 PART3 PART4',
  • p1(10) type c,
  • p2(10) type c,
  • p3(10) type c,
  • p4(10) type c,
  • del(1) type c value ''.

  • SPLIT STR3 AT DEL INTO P1 P2 P3 P4.
  • WRITE:/ P1. "PART1
  • WRITE:/ P2. "PART1
  • WRITE:/ P3. "PART3
  • WRITE:/ P4. "PART4

  • 5.CONCATENATE : COMBINE THE STRINGS INTO ONE STRING

  • *PRG FOR CONCATENATE

  • DATA: STR4(2) TYPE C VALUE 'TO',
  • STR5(3) TYPE C VALUE 'DAY',
  • STR6(2) TYPE C VALUE 'IS',
  • STR7(1) TYPE C VALUE 'A',
  • SEP(1) TYPE C VALUE '-',
  • STR8(30) TYPE C.

  • CONCATENATE STR4 STR5 STSR6 STR7 INTO STR8.
  • WRITE:/ STR8. "TODAYISA

  • CONCATENATE STR4 STR5 STR6 STR7 INTO STR8 SEPARATED BY SEP.
  • WRITE:/ STR8

58 of 261

  • 6. MOVE: MOVE THE STRING EITHER RIGHT SIDE OR LEFT SIDE

  • *prg for move

  • data: mc1(10) type c value 'ABCDEFGHIJ',
  • MC2(10) TYPE C.

  • MOVE MC1 TO MC2 PERCENTAGE 30 LEFT.
  • WRITE:/ MC2.

  • MOVE MC1 TO MC2 PERCENTAGE 60 RIGHT.
  • WRITE:/ MC2.

59 of 261

STRINGS PART 2

  • replace : replace one string with other string

  • *prg for replace

  • data: str2(4) type c value 'cdef',
  • str3(4) type c value 'klmn',
  • str4(6) type c value 'klmnop',
  • str5(2) type c value 'kl',
  • str6(10) type c value 'abcdefghij',
  • str7 like str6,
  • len type i value 2.

  • str7 = str6.
  • REPLACE str2 with str3 into str7.
  • write:/ str7. "abklmnghij

  • str7 = str6.
  • REPLACE STR2 WITH STR4 INTO STR7.
  • WRITE:/ STR7. "abklmnopgh

  • STR7 = STR6.
  • REPLACE STR2 WITH STR5 INTO STR7.
  • WRITE:/ STR7. "abklghij

  • STR7 = STR6.
  • REPLACE STR2 WITH STR3 INTO STR7 LENGTH LEN.
  • WRITE:/ STR7. "abklmnefghij

60 of 261

  • translate : translate from upper to lower case and vise versa

  • DATA: STR5(10) TYPE C VALUE 'aBcDeFgHiJ',
  • str6 like str5,
  • rule5(10) type c value 'apBhcaDnei'.

  • str6 = str5.
  • translate str6 to upper case.
  • write:/ str6. "ABCDEFGHIJ

  • str6 = str5.
  • translate str6 to lower case.
  • write:/ str6. "abcdefghij

  • str6 = str5.
  • translate str6 using rule5.
  • write:/ str6. "phaniFgHiJ

61 of 261

  • *faq: difference between replace and translate

  • *prg for translate and replace

  • DATA: STR8(60) TYPE C VALUE 'dear brothers & sisters & uncles & aunties',
  • str9 like str8.

  • str9 = str8.
  • replace '&' with '#' into str9.
  • write:/ str9.

  • str9 = str8.
  • translate str9 using '&#'.
  • write:/ str9.

  • *replace : dear brothers # sisters & uncles & aunties
  • *it will replace only the first occurence
  • *
  • *translate : dear brothers # sisters # uncles # aunties
  • *it will replace all the occurences
  • overlay : overlay one string with the other string, behind the string is visible in blank spaces

  • a c e g i
  • ABCDEFGHIJ

  • aBcDeFgHiJ overlay

  • *overlay

  • data: str7(10) type c value 'a c e g i ',
  • str8 like str7,
  • str9(10) type c value 'ABCDEFGHIJ',
  • str10(2) type c value 'ai'.

  • str8 = str7.
  • overlay str8 with str9.
  • write:/ str8. "aBcDeFgHiJ

  • str8 = str7.
  • overlay str8 with str9 only str10.
  • write:/ str8. "A c e g I

62 of 261

Overlay…

63 of 261

Search..

  • search: to locate or find the string

  • sy-subrc = 0 true/ yes successful
  • sy-subrc = 4 false/ no un-successful

  • sy-fdpos = 13 at 13th position it has located the string
  • sy-fdpos = 0 search is failure

  • *prg using search

  • data: str9(50) type c value 'this is a little sentence'.

  • write:/ 'searched', 'sy-subrc', 'sy-fdpos'.
  • uline.
  • search str9 for 'x'.
  • write:/ 'x', sy-subrc under 'sy-subrc',
  • sy-fdpos under 'sy-fdpos'. "x 4 0

  • search str9 for 'itt'.
  • write:/ 'itt', sy-subrc under 'sy-subrc',
  • sy-fdpos under 'sy-fdpos'. "itt 0 11

  • search str9 for 'li*'.
  • write:/ 'li*', sy-subrc under 'sy-subrc',
  • sy-fdpos under 'sy-fdpos'. "li* 0 10

  • search str9 for '*is'.
  • write:/ '*is', sy-subrc under 'sy-subrc',
  • sy-fdpos under 'sy-fdpos'. "*is 0 0 (*cosmatic error : unknown)

64 of 261

Search..output..

65 of 261

�MODULARIZATION TECHNIQUES

  • ADVANTAGES:

  • IT CAN BE CALLED FROM ANY PROGRAMS
  • IT CAN BE CALLED MULTIPLE TIMES IN THE SAME PROGRAM
  • DEBUGGING IS POSSIBLE(DEBUGGING IS TOOL TO KNOW HOW SYSTEM EXECUTES THE PROGRAM)
  • IT IS SIMIPLIFY THE CODE
  • IT WILL REDUCE THE COMPLEXITY OF CODE
  • ERROR HANDLING IS POSSIBLE

1.INCLUDE

2.SUBROUTINES

3.FUNCTION MODULES

4.MACROS

66 of 261

1.MACROS�

  • *macro example 1.
  • DEFINE SAMPLE.
  • WRITE:/ 'RAVI'.
  • END-OF-DEFINITION.

  • SAMPLE.
  • SAMPLE.
  • SAMPLE.
  • ---------------------------------------------------------
  • *MACRO ex 2:

  • DEFINE EXAMPLE.
  • WRITE:/ 'RAJ'.
  • END-OF-DEFINITION.

  • DO 5 TIMES.
  • EXAMPLE.
  • ENDDO.

macros is abrreviation of code.

advantage: it can be called multiple times in the same program.

it cannot be called from other programs

no debugging (tool that tells how system executes the program result)

no nesting of loops is possible

no error handling is possible

syntax:

1.DEFINE MACRO:

DEFINE <MACRO NAME>.

<STMT BLOCK>.

END-OF-DEFINITION.

2.CALL A MACRO:

<MACRO NAME>.

NOTE: MACROS ARE ABSOLATE IN LATEST VERSION SAP 6.0

67 of 261

  • *MACRO

  • PARAMETERS: A TYPE I,
  • B TYPE I.

  • DATA: C TYPE I.

  • DEFINE ADDT.
  • C = A + B.
  • WRITE:/ C.
  • END-OF-DEFINITION.

  • ADDT.

  • *MACRO

  • PARAMETERS: A TYPE I,
  • B TYPE I.

  • DATA: C TYPE I.

  • DEFINE CALC.
  • C = &1 &2 &3.
  • WRITE:/ C.
  • END-OF-DEFINITION.

  • CALC A + B.
  • CALC A - B.
  • CALC A / B.
  • CALC A * B.

  • ULINE.
  • CALC : A + B, A - B, A / B, A * B.
  • ULINE.
  • CALC A: + B, - B , / B, * B.
  • ULINE.

68 of 261

69 of 261

2.SUBROUTINES�

  • TWO TYPES OF SUBROUTINES

  • 1.INTERNAL SUBROUTINE: WE DEFINE THE SUBROUTINE AND CALL THE SUBROUTINE IN THE SAME
  • EXECUTABLE PROGRAM IT IS KNOWN INTERNAL SUBROUTINE.

  • 2.EXTERNAL SUBROUTINES: WE DEFINE THE SUBROUTINE IN SUBROUTINE POOL.CALLING SUBROUTINE
  • IS DONE IN ANY EXECUTABLE PROGRAM. IT AVAILABLE TO OTHER PROGRAMS.

SEQUENCE OF STEPS THAT MAY OR MAY NOT GIVE ANY RESULT IS A SUBROUTINE.

ADVANTAGES:

IT CAN BE CALLED FROM OTHER PROGRAMS.

IT CAN BE CALLED MULTIPLE TIMES IN THE SAME PROGRAM.

NO NESTING OF LOOPS IS POSSIBLE

NO ERROR HANDLING IS POSSIBLE

NO DEBUGGING IS POSSIBLE.

DEFINE A SUBROUTINE

FORM <SUBROUTINE NAME> [FORMAL PARAMETERS].

<STMT BLOCK>.

ENDFORM.

CALL A SUBROUTINE

PERFORM <SUBROUTINE NAME> [PARAMETERS].

70 of 261

  • FORMAL PARAMETERS:
  • PARAMETERS WHICH ARE DEFINED BY FORM STATEMENT ARE KNOWN AS FORMAL PARAMETERS

  • ACTUAL PARAMETERS:

  • THE PARAMETERS THAT ARE DEFINED BY PERFORM STATEMENT ARE KNOWN AS ACTUAL PARAMETES.

  • NOTE: FORMAL PARAMETERS OCCUPY A DIFFERENT MEMORY LOCATION AND ACTUAL PARAMETERS
  • OCCUPY A DIFFERENT MEMORY LOCATION.

  • note: subroutines are defined at the end of the program

  • *PRG FOR INTERNAL SUBROUTINE

  • parameters: a type i,
  • b type i.

  • data: c type i.

  • perform addt using a b c.

  • form addt using a b c.
  • c = a + b.
  • write:/ c.
  • endform.

71 of 261

Internal subroutine

*PRG FOR INTERNAL SUBROUTINE

  • parameters: a type i,
  • b type i.

  • data: c type i.

  • perform addt using a b c.

  • form addt using x y z.
  • z = x + y.
  • write:/ z.
  • endform.

Se38>zsantanu1>change

72 of 261

73 of 261

3 differences between actual parameters and formal parameters�

  • 1.by value

  • *prg for by value (internal subroutine)
  • DATA: A TYPE I VALUE '20'.

  • WRITE:/ 'BEFORE CALLING SUBROUTINE VALUE OF A IS', A.

  • PERFORM SUBA USING A.

  • WRITE:/ 'AFTER CALLING SUBROUTINE VALUE OF A IS', A.

  • FORM SUBA USING VALUE(P_A).
  • P_A = 15.
  • WRITE:/ 'IN THE SUBROUTINE VALUE OF A IS', A.
  • ENDFORM.
  • =============================================
  • RESULT:
  • BCSUB INSUBR AFTSUBR
  • 20 20 20

  • BY VALUE: THE VALUE REMAINS UNCHANGED FOR ALL THE SUBROUTINES

74 of 261

  • 2.by reference

  • *prg for by REFERENCE (internal subroutine)
  • DATA: A TYPE I VALUE '20'.

  • WRITE:/ 'BEFORE CALLING SUBROUTINE VALUE OF A IS', A.

  • PERFORM SUBA USING A.

  • WRITE:/ 'AFTER CALLING SUBROUTINE VALUE OF A IS', A.

  • FORM SUBA USING P_A.
  • P_A = 15.
  • WRITE:/ 'IN THE SUBROUTINE VALUE OF A IS', A.
  • ENDFORM.
  • ================================
  • RESULT:
  • BCSUB INSUBR AFTSUBR
  • 20 15 15

  • BY REFERENCE: THE REFERENCE VALUE IS GIVEN PREFERENCE FOR ALL THE SUBROUTINES

75 of 261

3.by value and return�

**prg for by VAUE AND RETURN (internal subroutine)

DATA: A TYPE I VALUE '20'.

WRITE:/ 'BEFORE CALLING SUBROUTINE VALUE OF A IS', A.

PERFORM SUBA CHANGING A.

WRITE:/ 'AFTER CALLING SUBROUTINE VALUE OF A IS', A.

FORM SUBA CHANGING VALUE(P_A).

P_A = 15.

WRITE:/ 'IN THE SUBROUTINE VALUE OF A IS', A.

ENDFORM.

RESULT:

BCSUB INSUBR AFTSUBR

20 20 15

76 of 261

external subroutine

step1: create subroutine in subroutine pool to define the subroutine

go to se38: abap editor

program: zshanextsubr create

title: external subroutine

type: subroutine pool

save as local object

77 of 261

Save-check-activate the following..

78 of 261

step 2: calling program (executable program) for the external subroutine�

go to se38: abap editor

program: zshancallextsubr create

title: calling program for external subroutine

type: executable program

save as local object

REPORT ZSHANCALLEXTSUBR.

*calling program for external subroutine

PARAMETERS: A TYPE I.

DATA : B TYPE I.

PERFORM SAMPLE(ZSHANEXTSUBR).

PERFORM SQRS(ZSHANEXTSUBR) USING A B.

SAVE-CHECK-ACTIVATE-TEST

79 of 261

3.FUNCTION MODULES

  • Creation of package
  • package is a transportable object.

  • it contains programs, function group, screens, tables, views, structures, sub-packages etc.,,

  • go to t-code se80: object navigator

  • package : zsantanu 1<enter>
  • create object....yes

  • short desc: my package created by santanu b

  • appl component : -

  • software component : home / local

  • transport layer: -

  • package type: not a main package (default)

  • create

  • it will generate a workbench request automatically

  • it will create a package
  • now to transfer local objects to the package

FUNCTION MODULE RETURNS SOME RESULT ALLWAYS.

ADVANTAGES:

IT IS A GLOBAL OBJECT.

IT IS CLIENT DEPENDENT BY DEFAULT .

IT CAN BE CALLED FROM ANY PROGRAM.

IT CAN BE CALLED MULTIPLE TIMES IN THE SAME PROGRAM.

ERROR HANDLING IS POSSIBLE.

DEBUGGING IS ALSO POSSIBLE.

NESTING OF LOOPS IS POSSIBLE.

BUSSINESS LOGIC IS WRITTEN IN FUNCTION MODULE ITSELF.

12,000 PRE-DEFINED FUNCTION MODULES ARE AVAILABLE TO THE USERS IN THE PROGRAMS.

80 of 261

Se80>select package..zsantanu1>press enter..

81 of 261

�CREATION OF FUNCTION MODULE

  • go to t-code se80: object navigator

  • select function group:

  • zsantanu1fgp <enter.

  • create object...yes

  • short text my function group

  • save as zsantanu1package

FUNCTION GROUP: ALL THE RELATED FUNCTION MODULES ARE PLACED IN ONE FUNCTION GROUP.

FUNCTION GROUP SAVE AS PACKAGE WILL BECOME TRANSPORTABLE

FUNCTION GROUP SAVE AS LOCAL OBJECT IT WILL BECOME NON-TRANSPORTABLE.

FUNCTION MODULE IS ALLWAYS ATTACHED TO A FUNCTION GROUP

ZSHANFGP {FM1, FM2, FM3...}

function group creation is mandatory.

82 of 261

83 of 261

STEP 2: CREATE FUNCTION MODULE (se37: function builder)

  • function module : zshanfmadd 1 create

  • function group: zshantanu1fgp

  • short text:my function module

  • save

  • 1.attributes: general properties of a function module

  • normal function module (default) client dependent

  • remote enabled function module (client independent) : rfc client programs

  • 2.import: input values into the function module

  • a type i
  • b type i

  • 3.export: output values from the function module

  • c type i

  • 4.changing: changing from import to export and vise versa

  • fm--fm
  • inpt output
  • outpt input

  • 5.tables: used for passing internal tables into the function module
  • ex: itab like vbak

  • 6.exceptions: error handling in the function module

  • allz all zeroes

  • 7.source code: to write the bussiness logic of the function module

  • if a = 0 and b = 0.
  • raise allz.
  • else.
  • c = a + b.
  • write:/ c.
  • endif.

  • save-check-activate-test

84 of 261

Se37>function builder>zshanfmadd1>create

85 of 261

1.attributes: general properties of a function module��normal function module (default) client dependent��remote enabled function module (client independent) : rfc client programs�

86 of 261

2.import: input values into the function module��a type i�b type i

87 of 261

3.export: output values from the function module��c type i�

88 of 261

exceptions: error handling in the function module��allz all zeroes

89 of 261

source code: to write the bussiness logic of the function module�

90 of 261

Save check act.-test

91 of 261

STEP 3: CREATE ABAP EDITOR CALLING PROGRAM (EXECUTABLE PROGRAM)

  • go to se38: abap editor

  • program: zshancalladdfm create

  • title: calling program for function module

  • type: executable program

  • save as local object

  • REPORT ZSHANCALLADDFM.
  • *calling program for function module

  • parameters: x type i,
  • y type i.

  • data: z type i.

  • Contd…….

  • *click on pattern button
  • CALL FUNCTION 'ZSHANFMADD'
  • EXPORTING
  • A = x
  • B = y
  • IMPORTING
  • C = z
  • EXCEPTIONS
  • ALLZ = 1
  • * OTHERS = 2
  • .
  • IF SY-SUBRC = 1.
  • message i333(555) with 'input values are zeroes'.
  • ENDIF.

  • **e : error message
  • *i: information message
  • *s: save message, a : append message
  • *
  • *333: message no
  • *555: message class

  • save-check-activate

92 of 261

Se38>zshancalladdfm1

93 of 261

Write prog..click on pattern button..

94 of 261

Then select fm zshan..

95 of 261

Put A= x�B= y, C= z..save check act.-test.

96 of 261

Results..put x=10, y=4..

97 of 261

�INCLUDE PROGRAM

  • include program: it can be called from executable program
  • it cannot be called multiple times in the same program
  • include program cannot run standalone.

  • step1: create include program (se38: abap editor)

  • program: zshaninclude create

  • title: include program

  • type: include program

  • tables: kna1. "customer table

  • select-options: cno for kna1-kunnr. "to give range at runtime

  • select * from kna1 where kunnr in cno.
  • save the include program

98 of 261

Save the include prog

99 of 261

step 2: go to se38: abap editor�

  • STEP 3: GO TO ZSHANINCLUDE PROGRAM
  • SAVE-CHECK-ACTIVATE

  • ========================
  • STEP 4: GO TO ZSHANCALLINCLUDE PROGRAM CHANGE

  • SAVE-CHECK-ACTIVATE-TEST

program: zshancallinclude create

title; calling program for include

type: executable program

REPORT ZSHANCALLINCLUDE.

INCLUDE ZSHANINCLUDE.

WRITE:/ KNA1-KUNNR, 20 KNA1-NAME1, 50 KNA1-LAND1.

ENDSELECT.

SAVE THE PROGRAM

100 of 261

101 of 261

STEP 3: GO TO ZSHANINCLUDE PROGRAM�SAVE-CHECK-ACTIVATE�STEP 4: GO TO ZSHANCALLINCLUDE PROGRAM CHANGE��SAVE-CHECK-ACTIVATE-TEST�

102 of 261

tables�

  • TABLES IS A KEYWORD TO ACCESS ANY DATABASE TABLE.

  • KNA1: CUSTOMER INFORMATION

  • KUNNR : CUSTOMER NUMBER
  • NAME1 : CUSTOMER NAME
  • LAND1 : COUNTRY

  • =================================

  • LFA1: VENDOR INFORMATION

  • LIFNR : VENDOR NUMBER
  • NAME1: VENDOR NAME
  • LAND1 : COUNTRY

  • *IST DIRECT ACCESS OF DATABASE TABLE 40%
  • TABLES: KNA1.

  • SELECT-OPTIONS: CNO FOR KNA1-KUNNR.

  • SELECT * FROM KNA1 WHERE KUNNR IN CNO.

  • WRITE:/ KNA1-KUNNR, 20 KNA1-NAME1, 50 KNA1-LAND1.

  • ENDSELECT.

  • SKIP 4.

  • ULINE.

  • WRITE:/ 'NO OF RECORDS FETCHED', SY-DBCNT.

  • ULINE.

103 of 261

Se38>zsantables>executable prog>save as local object.

104 of 261

Save check activate-test.

105 of 261

*2ND IN-DIRECT ACCESS OF DATABASE TABLE 50%�

  • Se38>Zsantables>change
  • TABLES: KNA1.

  • SELECT-OPTIONS: CNO FOR KNA1-KUNNR.

  • SELECT * FROM KNA1 INTO KNA1 WHERE KUNNR IN CNO.

  • WRITE:/ KNA1-KUNNR, 20 KNA1-NAME1, 50 KNA1-LAND1.

  • ENDSELECT.

  • SKIP 4.

  • ULINE.

  • WRITE:/ 'NO OF RECORDS FETCHED', SY-DBCNT.

  • ULINE.

106 of 261

*IN-DIRECT ACCESS OF DATABASE TABLE 60%�

  • TABLES: KNA1.

  • DATA: BEGIN OF CUST,
  • CNO LIKE KNA1-KUNNR,
  • CNAME LIKE KNA1-NAME1,
  • COUNTRY LIKE KNA1-LAND1,
  • END OF CUST.

  • SELECT-OPTIONS: CNO FOR KNA1-KUNNR.

  • SELECT KUNNR NAME1 LAND1 FROM KNA1 INTO CUST WHERE KUNNR IN CNO.

  • WRITE:/ CUST-CNO, 20 CUST-CNAME, 50 CUST-COUNTRY.

  • ENDSELECT.

  • SKIP 4.

  • ULINE.

  • WRITE:/ 'NO OF RECORDS FETCHED', SY-DBCNT.

  • ULINE.

107 of 261

*IN-DIRECT ACCESS OF DATABASE TABLE USING INTERNAL TABLES 70%�

  • Se38>zsantables>change
  • TABLES: KNA1.

  • DATA: ITAB LIKE KNA1 OCCURS 0 WITH HEADER LINE.

  • SELECT-OPTIONS: CNO FOR KNA1-KUNNR.

  • SELECT * FROM KNA1 INTO TABLE ITAB WHERE KUNNR IN CNO.

  • LOOP AT ITAB.
  • WRITE:/ ITAB-KUNNR, 20 ITAB-NAME1, 50 ITAB-LAND1.
  • ENDLOOP.

  • SKIP 4.

  • ULINE.

  • WRITE:/ 'NO OF RECORDS FETCHED', SY-DBCNT.

  • ULINE.

108 of 261

Tables contd..

  • *prg using radio buttons
  • TABLES: KNA1, LFA1.

  • PARAMETERS: CUSTOMER RADIOBUTTON GROUP GRP,
  • VENDOR RADIOBUTTON GROUP GRP.

  • IF CUSTOMER = 'X'. "X IT IS CLICKED '' NOT SELECTED
  • WRITE:/ 'CUSTOMER INFOR'.
  • ULINE.
  • SELECT * FROM KNA1.
  • WRITE:/ KNA1-KUNNR, KNA1-NAME1, KNA1-LAND1.
  • ENDSELECT.
  • ELSEIF VENDOR = 'X'.
  • WRITE:/ 'VENDOR INFO'.
  • ULINE.
  • SELECT * FROM LFA1.
  • WRITE:/ LFA1-LIFNR, LFA1-NAME1, LFA1-LAND1.
  • ENDSELECT.
  • ULINE.
  • endif.

109 of 261

  • *prg using check boxes
  • TABLES: KNA1, LFA1.

  • PARAMETERS: CUSTOMER as checkbox,
  • VENDOR as checkbox.

  • IF CUSTOMER = 'X'. "X IT IS CLICKED '' NOT SELECTED
  • WRITE:/ 'CUSTOMER INFOR'.
  • ULINE.
  • SELECT * FROM KNA1.
  • WRITE:/ KNA1-KUNNR, KNA1-NAME1, KNA1-LAND1.
  • ENDSELECT.
  • endif.
  • skip 4.
  • uline.
  • skip 4.
  • IF VENDOR = 'X'.
  • WRITE:/ 'VENDOR INFO'.
  • ULINE.
  • SELECT * FROM LFA1.
  • WRITE:/ LFA1-LIFNR, LFA1-NAME1, LFA1-LAND1.
  • ENDSELECT.
  • ULINE.
  • endif.

110 of 261

� Internal tables

  • Definition: it is a temporary table created during runtime/execution time of the program.

  • no memory is reserved for internal tables.

  • it is used for faster access of database tables information in report programs.

  • it is used for display purpose only.

  • 3 types of internal tables

  • 1.standard internal table : it is based on primary key of the table, the internal table is generated.

  • 2.sorted internal table: it is based on sort command ( asscending/ descending order) on any field of table, the internal table is generated.

  • 3.hashed internal table: it is based on hash key (combination of primary key or any other keys)
  • hash key: name, mobileno, city internal table is generated

111 of 261

zemp�eno ename sal�1 a 9000�2 b 8000�3 c 7000

  • 1.internal table with header line

  • header line (1 record is stored in header line allways)
  • 3 c 7000

  • body
  • 1 a 9000
  • 2 b 8000

  • 2.internal table without header line

  • body (all the records are stored in the body)
  • 1 a 9000
  • 2 b 8000
  • 3 c 7000

  • work area is to be created for this syntax

112 of 261

*PRG USING INTERNAL TABLES WITH HEADER LINE�

  • *INTERNAL TABLE WITH HEADER LINE

  • data: begin of itab occurs 0,
  • x type i,
  • y type i,
  • end of itab.

  • do 5 times.
  • itab-x = sy-index.
  • itab-y = itab-x * 2.
  • append itab.
  • enddo.

  • loop at itab.
  • write:/ itab-x, itab-y.
  • endloop.

113 of 261

*internal table without header line

  • data: begin of tab,
  • dno(4) type n value '1234',
  • name(30) type c value 'ravi',
  • city(30) type c value 'hyderabad',
  • end of tab.

  • data: itab like tab occurs 0 with header line. "tab acts like work area

  • append tab to itab.

  • loop at itab.
  • write:/ itab-dno, itab-name, itab-city.
  • endloop.

114 of 261

�SYNTAX FOR INTERNAL TABLES

  • SYNTAX FOR INTERNAL TABLES

  • 1.DECLARATION OF INTERNAL TABLES

  • 2.POPULATION OF INTERNAL TABLES (ADDING RECORDS : APPEND)

  • 3.PROCESSING OF INTERNAL TABLES (WRITE/ READ/ MODIFY)

  • 4.DELETE/CLEARING OF INTERNAL TABLES

  • 5.SORTING OF INTERNAL TABLES

  • 6.CONTROL BREAK EVENTS (LOOP AT ITAB...ENDLOOP)
  • 1.DECLARATION OF INTERNAL TABLES

  • 1.data: itab like sflight occurs 0 with header line.

  • occurs creates table space for the internal table
  • sflight 6702 records itab 6702 table space has to be created

  • occurs 6702.

  • occurs 100. (100+100+...6800 - 6702 = 98 ts wasted)
  • occurs 2. (2+2+2+.... 6702 - 6702 = 0 )
  • occurs 0 (6702 + 1 t.s extra allways)

  • itab is created without header line.

  • we need to create a work area for the above syntax.

115 of 261

Contd..

  • 2.DATA : BEGIN OF ITAB 0CCURS 0,
  • INCLUDE STRUCTURE SFLIGHT,
  • END OF ITAB.

  • ITAB HAS SFLIGHT STRUCTURE.

  • OCCURS 0 CREATES TABLES SPACE FOR THE INTERNAL TABLE

  • ITAB HAS HEADER LINE.

  • 3. DATA: BEGIN OF ITAB OCCURS 0,
  • CARRID LIKE SFLIGHT-CARRID,
  • CONNID LIKE SFLIGHT-CONNID,
  • FLDATE LIKE SLIFHT-FLDATE,
  • END OF ITAB.

  • ITAB HAS SFLIGHT STRUCTURE BUT ONLY 3 FIELDS FROM SFLIGHT IN ITAB.

  • ITAB HAS HEADER LINE.

  • 4.DATA: BEGIN OF ITAB OCCURS 0,
  • CARRID LIKE SFLIGHT-CARRID,
  • CONNID LIKE SFLIGHT-CONNID,
  • FLDATE LIKE SFLIGHT-FLDATE,
  • BOOKID LIKE SBOOK-BOOKID,
  • ID LIKE SCUSTOM-ID,
  • END OF ITAB.

  • ITAB HAS SFLIGHT, SBOOK, SCUSTOM TABLES INFORMATION, 3 TABLES INFORMATION IN ITAB.

  • ITAB HAS HEADER LINE.

116 of 261

Contd..

  • 2.POPULATION OF INTERNAL TABLES (ADDING RECORDS : APPEND)

  • 1.ITAB-DNO = 1.
  • ITAB-NAME = 'A'.
  • ITAB-CITY = 'HYD'.
  • APPEND ITAB.

  • ITAB-DNO = 2.
  • ITAB-NAME = 'B'.
  • ITAB-CITY = 'CHENNAI'.
  • APPEND ITAB.

  • 2.DO 5 TIMES.
  • ITAB-DNO = SY-INDEX.
  • ITAB-NAME = 'RAJ'.
  • ITAB-CITY = 'HYD'.
  • APPEND ITAB.
  • ENDDO.

  • RESULT:
  • 1 RAJ HYD
  • 2 RAJ HYD
  • 3 RAJ HYD
  • 4 RAJ HYD
  • 5 RAJ HYD

  • 3. SELECT * FROM SFLIGHT INTO ITAB.
  • APPEND ITAB.
  • ENDSELECT.

  • 4. SELECT * FROM SFLIGHT INTO TABLE ITAB. (AVOID APPEND ITAB AND ENDSELECT STATEMENTS)

  • 5. SELECT * FROM SFLIGHT INTO ITAB.
  • MOVE-CORRESPONDING SFLIGHT TO ITAB.
  • APPEND ITAB.
  • ENDSELECT.

  • SFLIGHT ITAB
  • CARRID CARRID
  • CONNID CONNID
  • FLDATE FLDATE

  • 6.SELECT * FROM SFLIGHT INTO ITAB.
  • MOVE SFLIGHT TO ITAB.
  • APPEND ITAB.
  • ENDSELECT.

  • SFLIGHT ITAB
  • CARRID CID
  • CONNID COD
  • FLDATE FLD

117 of 261

  • 3.PROCESSING OF INTERNAL TABLES (WRITE/ READ/ MODIFY)

  • WRITE: TO DISPLAY THE RECORDS FROM THE INTERNAL TABLE

  • 1.WRITE:/ ITAB-DNO, ITAB-NAME, ITAB-CITY. (IT WILL DISPLAY ONLY LAST RECORD FROM ITAB)

  • 2.LOOP AT ITAB. (IT WILL DISPLAY ALL THE RECORDS)
  • WRITE:/ ITAB-DNO, ITAB-NAME, ITAB-CITY.
  • ENDLOOP.

  • READ: TO SEARCH/LOCATE THE RECORD

  • 1.READ TABLE ITAB WITH INDEX 3.

  • IT WILL READ THE CONTENTS OF 3RD RECORD FROM ITAB.

  • 2.READ TABLE ITAB WITH KEY CARRID = 'LH'.

  • IT WILL READ ALL THE RECORDS THAT HAS LH AS CARRID VALUE.

  • ITAB
  • CARRID
  • DH
  • DH
  • LH...READ
  • LH READ
  • LH READ

  • 3.MODIFY

  • ITAB-CARRID = 'DH'.
  • MODIFY TABLE ITAB WITH INDEX 3.

  • ITAB
  • CARRID
  • DH
  • LH
  • DH...THIS RECORD IS MODIFIED.
  • DH
  • LH

118 of 261

  • 4.DELETE/CLEARING OF INTERNAL TABLES�1.DELETE TABLE ITAB WITH INDEX 3.�
  • IT WILL DELETE 3RD RECORD FROM THE INTERNAL TABLE

  • 2.CLEAR ITAB.

  • IT WILL DELETE CONTENTS OF HEADER LINE ONLY.

  • 3.CLEAR ITAB[].

  • IT WILL DELETE CONTENTS OF BODY OF INTERNAL TABLE.

  • 4.REFRESH ITAB.

  • IT WILL REMOVE THE CONTENTS OF INTERNAL TABLE.

  • 5.FREE ITAB.

  • IT WILL DE-ALLOCATE THE MEMORY ASSOCIATED WITH INTERNAL TABLE.

  • 5.SORTING OF INTERNAL TABLES

  • 1.SORT ITAB. {IT IS USED ONLY FOR NON-NUMERIC SORTING CNAME, CITY}

  • 2.SORT ITAB BY CARRID ASSCENDING.
  • SORT ITAB BY CARRID CONNID DESCENDING. {IT IS USED FOR NUMERIC/ NON-NUMERIC SORTING}

119 of 261

  • 6.CONTROL BREAK EVENTS (LOOP AT ITAB...ENDLOOP)

  • ARE USED FOR FORMATTING THE REPORT.
  • THEY ARE USED BETWEEN LOOP AT ITAB...ENDLOOP.
  • SYNTAX:

  • 1.AT FIRST.
  • <STMT BLOCK>.
  • ENDAT.
  • *IT IS USED FOR DISPLAY COL.HEADING

  • 2.AT NEW <FIELD NAME>.
  • <STMT BLOCK>.
  • ENDAT.
  • *AT THE NEW OCCURRENCE OF THE FIELD VALUE IT WILL DISPLAY THE RECORD.
  • IT IS TO AVOID REPITITION OF SAME FIELD VALUE FOR EVERY RECORD

  • 3.AT END OF <FIELD NAME>.
  • <STMT BLOCK>.
  • ENDAT.

  • *CALCULATE GROSS TOTALS

  • 4.AT LAST.
  • <STMT BLOCK>.
  • ENDAT.

  • *CALCULATE NET TOTALS

120 of 261

  • PROGRAMS: NESTED SELECT ON INTERNAL TABLES

  • *program using sort on internal tables
  • Se38>zsaninttables>create>executable>save

  • data: begin of itab occurs 5,
  • name(30) type c,
  • sales type p decimals 2,
  • end of itab.

  • itab-name = 'raj'.
  • itab-sales = '53000.00'.
  • append itab sorted by sales.

  • itab-name = 'hari'.
  • itab-sales = '22000.00'.
  • append itab sorted by sales.

  • itab-name = 'jack'.
  • itab-sales = '41000.00'.
  • append itab sorted by sales.

  • itab-name = 'lata'.
  • itab-sales = '20000.00'.
  • append itab sorted by sales.

  • itab-name = 'harish'.
  • itab-sales = '61000.00'.
  • append itab sorted by sales.
  • *sort itab by sales.
  • loop at itab.
  • write:/ itab-name, itab-sales.
  • endloop.

121 of 261

Se38>zsantables>create>prog using internal tables>save as local object.

122 of 261

Save check activate test..sales displayed in descending order..

123 of 261

*program using collect on internal tables�

  • data: begin of itab occurs 5,
  • date type d,
  • name(10) type c,
  • psales type p decimals 2,
  • nsales type p decimals 2 value 1,
  • end of itab.

  • itab-date = '20130924'.
  • itab-name = 'AAA'.
  • itab-psales = '12000.45'.
  • collect itab.

  • itab-date = '20130924'.
  • itab-name = 'BBB'.
  • ITAB-PSALES = '8200.00'.
  • COLLECT ITAB.

  • itab-date = '20130924'.
  • itab-name = 'AAA'.
  • ITAB-PSALES = '8200.00'.
  • COLLECT ITAB.

  • itab-date = '20130924'.
  • itab-name = 'BBB'.
  • ITAB-PSALES = '4200.00'.
  • COLLECT ITAB.

  • itab-date = '20130924'.
  • itab-name = 'AAA'.
  • ITAB-PSALES = '3200.00'.
  • COLLECT ITAB.

  • LOOP AT ITAB.
  • WRITE:/ ITAB-DATE, ITAB-NAME, ITAB-PSALES, ITAB-NSALES.
  • ENDLOOP.

124 of 261

Total is added and computed in the collect statement..

125 of 261

REFRESH, FREE ITAB�

  • REFRESH, FREE ITAB

  • DATA : BEGIN OF ITAB OCCURS 3,
  • * IND LIKE SY-INDEX,
  • * END OF ITAB,

  • * TND LIKE SY-INDEX.

  • * DO 3 TIMES.
  • * TND = SY-INDEX.
  • *
  • DO 3 TIMES.
  • * ITAB-IND = TND * SY-INDEX.
  • * APPEND ITAB.
  • * ENDDO.
  • * WRITE : / ' '.

  • * LOOP AT ITAB.
  • * WRITE ITAB-IND.
  • * ENDLOOP.
  • ** REFRESH ITAB. ''CHECK HERE WITH REFRESH AND WITH OUT REFRESH
  • *
  • * ENDDO.
  • * FREE ITAB.

126 of 261

Check results and analyze..

127 of 261

Without refresh itab..see results.

  • �REPORT  ZSANINTTABLES.��*REFRESH, FREE ITAB��DATA : BEGIN OF ITAB OCCURS 3,�        IND LIKE SY-INDEX,�        END OF ITAB,��        TND LIKE SY-INDEX.��        DO 3 TIMES.�        TND = SY-INDEX.��         DO 3 TIMES.�        ITAB-IND = TND * SY-INDEX.�        APPEND ITAB.�        ENDDO.�        WRITE : / ' '.��        LOOP AT ITAB.�        WRITE ITAB-IND.�        ENDLOOP.� "CHECK HERE WITH REFRESH AND WITH OUT REFRESH��        ENDDO.�        FREE ITAB.

128 of 261

129 of 261

Do..end do..

  • REPORT  ZSANINTTABLES.��do 5 times.�write:/ 'raj'.� do 3 times.�write:/ 'hari'.�  enddo.�enddo.

130 of 261

*NESTED SELECT ON INTERNAL TABLES�

  • *NESTED SELECT ON INTERNAL TABLES
  • KNA1
  • KUNNR NAME
  • 1 A
  • 2 B
  • 3 C
  • 4 D

  • VBAK
  • KUNNR SALES
  • 2 1000
  • 4 8000

  • KUNNR = ITAB-KUNNR
  • INNER JOIN
  • KUNNR NAME SALES
  • 2 B 1000
  • 4 D 8000

  • KUNNR IN CNO IN BOTH PLACES
  • LEFT OUTER JOIN
  • KUNNR NAME SALES
  • 1 A -
  • 2 B 1000
  • 3 C -
  • 4 D 8000

  • *NESTED SELECT LOGIC ON INTERNAL TABLES
  • *customer wise sales report
  • tables: kna1, vbak.

  • data: begin of itab occurs 0,
  • kunnr like kna1-kunnr, "customer no
  • name1 like kna1-name1, "customer name
  • land1 like kna1-land1, "country
  • vbeln like vbak-vbeln, "sales doc no
  • vbtyp like vbak-vbtyp, "doc type
  • netwr like vbak-netwr, "net sales
  • end of itab.

  • select-options: cno for kna1-kunnr. "to give range at runtime of the program

  • *nested select logic
  • SELECT * FROM KNA1 INTO CORRESPONDING FIELDS OF ITAB WHERE KUNNR IN CNO.
  • SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF ITAB WHERE KUNNR = ITAB-KUNNR.
  • APPEND ITAB.
  • ENDSELECT.
  • ENDSELECT.

  • LOOP AT ITAB.
  • WRITE:/ ITAB-KUNNR, 20 ITAB-NAME1, 40 ITAB-LAND1, 60 ITAB-VBELN, 75 ITAB-VBTYP, 90 ITAB-NETWR.
  • ENDLOOP.

131 of 261

Cust no 1 to 1200: execute

132 of 261

internal tables using nested select logic��CONTROL BREAK EVENTS: This is used for formatting report�

  • *NESTED SELECT LOGIC ON INTERNAL TABLES
  • *customer wise sales report
  • *tables: kna1, vbak.
  • *
  • *data: begin of itab occurs 0,
  • * kunnr like kna1-kunnr, "customer no
  • * name1 like kna1-name1, "customer name
  • * land1 like kna1-land1, "country
  • * vbeln like vbak-vbeln, "sales doc no
  • * vbtyp like vbak-vbtyp, "doc type
  • * netwr like vbak-netwr, "net sales
  • * end of itab.
  • *
  • *select-options: cno for kna1-kunnr. "to give range at runtime of the program
  • *
  • **nested select logic
  • * SELECT * FROM KNA1 INTO CORRESPONDING FIELDS OF ITAB WHERE KUNNR IN CNO.
  • * SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF ITAB WHERE KUNNR = ITAB-KUNNR.
  • * APPEND ITAB.
  • * ENDSELECT.
  • * ENDSELECT.
  • **
  • *LOOP AT ITAB.
  • **control break events used for formatting report
  • *AT FIRST. "IT IS USED TO DISPLAY COL HEADINGS
  • * WRITE:/ 'CUSTOMER NO', 20 'CUSTOMER NAME', 50 'COUNTRY', 60 'SALES DOC NO', 80 'DOC TYPE', 95 'NET SALES'.
  • * ULINE.
  • *ENDAT.

  • *
  • *AT NEW KUNNR. "REPITITION IS AVOIDED WITH AT NEW FIELD NAME
  • * WRITE:/ ITAB-KUNNR.
  • *ENDAT.
  • *
  • *AT NEW NAME1.
  • * WRITE:/20 ITAB-NAME1.
  • *ENDAT.
  • *
  • *AT END OF KUNNR. "CALCULATE GROSS TOTAL
  • * SUM.
  • * ULINE.
  • * WRITE:/80 'GROSS TOTAL:', 95 ITAB-NETWR.
  • * ULINE.
  • * ENDAT.
  • *
  • *WRITE:/40 ITAB-LAND1, 60 ITAB-VBELN, 75 ITAB-VBTYP, 90 ITAB-NETWR.
  • *
  • *AT LAST. "CALCULATE NET TOTAL
  • * SUM.
  • * ULINE.
  • * WRITE:/80 'NET TOTAL:', 95 ITAB-NETWR.
  • * ULINE.
  • * ENDAT.
  • * ENDLOOP.

133 of 261

Cust: 1 to1200: execute..

134 of 261

JOINS PROGRAM

  • JOINS ARE TWO TYPES

  • 1.INNER JOIN : CONTAIN THE COMMON FIELD ENTRY THAT IS PRESENT IN BOTH THE TABLES THEN IT IS REPRESENTED IN INNER JOIN

  • 2.LEFT OUTER JOIN : CONTAIN THE COMMON FIELD ENTRY IN EITHER OF THE TABLES THEN IT IS REPRESENTED IN LEFT OUTER JOIN.
  • INNER JOIN IS CONTAINED IN LEFT OUTER JOIN.

  • ZEMP
  • ENO ENAME DEPTNO SAL
  • 1 A 10 9000
  • 2 B 20 8000
  • 3 C 30 7000

  • ZDEPT
  • DEPTNO DNAME
  • 10 IT
  • 20 SALES
  • 30 PURCH
  • 40 FINANCE
  • 50 HR

  • INNER JOIN
  • ENO ENAME DEPTNO DNAME SAL
  • 1 A 10 IT 9000
  • 2 B 20 SALES 8000
  • 3 C 30 PURCH 7000

  • LEFT OUTER JOIN

  • ENO ENAME DEPTNO DNAME SAL
  • 1 A 10 IT 9000
  • 2 B 20 SALES 8000
  • 3 C 30 PURCH 7000
  • - - 40 FINANCE -
  • - - 50 HR -

  • RULES: WE USE ~TILD OPERATOR TO ALIS(PET NAME) THE FIELDS OF A TABLES
  • NO COMMAS, NO PERIODS IN JOIN STATEMENT

  • INNER JOIN
  • ENO ENAME DEPTNO DNAME SAL
  • 1 A 10 IT 9000
  • 2 B 20 SALES 8000
  • 3 C 30 PURCH 7000

  • LEFT OUTER JOIN

  • ENO ENAME DEPTNO DNAME SAL
  • 1 A 10 IT 9000
  • 2 B 20 SALES 8000
  • 3 C 30 PURCH 7000
  • - - 40 FINANCE -
  • - - 50 HR -

  • RULES: WE USE ~TILD OPERATOR TO ALIS(PET NAME) THE FIELDS OF A TABLES
  • NO COMMAS, NO PERIODS IN JOIN STATEMENT

135 of 261

Se38>zshanjoins>create

136 of 261

Prog on inner join..se38>zshanjoins >change

  • *INNER JOIN LOGIC ON INTERNAL TABLES
  • *customer wise sales report
  • tables: kna1, vbak.

  • data: begin of itab occurs 0,
  • kunnr like kna1-kunnr, "customer no
  • name1 like kna1-name1, "customer name
  • land1 like kna1-land1, "country "P
  • vbeln like vbak-vbeln, "sales doc no
  • vbtyp like vbak-vbtyp, "doc type
  • netwr like vbak-netwr, "net sales "K
  • end of itab.

  • select-options: cno for kna1-kunnr. "to give range at runtime of the program

  • *INNER JOIN LOGIC
  • SELECT P~KUNNR P~NAME1 P~LAND1 K~VBELN K~VBTYP K~NETWR INTO CORRESPONDING FIELDS OF TABLE ITAB FROM KNA1 AS P INNER JOIN VBAK AS K ON P~KUNNR = K~KUNNR WHERE P~KUNNR IN CNO.

  • LOOP AT ITAB.
  • *control break events used for formatting report
  • AT FIRST. "IT IS USED TO DISPLAY COL HEADINGS
  • WRITE:/ 'CUSTOMER NO', 20 'CUSTOMER NAME', 50 'COUNTRY', 60 'SALES DOC NO', 80 'DOC TYPE', 95 'NET SALES'.
  • ULINE.
  • ENDAT.

137 of 261

  • AT NEW KUNNR. "REPITITION IS AVOIDED WITH AT NEW FIELD NAME
  • WRITE:/ ITAB-KUNNR.
  • ENDAT.

  • AT NEW NAME1.
  • WRITE:/20 ITAB-NAME1.
  • ENDAT.

  • AT END OF KUNNR. "CALCULATE GROSS TOTAL
  • SUM.
  • ULINE.
  • WRITE:/80 'GROSS TOTAL:', 95 ITAB-NETWR.
  • ULINE.
  • ENDAT.

  • WRITE:/40 ITAB-LAND1, 60 ITAB-VBELN, 75 ITAB-VBTYP, 90 ITAB-NETWR.

  • AT LAST. "CALCULATE NET TOTAL
  • SUM.
  • ULINE.
  • WRITE:/80 'NET TOTAL:', 95 ITAB-NETWR.
  • ULINE.
  • ENDAT.
  • ENDLOOP.

138 of 261

Cust:1 to 1200: execute

139 of 261

LEFT OUTER JOIN LOGIC ON INTERNAL TABLES

  • REPORT ZSHANJOINS.

  • *LEFT OUTER JOIN LOGIC ON INTERNAL TABLES
  • *customer wise sales report
  • tables: kna1, vbak.

  • data: begin of itab occurs 0,
  • kunnr like kna1-kunnr, "customer no
  • name1 like kna1-name1, "customer name
  • land1 like kna1-land1, "country "P
  • vbeln like vbak-vbeln, "sales doc no
  • vbtyp like vbak-vbtyp, "doc type
  • netwr like vbak-netwr, "net sales "K
  • end of itab.

  • *LEFT OUTER JOIN LOGIC
  • SELECT P~KUNNR P~NAME1 P~LAND1 K~VBELN K~VBTYP K~NETWR INTO CORRESPONDING FIELDS OF TABLE ITAB FROM KNA1 AS P LEFT OUTER JOIN VBAK AS K ON P~KUNNR = K~KUNNR.

  • AT NEW KUNNR. "REPITITION IS AVOIDED WITH AT NEW FIELD NAME
  • WRITE:/ ITAB-KUNNR.
  • ENDAT.

  • AT NEW NAME1.
  • WRITE:/20 ITAB-NAME1.
  • ENDAT.

  • AT END OF KUNNR. "CALCULATE GROSS TOTAL
  • SUM.
  • ULINE.
  • WRITE:/80 'GROSS TOTAL:', 95 ITAB-NETWR.
  • ULINE.
  • ENDAT.

  • WRITE:/40 ITAB-LAND1, 60 ITAB-VBELN, 75 ITAB-VBTYP, 90 ITAB-NETWR.

  • AT LAST. "CALCULATE NET TOTAL
  • SUM.
  • ULINE.
  • WRITE:/80 'NET TOTAL:', 95 ITAB-NETWR.
  • ULINE.
  • ENDAT.
  • ENDLOOP.

140 of 261

Save check act.-test>execute

141 of 261

Flights from frankfurt to ny

  • TABLES: SCARR, SPFLI.
  • DATA: BEGIN OF WA,
  • CARRID TYPE SCARR-CARRID,
  • CARRNAME TYPE SCARR-CARRNAME, "S
  • CONNID TYPE SPFLI-CONNID, "P
  • END OF WA.
  • DATA: ITAB LIKE SORTED TABLE OF WA WITH NON-UNIQUE KEY CARRID.
  • *
  • SELECT S~CARRID S~CARRNAME P~CONNID
  • INTO CORRESPONDING FIELDS OF TABLE ITAB
  • FROM SCARR AS S
  • LEFT OUTER JOIN SPFLI AS P ON S~CARRID = P~CARRID AND P~CITYFROM = 'FRANKFURT' AND P~CITYTO = 'NEW YORK'.
  • *
  • LOOP AT ITAB INTO WA.
  • WRITE: / WA-CARRID, WA-CARRNAME, WA-CONNID.
  • ENDLOOP.

142 of 261

DATA DICTIONARY

  • 1.TABLES 1.TRANSPARENT TABLES
  • 2.POOLED TABLES
  • 3.CLUSTER TABLES
  • 4.INTERNAL TABLES

  • 2.VIEWS 1.PROJECTION VIEW
  • 2.DATABASE VIEW
  • 3.MAITENANCE VIEW
  • 4.HELP VIEW

  • 3.STRUCTURES 1.INCLUDE STRUCTURE 2.APPEND STRUCTURE

  • 4.SEARCH HELP 1.ELEMENTARY SEARCH HELP 2.COLLECTIVE SEARCH HELP

  • 5.LOCK OBJECTS

  • PRIMARY KEY, FOREIGN KEY, CARDINALITY, DELIVERY CLASS, DATA CLASS,
  • CHECK TABLE, VALUE TABLE, BUFFERRING , TYPES OF BUFFERING,
  • INDEX, TYPES OF INDICES

  • TRANSPARENT TABLES

  • DEF: THEY EXIST WITH THE SAME STRUCTURE AND DATA IN BOTH DATA DICTIONARY
  • AND DATABASE

  • DATA DICTIONARY(GUI)--------------------SAPDATABASE
  • TT1 TT1
  • STRU+DATA STRU+DATA
  • SAVE-CHECK ACTIVATE (COMMIT)

  • CREATION OF TRANSPARENT TABLE IS DONE IN TWO WAYS

  • 1.DATA ELEMENT WAY (RELATIONSHIP WITH THE OTHER TABLES IS CREATED)

  • 2.PRE-DEFINED TYPE (NO RELATION WITH OTHER TABLES IN DATABASE)

143 of 261

CREATION OF TRANPARENT TABLE DATA ELEMENT WAY�

  • STEP 1: CREATE DOMAIN
  • STEP 2: CREATE DATA ELEMENTS
  • STEP 3: CREATE FIELDS
  • STEP 4: CREATE TECH.SETTINGS
  • STEP 5: CREATE TABLE

144 of 261

SPECIFICATION:�

  • DATABASE TABLE:
  • ZEMPSAN

  • FIELDS DOMAINS DATAELEMENTS (FIELD LABEL)
  • ENO PK UK ZDOENOSAN NUMC 4 ZDEENOSAN ENO, EMP NO, EMPLOYEE NO, EMPLOYEE NUMBER
  • ENAME ZDOENAMESAN CHAR 30 ZDEENAMESAN ENAME, EMP NAME, EMPLOYEE NAME
  • DEPTNO ZDODEPTNOSAN NUMC 3 ZDEDEPTNOSAN DEPTNO, DEPTNO, DEPARTMENT NO
  • SAL ZDOSALSAN DEC 8 2 ZDESALSAN SAL, SAL, SALARY

  • DATABASE TABLE
  • ZDEPTSAN

  • FIELDS
  • DEPTNO PK UK ZDODEPTNOSAN NUMC 3 ZDEDEPTNOSAN DEPTNO, DEPTNO, DEPARTMENT NO
  • DNAME ZDODNAME CHAR 30 ZDEDNAMESAN DNAME, DEPTNAME, DEPARTMENT NAME

145 of 261

Primary and unique Keys..

  • PRIMARY KEY IS USED TO ACCESS THE RECORD INFORMATION.
  • A PRIMARY INDEX IS CREATED ON PRIMARY KEY AUTOMATICALLY BY THE SYSTEM
  • PRIMARY KEY IS COMPULSORY.
  • IT DOES NOT ALLOW DUPLICATE VALUES OR NULL VALUES
  • PRIMAY KEY WILL ALLOW A NULL VALUE FOR FIRST TIME ONLY. IT WILL TREAT AS ZERO RECORD

  • UNIQUE KEY DOES NOT ALLOW DUPLICATE VALUES OR NULL VALUES
  • UNIQUE KEY WILL NEVER ALLOW A NULL VALUE IN ITS LIFE TIME.

  • DEF:
  • ALL UNIQUE KEYS ARE PRIMARY KEYS
  • ALL PRIMARY KEYS ARE NOT UNIQUE

  • DOMAINS : ARE FIELD CARACTERISTICS, PROPERTIES OF A FIELD,
  • IT CONTAINS DATA TYPE, LENGTH, DECIMALS PLACES, OUTPUT LENGTH

  • DATA ELEMENT : CONTAINS DOMAIN INFORMATION, FIELD LABEL INFORMATION, DOCUMENTATION
  • IT USED FOR CREATING THE RELATIONSHIP BETWEEN THE TABLES

146 of 261

CREATION OF TRANPARENT TABLE DATA ELEMENT WAY�

  • STEP 1: CREATE DOMAIN

  • GO TO T-CODE SE11: DATA DICTIONARY

  • select the option domain: zdoenosan 1 create

  • short desc: employee number

  • data type: numc
  • no.of char: 4

  • output length: 4

  • save-check-activate

147 of 261

Se11>zdoenosan>employee no

148 of 261

similary create all the domains>employee name

149 of 261

Dept no

150 of 261

Employee salary

151 of 261

STEP 2: CREATE DATA ELEMENTS�

  • SELECT THE OPTION DATA TYPE: ZDEENOSAN CREATE

  • SELECT DATA ELEMENT CONTINUE

  • SHORT DESC: EMPLOYEE NUMBER

  • DOMAIN: ZDOENOSAN1

152 of 261

SELECT DATA ELEMENT CONTINUE��SHORT DESC: EMPLOYEE NUMBER��DOMAIN: ZDOENOSAN

153 of 261

CLICK ON FIELD LABEL�SHORT : ENO�MEDIUM : ENO�LONG : EMPLOYEE NUMBER�HEADING: EMPLOYEE NUMBER�SAVE-CHECK-ACTIVATE

154 of 261

SIMILARY CREATE ALL THE DATA ELEMENTS:�ZDEENAMESAN1

155 of 261

Contd..

156 of 261

Dept no

157 of 261

Salary..

158 of 261

STEP 3: CREATE FIELDS:se11>data dictionary>�database table>zempsan1>create�

159 of 261

Afer this,�click on fields tab

short desc: employee table

delivery class: a application table

delivery class specifies what type of table is created in database

ex: application table, system table, customizing table, temporary table etc

database table maintenance : allways allowed

160 of 261

Contd..fields add

fields data elements

eno pk uk zdeenosan

ename zdeenamesan

deptno zdedeptnosan

sal zdesalsan

SAVE AS CLIENT SPECIFIC TABLE CONTINUE

161 of 261

�STEP 4: CLICK ON TECHNICAL SETTINGS BUTTON

DATA CLASS: SPECIFY WHAT TYPE OF DATA IS CREATED IN THE TABLE

APPL0 : MASTER DATA : RARELY CHANGED DATA IS MASTER DATA

APPL1: TRANSACTION DATA: FREQUENTLY DATA IS CHANGED

SYSTEM DATA: SYSTEM PURPOSE

ORGANIZATIONAL DATA: ORGANIZATION PURPOSE

SIZE : 0 (0-7600)

BUFFERING: IS NOT ALLOWED (DEFAULT)

IT CREATES A LOG FILE TO STORE ALL THE OPERATIONS SUCH AS INSERT, UPDATE, DELETE ARE RECORDED IN THE BUFFER.

TYPES OF BUFFERING

SINGLE RECORD BUFFERING: ONLY FEW RECORDS ARE LOCATED IN BUFFER

GENERIC BUFFERING: GENERIC AREA IS GIVEN FOR BUFFERING. GENERIC AREA CONTAINS GENERIC KEY. GENERIC KEY CONTAINS PRIMARY KEY AND ANY OTHER KEY

FULL BUFFERING : TOTAL TABLE IS LOCATED IN BUFFERING

SAVE THE TECH.SETTINGS

162 of 261

STEP 5: CREATE TABLE�

SAVE-CHECK-ACTIVATE

(TO AVOID WARNING ENHANCEMENT CATEGORY IS MISSING

EXTRAS - ENHANCEMENT CATEGORY - CONTINUE

SELECT OPTION : CAN BE ENHANCED DEEP COPY

SAVE-CHECK-ACTIVATE

163 of 261

SIMILARLY CREATE ZDEPTSAN1 TABLE:�specifications..see slide 145

  • DATABASE TABLE
  • ZDEPTSAN1

  • FIELDS DOMAINS DATA ELEMENTS FIELD LEVEL
  • DEPTNO PK UK ZDODEPTNOSAN1 NUMC 3 ZDEDEPTNOSAN1 DEPTNO, DEPTNO, DEPARTMENT NO
  • DNAME ZDODNAME1 CHAR 30 ZDEDNAMESAN1 DNAME, DEPTNAME, DEPARTMENT NAME

164 of 261

Save check activate..the 2nd table

165 of 261

step-6�CREATE RELATIONSHIP BETWEEN TABLES�

GO TO ZEMPSAN1 TABLE

PLACE THE CURSOR ON DEPTNO FIELD

CLICK ON FOREIGN KEYS BUTTON

SHORT TEXT: FKEY

CHECK TABLE: ZDEPTSAN1(CONNECTING TABLE TO CURRENT TABLE)

CLICK ON GENERATE PROPOSAL BUTTON

CLICK ON COPY

SAVE-CHECK-ACTIVATE

166 of 261

step-7��1.CREATE RECORDS TO THE TABLE zdeptsan1�

UTILITIES - TABLE CONTENTS - CREATE ENTRIES

2.TO DISPLAY RECORDS

CLICK ON CONTENTS BUTTON

OR) UTILITIES - TABLE CONTENTS - DISPLAY

3.UPDATE RECORDS

SELECT RECORD AND CLICK ON UPDATE

4.DELETE RECORDS

SELECT RECORD CLICK ON TABLE ENTRY - DELETE

CONFIRM DELET

167 of 261

Go to zemsan1 table : utilities>create entries

168 of 261

Zempsan1 table > click on contents>see the relationship between the tables created with details information.

169 of 261

Execute>

170 of 261

structures

  • structures contains field information that is used in several tranparent tables

  • str1{name, city,pin}

  • tt1 tt2 tt3
  • include str1 include str1 include str1

  • advantage: same fields are available in several transparent tables
  • it will maintain integrity of database tables.

  • go to t-code se11:data dictionary

  • database table: zshancust1 create

  • short desc: customer table

  • delivery class: a application table

  • table maintenance: allways allowed

  • click on fields tab

  • fields click on pre-defined type button
  • cno pk uk numc 4 customer number
  • cname char 30 customer name

  • save the table as client specific table

171 of 261

172 of 261

Click on predefined button..

173 of 261

click on tech.settings

data class: appl0 : master data : rarely changed data

size: 0

save the tech.settings

press back

go to extras - enhancement category

select (can be enhanced deep) copy

save-check-activate

174 of 261

175 of 261

2nd step..create structure

  • go to se11: data dictionary

  • select data type: zshanstr create

  • select the option: structure continue

  • short desc: my structure

  • component
  • click on pre-defined type button
  • pin numc 6 pin code
  • mobno numc 10 mobile number

  • go to extras - enhancement category
  • can be enhanced (deep)
  • click on copy

  • save-check-activate the structure

176 of 261

Save check activate.

177 of 261

step 2: create include structure�

go to se11: data dictionary

database table : zshancust change

fields data element

.include zshanstr

save-check-activate the table

178 of 261

3.creation of append structure�

go to se11: data dictionary

database table: zshancust change

click on append structure button

save..yes

client specific table continue

no append structure is defined continue

append name: zshenappnd continue

short desc: my append structure

component click on pre-defined type button

faxno numc 10 fax number

addr char 60 address

go to extras - enhancement category

can be enhanced deep copy

save-check-activate

179 of 261

Press back> expand structure

180 of 261

Click on contents button

181 of 261

Example: se11> kna1>view

182 of 261

KNA1>View the append structure>expand

183 of 261

SE11>K*>F4 KEY PRESS�all customer tables are displayed

184 of 261

Select any table>Click on contents button.

185 of 261

Append and include..conclude..

  • faq: what is the difference between append structure and include structure
  • include structure is available to several transparent tables
  • when as append structure is availble only to current transparent table

186 of 261

data dictionary��search help, lock objects�

  • creation of elementary search help

  • select the option search help

  • search help: zenosaneshlp create

  • select elementary search help continue

  • elemenatary search help on eno

  • selection method: zempsan

  • search help parameter imp exp lpos spos data element
  • eno chk chk 1 1 zdeenosan

  • save-check-activate

  • similarly create elementary search helps on ename, deptno fields

search help is used to locate table and field

it is created along with the table creation

database table: zempsan

fields data elements

eno zdeenosan

ename zdeenamesan

deptno zdedeptnosan

187 of 261

similarly create elementary search helps on ename, deptno fields�

188 of 261

Se11> search help >ZENameSANESHLP1

189 of 261

Se11> ZdeptnoSANESHLP1

190 of 261

creation of collective search help�

  • select the search help

  • search help: zsantanu create

  • select option : collective search help continue

  • short desc: collective search help

  • search help parameters imp exp data elements
  • eno chk chk zdeenosan
  • ename chk zdeenamesan
  • deptno chk zdedeptnosan

  • click on included search helps

  • ZENOSANESHLP
  • ZENAMESANESHLP
  • ZDEPTNOSANESHLP

  • click on paramater assignments
  • click on yes
  • click on proposal
  • click on copy

  • save-check-activate

191 of 261

Execute>collective search..

192 of 261

LOCK OBJECTS: SIMULTANEOUSLY MORE THEN ONE USER WANTS TO ACCESS THE SAME INFORMATION .AT THE SAME POINT OF TIME ONLY ONE USER IS GIVEN ACCESS AND OTHER USERS ARE LOCKED WITH THE HELP OF LOCK OBJECTS�

  • naming convention for lock objects:

  • lock object: ey_____________________
  • ez_____________________
  • the abap program we invoke the lock objects using function modules

  • ENQUEUE_<LOCK OBJECT NAME> : TO INVOKE THE LOCK OBJECT

  • DEQUEUE_<LOCK OBJECT NAME> : TO RELEASE THE LOCK OBJECT

  • THERE ARE 3 TYPES OF LOCK MODES

  • 1.SHARED LOCK : ALL THE OPERATIONS ARE ALLOWED ONLY THE OPERATION ACCESSES CURRENTLY BY THE USER IS LOCKED.

  • EX: 1000 UPDATE RECORD
  • DISPLAY UPDATE DELETE INSERT
  • ALLOWED 1000 REC WILL BE LOCKED ALLOWED ALLOWED
  • OTHER RECORDS CAN BE UPDATED

  • 2.cumulative lock: does not allow the current operation to any other users.it will lock the operation currently performed
  • by the user

  • EX: 1000 UPDATE RECORD
  • DISPLAY UPDATE DELETE INSERT
  • ALLOWED be LOCKED ALLOWED ALLOWED

  • 3.exclusive lock : all the operations are locked on the table and users cannot access unless lock object is released.
  • EX: 1000 UPDATE RECORD
  • DISPLAY UPDATE DELETE INSERT
  • locked be LOCKED locked locked

193 of 261

creation of lock objects�

  • lock object: eyenosan create

  • short desc: lock object

  • table: zempsan

  • lock mode: write lock (shared lock)

  • save-check-activate

194 of 261

Se38>calling lock eyenosan

  • REPORT ZSANCALLLOCKOBJ.
  • tables: zempsan.

  • data: ITAB LIKE ZEMPSAN OCCURS 0 WITH HEADER LINE.

  • SELECT * FROM ZEMPSAN INTO TABLE ITAB WHERE ENO = '1000'.

  • *CLICK ON PATTERN BUTTON
  • CALL FUNCTION 'ENQUEUE_EYENOSAN'
  • EXPORTING
  • * MODE_ZEMPSAN = 'E'
  • ENO = ITAB-ENO
  • * X_ENO = ' '
  • * _SCOPE = '2'
  • * _WAIT = ' '
  • * _COLLECT = ' '
  • * EXCEPTIONS
  • * FOREIGN_LOCK = 1
  • * SYSTEM_FAILURE = 2
  • * OTHERS = 3
  • .
  • .

  • IF SY-SUBRC <> 0.
  • * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  • * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  • ENDIF.

  • MESSAGE I333(444) WITH 'TABLE ENTRY IS LOCKED AT PRESENT'.

  • *CLICK ON PATTERN BUTTON
  • CALL FUNCTION 'DEQUEUE_EYENOSAN'
  • EXPORTING
  • * MODE_ZEMPSAN = 'E'
  • ENO = ITAB-ENO
  • * X_ENO = ' '
  • * _SCOPE = '3'
  • * _SYNCHRON = ' '
  • * _COLLECT = ' '

195 of 261

Save check activate-test.

196 of 261

See table is locked.

197 of 261

Views:�views are used to display data from multiple tables��it is created for read-only purpose (display)�

  • projection view:

  • =====================================================

  • go to t-code se11: data dictionary

  • select option view: zsanprjv create

  • select option : projection view

  • click on copy

  • short desc: my projection view

  • basis table: sflight

  • click on table fields button

  • select fields: carrid, connid, fldate, price and click on copy

  • save-check-activate

  • click on contents button to view the contents

4 types of views

1.projection view: single table selected fields are displayed

2.database view: multiple tables information is displayed and it performs inner join of the tables

3.maintenance view : multiple tables information is displayed and it performs left outer

join of the tables

4.help view: it is created for help purpose.

198 of 261

199 of 261

200 of 261

Click on contents

201 of 261

execute

202 of 261

database view

  • kna1-kunnr vbak-kunnr (check and click on copy)

  • click on view fields

  • select table fields

  • click on kna1 and click on choose
  • select the fields: kunnr, name1, land1, ort01 and click on copy

  • click on table fields
  • choose vbak and
  • select fields: vbeln, vbtyp, aedata, netwr and click on copy

  • save-check-activate

  • click on contents to view the contents

go to se11: data dictionary

select the option view: zsandbv create

select the option database view and click on copy

short desc: my database view

tables

kna1

vbak

place the cursor on vbak and click on relationships button

203 of 261

204 of 261

205 of 261

save-check-activate��click on contents to view the contents�

206 of 261

result

207 of 261

208 of 261

maitenance view

  • maitenance view requires maintenance modules
  • that is table maintenance. it is done by database administrators

  • example maitenance view

  • help view : requires help processor then only it will display help information
  • help view h_z____

  • h_z_____

209 of 261

REPORTING:DATA IN A PRESENTABLE FORM IS KNOWN AS REPORT.��ABAP PROGRAMS ARE KNOWS AS REPORTS.

  • TYPES OF REPORTS

  • 1.CLASSICAL REPORT

  • 2.INTERACTIVE REPORT

  • 3.SAP QUARY REPORT

  • 4.LOGICAL DATABASE REPORT

  • 5.ALV (SAP

EVENTS : SEQUENCE OF STEPS THAT ARE TRIGGERED IN PARTICULAR POSITION/PLACE/TIME.

EVENTS ARE DEFINED IN CAPITALS ONLY.

VALIDATIONS : CONDITIONS BASED ON WHICH REPORT IS BEING EXECUTED

210 of 261

�1.CLASSICAL REPORT:�IT IS CONSIDERED AS DRAFT(NOT FORMATTED).�IT DISPLAYS DATA FROM MULTIPLE TABLES.�

  • 2.LIST-PROCESSING EVENTS:
  • 1.TOP-OF-PAGE

  • IT IS USED FOR DISPLAYING COMPANY NAME, COL.HEADINGS, PAGE NOS, REPORT HEADINGS, HEADER INFORMATION ETC.,
  • IT IS COMMON FOR ALL THE PAGES IN THE REPORT.
  • WHEN EVER THE FIRST 'WRITE' STATEMENT IS USED IN THE REPORT IT BECOMES TOP-OF-PAGE.
  • IF THERE IS NO 'WRITE' STATEMENT IN THE REPORT OR 'TOP-OF-PAGE' STATEMENT USED IN THE REPORT, IT DOES NOT TRIGGERED THE EVENT.

  • EX: TOP-OF-PAGE.
  • WRITE:/ 'ABC COMPANY LIMITED' COLOR 4.
  • ULINE.
  • WRITE:/ 'CUSTOMER WISE SALES REPORT' COLOR 4.
  • ULINE.

  • END-OF-PAGE: IT IS USED FOR DISPLAYING PAGE NOS, PAGE TOTALS, FOOTER INFORMATION ETC.,

  • EX: END-OF-PAGE.
  • WRITE:/ 'PAGE-NO : ', SY-PAGNO.

EVENTS:

1.STANDARD EVENTS:

1.INITIALIZATION: IT IS USED TO GIVE DEFAULT VALUES/ INITIAL VALUES TO THE REPORT.

2.AT SELECTION-SCREEN.

3.AT SELECTION-SCREEN ON <FIELD NAME> : ARE USED FOR WRITING VALIDATIONS FOR THE REPORT.

4.START-OF-SELECTION. : START OF THE BUSSINES LOGIC

5.END-OF-SELECTION : TO END THE BUSSINES LOGIC

211 of 261

Definitions..

  • 2. AT NEW <FIELD NAME>.
  • <STMT BLOCK>.
  • ENDAT.

  • IT IS USED TO AVOID REPITION OF SAME FIELD NAME FOR EVERY RECORD IN THE REPORT

  • 3.AT END OF <FIELD NAME>.
  • <STMT BLOCK>.
  • ENDAT.

  • IT IS USED TO DISPLAY GROSS TOTALS

  • 4.AT LAST.
  • <STMT BLOCK>.
  • ENDAT.

  • IT IS USED TO DISPLAY GRAND TOTALS

LINE-COUNT 25(4) : LINE COUNT IS GOING TO SPECIFY THE NUMBER OF LINES USED IN THE REPORT

IT DISPLAYS 25 LINES OUT OF WHICH 4 LINES ARE RESERVED FOR FOOTER INFORMATION

LINE-SIZE 120: IT DISPLAYS NO.OF CHARACTERS PER LINE OF THE REPORT, INCLUDING SPACES. (270 PER SCREEN)

3.CONTROL BREAK EVENTS (LOOP AT ITAB...ENDLOOP)

THERE ARE 4 CONTROL BREAK STATEMENTS

1.AT FIRST.

<STMT BLOCK>.

ENDAT.

IT WILL DISPLAY COL.HEADINGS

212 of 261

Se38>zsanclassical

213 of 261

2.DRILL-DOWN REPORT��INTERACTIVE REPORT

  • OTSPOT ON : TO DISPLAY HAND ICON AS MOUSE POINTER. (HYPERLINKS)

  • ===============================================

  • HIDE <FIELD NAME>. IT IS PASSING THE INPUT VALUE TO THE NEXT REPORT IN THE INTERACTIVE REPORT.

  • ===================================================

  • EVENTS:

  • AT LINE-SELECTION : IT IS EXECUTED WHEN USER CLICK ON ANY LINE OF THE REPORT.

  • AT PF<KEY> : AT THE PRESS OF FUNCTION KEY IT WILL EXECUTE THIS EVENT

  • AT USER-COMMAND : WHEN USER GIVES A COMMAND IN THE COMMAND PROMPT.

  • ================================================================

  • AT LINE-SELECTION: USER WANTS TO CLICK ON THE LINE OF THE REPORT

  • *interactive report using AT LINE-SELECTION

  • WRITE:/ 'WE ARE IN BASIC LIST', SY-LSIND.

  • START-OF-SELECTION.

  • AT LINE-SELECTION.

  • WRITE:/ 'WE ARE IN SECONDARY LIST NO:', SY-LSIND.

  • END-OF-SELECTION.

  • ================================================================

WE ARE INTERACTING WITH RUN-TIME VALUES IN THIS REPORT.

THE FIRST REPORT GENERATED IS KNOWN AS BASIC LIST.

THE SECOND REPORT GENERATED FROM BASIC LIST IS KNOWN AS SECONDARY LIST NO 1.

IT WILL DISPLAY INTERACTIVELY IN DRILL-DOWN MANNER UPTO MAX SECONDARY LIST NO 20.

SY-LSIND : SYSTEM LIST INDEX: IT IS USED TO NAVIGATE IN THE INTERACTIVE REPORT

SY-LSIND = 0 (WE ARE IN BASIC LIST)

SY-LSIND = 1 (SECONDARY LIST NO 1)

SY-LSIND = 2 (SECONDARY LIST NO 2)

....

SY-LSIND = 20 (MAX LIST AVAILABLE)

214 of 261

*interactive report using AT LINE-SELECTION:�se38>zsaninteractive>executable�

  • *interactive report using AT LINE-SELECTION

  • WRITE:/ 'WE ARE IN BASIC LIST', SY-LSIND.

  • START-OF-SELECTION.

  • AT LINE-SELECTION.

  • IF SY-LSIND = 1.
  • WRITE:/ 'WE ARE IN SECONDAR LIST NO 1'.
  • ELSEIF SY-LSIND = 2.
  • WRITE:/ 'WE ARE IN SECONDARY LIST NO 2'.
  • ELSEIF SY-LSIND = 20.
  • SY-LSIND = 0.
  • ELSE.
  • WRITE:/ 'WE ARE IN SECONDARY LIST NO:', SY-LSIND.
  • ENDIF.
  • END-OF-SELECTION.

215 of 261

*interactive report using AT LINE-SELECTION�

  • *interactive report using AT LINE-SELECTION

  • WRITE:/ 'WE ARE IN BASIC LIST', SY-LSIND.

  • START-OF-SELECTION.

  • AT LINE-SELECTION.
  • CASE SY-LSIND.
  • WHEN 1.
  • WRITE:/ 'WE ARE IN SECONDAR LIST NO 1'.
  • WHEN 2.
  • WRITE:/ 'WE ARE IN SECONDARY LIST NO 2'.
  • WHEN 20.
  • SY-LSIND = 0.
  • WHEN OTHERS.
  • WRITE:/ 'WE ARE IN SECONDARY LIST NO:', SY-LSIND.
  • ENDCASE.
  • END-OF-SELECTION.

216 of 261

*INTERACTIVE REPORT USING AT LINE-SELECTION�

  • *INTERACTIVE REPORT USING AT LINE-SELECTION
  • tables: lfa1, ekko, ekpo.

  • WRITE:/ 'VENDOR INFORMATION REPORT' COLOR 4.
  • SELECT * FROM LFA1.
  • WRITE:/ LFA1-LIFNR HOTSPOT ON,20 LFA1-NAME1 HOTSPOT ON, 50 LFA1-LAND1 HOTSPOT ON.
  • HIDE LFA1-LIFNR.
  • ENDSELECT.

  • START-OF-SELECTION.

  • AT LINE-SELECTION.

  • CASE SY-LSIND.

  • WHEN 1.

  • WRITE:/ 'INVOICE INFORMATION' COLOR 5.
  • ULINE.
  • SELECT * FROM EKKO WHERE LIFNR = LFA1-LIFNR.
  • WRITE:/ EKKO-EBELN HOTSPOT ON, 20 EKKO-AEDAT HOTSPOT ON.
  • HIDE EKKO-EBELN.
  • ENDSELECT.

  • WHEN 2.
  • WRITE:/ 'ITEM DETAILS INFORMATION' COLOR 6.
  • ULINE.
  • SELECT * FROM EKPO WHERE EBELN = EKKO-EBELN.
  • WRITE:/ EKPO-EBELP, 30 EKPO-MATNR.
  • ENDSELECT.

  • ENDCASE.

  • END-OF-SELECTIO

217 of 261

218 of 261

Click on vendor information

219 of 261

AT PF<KEY>: AT PRESS OF FUNCTION KEY IT WILL EXECUTE THE REPORT�

  • *at pf<key> at press of function key

  • TABLES: KNA1, LFA1, MARA.

  • WRITE:/ 'F5: CUSTOMER INFO, F6 : VENDOR INFO, F7: MATERIAL INFO, F13: EXIT'.

  • *F13: SHIFT + F1.

  • START-OF-SELECTION.

  • AT PF5.
  • WRITE:/ 'CUSTOMER INFORMATION' COLOR 4.
  • ULINE.
  • SELECT * FROM KNA1.
  • WRITE:/ KNA1-KUNNR, KNA1-NAME1, KNA1-LAND1.
  • ENDSELECT.

  • AT PF6.
  • WRITE:/ 'VENDOR INFORMATION' COLOR 5.
  • ULINE.
  • SELECT * FROM LFA1.
  • WRITE:/ LFA1-LIFNR, LFA1-NAME1, LFA1-LAND1.
  • ENDSELECT.

  • AT PF7.
  • WRITE:/ 'MATERIAL INFORMATION' COLOR 6.
  • ULINE.
  • SELECT * FROM MARA.
  • WRITE:/ MARA-MATNR.
  • ENDSELECT.

  • AT PF13.
  • LEAVE PROGRAM.

  • END-OF-SELECTION.

220 of 261

Se38>write prog>save check act>test

221 of 261

Click on f4: cust info displayed

222 of 261

AT USER-COMMAND: USER WANTS TO EXECUTE THE COMMAND IN COMMAND PROMPT

  • WHEN 'C01'.
  • WRITE:/ 'CUSTOMER INFORMATION' COLOR 4.
  • ULINE.
  • SELECT * FROM KNA1.
  • WRITE:/ KNA1-KUNNR, KNA1-NAME1, KNA1-LAND1.
  • ENDSELECT.
  • WHEN 'V01'.
  • WRITE:/ 'VENDOR INFORMATION' COLOR 5.
  • ULINE.
  • SELECT * FROM LFA1.
  • WRITE:/ LFA1-LIFNR, LFA1-NAME1, LFA1-LAND1.
  • ENDSELECT.

  • WHEN 'M01'.
  • WRITE:/ 'MATERIAL INFORMATION' COLOR 6.
  • ULINE.
  • SELECT * FROM MARA.
  • WRITE:/ MARA-MATNR.
  • ENDSELECT.

  • WHEN 'EXI'.
  • LEAVE PROGRAM.

  • WHEN OTHERS.
  • WRITE:/ 'INVALID COMMAND EXECUTED'.

  • ENDCASE.

  • END-OF-SELECTION.

AT USER-COMMAND: USER WANTS TO EXECUTE THE COMMAND IN COMMAND PROMPT

SY-UCOMM: SYSTEM USER COMMAND IS A VARIABLE USED TO CAPTURE THE COMMAND GIVEN BY THE USER.

*at USER-COMMAND AT THE COMMAND PROMPT

TABLES: KNA1, LFA1, MARA.

WRITE:/ 'C01: CUSTOMER INFO, V01 : VENDOR INFO, M01: MATERIAL INFO, EXI: EXIT'.

START-OF-SELECTION.

AT USER-COMMAND.

CASE SY-UCOMM.

223 of 261

Save check activate test

224 of 261

C01>enter

225 of 261

menu painter t-code se41 �t is used to design menu options for the abap reports�

  • go to t-code se41

  • program : ZSANINTERACTIVE

  • status: menu1 create

  • short text : my menu continue

  • 1.menu bar :
  • click on (+) icon
  • display standards
  • san menu1 san menu2 san menu3
  • d.clic
  • code text code text code text
  • C01 CUSTOMER INFO V01 VENDOR INFO M01 MATERIAL INFO
  • EXI EXIT

  • CLOSE THE MENU BAR (-)

226 of 261

status: menu1 create��short text : my menu continue�

227 of 261

1.menu bar :� click on (+) icon� display standards� san menu1 san menu2 san menu3� d.clic� code text code text code text� C01 CUSTOMER INFO V01 VENDOR INFO M01 MATERIAL INFO� EXI EXIT��

228 of 261

2.CLICK ON APPLICATION TOOL BAR ��ITEMS (1-7) C01 V01 M01 EXI� F5 F6 F7 F9 (D.CLICK ATTACH FUNCTION KEYS)�� ICON NAME : SELECT FROM THE LIST OF ICONS� ICON TEXT : CUSTOMER INFO��SIMILARY ATTACH ICONS FOR ALL THE BUTTONS��CLOSE THE APPLICATION TOOLBAR (-)�

229 of 261

CHOOSE AN ICON NAME AND TEXT FOR EACH ENTRY

230 of 261

3.CLICK ON FUNCTION KEYS��STANDARD TOOL BAR�SAVE BACK EXIT��SAVE-CHECK-ACTIVATE MENU PAINTER�

231 of 261

STEP 2: CALLING MENU PAINTER IN THE ABAP REPORT PROGRAM��GO TO ZSANINTERACTIVE: WRITE THESE TWO LINES AS GIVEN>�*INVOKE THE MENU PAINTER>SET PF-STATUS 'MENU1'.>START-OF-SELECTION.��SAVE-CHECK-ACTIVATE-TEST�

232 of 261

SEE HERE..SAVE CHECK ACT TEST.

233 of 261

TYPE C01, PRESS ENTER

234 of 261

Same result

235 of 261

3.SAP QUARY REPORT

  • T-CODE :

  • SQ03: TO CREATE USER GROUP

  • SQ02 : TO CREATE INFOSET
  • SQ01 : TO CREATE QUARY REPORT

THIS IS USED BY FUNCTIONAL PEOPLE.

IT GENERATES THE REPORT IN DIFFERENT FORMATS SUCH AS

ALV (SAP LIST VIEWER)

WORD DOCUMENT

EXCEL SHEET

TABLE

ABC ANALYSIS

GRAPHIC

236 of 261

STEP1: GO TO T-CODE SQ03: TO CREATE USER GROUP�

USER GROUP CONTAINS LIST OF USERS WHO WANT TO SHARE THE REPORT.

user group ; zshefusrgp create

short text: my user group

save as local object

237 of 261

STEP 2: GO TO T-CODE SQ02: TO CREATE INFOSET�

INFOSET CONTAINS INFORMATION TO BE DISPLAYED IN THE REPORT

INFOSET: ZSHEFINFSET CREATE

NAME: MY INFOSET

SELECT OPTION : TABLE JOIN USING BASIS TABLE : LFA1

CLICK ON CONTINUE

CLICK ON INSERT TABLE BUTTON

238 of 261

TABLE: EKKO AND CONTINUE�

DRAG AND THE DROP TO THE LIFNR(OF EKKO TABLE)

COMMON FIELD TO JOIN LFA1 AND EKKO IS LIFNR

239 of 261

CLICK ON INSERT TABLE BUTTON: TABLE: EKPO AND CLICK ON CONTINUE�

RIGHT CLICK DELETE THE LINK PERTAINING TO EBELP FIELD

COMMON FIELD TO JOIN EKKO AND EKPO TABLES IS EBELN

PRESS BACK BUTTON

CLICK ON INCLUDE ALL TABLE FIELDS AND CONTINUE

240 of 261

241 of 261

SAVE-CHECK-GENERATE THE INFOSET�

242 of 261

STEP 3: ATTACH USER GROUP TO INFOSET��GO TO T-CODE SQ03

USERGROUP: ZSHEFUSRGP

INFOSET: ZSHEFINFSET

CLICK ON ASSIGN USERS TO INFOSET (BUTTON)

SAPUSER (GIVE UPTO 17,000 USERS TO SHARE YOUR REPORT)

CLICK ON ASSIGN INFOSET BUTTON

GO TO LAST PAGE

CHECK THE INFOSET : ZSHEFINFSET

SAVE

PRESS BACK

SAVE

PRESS BACK

243 of 261

CLICK ON ASSIGN INFOSET BUTTON>GO TO LAST PAGE> CHECK THE INFOSET : ZSHEFINFSET>SAVE >PRESS BACK��SAVE�PRESS BACK�

244 of 261

STEP 4: GO TO T-CODE SQ01: TO CREATE QUARY REPORT�

  • SELECT THE FIELDS FROM EACH OF THE TABLES
  • SELECT THE FIELDS FOR SELECTION-FIELDS FROM EACH OF THE TABLES (SELECT-OPTIONS)

  • CLICK ON SAVE

  • CLICK ON TEST BUTTON

  • CLICK ON CONTINUE

  • CLICK ON EXECUTE

  • IT WILL DISPLAY QUARY REPORT

QUERY : ZSHEFQRY CREATE

SELECT ZSHEFINFSET AND CONTINUE

TITLE: INVOICE INFO

SAP LIST VIEWER (DEFAULT OPTION)

CLICK ON BASIC LIST BUTTON

245 of 261

TITLE: INVOICE INFO��SAP LIST VIEWER (DEFAULT OPTION

246 of 261

CLICK ON BASIC LIST BUTTON�

247 of 261

SELECT THE FIELDS FROM EACH OF THE TABLES�SELECT THE FIELDS FOR SELECTION-FIELDS FROM EACH OF THE TABLES (SELECT-OPTIONS)�

248 of 261

CLICK ON SAVE > CLICK ON TEST BUTTON > CLICK ON CONTINUE��CLICK ON EXECUTE >IT WILL DISPLAY QUARY REPORT

249 of 261

Exexute..invoice info sap query generated.

250 of 261

Assignment..

  • CREATE A SAP QUARY REPORT
  • USING TABLES

  • KNA1: CUSTOMER TABLE

  • KUNNR ,NAME1, LAND1 , ORT01

  • VBAK: SALES TABLES

  • VBELN, VBTYP, NETWR, KUNNR

  • VBAP : ITEM TABLE

  • POSNR , MATNR, VBELN

251 of 261

�4.LOGICAL DATABASE REPORT (LDB)

t-code se36

logical database is used to reduce the seek time of database.

it is faster access when compared to direct access of tables.

step1 : creation of ldb

go to t-code se36; logical database

logical database: zshefldb create

short text: myldb

click on create

save as local object

252 of 261

name of the root node: lfa1

text: my root node

database table: lfa1

create

253 of 261

right click on lfa1 and insert nodes

node name: ekko

text : my second node

heirarchially under: lfa1

database table: ekko

create

254 of 261

right click on ekko and insert nodes

node name: ekpo

text: my third node

heirarchially under: ekko

database table: ekpo

Create

save the logical database

255 of 261

step 2: click on selections button (to create select-options)�

click on yes

check all the tables for free selections

lfa1, ekko , ekpo

check all the tables for field selection

lfa1, ekko, ekpo

click on transfer

SELECT-OPTIONS : vno FOR LFA1-LIFNR. "uncomment and give vno

SELECT-OPTIONS : pono FOR EKKO-EBELN. "uncomment and give pono

save

check(main program is not created)

256 of 261

go to se38: abap editor

program: zshefldb create

title: calling program for ldb

type: executable program

logical database: zshefldb

save as local object

save-check-activate

go to t-code se36

ldb zshefldb change

click on selections button

save-check-activate ldb

press back

257 of 261

go to t-code se36�

ldb zshefldb change

click on selections button

save-check-activate ldb

press back

258 of 261

step 3: creating quaries for the ldb�

click on the source code button

yes

include DBZSHEFLDBNXXX . " all system routines

d.click on it

include DBZSHEFLDBN001 . " Node LFA1

d.click on it

-

259 of 261

select * from lfa1 where lifnr in vno.

* SELECT (LFA1_FIELDS-FIELDS) INTO CORRESPONDING FIELDS OF

* LFA1 / TABLE ? " (choose one of them)

* FROM LFA1

* WHERE LIFNR IN vno

* AND (LFA1_WHERE-WHERE_TAB) ORDER BY PRIMARY KEY.

PUT LFA1.

ENDSELECT. "uncomment endselect

save-check-activate

PRESS BACK.

260 of 261

include DBZSHEFLDBN003 . " Node EKPO� d.click on it�

select * from ekpo where ebeln = ekko-ebeln.

* SELECT (EKPO_FIELDS-FIELDS) INTO CORRESPONDING FIELDS OF

* EKPO / TABLE ? " (choose one of them)

* FROM EKPO

* WHERE EBELN = EKKO-EBELN

* AND EBELP = ?

* AND (EKPO_WHERE-WHERE_TAB) ORDER BY PRIMARY KEY.

PUT EKPO.

ENDSELECT. "uncomment

save-check-activate

press back

press back

save-check-activate

press back

save-check-activate

save the ldb

261 of 261

step 4: abap editor program for calling ldb�

REPORT ZSHEFLDB.

tables: lfa1, ekko, ekpo.

start-of-selection.

GET LFA1.

WRITE:/ LFA1-LIFNR, 20 LFA1-NAME1, 50 LFA1-LAND1.

GET EKKO.

WRITE:/60 EKKO-EBELN, 75 EKKO-AEDAT.

GET EKPO.

WRITE:/85 EKPO-EBELP, 95 EKPO-MATNR.

END-OF-SELECTION.

SAVE-CHECK-ACTIVATE-TEST