Hi, My name is Ganesh Sai and I'm from Sullurpeta, I’m an SAP ABAP Developer with
over 3.1 years of experience working at Accenture, where I was involved in 3 End-
to-End Implementation Projects like LEGRAND, PVM ELEMENT and SANOFI and one Support
Project in MOHAWK. My role included developing Custom Reports, ALV, Enhancements,
BDC, Module Pool Programming, Smartforms, and RICEF components.
I have delivered more than 70 custom ABAP RICEF objects across modules such as
Finance, Sales \& Distribution, and Material Management.
I have also worked closely with Functional Teams to gather requirements and
translate them into efficient technical solutions.
I am known for delivering objects on time, collaborating effectively with cross-
functional teams, and maintaining detailed technical documentation for all my
deliverables.
Coming to my achievements, I was awarded a fast-track promotion 10 months ahead of
the standard cycle and was recognized as the Best Team Member in one of my
projects, receiving 2000 reward points from my team lead. and this is all about my
Introduction.
---
**SAP:** SYSTEM APPLICATIONS AND PRODUCTS IN DATA PROCESSING.
SAP IS THE WORLD’S RICHEST COMPANY.
**ABAP:** ADVANCED BUSINESS APPLICATION PROGRAMMING.
ABAP IS A STANDARD PROGRAMMING LANGUAGE OF SAP ERP.
THE ENTIRE SAP SOFTWARE IS BUILD USING SAP ABAP PROGRAMMING
**DEFINITION OF E.R.P?**
E.R.P IS A PACKAGE UNDER WHICH ALL THE BUSINESS RESOURCES ARE INTEGRATIN ONE
SYSTEM.
---
# DATA DICTIONARY
**OBJECTS OF DATA DICTIONARY?**
Database table, View, Data type, Type Group, Domain, Search help, Lock object.
TECHNICAL SETTINGS:
**SIZE CATEGORY:**
Data Cl. Description
APPL0 Master data, transparent tables
APPL1 Transaction data, transparent tables
APPL2 Organization and customizing
DDIM Dimension Tables in BW
DFACT Facts Table in BW
DODS ODS Tables in BW
**SIZE CATEGORY:**
SzCat Number of data records of table expected
0 0 to 6.000
1 6.000 to 24.000
2 24.000 to 96.000
3 96.000 to 380.000
4 380.000 to 1.500.000
5 1.500.000 to 3.000.000
6 3.000.000 to 6.100.000
7 6.100.000 to 12.000.000
8 12.000.000 to 24.000.000
**BUFFERING: Radio Buttons,** 1) BUFFERING not Allowed, 2)BUFFERING allowed but
switched off, 3) BUFFERING ACTIVATED.
**BUFFERING TYPE:** Check Boxes like, Single Record Buff, Generic Area Buffered,
Fully Buffered.
--------------------------------
**ATTRIBUTES:** Last Changed ON/BY username and date will be there, Package,
Original Language
**Delivery and Maintenance:**
1. **Delivery Class:** A, C,L,G,E,S,W
A-Application table(masterband transaction data).
C-Customizing Table, maintenance only ny cust, not SAP import
L- Table for sorting temporary data, delivered empty.
G- Customizing Table, protected against SAP upload, Only INS all.
E- Control Table, SAP and Customer have separate key areas.
S- System table, maint, only by SAP, change = modification.
W- system table, contents transportable via separate TR objects.
**2) DATA BROWSER/TABLE VIEW MAINT:**
Display/Maintenance allowed with Restrictions
Display/Maintenance allowed
Display/Maintenance not allowed
**FIELDS:**
field, key field, initial value, data element, data type, length, decimal places,
short decription.
**ENTRY/HELP CHECK:**
FIELD, DATA ELEMENT, DATATYPE,FOREIGNKEY, CHECK TABLE, ORIGIN OF THE INPUT HELP,
SEARCH HELP, DEFAULTS, DOMAINS
**Currency/Quantity Fields:**
Field, Dataelement, Datatype, Reference Table, Reference field, Short description.
------------------------------
**What is the Data Dictionary in SAP ABAP?**
Data Dictionary is a central place in SAP where we define and manage all the data-
related objects like tables, views, data elements, domains, structures, etc. It
helps to ensure data consistency across all SAP applications.
**what is Database Table?**
A Database Table is a Structured Storage Object, which is used to store the data
permanently in SAP Database. It consists of Columns and Rows.
(OR)
It is a Permanent table, if we create once we can see the data multiple times. It
consists of Columns and Rows.
TABLES are created using Transaction SE11.
In real time. We will create Custom Database tables starting Z or Y.
DATABASE tables is a set of fields which holds the data persistently.
**TABLES Can Be,**
**1) Transparent Tables**
**2) Pooled and Cluster Tables.**
**What is a Transparent table?**
A transparent table is a normal database table in SAP. It has a one-to-one relation
with the table in the database. Data is stored physically in the database.
**WHAT IS POOL TABLES?**
POOL TABLES ARE SMALL TABELS.
FOR EXAMPLE: 30-40 Small pool tables together is called Table Pool. One Table Pool
represents one Table in Main Database is called POOL TABLE.
(OR)
Many to one Relationship, many small tables are stored here.
**WHAT IS TABLE CLUSTER?**
A Cluster Table stores data from multiple related tables in a single physical
table, called a table cluster.
(OR)
Many to one relationship. Few large tables are stored here.
---
**VIEWS**
**What is a view in the Data Dictionary?**
View is a Logical Views, which can be generated based on Data Base Table.
Views can create at runtimes and it is not occupy/STORE any memory.
**For Example: -** We can create one logical table, give the table name as ‘A’ and
in that A table, we have some particular columns like X, Y and Z. Here we have to
pull out these Columns (X, Y and Z) to A table. Like this we can create data
logically.
Views can create at runtimes and it is not occupy/STORE any memory.
**There are 4 types of VIEWS:**
**Database View:-** In Database View, we provide the tables which are having
foreign key relationships.
**Projection View:-** In Projection View, we can only select Only One Table.
And projection view is to view only particular fields of the Tables.
Both READ and Change are allowed in Projection View.
\*\*Maintenance View:-\*\*It is also called as TMG. It is used to maintain records.
\*\*Help View/Search help:-\*\*To Find the Data or anything in large collection of
data. (or) We Can use this Help View with the help of F4 button.
**There are 2 types of Search Helps,**
\*\*1) ELIMENTARY SEARCH HELP:-\*\*It is always creates based on single Table.
**2) COLLECTIVE SEARCH HELP:-** It is a Combination of 2 or more Elementary search
help.
---
**STEPS TO CREATE DATABASE VIEW:**
GOTO SE11
SELECT ON VIEW
PROVIDE THE DATABASE VIEW NAME AND CLICK ON CREATE
SELECT DATABASE VIEW AND CLICK ON OK
PROVIDE SHORT DESCRIPTION
PROVIDE THE TABLE NAME
FOR EXAMPLE, MARA AND MARD
IN TABLE PROVIDE THE FOREIGN KEY TABLES
HIT THE RELATIONSHIPS
SELECT THE TABLES AMOUNG LIST AND HIT OK
HIT THE VIEW FIELDS
PUT THE CURSOR ON TABLE AND HIT THE TABLE FIELDS TAB
SELECT THE MARA TABLE, SELECT THE REQUIRED FIELDS AND OK
PUT THE CURSOR ON TABLE AND HIT THE TABLE FIELDS TAB
SELECT THE MARD AND SELECT THE REQUIRED AND HIT COPY
SAVE CHECK AND ACTIVATE
---
**DATA TYPE:-**
we can create Data Element, Structure and Table type. Here, we can declare main
domain.
(OR)
Data means variable with memory.
Type means variable without memory.
**DATA ELEMENT:** A data element is used to define a specified semantic information
of a fields.
For example: domain + labelling + headings
**STRUCTURE:** It is a collection of Fields but in real time it will not hold any
data.
(or)
A structure is like a table without data. It is just a collection of fields, used
for internal data processing (e.g., work areas, interface structures). Data is not
stored in it.
**TABLE TYPE:** Before creating table type, we have to create structure.
why?
In that table type there is a line type, in that we have to give structure name.
(OR)
A **table type** defines the structure and properties of an internal table (like
its line type, key, and access type). It is used in ABAP programs.
---
**TYPE GROUP:**
Type group is a collection of several types of declarations, means collection of
structures and table types only.
**Example: -** SLIS and TRUXS.
WE will use in ALV Reports.
How you will use this TYPE GROUP in Program?
Goto SE38 and write a program.
---
**2. What is a Domain and what is it used for?**
A domain defines the technical Information of a fields, like data type, length, and
value range.
For example, if you have a field for age, the domain can define it as a number of
length 3 and allow values between 1 to 120.
For example: - data type + length + value range
(OR)
Domain describes Data Type and Range of Values.
Example: - Char40 (or) Int 70.
**What is the difference between a domain and a data element?**
**Domain =** Technical settings (data type, length, value range)
**Data Element =** Meaning of the field (labels, short text, documentation)
Both are used together to define table fields.
---
**SEARCH HELP:** To Find the Data or anything in large collection of data.
(or)
We Can use this Help View with the help of F4 button.
---
**LOCK OBJECTS:** Lock Objects are required to maintain data integrity in the
system.
As a ABAPER, we use
**4 types of Locks**
1)READ LOCK
2)WRITE LOCK
3)EXCLUSIVE LOCK
4)OPTIMISTIC LOCK
**READ LOCK: ( S – SHARED)**
The READ LOCK allows other Transactions or Users to read access only. But not write
access to lock area of the table.
**WRITE LOCK: - (E – EXCLUSIVE)**
This is for SINGLE User to write access only, remaining users will neither READ/
WRITE.
**EXCLUSIVE, NOT CUMULATIVE: -**
Where as, EXCLUSIVE locks can be requested several times by the same Transaction
and released one by one, but in Exclusive not Cumulative lock can only be requested
once by the same transaction. Further, lock request will be rejected for the same
transaction.
**OPTIMISTIC LOCK: - ( OUT DATED)**
In Initially, behave like shared locks and can be converted into exclusive locks.
**HOW TO CHECK: -**
**DEQUEUE: -** This is to release the lock or remove the lock.
**ENQUEUE: -** Apply the lock
---
**What is a Table?**
Table is a combination of Structure and Data.
Structure consists of Field names and
Data will store the business data like master data and transactional data
**What is Delivery Class?**
Type of data is stored in Data base Table, that is called Delivery Class.
**What is Data Class?**
It is specified physical area in Database.
**What is Primary Key?**
Primary key is a unique key or it doesn’t hold any duplicate data.
We need to declare primary keys at beginning of the table creation.
**What is Client Depend and Client Independent?**
**CLIENT DEPEND: -** It allows to access only for particular client, mainly for
data security
Field for client is MANDT
\*\*CLIENT INDEPENDENT: -\*\*Anyone can access
Secondary fields are called Non-Primary Keys.
**What is PACKAGE?**
Package is a container, all it holds the data.
It is like a kind of ZIP FILE.
**FOREIGN KEY RELATIONSHIP?**
For Foreign key atleast one data element of both tables(Check Table and Foreign key
table) must be match or same.
Field Name may be different but Data Element must be same or match.
Primary key of check table should be available in foreign key table with same
Elementary name.
**What is CHECK TABLE?**
It is a TABLE, which will be connected via Foreign Key Relationship.
**What is VALUE TABLE?**
Double click on DATA ELEMENT and Double click on DOMAIN.
Hit the Value Range, Provide the Fix Value.
**What is a foreign key in SAP?**
A foreign key is used to create a relationship between two tables. It ensures data
consistency by checking values against the primary key of another table.
**What is a check table and a value table?**
**Check Table:** Table that controls valid values for a field using a foreign key.
**Value Table:** Defined in the domain; it suggests a default check table, but the
actual check is done only when we define the foreign key.
---
**What is the difference between pooled, cluster, and transparent tables?**
Type Stored in DB Used for
Transparent Yes (1:1) Normal tables
Pooled Yes (many:1) Internal control data
Cluster Yes (many:1) Related data from several tables
**Note: Pooled and Cluster tables are no longer used in HANA systems.**
**Can we store data in structures?**
No, structures are used only during program execution. They do not store data
permanently.
**What is the purpose of the SE11 transaction?**
SE11 is used to create and manage data dictionary objects like tables, views,
domains, data elements, etc.
**What are the key fields in a table?**
Key fields are used to uniquely identify each record in the table. They form the
primary key.
**What are append structures?**
Append structures are used to add custom fields to a standard SAP table without
modifying the original table structure.
---
# **REPORTS**
Reports is a collection of information i.e., DATA.
In Real time, every report is designed based on 3 parts.
1)INPUT. (Selection Screen)
2)Processing Logic. (Application Layer)
3)Output.
**TYPES OF REPORTS: -**
There are 2 Types of Reports: -
**1)CLASSICAL REPORTS.**
a)Basic Reports.
b)Interactive Reports.
**2)ALV REPORTS.**
a)Basic Reports.
b)Interactive Reports.
**ALV Means ABAP LIST VIEWE**R.
## **CLASSICAL REPORTS:**
In Classical Reports, the entire output is maintained in a single list called Basic
List.
#### **EVENTS IN CLASSICAL REPORTS: -**
**1)LOAD-OF-PROGRAM.**
**2)INITIALIZATION.**
**3)AT-SELECTION-SCREEN.**
**4)START-OF-SELECTION.**
**5)END-OF-SELECTION.**
**6)TOP-OF-PAGE.**
**7)END-OF-PAGE.**
**LOAD-OF-PROGRAM: -**
This event is used to load the program into memory for execution.
**INITIALIZATION: -**
It triggers before the selection-screen display( before selection screen it
triggers).
**AT-SELECTION-SCREEN: -**
It Triggers once the control leaves from at selection-screen and still selection-
screen is in active mode.
**IT IS DIVIDED INTO 5 TYPES: -**
1)AT-SELECTION-SCREEN OUTPUT.
2)AT-SELECTION-SCREEN ON <FIELD NAME>.
3)AT-SELECTION-SCREEN ON VALUE-REQUEST.
4)AT-SELECTION-SCREEN ON HELP-REQUEST.
5)AT-SELECTION-SCREEN ON <RADIO-BUTTON>.
**AT-SELECTION-SCREEN OUTPUT: -**
It triggers after initialization and before selection screen display.
**AT-SELECTION-SCREEN ON <FIELD NAME>: -**
It triggers once selection screen is being processed and still the selection screen
is in active mode.
**AT-SELECTION-SCREEN ON VALUE-REQUEST: -**
It triggers when you apply F4 function key on selection screen field.
**AT-SELECTION-SCREEN ON HELP-REQUEST: -**
It used to provide Documentation help for particular field(Function + F1)
**AT-SELECTION-SCREEN ON <RADIO-BUTTON>:**
It triggers when the user selects a radio button option on the selection screen.
**4)START-OF-SELECTION: -**
Actual program execution will start from here.
This Event will triggers once, your selection-screen is processed.
It triggers, when you select function key + F8.
It triggers, before reading the data from Database.
**NOTE: -In your program, no need to provide this event (START-OF-SELECTION) but
when we use writing INITIALIZATION or AT-SELECTION-SCREEN, It is mandatory to use
START-OF-SELECTION.**
**5)END-OF-SELECTION: -**
It triggers once all the data is read from logical database.
**6)TOP-OF-PAGE: -**
It triggers before first record is output in output list (using for heading).
**7)END-OF-PAGE: -**
It triggers after last record is Output in output list (for footer).
**NOTE: - INITIALIZATION Trigger only once, while TOP-OF-PAGE triggers multiple
times based on REPORT Pages.**
**INTERNAL TABLE:** An internal table in SAP ABAP is a temporary memory storage
used to store a collection of data at runtime. It is similar to arrays in other
programming languages but more powerful and flexible.
**TYPES OF INTERNAL TABLE: -**
**BASED ON HEADER LINES: -**
1)INTERNAL TABLE WITH HEADER LINE (WA).
2)INTERNAL TABLE WITHOUT HEADER LINE.
**BASED ON SORTING: (ARRANGING)**
1)STANDARD INTERNAL TABLE – LINEAR SEARCH
2)SORTED ITAB – BINARY SEARCH
3)HASHED ITAB – INDEX BASED
SYNTAX: - DATA: ITAB TYPE STANDARD/SORT/HASHED TABLE of STRU.
ITAB WITH HEADER LINE: - (WA)
DATA: BEGIN OF ITAB1 OCCURS 0, “ITAB WITH HEADER LINE
NAME TYPE C LENGTH 20,
AGE TYPE I,
SALARY TYPE N LENGTH 10,
END OF ITAB1.
ITAB1-NAME = ‘GANESH’.
ITAB1-AGE = 22.
ITAB1-SALARY = 34000
APPEND ITAB1.
CLEAR ITAB1.
---
**What is INTERACTIVE REPORT?**
In INTERACTIVE Report, we will find ‘n’ no of output lists is called interactive
list or secondary list.
How many maximum no’s of Interactive reports we can create?
1 Basic list and 20 secondary lists.
Basic List: - the entire output is maintained in a single list called Basic List.
Secondary Lists: - more than one basic list is called secondary list.
**EVENTS OF INTERACTIVE REPORT?**
1)At line selection.
2)At user command
3)Set-pf-status.
4)Top-of-page during line selection.
5)End-of-page.
**There are 3 ways to create Interactive Reports .**
1)Hide Technique.
2)Get cursor
3)Sy-Lisel.
**1)HIDE-TECHNIQUE: - (DOUBLE CLICK TECHNIQUE).**
It is a Double click technique.
HOW TO USE HIDE TECHNIQUE?
HIDE Technique is generally used for creating Interactive report.
**2)GET CURSOR: -**
In get cursor technique, syntax is,
Get cursor field fnam1 value fval1.
Note: - In Get Cursor Technique, for field value Goto Database Table, check the
particular field datatype and length, use in field value.
**3)Sy-Lisel: -**
Sy-Lisel means content of selected list line. (like work area).
Data: fval1(18) type c.
Fval1 = sy-Lisel+1(18).
To declare value of single fields.
Note: -
Among three methods, GET\_CURSOR is Recommendable.
## **CONTROL BREAK STATEMENTS(EVENTS): -**
1)AT FIRST
2)AT NEW
3)ON CHANGE OF -----------OBSOLETE(NO USE)
4)AT LAST
5)AT END OF.
Control Break Statements will control the flow of ABAP Programming Statements
within the Loop----ENDLOOP.
**1)AT FIRST: -**
It triggers when the first loop pass.
This Event is used to Provide Headers in ABAP Reports.
Syntax: - AT FIRST ------ENDAT.
**2)AT NEW: -**
It triggers whenever there is a change in field values in internal tables based on
character value.
Syntax: - AT NEW ----- ENDAT.
**3)ON CHANGE OF:-**
It works similar to AT NEW.
Syntax: - ONCHANGE OF <field name> ----END ON.
**4)AT LAST: -**
It triggers for last line of an Internal Table During last loop pass.
Syntax: - AT LAST ---- ENDAT.
**5)AT END OF: -**
It will triggers at the END OF group of similar values in an Internal Table.
Syntax: - at end of ----- end at.
**Note: -We should not provide any conditional statements like IF, CASE ----ETC.**
**-------------------------------------------------------**
## **ALV REPORTS**
**Alv is advanced reporting with additional features**
\*\*Types of ALV
1. Traditional ALV
2. ALV with OOP
Advantages of ALV:\*\*
1. In Traditional Reporting(Classical) we cannot maintain logos. but using ALV we
can maintain LOGOS.
2. Using ALV, We can improve the performance of the program by avoiding
LOOP..ENDLOOP.
3. Using ALV Reporting, we can maintain Headings, Sub headings, footer etc..
4. Using ALV Reporting, we can export the data, Total, Sub Total, Filtering,
Alignment, Sorting etc..
5. Layout Management.
**How can we display Data in ALV?**
THERE ARE 2 METHODS,
1. With the help of structures in sell creation
2\. With the help of Field Catalog.
both decides position, length, description etc.
**Field Catalog:**
Field Catalog is an internal table which contains information of fields to be
displayed in ALV Output.
Field catalog decides row position, Column Position, Description, Length, Table
name, Field name,
Field Catalog Structure name is **SLIS\_FIELDCAT\_ALV.**
---
## **INTERNAL TABLE OPERATIONS:**
**SORT:** SORT is used to sorting an Internal Table. Data in ascending order or
Descending ORDER. By Default it will sort the data in Ascending Order.
**APPEND:** Using APPEND syntax, our record will add into Internal Table in Last.
**APPEND LINES OF:** It is used to add multiple records from one internal table to
another internal table.
**INSERT LINE OF:** It is used to insert multiple records from one internal table
to another internal table at specified location.
**READ TABLE WITH KEY:** It is used to read a single record from an internal table
to work area. specified by fieldname or field value.
**BINARY SEARCH:** Binary search is faster than liner search.
**MOVE:** Move keyword is used to move from one internal table to another internal
table.
**MODIFY:** It is used to MODIFY Single or multiple internal table records based on
condition.
**TRANSPORTING:** It is a keyword which is used to specify LIST fields to be
modified instead of all fields.
**CLEAR, REFRESH, FREE:**
**CLEAR** is used to clear a record or data in work area or variable.
**REFRESH** is used to clear all the values from internal table.
**FREE** is used to clear MEMORY of Internal table and work area.
**COLLECT:** Collect The COLLECT statement is used to insert entries into an
internal table and automatically add numeric fields if a duplicate key already
exists.
Append is used to shift the data
## **DATABASE OPERATIONS:**
**INSERT, MODIFY AND DELETE**
**INSERT:** Inserts a new record into the database table.
**MODIFY:** Updates the existing record if it exists; otherwise, inserts it.
**DELETE:** Deletes a record from the database table using the key.
---