Você está na página 1de 261

SAP ABAP TRAINING MODULE

SAP ABAP TRAINING


ABAP : ADVANCED BUSSINESS APPLICATION PROGRAMMING
Santanu Boral
Santanu.dec@gmail.com

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)

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)

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-

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

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

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.

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

LEARNING VERSION
SAP IDES ECC 6.0
ENTERPRISE CENTRAL COMPONENT

3.NAMING CONVENTION FOR


ABAP PROGRAMS

4.TRANSACTION CODES (TCODES)

PROGRAM
Z______________________

Y______________________

RE USED FOR NAVIGATION


PURPOSE. IT IS USED TO NAVIGATE
TO A PARTICULAR APPLICATION IN
SAP

A-X : SAP SYSTEM


PROGRAMS
T : TESTING PROGRAMS
Z,Y : USER-DEFINED
PROGRAMS

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

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)

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

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

Output:

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.

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

Prog on data types:


Prog: 1

Prog: 2/move

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

name(30) type c.

*n,c data types


data : numb(4) type n,

name(30) type c.

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

move '1000' to numb.


move 'ravi krishna' to
name.

write:/ numb, name.

write:/ numb, name.

result: 1000 ravi krishna

result: 1000 ravi krishna

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

prg for i data type

*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

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.

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:beginofzsan_str1,
no(4)typen,
name(30)typec,
city(30)typec,
endofzsan_str1.
types:beginofzsan_cust,
cno(4)typen,
cname(30)typec,
endofzsan_cust.

types:beginofzsan_vend,
vno(4)typen,
vname(30)typec,
endofzsan_vend
Save>check>activate

Se11>type
group>zsan>create

short text: my type-pools


save as local object

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

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.

LOOPS:
1.BRANCHING LOOPS
1.if...else...endif.

2.if...elseif...elseif...else...endi
f

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

Se38>zsantanu1>create

Check results..

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.

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

Next..

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.

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

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

/RESULT???:

*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

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

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

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.

STRINGS
----------> left
abcdefghij
<---------- right

OPERATIONS:

*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'.

1.SHIFT
2.STRLEN
= str4.
3.SEARCH str5
shift str5 up to str6.
write:/ str5.
"efghij
4.SPLIT
str5 = str4.
5.CONCATENATE
shift str5 up to str6 left. "efghi9j
write:/ str5.
6.MOVE
= str4.
7.REPLACE str5
shift str5 up to str6 right. "abcdef
write:/ str5.
8.TRANSLATE
9.OVERLAY str5 = str4.
shift str5 up to str6 circular. "efghijabcd
10.CONDENSE
write:/ str5.

shift to number of places

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

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

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.

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

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

*faq: difference between replace and translate

overlay : overlay one string with the other string,


behind the string is visible in blank spaces

*prg for translate and replace


DATA: STR8(60) TYPE C VALUE 'dear brothers &
sisters & uncles & aunties',

str9 like str8.

acegi
ABCDEFGHIJ
aBcDeFgHiJ overlay

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

Overlay

Search..
search: to locate or find
the string
sy-subrc = 0 true/ yes
successful
sy-subrc = 4 false/ no unsuccessful
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

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


(*cosmatic error : unknown)

0 0

Search..output..

ADVANTAGES:
MODULARIZATION
TECHNIQUES

1.INCLUDE
2.SUBROUTINES
3.FUNCTION MODULES
4.MACROS

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.MACROS
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:

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

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

1.DEFINE MACRO:
DEFINE <MACRO NAME>.
<STMT BLOCK>.
END-OF-DEFINITION.

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

2.CALL A MACRO:
<MACRO NAME>.

NOTE: MACROS ARE ABSOLATE IN LATEST


VERSION SAP 6.0

DO 5 TIMES.
EXAMPLE.
ENDDO.

*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
CALC
CALC
CALC

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

A
A
A
A

+ B.
- B.
/ B.
* B.

TWO TYPES OF SUBROUTINES


2.SUBROUTINES
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].

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.

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.

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>cha
nge

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

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

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
20

INSUBR AFTSUBR
20
15

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

Save-check-activate the
following..

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

FUNCTION MODULE RETURNS


3.FUNCTION
SOME RESULT ALLWAYS.

MODULES
ADVANTAGES:

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

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.

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

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

CREATION OF
FUNCTION MODULE
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

go to t-code se80: object


navigator
select function group:
zsantanu1fgp <enter.
create object...yes
short text my function
group

ZSHANFGP {FM1, FM2, FM3...}


function group creation is
mandatory.

save as zsantanu1package

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

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

normal function module (default) client dependent

allz all zeroes

remote enabled function module (client


independent) : rfc client programs

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


module

2.import: input values into the function module


a type i
b type i

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

3.export: output values from the function module


c type i

save-check-activate-test

Se37>function
builder>zshanfmadd1>create

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

exceptions: error handling in the function module


allz all zeroes

source code: to write the bussiness logic of the


function module

Save check act.-test

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

Se38>zshancalladdfm1

Write prog..click on pattern button..

Then select fm zshan..

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

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

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

Save the include prog

step 2: go to se38:
abap editor
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

STEP 3: GO TO
ZSHANINCLUDE PROGRAM
SAVE-CHECK-ACTIVATE
===============
=========
STEP 4: GO TO
ZSHANCALLINCLUDE
PROGRAM CHANGE
SAVE-CHECK-ACTIVATETEST

STEP 3: GO TO ZSHANINCLUDE PROGRAM


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

tables
TABLES IS A KEYWORD TO ACCESS ANY
DATABASE TABLE.
KNA1: CUSTOMER INFORMATION

*IST DIRECT ACCESS OF DATABASE TABLE


40%
TABLES: KNA1.
SELECT-OPTIONS: CNO FOR KNA1-KUNNR.
SELECT * FROM KNA1 WHERE KUNNR IN CNO.

KUNNR : CUSTOMER NUMBER


NAME1 : CUSTOMER NAME
LAND1 : COUNTRY
========================
=========

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


KNA1-LAND1.

ENDSELECT.
SKIP 4.

LFA1: VENDOR INFORMATION

ULINE.

LIFNR : VENDOR NUMBER


NAME1: VENDOR NAME
LAND1 : COUNTRY

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


ULINE.

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

Save check activate-test.

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

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

*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 ITABLAND1.
ENDLOOP.
SKIP 4.
ULINE.
WRITE:/ 'NO OF RECORDS FETCHED', SY-DBCNT.
ULINE.

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.

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

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

3 types of internal tables

no memory is reserved for


internal tables.

2.sorted internal table: it is based


on sort command ( asscending/
descending order) on any field of
table, the internal table is
generated.

it is used for faster access of


database tables information
in report programs.
it is used for display purpose
only.

1.standard internal table : it is


based on primary key of the 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

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

1.internal table with


header line

2.internal table without


header line

header line (1 record is


stored in header line
allways)
3
c 7000

body (all the records


are stored in the body)
1
a 9000
2
b 8000
3
c 7000

body
1
a 9000
2
b 8000

work area is to be
created for this syntax

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

*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, itabcity.

endloop.

SYNTAX FOR INTERNAL TABLES


1.DECLARATION OF INTERNAL TABLES

SYNTAX FOR INTERNAL TABLES

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

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)

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.

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 SFLIGHTCARRID,

CONNID LIKE SFLIGHTCONNID,

FLDATE LIKE SFLIGHTFLDATE,

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.

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

3. SELECT * FROM SFLIGHT INTO ITAB.


APPEND ITAB.
ENDSELECT.

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

4. SELECT * FROM SFLIGHT INTO TABLE ITAB. (AVOID APPEND


ITAB AND ENDSELECT STATEMENTS)

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

5. SELECT * FROM SFLIGHT INTO ITAB.


MOVE-CORRESPONDING SFLIGHT TO ITAB.
APPEND ITAB.
ENDSELECT.

SFLIGHT
CARRID
CONNID
FLDATE

ITAB
CARRID
CONNID
FLDATE

6.SELECT * FROM SFLIGHT INTO ITAB.


MOVE SFLIGHT TO ITAB.
APPEND ITAB.
ENDSELECT.
SFLIGHT ITAB
CARRID CID
CONNID COD
FLDATE FLD

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

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[].

5.SORTING OF INTERNAL
TABLES
1.SORT ITAB. {IT IS USED
ONLY FOR NON-NUMERIC
SORTING CNAME, CITY}

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.

2.SORT ITAB BY CARRID


ASSCENDING.
SORT ITAB BY CARRID
CONNID DESCENDING. {IT
IS USED FOR NUMERIC/ NONNUMERIC SORTING}

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

PROGRAMS: NESTED SELECT ON INTERNAL


TABLES

*program using sort on internal tables


Se38>zsaninttables>create>executable>sav
e

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.

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

Save check activate test..sales


displayed in descending order..

*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, ITABPSALES, ITAB-NSALES.

ENDLOOP.

Total is added and computed in the


collect statement..

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.

*
*
*
*
*
*
*

*
*
*
**
WITH
*
*
*

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
OUT REFRESH
ENDDO.
FREE ITAB.

Check results and analyze..

Without refresh itab..see


results.

REPORTZSANINTTABLES.
*REFRESH,FREEITAB
DATA:BEGINOFITABOCCURS3,
INDLIKESY-INDEX,
ENDOFITAB,
TNDLIKESY-INDEX.
DO3TIMES.
TND=SY-INDEX.
DO3TIMES.
ITAB-IND=TND*SY-INDEX.
APPENDITAB.
ENDDO.
WRITE:/''.
LOOPATITAB.
WRITEITAB-IND.
ENDLOOP.
"CHECKHEREWITHREFRESHANDWITHOUTREFRESH
ENDDO.
FREEITAB.

Do..end do..
REPORTZSANINTT
ABLES.
do5times.
write:/'raj'.
do3times.
write:/'hari'.
enddo.
enddo.

*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 = ITABKUNNR.

APPEND ITAB.

ENDSELECT.
ENDSELECT.
LOOP AT ITAB.

WRITE:/ ITAB-KUNNR, 20 ITAB-NAME1, 40 ITAB-LAND1, 60 ITAB-VBELN, 75 ITABVBTYP, 90 ITAB-NETWR.


ENDLOOP.

Cust no 1 to 1200: execute

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 ITABNETWR.
*
*AT LAST. "CALCULATE NET TOTAL
* SUM.
* ULINE.
* WRITE:/80 'NET TOTAL:', 95 ITAB-NETWR.
* ULINE.
* ENDAT.
* ENDLOOP.

Cust: 1 to1200: execute..

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
1
2
3
-

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
1
2
3
-

RULES: WE USE ~TILD OPERATOR TO ALIS(PET NAME) THE


FIELDS OF A TABLES
NO COMMAS, NO PERIODS IN JOIN STATEMENT

ENAME DEPTNO DNAME SAL


A
10 IT 9000
B
20 SALES 8000
C
30 PURCH 7000
40 FINANCE 50 HR
-

ENAME DEPTNO DNAME SAL


A
10 IT 9000
B
20 SALES 8000
C
30 PURCH 7000
40 FINANCE 50 HR
-

Se38>zshanjoins>create

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.

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.

Cust:1 to 1200: execute

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 ITABNETWR.
AT LAST. "CALCULATE NET TOTAL
SUM.
ULINE.
WRITE:/80 'NET TOTAL:', 95 ITAB-NETWR.
ULINE.
ENDAT.
ENDLOOP.

Save check act.test>execute

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, WACONNID.
ENDLOOP.

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)

CREATION OF TRANPARENT TABLE DATA ELEMENT WAY

STEP
STEP
STEP
STEP
STEP

1:
2:
3:
4:
5:

CREATE
CREATE
CREATE
CREATE
CREATE

DOMAIN
DATA ELEMENTS
FIELDS
TECH.SETTINGS
TABLE

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

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

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

Se11>zdoenosan>employe
e no

similary create all the


domains>employee name

Dept no

Employee salary

STEP 2: CREATE DATA ELEMENTS

SELECT THE
OPTION DATA
TYPE:
ZDEENOSAN
CREATE

SELECT DATA
ELEMENT
CONTINUE

SHORT DESC:
EMPLOYEE
NUMBER

DOMAIN:
ZDOENOSAN1

SELECT DATA ELEMENT CONTINUE


SHORT DESC: EMPLOYEE NUMBER
DOMAIN: ZDOENOSAN

CLICK ON FIELD LABEL


SHORT : ENO
MEDIUM : ENO
LONG : EMPLOYEE NUMBER
HEADING: EMPLOYEE NUMBER
SAVE-CHECK-ACTIVATE

SIMILARY CREATE ALL THE DATA ELEMENTS:


ZDEENAMESAN1

Contd..

Dept no

Salary..

STEP 3: CREATE FIELDS:se11>data dictionary>


database table>zempsan1>create

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

Contd..fields add

fields
data elements
eno pk uk zdeenosan
ename
zdeenamesan
deptno
zdedeptnosan
sal
zdesalsan
SAVE AS CLIENT SPECIFIC
TABLE CONTINUE

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

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

SIMILARLY CREATE ZDEPTSAN1 TABLE:


specifications..see slide 145

DATABASE TABLE
ZDEPTSAN1

FIELDS
LEVEL

DEPTNO PK UK
ZDODEPTNOSAN1 NUMC 3
DEPTNO, DEPARTMENT NO
DNAME
ZDODNAME1
CHAR 30
DEPTNAME, DEPARTMENT NAME

DOMAINS

DATA ELEMENTS FIELD


ZDEDEPTNOSAN1

DEPTNO,

ZDEDNAMESAN1

DNAME,

Save check activate..the 2nd


table

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(CONNECTIN
G TABLE TO CURRENT
TABLE)
CLICK ON GENERATE
PROPOSAL BUTTON
CLICK ON COPY
SAVE-CHECK-ACTIVATE

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

Go to zemsan1
table :
utilities>create
entries

Zempsan1 table > click on contents>see the relationship


between the tables created with details information.

Execute>

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

go to t-code se11:data dictionary


database table: zshancust1 create
short desc: customer table

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.

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

Click on predefined button..

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

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

Save check activate.

step 2: create
include structure

go to se11: data dictionary


database table : zshancust
change
fields
.include

data element
zshanstr

save-check-activate the table

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

Press back> expand


structure

Click on contents button

Example: se11> kna1>view

KNA1>View the append


structure>expand

SE11>K*>F4 KEY PRESS


all customer tables are displayed

Select any table>Click on contents


button.

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

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

search help is used to locate


table and field

elemenatary search help on eno

it is created along with the


table creation

selection method: zempsan

database table: zempsan


fields data elements
eno
zdeenosan
ename
zdeenamesan
deptno zdedeptnosan

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

similarly create elementary search helps on


ename, deptno fields

Se11> search help >ZENameSANESHLP1

Se11> ZdeptnoSANESHLP1

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

on
on
on
on

paramater assignments
yes
proposal
copy

save-check-activate

Execute>collective search..

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
THERE ARE 3 TYPES OF LOCK MODES

naming convention for lock


objects:
lock object:
ey_____________________

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
ALLOWED
1000 REC WILL BE LOCKED
ALLOWED

OTHER RECORDS CAN BE UPDATED

INSERT
ALLOWED

ez_____________________
2.cumulative lock: does not allow the current
operation to any other users.it will lock the
the abap program we invoke
operation currently performed
the lock objects using function by the user
modules
ENQUEUE_<LOCK OBJECT
NAME> : TO INVOKE THE
LOCK OBJECT
DEQUEUE_<LOCK OBJECT
NAME> : TO RELEASE THE

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

creation of lock objects


lock object:
eyenosan create
short desc: lock
object
table: zempsan
lock mode: write
lock (shared lock)
save-check-activate

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

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
=''

*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 SYMSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SYMSGV3 SY-MSGV4.
ENDIF.

Save check activate-test.

See table is locked.

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

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.

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

Click on contents

execute

kna1-kunnr vbak-kunnr (check and click


on copy)

database view

click on view fields

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

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

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

result

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_____

REPORTING:
DATA IN A PRESENTABLE
FORM IS KNOWN AS
REPORT.

TYPES OF REPORTS

ABAP PROGRAMS ARE


KNOWS AS REPORTS.

1.CLASSICAL REPORT
2.INTERACTIVE REPORT

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

3.SAP QUARY REPORT


4.LOGICAL DATABASE
REPORT
5.ALV (SAP

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.

EVENTS:
1.STANDARD EVENTS:
1.INITIALIZATION: IT IS USED
TO GIVE DEFAULT VALUES/
INITIAL VALUES TO THE
REPORT.
2.AT SELECTION-SCREEN.

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

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

END-OF-PAGE: IT IS USED FOR DISPLAYING PAGE NOS,


PAGE TOTALS, FOOTER INFORMATION ETC.,

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

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

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

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

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

Se38>zsanclassical

2.DRILL-DOWN
REPORT

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


===============================================

INTERACTIVE
REPORT
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 DRILLDOWN 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)

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.

SY-LSIND = 2 (SECONDARY LIST NO 2)

AT LINE-SELECTION.

....

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

SY-LSIND = 20 (MAX LIST AVAILABLE)

END-OF-SELECTION.
====================================================
============

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

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

*INTERACTIVE REPORT USING AT LINE-SELECTION

*INTERACTIVE REPORT USING AT LINESELECTION


tables: lfa1, ekko, ekpo.
WRITE:/ 'VENDOR INFORMATION REPORT'
COLOR 4.
SELECT * FROM LFA1.
WRITE:/ LFA1-LIFNR HOTSPOT ON,20 LFA1NAME1 HOTSPOT ON, 50 LFA1-LAND1
HOTSPOT ON.
HIDE LFA1-LIFNR.
ENDSELECT.
START-OF-SELECTION.

WRITE:/ 'INVOICE INFORMATION' COLOR 5.

ULINE.

SELECT * FROM EKKO WHERE LIFNR = LFA1LIFNR.

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.

AT LINE-SELECTION.

CASE SY-LSIND.

ENDCASE.

END-OF-SELECTIO

WHEN 1.

Click on vendor information

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, LFA1LAND1.


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

WRITE:/ MARA-MATNR.
ENDSELECT.
AT PF13.
LEAVE PROGRAM.
END-OF-SELECTION.

Se38>write prog>save check


act>test

Click on f4: cust info displayed

AT USER-COMMAND: USER
WANTS TO EXECUTE THE
COMMAND IN COMMAND
PROMPT
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.

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.

Save check activate test

C01>enter

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 (-)

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

2.CLICK ON APPLICATION TOOL BAR


ITEMS (1-7) C01
F5
F6

V01
F7

M01
EXI
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 (-)

CHOOSE AN ICON NAME AND TEXT FOR EACH


ENTRY

3.CLICK ON FUNCTION KEYS


STANDARD TOOL BAR
SAVE BACK EXIT
SAVE-CHECK-ACTIVATE MENU PAINTER

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

SEE HERE..SAVE CHECK ACT


TEST.

TYPE C01, PRESS ENTER

Same result

T-CODE :
3.SAP 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

SQ03: TO CREATE USER


GROUP

SQ02 : TO CREATE INFOSET


SQ01 : TO CREATE QUARY
REPORT

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

STEP 2: GO TO TCODE 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

TABLE: EKKO AND


CONTINUE

DRAG AND THE DROP TO THE


LIFNR(OF EKKO TABLE)
COMMON FIELD TO JOIN LFA1
AND EKKO IS LIFNR

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

SAVE-CHECK-GENERATE THE INFOSET

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

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

SAVE
PRESS BACK

SELECT THE FIELDS FROM EACH OF


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

QUERY : ZSHEFQRY CREATE

CLICK ON SAVE

SELECT ZSHEFINFSET AND


CONTINUE

CLICK ON TEST BUTTON

TITLE: INVOICE INFO

CLICK ON CONTINUE

CLICK ON EXECUTE

IT WILL DISPLAY QUARY REPORT

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

SAP LIST VIEWER (DEFAULT


OPTION)
CLICK ON BASIC LIST BUTTON

TITLE: INVOICE INFO


SAP LIST VIEWER (DEFAULT OPTION

CLICK ON BASIC LIST BUTTON

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 EXECUTE

CLICK ON CONTINUE

>IT WILL DISPLAY QUARY REPORT

Exexute..invoice info sap query


generated.

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

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

name of the root node: lfa1


text: my root node
database table: lfa1
create

right click on lfa1 and insert


nodes
node name: ekko
text : my second node
heirarchially under: lfa1
database table: ekko
create

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

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 LFA1LIFNR. "uncomment and give vno


SELECT-OPTIONS : pono FOR EKKOEBELN. "uncomment and give pono
save
check(main program is not created)

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

go to t-code se36

ldb zshefldb change


click on selections button
save-check-activate ldb
press back

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

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_WHEREWHERE_TAB) ORDER BY
PRIMARY KEY.
PUT LFA1.
ENDSELECT. "uncomment
endselect
save-check-activate
PRESS BACK.

include DBZSHEFLDBN003
. " Node EKPO
d.click on it
select * from ekpo where ebeln = ekkoebeln.
* 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

step 4: abap editor


program for calling
ldb
REPORT ZSHEFLDB.
tables: lfa1, ekko, ekpo.
start-of-selection.
GET LFA1.
WRITE:/ LFA1-LIFNR, 20 LFA1NAME1, 50 LFA1-LAND1.
GET EKKO.
WRITE:/60 EKKO-EBELN, 75 EKKOAEDAT.
GET EKPO.
WRITE:/85 EKPO-EBELP, 95 EKPOMATNR.
END-OF-SELECTION.
SAVE-CHECK-ACTIVATE-TEST

Você também pode gostar