0% found this document useful (0 votes)
757 views678 pages

Comprehensive Guide to SAP ABAP

This document provides an overview of SAP-ABAP, including: 1) It introduces ERP systems, SAP R/3, and the roles of BASIS, functional, and ABAP consultants. 2) It describes the components of SAP R/3 including systems, applications, and products. 3) It outlines 65 topics related to SAP-ABAP that will be covered, including programming structures, internal tables, the data dictionary, and specific transaction codes and tables.

Uploaded by

Sudip Rana
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
757 views678 pages

Comprehensive Guide to SAP ABAP

This document provides an overview of SAP-ABAP, including: 1) It introduces ERP systems, SAP R/3, and the roles of BASIS, functional, and ABAP consultants. 2) It describes the components of SAP R/3 including systems, applications, and products. 3) It outlines 65 topics related to SAP-ABAP that will be covered, including programming structures, internal tables, the data dictionary, and specific transaction codes and tables.

Uploaded by

Sudip Rana
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

SAP-ABAP 1

INDEX
1 Introduction to ERP 5
2 Introduction to SAP R/3 6
3 SAP R/3 Services 8
4 Introduction to ABAP/4 & ABAP Work Bench Tools 10
5 ABAP Data types 12
6 ABAP Programming Structures 14
7 Steps to Write & Create SAP Program 16
8 Tips for Writing a Program in Real Time 19
9 Internal Table & difference between database table & internal table 20
10 Reading Data from Body to Work Area (or) Header Line 22
(1. LOOP….ENDLOOP, 2. READ)
11 Selection Screen (1. Select-options, 2. Ranges, 3. Parameters ) 26
12 Other SELECT-OPTIONS keywords (1. Obligatory, 2. No Intervals, 28
3. No-Extension, 4. No-Display)

Rohini kumar
SAP-ABAP 2

13 Other Important Keywords for Internal Table (1. Append, 2. Sort, 3. Delete 31
Adjacent Duplicates, 4. Collect 5. Modify )
14 6. Deleting Data from Internal Table by (1. Fresh, 2. Refresh, 3. Clear, 4. 36
Delete )
15 7. Describe Keyword 37
16 8. Coping data b/w work areas (1. Move, 2. Move-Correspondig) 38
17 9. Coping data b/w internal tables (1. Loop…….Endloop, 2. Append Lines) 39
18 Control Break Statements (1. At First, 2. At Last, 3. At New, 4. At Change, 41
5. At End )
19 Insert keyword & Syntaxes for Internal Tables 45
20 System Fields for Internal Table 46
21 DML Operations on Database Table (insert, update, delete, modify keywords) 48
22 Types of Internal Tables 50
23 Data Dictionary (9 objects) 1. Database Table 51
24 2. Structure (.include & Append Structure) 55
25 3. View(Database view, Projection view) 58
26 4. Search Help (Elementary search help, Collective search help) 60
27 Table Maintenance Generator (TMG) (TCode, Default values, Check boxes) 63
28 Text Table 70
29 Some Important Steps for Working with Standard Tables 72
30 Types of Tables (Transparent, Cluster, Pooled Tables) 73
31 Open SQL Statements & Native SQL Statements 74
32 Buffering (Single Record, Generic, Full Buffering) 75
33 MODULES(1. MM Module) 76
34 Inner Joins 79
35 Table Fields & Links (1. LFA1, 2. EKKO, 3. EKPO) 84
36 Message Handling 86
37 Modularization Techniques (5) 88
1. Subroutines (Internal Subroutine, External Subroutine)
38 Break Point (1. Static Break Point 2. Dynamic Break Point) 90
39 Pass by Value & Pass by Reference 91
40 Table Fields & Links (1. MKPF, 2. MSEG) 94
41 Function Module (1. Normal, 2. Remote Enabled, 3. ALv) 96
42 Include Program 100
43 Field Symbol 101
44 FOR ALL ENTRIES 103
45 Table Fields & Links (1. MARA, 2. MAKT, 3. TSPAT) 108
46 2. SD Module 109
47 String Operations (shift, translate, replace, strlen, offset functionality, split, 111
concatenate, condense)
48 Looping Statements (1. Conditional, 2. Unconditional) 115
Rohini kumar
SAP-ABAP 3

49 CONTINUE, CHECK, EXIT keywords 118


50 Mathematical Operations (1. Frac, 2. Ceil 3. Floor, 4. Abs, 5. Rem, 6. Mod, 120
7. Sign, 8. Trunc, 9. Div )
51 SAP Memory & ABAP Memory 122
52 Support Project 125
53 System Landscape 126
54 Version Management 130
55 Sub Objects in ABAP Editor (1. Source Code, 2. Variants, 3. Attributes, 131
4. Documentation, 5. Text Elements)
56 Interview Questions ABAP Editor 133
57 Interview Questions Internal Tables 136
58 Interview Questions Data Dictionary 143
59 LFA1 Table 161
60 EKKO Table 162
61 EKPO Table 163
62 MKPF Table 164
63 MSEG Table 165
64 MARA Table 166
65 MAKT & TSPAT Tables 167

Rohini kumar
SAP-ABAP 4

ERP
ERP:
 Enterprise Resource Planning
 ERP is a package under which all the business resources are integrated in one system
Enterprise-------organization
Resource--------FICO, HR, MM, PP, SD, CRM

Types of ERP:
1. High End ERP
2. Mid Range ERP

1. High End ERP:


 These ERPs are implemented in large scale industries
 In these ERPs all the tables, programs & applications are predefined
Example:
Rohini kumar
SAP-ABAP 5

1. SAP R/3 (60000+ applications, 400000+ tables, 55+ modules)


2. Oracle Apps (for Finance)
2.1. Oracle Finance
2.2. Oracle Manufactures
2.3. Oracle HRMS
3. SIEBEL (for CRM)
4. People Soft (for HR)

2. Mid Range ERP:


These ERPs are implemented in small scale & medium scale industries
Example:
1. Baan (for Finance)
2. JD Ed Wards (for logistics)
3. Ramco (for Cement)
4. Microsoft ERP (for Finance)

Need for ERP:


1. Large Organization
2. Centralized Database
3. User Friendly
4. Speed
5. Security
6. Competitive Advantage
7. Reduced Errors

SAP R/3
SAP R/3:
Systems, Applications, Products in data processing
R/3------ Real time 3 tier architecture

History:
SAP AG---- developed by 5 IBM employees in 1973----in woldoff (Germany)
SAP R/1(Finance)------1973
SAP R/2 (Mainframes)------1978
SAP R/3 (Client Server Technology)----1992

Systems:
These are basic resources for implementing a project
Examples:
Servers, Hardware, Soft ware, Systems, Network, Database………etc

Rohini kumar
SAP-ABAP 6

BASIS Consultant:
Roles:
1. Installation
2. Maintenance
3. Configuration
4. Customization (or) Administration

Applications:
 These are collection of Screens
 Each Screen is a collection of Fields
Use---Applications are used by Clients (or) End Users
Create---Applications are created by Abapars (or) Technical Consultant (or) ABAP Consultant
Customized Data----Applications data customized by Functional Consultant

Functional Consultant:
Roles:
1. Customization of Data
2. Getting requirements from Clients
3. Preparing Functional Documents
4. Preparing End User Manuals (or) Snapshots
5. Providing end user Training

Products:
 These are called Objects
 These are created by Programming

ABAP Consultant (or) Abapare (or) Technical Consultant:


Roles:
1. Creates Technical Documents (brief logic)
2. Creates an Object from scratch implementation project
3. Modifies existing objects to support project

14-08-2014
Features of SAP:
1. Designed based on RDBMS
2. Designed based on R/3 Architecture
3. Database independent
4. Supports all types of industry specific solutions
5. International package available in 40 languages
Rohini kumar
SAP-ABAP 7

6. It can be customized using ABAP language


7. Best ERP for FI, SD, MM, PP, HR, CR
8. Supports Client-Server Technology
9. Highly versatile (Operating System independent)
[Link] web based application softwares

SAP R/3 Architecture:


External Systems
(Printer, Fax……etc)

Spool Service

Programs, Applications, Objects are Executed, Maintains & Manages


Objects…….etc Compilation……etc Database
Dialog Update
Service Service

Presentation Server Application Server Database Server

Services in R/3 Architecture:


1. Dialog Service:
It provides interface between Presentation Server & Application Server
2. Update Service:
It provides interface between Application Server & Database Server
3. Spool Service:
It provides interface between SAP R/3 & External Systems (Printers, Fax….etc)
4. Background Service:
It is for background scheduling

Note:
In real time once report is created, then it is scheduled in background by BASIS Consultants,
they will set time & event related to it

5. En-queue Service:
It maintains data integrity (locking mechanism) in SAP
6. Message Service:
Rohini kumar
SAP-ABAP 8

It is for Error & Exception handling


7. Gateway Service:
It is for distributed environment
Note:
The above 7 services are part of Application Server

8. SAP GUI Front End Service:


It handles all SAP GUI Operations in SAP Presentation Server
9. Database Service:
It Maintains & Manages data operations in Database Server

Versions in SAP:
Version Year
1.0 & 1.1 1991
2.0 & 2.1 1991
3.0 & 3.1 1992
4.0 1998
4.6A, 4.6B, 4.6C 2000
4.7EE 2003
ECC 5.0 2005 (ECC----Enterprise Core Component)
ECC 6.0 2006 (Present Working)
BI/BO 2008 (Business Independent)
CRM, SCM, PLM 2009 (Customer Relationship Management, Product Lifecycle Management)

Soft wares in SAP:


1. Production Software
2. IDES Software (or) Training Software

1. Production Software:
 It is Real time
 Every company should purchase this software from SAP
 Here you will find only live data
 Clients (End Users) are works with Production Software

2. IDES Software:
 International Demonstration & Education System Software
 It is also known as Training Software
 Here you can find data for practice & examples for practice

Rohini kumar
SAP-ABAP 9

16-08-2014
ABAP/4
Advanced Business Application Programming 4th Generation Language
 All SAP applications are designed & developed using ABAP Language
 It is a high level language

Features of ABAP:
1. It was designed based on ‘C’ language
2. It is a platform independent language
3. It is a case insensitive language
4. It is database independent
5. It is truly business oriented language
6. It is rich in data types
7. It was designed based on Object Oriented Programming
8. It is an event driven programming language
9. It is highly user friendly
[Link] supports web based applications also

ABAP Work Bench:


In real time as a Technical Consultant have to work with ABAP Work Bench tools

ABAP Work Bench Tools:


1. ABAP Dictionary:
 It works with Transaction Code (OR) T Code SE11 (System Engineering)
 Here we can create & store Tables (or) Data

2. ABAP Editor:
 It works with Transaction Code (OR) T Code SE38 (System Engineering)
 Here we can create & execute Programs

3. Screen Painter:
 It works with Transaction Code (OR) T Code SE51 (System Engineering)
 Here we can design Applications (OR) Screens

4. Class Builder:
 It works with Transaction Code (OR) T Code SE24 (System Engineering)
 It is for Object Oriented ABAP

5. Function Builder:
Rohini kumar
SAP-ABAP 10

 It works with Transaction Code (OR) T Code SE37 (System Engineering)


 Here we can work with Function Modules

6. Object Navigator:
 It works with Transaction Code (OR) T Code SE80 (System Engineering)
 Here we can create & modify the Objects & store the Objects

Note:
 In Object Navigator you can develop all Objects in SAP
 It is also known as a True ABAP Development Work Bench

Requirements for Installing SAP:


1. 4GB RAM
2. 500GB Hard Disk
3. Core 2 Duo Processor

Rohini kumar
SAP-ABAP 11

18-08-2014
ABAP Programming
ABAP Data Types:
ABAP data types are classified into 4 categories
They are:
1. Numeric
2. Character
3. String
4. Hexadecimal

1. Numeric:
These are classified into 3 categories
They are:
i) Integer (I)
ii) bPacked Decimal (P)
iii) Floating point (F)

i) Integer (I):
It holds integer values
Ex: 102, 55, 74, …..

ii) Packed Decimal (P):


 It returns accurate values with decimal values
 It provides accuracy in ABAP programming
Ex: 102.55, 56.235, …..
iii) Floating Point (F):
It improves performance in ABAP programming by rounding of the value to nearest decimal
Ex: 22.63-----23, 58.232-----58

2. Character:
These are classified into 3 categories:
They are:
i) Character (C)
ii) Date (D)
iii) Time (T)

i) Character (C):
It holds character value provided in ‘ ’ (single quotes)

Rohini kumar
SAP-ABAP 12

Note:
In ABAP programming the default data type is Character

ii) Date:
 Use Date data type to store date values
 The default SAP format for date is YYYYMMDD

iii) Time:
 Use Time data type to store time values
 The default SAP format for time is HHMMSS

3. String (String):
A group of characters combined to form a String

4. Hexadecimal (HX):
It is for SAP graphics management

Note:
QUAN, CURR, NUME are SAP provided business data types for storing Quantities, Currencies
& other Numeric values

Type Keyword:
It specifies the type of data an Object (Variable) can hold
Example:
1. Data ch type String --------hi, hello, how are you,………
2. Data cnt type I ------54, 1025, 748,…….
3. Data count type P values 2 -------145.22, 52.69,……
4. Data chr(10) type C ------ ‘a’, ‘h’,………

Data Keyword:
 Using Data keyword Objects are defined in ABAP programming
 Using Data keyword memory is allocated in buffer by system

Note:
Every Object (OR) Variable should be define using Data keyword

Rohini kumar
SAP-ABAP 13

Programming Structures:
These are 2 types
They are:
1. Pre defined Programming Structure
2. User defined Programming Structure

Pre defined Programming Structure:


 It is given by SAP
 It contains Tables, Structures, Type groups,……….etc

User defined Programming Structure:


These are 2 types
1. Work Area
2. Internal Table

1. Work Area:
 Work Area is a Structure (group of fields with different data types)
 It holds only one single record during run time
Syntax: Chain Operator Name of Work Area (any name)
Data: Begin of wa_KNA1, { wa_table name (OR) w_table name is recommended }
Customer(10) type C,
Name(20) type C,
City(20) type C,
End of wa_KAN1. Period Symbol
Field Name

Note-1:
With above syntax during run time a Work Area wa_KNA1 is created in Application Server

Note-2:
 Work Area name can be any name
 In companies we have to follow Naming (Coding) standards while creating a program
 According to these standards Work Area should always begins with w_ (OR) wa_
followed by Table Name

Note-3:
Every Object (Work Area) should be define with Data keyword

Note-4:
Every Programming Structure should begins with Begin of & ends with End of followed by the
Programming Structure name

Rohini kumar
SAP-ABAP 14

Note-5:
 : is known as Chain Operator
 It provides the repetition of the Declarative Part

Requirement:
Transfer Customer Master Data from Database Server to Application Server & from
Application Server to Presentation Server

Solution:
Select kunnr name1 ORT01 from KNA1 into wa_KNA1. ----- Data transfer from
Database Server to Application Server (Work Area)
Write:/10 wa_KNA1-Customer,
30 wa_KNA1-Name, data transfer from Work Area to Virtual Page then
60 wa_KNA1-City. Presentation Server
Endselect. ----------- it repeats the Select statement until records completed

Work Area

100 satya Hyderabad KNA1


200 ram Delhi 100 satya Hyderabad kunnr name1 ORT01
300 raj Bangalore 100 satya Hyderabad
m 200 ram Delhi
100 satya Hyderabad 300 raj Bangalore
200 ram Delhi
300 raj Bangalore

Presentation Server Application Server Database Server

Virtual Page

Rohini kumar
SAP-ABAP 15

20-08-2014
Steps to write & execute SAP program:
 Double click on SAP Logon on Desktop
 You will find a Logon Pad
 Double click on Development ([Link])
 Provide Client: 800 (only for practice purpose)
User: user1 to user10
Password: Rgsabap
 You will find SAP Easy Access screen (Screen 0)
 On top of the screen you will find cursor blinking at Command Prompt (or) Command
Field. Here you should type Transaction Codes (T Codes) in real time
 Next to Command Prompt you will find Standard Icons (Standard Application Tool
Bar). Here you cannot add Customized Icons
 Under Standard Application Tool Bar you will find Text Area. It specifies
documentation of current application
 Under Text Area you will find Customized Application Tool Bar when you can add
your own icons apart from Standard ones
 Under Customize Application Tool Bar you will find Work Area where user performs
his tasks (or) navigations

 Type SE38 in Command Prompt & press Enter


 Type program ZSD_Customer_Report
Note:
SAP is providing standard programs which starts with A,B,……………X. If you want to create
ZPrograms (User Defined) start with Y (OR) Z

 Click on Create button


 Provide Title: Customer Details Report
 Provide Type: Executable Program
Note:
With Executable Program system will generate [Link] file

 Then press Enter you will find a pop-up here leave Package:___________ as blank
 Click on Local Object button
Note-1:
In real time Objects needs to be transported from Development client to Testing client & from
Testing client to Production client. For that Objects should always be saved in a package. If an
Object is saved in Local Object it cannot be transported between clients (Non Transportable
Objects)
Note-2:
Local Object is meant for practicing Objects in real time
Note-3:
Rohini kumar
SAP-ABAP 16

All Executable Objects are Report Programs


Note-4:
On top of the program in Comment Section you should provide
1. Technical Consultant name
2. Functional Consultant name
3. Objective of the program
4. Transport Request number
5. Date of Creation (or) Change

 Writing Program:
Report ZSD_Customer_Report -----------title of program

Technical Consultant: Satya


Function Consultant: Raja Comment Section
Objective: To display details of the Customer
Transport Request Number: Not available because we not saved package
Date of Creation: 20-08-2014

* provide Work Area --------- comment line


DATA: BEGIN OF WA_KNA1,
CUSTOMER(10) TYPE C,
NAME(20) TYPE C,
CITY(20) TYPE C,
END OF WA_KNA1.

* provide execution logic


SELECT KUNNR NAME1 ORT01 FROM KNA1 INTO WA_KNA1.

* creating virtual page & printing


WRITE:/10 WA_KNA1-CUSTOMER,
30 WA_KNA1-NAME,
60 WA_KNA1-CITY.

* repeating SELECT statement


ENDSELECT.
Note:
Once program is created
1. Check it for errors by pressing Ctrl+F2
2. Save it for backup by pressing Ctrl+S
3. Activate it for to store in Database Server by pressing Ctrl+F3
Activation of a Program:

Rohini kumar
SAP-ABAP 17

 Select Ctrl+F3 (or) Candle Icon to activate. You will find an Inactive Objects pop-up
then press Enter
 With activation Objects are ultimately stored in Database Server
 With activation Objects can be integrated with each other in SAP

 Select F8 to execute a program

21-08-2014
Debugging:- Work Area
 Using debugging you can check (OR) test internal execution of a program
 It is an important tool for testing programs in real time

Note:
/H is T Code for debugging

 Select Debugging button (shift+F5)


 By default you will find New Debugger Screen
 Select Debugger--switch to Classical Debugger
 Under Field Names: type wa_kna1-customer, wa_kna1-name, wa_kna1-city & press
Enter
 Select F5 for single step debugging
 Select Display List option (ctrl+F12) to view Virtual page details.
 Select F3 again to switch from Virtual page view to Debugger
 Select F7 (or) F8 to execute

New Debugger:
 Currently in real time we are working with only New Debugger
 It is providing additional features compare to Old Debugger

Working:
 Provide Program:_______ name
 Select Debugging button
 Select Desktop1 tab
 Under Variable: type wa_kna1-customer, wa_kna1-name, wa_kna1-city & press Enter
 Select F5 for single step debugging

Rohini kumar
SAP-ABAP 18

Tips for Writing a Program in Real Time:


1. Always start a program with Y (or) Z followed by Module name
Ex-1: MM module
ZMM_Material_Details
Ex-2: SD module
ZSD_Sales_Register
Ex-3: HR module
ZHR_Employee_Details
2. Provide Apt Title for a program
3. In real time always save the Object in a Package. But for practicing save Object in Local
Object
4. Provide Comments in a program wherever require
5. Try to write your program as Neat as possible
6. Try to write your program in Capital letters
7. Always select Pretty Printer (shift+F1) option after writing a program
8. Always Activate your program once it is created
Note:
Only activated programs can be debugged
Only activated programs can be integrated in SAP
Only activated programs can be transported between clients

9. Always Debug your program once it is created for testing


[Link] delete section of a program always Comment it. For commenting select that
section with mouse pointer & press Ctrl+< similarly to document select the same section
with mouse pointer & press Ctrl+>
[Link] Searching a specific keyword (or) ABAP statement select Find option in Standard
Tool Bar then provide fine & press Enter
[Link] Replacing ABAP keywords (or) statements select Ctrl+F you will find a pop-up
Find What: KNA1 select Replace button provide Replace With: LFA1 select Replace All
[Link] open new application by closing existing one type /NTCode Ex: /NSE38
[Link] open sessions simultaneously type /OTCode Ex: /OSE11 in Command prompt
Note:
In SAP you can open maximum 6 sessions simultaneously
[Link] logoff SAP type /NEX in Command prompt

Rohini kumar
SAP-ABAP 19

INTERNAL TABLES
2. Internal Table:
 Internal table is a temporary table created in RAM in Application Server
 It is created & filled with data during run time (execution time)
 Once execution is performed it is rolled out (or) discarded

Note:
Use Internal table for storing multiple records during run time

Difference between Database table & Internal table:


Database Table Internal Table
1. It is created in Database Server ------- 1. It is created in Application Server
2. It holds data permanently ------- 2. It holds data temporarily
3. It holds only specific type of data ----- 3. It holds data of different tables of at one place

Que: What is exact purpose of Internal table. Do you think should be created in ABAP
programming?
Ans: In real time we are creating Internal table for storing different types of application data
from different tables at one place

Every Internal table is having 2 parts


They are:
1. Internal Table Body
2. Header Line

1. Internal Table Body:


The name Internal table itself specifies body of Internal table & it holds multiple records

2. Header Line:
It is a default Work Area & holds single record

Note:
Header Line is system defined Work Area & Work Area is user defined Header Line

Syntax:
DATA: BEGIN OF it_kna1 OCCURS 0,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF it_kna1.

Rohini kumar
SAP-ABAP 20

Note:
1. With above syntax an Internal table it_kna1 is crated in Application Server
2. You can provide any name. But in real time Internal table should always begins with it_
(or) i_ followed by table name
3. With BEGIN option Header Line is created & OCCURS option Body is created
4. 0, 1, 2, 3, …..9 is called Size Category
5. Both Header Line & Body name is same (it_kna1)

Flow of Data in Internal Table:


1. Database Table ---- Body--- Header Line-- Virtual Page --- Presentation Server
2. Database Table --- Body--- Presentation Server

Rohini kumar
SAP-ABAP 21

22-08-2014
Reading Data from Body to Work Area (or) Header Line:
1. LOOP ……….. ENDLOOP
2. READ keywords

1. LOOP ……… ENDLOOP:


It reads multiple records (record by record) from Body to Header Line (or) Work Area

Syntax:
LOOP AT it[INTO wa]
[FROM m][TO n]
[where codition].
…………
…………
ENDLOOP.

 LOOP AT it:
Reads multiple records (record by record) from Body to Header Line

Note:
Internally system converts LOOP AT it as LOOP AT it INTO it.

Working:
 Go to SE38
 Program: ZSD_LOOPENDLOOP
 Select Create option
 Title; Internal Table
 Type: Executable Program
 Select Save option
 Leave Package:__________ blank
 Select Local Object option

Pg) REPORT ZSD_LOOPENDLOOP.


* provide internal table
DATA: BEGIN OF it_kna1 OCCURS 0,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF it_kna1.
* provide extraction logic
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE it_kna1.
* Appling processing logic
Rohini kumar
SAP-ABAP 22

LOOP AT it_kna1 INTO it_kna1.


WRITE:/10 it_kna1-customer,
30 it_kna1-name,
60 it_kna1-city.
ENDLOOP.

Note;
Activate the program then select F8 to execute the program

 Debugging: Internal Table


 Go to SE38
 Program: ______ which you want to debug
 Select Debugging button
 Select Tables tab (starting from 6th option)
 Table: it_kna1 & press Enter

Note:
You will find a Cap symbol which indicates Header Line (holds only single record)
Select F5 for single step debugging

Note:
1. Table keyword will transfer the data directly to Internal Table to Body
2. Always use Table keyword in select statement if you are working with Internal Tables
3. As long as you are in loop system will read next record in-line in an Internal Table. Once
the loop is terminated again the loop starts reading from 1st line

 LOOP AT it INTO wa:


Reads multiple records (record by record) from Body to Work Area

Working:
 Go to SE38
 Program: ZSD_INTERNAL_WORKAREA
 Select Create option
 Title: Internal Table & Work Area
 Type: Executable Program
 Select Save option
 Leave Package:__________ blank
 Select Local Object option

Rohini kumar
SAP-ABAP 23

Pg) REPORT ZSD_ INTERNAL_WORKAREA.


* provide internal table & work area
TYPES: BEGIN OF ty_kna1,
customer (20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF ty_kna1.
DATA: wa_kna1 TYPE ty_kna1,
it_kna1 TYPE TABLE OF ty_kna1.
* provide extraction logic
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE it_kna1.
* Appling processing logic
LOOP AT it_kna1 INTO wa_kna1.
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDLOOP.

Note:
1. Using TABLE OF you can create your own body
2. Using TYPES keyword Structures are created in ABAP programming
3. In ABAP programming always create Objet (Work Area & Body) based on Structures
4. Avoid creating Internal Table with OCCURS clause

 LOOP AT it INTO wa FROM m TO n:


Reads multiple records from Body to Work Area based on given condition

Example:
1. LOOP AT it INTO wa FROM 100.
2. LOOP AT it INTO wa FROM TO 50.
3. LOOP AT it INTO wa FROM 100 TO 200.

Rohini kumar
SAP-ABAP 24

23-08-2014
2. READ:
It reads a single record from Body to Header Line (or) Work Area

Syntax:
READ TABLE it[INTO wa]
[INDEX n][WITH KEY keyexpression]
[TRANSPORTING fieldname]
[Binary Serach]

 READ TABLE it:


Reads a single record from Body to Header Line

Ex: READ TABLE it INTO it.

 READ TABLE it INTO wa INDEX n:


It reads a specific record (Line Number) from Body to Work Area

Ex: READ TABLE it INTO wa INDEX 5.

 READ TABLE it INTO wa WITH KEY keyexpression:


It reads a specific record which matches a given condition in Work Area

Ex: READ TABLE it INTO wa WITH KEY customer=wa1-customer

 READ TABLE it INTO wa WITH KEY keyexpression


TRANSPORTING <field1> <field2>……….:

Ex: READ TABLE it INTO wa WITH KEY customer=wa1-customer


TRANSPORTING city (it will shows only city field)

Binary Search:
It reads data from Body to Work Area based on binary search algorithm

Note:
1. Use binary search if Internal table is larze
2. Data should be sorted before Appling binary search algorithm
3. There should be no duplicate records in Internal Table
4. Binary search algorithm improves performance of programming

Rohini kumar
SAP-ABAP 25

SELECTION-SCREEN:
Using Selection Screen you can create a selection screen based on given requirement (Input
Values, Radio Buttons, Check Boxes…………..)

Input Values:
1. You can create with ------ Select-Options
2. You can create with ------ Parameters
3. You can create with ------ Ranges

1. SELECT-OPTIONS:
Using select-options you can create a selection screen with range of input values

Syntax:
SELECT-OPTIONS: s_kunnr for kna1-kunnr.
With above syntax system will create a selection screen in the following manner

S_kunnr 100 100 TO 200

With above syntax system will create an implicit Internal Table with following fields
Low High Sign Option
100 200 I (including) BT (between)

Note:
The default comparison operator for select-options in ‘IN’

Pg) * provide tables work area


TABLES kna1.
* provide selection screen
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-009
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN: END OF BLOCK b1.
* provide objects
TYPES: BEGIN OF ty_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF ty_kna1.
DATA: wa_kna1 TYPE ty_kna1,
It_kna1 TYPE TABLE OF ty_kna1.
* provide extraction logic
Rohini kumar
SAP-ABAP 26

SELECT kunnr name1 ort01 FROM kna1 INTO TABLE it_kna1 WHERE
kunnr IN s_kunnr.
* Appling processing logic
LOOP AT it_kna1 INTO wa_kna1.
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDLOOP.

Text Elements:
Using text elements (text-000 to text-009) you can provide field labels in selection screen
 Double click on Text-000
 You will find a pop-up Yes
 Provide Text: Enter Customer Code
 Select Selection Texts tab
 Provide Text: Customer Code
 Activate the screen (Ctrl+F3)
 Go to back (F3)

Note:
Using Tables work area system will create a Work Area with all the fields of kna1 table. In
programming it is mandatory to declare for declaring select-options

Syntax for Creating Block:


SELECTION-SCREEN: BEGIN OF BLOCK <block name> FRAME TITLE <title>.
……………..
……………….
SELECTION-SCREEN: END OF BLOCK <block name>.

Rohini kumar
SAP-ABAP 27

25-08-2014
Other SELECT-OPTIONS keywords:
i) OBLIGATORY
ii) NO INTERVALS
iii) NO-EXTENSION
iv) NO-DISPLAY

i) OBLIGATORY:
Using this addition you can make selection screen fields as Mandatory
Syntax:
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr OBLIGATORY.

ii) NO INTERVALS:
Using no intervals you can remove high option from selection screen input field with select-
options
Syntax:
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr NO INTERVALS.

iii) NO-EXTENSION:
With this addition Multiple Selections option is removed from selection screen with select-
options
Syntax:
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr NO-EXTENSION.

iv) NO-DISPLAY:
With this addition selection screen input field will be hidden mode
Syntax:
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr NO-DISPLAY.

Working with Multiple Selection:


Step-1: providing Random Values using Multiple Selection
 Execute your program
 Select Multiple Selection option
 Under Single Value provide values
 Select Clock symbol (F8)
 Execute (F8)

Step-2: Providing Multiple Ranges using Multiple Selections


 Execute your program
 Select Multiple Selection option
 Under Select Ranges provide multiple ranges
 Select Clock symbol (F8)
Rohini kumar
SAP-ABAP 28

 Execute (F8)

Step-3: Providing Excluding Random Values


 Execute your program
 Select Multiple Selection option
 Under Exclude Single Value provide values
 Select Clock symbol (F8)
 Execute (F8)

Step-4: Providing Excluding Ranges


 Execute your program
 Select Multiple Selection option
 Under Exclude Ranges provide values
 Select Clock symbol (F8)
 Execute (F8)

Step-5: Coping the Data from Excel sheet to Multiple Seletion


 Copy the data from Excel sheet (Ctrl+C)
 Select Multiple Selections option
 Press Ctrl+V (or) select second last button

2. PARAMETERS:
Using parameters you can create a selection screen with single input value
Syntax:
PARAMETERS p_kunnr TYPE kunnr. (or)
PARAMETERS p_kunnr LIKE kna1-kunnr.

Note:
1. With above syntax system will define (or) create a selection screen in the following
manner

P_kunnr

2. With above syntax no Internal Table is created by system


3. The default comparison operator for PARAMETERS is ‘EQ’

Rohini kumar
SAP-ABAP 29

Pg) * provide tables work area


TABLES kna1.

* provide selection screen


SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-009
PARAMETERS p_kunnr TYPE kunnr.
SELECTION-SCREEN: END OF BLOCK b1.

* provide objects
DATA: BEGIN OF wa_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF wa_kna1.

* provide extraction logic


SELECT SINGLE kunnr name1 ort01 FROM kna1 INTO wa_kna1
WHERE kunnr EQ p_kunnr.

* Appling processing logic


WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDSELECT.

Note:
1. If you are not providing SINGLE addition with PARAMETERS for fletching a single
record then it is mandatory to provide ENDSELECT
2. In real time never use SELECT with ENDSELECT (it reduces performance of the
program)

3. RANGES:
It work similar to SELECT-OPTIONS
Syntax:
RANGES s_kunnr FOR kna1-kunnr.

Note:
In new versions RANGES keyword is not allowed (it is out dated)

Rohini kumar
SAP-ABAP 30

Other Important Keywords for Internal Table:


1. APPEND keyword:
It appends record from Work Area to Body
Syntax:
APPEND wa TO it.

Pg) DATA: BEGIN OF wa,


material(10) TYPE C,
quan(10) TYPE C,
END OF wa.
DATA it LIKE TABLE OF wa.
* fill data into it
wa-material=’F001’.
wa-quan=50.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=70.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=100.
APPEND wa TO it.
wa-material=’F001’.
wa-quan=80.
APPEND wa TO it.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.

2. SORT keyword:
It sorts Internal Table Body data based on ascending (or) descending
Syntax:
SORT <it> BY <field1> ASCENDING (or) DESCENDING
Note:
The default order of sorting is ASCENDING

Pg) DATA: BEGIN OF wa,


material(10) TYPE C,
quan(10) TYPE C,
END OF wa.
DATA it LIKE TABLE OF wa.
* fill data into it
Rohini kumar
SAP-ABAP 31

wa-material=’F001’.
wa-quan=50.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=70.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=100.
APPEND wa TO it.
wa-material=’F001’.
wa-quan=80.
APPEND wa TO it.
SORT it BY material ASCENDING.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.

3. DELETE ADJACENT DUPLICATES keyword:


Deletes adjacent duplicates from Internal Table
Syntax:
DELETE ADJACENT DUPLICATES FROM it COMPARING <filed name>
WHERE codition.

Note:
Before Appling above keyword it is mandatory to sort Internal Table

Pg) DATA: BEGIN OF wa,


material(10) TYPE C,
quan(10) TYPE C,
END OF wa.
DATA it LIKE TABLE OF wa.
* fill data into it
wa-material=’F001’.
wa-quan=50.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=70.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=100.
APPEND wa TO it.
Rohini kumar
SAP-ABAP 32

wa-material=’F001’.
wa-quan=80.
APPEND wa TO it.
SORT it BY material.
DELETE ADJACENT DUPLICATES FROM it COMPARING material.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.

26-08-2014
4. COOLECT Keyword:
It provides summarized representation of data in an Internal Table
Note:
COLLECT checks the data based on Key Field (Character Field) in an internal table Body, if
the record is not existing it will performs Append job, if it is already existing it will Add
(Collects) Numeric Values based on Character Field inside the Body.

Syntax:
COLLECT wa INTO it.

Pg) DATA: BEGIN OF wa,


material(20) TYPE C,
quan TYPE I,
END OF wa.
DATA: it LIKE TABLE OF wa,
it1 LIKE TABLE OF wa.
wa-material = ‘F001’.
wa-quan = 50
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 150
APPEND wa TO it.
wa-material = ‘F001’.
wa-quan = 550
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 350
APPEND wa TO it.
LOOP AT it INTO wa.
COLLECT wa INTO it1.
ENDLOOP.
Rohini kumar
SAP-ABAP 33

LOOP AT it1 INTO wa.


WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.

Ques-1: What is the difference between APPEND & COLLECT?


Ans: APPEND keyword appends the record from Work Area to Body (always to next line
in Internal Table). COLLECT keyword performs append job if the record fails to exist
in the Body. If already exists it adds all Numeric Values on Right Side of Character
Field inside the Body

Ques-2: Whenever you will use COLLECT keyword in real time?


Ans: Whenever I will get a requirement for providing consolidated totals based on
customers, vendors, materials……..etc I will use COLLECT keyword

Ques-3: Suppose there are more than one Character Fields then what is the rollback of
COLLECT keyword?
Ans: If there are two (or) more than two Character Fields it will Collect (add) the data only
when both the Character Fields are same

5. MODIFY keyword:
This keyword modifies Internal Table’s Body data based on given requirement
Syntax:
MODIFY it FROM wa [TRANSPORTING <field1> <filed2> ……..]
[INDEX n]
[WHERE condition]

Pg) DATA: BEGIN OF wa,


material(20) TYPE C,
quan TYPE I,
unit(2) TYPE C,
END OF wa.
DATA it LIKE TABLE OF wa.
wa-material = ‘F001’.
wa-quan = 50
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 150
APPEND wa TO it.
wa-material = ‘F001’.
wa-quan = 550
APPEND wa TO it.
Rohini kumar
SAP-ABAP 34

wa-material = ‘F002’.
wa-quan = 350
APPEND wa TO it.
LOOP AT it INTO wa.
wa-unit = ‘kg’.
MODIFY it FROM wa TRANSPORTING unit.
ENDLOOP.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan,
60 wa-unit.
ENDLOOP.

Note:
1. Always provide MODIFY with in LOOP………..ENDLOOP of the Internal Table which
you want to modify
2. If you are providing MODIFY outside LOOP……..ENDLOOP then INDEX addition (or)
WHERE condition is mandatory

Ques-1: What is the difference between APPEND & MODIFY?


Ans: APPEND always appends record to Internal Table (if record exists (or) not). MODIFY
modifies (adds field value) only if records exists in an Internal Table

Ques-2: When you will prefer MODIFY keyword in ABAP programming?


Ans: When all the data in an Internal Table is filled and a new filed value is required to be
added in Internal Table

Rohini kumar
SAP-ABAP 35

6. Deleting Data from Internal Table:


i) FREE
ii) REFRESH
iii) CLEAR
iv) DELETE

i) FREE:
It deletes Internal Table’s Body data along with memory
Syntax:
FREE it. (where it is Internal Table name)

ii) REFRESH:
It deletes Internal Table’s Body data but memory will not be affected
Syntax:
REFRESH it.
iii) CLEAR:
It deletes 1. Body data------- CLEAR it[ ].
2. Work Area data------- CLEAR wa.
3. Ordinary Variable data --------- CLEAR total.
Note:
CLEAR it[ ] is applicable only where Internal Table is created with OCCURS clause
Example:
1. CLEAR it[ ]. ------- deletes Header Line’s data
2. CLEAR it. -------- deletes Body’s data

iv) DELETE:
It deletes Body data based on requirement
Syntax:
DELETE it [INDEX n]
[FROM m] [TO n]
[WHERE condition]
Example:
1. LOOP AT it INTO wa.
DELETE it.
ENDLOOP.

2. DELETE it INDEX 5.

3. DELETE it FROM 10 TO 20.


4. DELETE it WHERE material = ‘F001’

27-08-2014
Rohini kumar
SAP-ABAP 36

7. DESCRIBE keyword:
It returns the Count of number of records in an Internal Table
Syntax:
DATA n TYPE I.
DESCRIBE TABLE it LINES n.
Example:
DATA: BEGIN OF wa,
material(20) TYPE C,
quan TYPE I,
END OF wa.
DATA it LIKE TABLE OF wa.
DATA n TYPE I.
wa-material = ‘F001’.
wa-quan = 50.
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 150.
APPEND wa TO it.
wa-material = ‘F001’.
wa-quan = 250.
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 350.
APPEND wa TO it.
DESRIBE TABLE it LINES n.
WRITE n.

Rohini kumar
SAP-ABAP 37

8. Coping Data between Work Areas:


i) MOVE keyword:
It transfers (or) moves data from one Work Area to another Work Area if the Structures are
same.
Example:
MOVE wa TO wa1.

ii) wa1-material = wa-material.


wa1-quan = wa-quan.

iii) MOVE-CORRESPONDING keyword:


It transfers (or) moves data from one Work Area to another Work Area if the Structures of both
the Work Areas are different
Example:
MOVE-CORRESPONDING wa TO wa1.

Note:
In real time avoid using MOVE-CORRESPONDING
instead use wa1-material = wa-material.
wa1-quan = wa-quan.

Rohini kumar
SAP-ABAP 38

9. Coping Data between Internal Tables:


i) LOOP AT it INTO wa.
APPEND wa TO it1.
ENDLOOP.

ii) If Internal Tables are created with OCCURS clause


it1[ ] = it[ ].

iii) APPEND LINES keyword:


It performs,
 Copy the hold data from one Internal Table to another Internal Table (If there is no data
in Target Internal Table)
 Appends the records at the end of another Internal Table (If Target Internal Table is
already having some records)
 It adds the records from Source Internal Table to Target Internal Table based on given
condition
Syntax:
APPEND LINES OF it [FROM m] [TO n] TO it1.
Example:
1. APPEND LINES OF it TO it1.
2. APPEND LINES OF it FROM 2 TO 3 TO it1.

Pg) * creating work area


DATA: BEGIN OF wa,
material(20) TYPE C,
quan TYPE I,
END OF wa.
* creating bodies
DATA: it LIKE TABLE OF wa,
it1 LIKE TABLE OF wa.
* appending data from work area to bodies
wa-material = ‘F001’.
wa-quan = 50.
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 150.
APPEND wa TO it.
wa-material = ‘F001’.
wa-quan = 250.
APPEND wa TO it1.
wa-material = ‘F002’.
wa-quan = 350.
Rohini kumar
SAP-ABAP 39

APPEND wa TO it1.
* coping data one body to another body
APPEND LINES OF it TO it1.
* displaying data of target body
LOOP AT it1 INTO wa.
------------- CLEAR wa.
WRITE:/10 wa-material,
30 wa-quan.
------------- CLEAR wa.
ENDLOOP.

Ques: What will happened if CLEAR is provided before WRITE & the same CLEAR is
provided after WRITE?
Ans: If CLEAR is provided before WRITE statements it will clear Work Area data so nothing
is transformed from Work Area to Virtual page (Hence no output)
If CLEAR is provided after WRITE statements data is transformed from Work Area to
Virtual page then Work Area is cleared (Hence you will find output list)

Rohini kumar
SAP-ABAP 40

28-08-2014
Control Break Statements:- (Events)
1. AT FIRST
2. AT LAST
3. AT NEW
4. AT END OF
5. ON CHANGE OF
Using these statements you can control the flow of ABAP programming statement with in the
LOOP……………ENDLOOP

AT FIRST:
It triggers during first loop iteration (first loop pass)
Syntax:
AT FIRST.
------------
-----------
ENDAT.

Note:
Use AT FIRST for providing Headers in ABAP Report

AT LAST:
It triggers for last line of an Internal Table (or) It triggers during last loop iteration
Syntax:
AT LAST.
------------
-----------
ENDAT.

Note:
Use AT LAST for printing Grand Totals in a Report

AT NEW:
It triggers for a group of similar contents (based on Character Value) in an Internal Table. (or) It
triggers whenever there is a change in field values in an Internal Table based on Character
Value
Syntax:
AT NEW <field name>.
------------
-----------
ENDAT.
Note:
Rohini kumar
SAP-ABAP 41

Use AT NEW for printing unique values for key fields in an Internal Table

AT END OF:
It will triggers the end of group of similar values in an Internal Table based on Character Field
Syntax:
AT END OF <field name>.
------------
-----------
ENDAT.
Note:
Use AT END OF for returning grand totals in an Internal Table

ON CHANGE OF:
It works similar to AT NEW
Syntax:
ON CHANGE OF <field name>.
------------
-----------
ENDON.
Note:
1. Due to some draw backs currently we are not using ON CHANGE OF
2. You should provide above Control Break Statements within the LOOP……..ENDLOOP
3. Don’t provide any conditional statements (IF, CASE,…….etc) with in Control Break
Statements
Requirement:
Material Details Report
--------- AT FIRST
The Material Cod is: F001
50 5000
100 10000
The Total Quantity is: 150 AT NEW
The Total Amount is: 15000

The Material Cod is: F002


70 6000
100 12000
The Total Quantity is: 170 AT END OF
The Total Amount is: 18000
The Grand Total Quantity is: 320
The Grand Total Amount is: 33000 ---------AT LAST
Solution:
* creating work area
Rohini kumar
SAP-ABAP 42

DATA: BEGIN OF wa,


material(10) TYPE C,
quan TYPE I,
amount TYPE I,
END OF wa.

* creating internal table


DATA it LIKE TABLE OF wa.

* filling data into it


wa-material = ‘F001’.
wa-quan = 50.
wa-amount = 5000.
APPEND wa TO it.

wa-material = ‘F002’.
wa-quan = 70.
wa-amount = 6000.
APPEND wa TO it.

wa-material = ‘F001’.
wa-quan = 100.
wa-amount = 10000.
APPEND wa TO it.

wa-material = ‘F002’.
wa-quan = 100.
wa-amount = 12000.
APPEND wa TO it.

* sorting it by material
SORT it BY material.

* appling Control Break Statements


LOOP AT it INTO wa.

AT FIRST.
WRITE:/50 ‘Materials Details Report’ COLOR 1.
SKIP.
ULINE.
ENDAT.

Rohini kumar
SAP-ABAP 43

AT NEW material.
WRITE:/ ‘The Material Code is:’, wa-material.
SKIP.
ENDAT.

WRITE:/10 wa-quan,
30 wa-amount.

AT END OF material.
SUM.
WRITE:/ ‘The Total Quantity is:’, wa-quan,
/ ‘The Total Amount is:’, wa-amount.
ULINE.
ENDAT.

AT LAST.
SUM.
WRITE:/ ‘The Grand Total Quantity is:’, wa-quan,
/ ‘The Grand Total Amount is:’, wa-amount.
ULINE.
ENDAT.

ENDLOOP.

30-08-2014
Ques: What is the difference between SUM & COLLECT keywords?
Ans: COLLECT keyword is applicable LOOP……….ENDLOOP without usage of Control
Break Statements
COLLECT keyword performs totals inside internal table body based on one (or) more
than one Character Values
SUM keyword performs totals only one Single Character Value for Control Break
Statements places the values in Work Area
COLLECT keyword works outside LOOP………ENDLOOP also where as SUM
keyword can be applied only with in LOOP………ENDLOOP

Rohini kumar
SAP-ABAP 44

INSERT keyword:
Inserts Work Area data at a specific index position inside Internal Table Body

Syntax:
INSERT <work area name> INTO <internal table name> INDEX <line number>.

Syntaxes for Internal Tables:


1. NO DATA: BEGIN OF <internal table name> OCCURS 0,
material(10) TYPE C,
quan TYPE I,
END OF <internal table name>.
Note:
Both Header Line & Body created

2. DATA <internal table name> TYPE <database table name> OCCURS 0.


Note:
Only Body created based on all fields of database table

3. DATA <internal table name> TYPE <database table name> OCCURS 0


WITH HEADERLINE.
Note:
Both Body & Header Line created

4. TYPES: BEGIN OF ty_kna1,


customer(10) TYPE C,
name(10) TYPE C,
city(10) TYPE C,
END OF ty_kna1.

DATA: <work area name> TYPE <structure name>,


<body name> TYPE TABLE OF <structure name>.
Note:
Work Area & Body created based on Sturcture

5. TYPES: BEGIN OF ty_kna1,


customer(10) TYPE C,
name(10) TYPE C,
city(10) TYPE C,
END OF ty_kna1.

DATA <body name> TYPE TABLE OF <structure name> INITIAL SIZE 0.


Note:
Rohini kumar
SAP-ABAP 45

The above Body is created when you transfer whole Body data to another Body
Example: it1[ ] = it[ ].

System Fields for Internal Table:


SAP is providing system variables maintained in a structure SYST
There are 171 system variables in the structure & all system variables start with a prefix SY
Example:
1. SY-DATUM----returns current system data
2. SY-UNAME----returns current login user name
3. SY-UZEIT------returns current time
4. SY-DATUM----returns current system data
5. SY-LANGU----returns current login language
6. SY-TABIX-----returns current LOOP pass
7. SY-TOCCU----returns OCCURS value
8. SY-TLENG----returns size of internal table
9. SY-TFILL----returns count of number of records in an internal table (it works like
DESCRIBE keyword)
Example:
* creating internal table
DATA: BEGIN OF it OCCURS 0,
material(10) TYPE C,
quan TYPE I,
amount TYPE I,
END OF wa.

* creating variable
DATA n TYPE I.

* filling data into it


wa-material = ‘F001’.
wa-quan = 50.
wa-amount = 5000.
APPEND it TO it.

wa-material = ‘F002’.
wa-quan = 70.
wa-amount = 6000.
APPEND it TO it.

wa-material = ‘F001’.
wa-quan = 100.
wa-amount = 10000.
Rohini kumar
SAP-ABAP 46

APPEND it TO it.

wa-material = ‘F002’.
wa-quan = 100.
wa-amount = 12000.
APPEND it TO it.

* counting number of records in internal table


DESCRIBE TABLE it LINES n.
WRITE:/ ‘size of it:’, SY-TLENG,
/ ‘number of records:’, SY-TFILL,
/ ‘OCCURS value:’, SY-TOCCU.

Rohini kumar
SAP-ABAP 47

DML Operations on Database Table:


a) INSERT
b) UPDATE
c) DELETE

Inserting Data into Database Table:


MODIFY keyword:
It will insert records in database table if they are not existing & performs modify operation if
they are already existing

Syntax:
1. MODIFY <database table name> FROM TABLE <internal table name>
2. MODIFY <database table name> FROM TABLE <work area name>

Example-1:
TABLES kna1.

DATA: wa TYPE kna1,


It TYPE TABLE OF kna1.

wa-kunnr = ‘0000009083’.
wa-name1 = ‘rahul’.
wa-ort01 = ‘mumbai’.
wa-pstlz = ‘400002’.
APPEND wa TO it.

MODIFY kna1 FROM TABLE it.

WRITE:/ ‘ number of records inserted:’, SY-DBCNT.

Example-2:

LOOP AT it INTO wa.


MODIFY kna1 FROM wa.
ENDLOOP.

UPDATE keyword:
Updates specific fields based on given requirement
Syntax:
UPDATE <database table name> SET field1 = wa-filed1, field2 = wa-field2……….
………….. WHERE <codition>.

Rohini kumar
SAP-ABAP 48

Example:

LOOP AT it INTO wa.


UPDATE kna1 SET ort01 = wa-orto1, pstlz = wa-pstlz WHERE kunnr = wa-kunnr.
ENDLOOP.

DELETE keyword:
Deletes database tables data based on given requirement

Syntax:
1. DELETE <database table name> FROM TABLE <internal table name>.
2. DELETE FROM <database table name> WHERE <condition>

Example-1:
DELETE kna1 FROM TABLE it.
WRITE:/ ‘number of records deleted:’, SY-DBCNT.

Example-2:
LOOP AT it INTO wa.
DELETE FROM kna1 WHERE kunnr = wa-kunnr.
ENDLOOP.

Example-3:
DELETE FROM kna1 WHERE kunnr = ‘0000009083’.

INSERT keyword:
Inserts data into database table

Syntax:
INSERT INTO <database table name> VALUES <work area name>.

Rohini kumar
SAP-ABAP 49

Types of Internal Tables:


1. Standard Table
2. Hashed Table
3. Sorted Table
4. Index Table
Note:
The default Internal Table is Standard

Assignments-1:
Students Details Report
Sno Sname Phy Chem Maths Total
100 satya 70 60 90 220
101 pruthvi 80 70 60 210
102 raj 90 80 80 250
240 210 230 680

Assignment-2:
Material Quan
F001 50 F001 150
F001 100 F002 220
F002 70
F002 150

Hint:
1. Create 3 Internal Tables
2. Use DELETE ADJACENT DUPLICATE keyword
3. Use CLEAR keyword

Rohini kumar
SAP-ABAP 50

01-09-2014
Data Dictionary
It is also called ABAP Dictionary
It is a repository of data
T Code for Data Dictionary is SE11

Objects in Data Dictionary:


1. Database Table
2. Structure
3. View
4. Data Element
5. Domain
6. Table Type
7. Type Group
8. Lock Object
9. Search Help

Database Table:
It is a set of fields which holds data persistently

Data Element:
Using Data Element you can provide field documentation for a specific field
Conceptually Data Element = Field Lable + Domain

Domain:
It specifies the technical attributes of a field (Data Type & Field Size)

Ques-1: Have ever created a Zee table in real time?


Ans: Yes

Ques-2: SAP is providing so many tables then why you created a table?
Ans: SAP is not providing table for Allowances,
Similarly SAP is not providing a table for Transportation Details.
Example: Delivery challana number, date, truck number……….etc
Similarly in real time we have to create a table for Customer mail ids for sending invoice
details…….etc

Rohini kumar
SAP-ABAP 51

Table Creation:
 Go to SE11
 Provide Title: ZMM_TR
 Select Create option
 Provide Short Description: Truck Entry Details
Note:
In real time we are working with application data.
Application data is 2 types
1. Master Data
2. Transactional Data

Master Data:
It is created only once in Client Database & modified very rarely
Example:
Bank Master Data, Customer Master Data, Vendor Master Data, Employee Master Data…etc

Transactional Data:
It is always created based on Master Data
It is modified frequently in SAP database
Example:
Purchase Order Data, Sales Order Data………..etc

Delivery Class:
It specifies the type of data a table can hold
A-------specifies Application Data

 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab
Field key Data Element
TRNO ZTR_DAT
 Double click on ZTR_DAT
 You will find a message pop-up select Yes option
 Select Local Object option
 Again you will find a warning: application table should be client specific the press Enter
 You will find a pop-up: create the data element then click Yes
 Provide Short Description: Truck Number
 Provide Domain: ZTR_Domain
 Double click on Domain Name (ZTR_Domain)
 Click Yes
 Select Local Object
Note:
Rohini kumar
SAP-ABAP 52

$TMP is a default package for non-transportable object (local object)


 You will find a pop-up: create the domain click Yes
 Provide Short Description: Domain for Truck Field
 Data Type: CHAR
 No. Characters: 10
 Activate the domain (Ctrl+F3)
 Select Local Object
 Go to back (F3)
 Select Field Label tab
Length field lable
Short 10 trno
Medium 20 Truck Number
Lang 40 Truck Number
Heading 50 Truck Number
 Activate data element (Ctrl+F3)
 Go to back (F3)
Field key data element
Ddate LFDAT
Driver ZDR_DAT
 Double click on ZDR_DAT
 Save Yes
 You will find a warning pop-up: Enter
 You will find a pop-up: create data element Yes
 Provide Short Description: Driver Name
 Provide Domain: CHAR20
 Select Field Label tab
 Provide Short Description: Driver Name
Length field lable
Short 10 Dname
Medium 20 Driver Name
Lang 40 Driver Name
Heading 50 Driver Name
 Activate data element (Ctrl+F3)
 Go to back (F3)
 Select Technical Settings button
 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Rohini kumar
SAP-ABAP 53

 Ignore the warnings & go back (F3)

Step-1:
Navigation for Inserting Records into a Table:
 Select Utilites---Table Contents---Create Entries
TRNO:_______
Ddate:_________
Driver:_________
 Save (Ctrl+S)
 Select Reset button for new record

Step-2:
Navigation for Viewing Records in a Table:
 Select Utilities---Table Contents---Display
 Select Clock symbol (F8)

Rohini kumar
SAP-ABAP 54

02-09-2014
Structure:
It is a group of fields
Physically it will never hold any data
Structure can be reuse in other programs & other tables

Differences between Structure & Table:


Structure Table
1. It is a collection of fields & it 1. It is a Structure & hold data persistently
Never hold data
2. It can be reuse in other tables 2. It cannot be reuse

Difference between .INCLUDE & APPEND STRUCTURE:


Using .include you can add a Structure in N no. of tables
.include is best for adding Structure in ZEE tables
Using Append Structure you can add a Structure only in a single table
Append Structure is best for adding Structure in Standard Tables

Structure Creation:
 Go to SE11
 Select Data Type: ZMM_Order
 Select Create option
 You will find a pop-up select Structure option & press Enter
 Provide Short Description: Order Fields
 Provide Component: EBELN
BEDAT
 Provide Component Type: EBELN
BEDAT
 Activate structure (Ctrl+F3)
 Select Local Object
 You will find warnings pop-up then select Yes
 Ignore warnings & go back (F3)

Navigation for Including a Structure in a Table:


 Go to SE11
 Provide Database Table: ZMM_TR
 Select Change option
 Under Field: .include
 Under Data Element: ZMM_Order
 Activate table (Ctrl+F3)
 Select Contents option
 Select Clock symbol (F8)
Rohini kumar
SAP-ABAP 55

 Select SelectAll option (F9)


 Select Change option (F6)
 Add data & save (Ctrl+S)
 Select Next Entry option for next record

Primary & Foreign key Relationship:


SAP is a tightly integrated package. In SAP between all the tables there is a relationship called
Primary & Foreign key Relationship.

Condition (or) Pre represents for maintaining a Relationship between Two Tables:
In SAP if you want to create relationship between two tables there should be Key Field with
common data between tables even the fields are not common there should be common data
between two tables

Establishing Relationship between Two Tables:


 Go to SE11
 Provide Database Table: ZMM_DCTR
 Select Create option
 Provide Short Description: Challana Details Delivery
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed
 Select Fields tab
Field Key Data Element

MANDT MANDT
DCNO ZDAT_DC
 Double click on ZDAT_DC
 Click on Yes, Local Object & Yes
 Provide Short Description: Data Element for DC
 Provide Domain: CHAR10
 Select Field Label option
 Medium: 20
 Field Label: Delivery Challana
 Activate Field (Ctrl+F3)
 Like add all required fields (DCdate, TRNO)
 Select TRNO field
 Select Foreign Keys option
 You will find a pop-up provide Short Text: Relationship
 Check Table: ZMM_TR
 Select Generate Proposal button
 Select Enter option
 Provide Field: .include
Rohini kumar
SAP-ABAP 56

 Data Element: ZMM_Order (it provides EBLEN, BEDAT fields)


 Select Technical Settings option
 Provide Data Class: APPL1 (for Transactional data)
 Size Category: 0 (for upto 8000 records)
 Select Save option (Ctrl+s)

Data Class:
It is a physical storage location (or) table space where tables are stored ultimately after
activation. It is of 3 types
1. APPL0 (holds master data tables)
2. APPL1 (holds transactional data tables)
3. APPL2 (holds organizational & customizing data related tables)

Size Category:
It specifies the probable space requirement for a table in the database
 Go to back (F3)
 Activate the table (Ctrl+F3)
 Select Content option
 Apply F4 on Truck Number field
 You will find data related to Check Table
 Go to back (F3)
 Select Utilities--Table Contents--Create Entries

Note:
In real time we are not creating any relationships between tables

Ques: What is the difference between Client Dependant & Client Independent tables?
Ans: A table created without MANDT field is Client Independent table. Client Independent
tables are available in other clients also with data
A table created with MANDT field is Client Dependant table. Client Dependent tables
are available in other clients also without data

Note:
In real time it is always advisable to create Client Dependant tables

Rohini kumar
SAP-ABAP 57

View:
 It is a logical table (virtual table) which is created based on other tables
 It hires Fields & Data from other tables

Difference between Table & View:


Table View
1. Having its own fields & data 1. Always created based on other table
2. It holds either master data (or) 2. It holds both master data & transactional data
Transactional data

Types of Views:
1. Database View
2. Projection View
3. Help View
4. Maintenance View

Database View:
It is always created based on two (or) more than two tables having relationship between them

Database View Creation:


 Go to SE11
 Select View option: ZMM_DNTR
 Select Create option
 You will find a pop-up select Database View
 Provide Short Description: Database View
Tables: ZMM_TR
ZMM_DCTR
 Select Relationships button
 You will find a pop-up double click on Check Box under referenced table heading &
press Enter
 Select View Flds option
 Select Tables Fields option
 Double click on ZMM_TR
 Select all fields & press Enter
 Select Tables Fields option
 Double click on ZMM_DCTR
 Select DCNO, DCdate & press Enter
 Activate view (Ctrl+F3)

Rohini kumar
SAP-ABAP 58

Testing Database View:


 Select Contents option
 Select Clock symbol (F8)

Note:
View always holds common data (linked data between two (or) more than two tables)

03-09-2014
Projection View:
It created based on a single table with specific fields

Projection View Creation:


 Go to SE11
 Select View option: ZPROJ_VIEW
 Select Creation option
 You will find a pop-up select Projection View option then press Enter
 Provide Short Description: Projection View
 Provide Basis Table: KNA1
 Select Table Fields tab
 You will find all fields of KNA1 table then select KUNNR, NAME1, ORT01, PSTLZ
then press Enter
 Activate view (Ctrl+F3)

Testing Projection View:


 Select Contents option
 Click Clock symbol (F8)

Rohini kumar
SAP-ABAP 59

Search Help:
Using search help you can search application data based on given search criteria
Search help works based on F4 function key
Note:
In a table (or) tables there is large volume of application data. Manual search of data will take
lot of time. SAP is providing an option called Search Help for searching data as for requirement

Types of Search Help:


1. Elementary Search Help
2. Collective Search Help

Elementary Search Help:


It is always created based on a single table

Creation of Elementary Search Help-1:


 Go to SE11
 Select Search Help: ZELE_TRSEARCH
 Select Create option
 You will find a pop-up then select Elementary Search Help then press Enter
 Provide Short Description: Elementary Search Help for Truck Details
 Selection Method: ZMM_TR (table name)
Search Help Parameter Import Export LPOS SPOS
TRNO _/ _/ 1 1
DDATE _/ _/ 2 2
EBLEN _/ _/ 3 3
BEDAT _/ _/ 4 4
DRIVER _/ _/ 5 5
 Activate search help (Ctrl+F3)

Testing Search Help:


 Select F8
 You will find a pop-up then press Enter

Creation of Elementary Search Help-2:


 Go to SE11
 Select Search Help: ZELE_DMSEARCH
 Select Create option
 You will find a pop-up then select Elementary Search Help then press Enter
 Provide Short Description: Elementary Search Help for Delivery Challana Details
 Selection Method: ZMM_DCTR (table name)
Search Help Parameter Import Export LPOS SPOS
DCNO _/ _/ 1 1
Rohini kumar
SAP-ABAP 60

DCDATE _/ _/ 2 2
 Activate search help (Ctrl+F3)
Testing Search Help:
 Select F8
 You will find a pop-up then press Enter

Collective Search Help:


It is a group of two (or) more than two Elementary Search Help contained to form a Collective
Search Help

Creation of Collective Search Help:


 Go to SE11
 Select Search Help: ZCOLL_TRDM
 Select Create option
 You will find a pop-up then select Collective Search Help option then press Enter
 Provide Short Description: Collective Search Help for DC details
 Select Included Search Help tab
 Provide Search Help: ZELE_TRSEARCH
ZELE_DMSEARCH
 Activate search help

Testing Collective Search Help:


 Select F8
 You will find a pop-up then press Enter

Calling a Search Help in an ABAP Program:


Syntax:
PARAMETERS <parameter name> MATCHCODE OBJECT <search help name>
Example:
PARAMETERS p_tr MATCHCODE OBJECT ZELE_TRSEARCH

Note:
In real time calling a search help using MATCHCODE OBJECT is outdated

Adding a Search Help in a Table:


 Go to SE11
 Provide Database Table: ZMM_TR
 Select Change option
 Place cursor on TRNO field & select Srch Help option
 Provide Search Help Name: ZELE_TRSEARCH
 Select Yes & then Yes
 Activate table (Ctrl+F3)
Rohini kumar
SAP-ABAP 61

Testing:
 Select Contents option
 Apply F4 on TRNO field
 You will find an error then
 Go to SE38
 Provide Program: ZMM_TR
 Select Create option
 Write PARAMETERS p_tr TYPE ZMM_TR-TRNO.
 Activate program then go back & test the table

Rohini kumar
SAP-ABAP 62

Table Maintenance Generator (TMG):


Using TMG you can directly Insert, Update, Delete data from a database table

Note:
1. In real time for certain requirements when data is not linked with other tables. Data can
be inserted (or) manipulated from table level directly. This can be done by creating a
TMG on that table
2. TMG is allowed only for ZEE tables

Creation of Table Maintenance Generator:


Create Table First:
 Go to SE11
 Provide Database Table: ZSD_MAIL
 Select Create option
 Provide Short Description: Customer Mail Table
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab
Field key Data Element
MANDT _/ MANDT
KUNNR _/ KUNNR
MAILID _/ ZMAIL_DAT
 Double click on ZMAIL_DAT
 You will find a message pop-up select Yes option
 Select Local Object option
 Again you will find a warning: application table should be client specific the press Enter
 You will find a pop-up: create the data element then click Yes
 Provide Short Description: Customer Mail Id
 Provide Domain: CHAR
 Select Field Label tab
Length field lable
Medium 20 Mail Id
 Activate data element (Ctrl+F3)
 Go to back (F3)
Field key data element
INDICATOR _/ Z_INDICATOR
 Double click on Z_INDICATOR
 Save Yes
 You will find a warning pop-up: Enter
 You will find a pop-up: create data element Yes
 Provide Short Description: Indicator
Rohini kumar
SAP-ABAP 63

 Provide Domain: CHAR20


 Select Value Range tab
FIX VAR Short Desciption
1 TO
2 CC
3 BCC
 Activate the domain (Ctrl+F3)
 Go to back (F3)
 Select Field Label tab
 Provide Short Description: Indicator
Length field lable
Medium 20 Indicator
 Activate data element (Ctrl+F3)
 Go to back (F3)
 Select Technical Settings button
 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)

Creating TMG:
 Go to SE80
 Under Test Repository select Function Group option
 Provide Function Group: ZMAIL_GR then press Enter
 You will find a pop-up create object press Yes
 Again you will find a pop-up Short Text: Mail Group then press Enter
 Select Local Object

 Go to SE11
 Provide Database Table: ZSD_MAIL
 Select Change option
 Select Utilities---Table Maintenance Generator
 Provide Authorization Group: &NC&
 Provide Function Group: ZMAIL_GR
 Select One Step option
 Select Scr Number(s) button
 You will find a pop-up select Propose Screen Number option then press Enter
 Select Create option (F6)
Rohini kumar
SAP-ABAP 64

 Select Save option (Enter)


 Select Local Object (Enter)

Creating TCode:
 Go to SE93
 Provide Transaction Code: ZMAIL
 Select Create option
 Provide Short Text: Customer Mail Details
 Select Transaction with Parameters (Parameter Transaction) option then press Enter
 Provide Transaction: SM30
 Scroll down to bottom then provide
 Name of Screen Field Value
ViewName SZD_MAIL
Update X
 Save (Ctrl+s)
 Select Favorites---Inset Transaction
 Provide Transaction Code: ZMAIL then press Enter

Testing TMG:
 Provide Run TCode: ZMAIL then press Enter
 Provide Table: ZSD_MAIL
 Select Maintain option
 Select New Entries button
 Insert records & save

Navigation for maintain Default Values using TMG:


Sometimes Date, User name, Time needs to be entered in a table. These values will not be
inserted by client (inserted automatically by system)
Create Table First:
 Go to SE11
 Provide Database Table: ZFI_LIMITS
 Select Create option
 Provide Short Description: Bank Limits
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab
Field key Data Element
MANDT _/ MANDT
COUNTER _/ INT1
Bank Name _/ BANKA
Amount DMBTR
Rohini kumar
SAP-ABAP 65

ERDAT ERDAT
Uname ZUSER
ERTIM ZTIMEDAT
 Select Currency Quantity Fields tab
Provide Amount: Reference Table Reference Field
T001 WAERS
 Select Technical Settings button
 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)

Providing default values using TMG:


 Select Utilities---Table Maintenance Generator
 Provide Authorization Group: &NC&
 Provide Function Group: ZMAIL_GR
 Select Find Scr Number option then press Enter
 Select Create option (F6) then press Enter
 Select Environment option
 Select Modification------Events
 You will find a message- do not make any changes on SAP data then press Enter
 Select New Entries option provide
T Form Routine
05 Create_Entry
 Press Enter
 Under Editor double click
 You will find a pop-up then press Enter
 You will find a warnings pop-up then press Enter
 Provide code for default values
FORM CREATE_ENTRY.
ZFI_LIMITS-ERDAT = SY-DATUM.
ZFI_LIMITS-UNAME = SY-UNAME.
ZFI_LIMITS-ERTIM = SY-UZETT.
ENDFORM.
 Activate table & go back
Testing:
 Go to SM30
 Provide Table: ZFI_LIMITS
Rohini kumar
SAP-ABAP 66

 Select Maintain option


 Select New Entries option
 Insert records & Save
 You will find a dump note: SAPLZMAIL_GR

 Go to SE38
 Provide Program: SAPLZMAIL_GR
 Select Change option
 Activate the program (Ctrl+F3)

 Go to SM30
 Provide Table: ZFI_LIMITS
 Select Maintain option
 Select New Entries option
 Insert records & Save

04-09-2014
Adding Check boxes in Table in TMG:
Create Table First:
 Go to SE11
 Provide Database Table: ZPP_MACHINE
 Select Create option
 Provide Short Description: Machine Down Time
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab
Field key Data Element
MANDT _/ MANDT
MACHNO _/ ZMACH_DAT
BUDAT _/ BUDAT
STIME ZSTART_DAT
ETIME ZEND_DAT
DTIME ZDOWN_DAT
CHK ZCHK_DAT

 Double click on ZCHK_DAT


 Save Yes
 You will find a warning pop-up: Enter
 You will find a pop-up: create data element Yes
 Provide Short Description: Check Box
 Provide Domain: ZCHK_DOMAIN
Rohini kumar
SAP-ABAP 67

 Provide Data type: CHAR


 Provide [Link] Characters: 1
 Select Value Range tab
FIX VAR Short Desciption
X ON
OFF
 Activate the domain (Ctrl+F3)
 Go to back (F3)
 Select Field Label tab
 Provide Short Description: Check Box
Length field lable
Medium 20 Check
 Activate data element (Ctrl+F3)
 Go to back (F3)
 Select Technical Settings button
 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)

Providing Check boxes using TMG:


 Select Utilities---Table Maintenance Generator
 Provide Authorization Group: &NC&
 Provide Function Group: ZMAIL_GR
 Select Find Scr Number option then press Enter
 Select Create option (F6) then press Enter
 Select Environment option
 Select Modification------Events
 You will find a message- do not make any changes on SAP data then press Enter
 Select New Entries option provide
T Form Routine
05 Create_Entry
 Press Enter
 Under Editor double click
 You will find a pop-up then press Enter
 You will find a warnings pop-up then press Enter
 Provide code for default values
FORM CREATE_ENTRY.
Rohini kumar
SAP-ABAP 68

ZDOWN_DAT = ZEND_DAT - ZSTART_DAT.


ENDFORM.
 Activate table & go back

Creating TCode:
 Go to SE93
 Provide Transaction Code: ZDOWN
 Select Create option
 Provide Short Text: Machine Down Time
 Select Transaction with Parameters (Parameter Transaction) option then press Enter
 Provide Transaction: SM30
 Scroll down to bottom then provide
 Name of Screen Field Value
ViewName SPP_MACHINE
Update X
 Save (Ctrl+s)
 Select Favorites---Inset Transaction
Provide Transaction Code: ZDOWN then press Enter

Testing:
 Go to SE38
 Provide Program: SAPLZDOWN
 Select Change option
 Activate the program (Ctrl+F3)

 Go to SM30
 Provide Table: ZPP_MACHINE
 Select Maintain option
 Select New Entries option
 Insert records & Save

Rohini kumar
SAP-ABAP 69

Text Table:
Use text table for storing explanatory texts. For storing such texts it is not advisable to store in
Primary Table

Note:
Text Tables works based on Primary & Foreign key relationship

Creation of Text Table:


First Create Primary Table:
 Go to SE11
 Provide Database Table: ZTEXT_TAB
 Select Create option
 Provide Short Description: Department Table
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab
Field key Data Element
MANDT _/ MANDT
DEPT _/ ZDEPT_DAT

 Select Technical Settings button


 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)

Creating Text Table:


 Go to SE11
 Provide Database Table: ZTEXT_TAB1
 Select Create option
 Provide Short Description: Department Text
 Provide Delivery Class: A
 Provide Table View Maintenance: Display Maintenance Allowed (both display & create
entries is allowed)
 Select Fields tab

Field key Data Element


Rohini kumar
SAP-ABAP 70

MANDT _/ MANDT (for client dependant table)


SPRAS _/ SPRAS (for language selection)
DEPT _/ ZDEPT_DAT
DESC1 MAKTX

 Select Technical Settings button


 Provide Data Class: APPL0 (APPL0---for master data & APPL1---for transactional
data)
 Provide Size Category: 0 (it means table holds up to 8000 records)
 Select Save option (Ctrl+s)
 Select back (F3)
 Activate Table (Ctrl+F3)
 During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)

 Select SPRAS
 Select Foreign keys option
 You will find a pop-up then press Yes & then press Enter
 Select DEPT
 Select Foreign keys option
 Provide Check Table: ZTEXT_TAB
 Select Generate Proposal button
 At bottom select Keys Fields of a Text Table option
 Provide Cardinality 1:N then press Enter
 Select MANDT
 Select Foreign keys option
 You will find a pop-up then press Yes & then press Enter
 Activate table (Ctrl+F3)

Testing Text Table:


 Go to SE11
 Provide Database Table: ZTEXT_TAB (primary table name)
 Select Change option
 Select Utilities----Table Contents----Create Enteries
 Here you will find text table options also then provide text & save

Rohini kumar
SAP-ABAP 71

Some Important Steps for Working with Standard Tables:


 Go to SE11
 Provide Database Table: KNA1
 Select Display option
 Select Contents option
Step-1:
Navigation for Getting Selected Fields in Output List:
 Select Settings---Format List----Choose Fields option
 By default all fields are selected then select Deselect option (Shift+F2)
 Select required fields KUNNR, NAME1, ORT01, PSTLZ then Enter
 Execute (F8)

Step-2:
Adding (or) Removing Fields from Selection Screen:
 Select Settings---Fields for Selection option
 Select & deselect fields based on requirement then Enter

Step-3:
Transforming Data from SAP to Local File (XL Sheet):
 Select F8
 Select Local File option (last from 5th option) (Ctrl+Shift+F9)
 You will find a pop-up select Spread Sheet option then Enter
 You will find a pop-up apply F4 on Directory field
 You will find a pop-up then select Desktop
 Provide File Name: Customer then select Save option
 Select Generate option

Rohini kumar
SAP-ABAP 72

05-09-2014
Types of Tables:
1. Transparent Table
2. Cluster Table
3. Pooled Table

Transparent Table:
 It is a default table in SAP
 It holds application data (master data & transactional data)
 It follows one-to-one relationship (a table created in Presentation Server, if with the same
Structure & Fields another table created in Database Server)
 These tables can be accessed even outside SAP
 This table allows both Open SQL & Native SQL statements
 In real time we are mostly working with Transparent Table

Pooled Table & Clustered Table:


 These tables holds SAP proprietary format data (system data, statistical data, control
data……)
 These tables allows (or) follows many-to-one relationship (many tables data combined to
form a Pooled Table & Clustered Table)
 These tables cannot be accessed outside SAP
 These tables allows only Open SAL statements
 Very rarely we are using these tables (most common tables used one BSEG, KONU)

Note:
You cannot apply Inner-Join statement on Cluster Table

Rohini kumar
SAP-ABAP 73

Open SQL & Native SQL Statements:


Native SQL Statements:
 These are traditional SQL statements
 With Native SQL Statement request is directly forwarded to Database Server which
processes the request & returns the response
 With Native SQL statement performance of the system is highly degraded
Syntax:
EXEC SQL.
SELECT………………
ENDEXECSQL.

Open SQL Statements:

These are normal SQL statements which are converted to embedded SQL using database
interface which is further passed to Buffer, if data is available in Buffer you will get the
response

Rohini kumar
SAP-ABAP 74

Buffering Concept:
Buffering is a way of improving performance which accessing data from database. Whenever
you run a program it will make a request to Buffer for data, if it is not available it will make a
request to Database Server which returns response to Buffer & simultaneously to Program. Next
time whenever you run the same program this time it will collect the data directly from Buffer

Note:
Buffering is important for frequent & common accessing of application data

Types of Buffering:
1. Single Record Buffering
2. Generic Buffering
3. Full Buffering

Single Record Buffering:(SELECT SINGLE)


This buffering is used for frequent access of data from database. Here volume of data is very
large

Generic Buffering:(WHERE <condition>)


Use generic buffering where records are accessed based on condition

Full Buffering:(SELECT *)
This buffer is allocated when you are fletching all the fields from database table

Check Table:
It works based on Primary & Foreign key relationship. Data is always validated at Field level

Value Table:
It is a default Check Table & it always maintained under Domain under Value Range option

Rohini kumar
SAP-ABAP 75

09-09-2014
MODULES
MM Module:
Materials Management Module
Departments in MM Module:
1. Purchase
2. Warehouse
3. General Stores
4. Finance in MM

Process Flow in MM Module:


IT Department

Purchase Requisition (Indent)

PR Approval (HOD, VP, President)

Purchasing Department Vendor Analysis

Request for Quotation Best Vendor

Vendor1 Vendor2 Vendor3 Purchase Order

Quotation PO Approval

Delivery (Manifacture+Pickup+Packing) Vendor1

Delivery Challana (Delivery Note)

Row Material Finished Goods

General Store (GRS)

Invoice Verification (Bill Processing)

Vendor Payment

Rohini kumar
SAP-ABAP 76

Purchase Order:

Vendor: PO Date:
Vendor Details:

Payment Terms:
Item [Link] Pieces Unit price Amount
10 2 100 200
-- - - -
- - - -

Brief Flow:
PR

PR Purchase

RFQ

PO

PO Release

GRN

IV

Vendor Payment

Applications & Tables in MM Module:


1. Purchase Requisition:
Tcodes: ME51N, ME52N, ME53N
Tables: EBAN
Note: The key field is BANFN (PR number)

2. Purchase Order:
Tcodes: ME21N, ME22N, ME23N
Tables: EKKO, EKPO, EKBE, EKKN, EKAN, EKET
Note: The key field is EBELN (PO number)
3. Goods Receipt:
Rohini kumar
SAP-ABAP 77

Tcodes: MIGO
Tables: MKPF, MIEG
Note: The key field is MBLNR (Material Document Number)

4. Invoice Verification:
Tcodes: MIR0, MIR7
Tables: RBKP, RSEG
Note: The key field is BELNR (Accounting Document Number)

5. Vendor Master Data:


Tcodes: XK01, XK02, XK03
Tables: LFA1, LFB1, LFM1, LFBK, LFC1
Note: The key field is LIFNR (Vendor Account Number)

6. Material Master Data:


Tcodes: MM01, MM02, MM03
Tables: MARA, MARC, MARM, MARD, MAKT, MVKE, MARC, MAST, MBEW, MSLB
Note: The key field is MATNR (Material Code)

7. Service Entry Sheet:


Tcodes: ML81N
Tables: ESSR, ESSL
Note: The key field is LBLNI (Entry Sheet Number)

Rohini kumar
SAP-ABAP 78

Inner Joins:
Use inner joins for fletching common data from two (or) more than two tables
Syntax-1:
SELECT LFA1~lifnr LFA1~name1
EKKO~ebeln EKKO~bedat
EKPO~menge EKPO~netpr
INTO TABLE <it> FROM LFA1
INNER JOIN EKKO ON LFA1~lifnr=EKKO~lifnr
INNER JOIN EKPO ON EKKO~ebeln=EKPO~ebeln
WHERE <codition>

Syntax-2:
SELECT A~lifnr A~name1
B~ebeln B~bedat
C~menge C~netpr
INTO TABLE <it> FROM LFA1 AS A
INNER JOIN EKKO AS B ON A~lifnr=B~lifnr
INNER JOIN KKPO AS C ON B~ebeln=C~ebeln
WHERE <codition>

10-09-2014
Example:
Lifnr name1 ebeln lifnr bedat
1 X 100 1 1.6.2014
2 Y 200 1 2.3.2014
3 Z 300 2 3.10.2014
4 M 400 2 5.6.2014
500 3 10.9.2014
Inner Join Left Outer Join
1 X 100 1.6.2014 1 X 100 1.6.2014
1 X 200 2.3.2014 1 X 200 2.3.2014
2 Y 300 3.10.2014 2 Y 300 3.10.2014
2 Y 400 5.6.2014 2 Y 400 5.6.2014
3 Z 500 10.9.2014 3 Z 500 10.9.2014
4 M

Rohini kumar
SAP-ABAP 79

Requirement:
Purchase Order Details based on Vendors
Input:
Vendor code------- s_lifnr to
Company code---- s_bukrs to
Plant ------- s_werks to
Material type------ s_matnr to
Material group---- s_matkl to
Po date-------------- s_bedat to

Summary
Details

Output: LFA1-lifnr EKKO-ebeln EKKO-bedat EKPO-matnr EKPO-menge EKPO-netpr

1000 EKPO-meins
3000 [Link] 100-100 50 2000 PC
3001 15.6.2014 100-101 70 3000 PC
Totals 120 5000

1001
5001 3.6.201 F001 2 80 PC
5002 9.6.2014 F002 1 90 PC
5003 15.6.2014 F003 3 100 PC
Totals 6 270

Grand totals 126 5270

Solution:
Go to SE38
Provide Program: ZMM_Purchase_Order_Details
Select Create
Title: Purchase Order Details based on Vendors
Type: Executable Program
Select Save, Local Object

* provide tables work area


TABLES: LFA1, EKKO, EKPO

* provide selection scree


Rohini kumar
SAP-ABAP 80

SELECTION-SCREE: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.


SELECT-OPTIONS: s_lifnr FOR LFA1-lifnr
s_bukrs FOR EKKO- bukrs
s_mtart FOR EKPO-mtart
s_matkl FOR EKPO-matkl
s_bedat FOR EKKO-bedat
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREE: BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.


PARAMETERS: p_rb1 RADIOBUTTON GROUP RG1
p_rb2 RADIOBUTTON GROUP RG1
SELECTION-SCREEN: END OF BLOCK b2.

TYPES: BEGIN OF ty_po,


lifnr TYPE LIFNR,
ebeln TYPE EBELN,
bedat TYPE BEDAT,
matnr TYPE MATNR,
meins TYPE MEINS,
mengeTYPE MENGE_D,
netpr TYPE NETPR,
END OF ty_po.

DATA: wa_po TYPE ty_po,


it_po TYPE TABLE OF ty_po.

SELECT LFA1~lifnr EKKO~ebeln EKKO~bedat EKPO~matnr EKPO~meins


EKPO~menge EKPO~netpr INTO TABLE it_po FROM LFA1
INNER JOIN EKKO
ON LFA1~lifnr = EKKO~lifnr
INNER JOIN EKPO
ON EKKO~ebeln = EKPO~ebeln
WHERE LFA1~lifnr IN s_lifnr
AND EKKO~bukrs IN s_bukrs
AND EKPO~werks IN s_werks
AND EKPO~mtart IN s_mtart
AND EKPO~matkl IN s_matkl
AND EKKO~bedat IN s_bedat.

IF p_rb1 EQ ‘X’.
SORT it_po BY lifnr.
Rohini kumar
SAP-ABAP 81

LOOP AT it_po INTO wa_po.

AT NEW lifnr.
WRITE:/10 wa_po-lifnr COLOR 1.
SKIP.
ENDAT.

FORMAT COLOR COL_GROUP INTENSIFIED OFF.


[Link] AT 1(135).
WRITE:/ SY-VLINE,
10 wa_po-ebeln,
30 wa_po-bedat,
50 wa_po-matnr,
70 wa_po-meins,
90 wa_po-menge,
100 wa_po-netpr,
135 SY-VLINE.

AT END OF lifnr.
SUM.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
[Link] AT 1(135).
WRITE:/ SY-VLINE,
10 ‘Totals’,
70 wa_po-menge,
90 wa_po-netpr,
135 SY-VLINE.
ENDAT.

AT LAST.
SUM.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
[Link] AT 1(135).
WRITE:/10 ‘Grand Totals’,
70 wa_po-menge,
90 wa_po-netpr,
135 SY-VLINE.
ENDAT.

ENDLOOP.
ELSE
LOOP AT it_po INTO wa_po.
Rohini kumar
SAP-ABAP 82

AT FIRST.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
[Link] AT 1(135).
WRITE:/ SY-VLINE,
10 ‘Vendor Code’,
25 ‘PO Number’,
35 ‘PO Date’,
45 ‘Material Code’,
60 ‘Unit of Measure’,
70 ‘Quantity’,
80 ‘Unit Price’,
135 SY-VLINE.
[Link] AT 1(135).
ENDAT.

FORMAT COLOR COL_GROUP INTENSIFIED OFF.


[Link] AT 1(135).
WRITE:/ SY-VLINE,
5 wa_po-lifnr,
10 wa_po-ebeln,
30 wa_po-bedat,
50 wa_po-matnr,
70 wa_po-meins,
90 wa_po-menge,
100 wa_po-netpr,
135 SY-VLINE.

ENDLOOP.
ENDIF.

Rohini kumar
SAP-ABAP 83

LFA1 Table:
This table holds Vendor Master Data

Fields:
1. Lifnr-------Vendor Number
2. Land1-----Country of Vendor
3. Name1----Name of Vendor
4. Ort01-----City of Vendor
5. Pstlz------Postal Code of Vendor
6. Adrnr-----Address Number

Links:
LFA1~adrnr
ADRC~addrnumber

7. Brsch-----Industry Key

EKKO Table:
This table holds Purchase Order Header Data

Fields:
1. Ebeln-------Purchase Order Number
2. Bukrs------Company Code
3. Bsart-------Purchasing Document Type
4. Statu-------Status of Purchase Order
5. Lifnr-------Vendor Number

Links:
LFA1~lifnr
EKKO~lifnr

6. Zterm------Payment Terms
7. Zbd1p-----Cash Discount Percentage
8. Ekorg------Purchase Organization (Purchase Department)
9. Ekgrp------Purchasing Group
[Link]------Currency
[Link]------Exchange Rate
[Link]-------Purchase Order Date
13.Inco1, Inco2-------International Terms for Carrying Bussiness
[Link]------Tax Number

Links:
Rohini kumar
SAP-ABAP 84

EKKO~knumv
KONU~knumv

[Link]------Pricing Procedure
[Link]-------Release Indicator

EKPO Table:
This table holds Purchase Document Item Data

Fields:
1. Ebeln-------Purchase Order Number

Links:
EKKO~ebeln
EKPO~ebeln

2. Ebelp------Item Number
3. Txzo1-----Item Text
4. Matnr-----Material Code
5. Werks-----Plant
6. Lgort------Storage Location
7. Matkl-----Material Group
8. Menge------Purchase Order Quantity
9. Meins------Unit of Measurement
[Link]------Unit Price
[Link]------Total Price
[Link]-----Sales Tax Code
[Link]--------Delivery Completed Indicator

Rohini kumar
SAP-ABAP 85

11-09-2014
Message Handling:
Using MESSAGE keyword you can display your own message

Note:
SY-SUBRC
 It returns values after ABAP statement
 It returns 0 if an ABAP statement is processed successfully otherwise it returns Exception
(other than 0 value)

Example:
SELECT…………………
…………………………..
IF SY-SUBRC EQ 0.
MESSAGE ‘Data Found’ TYPE ‘I’.
ELSE.
MESSAGE ‘Enter Valid Input’ TYPE ‘E’.

Message Class:
 You can store all the messages in Message Class also
 T-code for Message Class is SE91

Example:
IF SY-SUBRC EQ 0.
MESSAGE I000(zmm_mess1).
ELSE.
MESSAGE E001(zmm_mess1).

 Double click on zmm_mess1 (OR)


 Go to SE91
 Provide Message Class: zmm_mess1
 Select Create option
 Provide Short Text: Message Handling
 Select Save option
 Provide Messages
000---------Data Found
001---------Enter Valid Input
 Select Save option
 Activate Message Handling

Rohini kumar
SAP-ABAP 86

Message Options:
I-----Information------Information pop-up is displayed
S----Status------Message is displayed in Status Bar
W----Warning-----A yellow color warning message is displayed & Control will switch to next
Screen
E-----Error------Red color message is displayed & Control will stay in same Screen
A----Amend-----Control will switch to Screen 0
X-----Exit-------Control will switch to ABAP Runtime Screen (ST22)

Rohini kumar
SAP-ABAP 87

12-09-2014
Modularization Techniques:
There are 5 modularization techniques in SAP.
They are
1. Subroutines
2. Function Modules
3. Include
4. Macro
5. Field Symbol

 In real time you should ensure that every program should be highly readable & reusable
 For achieving readability & reusability we have to work with modularization techniques

Subroutines:
 Subroutine is like a mini program which can be called within the same program (or) from
other programs
 Using Subroutines you can perform Calculations, Call other function modules, Write
statements……….etc

Types of Subroutines:
1. Internal Subroutines
2. External Subroutines

Internal Subroutines:
In this both calling part & definition part are in same program

Syntax:
PERFORM <subroutine name> USING <param1> <param2> ………….

FORM <subroutine name> USING <param1> <param2> ………….


-----------------
-----------------
ENDFORM.

Note:
1. In above syntax PERFORM will call its FORM & simultaneously pass Parameters to its
FORM
2. Subroutine name can be any name. The same name should be used both in PERFORM &
FORM
3. The Parameters defined in PERFORM are called Actual Parameters. These parameters
have global visibility & must be defined in a program

Rohini kumar
SAP-ABAP 88

4. The parameters maintained in FORM are called Formal Parameters. These parameters
have local visibility & are automatically created based on Actual Parameters
5. Actual Parameters will pass values to Formal Parameters by using USING option
6. The number of Actual Parameters should be same that of Formal Parameters

Example:
WRITE:/ ‘Welcome to Subroutine’.
PERFORM sub.
WRITE:/ ‘First Call’.
PERFORM sub.
WRITE:/ ‘Second Call’.
FORM sub.
WRITE:/ ‘Inside Sub’.
ENDFORM.

Output:
Welcome to Subroutine
Inside Sub
First Call
Inside Sub
Second Call

Rohini kumar
SAP-ABAP 89

Debugging:
Break Point:
Using break point the execution of a program can be terminated & until the break point is
reached

Note:
In real time for large programs debugging each & every part of a program is time consuming. If
you know where the problem arises you can directly keep a break point & test the program

Types of Break Points:


1. Dynamic Break Point
2. Static Break Point

Dynamic Break Point:


 Dynamic break point is kept automatically & can be removed during runtime
 It is automatically discarded whenever system is logged off

Note:
Dynamic break point is used if you are not aware of the exact problem in your program. During
debugging you can set dynamic break point at different, different places & you can remove the
same dynamically

Static Break Point:


It is kept by using a keyword BREAK-POINT (or) BREAK <user name>

Note:
Static break point is used if you know the exact problem in your program & you want to debug
the same code N number of times

Rohini kumar
SAP-ABAP 90

Pass by Value & Pass by Reference:


Pass by Value:
 In pass by value, value (or) values is passed from Actual Parameters to Formal
Parameters
 Both calling part & definition part will share different memory locations
 In call by value nothing is reflected back to calling part

Example:
DATA v1 TYPE C VALUE ‘a’.
PERFORM sub USING v1.
WRITE:/ v1.
FORM sub USING VALUE(p1).
p1 = ‘b’.
WRITE:/ p1.
ENDFORM.

Output:
b
a

Pass by Reference:
 In pass by reference value is not passed to Formal Parameters instead a Pointer (or)
Reference (or) Address is passed to Formal Parameters
 Any changes done in Formal Parameters will be effected to Actual Parameters also

Example:
DATA v1 TYPE C VALUE ‘a’.
PERFORM sub USING (or) CHANGING v1.
WRITE:/ v1.
FORM sub USING (or) CHANGING p1.
p1 = ‘b’.
WRITE:/ p1.
ENDFORM.

Output:
b
b

Rohini kumar
SAP-ABAP 91

External Subroutines:
In external subroutines both PERFORM & FORM maintained in separate programs

Example:
 Go to SE38
 Program: ZMM_GRM_DETAILS
 Create
 Title: GRM Details
 Type: Executable Program
 Save
 Local Object

TABLES: MKPF, MSEG.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.


SELECT-OPTIONS: s_mblnr FOR MKPF-mblnr,
s_werks FOR MSEG-werks,
s_budat FOR MKPF-budat.
SELECTION-SCREEN: END OF BLOCK b1.

PERFORM extsub (ZMM_GRM_FORM) USING s_mblnr-low s_mblnr-high


s_werks-low s_werks-high s_budat-low s_budat-high.

 Double click on ZMM_GRM_FORM


 You will find a pop-up select Yes
 Save & Yes
 You will find a pop-up deselect With Top Incl check box the press Enter

TYPES: BEGIN OF ty_mseg,


mblnr TYPE mblnr,
budat TYPE budat,
menge TYPE menge_D,
matnr TYPE matnr,
dmbtr TYPE dmbtr,
END OF ty_mseg.

DATA: wa_mseg TYPE ty_mseg,


It_mseg TYPE TABLE OF ty_mseg.

FORM extsub USING VALUE(grm_low) VALUE(grm_high) VALUE(plnt_low)


VALUE(plnt_high) VALUE(date_low) VALUE(date_high)

Rohini kumar
SAP-ABAP 92

SELECT MKPF~mblnr MKPF~budat MSEG~menge MSEG~matnr MSEG~dmbtr


INTO TABLE it_mseg FROM MKPF
INNER JOIN MSEG
ON MKPF~mblnr = MSEG~mblnr
WHERE MKPF~mblnr BETWEEN grm_low AND grm_high
AND MSEG~werks BETWEEN plnt_low AND plnt_high
AND MKPF~budat BETWEEN date_low AND date_high
AND MSEG~bwart EQ ‘101’.

LOOP AT it_mseg INTO wa_mseg.


WRITE:/10 wa_mseg-mblnr,
30 wa_mseg-budat,
50 wa_mseg-menge,
70 wa_mseg-matnr,
90 wa_mseg-dmbtr.
ENDLOOP.
ENDFORM.

Output:
s_mblnr : 49000000 to 490005000
s_werks: 1000 to 1200
s_budat: 15.11.1994 to 01.06.2009
Execute (F8)

Rohini kumar
SAP-ABAP 93

13-09-2014
MKPF Table:
It holds Material Document Header Data

Fields:
1. Mblnr ---------- Material Document Number
2. Mjahr ---------- Material Document Year
3. Blart ---------- Material Document Type
4. Budat ---------- Material Document Date
5. Xblrn ---------- Reference Document (Purchase Order Document) Number

MSEG Table:
It holds Material Document Item Data

Fields:
1. Mblnr ------ Material Document Number
2. Mjahr ------ Material Document Year
3. Bwart ------ Moment Type
4. Werks ------ Plant
5. Lgort ------- Storage Location
6. Charg ------ Batch Number
7. Lifnr ------- Vendor Account Number

Link:
LFA1-lifnr
MSEG-lifnr

8. Shkzg ------- Debit / Credit Indicator


9. Dmbtr ------ Amount in Local Currency
[Link] ------ Quantity
[Link] ------- Unit of Measurement
[Link] ------- Purchase Order Number

Link:
EKPO-ebeln
MSEG-ebeln

[Link] -------- Item Number

Link:
Rohini kumar
SAP-ABAP 94

EKPO-ebelp
MSEG-ebelp

[Link] ------- Number of Material Document Number


[Link] -------- Department
[Link] ------- Production Order Number

Rohini kumar
SAP-ABAP 95

Function Module:
 Function Module is a piece of code which performs a specific task based on given
requirement
 Function Module is a responsible program which always accepts Parameters & returns a
Value

Types of Function Modules:


1. Normal Function Module
2. Remote Enabled Function Module
3. ALV Function Module (ABAP List Viewer)

Normal Function Module:


It is a piece of code which performs a specific task based on given Parameters

Remote Enabled Function Module:


 It is for distributed environment.
 You can call this function module within the system & across the system

ALV Function Module:


 These are part of Normal Function Module
 Has they improves performance of a programming so they are separated from Normal
Function Modules

Function Group:
 It is a collection of identical objects
 Without Function Group you cannot create a Function Module
 In one Function Group we can maintain 99 Function Modules
 Apart from this SAP providing more than 120000 Function Modules which are
surrounding more than 10000 Function Modules

Syntax:
CALL FUNCTION ‘<FUNCTION MODULE NAME>’. ------ calling part (SE38)

FUNCTION <FUNCTION MODULE NAME>.


-------------
------------- ------- definition part (SE37)
ENDFUNCTION.

Function Module Interface:


Rohini kumar
SAP-ABAP 96

These are Parameters which are pass & return from a Function Module

Types of Function Module Interfaces:


1. Exporting
2. Importing
3. Tables
4. Changing

Exporting:
These are Variables (or) Field Groups which are pass to a Function Module in order to perform
a task

Importing:
Function Modules always returns a value via Importing Parameters

Tables:
These are Internal Tables

Changing:
In latest versions Table Parameters are replaced by Changing

Note:
1. Exporting & Importing Parameters works based on Pass by Value
2. Tables & Changing Parameters works based on Pass by Reference

Steps for Create Function Module:


1. Work with SE80 (create Function Group)
2. Work with SE37 (create Function Module based on Function Group)
3. Work with SE38 (call Function Module)

Step-1:
 Go to SE80
 Under Test Repository select Function Group
 Provide Function Group name: ZCAL_GR
 Enter, Yes
 Provide Short Text: Function Group for Calculations
 Select Save, Local Object

Rohini kumar
SAP-ABAP 97

Step-2:
 Go to SE37
 Function Module: ZCALC_MOD
 Create
 Function Group: ZCAL_GR
 Short Text: Function Module for Calculations
 Enter, Enter
 Import tab
Parameter Name Typing Associated Type
X TYPE I
Y TYPE I
 Export tab
Parameter Name Typing Associated Type
Z TYPE I
 Exception tab
Exception Short Text
No_Data Wrong Calculation

 Source Code tab


z = x + y.
IF SY-SUBRC NE 0.
RAISE No_Data.
ENDIF.

 Activate Function Module (F8)

Step-3:
 Go to SE38
 Program: ZCALC_CALL_SUM
 Create
 Title: Function Module for Calculations
 Type: Executable Program
 Save, Local Object

PARAMETERS: a TYPE I,
b TYPE I.

DATA c TYPE I.

* calling function module


CALL FUNCTION ‘ZCALC_MOD’.
EXPORTING.
Rohini kumar
SAP-ABAP 98

x = a.
y = b.
(or)
IMPORTING.
z = c.
 Select Pattern option
 Call Function: ZCALC_MOD

WRITE:/ ‘The Addition is:’, c.

Working with Standard Function Module:


 Go to SE37
 Function Module: HR_RU_AGE_YEARS (standard function module name)
 Select F8
PERNR: 1000 --------- employee number
BSDTE: 18.9.2014 -------- To days date
 Select F8

Assignment:
Accept a number as input say 3900 & the Function Module should return the same number in
figures say Three Thousand and Nine Hundred

Rohini kumar
SAP-ABAP 99

Include Program:
Include Program’s memory is available to any ABAP work bench tool
Example:
INCLUDE ZNC1
WRITE:/ ‘work’.

INCLUDE ZNC2
INCLUDE ZNC1.
WRITE:/ ‘hard’.

REPORT ZNC3
INCLUDE ZNC2.

Note:
Include Program is a program (or) reusable program without any Parameters

Rohini kumar
SAP-ABAP 100

Field Symbol:
 Field Symbol is analog to pointer concept in ‘C’ language
 It holds Reference of other Variables & returns Value stored in the Reference

Note:
Using Field Symbol you can improve performance of a program
Example:

 Go to SE38
 Program: ZMM_FIELDSYMBOL
 Create
 Title: Field Symbols
 Type: Executable Program
 Save, Local Object

TABLES: LFA1.
INCLUDE ZVEND_DECC.

 Double click on ZVEND_DECC


 Yes, Yes, Enter

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAM TITLE text-000.


SELECT-OPTIONS: s_lifnr FOR LFA1-lifnr,
s_land1 FOR LFA1-land1.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
land1 TYPE land1,
name1 TYPE name1,
ort01 TYPE ort01,
pstlz TYPE pstlz,
stras TYPE stras,
END OF ty_lfa1.

FIELD-SYMBLOS <l_fs> TYPE ty_lfa1.

DATA it_lfa1 TYPE TABLE OF ty_lfa1.

PERFORM get_data.
PERFORM display_data.
FORM get_data.
Rohini kumar
SAP-ABAP 101

SELECT lifnr land1 name1 ort01 pstlz stras INTO TABLE it_lfa1
FROM LFA1
WHERE lifnr IN s_lifnr
AND land1 IN s_land1.
ENDFORM.
FORM display_data.
LOOP AT it_lfa1 ASSIGNING <l_fs>.
WRITE:/10 <l_fs>-lifnr,
30 <l_fs>-land1,
50 <l_fs>-name1,
70 <l_fs>-ort01,
90 <l_fs>-pstlz,
110 <l_fs>-stras,
ENDLOOP.
ENDFORM.

Note:
Nowadays most of the companies are using Field Symbols instead of Work area

Rohini kumar
SAP-ABAP 102

19-09-2014
FOR ALL ENTRIES keyword:
Using FOR ALL ENTRIES you can fetch common data between two tables

Syntax:
SELECT <field1> <field2>……… FROM <database table> INTO TABLE
<internal table> FOR ALL ENTRIES IN <database internal table> WHERE <condition>

Example:
Segment wise Materials Details

Input:
1. Material Code
2. Material Type
3. Material Group
4. Division

Output:
Material Code Material Description Segment Description

Processing Logic:
1. Get Matnr Spart fields from MARA table based on input
2. Pass Spart field of MARA table to TSPAT table & get Vtext field where Spras field EQ
to ‘EN’
3. Pass Matnr field of MARA table to MAKT table & get Maktx field where Spars field EQ
to ‘EN’

Solution:
 Go to SE38
 Program: ZMM_SEGMENTWISE_MATERIALS
 Create
 Title: Segment wise Materials Details
 Save, Local Object

* providing tables work area


TABLES: MARA.

* providing input selection screen


SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
SELECT-OPTIONS: s_mtart FOR MARA-mtart,
s_matnr FOR MARA-matnr,
s_matkl FOR MARA-matkl,
Rohini kumar
SAP-ABAP 103

s_spars FOR MARA-spars.


SELECTION-SCREEN: END OF BLOCK b1.

* creating structure for MARA table


TYPES: BEGIN OF ty_mara,
matnr TYPE matnr,
spart TYPE spart,
END OF ty_mara.

* creating structure for MAKT table


TYPES: BEGIN OF ty_makt,
matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_makt.

* creating structure for TSPAT table


TYPES: BEGIN OF ty_tspat,
spart TYPE spart,
vtext TYPE vtext,
END OF ty_tspat.

* creating structure for FINAL output


TYPES: BEGIN OF ty_final,
matnr TYPE matnr,
maktx TYPE maktx,
vtext TYPE vtext,
END OF ty_makt.

* creating work areas & internal tables


DATA: wa_mara TYPE ty_mara,
wa_makt TYPE ty_makt,
wa_tspat TYPE ty_tspat,
wa_final TYPE ty_final,
it_mara TYPE TABLE OF ty_mara,
it_makt TYPE TABLE OF ty_makt,
it_tspat TYPE TABLE OF ty_tspat,
it_final TYPE TABLE OF ty_final.

* calling Subroutines
PERFORM get_mara.
PERFORM get_makt.
PERFORM get_tspat.
Rohini kumar
SAP-ABAP 104

PERFORM combine_data.
PERFORM display_data.

* getting matnr & spart from MARA table by comparing with input
FORM get_mara.

SELECT matnr spart FROM MARA INTO TABLE it_mara


WHERE matnr IN s_matnr
AND matkl IN s_matkl
AND spart IN s_spart.

IF SY-SUBRC NE 0.
MESSAGE ‘Enter Valid Input’ TYPE ‘E’ DISPLAY LIKE ‘I’.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.

* getting spart & vtext from TSPAT table by comparing spart of TSPAT with spart of MARA
FORM get_tspat.

IF NOT it_mara IS INITIAL.


SELECT spart vtext FROM TSPAT INTO TABLE it_tspat
FOR ALL ENTRIES IN it_mara
WHERE spart = it_mara-spart
AND spars EQ ‘EN’.
ENDIF.

ENDFORM.

* getting matnr & maktx from MAKT table by comparing matnr of MAKT with matnr of
MARA
FORM get_makt.

IF NOT it_mara IS INITIAL.

SELECT matnr maktx FROM MAKT INTO TABLE it_makt


FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND spars EQ ‘EN’.
ENDIF.

Rohini kumar
SAP-ABAP 105

ENDFORM.

* combining required fields i.e. matnr, maktx & vtext


FORM combine_data.

LOOP AT it_mara INTO wa_mara.


wa_final-matnr = wa_mara-matnr.

READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr.


wa_final-maktx = wa_makt-maktx.

READ TABLE it_tspat INTO wa_tspat WITH KEY spart = wa_mara-spart.


wa_final-vtext = wa_tspat-vtext.

APPEND wa_final TO it_final.


ENDLOOP.

ENDFORM.

* displaying output
FORM display-data.
LOOP AT it_final INTO wa_final.
AT FIRST.
[Link] AT 1(135).
WRITE:/ SY-VLINE,
10 ‘Material Code’,
30 ‘Material Description’,
60 ‘Segment Description’,
135 SY-VLINE.
[Link] AT 1(135).
ENDAT.

FORMAT COLOR COL_GROUP INTENSIFIED OFF.


[Link] AT 1(135).
WRITE:/ SY-VLINE,
10 wa_final-matnr,
30 wa_final-maktx,
60 wa_final-vtext,
135 SY-VLINE.
[Link] AT 1(135).
ENDLOOP.
ENDFORM.
Rohini kumar
SAP-ABAP 106

20-09-2014
Pitfalls of FOR ALL ENTRIES: (Drawbacks)
1. Before applying FOR ALL EMTRIES it is mandatory to check whether base internal
table is having data (or) not
If you are not checking,
Assume if base internal table is completely empty then it will fetch all records from
database table
2. It act as a SELECT DISTINCT (It removes duplicate set of records from an internal
table)
Example:
BSEG Table
belnr hkgnt
1000 301011
301012
301012 ---- These records will be removed
301012
301013
301014
3. If base internal table is too large there will be performance degration

Note:
In real time always use
1. INNER JOINS for extracting common data between two tables
2. FOR ALL ENTRIES for extracting & combining multiple tables records

Rohini kumar
SAP-ABAP 107

MARA Table:
It holds Material Master Data

Fields:
1. Matnr -------- Material Number
2. Ersda --------- Date of Creation
3. Ernam -------- Person who Created that Material
4. Mtart --------- Material Type
5. Mbrsg -------- Industry Key
6. Matkl --------- Material Group
7. Bismt --------- Old Material Number
8. Miens --------- Unit of Measurement
9. Brgew -------- Gross Weight
[Link] -------- Net Weight
[Link] ---------- Division Code

MAKT Table:

It holds Material Description Details


Fields:
1. Matnr -------- Material Number
2. Spras -------- Language Key
3. Maktx ------- Material Description

TSPAT Table:
It holds Division Description Details

Fields:
1. Spras --------- Language Key
2. Spart --------- Division Code
3. Vtext --------- Division Description

Rohini kumar
SAP-ABAP 108

SD Module:
Sales & Distribution Module

Departments in SD Module:
1. Marketing
2. Excise
3. Billing
4. Finance part of SD

Process Flow:
Inquiry

Quotation

Sales Order

Delivery

Excise Invoice

Invoice

FI Module

T Codes & Tables:


Inquiry:
Tcodes: VA11, VA12, VA13
Tables: VBAK, VBAP
Note: The key field is vbeln

Quotation:
Tcodes: VA21, VA22, VA23
Tables: VBAK, VBAP
Note: The key field is vbeln

Sales Order:
Tcodes: VA01, VA02, VA03
Tables: VBAK, VBAP
Note: The key field is vbeln

Delivery:
Rohini kumar
SAP-ABAP 109

Tcodes: Vl01N, VL02N, VL03N


Tables: LIKP, LIPS
Note: The key field is vbeln (Delivery Number)

Excise Invoice:
Tcodes: J1IS, J1IEX, J1ID
Tables: J_1IEXCHDR, J_1IEXCDTL, J_1IMOCUST
Note: The key field is exnum

Invoice:
Tcodes: VF01, VF02, VF03
Tables: VBRK, VBRP
Note: The key field is vbeln (Invoice Number)

Other Tables:
VBKD, VBFA, VBPA, VBUK, VBUV, KONV, KONR

Rohini kumar
SAP-ABAP 110

String Operations:
1. SHIFT
2. TRANSLATE
3. REPLACE
4. STRLEN
5. OFFSET FUNCTIONALITY
6. SPLIT
7. CONCATINATE
8. CONDENSE

SHIFT keyword:
It shifts a specific string to left (or) right side by deleting required options in a particular string

Syntax-1:
SHIFT <string> LEFT DELETING LEADING <option>
Syntax-2:
SHIFT <string> RIGHT DELETING TRAILING <option>

Example: ‘000001000’----------- 1000


DATA: str(10) TYPE C VALUE ‘000001000’.
SHIFT str LEFT DELETING LEADING ‘0’ .
WRITE:/ str.
Output: 1000
Note:
Size of the string variable must be equal to given string

TRANSLATE keyword:
It converts the case of a particular string from lower to upper and vice-versa

Syntax-1:
TRANSLATE str TO UPPER CASE
Syntax-2:
TRANSLATE str TO LOWER CASE

Example: SATYA--------satya
DATA: str(10) TYPE C VALUE ‘SATYA’.
TRANSLATE str TO LOWER CASE.
WRITE:/ str
Output:
satya

REPLACE keyword:
Rohini kumar
SAP-ABAP 111

It replaces a string with another string based on requirement

Syntax:
REPLACE <string1> WITH <string2> INTO <final string>

Example: rupees-------dollars
DATA: str(30) TYPE C VALUE ‘one thousand rupees’.
REPLACE ‘rupees’ WITH ‘dollars’ INTO str.
WRITE:/ str.
Output:
one thousand dollars

STRLEN keyword:
It returns length of a string

Syntax:
n = STRLEN ( str ).
Where n is Integer Variable

Example:
DATA: str(10) TYPE C VALUE ‘satya’,
n TYPE I.
n = STRLEN ( str ).
WRITE:/ n.
Output:
5

OFFSET FUNCTIONALITY keyword:


0 1 2 3 4 5 6 7 --------offset
A B C D E F G H

1. st = str + 2 ( 1 ). --------output------ C
2. st = str + 4 ( 2 ). --------output------ EF

SPLIT keyword:
It splits a single string based on special charectors

Syntax:
SPLIT <string> AT <special charector> INTO <stirng1> <string2> <string3>…..

Example:
DATA: str(10) TYPE C VALUE ‘cool-drink’,
Rohini kumar
SAP-ABAP 112

str1(10) TYPE C,
str2(10) TYPE C.
SPLIT str AT ‘-’ INTO str1 str2.
WRITE:/ str1,
str2.
Output:
cool
drink

CONCATENATE keyword:
It concatenates two (or) more than two strings into a final string

Syntax:
CONCATENATE <str1> <str2> <str3> INTO <final string> SAPARATED BY
<special character>.

Example-1:
DATA: data(10) TYPE C.
CONCATENATE SY-DATUM + 6(2) SY-DATUM + 4(2) SY-DATUM + 0(4) INTO
date SAPARATED BY ‘.’.
WRITE:/ date.
Output:
20.09.2014

Example-2:
DATA: year(4),
mon(2),
day(2),
date(10).
year = SY-DATUM + 0(4).
mon = SY-DATUM + 4(2).
day = SY-DATUM + 6(2).
CONCATENATE day mon year INTO date SAPARATED BY ‘.’.
WRITE:/ date.
Output:
20.09.2014

Rohini kumar
SAP-ABAP 113

CONDENSE keyword:
It combines a specific string by removing gaps between them

Syntax:
CONDENSE <string> NO-GAPS.

Example:
DATA: str(20) TYPE C VALUE ‘satya narayana’.
CONDENSE str NO-GAPS.
WRITE:/ str.
Output:
satyanarayana

Assignment:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

Rohini kumar
SAP-ABAP 114

Looping Statements:
Branching:
a. Conditional Statements
b. Unconditional Statements

Conditional Statements:
1. IF…………ENDIF.

Sytax-1:
IF <condition>.
Do this
ENDIF.

Sytax-2:
IF <condition>.
Do this
ELSE.
Do this
ENDIF.

Sytax-3:
IF <condition>.
Do this
ELSE IF <condition>
Do this
ELSE.
Do this
ENDIF.

Note:
Use ELSE IF condition only a single condition is true

2. CASE…………..ENDCASE

Syntax:
CASE <expression>.
WHEN <exp1>.
Do this
WHEN <exp2>.
Do this
……….
……….
Rohini kumar
SAP-ABAP 115

WHEN OTHERS.
Do this
ENDCASE.

3. WHILE statement:
Syntax:
WHILE <condition>
----------
----------
ENDWHILE.

Unconditional Statements:
1. DO…………….ENDDO.
Syntax-1:
DO.
---------
---------
ENDDO.

Syntax-2:
DO <n> TIMES.
---------
---------
ENDDO.

Syntax-3:
DO <n> TIMES VARYING <expression> FROM <m> NEXT <n>.
---------
---------
ENDDO.

Operators:
a. Logical Operators
b. Relational Operators

Logical Operators:
1. AND
2. OR
3. NOT

Relational Operators:
1. GT----- >
Rohini kumar
SAP-ABAP 116

2. LT ----- <
3. GE ---- >=
4. LE ---- <=
5. NE ------ <>
6. EQ ------ =

Rohini kumar
SAP-ABAP 117

CONTINUE keyword:
Whenever CONTINUE is executed it terminates the current LOOP pass & returns the control to
next LOOP pass

Example:
DATA rem TYPE I.
DO 20 TIMES.
rem = SY-INDEX MOD 2.
IF rem NE 0.
CONTINUE.
ENDIF.
WRITE:/ SY-INDEX.--------- current LOOP pass number
ENDDO.

Output:
2 4 6 8 …………………… 20

CHECK keyword:
If check expression is true it will allows the remaining LOOP pass else it will terminates the
current loop pass

Syntax:
CHECK <expression>.

Example:
DATA rem TYPE I.
DO 20 TIMES.
rem = SY-INDEX MOD 2.
CHECK rem = 2.
WRITE:/ SY-INDEX.--------- current LOOP pass number
ENDDO.

22-09-2014
EXIT keyword:
When the keyword EXIT is executed the whole loop will be terminated

Example:
DATA: n TYPE I VALUE 10.
DO n TIMES.
IF SY-INDEX >= n.
EXIT.
ENDIF.
Rohini kumar
SAP-ABAP 118

WRITE:/ SY-INDEX.
ENDDO.

Rohini kumar
SAP-ABAP 119

Mathematical Operations:
Ex: 5.55
1. FRAC -------- 0.55
2. CEIL --------- 6.0
3. FLOOR ----- 5.0
4. SIGN -------- 1 (+)
5. ABS --------- 5.55 (always returns only positive value)
6. TRUNC ---- 5.0
Ex: 6 / 2
7. REM -------- 0
8. DIV --------- 3
9. MOD ------- 0

FRAC:
It returns fraction part from a decimal value

CEIL:
It returns highest value in existing decimal value

FLOOR:
It returns lowest value from a particular decimal value

SIGN:
It returns the signature (positive (or) negative) from a particular numeric value

ABS:
It returns absolute value from a numeric value

TRUNC:
It truncates (removes) decimal part from a numeric value

REM (or) MOD:


These returns remainder

DIV:
It returns devisor
Example:
DATA: n TYPE P DECIMALS 2 VALUE ‘5.55’,
m TYPE P DECIMALS 2.
m = FRAC(n). WRITE:/ m
m = TRUNC(n). WRITE:/ m
Rohini kumar
SAP-ABAP 120

m = CEIL(n). WRITE:/ m
m = FLOOR(n). WRITE:/ m
m = ABS(n). WRITE:/ m
m = SIGN(n). WRITE:/ m

Question: What is the difference between SY-TABIX & SY-INDEX?


Answer:
SY-TABIX returns current loop pass for Internal Tables
i.e. LOOP………..ENDLOOP
SY-INDEX returns current loop pass other than LOOP……….ENDLOOP
i.e. DO…………..ENDDO.
WHILE……………ENDWHILE.

Assignments:
1. Formats
a. 1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

b. *
* *
* * *
* * * *
* * * * *

c. *
* * *
* * * * *
* * * * * * *

2. Write a program to print prime numbers between 1 to 100?


3. Write a program to accept two numbers and returns HCF & LCM of that numbers?
4. Accept a string and check whether it is palindrome (or) not?

Rohini kumar
SAP-ABAP 121

SAP and ABAP Memory:


ABAP Memory:
 Transferring data between two programs is done using ABAP memory
 Transferring data from ABAP report to other Standard Application is done by using SAP
memory

Export Import Functionality:


ZExport ZImport
S_matnr to S_matnr to
S_werks to S_werks to
S_budat to SUBMIT ZExport
SELECT……………. WITH matnr IN S_matnr
……………………. WITH werks IN S_werks
Exporting list to memory and return
EXPORT it TO MEMORY IMPORT it FROM MEMORY ID ‘material’.
ID ‘material’.

Question: Explain why you written Export Import Functionality in your real time?
Answer:
 The above functionality is for reusability
 Sometimes we needs to write a logic which already provided by a program
 Instead of writing the same program from beginning you can use the above functionality
for getting the data from other programs

 I written a program for calculating Ageing for Materials


 In that I need to get Closing Stack of a material which is already provided by a standard
report MB5B
 I simply passed input parameters from my Z-program to MB5B using SUBMIT keyword
 In MB5B I written logic for Exporting data to my Z-program & I Imported data using
IMPORT keyword to my Z-program

Example:
 Go to SE38
 Program: YIMPORT_PROG
 Create
 Title: Import Program
 Type: Executable Program
 Save, Local Object

TABLES: EKPO.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.


Rohini kumar
SAP-ABAP 122

SELECT-OPTIONS: s_matnr FOR EKPO-matnr,


s_werks FOR EKPO-werks.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_ekpo,


ebeln TYPE ebeln,
matnr TYPE matnr,
menge TYPE menge_D,
netpr TYPE netpr,
END OF ty_ekpo.

DATA: wa_ekpo TYPE ty_ekpo,


It_ekpo TYPE TABLE OF ty_ekpo.

SUBMIT YEXPORT_PROG WITH matnr IN s_matnr


WITH werks IN s_werks
EXPORTING LIST TO MEMORY AND RETURN.

IMPORT it_ekpo FROM MEMORY ID ‘matt’.

LOOP AT it_ekpo INTO wa_ekpo.


WRITE:/10 wa_ekpo-ebeln,
30 wa_ekpo-matnr,
60 wa_ekpo-menge,
90 wa_ekpo-netpr.
ENDLOOP.

 Double click on YEXPORT_PROG


 Yes
 Remove With Top INCL check box
 Enter, Enter, Enter

TABLES: EKPO.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.


SELECT-OPTIONS: s_matnr FOR EKPO-matnr,
s_werks FOR EKPO-werks.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_ekpo,


ebeln TYPE ebeln,
matnr TYPE matnr,
Rohini kumar
SAP-ABAP 123

menge TYPE menge_D,


netpr TYPE netpr,
END OF ty_ekpo.

DATA it_ekpo TYPE TABLE OF ty_ekpo.

SELECT ebeln matnr menge netpr FROM EKPO INTO TABLE it_ekpo
WHERE matnr IN s_matnr
AND werks IN s_werks.

EXPORT it_ekpo TO MEMORY ID ‘matt’.

Output:
Execute IMPORT_PROG
s_matnr 100-100 to 100-500
s_werks 1000 to 1100

Rohini kumar
SAP-ABAP 124

23-09-2014
Support Project:
 In Support Project End user will raise Tickets (Issues) based on priority
 Issues are directly raised by End user in Production Client which are automatically
updated to Solution Manager
 Solution Manager is a free Ticketing Tool given by SAP for raising tickets
 Help Desk people from Consulting Company will receive the Tickets & forward it to
respective Functional Consultants based on priority
 If the issue is Functional (related to Application, Customizing Issue……….etc) then
Functional Consultant will resolve it
 If the issue is Technical (related to Programming, Enhancement…….etc) then Functional
Consultant will prepare Functional Document & forward it to Technical Consultant
(ABAPER)
 Based on Functional Document ABAPER will create Technical Document & forward it
to Team Leader for approval
 If everything is fine ABAPER will develop the Object in Development Client
 Once the Object is developed then series of Testing will done by ABAPER, Functional
Consultant & End user
 Finally after final testing by End user the Object is transported to Production System with
the help of Basis Consultant

Rohini kumar
SAP-ABAP 125

System Landscape:
 It is also known as Correction & Transportation System (CTS)
 In real time End user will raise issues which are received by Functional Consultant
 For Technical Issues Functional Consultant will prepare Functional Document & based
on that Technical Consultant will prepare Technical Document
 Technical Consultant will forward Technical Document to Team Leader who will
approve it
 Objects are developed in Development Client
 While creating Objects system will prompt you for to save the object
 In real time Objects are always saved in a Package
 Once Objects are saved system will generate Request Numbers (Main Request Number &
Sub Request Number)
 Objects are always stored in Sub Request Number
 Once Object is developed based on coding standards you should release Request
Numbers in SE10
 Then you should forward a mail to Basis Consultant for transporting Transport Request
(TR) numbers from Development Client to Quality Client
 In Quality Server testing is done by ABAPER, Functional Consultant, End user
 If everything is fine again you will forward a mail to Basis Consultant to transport the TR
Numbers from Quality Server to Production Server

Important Points to Remember:


1. In real time you will receive tickets from FC. If you are working in Client Place you will
get Tickets directly from End user
2. Before creating TD you gather the same from your TL
3. In Development Client Objects are created & modified. Testing is not possible here as
recent data not available here (only test data is available)
Note:
Never discus with an interviewer that your Development Client is 800. It is always other than
800 i.e. 100, 200, 300,………….

4. Quality Server is meant for testing. Here recent data (10 days back) is available
5. Production Server is Live Server in real time. It holds live data of a company. Day to day
activities of a company are maintained (or) stored in Production Server
6. Only Development Client is in change mode. Quality & Production Clients are always in
display mode
7. In real time as an ABAPER you can access Development & Quality Clients
8. End user can access Quality & Production Clients
9. FC can access any of these Clients
[Link] is a collection of Objects. In real time we are not creating any package.
Throughout the life time in a company we are working with a single package
Rohini kumar
SAP-ABAP 126

[Link] are always stored in Sub Request Number is transported from one client to
another
[Link] real time Basis Consultant is responsible for transporting Request Numbers from one
client to another
[Link] a Request Number is released (or) transported system will prompt you for a new
Request Number
[Link] real time as a TC we have to work with Work Bench Request. FC will work with
Customizing Request
[Link] Numbers are always forwarded from Development to Quality & Quality to
Production Clients
Note:
Reverse transportation of a Request Number is not possible under any circumstances in SAP

[Link] real time all the issues are posted in Production System & Threads are updated in
Solution Manager
17.E071 is a standard table which holds all Objects & their Request Numbers history
[Link] real time our job to create Object & release the Request Number in SE10
[Link] real time different companies are having different System Landscapes. In some
companies there will 1 Development & 3 Testing Clients & in some 1 Development & 1
Testing Client & in some companies Development & Quality Clients are Cross Clients
[Link] Quality Server only 85% to 90% of testing is done as it holds recent data. If you want
to test the live data you have to work with Production Server

24-09-2014
Steps in System Landscape:
1. Work with SE80 (create a Package)
2. Work with SE38 (create a Program)
3. Work with SE10 (release Sub Request Number, release Main Request Number)

Step-1:
 Go to SE80
 Select Package option
 Provide Package name: ZABAP
 Yes
 Short Description: New Package
 Save
(OR)
 Go to SE11
 Provide Database Table name: V_TDEVC
 Select Display option
 Select Contents option
 Select Package option
Rohini kumar
SAP-ABAP 127

 Provide Package name: ZABAP


 Short Description: New Package
 Save

Step-2:
 Go to SE38
 Program: ZDEMO_PACKAGE
 Create
 Title: Package Program
 Type: Executable Program
 Save
 Package: ZABAP
 Save (Enter)
Note:
1. By default you may find a Request Number. The Request Number belongs to some other
ABAPER
2. Never select Enter option on that pop-up

 Select Create Request (F8)


 Short Description: HR/ABAP: Employee Details Report (24.09.2014)
 Enter
 Enter

WRITE:/ ‘Welcome to ABAP’.

 Activate program (Ctrl+F3)

Step-3:
 Go to SE10
 Select Work Bench Request
 Under Request Status, select Modifiable check box & deselect Released check box
 Select Display option
 Expand Main Request Number
 Select Sub Request Number
 Select Truck Symbol (F9)
 Select Main Request Number
 Select Truck Symbol (F9)
 Go to Back (F3)
 Select Released check box & deselect Modifiable check box
 Select Display option
Note:

Rohini kumar
SAP-ABAP 128

Up to here you have to perform in real time, from here you have to send a mail to your Basis
Consultant for transporting TR-Number from Development Client to Quality Client

 Once the Request Number is transported from Development Client to Quality Client as a
TC now you have to login to Quality Server & test the Object
 If it is fine now you will send a mail to your FC to test the same
 If it is fine FC will update the Tread in Solution Manager to test the Object
 Similarly End user will perform final testing in Quality Server

Note:
Always store identical Objects in one Request Number & different Objects in different Request
Numbers

Rohini kumar
SAP-ABAP 129

Version Management:
 Using Version Management you can get the history of a program with Request Numbers,
User name, Date of creation & change
 It is highly useful to programmer if requires to retrieve old version instead of current
version

Example:
 Go to SE38
 Program: ZDEMO
 Select Utilities ----------- Versions ------ Version Management

Ques: How you can store an Object from Local Object to existing Package?
Ans:
 Go to SE38
 Program: name which is stored in Local object
 Select Goto ---- Object Directory Entry
 Select Change option
 Package: ZABAP
 Save

Ques: How you can delete an Object from existing Request Number?
Ans:
 Go to SE11
 Database Table: E071
 Display
 Contents option
 Object Name; program name (ZDEMO)
 Execute (F8)

 Go to SE10
 Select Display
 Expand Main Request Number
 Expand Sub Request Number
 Expand Program option
 Select your program
 Select Delete option
 You will find a message, Enter
 Yes

Rohini kumar
SAP-ABAP 130

Sub Objects in ABAP Editor:


1. Source Code
2. Variants
3. Attributes
4. Documentation
5. Text Elements

Source Code:
It is nothing but source code of a program

Attributes:
It specifies attributes of a program (Title, Type, Date of creation & Change,………..etc)

Documentation:
Using this option you can provide documentation for a program
Example:
 Go to SE38
 Program: ZDEMO
 Documentation
 Change
 Provide Purpose: The report is displaying segment wise materials details
 Provide Integration: No
 Provide Prerequisites: s_matnr
s_werks
 Save

Text Elements:
Using Text Elements you can maintain Labels (or) Selection Screen Fields
Example:
 Go to SE38
 Program: ZDEMO
 Text Elements
 Change
 Selection Text
Name Text
s_matnr Material Code
s_werks Plant
 Activate

Rohini kumar
SAP-ABAP 131

Variants:
 Using Variants you can provide default input values for a Selection Screen
 In background scheduling report, the reports are executed automatically by system in
background. For such reports the input values are supplied by using Variants
Example:
 Go to SE38
 Program: ZDEMO
 Variants
 Change
 Variant: ZVAR
 Create
 Enter input values
i.e. 100-100 to 100-500
fart
 Select Attribute option (F6)
 Meaning: Variant Creation
 Save
 Run the report
 Select Get Variant option
 Double click on variant name (ZVAR)

Rohini kumar
SAP-ABAP 132

ABAP-EDITOR
Interview Questions & Answers:
1Q: What is ERP?
Ans: ERP is a package under which all the business resources are integrated in one system

2Q: When did ABAP Consultant meets Clients?


Ans:
 ABAP Consultant will not meet Clients
 Only Functional Consultant will meets Clients
 ABAP Consultant only meets Functional Consultant

3Q: What are the Services in R/3 Architecture?


Ans: There are 9 services in R/3 Architecture
1. Dialog service
2. Update service
3. Spool service
4. Background service
5. En-Queue service
6. Message service
7. Gateway service
8. SAP GUI front end service
9. Database service

4Q: Where you can also execute programs other than ABAP Editor (SE38)?
Ans: We can also execute programs in Object Navigator (SE80)

5Q: What is the default Data type in ABAP Programming?


Ans: Character (C)

6Q: What are the SAP provided Business Data types?


Ans: QUAN, CURR, NUME

7Q: What is : operator in ABAP programming?


Ans: It is called Chain Operator. It is for repeating Declarative Part

8Q: Which file is generated by system when you execute the program?
Ans: [Link] file

Rohini kumar
SAP-ABAP 133

9Q: What is purpose of Activating the Objects?


Ans:
 To store the Objects in Database Server
 To integrate the Objects with each other
 To debug & transport the objects

10Q: What is the T Code for Debugging?


Ans: /H

11Q: How many sessions you can open simultaneously in SAP?


Ans: 6 sessions

12Q: What is the use of Internal Table in SAP?


Ans: For storing different types of application data from different tables at one place

13Q: What is the difference between Database table & Internal table?
Ans: Database Table Internal Table
4. It is created in Database Server ------- 1. It is created in Application Server
5. It holds data permanently ------- 2. It holds data temporarily
6. It holds only specific type of data ----- 3. It holds data of different tables of at one place

14Q: What is the default comparison operator for SELECT-OPTIONS?


Ans: ‘IN’

15Q: What is the default comparison operator for PARAMETERS?


Ans: ‘EQ’

16Q: What is the default order of SORT?


Ans: ASCENDING

17Q: What is difference between APPEND & COLLECT?


Ans:
 APPEND keyword appends the record from Work Area to Body (always to next line in
an Internal Table)
 COLLECT keyword performs append job if the record fails to exist in the Body
 If already records exists it adds all Numeric Values on right side of Character Field inside
the Body

18Q: When you will use COLLECT keyword in real time?


Ans: Whenever I will get a requirement for providing consolidated totals based on Customers,
Vendors, Materials,………etc
Rohini kumar
SAP-ABAP 134

19Q: Suppose there are more than two Character Fields then what is the roll of COLLECT
keyword?
Ans: If there are more than two Character Fields it will collect the data (adds) only when both
the Character Fields are same

20Q: What is difference between APPEND & MODIFY keywords?

Ans:
 APPEND always appends record to Internal Table (if record exists (or) not)
 MODIFY always modifies (adds field value) only if record exists in an Internal Table

21Q: When you will prefer MODIFY keyword in ABAP programming?


Ans: When all the data in an Internal Table is filled and a new field value is required to be
added in an Internal Table

22Q: What will happen if CLEAR is providing before Work Area & the same CLEAR is
provided in after Work Area?
Ans:
 If CLEAR is provided before Work Area data so nothing is transferred from Work Area
to Virtual Page (hence no output)
 If CLEAR is provided after Work Area, data is transferred from Work Area to Virtual
Page then Work Area is cleared (hence you will find output)

23Q: What is difference between SUM & COLLECT keyword?


Ans:
 COLLECT keyword is applicable with in LOOP………ENDLOOP without usage of
Control Break Statements
 COLLECT keyword performs totals inside internal body based on one (or) more than one
Character Fields
 SUM keyword performs totals only on Single Character Field for Control Break
Statements & places the values in Work Area
 COLLECT keyword works outside LOOP………ENDLOOP also where as SUM can be
applied only within LOOP…….ENDLOOP

24Q: What is default Internal Table in SAP?


Ans: Standard Table

25Q: What is the prefix for System Variables?


Ans: SY

Rohini kumar
SAP-ABAP 135

INTERNAL TABLES

1Q : How to delete duplicates from an internal table?


Ans:
 To delete all duplicate entries from a sorted internal table (e.g. just after SORT), you can
use the DELETE ADJACENT DUPLICATES FROM i_tab statement.
 You can use the COMPARING addition to limit the fields that are used to test for
duplicate entries
Ex: SORT i_tab by matnr werks logort.
DELETE ADJACENT DUPLICATES FROM i_tab COMPARING matnr werks.

All duplicates with same combination of matnr and werks will be deleted

2Q : What are types of internal tables?


Ans:
There are three types of Internal Tables exist
1. Standard Internal Tables:
 These tables have a linear index and can be accessed using the index or the key.
 The response time is in linear relationship with number of table entries.
 These tables are useful when user wants to address individual table entries using the
index.

2. Sorted Internal Tables:


 These tables also have an index and the key.
 But, the response time is in logarithmic relationship with number of table entries, since it
uses binary search algorithm instead of linear search.
 These tables are useful when user wants the table to be sorted while additional entries
have to be added.

3. Hashed Internal Tables:


 These tables have no index, but have the key.
 The response time is constant irrespective of number of table entries, since it uses a Hash
algorithm.
 These tables are useful when user wants to access the entries with key only.

Rohini kumar
SAP-ABAP 136

3Q : What is the size of internal table?


Ans:
 The size of the internal tables is set using the 'OCCURS n' clause.
 Here ‘n’ refers to a integer number that specifies the size.
 Usually it given as 'OCCURS 0' which creates an internal table with the memory space
of 8kb.

The size of the internal table is the product of width and number of lines of the internal
table. We can set the estimated number of lines of internal table in the OCCURS
parameter.
 When first table entry is filled the runtime system allocates suitable memory to hold the
whole table
 If the memory allocated is not sufficient then again a block of memory is allocated (in
case of number of lines more than estimated lines).
 Therefore the OCCURS parameter does not affect the actual size of the internal table but
the performance of the internal table operations.
 So if you are not able to estimate the lines, then give occurs parameter to zero.
 Then system automatically does it for you.

4Q : What is the effective way of using internal table record?


Ans:
 Create Internal table without Header.
 Do all the internal table operations by Creating Work area.
 This would be the efficient way of coding.
 Don't forget to CLEAR Work area whenever it is required.

5Q : Explain Sorted Tables in Sap internal tables?


Ans:
 This is the most appropriate type if you need a table which is sorted as you fill it.
 You fill sorted tables using the INSERT statement.
 Entries are inserted according to the sort sequence defined through the table key.
 Any illegal entries are recognized as soon as you try to add them to the table.
 The response time for key access is logarithmically proportional to the number of table
entries, since the system always uses a binary search.
 Sorted tables are particularly useful for partially sequential processing in a LOOP if you
specify the beginning of the table key in the WHERE condition.

6Q : What is difference between internal table and structure?


Ans: Internal table holds multiple records and structure holds single record during runtime.

Rohini kumar
SAP-ABAP 137

7Q : What are field groups and internal tables?

Ans:
 Field groups are nothing but a similar type of fields grouped under single name (group)
or grouping of the fields is called field groups.
 Internal tables are stored temp memory/in buffer for the further processing of the fields.

8Q : What is sap internal tables key?


Ans:
 The key identifies table rows.
There are two kinds of key for internal table keys
1. Standard key
2. User- defined key.
 You can specify whether the key should be UNIQUE or NON-UNIQUE.
 Internal tables with a unique key cannot contain duplicate entries.
 The uniqueness depends on the table access method.
If a table has a structured line type, its default key consists of all of its non-numerical
columns that are not references or themselves internal tables.
 If a table has an elementary line type, the default key is the entire line. The default key of
an internal table whose line type is an internal table, the default key is empty.
The user-defined key can contain any columns of the internal table that are not references
or themselves internal tables.
 Internal tables with a user-defined key are called key tables. When you define the key,
the sequence of the key fields is significant.
 You should remember this, for example, if you intend to sort the table according to the
key.

9Q : Explain Hashed tables in sap?


Ans:
 This is the most appropriate type for any table where the main operation is key access.
 You cannot access a hashed table using its index.
 The response time for key access remains constant, regardless of the number of table
entries.
 Like database tables, hashed tables always have a unique key.
 Hashed tables are useful if you want to construct and use an internal table which
resembles a database table or for processing large amounts of data.

Rohini kumar
SAP-ABAP 138

10Q: What do mean by table types.


Ans:
 The table type determines how ABAP will access individual table entries.
Internal tables can be divided into three types:
1. Standard tables
 It has an internal linear index.
 From a particular size upwards, the indexes of internal tables are administered as trees.
 In this case, the index administration overhead increases in logarithmic and not linear
relation to the number of lines.
 The system can access records either by using the table index or the key.
 The response time for key access is proportional to the number of entries in the table.
 The key of a standard table is always non-unique.
 You cannot specify a unique key.
 This means that standard tables can always be filled very quickly, since the system does
not have to check whether there are already existing entries.

11Q: What are control levels in internal tables?


Ans:
The control breaks in an Internal Table are
Control Levels are of 5 types
1) AT FIRST
2) AT NEW
3) AT END OF
4) AT LAST
5) ON CHANGE OF

12Q: How can you specify internal tables as data objects?


Ans:
 Data objects that are defined either with the data type of an internal table (or) directly as
an internal table, are always fully defined in respect of their line type, key and access
method.
 However, the number of lines is not fixed.
 Thus internal tables are dynamic data objects, since they can contain any number of lines
of a particular type.
 The only restrictions on the number of lines an internal table may contain are the limits of
your system installation.
 The maximum memory that can be occupied by an internal table (including its internal
administration) is 2 GB.
 A more realistic figure is up to 500 MB.

Rohini kumar
SAP-ABAP 139

 An additional restriction for hashed tables is that they may not contain more than 2
million entries.
 The line types of internal tables can be any ABAP data types - elementary, structured, or
internal tables.
 The individual lines of an internal table are called table lines or table entries.
 Each component of a structured line is called a column in the internal table.

13Q: What is generic internal table?


Ans:
 Unlike other local data types in programs, we do not have to specify the data type of an
internal table fully.
 Instead, we can specify a generic construction, that is, the key or key and line type of an
internal table data type may remain unspecified.
 We can use generic internal tables to specify the types of field symbols and the interface
parameters of procedures.
 We cannot use them to declare data objects.

14Q: Explain standard internal tables?


Ans:
 This is the most appropriate type if you are going to address the individual table entries
using the index.
 Index access is the quickest possible access.
 You should fill a standard table by appending lines (ABAP APPEND statement), and
read, modify and delete entries by specifying the index (INDEX option with the relevant
ABAP command).
 The access time for a standard table increases in a linear relationship with the number of
table entries.
 If you need key access, standard tables are particularly useful if you can fill and process
the table in separate steps.
 For example, you could fill the table by appending entries, and then sort it.
 If you use the binary search option with key access, the response time is logarithmically
proportional to the number of table entries.

Rohini kumar
SAP-ABAP 140

15Q: What are internal tables, value tables, check tables, transparent tables?
Ans:
Internal table:
It is a standard data type object, which exists only during the runtime of the program.
Check table:
Check table will be at field level checking.

Value table:
Value table will be at domain level checking
Ex: scarr table is check table for carrid.

Transparent table:
Exists with the same structure both in dictionary as well as in database exactly with the same
data and fields
16Q: Explain choosing a table type in internal table.
Ans : The table type (and particularly the access method) that you will use depends on how the
typical internal table operations will be most frequently executed.

17Q: Explain row type and line type concept?


Ans:
 Line type refers to the structure of an internal table
 Whereas row type is the actual part that contains the data and it refers to the table body
 Creating internal table using line type and row type concept is for reusability purpose.
 Line type and Row type are defined at DDIC LEVEL.

18Q: What is the difference between internal table and work area?
Ans :
 An internal table is a run time instance.
 It get created when program starts execution.
 *It get destroyed when program terminates.
 It has two different parts:
 Header Line (optional)
 Body (Compulsory).
 *Any value that comes to (or) goes from internal table, that travels through header line.

Rohini kumar
SAP-ABAP 141

19Q: Difference between database tables and internal tables?


Ans :
 The basic difference is database tables are stored in DB server
 Internal tables are virtual tables these are created run time only
 Internal tables are created dynamically
 The memory of internal tables is not permanent memory
 For internal tables the memory will be created in the application server and it is external
memory and terminates after the program termination.

20Q: What is the difference between collect and append?


Ans:
 Collect holds summarized data (collect the sums based on name etc)
 Append will appends the data from header line (work area) to body

Rohini kumar
SAP-ABAP 142

DATA DICTIONARY
Interview Questions & Answers:

1Q: Have you ever created a Z-Table? Why explain the requirement?
Ans: Yes, SAP is not providing table for Allowances. Simultaneously SAP is not providing a
table for Transportation Details. Simultaneously in real time we have to create a table for
Customer Mail Ids for sending invoice details………….etc

2Q: Explain difference between Standard Table & Z-Table?


Ans:
 Standard Table is system defined table. It starts with A, B,C,………………….X
 Z-Table is user defined table. It starts with Y (or) Z

3Q: What is the difference between Structure & Table?


Ans: Structure Table
3. It is a collection of fields & it 1. It is a Structure & hold data persistently
Never hold data
4. It can be reuse in other tables 2. It cannot be reuse

4Q: What is the difference between View & Table?


Ans: Table View
3. Having its own fields & data 1. Always created based on other table
4. It holds either master data (or) 2. It holds both master data & transactional data
Transactional data

5 Q: What is the difference between Top-Bottom & Bottom-Top approach of crating tables?
Ans: Top-Bottom:
Table---Data Element----Domain
Bottom-Top:
Domain-----Data Element----Table

6 Q: What is a View? Explain the importance of View?


Ans:
 It is a logical table (virtual table) which is created based on other tables
 It hires Fields & Data from other tables
 It is used to generate reports based on user required fields

Rohini kumar
SAP-ABAP 143

7 Q: What is the difference between Database View & Projection View?


Ans:
 Database View is always created based on two (or) more than two tables having
relationship between them
 Projection View is created based on a single table with specific fields

8 Q: What is the difference between Open SQL statements & Native SQL statements?

Ans: Native SQL Statements:


 These are traditional SQL statements
 With Native SQL Statement request is directly forwarded to Database Server which
processes the request & returns the response
 With Native SQL statement performance of the system is highly degraded
Syntax:
EXEC SQL.
SELECT………………
ENDEXECSQL.

Open SQL Statements:


These are normal SQL statements which are converted to embedded SQL using database
interface which is further passed to Buffer, if data is available in Buffer you will get the
response

9 Q: Explain Buffering & its advantages?


Ans: Buffering is a way of improving performance which accessing data from database.
Whenever you run a program it will make a request to Buffer for data, if it is not available it
will make a request to Database Server which returns response to Buffer & simultaneously to
Program. Next time whenever you run the same program this time it will collect the data
directly from Buffer

10 Q: What are the different types of Tables?


Ans: There are 3 types of tables in SAP
4. Transparent Table
5. Cluster Table
6. Pooled Table

11Q: Mention some Cluster Tables that you are using in real time?
Ans: These tables hold SAP proprietary format data (system data, statistical data, control
data……)
Example: BSEG, KONU

12Q: What is the difference between .INCLUDE & APPEND STRUCTURE?


Rohini kumar
SAP-ABAP 144

Ans:
 Using .INCLUDE you can add a Structure in N no. of tables
 .INCLUDE is best for adding Structure in ZEE tables
 Using APPEND STRUCTURE you can add a Structure only in a single table
 APPEND STRUCTURE is best for adding Structure in Standard Tables

13 Q: How many tables you can reuse a Structure in other tables?

Ans: N number of tables

14 Q: How many times APPEND STRUCTURE can be used by other tables?


Ans: only One time

15 Q: What is Database Utility?


Ans:
 Using Database Utility you can reactivate a table (adjust a table in database)
 The Tcode is SE14
 Sometimes you may find errors when you change the Primary key (or) Domain name, it
Data type…….etc you will find an error Structure Level Changes
 To adjust such errors select Utilities----Database Object---Database Utility
 Scroll down to bottom select Activate and Adjust Database

16 Q: What is the difference between Data Element & Domain?


Ans: Data Element:
Using Data Element you can provide field documentation for a specific field
Conceptually Data Element = Field Lable + Domain

Domain:
It specifies the technical attributes of a field (Data Type & Field Size)

17 Q: What are main functionalities of Domain?


Ans:
 Maintains Data type
 Technical attributes of Fields
 Value Range

18Q: What is Value Range under Domain option?


Ans: Using Value Range you can maintain fixed values and can be called in other programs as
a Search Help
19Q: What is the Search Help? How you can maintain a search to specific field in a table?
Ans: Using search help you can search application data based on given search criteria
Rohini kumar
SAP-ABAP 145

Search help works based on F4 function key

20Q: It is possible to create a field without Data Element?


Ans: Yes, using Predefined Type option
But it is always advisable to create with Data Element only

21Q: What is the difference between Client Dependent Table & Client Independent Table?

Ans:
 A table created without MANDT field is Client Independent table. Client Independent
tables are available in other clients also with data
 A table created with MANDT field is Client Dependant table. Client Dependent tables
are available in other clients also without data

22Q: It is possible to create a table without Primary key?


Ans: No

23Q: What is the difference between Master Data & Transactional Data?
Ans: Master Data:
It is created only once in Client Database & modified very rarely
Example:
Bank Master Data, Customer Master Data, Vendor Master Data, Employee Master Data…etc

Transactional Data:
 It is always created based on Master Data
 It is modified frequently in SAP database
Example:
Purchase Order Data, Sales Order Data………..etc

24Q: Define Data Class & Size Category?


Ans: Data Class:
It is a physical storage location (or) table space where tables are stored ultimately after
activation. It is of 3 types
4. APPL0 (holds master data tables)
5. APPL1 (holds transactional data tables)
6. APPL2 (holds organizational & customizing data related tables)

Size Category:
It specifies the probable space requirement for a table in the database
25Q: What is TMG? What is the need of creating TMG in real time?
Ans:
 Using TMG you can directly Insert, Update, Delete data from a database table
Rohini kumar
SAP-ABAP 146

 In real time for certain requirements when data is not linked with other tables. Data can
be inserted (or) manipulated from table level directly. This can be done by creating a
TMG on that table

26Q: It is possible to create TMG on Standard Tables?


Ans: No, TMG is allowed only for Z-tables

27Q: How you can create List Boxes & Check Boxes in TMG?

Ans: CHK ZCHK_DAT

 Double click on ZCHK_DAT


 Save Yes
 You will find a warning pop-up: Enter
 You will find a pop-up: create data element Yes
 Provide Short Description: Check Box
 Provide Domain: ZCHK_DOMAIN
 Provide Data type: CHAR
 Provide [Link] Characters: 1
 Select Value Range tab
FIX VAR Short Desciption
X ON
OFF
 Activate the domain (Ctrl+F3)

28Q: How you can provide Default Values such as Date & Time automatically in a table
whenever user select Save option?

Ans: Providing default values using TMG:


 Select Utilities---Table Maintenance Generator
 Provide Authorization Group: &NC&
 Provide Function Group: ZMAIL_GR
 Select Find Scr Number option then press Enter
 Select Create option (F6) then press Enter
 Select Environment option
 Select Modification------Events
 You will find a message- do not make any changes on SAP data then press Enter
 Select New Entries option provide
T Form Routine
05 Create_Entry
 Press Enter
 Under Editor double click
Rohini kumar
SAP-ABAP 147

 You will find a pop-up then press Enter


 You will find a warnings pop-up then press Enter
 Provide code for default values
FORM CREATE_ENTRY.
ZFI_LIMITS-ERDAT = SY-DATUM.
ZFI_LIMITS-UNAME = SY-UNAME.
ZFI_LIMITS-ERTIM = SY-UZETT.
ENDFORM.
 Activate table & go back

29Q: Mention some important Events that you created with TMG?
Ans: CREATE_ENTRY

30Q: What is One Step & Two Step option in TMG?


Ans:
 One Step---By these option we can insert all the records at a time
 Two Step---By these option we can insert one by one record

31Q: Why Function Group is added while creating TMG?

Ans:

32Q: What is Authorization Group & Authorization Object in TMG?


Ans: Authorization Group is for which group of clients can access table
Ex: &NC&

33Q: How will add table values to a request number in ABAP?


Ans:

34Q: What is the difference between SE11 & SE16?


Ans:
 SE11 for creating all Data Dictionary Objects in SAP
 SE16 for just viewing data of specific table. Here manipulation of data is not possible

Rohini kumar
SAP-ABAP 148

35Q: Why it is mandatory to Activate a table in SAP?


Ans:
 To store the Objects in Database Server
 To integrate the Objects with each other
 To debug & transport the objects

36Q: What is Indexing in SAP? What are types of Indexes?


Ans:

37Q: What is Lock Object? Have you created Lock Object?


Ans: No

38Q: What is the difference between Structure & Type Group?


Ans: Structure:
 It is a group of fields
 Physically it will never hold any data
 Structure can be reuse in other programs & other tables
Type Group:
It is a group of Structures

39Q: What is Text Table? What is its significance?


Ans:
 Use text table for storing explanatory texts. For storing such texts it is not advisable to
store in Primary Table
 Text Tables works based on Primary & Foreign key relationship

40Q: How you can add a Field in Standard Table?


Ans: Using Append Structure option

41Q: What are various Dictionary Objects?


Ans:
[Link] Table
[Link]
[Link]
[Link] Element
[Link]
[Link] Type
[Link] Group
[Link] Object
[Link] Help
42Q: What is the significance of Data Dictionary in SAP?
Rohini kumar
SAP-ABAP 149

Ans:
 It is also called ABAP Dictionary
 It is a repository of data
 T Code for Data Dictionary is SE11

43Q: Is it possible to create DDL operations directly in SAP?


Ans: No

1Q : What are the layers of data description in R/3?


Ans:
• The external layer.
• The ABAP/4 layer.
• The database layer.

2Q : Define external layer?


Ans:
 The external layer is the plane, at which the user sees and interacts with the data,
 That is, the data format in the user interface.
 This data format is independent of the database system used.

3Q : Define ABAP/4 layer?


Ans: The ABAP/4 layer describes the data formats used by the ABAP/4 processor.

4Q : Define Database layer?


Ans: The database layer describes the data formats used in the database.

5Q : What is a Data Class?


Ans: The Data class determines in which table space the table is stored when it is created in the
database.

6Q : What is a Size Category?


Ans: The Size category describes the probable space requirement of the table in the database.

Rohini kumar
SAP-ABAP 150

7Q : How many types of size categories and data classes are there?
Ans:
 There are five size categories (0-4) and
 11 data classes
Only three of size categories are appropriate for application tables:
1. APPL0- Master data (data frequently accessed but rarely updated)
2. APPL1- Transaction data (data that is changed frequently)
3. APPL2- Organizational data (customizing data that is entered when system is configured and
then rarely changed)

The other two types are:


4. USR
5. USR1 - Intended for customer's own developments.

8Q : What are control tables?


Ans: The values specified for the size category and data class are mapped to database-specific
values via control tables.

9Q : What is the function of the transport system and workbench organizer?


Ans:
The function of the transport system and the Workbench Organizer is to manage any changes
made to objects of the ABAP/4 Development Workbench and to transport these changes
between different SAP systems.

10Q: What is a table pool?


Ans :
 A table pool (or pool) is used to combine several logical tables in the ABAP/4
Dictionary.
 The definition of a pool consists of at least two key fields and a long argument field
(VARDATA).

11Q: What are pooled tables?


Ans :
 These are logical tables, which must be assigned to a table pool when they are defined.
 Pooled tables can be used to store control data (such as screen sequences or program
parameters).

Rohini kumar
SAP-ABAP 151

12Q: What is a table cluster?


Ans :

 A table cluster combines several logical tables in the ABAP/4 Dictionary.


 Several logical rows from different cluster tables are brought together in a single physical
record.
 The records from the cluster tables assigned to a cluster are thus stored in a single
common table in the database.

13Q: How can we access the correction and transport system?


Ans :
Each time you create a new object or change an existing object in the ABAP/4 Dictionary, you
branch automatically to the Workbench Organizer or correction and transport system.

14Q: Which objects are independent transport objects?


Ans :
 Domains,
 Data elements,
 Tables,
 Technical settings for tables,
 Secondary indexes for transparent tables,
 Structures,
 Views,
 Match code objects,
 Match code Ids,
 Lock objects.

15Q: How is conversion of data types done between ABAP/4 & DB layer?
Ans : Conversion between ABAP/4 data types and the database layer is done within the
database interface.

16Q: How is conversion of data types done between ABAP/4 & external level?
Ans : Conversion between the external layer and the ABAP/4 layer is done in the SAP dialog
manager DYNP.

17Q: What are the Data types of the external layer?


Ans : ACCP, Char, CLNT, CUKY, CURR, DATS, DESC, FLTP, INT1, INT2, INT4, LANG,
LCHR, LRAW, NUMC, PREC, QUAN, RAW, TIMS, UNIT,VARC.

18Q: What are the Data types of the ABAP/4 layer?


Ans : Possible ABAP/4 data types:
Rohini kumar
SAP-ABAP 152

C: Character.
D: Date, format YYYYMMDD.
F: Floating-point number in DOUBLE PRECISION (8 bytes).
I: Integer.
N: Numerical character string of arbitrary length.
P: Amount of counter field (packed; implementation depends on h/w platform).
S: Time Stamp YYYYMMDDHHMMSS.
V: Character string of variable length, length is given in the first two bytes.
X: Hexadecimal (binary) storage.

19Q: How can we set the table spaces and extent sizes?
Ans : You can specify the extent sizes and the table space (physical storage area in the
database) in which a transparent table is to be stored by setting the size category and data class.

20Q: What is the function of the correction system?


Ans : The correction system manages changes to internal system components. Such as objects
of the ABAP/4 Dictionary

21Q: What are local objects?


Ans : Local objects (Dev class$TMP) are independent of correction and transport system.

22Q: What is a Development class?


Ans : Related objects from the ABAP/4 repository are assigned to the same development class.
This enables you to correct and transport related objects as a unit.

23Q: What is a data dictionary?


Ans :
 Data Dictionary is a central source of data in a data management system.
 Its main function is to support the creation and management of data definitions.
It has details about
• What data is contained?
• What are the attributes of the data?
• What is the relationship existing between the various data elements?

Rohini kumar
SAP-ABAP 153

24Q: What functions does a data dictionary perform?


Ans :
In a data management system, the principal functions performed by the data dictionary are
• Management of data definitions.
• Provision of information for evaluation.
• Support for s/w development.
• Support form documentation.
• Ensuring that the data definitions are flexible and up-to-date.

25Q: What are the features of ABAP/4 Dictionary?


Ans :

The most important features are:


• Integrated to aABAP/4 Development Workbench.
• Active in the runtime environment.

26Q: What are the uses of the information in the Data dictionary?
Ans :
The following information is directly taken from the Data dictionary:
• Information on fields displayed with F1 help.
• Possible entries for fields displayed with F4 help.
• Matchcode and help views search utilities.

27Q: What are the basic objects of the data dictionary?


Ans:
• Tables
• Domains
• Data elements
• Structures
• Foreign Keys

28Q: What are the aggregate objects in the data dictionary?


Ans:
• Views
• Match codes
• Lock objects.

29Q: In the ABAP/4 Dictionary Tables can be defined independent of the underlying database
(T/F).
Ans: True.

Rohini kumar
SAP-ABAP 154

30Q: ABAP/4 Dictionary contains the Logical definition of the table.


Ans :

31Q: A field containing currency amounts (data type CURR) must be assigned to a reference
table and a reference field. Explain.
Ans:
 As a reference table, a system containing all the valid currencies is assigned or any other
table, which contains a field with the currency key format.
 This field is called as reference field.
 The assignment of the field containing currency amounts to the reference field is made at
runtime.
 The value in the reference field determines the currency of the amount.

32Q: A field containing quantity amounts (data type QUAN) must be assigned to a reference
table and a reference field. Explain?
Ans :
 As a reference table, a system table containing all the valid quantity units is assigned or
any other table, which contains a field with the format or quantity units (data type UNIT).
 This field is called as reference field.
The assignment of the field containing quantity amounts to the reference field is made at
runtime.
 The value in the reference field determines the quantity unit of the amount.

33Q: What is the significance of Technical settings (specified while creating a table in the data
dictionary)?
Ans:
By specifying technical settings we can control how database tables are created in the database.
The technical settings allows us to
• Optimize storage space requirements.
• Table access behavior.
• Buffering required.
• Changes to entries logged.

34Q: What is a Table attribute?


Ans:
The table's attributes determine who is responsible for maintaining a table and which types of
access are allowed for the table.
The most important table attributes are:
• Delivery class.
• Table maintenance allowed.
• Activation type.
Rohini kumar
SAP-ABAP 155

35Q: What is the significance of Delivery Class?

Ans:
• The delivery class controls the degree to which the SAP or the customer is responsible for
table maintenance.
• Whether SAP provides the table with or without contents.
• Determines the table type.
• Determines how the table behaves when it is first installed, at upgrade, when it is transported,
and when a client copy is performed.

36Q: What is the max. no. Of structures that can be included in a table or structure.
Ans: Nine.

37Q: What are two methods of modifying SAP standard tables?

Ans:
• Append Structures and
• Customizing Includes.

38Q: What is the difference between a Substructure and an Append Structure?


Ans:
• In case of a substructure, the reference originates in the table itself, in the form of a statement
include....
• In case of an append structure, the table itself remains unchanged and the reference originates
in the append structure.

39Q: To how many tables can an append structure be assigned.


Ans: One.

40Q: If a table that is to be extended contains a long field, we cannot use append structures
why?
Ans:
 Long fields in a table must always be located in the end, as the last field of the table.
 If a table has an append structure the append line must also be on the last field of the
table.

41Q: Can we include customizing include or an append structure with Pooled or Cluster tables?
Ans: No.

42Q: What are the two ways for restricting the value range for a domain?

Rohini kumar
SAP-ABAP 156

Ans:
• By specifying fixed values.
• By stipulating a value table.

43Q: Structures can contain data only during the runtime of a program (T/F)
Ans: True.

44Q: What are the aggregate objects in the Dictionary?


Ans:
• Views
• Match Code.
• Lock Object.

45Q: What are base tables of an aggregate object?


Ans : The tables making up an aggregate object (primary and secondary) are called aggregate
object.

46Q: The data of a view is not physically stored, but derived from one or more tables (t/f)
Ans: True.

47Q: What are the 2 other types of Views, which are not allowed in Release 3.0?
Ans:
• Structure Views.
• Entity Views.

48Q: What is a Match Code?


Ans:
 Match code is a tool to help us to search for data records in the system.
 Match Codes are an efficient and user-friendly search aid where key of a record is
unknown.

49Q: What are the two levels in defining a Match Code?


Ans:
• Match Code Object.
• Match CodeId.

*50Q: What is the max no of match code Id's that can be defined for one Match code object?*
Ans: A match code Id is a one character ID that can be a letter or a number.

*51Q: Can we define our own Match Code ID's for SAP Matchcodes?*
Ans : Yes, the number 0 to 9 are reserved for us to create our own Match Code Ids for a SAP
defined Match code object.
Rohini kumar
SAP-ABAP 157

52Q: What is an Update type with reference to a Match code ID?


Ans :

 If the data in one of the base tables of a match code ID changes, the match code data has
to be updated.
 The update type stipulates when the match code is to be updated and how it is to be done.
 The update type also specifies which method is to be used for Building match codes.
 You must specify the update type when you define a match code ID.

53Q: Can matchcode object contain Ids with different update types?
Ans: Yes.

54Q: What are the update types possible?


Ans :
The following update types are possible:
• Update type A: The matchcode data is updated asynchronously to database changes.
• Update type S: The matchcode data is updated synchronously to database changes.
• Update type P: The matchcode data is updated by the application program.
• Update type I: Access to the matchcode data is managed using a database view.
• Update type L: Access to the matchcode is achieved by calling a function module.

55Q: What are the two different ways of building a match code object?
Ans :
A match code can be built in two different ways:
1. Logical structure:
The match code data is set up temporarily at the moment when the match code is accessed.
(Update type I, k).

2. Physical Structure:
The match code data is physically stored in a separate table in the database. (Update type A, S,
P).

Rohini kumar
SAP-ABAP 158

56Q: What are the differences between a Database index and a match code?
Ans:
• Match code can contain fields from several tables whereas an index can contain fields from
only one table.
• Match code objects can be built on transparent tables and pooled and cluster tables.

57Q: What is the function of a Domain?


Ans:
• A domain describes the technical settings of a table field.
• A domain defines a value range, which sets the permissible data values for the fields, which
refers to this domain.
• A single domain can be used as basis for any number of fields that are identical in structure.

58Q: Can you delete a domain, which is being used by data elements?
Ans: No.

59Q: What are conversion routines?


Ans:
• Non-standard conversions from display format to sap internal format and vice-versa are
implemented with so called conversion routines.

60Q: What is the function of a data element?


Ans: A data element describes the role played by a domain in a technical context. A data
element contains semantic information.

61Q: Can a domain, assigned to a data element be changed?


Ans : Yes. We can do so by just overwriting the entry in the field domain.

62Q: Can you delete data element, which is being used by table fields.
Ans : No.
63Q: Can you define a field without a data element?
Ans : Yes. If you want to specify no data element and therefore no domain for a field, you can
enter data type and field length and a short text directly in the table maintenance.

64Q: What are null values?


Ans : If the value of a field in a table is undefined or unknown, it is called a null value.

65Q: What is the difference between a structure and a table?


Ans :
Structures are constructed the almost the same way as tables, the only difference using that no
database table is generated from them.

Rohini kumar
SAP-ABAP 159

66Q: What is a view?


Ans :
 A view is a logical view on one or more tables.
 A view on one or more tables
i.e., the data from a view is not actually physically stored instead being derived from one or
more tables.

67Q: How many types of Views are there?

Ans:
• Database View
• Help View
• Projection View
• Maintenance View

68Q: What is Locking?


Ans : When two users simultaneously attempt to access the same data record, this is
synchronized by a lock mechanism.

69Q: What is database utility?


Ans : Database utility is the interface between the ABAP/4 Dictionary and the underlying the
SAP system.

70Q: What are the basic functions of Database utility?


Ans :
The basic functions of database utility are:
• Create database objects.
• Delete database objects.
• Adjust database objects to changed ABAP/4 dictionary definition.

71Q: What is Repository Info Systems?


Ans : It is a tool with which you can make data stored in the ABAP/4 Dictionary available

Rohini kumar
SAP-ABAP 160

LFA1 Table:
This table holds Vendor Master Data

Fields:
1. Lifnr-------Vendor Number
2. Land1-----Country of Vendor
3. Name1----Name of Vendor
4. Ort01-----City of Vendor
5. Pstlz------Postal Code of Vendor
6. Adrnr-----Address Number

Links:
LFA1~adrnr
ADRC~addrnumber

7. Brsch-----Industry Key

Rohini kumar
SAP-ABAP 161

EKKO Table:
This table holds Purchase Order Header Data

Fields:
1. Ebeln-------Purchase Order Number
2. Bukrs------Company Code
3. Bsart-------Purchasing Document Type
4. Statu-------Status of Purchase Order
5. Lifnr-------Vendor Number

Links:
LFA1~lifnr
EKKO~lifnr

6. Zterm------Payment Terms
7. Zbd1p-----Cash Discount Percentage
8. Ekorg------Purchase Organization (Purchase Department)
9. Ekgrp------Purchasing Group
[Link]------Currency
[Link]------Exchange Rate
[Link]-------Purchase Order Date
13.Inco1, Inco2-------International Terms for Carrying Bussiness
[Link]------Tax Number

Links:
EKKO~knumv
KONU~knumv

[Link]------Pricing Procedure
[Link]-------Release Indicator

Rohini kumar
SAP-ABAP 162

EKPO Table:
This table holds Purchase Document Item Data

Fields:
1. Ebeln-------Purchase Order Number

Links:
EKKO~ebeln
EKPO~ebeln

2. Ebelp------Item Number
3. Txzo1-----Item Text
4. Matnr-----Material Code
5. Werks-----Plant
6. Lgort------Storage Location
7. Matkl-----Material Group
8. Menge------Purchase Order Quantity
9. Meins------Unit of Measurement
[Link]------Unit Price
[Link]------Total Price
[Link]-----Sales Tax Code
[Link]--------Delivery Completed Indicator

Rohini kumar
SAP-ABAP 163

MKPF Table:
It holds Material Document Header Data

Fields:
1. Mblnr ---------- Material Document Number
2. Mjahr ---------- Material Document Year
3. Blart ---------- Material Document Type
4. Budat ---------- Material Document Date
5. Xblrn ---------- Reference Document (Purchase Order Document) Number

Rohini kumar
SAP-ABAP 164

MSEG Table:
It holds Material Document Item Data

Fields:
1. Mblnr ------ Material Document Number
2. Mjahr ------ Material Document Year
3. Bwart ------ Moment Type
4. Werks ------ Plant
5. Lgort ------- Storage Location
6. Charg ------ Batch Number
7. Lifnr ------- Vendor Account Number

Link:
LFA1-lifnr
MSEG-lifnr

8. Shkzg ------- Debit / Credit Indicator


9. Dmbtr ------ Amount in Local Currency
[Link] ------ Quantity
[Link] ------- Unit of Measurement
[Link] ------- Purchase Order Number

Link:
EKPO-ebeln
MSEG-ebeln

[Link] -------- Item Number

Link:
EKPO-ebelp
MSEG-ebelp

[Link] ------- Number of Material Document Number


[Link] -------- Department
[Link] ------- Production Order Number

Rohini kumar
SAP-ABAP 165

MARA Table:
It holds Material Master Data

Fields:
1. Matnr -------- Material Number
2. Ersda --------- Date of Creation
3. Ernam -------- Person who Created that Material
4. Mtart --------- Material Type
5. Mbrsg -------- Industry Key
6. Matkl --------- Material Group
7. Bismt --------- Old Material Number
8. Miens --------- Unit of Measurement
9. Brgew -------- Gross Weight
[Link] -------- Net Weight
[Link] ---------- Division Code

Rohini kumar
SAP-ABAP 166

MAKT Table:

It holds Material Description Details


Fields:
1. Matnr -------- Material Number
2. Spras -------- Language Key
3. Maktx ------- Material Description

TSPAT Table:
It holds Division Description Details

Fields:
1. Spras --------- Language Key
2. Spart --------- Division Code
3. Vtext --------- Division Description

INDEX
1 ABAP Transactions (or) Module Pool Programming (or) Dialog Programming 5
2 Events in Module Pool Programming 5
3 Sub Screen Area 11
4 Table Control 15
5 Tab Strip Control 22
6 Mail Coding 33
7 Applications 34
8 LUW Functionality 36
9 CHAIN Keyword 37
10 Table Control Wizard 38
11 Input / Output Field 49
12 Assignment Log sheet Temperature Details 54
13 Assignment Cheques Date Entry Screen 56
14 Assignment Simple calculator 60
15 Reports (Classical, Interactive, ALV, LDB (Logical Data Base) &SAP Query 61
Reports )
16 1. Classical Reports (Events in Classical Reporting) 62
17 MM - PO and Tax Details Report 67
18 KONV Table 73
19 MM - Po Delivery Status Report (Assignment) 74
20 2. Interactive Reporting ( HIDE, SY-LSIND, SY-LISEL, GET CURSOR) 75
21 SAP Memory (SET PARAMETER) 76
Rohini kumar
SAP-ABAP 167

22 SD - Invoice Details based on Customers 77


23 VBRK, VBRP, ADRC Tables 82
24 3. ALV Reporting (Traditional ALV & ALV with OOP ) 84
25 A)Traditional ALV(Simple, Blocked & Hierarchal Sequential ALVs) 84
26 i) Simple ALV (Classical & Interactive ALV) 85
27 a) Classical ALV 85
28 MM - Open PO Details Report 85
29 REUSE_ALV_GRID_DISPLAY 90
30 MM - Restricted & Unrestricted stock details report material wise & plant wise 92
Report
31 MARD Table 95
32 SLIS_SORTINFO_ALV, SLIS_LISTHEADER, SLIS_ALV_EVENT 96
33 Monthly sales report based on customers Report (Assignment) 97
34 Sales analysis report (Assignment) 98
35 b) Interactive ALV 99
36 Customer master details Report 99
37 PP - Movement type wise sale production consumption details for materials 108
Report
38 SD - Sales register report 120
39 SD Flow 122
40 J_1IEXCHDR, VBFA Tables 123
41 VBKD Table 124
42 Material wise Invoice & Realization details Report(Assignment) 124
43 ii) Blocked ALV 125
44 Function Modules for Blocked ALVs 125
45 SD - Invoice details Customer wise, Material wise & Segment wise Report 126
46 iii) Hierarchal Sequential ALV 128
47 MM - PO Price Change Report 128
48 FI Module 136
49 HR Module 139
50 4. Logical Database 145
51 HR - Employee Details Report 145
52 Employee Total Details Report (Assignment) 149
53 5. SAP Query 150
54 Performance Tuning 152
55 Indexing (Primary Index & Secondary Index) 153
56 SQL Tracer 155
57 Runtime Analysis 157
58 ABAP Examples & ABAP Documentation 158
59 Extended Program Check 159

Rohini kumar
SAP-ABAP 168

60 Code Inspector 160


61 GET RUN TIME FIELD keyword 161
62 Creating Custom Logical Database 163
63 Material Ageing Report (Assignment) 165
64 Packing Cost Material Report (Assignment) 166
65 Overview of Reports 167
66 OOABAP 168
67 Section of a Class (Class Definition, Class Implementation & Class Execution) 170
68 FI - Statement of Account based on Customer Report 172
69 Local Class 178
70 BSID & BSAD Tables 178
71 Inheritance 179
72 FI - Vendor Aging Report 179
73 BSIT & BSAK Tables 186
74 Abstract Class 187
75 Employee Family & Previous Employers Details Report (Assignment) 194
76 Employee Late Coming Report (Assignment) 195
77 Global Class 196
78 Constructor 201
79 Asset Register Report (Assignment) 202
80 PR to GR Report (Assignment) 203
81 Interface Functionality 204
82 Alias 210
83 PP Module 211
84 Event Functionality 213
85 Exception Class 220
86 B) ALV Object Oriented Programming 221
87 Custom Control 221
88 QM - Report for Quality Notifications Report 222
89 PP - Packing cost material report using interactive functionality with 2 custom 226
controls Report
90 MAST, STAS, STOP & MBEW Tables 234
91 Exception Coding 235
92 Button Functionality 236
93 Hyperlinks Functionality 243
94 Questions & Answers 244
95 Module Pool Programming 244
96 Reports 246
97 Interactive Reports 272
98 OOABAP 278

Rohini kumar
SAP-ABAP 169

Rohini kumar
SAP-ABAP 170

MODULE POOL PROGRAMMING


24-09-2014
ABAP Transactions:
 It is also known as Module Pool Programming
 It is also known as Dialog Programming

Transaction:
A transaction is a series of Dialog Steps in which application will accept data from user which
is finally updated to Database

Name1

Ort01 Dialog Programming


Flow Logic
Land1

Display exit

Note:
Flow Logic (Events) acts as interface between Screen Painter & Dialog Programming

Events in Dialog Programming:


1. PAI (Process After Input)
2. PBO (Process Before Output)
3. POH (Process on Help Request)
4. POV (Process on Value Request)

PAI:
 It triggers after processing input values in a screen
 This event triggers whenever user interacts with a screen

PBO:
It triggers before screen display

Note:
1. PAI will brings the data from Screen to Program Variables
2. PBO will brings the data from Program Variables to Screen

Rohini kumar
SAP-ABAP 171

POH:
It triggers whenever user select F1 Function Key. It is for help

POV:
It triggers whenever user select F4 Function Key. It is for search help

Flow of Data in Module Pool Programming:

Transfer data from Screen to Program variables


Dialog
Screen Programming

Transfer data from Program Variables to Screen

Function Control Codes:


 It is also known as FCT codes
 Using FCT codes Function Codes can be controlled (or) identified in Module Pool
Programming
SY-UCOMM
Logic Logic

FCT FCT

Display Insert

Dialog Programming

SY-UCOMM:
It returns FCT value for a function key (button) in Dialog programming selected by user

Steps:
1. Work with SE38 (create a Dialog Programming)
2. Work with SE51 (create a Screen)
3. Work with SE93 (create a T code)
4. Run the T code

Rohini kumar
SAP-ABAP 172

Requirement:

Kunnar

Land1

Name1

Ort01

Pstlz

strs

Display Clear Exit

Solution:
Step-1:
 Go to SE38
 Program: ZSD_CUSTOMER_DETAILS
 Create
 Title: Customer Details
 Type: Module Pool
 Enter
 Package: ZABAP
 Save
 Create Request
 Short Description: SD/ABAP: Customer Details (25.09.2014)
 Enter
 Enter

Step-2:
 Go to SE51
 Program: ZSD_CUSTOMER_DETAILS
 Screen Number: 100
 Create
 Short Description: Screen 100
 Layout button
 Place a box (last from 6th option) on the screen
Rohini kumar
SAP-ABAP 173

Note:
Place the mouse pointer on the icon & click on it

 Bring mouse pointer on the screen & drag & drop it on the screen according to
requirement
 Double click on Frame of the box
 You will find an attributes pop-up
 Provide Text: Customer Details
 Close
 Select Dictionary Program Fields button (F6)
 You will find a pop-up
 Table Name: KNA1
 Enter
 You will find fields of the table
 Select Kunnr, Land1, Name1, Ort01, Pstlz, Stras
 Enter
 Place the fields with the help of mouse pointer on the box & right click
 Place 3 Push buttons (starting from 6th option) on Tool bar
 Double click on 1st Push button
 Text: Display
 FCT Code: Display
 Close
 Double click on 2nd Push button
 Text: Clear
 FCT Code: Clear
 Close
 Double click on 3rd Push button
 Text: Exit
 FCT Code: Exit
 Close
 Flow Logic button (F9)
 Remove comment for MODULE USER_COMMAND_100.
 Double click on USER_COMMAND_100
 You will find a pop-up Create Object: Yes
 By default New Include selected
 Select Main Program
 Enter
 Yes

Rohini kumar
SAP-ABAP 174

TABLES: KNA1.

DATA: BEGIN OF wa_kna1,


Land1 TYPE land1,
Name1 TYPE name1,
Ort01 TYPE ort01,
Pstlz TYPE pstlz,
Stras TYPE stras,
END OF wa_kna1.

 Scroll down to bottom


 Place cursor between MODULE…………ENDMODULE of USER_COMMAND_100.

CASE SY-UCOMM.
WHEN ‘Display’.
SELECT SINGLE land1 name1 ort01 pstlz stras INTO wa_kna1 FROM KNA1
WHERE kunnr EQ KNA1-kunnr.
WHEN ‘Clear’.
CLEAR: wa_kna1, KNA1-kunnr.
WHEN ‘Exit’.
LEAVE PROGRAM.
ENDCASE.

 Activate the program


 Back (F3)
 Remove comment for MODULE STATUS_100.
 Double click on STATUS_100
 Yes
 Main Program
 Enter
 Enter
 Place mouse pointer between MODULE…………ENDMODULE of STATUS_100

KNA1-land1 = wa_kna1-land1.
KNA1-name1 = wa_kna1-name1.
KNA1-ort01 = wa_kna1-ort01.
KNA1-pstlz = wa_kna1-pstlz.
KNA1-stras = wa_kna1-stras.

 Activate the program


 Back (F3)
 Activate the screen
Rohini kumar
SAP-ABAP 175

Step-3:
 Go to SE93
 Transaction Code: ZCUSTOMER
 Create
 Title: T code for Customer Details
 Enter
 Program: ZSD_CUSTOMER_DETAILS
 Screen Number: 100
 Save
 Enter
 Run the T code (ZCUSTOMER)

25-09-2014
Brief Flow:
1. PBO (Screen is called)
2. PAI (This event will triggers whenever you select a Button)
3. PBO (This will carry the data from Program Variables i.e. wa_kna1-kunnr = KNA1-
kunnr to screen field)

Debugging a Module Pool Program:


 Go to SE38
 Program: ZSD_CUSTOMER_DETAILS
 Change
 Place cursor at WHEN ‘DISPLAY’.
 Select Stop
 Place cursor between MODULE………..ENDMODULE of STATUS_100.
 Select Stop
 Run T code (ZCUSTOMER)
 Enter

Rohini kumar
SAP-ABAP 176

Sub Screen Area:


It is a location where sub screens can be called in Main screen

Note:
In SAP you can create only 1 Normal Screen in an application & remaining all are Sub screens

Requirement:

Material Code Material Type

Material Group

Gross Weight

Net Weight

Division

Display Clear Exit Material Description

Sub screen area (sub) sub screen (110)


Main screen (100)

Syntax for Calling Sub Screen in Sub screen area:


CALL SUBSCREEN <sub screen area name> INCLUDING <program name>
<sub screen number>

Example:
CALL SUBSCREEN SUB INCLUDING ‘ZMM_MATERIAL_SUB’ ‘110’

Solution:
Step-1:
 Go to SE38
 Program: ZMM_MATERIAL_SUB
 Create
 Title: Materials Details with Sub Screen
 Type: Module Pool
 Save
 Package: ZABAP
 Enter
 Create Request
Rohini kumar
SAP-ABAP 177

 Short Description: MM/ABAP: Materials Details with Sub Screen (26.09.2014)


 Enter
 Enter

Step-2:
 Go to SE51
 Program: ZMM_MATERIAL_SUB
 Screen: 100
 Create
 Short Description: Screen 100
 Layout
 Dictionary Program Fields (F6)
 Table Name: MARA
 Enter
 Select matnr field
 Enter
 Place the field on the top of the screen
 Place Sub Screen Area (last from 5th option) on the screen
 Double click on Sub Screen Area
 Name: SUB
 Close
 Place 3 Push Buttons (starting from 6th option) under Sub Screen Area
 Provide Text & FCT code as per requirement
 Select Flow Logic
 Remove comment for MODULE USER_COMMAND_100
 Double click on USER_COMMAND_100
 Yes
 Main Program
 Enter
 Yes

TABLES: MARA, MAKT.

 Place cursor between MODULE……….ENDMODULE of USER_COMMAND_100

CASE SY-UCOMM.
WHEN ‘DISPLAY’.
SELECT SINGLE mtart matkl brgew ntgew spart FROM MARA
INTO (MARA-mtart, MARA-matkl, MARA-brgew, MARA-ntgew, MARA-spart)
WHERE matnr = MARA-matnr.

SELECT SINGLE maktx FROM MAKT INTO MAKT-maktx


Rohini kumar
SAP-ABAP 178

WHERE matnr = MARA-matnr


AND spras = ‘EN’.

WHEN ‘CLEAR’.
CLEAR: MARA, MAKT.

WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.

 Activate program
 Back (F3)
 Place cursor under PROCESS BEFORE OUTPUT

CALL SUBSCREEN SUB INCLUDING ‘ZMM_MATERIAL_SUB’ ‘110’.

 Activate screen
 Back (F3)
 Screen: 110
 Create
 Short Description: Sub Screen 110
 ** Screen Type: Sub Screen
 Layout
 **place a box (last from 6th option) on top left corner of the screen
 Double click on frame of the box
 Text: Material Details
 Close
 Dictionary Program Fields (F6)
 Table Name: MARA
 Enter
 Select matnr, matkl, brgew, ntgew, spart fields
 Enter
 Place the fields on the box
 Dictionary Program Fields (F6)
 Table Name: MAKT
 Enter
 Select maktx field
 Enter
 Place the field on the box
 Flow Logic
 Activate screen

Rohini kumar
SAP-ABAP 179

Step-3:
 Go to SE93
 Transaction Code: ZMATERIAL
 Create
 Short Text: T code for Materials Details
 Enter
 Program: ZMM_MATERIAL_SUB
 Screen Number: 100
 Save
 Enter
 Run T code (ZMATERIAL)

Rohini kumar
SAP-ABAP 180

27-09-2014
Table Control:
Use table control for processing multiple records

Syntax for declaring Table Control:


CONTROLS <table control name> TYPE TABLEVIEW USING SCREEN <screen no>

Object:
Truck Entry Screen

Vendor

DC DC Truck Gross Net Tare PO Vendor


Number Date Number weight Weight Weight Number number

Display Insert Update Reset Exit

Screen 100

Solution:
Step-1:
 Go to SE11
 Database Table: ZMM_DEMO
 Create
 Short Description: Truck Entry Table
 Delivery Class: A
 Table View Maintenance: Table View Maintained with Restrictions
 Fields
Field key Data Element
MANDT _/ MANDT
DCNO _/ ZDCNO
DCDATE _/ ZDC_DATE
TNO ZTNO
BRGEW BRGEW
TWT TWT
Rohini kumar
SAP-ABAP 181

NTGEW NTGEW
EBELN EBELN
LIFNR LIFNR

 Currency Quantity Fields


Field Reference Table Reference Field
BRGEW EKPO MEINS
TWT EKPO MEINS
NTGEW EKPO MEINS

 Technical Settings
 Data Class: APPL1
 Size Category: 0
 Save
 Back (F3)
 Activate Table
 Yes

Step-2:
 Go to SE80
 Function Group: ZTCGR
 Enter
 Yes
 Short Text: Function Group for Truck Details
 Enter
 Local Object
 Under ZTCGR you will find INCLUDES, Expand it
 You will find 2 INCLUDES
 Double click on an include with TOP as suffix
 Select Display/Change option

TABLES: ZMM_DEMO, LFA1.

CONTROLS: vcontrol TYPE TABLEVIEW USING SCREEN ‘100’.


DATA: n TYPE I.
wa_demo TYPE zmm_demo.
it_demo TYPE TABLE OF zmm_demo.

 Activate
 Back (F3)
 Right click on ZTCGR function group
 Create
Rohini kumar
SAP-ABAP 182

 Screen
 You will find a pop-up
 Program: SAPLZTCGR
 Screen Number: 100
 Enter
 Short Description: Screen 100
 Layout
 F6
 Table Name: LFA1
 Enter
 Select Lifnr
 Enter
 Place the field on top of the screen
 Place a Box on the screen
 Double click on box frame
 Text: Truck Entry
 Close
 Place Table Control (last from 4th option) on the box
 Double click on Table Control
 At bottom under Separators check Vertical & check Horizontal
 Close
 F6
 Table Name: ZMM_DEMO
 Select all fields except MANDT
 Enter
 Place the fields on table control
 Place 5 push buttons under table control
 Provide Text & FCT code as per requirement
 Flow Logic

Step-3:
 Place cursor under PROCESS AFTER INPUT.

MODULE USER_DML.
LOOP AT it_demo.
FIELD: zmm_demo-dcno,
zmm_demo-dcdate,
zmm_demo-tno,
zmm_demo-brgew,
zmm_demo-twt
zmm_demo-ntgew
zmm_demo-ebeln,
Rohini kumar
SAP-ABAP 183

zmm_demo-lifnr.
ENDLOOP.

 Place cursor under PROCESS BEFORE OUTPUT.

LOOP AT it_demo INTO wa_demo WITH CONTROL vcontrol.


MODULE STATUS_100.
ENDLOOP.

 Double click on USER_DML


 Yes
 Enter
 Enter
 Yes

 Place cursor between MODULE………..ENDMODULE of USER_DML

CASE SY-UCOMM.
WHEN ‘INSERT’.
MODIFY zmm_demo FROM zmm_demo.
IF SY-SUBRC EQ 0.
MESSAGE ‘Record Inserted’ TYPE ‘S’.
ENDIF.

WHEN ‘UPDATE’.
UPDATE zmm_demo SET brgew = zmm_demo-brgew
twt = zmm_demo-twt
ntgew = zmm_demo-ntgew
WHERE dcno = zmm_demo-dcno.
IF SY-SUBRC EQ 0.
MESSAGE ‘Record Updated’ TYPE ‘S’.
ENDIF.

WHEN ‘ENTER’.
zmm_demo-ntgew = zmm_demo-brgew - zmm_demo-twt.
ENDCASE.

 Activate
 Back (F3)

 Remove comment for MODULE USER_COMMAND_100.


 Double click on USER_COMMAND_100
Rohini kumar
SAP-ABAP 184

 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE…………..ENDMODULE of USER_COMMAND_100

CASE SY-UCOMM.
WHEN ‘DISPLAY’.
SELECT * FROM zmm_demo INTO TABLE it_demo WHERE lifnr = lfa1-lifnr.

WHEN ‘RESET’.
REFRESH it_demo.

WHEN ‘EXIT’.
LEAVE TO SCREEN 0.
ENDCASE.

MODIFY it_demo FROM zmm_demo INDEX vcontrol-current_line.


IF SY-SUBRC NE 0.
APPEND zmm_demo TO it_demo.
ENDIF.

 Activate
 Back (F3)

 Remove comment for MODULE STATUS_100.


 Double click on STATUS_100
 Yes
 Enter
 Enter
 Yes

MOVE wa_demo-dcno TO zmm_demo-dcno.


MOVE wa_demo-dcdate TO zmm_demo-dcdate.
MOVE wa_demo-tno TO zmm_demo-tno.
MOVE wa_demo-brgew TO zmm_demo-brgew.
MOVE wa_demo-twt TO zmm_demo-twt.
MOVE wa_demo-ntgew TO zmm_demo-ntgew.
MOVE wa_demo-ebeln TO zmm_demo-ebeln.
MOVE wa_demo-lifnr TO zmm_demo-lifnr.

DESCRIBE TABLE it_demo LINES n.


Rohini kumar
SAP-ABAP 185

vcontrol-lines = n. //---it activates vertical scroll bar

 Back (F3)
 Activate screen

 Right click on ZTCGR function group


 Activate
 Enter
 Right click on ZTCGR
 Create
 Transaction
 Transaction Code: ZTRUCK
 Short Text: Truck Entry
 ***Program: SAPLTCGR
 ***Screen Number: 100
 Save

 Run T code (ZTRUCK)

29-09-2014
Ques-1: Suppose in table control when I entered few records then I selected ‘Enter’ option, I
found that the records are completely vanished from table control. Why it happens & What
logic you will write to avoid problem?
Ans:
 When you select ‘Enter’ control will moves from screen to program
 In program there is no logic provided for storing the table control data in internal table
 So nothing is transferred back to table control screen
 So it looks like empty
Logic:
MODIFY it_demo FROM zmm_demo INDEX vcontrol-current_line.
IF SY-SUBRC NE 0.
APPEND zmm_demo TO it_demo.
ENDIF.

Ques-2: In table control how you can perform auto calculations whenever ‘Enter’ key selected?
Ans:
 Remove comment for SET PF_STATUS.
 Under MODULE STATUS_100 ‘xxxxxxxxx’.
 Remove ‘xxxxxxxxxx’ provide ’BACK’.
 Yes
 Yes

Rohini kumar
SAP-ABAP 186

 Short Text: BACK


 Enter
 Expand function keys option
 _/ ENTER
 Activate
 You will find a pop-up, Enter
 Function Text: Enter
 Enter
 Back (F3)
 Activate program

Rohini kumar
SAP-ABAP 187

Tab Strip Control:


Syntax:
CONTROLS <strip name> TYPE TABSTRIP.

Object:
Former Loan Application

Cooperative Bank

-------- Main Screen 100

Farmer Loan Payment


- Tab Strip

Sub Screen Area

Sub Screen 110


ZFARMER TABLE
FNAME
Account fname fcountry Fcity Postal Tel address
FCOUNTRY number code
FCITY

POSTAL CODE

TEL

ADDRESS

Automatically account number should be generated by system


i.e. 90000001
SAVE

Rohini kumar
SAP-ABAP 188

Sub Screen 120


ZLOAN Table
A/C NUMBER
A/C FNAME LOAN APPROVE
FNAME
NUMBER AMOUNT
LOAN AMOUNT

APPROVE

A/C Number field is mandatory


FName field is in display mode
SAVE
When you enter A/CNumber & then press Enter, FName will
display automatically

Sub Screen 130


A/C NUMBER ZPAYMENT Table

FNAME A/C FNAME LOAN LOAN INTEREST DUE


NUMBER AMOUNT PAID
LOAN AMOUNT

LOAN PAID

INTEREST
A/C Number field is mandatory
DUE FName, Loan Amount & Interest fields are in display mode
When you enter Loan Paid & press Calc button Interest will
generated automatically
CALC MAIL

Rohini kumar
SAP-ABAP 189

30-09-2014
Solution:
Step-1: Function Group Creation
 Go to SE80
 Function Group: ZFARMGR
 Enter
 Yes
 Short Text: Function Group for Farmer Loan
 Enter
 Package: ZABAP
 Enter
 Create Request Number
 Short Description: MM:ABAP/ Farmer Loan (30.09.2014)
 Enter
 Enter

Step-2: Providing Variables & Tables


 Expand Includes
 Double click on Top Include
 Display / Change

TABLES: ZFARMER, ZLOAN, ZPAYMENT.

CONTROLS STRIP TYPE TABSTRIP.

DATA: x TYPE SY-DYNNR VALUE ‘110’.

DATA: days TYPE I,


approve TYPE C.

* for mails
DATA: t_doc TYPE SODOCCHGI1,
t_receive TYPE SOMLRECI1 OCCURS 0 WITH HEADERLINE,
t_text TYPE SOLISTI1 OCCURS 0 WITH HEADERLINE.

DATA: v_interest(10) TYPE C,


v_due(10) TYPE C,
v_paid(10) TYPE C,
text(100) TYPE C.

 Activate
 Back (F3)
Rohini kumar
SAP-ABAP 190

Step-3:
 Right click on ZFARMER
 Create
 Screen
 Screen Number: 100
 Enter
 Short Description: Screen 100
 Layout
 Place Text Field (starting from 2nd option)
 Double click on Text Field
 Text: Cooperative Bank
 Close
 Place Tab Strip Control on screen
 Double click on Tab Strip Control
 Name: STRIP
 Tab Title: 3
 Close
 Place Sub Screen Area (last from 5th option) on tab strip control
 Double click on Sub Screen Area
 Name: SUB
 Close
 Double click on Tab1
 Text: Farmer
 FCT Code: TAB1
 Close
 Double click on Tab2
 Text: Loan
 FCT Code: TAB2
 ***Ref Field: SUB
 Close
 Double click on Tab3
 Text: Payment
 FCT Code: TAB3
 ***Ref Field: SUB
 Close
 Flow Logic

Step-4:
 Remove comment for MODULE USER_COMMAND_100
 Double click on USER_COMMAND_100
 Yes
 Enter
Rohini kumar
SAP-ABAP 191

 Enter
 Yes
 Place cursor between MODULE…………….ENDMODULE of
USER_COMMAND_100

CASE SY-UCOMM.
WHEN ‘TAB1’.
x = ‘110’.
STRIP-ACTIVETAB = ‘TAB1’.
WHEN ‘TAB2’.
x = ‘120’.
STRIP-ACTIVETAB = ‘TAB2’.
WHEN ‘TAB3’.
x = ‘130’.
STRIP-ACTIVETAB = ‘TAB3’.
ENDCASE.

 Activate
 Back (F3)

 Place cursor under USER_COMMAND_100


CALL SUBSCREEN SUB.

 Place cursor under PROCESS BEFORE OUTPUT


CALL SUBSCREEN SUB INCLUDING ‘SAPLZFARMGR’ x.

 Activate
 Back (F3)

Step-5:
 Right click on ZFARMGR
 Create
 Screen
 Screen Number: 110
 Enter
 Short Description: Sub Screen 110
 Screen Type: Sub Screen
 Layout
 Place a Box on top left corner of the screen
 Double click on frame of box
 Text: Farmer Details
 Close
Rohini kumar
SAP-ABAP 192

 F6
 Table Name: ZFARMER
 Enter
 Except Mandt & Acno select all fields
 Enter
 Place the fields on the box
 Place a Push button on the box
 Double click on push button
 Text: Save
 FCT Code: SAVE
 Close
 Flow Logic
 Remove comment for MODULE USER_COMMAND_110
 Double click on USER_COMMAND_110
 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE……….ENDMODULE of USER_COMMAND_110

CASE SY-UCOMM.
WHEN ‘SAVE’.
SELECT SINGLE MAX( acno ) FROM ZFARMER INTO zfarmer-acno.
IF zfarmer-acno EQ 0.
zfarmer-acno = ‘9000000’.
ELSE.
zfarmer-acno = zfarmer-acno + 1.
ENDIF.
INSERT ZFARMER.
IF SY-SUBRC EQ 0.
MESSAGE S000(ZMESS_CLS) WITH zfarmer-acno.
ENDIF.
ENDCASE.

 Double click on ZMESS_CLS


 Yes
 Short Text: Message Handling
 Messages tab
 Enter
 Enter
000 Successfully generated a/c number &
 Save
Rohini kumar
SAP-ABAP 193

 Back (F3)
 Activate
 Back (F3)
 Activate screen
 Back

Step-6:
 Right click on ZFARMGR
 Create
 Screen
 Screen Number: 120
 Enter
 Short Description: Sub Screen 120
 Screen Type: Sub Screen
 Layout
 Place a Box on top left corner of the screen
 Double click on frame of box
 Text: Farmer Loan
 Close
 F6
 Table Name: ZLOAN
 Enter
 Select Acno, Fname, Lamount fields
 Enter
 Place fields on the box
 Place a check box (starting from 4th option) on the box
 Double click on check box
 Name: APPROVE
 Text: Approve
 Close
 Place a push button on the box
 Double click on push button
 Text: Save
 FCT Code: SAVE
 Close
 Double click on Fname I/O field
 *** at bottom select Program tab
 Input: Not Possible
 Close
 Flow Logic
 Place cursor under PROCESS AFTER INPUT

Rohini kumar
SAP-ABAP 194

CHAIN.
FIELD: zloan-acno MODULE CHECK ON INPUT,
zloan-lamount.

 Remove comment for MODULE USER_COMMAND_120.


ENDCHAIN.

 Double click on CHECK


 Yes
 Enter
 Enter
 Yes

SELECT SINGLE acno FROM ZFARMER INTO zloan-acno WHERE acno =


zloan-acno.
IF SY-SUBRC NE 0.
MESSAGE ‘Enter Valid Account Number’ TYPE ‘E’.
ENDIF.

 Activate
 Back
 Double click on USER_COMMAND_120.
 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE……..ENDMODULE of USER_COMMAND_120

SELECT SINGLE fname FROM ZFARMER INTO zloan-fname WHERE acno =


zloan-acno.
CASE SY-UCOMM.
WHEN ‘SAVE’.
zloan-ldate = SY-DATUM.
zloan-approve = APPROVE.
INSERT ZLOAN.
IF SY-SUBRC EQ 0.
MESSAGE ‘Record inserted’ TYPE ‘S’.
ENDIF.
ENDCASE.

 Activate
Rohini kumar
SAP-ABAP 195

 Back
 Activate screen
 Back

Step-7:
 Right click on ZFARMGR
 Create
 Screen
 Screen Number: 130
 Enter
 Short Description: Sub Screen 130
 Screen Type: Sub Screen
 Layout
 Place a Box on top left corner
 Double click on frame of box
 Text: Payment Details
 F6
 Table Name: ZPAYMENT
 Enter
 Except Mandt select all fields
 Enter
 Place fields on box
 Double click on Fname I/O field
 At bottom select Program tab
 Input: Not Possible
 Close
 Repeat the same procedure with Lamount, Iamount & Due amount
 *** double click on Loan Paid I/O field
 At bottom select Program tab
 Input: Required
 Place a push button on the box
 Text: Calc
 FCT Code: CALC
 Place another push button
 Text: Mail
 FCT Code: MAIL
 Flow Logic
 Place cursor under PROCESS AFTER INPUT

CHAIN.
FIELD: zpayment-acno MODULE CHECK1 ON INPUT,
zpayment-lamount.
Rohini kumar
SAP-ABAP 196

 Remove comment for MODULE USER_COMMAND_130


ENDCHAIN.

 Double click on CHECK1


 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE…………ENDMODULE of USER_COMMAND_130

SELECT SINGLE acno FROM ZLOAN INTO zpayment-acno WHERE acno =


zpayment-acno.
IF SY-SUBRC NE 0.
MESSAGE ‘Enter valid a/c number’ TYPE ‘E’.
ENDIF.

 Activate
 Back
 Double click on USER_COMMAND_130
 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE………..ENDMODULE of USER_COMMAND_130

SELECT SINGLE fname lamount ldate approve FROM ZLOAN INTO (zpayment-
fname, zpayment-lamount, zloan-ldate, zloan-approve) WHERE acno = zpayment-acno.
CASE SY-UCOMM.
WHEN ‘CALC’.
IF zloan-approve EQ ‘x’.
CALL FUNCTION ‘HR_99S_INTERVAL_BETWEEN_DATES’.
EXPORTING
begda = zloan-ldate
endda = sy-datum
IMPORTING
days = days
zpayment-iamount = ( (zpayment-lamount * 1 * days) / (100 * 30) ).
zpayment-due = (zpayment-lamount + zpayment-iamount) - zpayment-lpaid.
UPDATE ZLOAN SET lamount = zpayment-due WHERE acno = zpayment-acno.
INSERT ZPAYMENT.
ENDIF.
Rohini kumar
SAP-ABAP 197

ENDCASE.
 Activate
 Back
 Activate screen

Step-8:
 Right click on ZFARMGR
 Create
 Transaction
 Transaction Code: YFARMER
 Enter
 Program: SAPLZFARMGR
 Screen Number: 100
 Save
 Back

Step-9:
 Right click on ZFARMGR
 Activate
 Run T code (YFARMER)

Rohini kumar
SAP-ABAP 198

01-10-2014
Mail Coding:
* for mail address
T_receiver_rec_type = ‘U’.
T_receiver_receiver = ‘satya@[Link]’.

* fill subject
T_doc_obj_name = ‘TEXT’.
T_doc_obj_descr = ‘Payment Details’.
T_doc_obj_langu = SY-LANGU.

*fill contents
V_paid = zpayment-lpaid.
V_due = zpayment-due.
V_interest = zpayment-iamount.

CONCATENATE ‘Account Number:’ zpayment-acno INTO TEXT.


APPEND TEXT TO T_TEXT.

CONCATENATE ‘Loan Paid:’ l_paid INTO TEXT.


APPEND TEXT TO T_TEXT.

CONCATENATE ‘Loan Due:’ v_due INTO TEXT.


APPEND TEXT TO T_TEXT.

CONCATENATE ‘Interest Amount:’ v_interest INTO TEXT.


APPEND TEXT TO T_TEXT.

CALL FUNCTION ‘SO_NEW_DOCUMENT_SEND_API1’.


EXPORTING
Document_data = t_doc.
Commit_work = ‘x’.
TABLES
Object-content = t_text.
Receivers = t_receiver.
IF SY-SUBRC EQ 0.
COMMIT WORK.
* push mails to SAP inbox
SUBMIT RSLONN01 WITH MODE = ‘INT’ AND RETURN.
ENDIF.

 Activate
Rohini kumar
SAP-ABAP 199

Applications:
 Application is a collection of screens
 Screen is a collection of fields
 Applications are created by Technical Consultant
 Customization of data in application is done by Functional Consultant
 Applications are used by End Users

Example:
 Go to XK01
 Vendor: 9872
 Company Code: 1000
 Purchase Organization: 1000
 Account Group: 0001
 Enter
 Title: MR
 Name: Ashok
 Search Tem: Broacomm
 Street: Ameerpet
 Postal Code: 500074
 City: Hyderabad
 Country: IN
 Enter
 No data in this screen
 Enter
 Country: IN
 Bank Key: F000158
 A/C Number: 9000006
 Enter
 Enter
 Recon Account: 31000
 Cash Management Group: A1
 Enter
 No data in this screen
 Enter
 No data in this screen
 Enter
 Order Currency: INR
 Enter
 Save

Rohini kumar
SAP-ABAP 200

 Go to SE11
 Database Table: LFA1
 Display
 Contents
 Lifnr: 9872
 F8

Rohini kumar
SAP-ABAP 201

LUW Functionality:
 Logical Unit of Work
 By default all SAP applications follows LUW functionality

Database Server

Buffer LFA1 LFAK

VENDOR: 9872 NAME RECON


C CODE: 1000 CITY CASH MANAGEMENT
P ORG: 1000 COUNTRY GROUP

A/C NUMBER: 0001

SAVE

Screen level validation Screen level validation Screen level validation Explicit commit
Implicit commit Implicit commit Implicit commit

06-10-2014
 By default all SAP applications follows LUW functionality
 In between the Screens implicit commit will take place where implicit commit data from
Screen is transferred to Database Buffer
 Whenever user applies Save option explicit commit will take place where explicit commit
data from Database Buffer is transferred to respective Database Table

Rohini kumar
SAP-ABAP 202

CHAIN Keyword:
 By default standard application allows screen level validations
 If you want to perform field level validations you should write logic explicitly using
CHAIN……..ENDCHAIN

 All implicit commit as DB LUW Commit & all explicit commit as SAP LUW Commit

Advantages & Disadvantages of LUW:


Disadvantage of LUW:
If number of screens increases in an application, interaction between Presentation Server &
Database Server also increases there by reducing the performance of system

Advantage of LUW:
With LUW the data is concisely transferred to Database

Rohini kumar
SAP-ABAP 203

Table Control Wizard:


 It is advance to Table Control
 In Table Control Wizard most of the logic is already provided by system

Requirement:
Equipment details based on Plant

Input:

Add New Update Delete Display

Equipment Number: To

Equipment Date: To

Plant To

Material Code To

Save

Equi no Equi date Plant Material Quantity Production Dept


code order
5001 1.2.2014 1001 F001 2 3006001 M & pp

Sall dsall delete

Solution:
Step-1:
 Go to SE11
 Database Table: ZPP_EQUIPMENT
 Create
 Short Description: Equipment Details
 Delivery Class: A
 Table View Maint: Display / Maint Allowed with Restrictions
Rohini kumar
SAP-ABAP 204

 Field tab
Field key Data Element
Mandt _/ MANDT
Sel _/ CHAR1
Equnr _/ EQUNR
Edate _/ ZEDATE
Werks WERKS_D
Matnr MATNR
Menge MENGE_D
Aufnr AUFNR
Dept ZDEPT_DAT

 Double click on ZDEPT_DAT


 Yes
 Enter
 Yes
 Short Description: Department
 Domain: ZDEPT_DEM
 Double click on ZDEPT_DEM
 Yes
 Short Description: Domain for Department Field
 Data type: CHAR 10
 Value Range tab
Fix val short description
P & Engg Plant & Engg
Mech Mechanical
Prod Production’
Mstores Mould Stroes

 Activate domain
 Field Label
Medium 20 Department
 Activate
 Back
Field key Data Element
Erdat ERDAT
Ernam ERNAM

 Technical Settings
 Data Class: APPL1
 Size Category: 0
 Currency Quantity Fields tab
Rohini kumar
SAP-ABAP 205

Menge EKPO meins


 Activate

Step-2:
 Go to SE38
 Program: ZPP_EQUIPMENT_DETAILS
 Create
 Title: Equipment Details
 Type: Executable Program
 Save

TABLES: ZPP_EQUIPMENT, SSCRFIELDS.

SELECTION-SCREEN: BEGIN OF LINE.


PUSHBUTTON 10(10) BUTTON1 USER-COMMAND BUT1,
PUSHBUTTON 30(10) BUTTON2 USER-COMMAND BUT2,
PUSHBUTTON 50(10) BUTTON3 USER-COMMAND BUT3,
PUSHBUTTON 70(10) BUTTON4 USER-COMMAND BUT4.
SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE screen-000.


SELECT-OPTION: s_equnr FOR zpp_equipment-equnr,
S_edate FOR zpp_equipment-edate,
S_werks FOR zpp_equipment-werks,
S_matnr FOR zpp_equipment-matnr.
SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION.
BUTTON1 = ‘Add New’.
BUTTON2 = ‘Update’.
BUTTON3 = ‘Delete’.
BUTTON4 = ‘Display’.

DATA: wa TYPE ZPP_EQUIPMENT,


It TYPE TABLE OF ZPP_EQUIPMENT.

* validate the buttons


AT SELECTION-SCREEN.

IF SSCRFIELDS-UCOMM EQ ‘BUT1’.
CALL SCREEN 100.
Rohini kumar
SAP-ABAP 206

ELSEIF SSCRFIELDS-UCOMM EQ ‘BUT2’.


SELECT * FROM ZPP_EQUIPMENT INTO TABLE it
WHERE equnr IN s_equnr
AND matnr IN s_matnr
AND werks IN s_werks
AND edate IN s_edate.

LOOP AT it INTO wa.


ENDLOOP.

CALL SCREEN 100.

ELSEIF SSCRFIELDS-UCOMM EQ ‘BUT3’.


SELECT * FROM ZPP_EQUIPMENT INTO TABLE it
WHERE equnr IN s_equnr
AND matnr IN s_matnr
AND werks IN s_werks
AND edate IN s_edate.

LOOP AT it INTO wa.


ENDLOOP.

CALL SCREEN 200.

ELSEIF SSCRFIELDS-UCOMM EQ ‘BUT4’.


SELECT * FROM ZPP_EQUIPMENT INTO TABLE it
WHERE equnr IN s_equnr
AND matnr IN s_matnr
AND werks IN s_werks
AND edate IN s_edate.

LOOP AT it INTO wa.


ENDLOOP.

CALL SCREEN 100.

ENDIF.

Step-3:
 Double click on 100
 Yes
 Yes
Rohini kumar
SAP-ABAP 207

 Short Description: Screen 100


 Main Screen
 Layout
 Place Table Control Wizard (last from 3rd option) on the screen
 Continue
 Name of Table Control: vcontrol (any name)
 Continue
 Internal Table: it
 Table Work Area: wa
 Continue
 Select Equnr, Edate, Werks, Matnr, Menge, Aufnr, Dept fields
 Continue
 Input Control
 Continue
 Scroll
 Continue
 Continue
 Complete

Step-4:
 Double click on equnr = equipment number
 Double click on edate = eq date
 Similarly maintain labels of all the fields
 Double click under Department field
 Provide drop down list box
 Place a push button on top of table control
 Double click on push button
 Text: Save
 FCT Code: SAVE
 Flow Logic
 Search for MODULE VCONTROL_MODIFY
 Double click on VCONTROL_MODIFY
 Yes
 Place cursor after MODULE VCONTROL MODIFY INPUT
 Enter

CASE SY-UCOMM.
WHEN ‘SAVE’.
MODIFY ZPP_EQUIPMENT FROM wa.
IF SY-SUBRC EQ 0.
MESSAGE ‘Record saved’ TYPE ‘S’.
ENDIF.
Rohini kumar
SAP-ABAP 208

UPDATE ZPP_EQUIPMENT SET erdat = sy-datum ernam = sy-uname


WHERE equnr = wa-equnr.

 Place cursor after MODIFY it FROM wa INDEX VCONTROL-CURRENT_LINE


 Enter

IF SY-SUBRC NE 0.
APPEND wa TO it.
ENDIF.

 Activate
 During activation you will find an error---controls can only be defined globally
 Double click on Error
 Copy the lines
CONTROLS: VCONTROL TYPE TABLE VIEW………………..
DATA: G_VCONTROL_LINES LIKE SY-LOOPC
DATA: OK_CODE LIKE SY-UCOMM.

 And remove the 3 lines


 Paste the 3 lines under Declaration
 Activate
 Back

Step-5:
 Remove comment for MODULE STATUS_100
 Double click on STATUS_100
 Yes
 Main Program
 Yes
 Place cursor between MODULE……..ENDMODULE of STATUS_100

CASE SY-UCOMM.
WHEN ‘BUT2’.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘wa-equnr’
OR SCREEN-NAME EQ ‘wa-edate’
OR SCREEN-NAME EQ ‘wa-werks’
OR SCREEN-NAME EQ ‘wa-dept’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Rohini kumar
SAP-ABAP 209

WHEN ‘BUT4’.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘wa-equnr’
OR SCREEN-NAME EQ ‘wa-edate’
OR SCREEN-NAME EQ ‘wa-werks’
OR SCREEN-NAME EQ ‘wa-dept’
OR SCREEN-NAME EQ ‘wa-matnr’
OR SCREEN-NAME EQ ‘wa-menge’
OR SCREEN-NAME EQ ‘wa-aufnr’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDCASE.

Step-6:
 Remove comment for SET PF-STATUS ‘BACK’.
 Double click on BACK
 Yes
 Yes
 Short Text: Back
 Enter
 Expand Function Keys
 Provide BACK
 Activate
 Back
 Activate program
 Back

Step-7:
 Remove comment for MODULE USER_COMMAND_100
 Double click on USER_COMMAND_100
 Yes
 Main Program
 Enter
 Place cursor between MODULE……….ENDMODULE of USER_COMMAND_100

CASE SY-UCOMM.
WHEN ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.
 Activate
Rohini kumar
SAP-ABAP 210

Step-8:
 Double click on 200
 Yes
 Short Description: Screen 200
 Layout
 Place Table Control With Wizard (last from 3rd option) on the screen
 Continue
 Name of Table Control: VCONTROL1
 Continue
 Internal Program Tabel: it
 Table Work Area: wa
 Continue
 Select all fields (SEL, EQUNR, ……………DEPT)
 Continue
 Input Control
 Scroll
Continue
 Continue
 Complete
 Change the Labels of fields as per requirement
 *** select under SEL field & right click
 Convert
 Check Box
 Left Button
 Double click under DEPT field
 Drop Down
 List Box
 Close
 Place 3 push buttons above Table Control
 Provide Text & FCT codes as per requirement
 Flow Logic

Step-9:
 Remove comment for MODULE STATUS_200
 Double click on STATUS_200
 Yes
 Main Program
 Enter
 Yes
 Place cursor between MODULE…………ENDMODULE of STATUS_200

Rohini kumar
SAP-ABAP 211

CASE SY-UCOMM.
WHEN ‘BUT3’.
LOOP AT SCREEN.
IF SCREEN-NUMBER EQ ‘wa-qunr’
OR SCREEN-NUMBER EQ ‘wa-edate’
OR SCREEN-NUMBER EQ ‘wa-matnr’
OR SCREEN-NUMBER EQ ‘wa-werks’
OR SCREEN-NUMBER EQ ‘wa-aufnr’
OR SCREEN-NUMBER EQ ‘wa-menge’
OR SCREEN-NUMBER EQ ‘wa-dept’.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.
ENDLOOP.
ENDCASE.

 Activate
 Back

Step-10:
 Remove comment for MODULE USER_COMMAND_200
 Double click on USER_COMMAND_200
 Yes
 Main Program
 Enter
 Place cursor between MODULE………ENDMODULE of USER_COMMAND_200

DATA: v_ans type C.

CASE SY-UCOMM.
WHEN ‘DELETE’.

CALL FUNCTION ‘POPUP_TO_CONFIRM’


EXPROTING
TITLEBAR = ‘Deletion Conformation’
TEXT_QUESTION = ‘Do you want to delete’
TEXT_BUTTON_1 = ‘Yes’
TEXT_BUTTON_2 = ‘No’
IMPORTING
Rohini kumar
SAP-ABAP 212

ANSWER = v_ans.

IF v_ans EQ 1.
LOOP AT it INTO wa.

IF wa-sel EQ ‘X’
DELETE FROM ZPP_EQUIPMENT WHERE equnr = wa-equnr.

IF SY-SUBRC EQ 0.
MESSAGE ‘Record deleted’ TYPE ‘S’.
ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

WHEN ‘SALL’.
LOOP AT it INTO wa.
wa-sel = ‘X’.
MODIFY it FROM wa TRANSPORTING sel
ENDLOOP.

WHEN ‘DSALL’.
LOOP AT it INTO wa.
wa-sel = ‘ ’.
MODIFY it FROM wa TRANSPORTING sel
ENDLOOP.

WHEN ‘BACK’.
LEAVE TO SCREEN 0.

 Activate
 Back

Step-11:
 Double click on STATUS_200
 Remove comment for SET PF_STATUS ‘BACK1’
 Double click on BACK1
 Yes
 Short Text: BACK
Rohini kumar
SAP-ABAP 213

 Enter
 Expand Function Keys option
 Type ENTER
 Activate
 Back
 Activate
 Back
 Activate

Ques: What is the difference between SSCRFIELDS-UCOMM & SY-UCOMM?


Ans:
SSCRFIELDS is a structure for maintaining text for the buttons in SELECTION-SCREEN
SSCRFIELDS-UCOMM returns FCT code for buttons maintained in SELECTION-SCREEN
SY-UCOMM returns FCT code for buttons maintained in SCREEN
SY-UCOMM will works for both Screen & Selection-screen

Syntax for creating Push buttons on selection screen:


SELECTION-SCREEN PUSHBUTTON (size) <button name> USER-COMMAND
<FCT value>.

Example:
SELECTION-SCREEN PUSHBUTTON 10(10) button1 USER-COMMAND BUT1.

08-10-2014
Note:
SCREEN is a dynamic internal table.
It is used for modifying screen.

It is having following fields


1. Group1
2. Group2
3. Group3……………
4. Input
5. Required
6. Invisible
7. Active

Rohini kumar
SAP-ABAP 214

Input / Output Field:


Object: Screen Making Report
Input:

Add New Display

------Selection-Screen

P_Date 01.10.2014

When you press Add New the Date should transfer to Screen
Screen 100
Screen Making Report

Save Clear Back

Date Machine Material Code Red Blue Green Total

Average

When you press Enter Total & Average display automatically

ZPP_SCREEN Table:
Date
Machine
Matnr
Red
Blue
Green Total
Rohini kumar
SAP-ABAP 215

Solution:
TABLES: YMM_IOFIELDS, SSCRFIELDS

SELECTION-SCREEN: BEGIN OF LINE.


SELECTION-SCREEN:
PUSHBUTTON 10(10) button1 USER-COMMAND BUT1,
PUSHBUTTON 30(10) button2 USER-COMMAND BUT2.
SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETERS p_date TYPE edate.
SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION:
button1 = ‘Add New’.
button2 = ‘Dispay’.

DATA: v1 TYPE I,
v2 TYPE I,
v3 TYPE I,
redavg TYPE I,
blueavg TYPE I,
greenavg TYPE I.

DATA: wa1 TYPE YMM_IOFIELDS,


wa2 TYPE YMM_IOFIELDS,
wa3 TYPE YMM_IOFIELDS,
it TYPE TABLE OF YMM_IOFIELDS.

AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM EQ ‘BUT1’.
wa1-edate = p_date.
wa2-edate = p_date.
wa3-edate = p_date.

CALL SCREEN 100.

ELSEIF SSCRFIELDS EQ ‘BUT2’.


SELECT * FROM YMM_IOFIELDS INTO TABLE it WHERE edate = p_date.

READ TABLE it INTO wa1 INDEX 1.


READ TABLE it INTO wa2 INDEX 2.
Rohini kumar
SAP-ABAP 216

READ TABLE it INTO wa3 INDEX 3.


ENDIF.

 Double click on 100


 Short Description: Screen 100
 Layout
 Design screen as per requirement
 Flow Logic
 Remove comment for MODULE USER_COMMAND_100
 Double click on USER_COMMAND_100
 Yes
 Enter
 Enter
 Yes
 Place cursor between MODULE…………ENDMODULE

CASE SY-UCOMM.
WHEN ‘SAVE’.
MODIFY YMM_IOFIELDS FROM wa1.
MODIFY YMM_IOFIELDS FROM wa2.
MODIFY YMM_IOFIELDS FROM wa3.

IF SY-SUBRC EQ 0.
MESSAGE ‘Record saved’ TYPE ‘S’.
ENDIF.

WHEN ‘ENTER’.
wa1-total = wa1-red + wa1-blue + wa1-green.
wa2-total = wa2-red + wa2-blue + wa2-green.
wa3-total = wa3-red + wa3-blue + wa3-green.

IF wa1-red IS INITIAL.
v1 = v1 + 1.
ENDIF.

IF wa2-red IS INITIAL.
v1 = v2 + 1.
ENDIF.

IF wa3-red IS INITIAL.
v1 = v1 + 1.
Rohini kumar
SAP-ABAP 217

ENDIF.
IF wa1-blue IS INITIAL.
v2 = v2 + 1.
ENDIF.

IF wa2-blue IS INITIAL.
v2 = v2 + 1.
ENDIF.

IF wa3-blue IS INITIAL.
v2 = v2 + 1.
ENDIF.

IF wa1-green IS INITIAL.
v3 = v3 + 1.
ENDIF.

IF wa2-green IS INITIAL.
v3 = v3 + 1.
ENDIF.

IF wa3-green IS INITIAL.
v3 = v3 + 1.
ENDIF.

redgavg = ( wa1-red + wa2-red + wa3-red ) / v1.


blueavg = ( wa1-blue + wa2-blue + wa3-blue ) / v2.
greenavg = ( wa1-green + wa2-green + wa3-green ) / v3.

WHEN ‘BACK’.
LEAVE TO SCREEN 0.

WHEN ‘CLEAR’.
CLEAR: wa1, wa2, wa3, redavg, blueavg, greenavg.

ENDCASE.

 Activate
 Back
 Remove comment for MODULE STATUS_100
Rohini kumar
SAP-ABAP 218

 Double click on STATUS_100


 Remove comment for SET PF-STATUS ‘ENTER’.
 Double click on ENTER
 Yes
 Short Text: Enter
 Enter
 Expand Function Keys
 Type ENTER
 Activate
 Back
 Activate
 Back
 Activate

Rohini kumar
SAP-ABAP 219

Assignments:
1. Log sheet Temperature Details
Input:

Add New Display


------ Selection-Screen

Furnance

Date

Screen 100
Log Sheet Temparature Details

Save Clear Back Update

Furnance Shift Date T1 T2 T3 T4 T5 T6

Average

Booster Holder Temparature Details

Furnance Shift Date E1 E2 E3 E4 E5 E6

Rohini kumar
SAP-ABAP 220

ZLOGSHEET Table:
Furnance
Date
Shift
T1
T2
T3
T4
T5
T6
E1
E2
E3
E4
E5
E6

Solution:

Rohini kumar
SAP-ABAP 221

2. Cheques Date Entry Screen

Input:

Add New Display


------ Selection-Screen

Cheque No

Cheque Date

Chequs Date Entry Details

Cheque No Cheq Date Issue Date Dep Date Reliza Date Cust No Che Status Cheq Amt

ZCHEQUE Table:
Cheque Number
Cheque Date
Issue Date
Deposit Date
Realization Date
Customer Number
Cheque Status
Cheque Amount

Solution:

TABLES: YMM_CHEQUE, SSCRFIELDS.

SELECTION-SCREEN: BEGIN OF LINE.


SELECTION-SCREEN: PUSHBUTTON 10(10) button1 USER-COMMAND BUT1,
PUSHBUTTON 10(10) button2 USER-COMMAND BUT2.
Rohini kumar
SAP-ABAP 222

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_cheqno FOR ymm_cheque-cheqno,
s_chdate FOR ymm_cheque-cheqdate.
SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION.

button1 = ‘Add new’.


button2 = ‘Update’.
button3 = ‘Display’.

DATA: wa TYPE YMM_CHEQUE,


it TYPE TABLE OF YMM_CHEQUE.

AT SELECTION-SCREEN.

IF SSCRFIELDS-UCOMM EQ ‘BUT1’.

CALL SCREEN 100.

ELSEIF SSCRFIELDS-UCOMM EQ ‘BUT2’.

SELECT * FROM YMM_CHEQUE INTO TABLE it


WHERE cheqno IN s_cheqno
AND cheqdate IN s_chdate.

LOOP AT it INTO wa.

ENDLOOP.

CALL SCREEN 100.

ELSEIF SSCRFIELDS-UCOMM EQ ‘BUT3’.

SELECT * FROM YMM_CHEQUE INTO TABLE it


WHERE cheqno IN s_cheqno
AND cheqdate IN s_chdate.
LOOP AT it INTO wa.

ENDLOOP.
Rohini kumar
SAP-ABAP 223

CALL SCREEN 100.

ENDIF.

Double click on 100


Yes
Enter
Enter
Yes
Design screen with table control with wizard as per requirement
Flow Logic
Place cursor between MODULE………..ENDMODULE of VCONTROL_MODIFY INPUT

CASE SY-UCOMM.

WHEN ‘SAVE’.

MODIFY YMM_CHEQUE FROM wa.

IF SY-SUBRC EQ 0.
MESSAGE ‘Record saved’ TYPE ‘S’.
ENDIF.

ENDCASE.

MODIFY it FROM wa INDEX VCONTROL-CURRENT_LINE.

IF SY-SUBRC NE 0.
APPEND wa TO it.
ENDIF.

Place cursor between MODULE……….ENDMODULE of STATUS_100 OUTPUT

SET PF-STATUS ‘BACK’.

CASE SY-UCOMM.
WHEN ‘BUT2’.

LOOP AT SCREEN.

IF SCREEN-NAME EQ ‘wa-cheqno’
OR SCREEN-NAME EQ ‘wa-cheqdate’
Rohini kumar
SAP-ABAP 224

OR SCREEN-NAME EQ ‘wa-idate’
OR SCREEN-NAME EQ ‘wa-ddate’
OR SCREEN-NAME EQ ‘wa-rdate’
OR SCREEN-NAME EQ ‘wa-custno’
OR SCREEN-NAME EQ ‘wa-cheqstatus’.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

WHEN ‘BUT3’.
LOOP AT SCREEN.

IF SCREEN-NAME EQ ‘wa-cheqno’
OR SCREEN-NAME EQ ‘wa-cheqdate’
OR SCREEN-NAME EQ ‘wa-idate’
OR SCREEN-NAME EQ ‘wa-ddate’
OR SCREEN-NAME EQ ‘wa-rdate’
OR SCREEN-NAME EQ ‘wa-custno’
OR SCREEN-NAME EQ ‘wa-cheqamt’
OR SCREEN-NAME EQ ‘wa-cheqstatus’.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

Place cursor between MODULE………..ENDMODULE of USER_COMMAND 100

CASE SY-UCOMM.
WHEN ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.
Rohini kumar
SAP-ABAP 225

3. Simple calculator

Simple Calculator

1 2 3 C

4 5 6 /

7 8 9 *

0 = + -

Solution:

Rohini kumar
SAP-ABAP 226

REPORTS
ABAP Reports:
In real time ABAP Reports are designed for analysis & based on the that analysis decision
making will done
In real time every report is designed based on certain format & every report have 3 parts
1. Input
2. Processing Logic
3. Output

Selection-Screen Processing Logic Output

Databa
se

The reports that will designed up to now are without a proper structured format
Design the same reports in a proper structure format (with events)

Types of Reports:
1. Classical Reports
2. Interactive Reports
3. ALV Reports (ABAP List Viewer)
4. LDB Reports (Logical Data Base) ------- for HR module only
5. SAP Query Reports

Rohini kumar
SAP-ABAP 227

Classical Reports:
In classical reporting the entire output is maintained in a single list called Basic list

Events in Classical Reporting:


1. INITIALIZATION
2. AT SELECTION-SCREEN
3. START-OF-SELECTION
4. END-OF-SELECTION
5. TOP-OF-PAGE
6. END-OF-PAGE

09-10-2014
INITIALIZATION:
It triggers before selection-screen display
Note:
Use this event for initializing
1. Default values in selection-screen
2. Texts on push buttons in selection-screen
3. Texts for blocks, radio buttons, check boxes…………..etc

AT SELECTION-SCREEN:
It triggers once the control leaves from selection-screen & still selection-screen is in active
mode
i.e. It triggers at end of PAI when all the values are passed from selection-screen to program
variables

It is further divided into 5 types


a) AT SELECTION-SCREEN OUTPUT
b) AT SELECTION-SCREEN ON <field name>
c) AT SELECTION-SCREEN ON VALUE-REQUEST
d) AT SELECTION-SCREEN ON HELP-REQUEST
e) AT SELECTION-SCREEN ON <radio button>

AT SELECTION-SCREEN OUTPUT:
 It triggers after initialization & before selection-screen display
 Use this event for modifying selection-screen

AT SELECTION-SCREEN ON <field name>:


It triggers once selection-screen is being processed & 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 fields
Rohini kumar
SAP-ABAP 228

 Use this event for Search Help

AT SELECTION-SCREEN ON HELP-REQUEST:
 It triggers when you apply F1 function key on selection-screen fields
 Use this event for Help Documentation

AT SELECTION-SCREEN ON <radio button>:


It triggers when validating radio buttons

START-OF-SELECTION:

 This event will triggers once your selection-screen is processed


 It triggers when you select F8 function key
 It triggers before reading data from database
 It triggers for all processing blocks in a program
 It is a default event triggered before extracting data from database

Note:
In your program no need to provide this event
But when you are writing INITIALIZATION (or) AT SELECTION-SCREEN it is mandatory
to use START-OF-SELECTION

END-OF-SELECTION:
It triggers once all the data is read from logical database

Note:
Use this event in HR ABAP for displaying HR data
You can use this event for writing one time logics (Display data…………..etc)

TOP-OF-PAGE:
It triggers before 1st record is output in Output List

Note:
Use this event for maintaining headers in ABAP reports

END-OF-PAGE:
It triggers after last record is output is Output List

Note:
Use this event for maintaining footers in ABAP reports

Rohini kumar
SAP-ABAP 229

Ques-1: Suppose there are 20 pages in my report. How many times INITIALIZATION will
triggers & TOP-OF-PAGE will triggers?
Ans:
INITIALIZATION will triggers only 1 time
TOP-OF-PAGE will triggers 20 times

Ques-2: What is LOAD-OF-PROGRAM event?


Ans:
This event will triggers before INITIALIZATION & once your program is loaded into memory

Example:
REPORT ZEVENTS NO STANDARD PAGE HEADING LINE-COUNT 20(4).

TABLES: EKPO.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_matnr FOR ekpo-mantnr,
s_werks FOR ekpo-werks.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_ekpo,


Ebeln TYPE ebeln,
Matnr TYPE matnr,
Menge TYPE menge_D,
Netpr TYPE netpr,
END OF ty_ekpo.

TYPES: BEGIN OF ty_t001w,


Werks TYPE werks_D,
END OF ty_t001w.

TYPES: BEGIN OF ty_mara,


Matnr TYPE ty_mara,
END OF ty_mara.

DATA: wa_ekpo TYPE ty_ekpo,


Wa_mara TYPE ty_mara,
It_mara TYPE TABLE OF ty_mara,
It_ekpo TYPE TABLE OF ty_ekpo,
It_t001w TYPE TABLE OF ty_t001w.

INITIALIZATION.
Rohini kumar
SAP-ABAP 230

S_werks-low = ‘1000’.
S_werks-high = ‘1001’.
S_werks-sign = ‘I’.
S_werks-option = ‘BT’.
APPEND s_werks.

SELECT matnr FROM MARA INTO TABLE it_mara WHERE mtart IN (‘FERT’)

LOOP AT it_mara INTO wa_mara.


S_matnr-low = wa_mara.
S_matnr-sign = ‘I’.
S_matnr-option = ‘EQ’.
APPEND s_matnr.
ENDLOOP.

T1 = ‘Selection’.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘s_werks-low’
OR SCREEN-NAME EQ ‘s_werks-high’
OR SCREEN-NAME EQ ‘s_matnr-low’
OR SCREEN-NAME EQ ‘s_matnr-high’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

AT SELECTION-SCREEN ON s_werks.
SELECT werks FROM T001W INTO TABLE it_t001w WHERE werks IN
s_werks.

IF SY-SUBRC NE 0.
MESSAGE ‘Enter valid plant’ TYPE ‘E’ DISPLAY LIKE ‘I’.
LEAVE LIST-PROCESSING.
ENDIF.

START-OF-SELECTION.
SELECT ebeln matnr menge netpr FROM EKPO INTO TABLE it_ekpo WHERE
matnr IN s_matnr AND werks IN s_werks.

Rohini kumar
SAP-ABAP 231

LOOP AT it_ekpo INTO wa_ekpo.


WRITE:/10 wa_ekpo-ebeln,
30 wa_ekpo-matnr,
50 wa_ekpo-menge,
70 wa_ekpo-netpr,
ENDLOOP.

TOP-OF-PAGE.
WRITE:/40 ‘PO Details Report’ COLOR 1.
SKIP.
ULINE.

END-OF-PAGE.
WRITE:/10 ‘page no’, SY-PAGNO.

Ques: What is the flow of events?

Ans:
INITIALIZATION
AT SELECTION-SCREEN OUTPUT
START-OF-SELECTION

Rohini kumar
SAP-ABAP 232

Object:
PO and Tax Details Report

Input:
S_lifnr (so)
S_werks (so)
S_mtart (so)
S_burks (so)
S_bedat (so)

Output:
Po number
Po date
Vendor name
Vendor number
Po quantity
Unit price
Total price
Unit of measurement
Material code
Material description
VAT
CST
Freight

Processing Logic:
1. Get ebeln bedat matnr menge netpr meins netwr knumv ebelp lifnr from EKKO & EKPO
using inner-joins based on input
2. Pass lifnr of EKKO to lfa1 and get name1
3. Pass matnr of EKPO to MAKT and get maktx
4. Get kumv kposn kschl kwert from KONV by passing knumv of EKKO and ebelp of
EKKO

Solution:

REPORT ZMM_PO_TAX_DETAILS_REPORT NO STANDARD PAGE HEADING


LINE-SIZE 400 LINE-COUNT 20(4).

TABLES: EKPO, MAKT, KONV, LFA1, EKKO.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE t1.


SELECT-OPTIONS: s_lifnr FOR ekko-lifnr,
Rohini kumar
SAP-ABAP 233

s_werks FOR ekko-werks,


s_mtart FOR ekko-mtart,
s_bedat FOR ekko-bedat.
PARAMETERS p_bukrs TYPE bukrs.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_ekko,


ebeln TYPE ebeln,
bedat TYPE bedat,
knumv TYPE knumv,
lifnr TYPE lifnr,
ebelp TYPE ebelp,
menge TYPE menge_D,
netpr TYPE netpr,
netwr TYPE netwr,
meins TYPE meins,
END OF ty_ekko.

TYPES: BEGIN OF ty_makt,


matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_makt.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
name1 TYPE name1,
END OF ty_lfa1.

TYPES: BEGIN OF ty_konv,


knumv TYPE knumv,
kposv TYPE ebelp,
kschl TYPE kschl,
kwert TYPE kwert,
END OF ty_konv.
TYPES: BEGIN OF ty_final,
ebeln TYPE ebeln,
bedat TYPE bedat,
knumv TYPE knumv,
lifnr TYPE lifnr,
matnr TYPE matnr,
ebelp TYPE kposn,
menge TYPE menge_D,
Rohini kumar
SAP-ABAP 234

netpr TYPE netpr,


netwr TYPE netwr,
meins TYPE meins,
name1 TYPE name1,
maktx TYPE maktx,
vat TYPE kwert,
cst TYPE kwert,
frei TYPE kwert,
END OF ty-final.

DATA: wa_lfa1 TYPE ty_lfa1,


wa_ekko TYPE ty_ekko,
wa_makt TYPE ty_makt,
wa_final TYPE ty_final,
wa_konv TYPE ty_konv,
it_ekko TYPE TABLE OF ty_ekko,
it_makt TYPE TABLE OF ty_makt,
it_final TYPE TABLE OF ty_final,
it_konv TYPE TABLE OF ty_konv.

INITIALIZATION.
t1 = ‘Selection’.
p_bukrs = ‘1000’.

AT SELECTION-SCREEN.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘p_bukrs’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

START-OF-SELECTION.
PERFORM get_ekko.
PERFORM get_lfa1.
PERFORM get_makt.
PERFORM get_konv.
PERFORM combine_data.
PERFORM display_data.

FORM get_ekko.
SELECT ekko~ebeln ekko~bedat ekko~knumv ekko~lifnr
Rohini kumar
SAP-ABAP 235

ekpo~matnr ekpo~ebelp ekpo~menge ekpo~netpr ekpo~netwr ekpo~meins


INTO TABLE it_ekko FROM EKKO
INNER JOIN EKPO ON ekko~ebeln = ekpo~ebeln
WHERE ekko~lifnr IN s_lifnr
AND ekko~bukrs EQ p_bukrs
AND ekpo~mtart IN s_mtart
AND ekpo~bedat IN s_bedat.

IF SY-BUBRC NE 0.
MESSAGE ‘Enter valid input’ TYPE ‘E’ DISPLAY LIKE ‘I’.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.

FORM get_lfa1.
IF NOT it_ekko IS INITIAL.
SELECT lifnr name1 FROM LFA1 INTO TABLE it_lfa1
WHERE lifnr = it_ekko-lifnr.
ENDIF.
ENDFORM.

FORM get_makt.
IF NOT it_ekko IS INITIAL.
SELECT matnr maktx FROM MAKT INOT TABLE it_makt
FOR ALL ENTRIES IN it_ekko
WHERE matnr = it_ekko-matnr
AND spras EQ ‘EN’.
ENDIF.
ENDFORM.

FORM combine_data.
LOOP AT it_ekko INTO wa_ekko.
wa_final-ebeln = wa_ekko-ebeln.
wa_final-bedat = wa_ekko-bedat.
wa_final-matnr = wa_ekko-matnr.
wa_final-menge = wa_ekko-menge.
wa_final-meins = wa_ekko-meins.
wa_final-netpr = wa_ekko-netpr.
wa_final-netwr = wa_ekko-netwr.
wa_final-knumv = wa_ekko-knumv.
wa_final-ebelp = wa_ekko-ebelp.
wa_final-lifnr = wa_ekko-lifnr.
Rohini kumar
SAP-ABAP 236

READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_ekko-lifnr.


wa_final-name1 = wa_lfa1-name1.

READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_ekko-matnr.


wa_final-maktx = wa_makt-maktx.

APPEND wa_final TO it_final.


ENDLOOP.
ENDFORM.

FORM get_konv.
SORT it_final BY knumv ebelp.

IF NOT it_final IS INITIAL.


SELECT knumv kposn kschl kwert FROM KNOV INTO TABLE it_knov
FOR ALL ENTRIES IN it_final
WHERE knumv = it_final-knumv
AND kposn = it_final-ebelp.
ENDIF.

LOOP AT it_final INTO wa_final.


LOOP AT it_knov INTO wa_knov WHERE knumv = wa_final-knumv AND kposn
= wa_final-ebelp.
CASE wa_konv = kschl.
WHEN ‘STKO’.
wa_final-vat = wa_konv-kwert.
WHEN ‘PBXX’.
wa_final-cst = wa_konv-kwert.
WHEN ‘PBOO’.
wa_final-frei = wa_konv-kwert.
ENDCASE.
ENDLOOP.
MODIFY it_final FROM wa_final TRANSPORTING vat cst frei.
ENDLOOP.
ENDFORM.

FORM displaly_data.
LOOP AT it_final INTO wa_final.
WRITE:/10 wa_final-ebeln,
20 wa_final-bedat,
30 wa_final-lifnr,
Rohini kumar
SAP-ABAP 237

40 wa_final-name1,
50 wa_final-menge,
60 wa_final-netpr,
70 wa_final-netwr,
80 wa_final-meins,
90 wa_final-matnr,
100 wa_final-maktx,
110 wa_final-vat,
120 wa_final-cst,
130 wa_final-frei.
ENDLOOP.
ENDFORM.

Rohini kumar
SAP-ABAP 238

10-10-2014
KONV Table:
It is a conditions table for holding tax data.

Fields:
1. KNUMV------ condition number
2. KPOSN ------- item number for condition
3. KSCHL ------- condition / tax type
4. KAWRT------ condition base value
5. KBETR ------ condition rate
6. KWERT ----- condition value

Rohini kumar
SAP-ABAP 239

Assignment:
Po Delivery Status Report

Input:
S_Lifnr
S_Bedat
P_bukrs

Output:
Po number
Po date
Vendor number
Vendor name
Po quantity
Delivery quantity
Open quantity
Status

Processing Logic:
1. Get ebeln, bedat, lifnr from EKKO based on input
2. Get lifnr, name1 from LFA1 by passing lifnr of EKKO
3. Get ebeln, menge, wemng from EKET by passing ebeln of EKKO

Solution:
Go to SE38
Program: YMM_PO_DELIVERY_STATUS
Create
Package: ZABAP
Enter

Rohini kumar
SAP-ABAP 240

Interactive Reporting:
 In Classical Reporting the entire output is maintained in a single output list called Basic
List.
 In Interactive Reporting you will find N number of output lists called Interactive Lists
(or) Secondary Lists.
 In one interactive reporting you can maintain 20 secondary lists in sequence.

AT LINE-SELECTION:
It triggers whenever user interacts with a list

HIDE Keyword:
It holds the records selected by user in interactive reporting

System Fields in Interactive Reporting:


1. SY-LSIND
2. SY-LISEL

SY-LSIND:
It returns current list index

SY-LISEL:
It returns list of contents selected by user from output list

11-10-2014
GET CURSOR keyword:
If fetches the field name & value selected by user from output list

Syntax:
GET CURSOR FIELD <field name> VALUE <value>.

Rohini kumar
SAP-ABAP 241

SAP Memory:
Using SAP memory concept we can transfer the data from ABAP program to standard
application

SET PARAMETER keyword:

Syntax:
SET PARAMETER ID <id> FIELD <value>.

Example:
SET PARAMETER ID ‘mat’ FIELD f001.

TOP-OF-PAGE DURING LINE-SELECTION event:


Use this event for providing Headers in interactive reporting

Rohini kumar
SAP-ABAP 242

Object:
Invoice Details based on Customers

Input:
S_kunrg (so) ------ customer number
S_matnr (so)
S_werks (so)
S_ekdat (so) --------- bill date

Output:
Basic list screen 0
Customer Customer Customer Customer Telephone
number name city street number
C001
C002

When you click on C001 then the control will goes to Interactive list 1
Interactive list 1
Bill number Bill date Material code Bill quantity Bill amount
400103 01.02.2014 100-101 150 120000
400104 10.10.2014 200-201 500 9500000
When you click on 400103 then the control will goes to Interactive list 2
When you click on 200-201 then the control will goes to T code VF03
Interactive list 2
Material code Material text Material type

VF03

Invoice number:

Rohini kumar
SAP-ABAP 243

Solution:
Go to SE38
Program: ZSD_CUSTOMER_INVOICE_DETAILS
Create
Title: Customer Invoice Details Report
Type: Executable Program
Enter
Packge: ZABAP
Enter

TABLES: VBRK, VBRP, ADRC, KNA1.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_kunrg FOR vbrk-kunrg,
s_matnr FOR vbrk-matnr,
s_werks FOR vbrk-werks,
s_fkdat FOR vbrk-fkdat.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_vbrk,


Vbenl TYPE vbeln_vf,
fkdat TYPE fkdat,
matnr TYPE matnr,
netwr TYPE netwr,
END OF ty_vbrk.

TYPES: BEGIN OF ty_kna1,


kunnr TYPE kunnr,
name1 TYPE name1,
city1 TYPE ort01,
street TYPE stras,
tel_number TYPE ad_tlnmbr,
END OF ty_kna1.

TYPES: BEGIN OF ty_mara,


matnr TYPE matnr,
maktx TYPE maktx,
mtart TYPE mtart,
END OF ty_mara.

DATA: wa_mara TYPE ty_mara,


wa_vbrk TYPE ty_vbrk,
Rohini kumar
SAP-ABAP 244

wa_kna1 TYPE ty_kna1,


it_mara TYPE TABLE OF ty_mara,
it_vbrk TYPE TABLE OF ty_vbrk,
it_kna1 TYPE TABLE OF ty_kna1.

DATA: v_kunnr TYPE kunnr,


v_matnr TYPE matnr,
v_fnam(20) TYPE C,
v_fval(20) TYPE C.

SELECT kna1~kunnr kna1~name1 adrc~city1 adrc~street adrc~tel_number INTO


TABLE it_kna1 FROM KNA1 INNER JOIN ADRC
ON kna1~adrnr = adrc~addrnumber
WHEERE kna1~kunnr IN s_kunrg.

LOOP AT it_kna1 INTO wa_kna1.


WRITE:/10 wa_kna1-kunnr HOTSPOT,
20 wa_kna1-name1,
30 wa_kna1-city1,
40 wa_kna1-street,
50 wa_kna1-tel_number.
ENDLOOP.

AT LINE-SELECTION.

CASE SY-LSIND.
WHEN 1.
GET CURSOR FIELD v_fnam VALUE v_kunnr.

IF v_fnam EQ wa_kna1-kunnr.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
INPUT = v_kunnr
IMPORTING
OUTPUT = v_kunnr.

SELECT vbrk~vbeln vbrk~ekdat vbrp~matnr vbrp~fkimg vbrp~netwr INTO TABLE


it_vbrk FROM VBRK INNER JOIN VBRP
ON vbrk~vbeln = vbrp~vbeln
WHERE vbrk~kunrg EQ vbrp~v_kunnr
AND vbrk~werks IN s_werks
AND vbrk~fkdat IN s_fkdat
Rohini kumar
SAP-ABAP 245

AND vbrk~matnr IN s_matnr.

LOOP AT it_vbrk INTO wa_vbrk.


WRITE:/10 wa_vbrk-vbeln HOTSPOT,
20 wa_vbrk-fkdat,
30 wa_vbrk-matnr HOTSPOT,
40 wa_vbrk-fkimg,
50 wa_vbrk-netwr.
ENDLOOP.

WHEN 2.
GET CURSOR FIELD v_fnam VALUE v_matnr.

IF v_fnam EQ wa_vbrk-matnr.

SELECT mara~matnr makt~maktx mara~mtart INTO TABLE it_mara FROM MARA


INNER JOIN MAKT
ON mara~matnr = makt~matnr
WHERE mara~matnr EQ v_matnr
AND makt~spras EQ ‘EN’.

LOOP AT it_mara INTO wa_mara.


WRITE:/10 wa_mara-matnr,
20 wa_mara-maktx,
30 wa_mara-mtart.
ENDLOOP.

ELSEIF v_fnam EQ ‘wa_vbrk-vbeln’.


GET CURSOR FIELD v_fnam VALUE v_fval.

SET PARAMETER ID ‘VF’ FIELD v_fval.

CALL TRANSACTION ‘VF03' AND SKIP FIRST SCREEN.

ENDIF.
ENDCASE.

TOP-OF-PAGE.

WRITE:/50 ‘Customer Details’ COLOR 1.


SKIP.
ULINE.
Rohini kumar
SAP-ABAP 246

TOP-OF-PAGE DURING LINE-SELECTION.

CASE SY-LSIND.
WHEN 1.
WRITE:/50 ‘Customer Invoice Details’ COLOR 1.
SKIP.
ULINE.

WHEN 2.
WRITE:/50 ‘Materials Details’ COLOR 3.
SKIP.
ULINE.
ENDCASE.

Rohini kumar
SAP-ABAP 247

VBRK Table:
This table holds billing document header data

Fields:
1. VBELN ------- invoice number
2. FKDAT ------- billing type (domestic / export)
3. WAERK ------ document currency
4. VKOGR ------ sales organization
5. VTWEG ------ distribution channel
6. KALSM ------ pricing procedure
7. KNUMV ----- condition number

Link:
VBRK-KNUMV
KONV-KNUMV

8. *** FKDAT -------- billing date


9. GJAHR -------- physical year
[Link] -------- status of bill
[Link] ------- exchange rate
[Link] ------- payment terms
[Link] ------- company code
14. *** KUNRG ------- customer number
[Link] ------ division
[Link] ----- customer group
17. *** FKSTO ------- bill document cancelled

VBRP Table:
This table holds billing document item data

Fields:
1. VBELN -------- invoice number
Link:
VBRK-VBELN
VBRP-VBELN

2. POSNR -------- item number


3. *** FKImG -------- invoice quantity
4. MEINS -------- unit of measurement
5. NETWR ------ bill amount
6. VGBEL ------ reference document number

Rohini kumar
SAP-ABAP 248

Note:
VGBEL is nothing but delivery document number

7. AGBEL ---------- sales order number


8. MATNR --------- material code
9. ARKTX --------- item description
[Link] -------- batch number
[Link] -------- material group
[Link] --------- division
[Link] ------- Plant
[Link] ------- sales office

ADRC Table:
It holds business addresses

Fields:
1. ADDRNUMBER ---------- address number
Link:
LFA1-ADRNR
KNA1-ADRNR
ADRC-ADDRNUMBER

2. NAME1 ------- name of customer / vendor


3. NAME_CO ------ C/O name
4. CITY1 -------- city
5. STREET ----- street
6. HOUSE_NUM1 ------ house number
7. STR_SUPPL1 -------- street 2
8. STR_SUPPL2 -------- street 3
9. STR_SUPPL3 -------- street 4
10.TEL_NUMBER ----- telephone number

Navigation for identifying parameter ids:


 Go to VF01
 Apply F1 on Billing Document
 You will find a pop-up, at bottom select Technical Information
 Note down parameter id: V1

Rohini kumar
SAP-ABAP 249

13-10-2014
ALV Reporting:
ABAP List Viewer
ALV is advanced reporting with additional features of reporting

Types of ALVs:
1. Traditional ALV
2. ALV with OOP (Object Oriented Programming)

Traditional ALV:
These are classified into 3 categories
1. Simple ALV
2. Blocked ALV
3. Hierarchal Sequential ALV

Advantages of ALV:
1. In traditional reporting you cannot maintain logos (pictures…………etc)
With ALV reporting you can maintain logos using ALV Function Modules
2. With ALV reporting you can improve performance of programming by avoiding
LOOP…..ENDLOOP
3. Using ALV reporting you can maintain Main Headings, Sub Headings……….etc
4. The main features of reporting are
i) Exporting Data
ii) Totals
iii) Sub Totals
iv) Filtering
v) Column Alignment
vi) Sorting ……………….etc
The above features requires large amount of coding with traditional reporting
Using ALV Function Modules you can minimize such coding

5. Layout Management
With traditional reporting you cannot select output fields dynamically (no layout management)
Suppose in a company there are 10 departments & each department users requires different
fields from the same report
Using layout management you can create & save his own layout

6. Using ALV reporting you can maintain data in Tabular format

Rohini kumar
SAP-ABAP 250

Simple ALV:
These are classified into 2 categories
1. Classical ALV
2. Interactive ALV

Classical ALV:
Object:
Open PO Details Report

Solution:
Go to SE38
Program: ZMM_PO_STATUS_DETAILS
Create
Title: PO Status Report
Type: Executable Program
Enter
Package: ZABAP
Enter

TABLES: LFA1, EKKO, EKET.

TYPE-POOLS SLIS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: S_lifnr FOR lfa1-lifnr,
S_bukrs FOR ekko-bukrs,
S_bedat FOR ekko-bedat.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_final,


Ebeln TYPE ebeln,
bedat TYPE bedat,
eindt TYPE eindt,
lifnr TYPE lifnr,
name1 TYPE name1,
menge TYPE menge_D,
wemng TYPE wemng,
open TYPE menge_D,
status TYPE maktx,
END OF ty_final.

Rohini kumar
SAP-ABAP 251

TYPES: BEGIN OF ty_ekko,


Ebeln TYPE ebeln,
bedat TYPE bedat,
lifnr TYPE lifnr,
END OF ty_ekko.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
name1 TYPE name1,
END OF ty_lfa1.

TYPES: BEGIN OF ty_eket,


Ebeln TYPE ebeln,
eindt TYPE eindt,
menge TYPE menge_D,
wemng TYPE wemng,
END OF ty_eket.

DATA: wa_ekko TYPE ty_ekko,


wa_lfa1 TYPE ty_lfa1,
wa_eket TYPE ty_eket,
wa_final TYPE ty_final,
it_ekko TYPE TABLE OF ty_ekko,
it_lfa1 TYPE TABLE OF ty_lfa1,
it_eket TYPE TABLE OF ty_eket,
it_final TYPE TABLE OF ty_final.

* provide ALV declaration


DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

PERFORM get_ekko.
PERFORM get_lfa1.
PERFORM get_eket.
PERFORM fill_cat.
PERFORM combine_data.
PERFORM layout.
PERFORM display_data.

Rohini kumar
SAP-ABAP 252

FORM get_ekko.
SELECT ebeln bedat lifnr FROM EKKO INTO TABLE it_ekko
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND bedat IN s_bedat.
ENDFORM.

FORM get_lfa1.
IF it_ekko IS NOT INITIAL.
SELECT lifnr name1 FROM LFA1 INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_ekko
WHERE lifnr = it_ekko-lifnr.
ENDIF.
ENDFORM.

FORM get_eket.
IF it_ekko IS NOT INITIAL.
SELECT ebeln menge wemng FROM EKET INTO TABLE it_eket
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln.
ENDIF.
ENDFORM.

FORM combine_data.
LOOP AT it_eket INTO wa_eket.
wa_final-ebeln = wa_eket-ebeln.
wa_final-eindt = wa_eket-eindt.
wa_final-menge = wa_eket-menge.
wa_final-wemng = wa_eket-wemng.
wa_final-open = wa_eket-menge - wa_eket-wemng.

IF wa_eket_menge GT wa_eket_wemng.
wa_final-status = ‘Not delivered’.
ELSE.
wa_final-status = ‘delivered’.

READ TABLE it_ekko INTO wa_ekko WITH KEY ebeln = wa_eket-ebeln.


wa_final-lifnr = wa_eket-lifnr.
wa_final-bedat = wa_eket-bedat.

READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_ekko-lifnr.


wa_final-name1 = wa_eket-name1.
Rohini kumar
SAP-ABAP 253

APPEND wa_final TO it_final.


ENDLOOP.
ENDFORM.

FORM fill_cat.
WA_FCAT-FIELDNAME = ‘ebeln’.
WA_FCAT-SELTEXT_M = ‘PO Number’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘eindt’.
WA_FCAT-SELTEXT_M = ‘Delivery date’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘lifnr’.
WA_FCAT-SELTEXT_M = ‘Vendor Number’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘name1’.
WA_FCAT-SELTEXT_M = ‘Vendor name.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘menge’.
WA_FCAT-SELTEXT_M = ‘Quantity’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘wemng’.
WA_FCAT-SELTEXT_M = ‘Delivery Quantity’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘open’.
WA_FCAT-SELTEXT_M = ‘Open quantity’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘status’.
WA_FCAT-SELTEXT_M = ‘Status’.
APPEND WA_FCAT TO IT_FCAT.

ENDFORM.

Rohini kumar
SAP-ABAP 254

FORM layout.

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.

ENDFORM.

FORM display.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID ----- it returns current program name
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
I_SAVE = ‘X’.
TABLES.
T_OUTTAB = it_final.
ENDFORM.

Rohini kumar
SAP-ABAP 255

14-10-2014
Note-1:
REUSE_ALV_GRID_DISPLAY
It is for display the data in ALV grid
The parameters are
1. Current program name
It is important for activating layout management & for displaying logos & headings

2. Layout work area

3. Field catalog internal table


4. I_CALLBACK_USER_COMMAND
It is for interactive purpose

5. I_STRUCTURE_NAME
For providing structure

6. I_BACKGROUND_ID
For maintaining background pictures

7. I_GRID_TITLE
For maintaining title in ALV grid
8. IT_SORT
For sorting data & for maintaining sub totals
9. I_SAVE
For saving layouts

10.IT_EVENTS
For events internal table

11.IS_PRINT
For deactivating (or) activating the print mode for PDF formats…………etc

12.T_OUTTAB
For output internal table

Note-2:
SLIS ------- is a Type Group

Type Group:
 A type group is a group of similar structures & table types

Rohini kumar
SAP-ABAP 256

 It you want to use type group types in your program it is mandatory to declare respective
type group with TYPE-POOLS keyword

Note-3:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following fields
1. COL_POS ----------- column position
2. FIELDNAME ------ field name of output internal table
3. TABNAME --------- internal table name
4. CHECKBOX ------- with this option you can create check box for a specific field
5. JUST ----------------- it specifies left (or) right format for a specific field
6. NO_ZERO ---------- removes zeros from output list
7. EDIT_MASK ------- it hides the field data
8. NO_OUT ------------ removes a specific field catalog from output list
9. EMPHASIZE ------- it provides a specific default color for a field in ALV grid
[Link] ------ specifies length (or) size for a catalog
11.SELTEXT_M ------ provides text for a particular field
12.FIX_COLOUMN
13.DECIMALS_OUT -- it round off a particular floating value by removing decimal values
from it
[Link] ------------------- by default the field catalogs in a layout are in display mode. Using
this option a field should be converted into change mode
[Link] ------------ provides hand symbol
16.DO_SUM ----------- provides totals

Note-4:
SLIS_LAYOUT_ALV is a standard SLIS structure for maintaining layout settings for ALV
reporting
It is having following fields
1. ZEBRA --------- alternate colors
2. COLWIDTH _OPTIMIZE ------- it will optimize the width of field catalog automatically
based on domain length

Rohini kumar
SAP-ABAP 257

Object:
Restricted & Unrestricted stock details report material wise & plant wise

Input:
S_matnr (so)
S_werks (so)

Output:
Material code
Material description
Hyd uns
Hyd res
Pune uns
Pune res
Total uns
Total res
Total stock

Tables:
MARA
MAKT
MARD

Ques-1: What do you mean by restricted & unrestricted stock?


Ans:
The stock which is produced by production department & it is in Quality check (or) it is in hold
(or) stock returns is called restricted stock
The stock which is ready for sale is called unrestricted stock

*** Ques-2: This report is already provided by SAP (MMBE). Then why you created it?

Ans:
MMBE is providing materials details plant wise & storage location wise material by material
My client gave a requirement for viewing all restricted & unrestricted stock at one time

Solution:
Go to SE38
Program: ZMM_STOCK_DETAILS_REPORT
Create
Package: ZABAP
Enter

Rohini kumar
SAP-ABAP 258

TABLES: MARA, MAKT, MARD.

TYPE-POOLS SLIS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_matnr FOR mara-matnr,
S_werks FOR mard-werks.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_mara,


Matnr TYPE matnr,
END OF ty_mara.

TYPES: BEGIN OF ty_mard,


Matnr TYPE matnr,
maktx TYPE maktx,
werks TYPE werks_D,
labst TYPE labst,
insme TYPE insme,
einme TYPE einme,
retme TYPE retme,
speme TYPE speme,
END OF ty_mard.

TYPES: BEGIN OF ty_final,


Matnr TYPE matnr,
maktx TYPE maktx,
labst1 TYPE labst,
rest1 TYPE labst,
labst2 TYPE labst,
rest2 TYPE labst,
totuns TYPE labst,
totres TYPE labst,
total TYPE labst,
END OF ty_final.

DATA: wa_mara TYPE ty_mara,


Wa_mard TYPE ty_mard,
Wa_mard1 TYPE ty_mard,
Wa_final TYPE ty_final,
It_mara TYPE TABLE OF ty_mara,
It_mard TYPE TABLE OF ty_mard INITIAL SIZE 0,
Rohini kumar
SAP-ABAP 259

It_mard1 TYPE TABLE OF ty_mard INITIAL SIZE 0,


It_final TYPE TABLE OF ty_fina1.

Rohini kumar
SAP-ABAP 260

MARD Table:
It holds storage location data for materials

Fields:
1. MATNR --------- material code
2. WERKS --------- plant
3. LGORT ---------- storage location
4. *** LABST ----- unrestricted stock
5. INSME ---------- stock in quality inspection
6. EINME ---------- total stock of all restricted stock
7. SPEME ---------- blocked stock
8. RETME --------- blocked stock returns
Note:
The above 4 fields combine to form restricted stock

9. LGPBE ---------- storage bin

Rohini kumar
SAP-ABAP 261

15-10-2014
SLIS_SORTINFO_ALV:
It is a standard ALV structure for sorting output list
It is having following fields
1. FIELDNAME -------------- field name for sorting
2. TABNAME ---------------- internal table name
3. UP --------------------------- ascending order
4. DOWN --------------------- descending order
5. SUBTOT ------------------ performs subtotals

SLIS_LISTHEADER:
It is a standard ALV structure for maintaining headings in output list
It is having following fields
1. TYP -------------- type of heading (H, S, A)
2. KEY ------------- text for heading in 20 characters
3. INFO ------------ text for heading in 60 characters

SLIS_ALV_EVENT:
It is a standard ALV structure for maintaining events
It is having following fields
1. NAME ----------- name of event
2. FORM ----------- subroutine name

16-10-2014
Navigation for Maintaining Logos:
 Go to Paint
 Design a picture
 Save it on desktop

 Go to OAER
 Class Name: Pictures
 Class Type: OT
 Object Key: ABAP
 Execute
 At bottom expand Standard Document Types
 Double click on Screen
 Select your Logo
 Enter
 Enter

Rohini kumar
SAP-ABAP 262

Assignment-1:
Monthly sales report based on customers

Input:
S_kunrg -------- customer code
S_werks -------- plant
S_fkart --------- bill type
S_spart --------- division
S_fkdat --------- bill date (01.04.2006 to 30.09.2006)
S_bukrs -------- company code

Output:
Customer code (vbrk-kunrg)
Customer name (kna1-name1)
Apr 06 (vbrp-fkdat)
May 06 (vbrp-fkdat)
Jun 06 (vbrp-fkdat)
July 06 (vbrp-fkdat)
Aug 06 (vbrp-fkdat)
Sep 06 (vbrp-fkdat)
Oct 06 (vbrp-fkdat)
Nov 06 (vbrp-fkdat)
Dec 06 (vbrp-fkdat)
Total

Solution:

Rohini kumar
SAP-ABAP 263

Assignment-2:
Sales analysis report

Input:
S_kunrg
S_werks
S_fkart
S_bukrs
S_fkdat
S_spart

Output:
Customer name
Today sales --------------- (15.10.2014)
Yesterday sales ---------- (15.10.2013)
Growth -------------------- ((Today sales – Yesterday sales) / Yesterday sales) * 100)
Mtd sales ------------------ (01.10.2014 to 15.10.2014)
Pmtd sales ---------------- (01.10.2013 to 15.10.2013)
Growth -------------------- ((Mtd sales – Pmtd sales) / Pmtd sales) * 100)
Ytd sales ------------------ (01.04.2014 to 15.10.2014)
Pytd sales ----------------- (01.04.2013 to 15.10.2013)
Growth -------------------- ((Ytd sales – Pytd sales) / Pytd sales) * 100)

Solution:

Rohini kumar
SAP-ABAP 264

Interactive ALV:
Syntax:
FORM <interactive> USING <ucomm> TYPE SY-UCOMM <sel> TYPE
SLIS_SELFIELD.
-------------
-------------
ENDFORM.

Requirement:
Customer master details

Input:
S_kunnr
Customer (button)
Address (button)

Output-1:
Customer number
Customer name
Customer group
Customer group description
Region
Region description
Division
Division description

Output-2:
Customer code
Customer name
Customer city
Customer postal code
Customer Street
Customer telephone number

Interactive Logic:
If I double click on customer code switch to XD03 application

Processing Logic-1:
1. Get kunnr name1 regio from kna1 table based on input
2. Get kunnr spart kdgrp from knvv table by passing kunnr of kna1 table
3. Get spart vtext from tspat table by passing spart of knvv table
4. Get kdgrp ktext from t151t table by passing kdgrp of knvv table
Rohini kumar
SAP-ABAP 265

5. Get bland bezei from t005u table by passing region of kna1 table

Processing Logic-2:
1. Provide inner join between kna1 table & adrc table (kunnr, name1, city1, post_code1,
street, tel_number)

Solution:
TABLES: KNA1, ADRC.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.


PARAMETERS: customer RADIOBUTTON GROUP rg1,
address RADIOBUTTON GROUP rg1.
SELECTION-SCREEN: END OF BLOCK b2.

TYPE-POOLS SLIS.

TYPES: BEGIN OF ty_kna1,


Kunnr TYPE kunnr,
Name1 TYPE name1,
Region TYPE region,
END OF ty_kna1.

TYPES: BEGIN OF ty_knvv,


Kunnr TYPE kunnr,
spart TYPE spart,
kdgrp TYPE kdgrp,
END OF ty_knvv.

TYPES: BEGIN OF ty_tspat,


spart TYPE spart,
vtext TYPE vtext,
END OF ty_tspat.

TYPES: BEGIN OF ty_t151t,


kdgrp TYPE kdgrp,
ktext TYPE ktext,
END OF ty_t151t.

Rohini kumar
SAP-ABAP 266

TYPES: BEGIN OF ty_t005u,


bland TYPE regio,
bezei TYPE bezei,
END OF ty_t005u.

TYPES: BEGIN OF ty_adrc,


Kunnr TYPE kunnr,
Name1 TYPE name1,
City1 TYPE ort01,
Post_code TYPE pstlz,
Street TYPE stras,
Tel_number TYPE ad_tlnmbr1,
END OF ty_adrc.

TYPES: BEGIN OF ty_final,


Kunnr TYPE kunnr,
Name1 TYPE name1,
Kdgrp TYPE kdgrp,
Ktext TYPE ktext,
Region TYPE regio,
Bezei TYPE bezei,
Vtext TYPE vtext,
END OF ty_final.

DATA: wa_kna1 TYPE ty_kna1,


wa_knvv TYPE ty_knvv,
wa_tspat TYPE ty_tspat,
wa_t151t TYPE ty_t151t,
wa_t005u TYPE ty_t005u,
wa_adrc TYPE ty_adrc,
wa_final TYPE ty_final,
it_kna1 TYPE TABLE OF ty_kna1,
it_knvv TYPE TABLE OF ty_knvv,
it_tspat TYPE TABLE OF ty_tspat,
it_t151t TYPE TABLE OF ty_t151t,
it_t005u TYPE TABLE OF ty_t005u,
it_adrc TYPE TABLE OF ty_adrc,
it_final TYPE TABLE OF ty_final.

DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV,


IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
Rohini kumar
SAP-ABAP 267

WA_EVENT TYPE SLIS_ALV_EVENT,


WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENT TYPE SLIS_T_EVENT.

PERFORM get_kna1.
PERFORM get_knvv.
PERFORM get_tspat.
PERFORM get_t151t.
PERFORM get_t005u.
PERFORM get_adrc.
PERFORM combine_data.
PERFORM field_cat.
PERFORM layout.
PERFORM field_event.
PERFORM display_data.

FORM get_kna1.

SELECT kunnr name1 regio FROM KNA1 INTO TABLE it_kna1


WHERE kunnr IN s_kunnr.

IF SY-SUBRC NE 0.
MESSAGE ‘Enter valid input’ TYPE ‘E’ DISPLAY LIKE ‘I’.
LEAVE LIST-PROCESSING.
ENDIF.

ENDFORM.

FORM get_knvv.

IF NOT it_kna1 IS INITIAL.


SELECT kunnr spart kdgrp FROM KNVV INTO TABLE it_knvv
FOR ALL ENTRIES IN it_kna1
WHERE kunnr = it_kna1-kunnr.
ENDIF.

ENDFORM.

FORM get_tspat.

IF NOT it_knvv IS INITIAL.


SELECT spart vtext FROM TSPAT INTO TABLE it_tspat
Rohini kumar
SAP-ABAP 268

FOR ALL ENTRIES IN it_knvv


WHERE spart = it_knvv-spart
AND spras EQ ‘EN’.
ENDIF.

ENDFORM.

FORM get_t151t.

IF NOT it_knvv IS INITIAL.


SELECT kdgrp ktext FROM T151T INTO TABLE it_t151t
FOR ALL ENTRIES IN it_knvv
WHERE kdgrp = it_knvv-kdgrp
AND spras EQ ‘EN’.
ENDIF.

ENDFORM.

FORM get_t005u.

IF NOT it_kna1 IS INITIAL.


SELECT bland bezei FROM T005U INTO TABLE it_t005u
FOR ALL ENTRIES IN it_kna1
WHERE bland = it_kna1-regio
AND spras EQ ‘EN’.
ENDIF.

ENDFORM.

FORM get_adrc.

SELECT kna1~kunnr kna1~name1 adrc~city1 adrc~post_code1 adrc~street


adrc~tel_number INTO TABLE it_adrc
FROM KNA1 INNER JOIN ADRC
ON kna1~adrnr = adrc~addrnumber
WHERE kna1~kunnr IN s_kunnr.

ENDFORM.

FORM combine_data.
LOOP AT it_kna1 INTO wa_kna1.
wa_final-kunnr = wa_kna1-kunnr.
Rohini kumar
SAP-ABAP 269

wa_final-name1 = wa_kna1-name1.
wa_final-regio = wa_kna1-regio.

READ TABLE it_knvv INTO wa_knvv WITH KEY kunnr = wa_kna1-kunnr.


wa_final-kdgrp = wa_knvv-kdgrp.
wa_final-spart = wa_knvv-spart.

READ TABLE it_tspat INTO wa_tsapt WITH KEY spart = wa_knvv-spart.


wa_final-vtext = wa_tspat-vtext.

READ TABLE it_t005u INTO wa_t005u WITH KEY bland = wa_kna1-regio.


wa_final-bezei = wa_t005u-bezei.

READ TABLE it_t151t INTO wa_t151t WITH KEY kdgrp = wa_knvv-kdgrp.


wa_final-ktext = wa_t151t-ktext.

APPEND wa_final TO it_final.

ENDLOOP.
ENDFORM.

FORM FIELD_CAT.

WA_FCAT-FIELDNAME = ‘KUNNR’.
WA_FCAT-SELTEXT_M = ‘customer code’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘NAME1’.
WA_FCAT-SELTEXT_M = ‘name’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘KDGRP’.
WA_FCAT-SELTEXT_M = ‘customer group’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘KTEXT’.
WA_FCAT-SELTEXT_M = ‘customer group description’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘REGIO’.
WA_FCAT-SELTEXT_M = ‘region’.
Rohini kumar
SAP-ABAP 270

APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘BEZEI’.
WA_FCAT-SELTEXT_M = ‘region description’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘SPART’.
WA_FCAT-SELTEXT_M = ‘division’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘VTEXT’.
WA_FCAT-SELTEXT_M = ‘division description’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘KUNNR’.
WA_FCAT-SELTEXT_M = ‘customer code’.
WA_FCAT-TABNAME = ‘it_adrc’
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘NAME1’.
WA_FCAT-SELTEXT_M = ‘name’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘CITY1’.
WA_FCAT-SELTEXT_M = ‘city’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘POST_CODE1’.
WA_FCAT-SELTEXT_M = ‘postal code’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘STREET’.
WA_FCAT-SELTEXT_M = ‘street’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘TEL_NUMBER’.
WA_FCAT-SELTEXT_M = ‘tel_number’.
APPEND WA_FCAT TO IT_FCAT1.

ENDFORM.

Rohini kumar
SAP-ABAP 271

FORM field_event.

WA_EVENT-NAME = ‘USER_COMMAND’.
WA_EVENT-FORM = ‘INTERACTIVE’.
APPEND wa_event TO it_event.

ENDFORM.

FORM layout.

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.

ENDFORM.

FORM display.

IF customer EQ ‘X’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
IT_EVENTS = IT_EVENT
I_SAVE = ‘X’
TABLES
T_OUTTAB = it_final.
ELSE.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT1
IT_EVENTS = IT_EVENT
I_SAVE = ‘X’
TABLES
T_OUTTAB = it_adrc.
ENDIF.

ENDFORM.

Rohini kumar
SAP-ABAP 272

FORM INTERACTIVE USING UCOMM TYPE SY-UCOMM sel TYPE


SLIS_SELFIELD.

IF SEL-SEL_TAB_FIELD = ‘it_final-kunnr’
OR SEL-SET_TAB_FIELD = ‘it_adrc-kunnr’.
SET PARAMETER ID ‘KUN’ FIELD SEL-VALUE.
CALL TRANSACTION ‘XD03’.
ENDIF.

ENDFORM.

Rohini kumar
SAP-ABAP 273

17-10-2014
Object:
Movement typewise sale production consumption details for materials

Input:
S_matnr ------------ material code
S_werks ------------ plant
S_bwart ------------ movement type
S_budat ------------ posting date

Input:
Material code
Material description
Plant
Production quantity
Sale quantity
Consumption quantity
Return quantity
Plant wise (button)
Segment wise (button)
All (button)

Plant wise Output:


Material code
Plant
Production
Sale
Consumption
Return quantity

Segment wise Output:


Division
Division description
Production
Sale
Consumption
Return quantity

All Output:
Material code
Material description
Division
Rohini kumar
SAP-ABAP 274

Division description
Plant
Production (101, 102 movement types)
Sale (601, 602 movement types)
Consumption (261, 262 movement types)
Return quantity (651, 652 movement types)

Tables:
MAKT
MKPF
MSEG

Solution:
ZNP_STOCK_MOVEMENT_DETAILS

TABLES: MARA, MKPF, MSEG.

TYPE-POOLS SLIS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITEL TEXT-000.


SELECT-OPTIONS: s_matnr FOR mara-matnr,
s_werks FOR mseg-werks,
s_budat FOR mkpf-budat,
s_bwart FOR mseg-bwart.
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF LINE.


PARAMETERS: p_rb1 RADIOBUTTON GROUP rg1.
SELECTION-SCREEN COMMIT 10(20) TEXT-001.

PARAMETERS: p_rb2 RADIOBUTTON GROUP rg1.


SELECTION-SCREEN COMMIT 40(20) TEXT-002.

PARAMETERS: p_rb3 RADIOBUTTON GROUP rg1.


SELECTION-SCREEN COMMIT 70(20) TEXT-003.

SELECTION-SCREEN: END OF LINE.

TYPES: BEGIN OF ty_mara,


matnr TYPE matnr,
spart TYPE spart,
maktx TYPE maktx,
Rohini kumar
SAP-ABAP 275

END OF ty_mara.

TYPES: BEGIN OF ty_mseg,


mblnr TYPE mblnr,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_D,
shkzg TYPE shkzg,
bwart TYPE bwart,
menge TYPE menge_D,
END OF ty_mseg.

TYPES: BEGIN OF ty_mseg,


mblnr TYPE mblnr,
budat TYPE budat,
matnr TYPE matnr,
werks TYPE werks_D,
shkzg TYPE shkzg,
bwart TYPE bwart,
menge TYPE menge_D,
END OF ty_mseg.

TYPES: BEGIN OF ty_final,


matnr TYPE matnr,
maktx TYPE maktx,
werks TYPE werks_D,
spart TYPE spart,
vtext TYPE vtext,
prod TYPE menge_D,
sale TYPE menge_D,
cons TYPE menge_D,
return TYPE menge_D,
END OF ty_mseg.

TYPES: BEGIN OF ty_tspat,


spart TYPE spart,
vtext TYPE vtext,
END OF ty_tspat.

DATA: wa_mara TYPE ty_mara,


wa_mseg TYPE ty_mseg,
wa_mseg1 TYPE ty_mseg,
Rohini kumar
SAP-ABAP 276

wa_out TYPE ty_final,


wa_tspat TYPE ty_tspat,
wa_final TYPE ty_final,
wa_final1 TYPE ty_final,
wa_final2 TYPE ty_final,
it_mara TYPE TABLE OF ty_mara,
it_mseg TYPE TABLE OF ty_mseg INITIAL SIZE 0,
it_mseg1 TYPE TABLE OF ty_mseg INITIAL SIZE 0,
it_final TYPE TABLE OF ty_final INITIAL SIZE 0,
it_final1 TYPE TABLE OF ty_final INITIAL SIZE 0,
it_final2 TYPE TABLE OF ty_final INITIAL SIZE 0,
it_out TYPE TABLE OF ty_final INITIAL SIZE 0,
it_tspat TYPE TABLE OF ty_tspat.

DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV,


IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_EVENT TYPE SLIS_ALV_EVENT,
IT_EVENT TYPE SLIS_T_EVENT.

START-OF-SELECTION.

PERFORM get_mara.
PERFORM get_mseg.
PERFORM get_tspat.
PERFORM combine_data.
PERFORM combine_data1.
PERFORM fill_cat.
PERFORM layout.
PERFORM fill_event.
PERFORM display_data.

FORM get_mara.

SELECT mara~matnr mara~spart makt~maktx INTO TABLE it_mara FROM MARA


INNER JOIN MAKT
ON mara~matnr = makt~matnr
WHERE mara~matnr IN s_matnr
AND spras EQ ‘EN’.

Rohini kumar
SAP-ABAP 277

ENDFORM.

FORM get_mseg.

SELECT mkpf~mblnr mkpf~budat mseg~matnr mseg~werks mseg~shkzg mseg~bwart


mseg~menge INTO TABLE it_mseg FROM MKPF INNER JOIN MSEG
ON mkpf~mblnr = mseg~mblnr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~matnr IN s_matnr
AND mseg~bwart IN s_bwart.

ENDFORM.

FORM get_tspat.

IF NOT it_mara IS INITIAL.


SELECT spart vtext FROM TSPAT INTO TABLE it_tspat
FOR ALL ENTRIES IN it_mara
WHERE spart = it_mara-spart
AND spras EQ ‘EN’.
ENDIF.

ENDFORM.

FORM combine_data.

LOOP AT it_mara INTO wa_mara.


wa_final-matnr = wa_mara-matnr.
wa_final-spart = wa_mara-spart.
wa_final-maktx = wa_mara-maktx.

READ TABLE it_tspat INTO WITH KEY spart = wa_mara-spart.


wa_final-vtext = wa_tspat-vtext.

APPEND wa_final = it_final.


ENDLOOP.

ENDFORM.

FORM combine_data1.

Rohini kumar
SAP-ABAP 278

SORT it_mseg BY matnr werks.

it_mseg1[ ] = it_mseg[ ].

DELETE ADJACENT DUPLICATES FROM it_mseg1 COMPARING matnr werks.

LOOP AT it_mseg1 INTO wa_mseg1.


LOOP AT it_mseg INTO wa_mseg WHERE matnr = wa_mseg1-matnr
AND werks = wa_mseg1-werks.
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_mseg-matnr.

IF wa_mseg-bwart EQ ‘101’.
wa_final-prod = wa_mara-prod + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘102’.
wa_mseg-menge = (-1) * wa_mseg-menge.
wa_final-prod = wa_mara-prod + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘602’.
wa_final-sale = wa_mara-sale + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘601’.
wa_mseg-menge = (-1) * wa_mseg-menge.
wa_final-sale = wa_mara-sale + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘262’.
wa_final-cons = wa_mara-cons + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘261’.
wa_mseg-menge = (-1) * wa_mseg-menge.
wa_final-cons = wa_mara-cons + wa_mseg-menge.
ENDIF.

IF wa_mseg-bwart EQ ‘651’.
wa_final-return = wa_mara-return + wa_mseg-menge.
ENDIF.
Rohini kumar
SAP-ABAP 279

IF wa_mseg-bwart EQ ‘652’.
wa_mseg-menge = (-1) * wa_mseg-menge.
wa_final-return = wa_mara-return + wa_mseg-menge.
ENDIF.

ENDLOOP.

wa_final-werks = wa_mseg-werks.

MODIFY it_final FROM wa_final TRANSPORTING werks prod cons sale return
WHERE matnr = wa_mseg-matnr.

CLEAR wa_final.

ENDLOOP.

ENDFORM.

FORM fill_cat.

WA_FCAT-FIELDNAME = ‘MATNR’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material Code’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘MAKTX’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material description’.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = ‘WERKS’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Plant’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘VTEXT’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Segment’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘PROD’.
WA_FCAT-TABNAME = ‘it_final’.
Rohini kumar
SAP-ABAP 280

WA_FCAT-SELTEXT_M = ‘Production’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘SALE’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Sale’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘CONS’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Consumption’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘RETURN’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Returns’.
APPEND WA_FCAT TO IT_FCAT.

* for plant wise


WA_FCAT-FIELDNAME = ‘MATNR’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material Code’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘MAKTX’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material description’.
APPEND WA_FCAT TO IT_FCAT1.
WA_FCAT-FIELDNAME = ‘WERKS’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Plant’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘PROD’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Production’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘SALE’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Sale’.
APPEND WA_FCAT TO IT_FCAT1.
Rohini kumar
SAP-ABAP 281

WA_FCAT-FIELDNAME = ‘CONS’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Consumption’.
APPEND WA_FCAT TO IT_FCAT1.

WA_FCAT-FIELDNAME = ‘RETURN’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Returns’.
APPEND WA_FCAT TO IT_FCAT1.

* for segment wise


WA_FCAT-FIELDNAME = ‘MATNR’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material Code’.
APPEND WA_FCAT TO IT_FCAT2.

WA_FCAT-FIELDNAME = ‘MAKTX’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Material description’.
APPEND WA_FCAT TO IT_FCAT2.

WA_FCAT-FIELDNAME = ‘VTEXT’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Segment’.
APPEND WA_FCAT TO IT_FCAT2.

WA_FCAT-FIELDNAME = ‘PROD’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Production’.
APPEND WA_FCAT TO IT_FCAT2.

WA_FCAT-FIELDNAME = ‘SALE’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Sale’.
APPEND WA_FCAT TO IT_FCAT2.

WA_FCAT-FIELDNAME = ‘CONS’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Consumption’.
APPEND WA_FCAT TO IT_FCAT2.

Rohini kumar
SAP-ABAP 282

WA_FCAT-FIELDNAME = ‘RETURN’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-SELTEXT_M = ‘Returns’.
APPEND WA_FCAT TO IT_FCAT2.

ENDFORM.

FORM layout.

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.

ENDFORM.

FORM fill_event.

WA_EVENT-NAME = ‘USER-COMMAND’.
WA_EVENT-FORM = ‘INTERACTIVE’.
APPEND wa_event TO it_event.

ENDFORM.

FORM display_data.

IF p_rb1 EQ ‘X’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT1
IS_LAYOUT = WA_LAYOUT
IT_EVENTS = IT_EVENT
TABLES
T_OUTTAB = IT_FINAL.

ELSEIF p_rb2 EQ ‘X’.

SORT it_final BY matnr spart.

it_final1[ ] = it_final.

DELETE ADJACENT DUPLICATES FROM it_final1 COMPARING matnr spart.

Rohini kumar
SAP-ABAP 283

LOOP AT it_final1 INTO wa_final1.


LOOP AT it_final INTO wa_final WHERE matnr = wa_final1-matnr
AND spart = wa_final1-spart.
wa_out-prod = wa_out-prod + wa_final-prod.
wa_out-sale = wa_out-sale + wa_final-sale.
wa_out-cons = wa_out-cons + wa_final-cons.
wa_out-return = wa_out-return + wa_final-return.
ENDLOOP.
wa_out-matnr = wa_final-matnr.
wa_out-maktx = wa_final-maktx.
wa_out-vtext = wa_final-vtext.
APPEND wa_out TO it_out.
CLEAR wa_out.
ENDLOOP.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT2
IS_LAYOUT = WA_LAYOUT
IT_EVENTS = IT_EVENT
TABLES
T_OUTTAB = IT_OUT.

ELSEIF p_rb3 EQ ‘X’.


CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT
IS_LAYOUT = WA_LAYOUT
IT_EVENTS = IT_EVENT
TABLES
T_OUTTAB = IT_FINAL.

ENDIF.

ENDFORM.

FORM INTERACTIVE USING UCOMM TYPE SY-UCOMM


SEL TYPE SLIS_SELFIELD
REFRESH it_final2.

Rohini kumar
SAP-ABAP 284

IF SEL-SEL_TAB_FIELD EQ ‘it_final-matnr’.
LOOP AT it_final INTO wa_final WHERE matnr = SEL-VALUE.
APPEND wa_final TO it_final2.
ENDLOOP.
ENDIF.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT
IS_LAYOUT = WA_LAYOUT
TABLES
T_OUTTAB = IT_FINAL2.

ENDFORM.

Rohini kumar
SAP-ABAP 285

Object:
Sales register report

Input:
S_fkart --------- billing type
S_vbeln -------- billing number
S_werks
S_matnr
S_fkdat -------- billing date
S_bukrs
S_spart

Output:
Invoice number
Bill date
Customer number
Customer name
Material number
Material description
Bill quantity
Bill amount
Customer PO number
Customer PO date
Excise number
Excise date
VAT
CST
CForm number
CForm date
Issue date
Delivery number
Sales order number

Note:
In real time vendor bill sell goods to customer to different states. To avail CST benefits
customer will provide a CForm to vendor which is entered into SAP system through report

Processing Logic:
1. Get vbeln fkdat kunrg matnr fkimg netwr knumv posnr based on input from
vbrk & vbrp tables
2. Get kunnr name from kna1 by processing kunrg of vbrk
3. Get matnr maktx from makt by passing matnr of vbrk
Rohini kumar
SAP-ABAP 286

4. Get exnum exdat rdoc from j_1iexchdr by passing vbeln of vbrk


5. Get vbeln vbelv from vbfa by passing vbeln of vbrk where vbtyp_v = ‘c’
6. Get bstkd bstdk from vbkd by passing vbelv of vbfa
7. Get vbelv from vbfa by passing vbeln of vbrk where vbtyp_v = ‘j’
8. Get knumv kschl kposn kwert from konv by passing knumv of vbrk and posnr of
vbrk
9. Get vbeln cno cdate idate from zsd_forms by passing vbeln of vbrk

Solution:
ZSD_SALES_REGISTER_SJU

Rohini kumar
SAP-ABAP 287

SD Flow:
Inquiry
Sales order
Delivery
Invoice

 If sub sequent is given (invoic) & I want preceding (sales order)


SELECT vbelv FROM VBFA INTO TABLE it WHERE vbeln = it1_vbeln AND
VBTYP_V = ‘C’.

 If sub sequent is given (invoic) & I want preceding (delivery)


SELECT vbelv FROM VBFA INTO TABLE it WHERE vbeln = it1_vbeln AND
VBTYP_V = ‘I’.

 If preceding is given (sales order) & I want sub sequent (invoice)


SELECT vbeln FROM VBFA INTO TABLE it WHERE vbelv = it1_order AND
VBTYP_N = ‘M’.

 If preceding is given (sales order) & I want sub sequent (delivery)


SELECT vbeln FROM VBFA INTO TABLE it WHERE vbelv = it1_order AND
VBTYP_N = ‘J’.

Rohini kumar
SAP-ABAP 288

18-10-2014
J_1IEXCHDR Table:
It is also called Excise table
It holds invoice header data

Fields:
1. DOCYR ---------- year
2. DOCNO --------- excise document number
3. BUKRS ---------- company code
4. WERKS ---------- plant
5. EXGRP ---------- excise group
6. EXNUM --------- excise number
7. EXDAT --------- excise date
8. LIFNR ----------- vendor number
9. EXBED --------- basic excise duty
[Link] --------- special excise duty
[Link] -------- additional excise duty
[Link] ----------- cess amount
[Link] --------- reference document (invoice)
Link:
VBRK-vbeln
J_1IEXCHDR-rdoc

VBFA Table:
It holds sales document flow data
In sales document flow, if one document is given you can get other document details from this
table

Fields:
1. VBELN ---------- subsequent document number
2. VBELV ---------- preceding document number
3. VBTYP_N ------ document category of subsequent document
4. RFMNG --------- reference quantity
5. MEINS ---------- unit of measurement
6. RFWRT --------- reference value
7. VBTYP_V ----- document category of preceding document

Rohini kumar
SAP-ABAP 289

VBKD Table:
It holds sale document business data

Fields:
1. VBELN -------------- sales order number
2. KDGRP ------------- customer group
3. LCNUM ------------ letter of credit number
4. BSTKD ------------- customer PO number
5. BSTKD ------------- customer PO date

Assignment:
Material wise Invoice & Realization details

Input:
S_matnr
S_werks
S_exdat -------invoice date

Tables:
VBRK
VBRD
MAKT
TSPAT

Output:
Material number
Material description
Division description
Remarks
Jan
Feb
March
Total

Solution:

Rohini kumar
SAP-ABAP 290

20-10-2014
Blocked ALV:
 Using Blocked ALVs you can display multiple lists at one place
 In real time we are using blocked alvs in few scenarios such as if you want to display
production affiance of different machines of one furnace in one Output list
 If client requires invoice details based on customers, materials, segments at one place we
have to work with Blocked ALVs

Function Modules for Blocked ALVs:


1. REUSE_ALV_BLOCK_LIST_INIT
2. REUSE_ALV_BLOCK_LIST_APPEND
3. REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT:
It initializes lists in blocked alvs

REUSE_ALV_BLOCK_LIST_APPEND:
This function module
1. Maintains field catalogs
2. Maintains data in list
3. Append field catalogs & data with layout

REUSE_ALV_BLOCK_LIST_DISPLAY:
It displays data in list in blocked alvs

Rohini kumar
SAP-ABAP 291

Requirement:
Invoice details Customer wise, Material wise & Segment wise

Input:
S_kunrg
S_matnr
S_werks
S_bukrs
S_fkdat

Output:
Heading
Customer number Name Total quantity Total value

Heading
Material code Material description Total quantity Total value

Heading
Segment Segment description total quantity Total value

Tables:
VBRK
VBRP
MAKT
KNA1
TSPAT

Solution:
ZSD_AUMR_SALES_CUS_MAT_DIV

Rohini kumar
SAP-ABAP 292

Note:
REUSE_ALV_BLOCK_LIST_ALV:
It will initialize blocks in blocked alvs
You should pass current program name to this function module

REUSE_ALV_BLOCK_LIST_APPEND:
It maintains blocks with field catalogs with data &
Append field catalog & data to layout
The parameters are
1. Layout work area
2. Field catalog internal table
3. Internal table name
4. Events internal table
5. Output internal table

REUSE_ALV_BLOCK_LIST_DISPLAY:
It will displays the data in output list
No need to pass any parameters to this function module

Note:
In layout work area you should pass INFO-FIELDNAME for displaying row with a specific
color given in output list

Rohini kumar
SAP-ABAP 293

*** Hierarchal Sequential ALVs:


Using hierarchal sequential alvs you can display application data in hierarchal format

Requirement:
PO Price Change Report

Input:
S_lifnr
S_matnr
S_mtart
S_werks
S_matkl
S_bedat

Output:
Material code Material description
Sno PO number PO date Vendor name Unit of measurement Quantity

Processing Logic:
1. Get matnr from MARA based on input
2. Get ebeln bedat meins menge matnr netpr lifnr by passing matnr of MARA & based
on input
3. Get lifnr name1 from LFA1 by passing lifnr of EKKO

*** Ques: Explain procedure of working with Hierarchal ALVs?


Answer:
 In Hierarchal Sequential ALVs we have to create 2 internal tables
 One for Header data (it_final1) & another for Item data (it_final)
 Both these internal tables should have a common field called KEY field
 In Header internal table the Key field should be unique
 In Item internal table the Key field should having number of items based on that unique
key
 Pass these two internal tables to a function module called
REUSE_ALV_HIERSEQ_LIST_DISPLAY

Solution:
ZMM_PO_PRICE_CHANGE_REPORT

TYPE-POOLS SLIS.

TABLES: EKKO, EKPO, LFA1, MARA.


Rohini kumar
SAP-ABAP 294

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr,
s_matnr FOR mara-matnr,
s_bukrs FOR ekko-bukrs,
s_mtart FOR ekpo-mtart,
s_werks FOR ekpo-werks,
s_matkl FOR ekpo-matkl,
s_bedat FOR ekko-bedat.
SELECTION-SCREEN:END OF BLOCK b1.

TYPES: BEGIN OF ty_mara,


matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_mara.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
name1 TYPE name1,
END OF ty_lfa1.

TYPES: BEGIN OF ty_ekko,


ebeln TYPE ebeln,
bedat TYPE bedat,
matnr TYPE matnr,
meins TYPE meins,
menge TYPE menge_D,
netpr TYPE netpr,
lifnr TYPE lifnr,
END OF ty_ekko.
TYPES: BEGIN OF ty_final,
key TYPE I,
sno TYPE I,
matnr TYPE matnr,
maktx TYPE maktx,
ebeln TYPE ebeln,
bedat TYPE bedat,
lifnr TYPE lifnr,
name1 TYPE name1,
meins TYPE meins,
menge TYPE menge_D,
netpr TYPE netpr,
END OF ty_final.
Rohini kumar
SAP-ABAP 295

DATA: wa_lfa1 TYPE ty_lfa1,


wa_mara TYPE ty_mara,
wa_ekko TYPE ty_ekko,
wa_final TYPE ty_final,
it_lfa1 TYPE TABLE OF ty_lfa1,
it_mara TYPE TABLE OF ty_mara,
it_ekko TYPE TABLE OF ty_ekko,
it_final TYPE TABLE OF ty_final,
it_final1 TYPE TABLE OF ty_final.

DATA: cnt TYPE I,


count TYPE I VALUE 1.

DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV,


WA_SORT TYPE SLIS_SORTINFO_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_EVENT TYPE SLIS_ALV_EVENT,
IT_EVENT TYPE SLIS_T_EVENT,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_KEY TYPE SLIS_KEYINFO_ALV,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

PERFORM get_mara.
PERFORM get_ekko.
PERFORM get_lfa1.
PERFORM combine_data.
PERFORM layout.
PERFORM sort.
PERFORM fill_cat.
PERFORM key.
PERFORM display_hierseq.

FORM get_mara.

SELECT mara~matnr makt~maktx INTO TABLE it_mara FROM MARA INNER


JOIN MAKT
ON mara~matnr = makt~matnr
WHERE mara~matnr IN s_matnr
AND spras EQ ‘EN’.

ENDFORM.

Rohini kumar
SAP-ABAP 296

FORM get_ekko.

IF NOT it_mara IS INITIAL.


SELECT ekko~ebeln ekko~bedat ekpo~matnr ekpo~meins ekpo~menge ekpo~netpr
ekpo~lifnr INTO TABLE it_ekko FROM EKKO INNER JOIN EKPO
ON ekko~ebeln = ekpo~ebeln
FOR ALL ENTRIES IN it_mara
WHERE ekpo~matnr = it_mara-matnr
AND ekpo~werks IN s_werks
AND ekpo~bukrs IN s_bukrs
AND ekpo~mtart IN s_mtart
AND ekpo~matkl IN s_matkl
AND ekko~lifnr IN s_lifnr
AND ekko~bedat IN s_bedat.
ENDIF.

ENDFORM.

FORM get_lfa1.

IF NOT it_ekko IS INITIAL.


SELECT lifnr name1 FROM LFA1 INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_ekko
WHERE lifnr = it_ekko-lifnr.
ENDIF.

ENDFORM.

FORM combine_data.

LOOP AT it_mara INTO wa_mara.


LOOP AT it_ekko INTO wa_ekko WHERE matnr = wa_mara-matnr.
wa_final-matnr = wa_ekko-matnr.
wa_final-ebeln = wa_ekko-ebeln.
wa_final-bedat = wa_ekko-bedat.
wa_final-meins = wa_ekko-meins.
wa_final-menge = wa_ekko-menge.
wa_final-netpr = wa_ekko-netpr.

READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_ekko-lifnr.


wa_final-name1 = wa_lfa1-name1.
wa_final-maktx = wa_mara-maktx.
Rohini kumar
SAP-ABAP 297

cnt = cnt + 1.
wa_final-sno = cnt.
wa_final-key = count.
APPEND wa_final TO it_final.
ENDLOOP.

CLEAR cnt.
count = count + 1.
ENDLOOP.

ENDFORM.

FORM fill_cat.

WA_FCAT-FIELDNAME = ‘MATNR’.
WA_FCAT-SELTEXT_M = ‘Material Code’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘MAKTX’.
WA_FCAT-SELTEXT_M = ‘Material Description’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘SNO’.
WA_FCAT-SELTEXT_M = ‘[Link]’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘EBELN’.
WA_FCAT-SELTEXT_M = ‘PO Number’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘BEDAT’.
WA_FCAT-SELTEXT_M = ‘PO Date’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘LIFNR’.
WA_FCAT-SELTEXT_M = ‘Vendor Code’.
WA_FCAT-TABNAME = ‘it_final’.
Rohini kumar
SAP-ABAP 298

APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘NAME1’.
WA_FCAT-SELTEXT_M = ‘Name’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘MEINS’.
WA_FCAT-SELTEXT_M = ‘Unit of Measurement’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘MENGE’.
WA_FCAT-SELTEXT_M = ‘PO Quantity’.
WA_FCAT-TABNAME = ‘it_final’.
WA_FCAT-DO_SUM = ‘X’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘NETPR’.
WA_FCAT-SELTEXT_M = ‘Unit Price’.
WA_FCAT-TABNAME = ‘it_final’.
APPEND WA_FCAT TO IT_FCAT.

ENDFORM.

FORM sort.

WA_SORT-FIELDNAME = ‘MATNR’.
WA_SORT-TABNAME = ‘it_final1’.
WA_SORT-SUBTOT = ‘X’.
WA_SORT-UP = ‘X’.
APPEND wa_sort TO it_sort.

ENDFORM.

FORM key.

WA_KEY-HEADER01 = ‘KEY’.
WA_KEY-ITEM01 = ‘KEY’.

ENDFORM.

Rohini kumar
SAP-ABAP 299

FORM layout.

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.

ENDFORM.

FORM display-hierseq.

it_final1[ ] = it_final[ ].

DELETE ADJACENT DUPLICATES FROM it_final1 COMPARING key.

CALL FUNCTION ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FCAT
IT_SORT = IT_SORT
I_SAVE = ‘X’
I_TABNAME _HEADER = ‘it_final1’
I_TABNAME_ITEM = ‘it_final’
IS_KEYINFO = wa_key
TABLES
T_OUTTAB_HEADER = it_final1
T_OUTTAB_ITEM = it_final.

ENDFORM.

Rohini kumar
SAP-ABAP 300

21-10-2014
Note:
SLIS_KEYINFO_ALV:
It holds the Key field details of bifurcation in hierarchal sequential alvs
It is having fields such as
1. HEADER01 -------- header key field
2. ITEM01 ------------- item key field

REUSE_ALV_HIRESEQ_LIST_DISPLAY:
Using this function module you can display the in hierarchal format
The parameters are
1. Current program name
2. Layout work area
3. Field catalog internal table
4. Sorting internal table
5. Layout for sale
6. Events internal table
7. Header internal table name
8. Item internal table name
9. Key work area for bifurcation
[Link] internal table
[Link] internal table

Rohini kumar
SAP-ABAP 301

FI Module: FICO
 Finance & Controlling Module
 In every company vendor will sell goods & customer will purchase
 In both the cases money inflow & outflow will take place
 Then FI module comes into picture

Components in FI Module:
1. Accounting Document Number:
For every finance transaction system will creates an accounting document number

T Codes:
1. FB01
2. FB02
3. FB03

Tables:
1. BKPF
2. BSEG

Key field: BELNR

2. Account Receivable:
This document is created when vendor will receive money form customer

T Codes:
1. F-28
2. FB02
3. FB03

Tables:
1. BSID
2. BSAD

Key field: BELNR

3. Account Payable:
This document is created when customer will pay money to vendor

T Codes:
1. F-43
2. FB02

Rohini kumar
SAP-ABAP 302

3. FB03
Tables:
1. BSIK
2. BSAK

Key field: BELNR

4. Asset Accounting:
Every company has to purchase assets
All assets are posted to asset accounting

T Codes:
1. AB01
2. AB02
3. AB03

Tables:
1. ANEK
2. ANEP
3. ANLC
4. ANLZ
5. ANKA

Key field: ANLNR (asset number)

5. G/L Account:
 General Ledger Account
 It is heart of Finance module
 All finance transactions are ultimately posted to a specific G/L Accont
 G/L Account holds both master data & transactional data

T Codes:
1. FS01
2. FS10N
3. FAGLL03
4. FBL1N
5. FBL3N
6. FBL5N
Tables:
1. SKA1
2. SKB1

Rohini kumar
SAP-ABAP 303

3. BSIS
4. BSAS
Key field: HKONT, SAKNR

Other Impartment Tables:


1. FAGLFLEXT
2. FAGLFLEXA
3. GLTO

Rohini kumar
SAP-ABAP 304

HR Module:
Human Resource Module

Components in HR Module:
1. Personal Administration
i) Personal management
ii) Organizational structure
iii) Personality development
iv) Compensation management
v) Recruitment
2. *** Organizational Management
3. *** Payroll
4. Time Management
5. Travel Management

Info Types:
It is a set of related data fields stores information at one place in HR
Every Info type is a 4 letter word
Example:
0008 ------- basic salory
0021 ------- family
0023 ------- previous employers
0006 ------- addresses ……………….etc

Applications in HR Module:
1. PA10
2. PA20
3. *** PA30
4. PA40
5. PA60
6. PA61
7. PC00_M40_CALC
8. PAYPC_RESULTS

Rohini kumar
SAP-ABAP 305

Tables:
1. PA0001 Info Type:
It is an info type for organizational assignment

Fields:
1. *** PERNR ------------ employee number
2. BUKRS ----------------- company code
3. PERSG ----------------- employee group
4. PERSK ----------------- employee sub group
5. BTRTL ----------------- personal sub area (department)
6. *** ABKRS ----------- payroll area
7. KOSTL ---------------- department
8. SNAME --------------- employee full name
9. ENAME --------------- employee name

2. PA0002 Info Type:


It is an info type for employee personal data

Fields:
1. PERNR -------- employee number
2. NACHN ------- last name
3. VORNA ------- first name
4. CNAME------- complete name
5. RUFNM ------- nick name
6. ANRED ------- title
7. GESCH ------- gender
8. *** GBDAT --- date of birth
9. ANZKD -------- number of children
[Link] -------- material status

22-10-2014
3. PA0006 Info Type:
It is for Employee addresses

Fields:
1. PERNR ---------- employee number
2. NAME2 --------- C/O name
3. STRAS ---------- street
4. ORT01 ---------- city
5. PSTLZ ---------- postal code
6. LAND1 --------- country

Rohini kumar
SAP-ABAP 306

4. PA0009 Info Type:


It is for Employee Bank details

Fields:
1. PERNR ---------- employee number
2. BANKS --------- bank country name (sbi, icici)
3. BANKL --------- bank key (fct code)
4. BANKN --------- bank account number

5. PA0040 Info Type:


It is for employee recurring payments & deduction

Fields:
1. PERNR ---------- employee number
2. BEGDA --------- start date
3. ENDDA --------- end date
4. LGORT ---------- wage type (salary type )
5. BETRG ---------- amount

6. PA0019 Info Type:


It is for maintaining dates
Retirement is stored in this info type

Fields:
1. PERNR ----------- employee number
2. BEGDA ---------- retirement date

7. PA0021 Info Type:


It is for employee family members details

Fields:
1. PERNR ------------ employee number
2. FGBAT ------------ date of birth of family members
3. FAVOR ------------ first name
4. FANAM ----------- last name
5. SUBTY ------------ sub type
6. OBJPS ------------- object identification

Rohini kumar
SAP-ABAP 307

Example:
Pernr Subty Objps Fanam
1000 11 (Father) -- suresh
12 (Mother) -- laxmi
1 (Wife) -- sita
2 (children) 01 chinnu
02 banti

8. PA0023 Info Type:


It is for previous employers details

Fields:
1. PERNR ---------- employee number
2. ARBGP --------- name of employer (google, tcs)
3. ORT01 ---------- city
4. BRANK -------- industry
5. TAETE --------- job of employee

9. PA0028 Info Type:


It is for internal medical service details

Fields:
1. PERNR ---------- employee number
2. NMF01 ---------- value (blood group)
3. NMF02 --------- value (height)…………..etc

10. PA0105 Info Type:


It is for communication details

Fields:
1. PERNR --------- employee number
2. USRTY --------- communication type (phone, email)
3. USRID ---------- communication number

11.PA0586 Info Type:


It is for tax rebate details
Fields:
1. PERNR --------- employee number
2. ITC01 ----------- investment code
3. PIN01 ----------- investment amount
4. ITC02 ----------- investment code
5. PIN02 ---------- investment amount
Rohini kumar
SAP-ABAP 308

12.PA0587 Info Type:


It is for PF contribution details

Fields:
1. PERNR ----------- employee number
2. EEPFM ----------- PF account number
3. TSTID ------------ PF trust
4. PFAMT ---------- PF amount

13.PA0588 Info Type:


It is for employee welfare schemes details

Fields:
1. PERNR ---------- employee number
2. *** ESINO ----- employee state insurance number
3. ESIDP ----------- ESI dispensary (hospital)

13. TEVEN Table:


It is for time event details

Fields:
1. PERNR ---------- employee number
2. LDATE ---------- logical date
3. LTIME ----------- logical time

14.PA2001 Info Type:


It is for absence details

Fields:
1. PERNR ---------- employee number
2. AWART -------- absence type
3. ABWTG -------- absence days
4. ** ABRTG ----- payroll days
5. ** BEGDA ----- start date
6. ENDDA -------- end date

Example:
Pernr Begda Endda Awart Abwtg Abrtg
1000 01.11.2014 04.11.2014 EL 2 Days 3 Days
(Saturday) (Tuesday)

Rohini kumar
SAP-ABAP 309

15.PA2002 Info Type:


It is for attendance details

Fields:
1. PERNR ----------- employee number
2. BEGDA ---------- start date
3. ENDDA ---------- end date
4. AWART ---------- attendance type
5. ABWTG ---------- attendance days
6. ABRTG ---------- payroll days

16.*** PA0008 Info Type:


It is for basic pay details

Fields:
1. PERNR ---------- employee number
2. TRFGR ---------- pay scale group
3. LGA01 ---------- wage type (salary type)---DA
4. BET01 ---------- amount for wage type (salary type)
5. LGA02 --------- wage type (salary type)---HRA
6. BET02 --------- amount for wage type (salary type)…………up to 30

Rohini kumar
SAP-ABAP 310

Logical Database:
 Logical database is a special type of program provided by SAP
 It collects a group of (or) a set of Related Fields together from Database & supplied it to
Application program

Note:
The T code for working with logical database is SLDB

Object:
Employee Details Report

Input:
S_pernr ---------- Employee number
S_persg --------- Employee group
S_persk --------- Employee sub group
S_abkrs --------- Payroll area

Output:
Employee number
Employee name
Date of joining
Date of birth
Department
Designation
Age

Solution:
Step-1:
Create a structure with output fields
 Go to SE11
 Structure: ZHR_EMP_STR

Step-2:
Inserting logical database in our program
 Go to SE38
 Program: ZHR_EMPLOYEE_DETAILS_REPORT
 Create
 Title: Employee Details Report
 Type: Executable Program
 *** Logical Database: PNP (It is a special type of program name)
 Enter

Rohini kumar
SAP-ABAP 311

TABLES: PERNR
INFOTYPES: 0001, 0002.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_pernr FOR pernr-pernr,
S_persg FOR pernr-persg,
S_persk FOR pernr-persk,
S_abkrs FOR pernr-abkrs,
SELECTION-SCREEN: END OF BLOCK b1.

 Activate
 Back
 Attributes
 Change
 HR Report Category
 You will find a pop-up provide Master Data: IE_P35L (for no selection screen display of
PNP program)
 Enter
 Save
 Source Code
 Change

ZHR_EMPLOYEE_DETAILS

TYPES: BEGIN OF ty_final,


Pernr TYPE zhr_emp_str-pernr,
Ename TYPE zhr_emp_str-ename,
Doj TYPE zhr_emp_str-doj,
Gbdat TYPE zhr_emp_str-gbdat,
Dept TYPE zhr_emp_str-dept,
Age TYPE zhr_emp_str-age,
END OF ty_final.

DATA: wa_final TYPE ty_final,


it_final TYPE TABLE OF ty_final.

DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,


WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: design(20),
Dept(20),
Hdate TYPE DATUM,
Age TYPE I.
Rohini kumar
SAP-ABAP 312

START-OF-SELECTION.

GET PERNR.

CHECK pernr-pernr IN s_pernr,


AND pernr-persg IN s_persg,
AND pernr-abkrs IN s_abkrs.

IF SY-SUBRC EQ 0.
PERFORM get_data.
ENDIF.

END-OF-SELECTION.

PERFORM layout.
PERFORM display_data.

FORM get_data.

SELECT SINGLE plstx FROM T528T INTO design WHERE plans = pernr-plans
AND sprsl EQ ‘EN’
AND dept EQ ‘S’.

SELECT SINGLE orgtx FROM T527X INTO dept WHERE orgeh = pernr-orgeh.

CALL FUNCTION ‘RP_GET_HIRE_DATE’


EXPORTING
PERSNR = pernr-pernr
CHECK_INFOTYPES = ‘0001’
IMPORTING
HIREDATE = hdate.

CALL FUNCTION ‘HR_RU_AGE_YEARS’


EXPORTING
PERSNR = pernr-pernr
BSDATE = SY-DATUM
IMPORTING
VALUE = age.

wa_final-pernr = p0002-pernr.
wa_final-ename = p0002-nachn.
wa_final-doj = hdate.
Rohini kumar
SAP-ABAP 313

wa_final-gbdat = p0002-gbdat.
wa_final-dept = dept.
wa_final-age = age.

APPEND wa_final TO it_final.

ENDFORM.

FORM display_data.

CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’


EXPORTING
I_STRUCTURE_NAME = ‘ZHR_EMP_STR’
IT_FIELDCAT = IT_FCAT
IS_LAYOUT = WA_LAYOUT
TABLES
T_OUTTAB = IT_FINAL.

ENDFORM.

24-10-2014

Ques: What are the different ways to creating FIELD CATALOGS?


Ans : There are 3 ways to create FIELD CATALOGS
1. Manually
Ex: WA_FCAT-FIELDNAME = ‘KUNNR’.
WA_FCAT-SELTEXT_M = ‘Customer Code’.
APPEND WA_FCAT TO IT_FCAT.
2. By using REUSE_ALV_FIELDCATALOG_MERGE function module
3. By passing DDIC Structure name to REUSE_ALV_LIST_DISPLAY function module

Rohini kumar
SAP-ABAP 314

Assignment:
Employee Total Details Report

Input:
S_pernr --------employee number
S_persg -------- employee group
S_persk -------- employee sub group
S_abkrs -------- payroll area

Output:

Gender (0002)
Number of Children (0002)
Address (0006)
Telephone Number (0105)
Mail Id (0105)
Height (0028)
Weight (0028)
Employee group (0001)
Employee sub group (0001)
Bank account number (0009)
Employee grade (0008)

Solution:

Rohini kumar
SAP-ABAP 315

SAP Query:
 In real time for developing a report it will take lot of time for development
 i.e. Requirement ---- Functional Consultant-----Functional Document----Technical
Consultant-----Technical Document------Object Creation------Unit Testing-----
Functional Testing-----User Testing-----go live (transfer to Production)
 using SAP Query you can create a report immediately through navigation

Drawbacks:
1. If you want to perform calculations & other complex logics you cannot work with SAP
Query
2. The T code for working SAP Query is SQVI

Example:
Customer Details Report

Step-1: program creation


 Go to SQVI
 Quick Viewer: ZCUSTOMER
 Create
 Title: Customer Details Report
 Table Join
 Enter
 Insert Table (shift + F1)
 Table: KNA1
 Insert Table (shift + F1)
 Table: VBAK
 Enter
 Back
 Selection Fields (for input fields)
 Select Customer Number
 List Fld Select (for output fields)
 Select Customer Number
Name
Sale Document
Date on which created
 Save
 Back
 Yes
 Quick View ----- Additional Functions ----- Generate Program
 Quick View ---- Additional Funtions -----Display Report Name (copy this name)

Rohini kumar
SAP-ABAP 316

Step-2: T code creation


 Go to SE93
 Transaction Code: ZCUST
 Create
 Short Text: T code for customer details
 Program and Selection Screen
 Enter
 Program: paste program name
 Save
 Back
 Execute T code

Note:
1. You can create SAP Query directly in Production Server in real time
2. Selection screen number is 1000

Rohini kumar
SAP-ABAP 317

Performance Tuning:
In real time we should create programs according coding standards along with that our program
should show good performance as per performance standards

Topics in Performance Tuning:


1. ** Indexing (SE11)
2. Runtime Analysis (SE30)
3. SQL Tracer (ST05)
4. Extended program check (SLIN)
5. Code Inspector (SCI)
6. Get runtime field
7. Performance tips

Rohini kumar
SAP-ABAP 318

25-10-2014
Indexing:
 Indexing is a way of searching
 Indexing is a way of improving performance while accessing the data from database

Index:
Index is a copy of a table with reduced fields
Every index table contains
1. Primary key fields,
2. Non Primary key fields &
3. A Pointer field which always points to the position of record
 Index takes advantage of sorting using Binary search
 Every index contains pointer also
 So, that it points to the records of actual table which are not contained in the index table

Types of Indexes:
1. Primary Index
2. Secondary Index

Primary Index:
 Primary index contains primary key fields
 It always points to non primary key fields
 Primary index always take advantage of sorting

Note:
Primary Index is automatically created whenever a table is created in database

Secondary Index:
 Secondary index is applied whenever a table will not take the advantage of sorting
 Secondary index contains non primary key fields
 It always points to primary key fields
Secondary indexes are created
1. On large tables
2. Table which are frequently access
3. Tables having more coloumns

Ques: When you create index on tables?


Answer:
 I created secondary index on production efficient report
 First I debugged the program
 I found that control is taking lot of time for program execution
Rohini kumar
SAP-ABAP 319

 Then I will identify none primary key fields of that SELECT statement & based on that
non-primary key fields I will created a secondary index

Navigation for Creating Secondary Index:


 Go to SE38
 Debug a program there control will staying on a SELECT statement for long time
 Identify non-primary key fields

 Go to SE11
 Database Table: AFRU
 Display
 Select Indexes
 Select Create option
 Create Entries
 Provide Index: ZAP
 You will find a warning there you will find a message “make reports in foreign name
spaces”, Enter
 Again you will find a pop-up then select Maintain in Original Language
 Provide Short Description: Index for BUDAT field
 Field Name: BUDAT
 Activate (ctrl+F3)

Rohini kumar
SAP-ABAP 320

26-10-2014
SQL Tracer: (ST05)
It provides information on
1. SQL statements operated in a program
2. All embedded SQL operations on a table
i.e. prepare
open
cursor
fetch
reopen
3. Number of extracted by SELECT statements
4. Performance time for tables
5. Indexes associated with tables

Example:
Step-1:
 Go to ST05
 Select Activate Tracer option

Step-2:
 Program: any program name
 Execute
 Provide selection screen input
 Execute

Step-3:
 Go to ST05
 Select Performance Tracer ---------Tracer off
 Select Display Tracer option
 You will find a pop-up Enter
 Here you will find a screen with following fields
1. Duration
2. Object name
3. Operation
4. Number of records
5. Statement

Duration -------- stores the time taken by a statement


Object name --- specifies the table name
Operation ------ specifies type of operation done on a SELECT statement
No of records-- specifies number of records
Statement ------ specifies the skeleton of SELECT statement in your program
Rohini kumar
SAP-ABAP 321

Double click on Object Name ---------- it will show the table details specified in data dictionary
(number of records, type of table…………….etc)

Select Index Fields option ---------- here you will find indexes created in that table

Select Trace List ----- Summarized Trace by SQL Statement --------- here you will find
screen of summarized information of all executions on database table

Select Display Detailed Trace List (F7) --------- here you will find a screen of all summarized
information of all SELECT statements operated in your program

Note:
In real time SQL Tracer is used for identifying
1. The tables
2. The time taken by tables for a specific database operation, based on this we can
identifying whether a table can be Buffered (or) Not

Rohini kumar
SAP-ABAP 322

Runtime Analysis: SE38


 Go to SE38
 Program: any program name
 Execute
 Provide Input values
 Execute
 Back
 Back
 Scroll down to bottom select Evaluate
 You will find a graph which shows the execution of a program in Micro Seconds

It always Green
APPLICATION SERVER
Always Green DATABASE SERVER
It may Red (or)
Green ABAP PROGRAM

0 1 2 3 4 5

 Back
 Tips & Tricks
 Expand SQL Interface option
 Double click on Select With Select List
 Select Measure Run Time option

Rohini kumar
SAP-ABAP 323

ABAP Examples: SE38


 Go to SE38
 Environment ----- Examples -------ABAP Examples
 Here you will find topic wise examples

ABAP Documentation: SE38


 Go to SE38
 Program: any program name
 Change
 Place Cursor on any keyword
 Press F1
 Here you will find documentation for that key word

Rohini kumar
SAP-ABAP 324

Extended Program Check (EPC): SLIN


It specifies Internal Errors, Warnings, Messages & Obsolete statements of a program

Example:
 Go to SLIN (or)
 Go to SE38
 Program: any program name
 Program ------ Check ------ Extended Program Check
 Select last 4 check boxes
 Select Execute (F8)

Note:
Try to maintain all options (Internal Errors, Warnings & Messages) as per as possible zeros

Rohini kumar
SAP-ABAP 325

Code Inspector (CI): SCI


It will inspect your code comprehensively & it will check
1. Performance Checks
2. Security Checks
3. Syntax Checks
4. User Interface
5. Programming Guidelines

Example:
 Go to SCI
 Provide Object Sel Name: ZOBJ
 Create
 Save
 Back
 Provide Check Variant Name: ZVAR
 Create
 Select General Checks, Performance Checks, Syntax Check Generation, Programming
Convention & Internal Performance Test
 Save
 Back
 Provide Inspection Name: ZINS
 Create
 Select Single: Program: ZSD_SALES_REGISTER
 Check Variant: ZVAR
 Save
 Execute (F8)
 Results (shift + F6)

Rohini kumar
SAP-ABAP 326

GET RUN TIME FIELD keyword:


It returns the execution time for each loop pass with in LOOP………ENDLOOP

Example:
DATA t1 TYPE I.

DO 10 TIMES.
GET RUN TIME FIELD t1.
WRITE:/ t1.
ENDDO.

 Activate
 Execute

WAIT UP TO <n> SECONDS keyword:


 It waits for ‘n’ seconds then it will perform execution
 This keyword we are using for Mail Sending Reports for wait time

Example:

WAIT UP TO 100 SECONDS.

Rohini kumar
SAP-ABAP 327

Performance Tuning:

Rohini kumar
SAP-ABAP 328

Creating Custom Logical Database:


 Go to SLDB
 Logical Database: ZLD_SD
 Create
 Short Text: Logical Database
 Enter
 Local Object
 Name of Root Node: KNA1
 Text: KNA1 Table
 Database Table: KNA1
 Enter
 Select KNA1
 Insert Node
 Node Name: VBAK
 Text: VBAK Table
Database Table: VBAK
 Execute (F5)
 Save
 Back
 Selections (radio button)
 Change
 Yes
 Enter
 Remove comment for
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.

 Activate
 Back
 Database Program
 Change
 Yes
 Double click on 1st INCLUDE DBZLD_SDNXXX
 You will find 4 includes, double click on 1st include (DBZLD_SDN001)
 Remove 1st comment (SELECT * FROM KNA1)
 Remove 4th comment (WHERE kunnr IN s_kunnr)
 Remove comment for ENDSELECT
 Activate
 Back

 Double click on 2nd INCLUDE


 You will find 4 includes, double click on 1st include (DBZLD_SDN001)
Rohini kumar
SAP-ABAP 329

 Remove 1st comment (SELECT * FROM KNA1)


 Remove 4th comment (WHERE kunnr IN s_kunnr)
 Remove comment for ENDSELECT
 Activate

 Go to SE38
 Program: ZCALL_LDB
 Create
 Title: Calling LDB program
 Type: Executable Program
 Logical Database: ZLD_SD
 Enter

TABLES KNA1.
GET KNA1.
WRITE:/10 kna1-kunnr,
30 kna1-name1,
50 kna1-ort01.

 Activate
 Execute

Rohini kumar
SAP-ABAP 330

Assignment-1:
*** Material Ageing Report

Input:
S_matnr
S_werks
S_budat

Output:
Material code
Material description
Last consumption date
0 to 30 days (A30)
31 to 60 days (A60)
61 to 90 days (A90)
91 to 120 days (A120)
121 to 150 days (A150)
151 to 180 days (A180)
>180 days (A181)

Tables:
MKPF
MSEG
MARA
MAKT

Solution:

Rohini kumar
SAP-ABAP 331

Assignment-2:
Packing Cost Material Report

Input:
S_matnr
S_werks

Output:
Header Data:
Material code
Material description

Item Data:
Bom component
Bom component description
Unit of measurement
Price
Quantity

Tables:
MAST
STAS
MAKT
MBEW

Processing Logic:
1. Get matnr stlnr stlal from mast based on input
2. Get stlnr stlal from stas by passing stlal of mast & stlnr of mast where stlty EQ ‘m’
3. Get stlnr idnrk meins menge from stop by passing stlnr of stas & stlkn of stas where
stlty EQ ‘m’
4. Get matnr verpr from mbew by passing matnr of mast where bwkey IN s_werks
5. Get matnr maktx from makt by passing matnr of mast & spras EQ ‘EN’
6. Get matnr maktx from makt by passing idnrk of stop & spras EQ ‘EN’

Solution:

Rohini kumar
SAP-ABAP 332

Overview of Reports:
Interview Topics:
1. More than 50 objects
2. System landscape
3. Objects (Ex: Material Ageing Report)
3.1. Inputs
3.2. Outputs
3.3. Tables & Fields
4. Business Process Flows (Ex: MM)
5. Events
5.1. Differences between Events
5.2. Flow of Events
5.3. Usage of Events
6. ALV Reporting
6.1. Field catalogs
6.2. Export & Import parameters
6.3. Function modules
6.4. Blocked ALV
6.5. Hierarchal Sequential ALV
6.6. Interactive ALV

Flow of Events:
 Initialization
 At selection screen
 Start of selection
 End of selection
 Top of page
 Top of page during line selection
 End of page
 At user command

Rohini kumar
SAP-ABAP 333

Object Oriented Programming (or) Object Oriented ABAP


Difference between Structured Programming & Object Oriented Programming:
Structured Programming Object Oriented Programming
1. Not Reusable 1. Reusable
2. Not based on real life 2. Based on real life
(not user friendly)
3. No data security 3. High data security
4. No exception handling 4. Exception handling

Features of Object Oriented Programming:


1. Inheritance
2. Polymorphism
3. Abstraction
4. Encapsulation

Inheritance:
Creating new objects from existing object is called inheritance

Example:
DATA it_kna1 TYPE TABLE OF KNA1.

Polymorphism:
An identical object behaves differently in different different locations. This concept is called
polymorphism

Example:
VBAK LIKP VBRK

vbeln vbeln vbeln


(sales order) (delivery document) (invoice number)

Abstraction:
Hiding the implementation details is called abstraction
Example:
Function module, Include, Sub routine

Encapsulation:
 In real world every object acts as a capsule of data
 Every object hides the data in such a way that outside world cannot access it.
 Encapsulation is achieved from abstraction
Rohini kumar
SAP-ABAP 334

Class:
 Class is a template based on which objects are created
 All the features (Methods) of an object is encapsulated within a class
 As class is a template memory is not allocated by system to a class

Object:
 It is real time entity
 It is always created based on a class (object is an instance of a class)
 As object is a real time entity memory is allocated by system to an object
 Every object holds data in such a way that outside world cannot access

Access Specifiers:
1. Private
2. Protected
3. Public

Private:
Attributes declared under private access specifier can be access only by the methods of that
particular class

Protected:
Attributes declared under protected access specifier can be access by the methods of base class
as well as derived class

Public:
Attributes declared under public access specifier can be access by any object in your program

Note:
Methods should be declared under public access specifier

Types of Classes:
1. Local class
2. Global class
3. Exception class
4. Unit Test class
5. Persistent class

Rohini kumar
SAP-ABAP 335

Section of a Class:
1. Class Definition
2. Class Implementation
3. Class Execution
Class Definition:
Attributes & Methods are defined under this section

Syntax:
CLASS <class name> DEFINITION.

Example:
CLASS cl_abc DEFINITION.

PUBLIC SECTION.
METHOD: get_data,
combine_data,
display_data.

PRIVATE SECTION.
DATA: var1,
var2.

PROTECTED SECTION.
DATA: var3,
var4.

ENDCLASS.

Class Implementation:
Methods are implemented under this section

Syntax:
CLASS <class name> IMPLEMENTATION.

Example:
CLASS cl_abc IMPLEMENTATION.

METHOD get_data.
------------
------------
ENDMETHOD.

Rohini kumar
SAP-ABAP 336

METHOD combine_data.
------------
------------
ENDMETHOD.
METHOD display_data.
------------
------------
ENDMETHOD.

ENDCLASS.

Class Execution:
Under this section
1. Objects are defined
2. Objects are created
3. Methods are called

Example:
DATA obj TYPE REF TO cl_abc.

CREATE OBJECT obj.

CALL METHOD: obj->get_data,


obj->combine_data,
obje->display_data.

Rohini kumar
SAP-ABAP 337

Requirement:
Statement of Account based on Customer

Input:
Customer code
Company code
Special G/L indicator
Accounting document number
Posting date

Output:
Customer number
Customer name
Accounting document number
Document date
Document type
Reference document number
Debit
Credit
Over due -------- Total
Solution:
ZFI_STATEMENT_ACCOUNT

TABLES: KNA1, BSID.

TYPE-POOLS SLIS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_kunnr FOR kna1-kunnr,
s_bukrs FOR bsid-bukrs,
s_umskz FOR bsid-umskz,
s_belnr FOR bsid-belnr,
s_budat FOR bsid-budat.
SELECTION-SCREE: END OF BLOCK b1.

CLASS cl_overdue DEFINITION.

PUBLIC SECTION.

METHODS: get_bsid,
combine_data,
combine_data1,
Rohini kumar
SAP-ABAP 338

fill_cat,
layout,
display_data.

PRIVATE SECTION.

TYPES: BEGIN OF ty_bsid,


kunnr TYPE kunnr,
name1 TYPE name1,
belnr TYPE belnr,
blart TYPE blart,
bldat TYPE bldat,
xblnr TYPE xblnr,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
END OF ty_bsid.

TYPES: BEGIN OF ty_final,


kunnr TYPE kunnr,
name1 TYPE name1,
belnr TYPE belnr,
blart TYPE blart,
bldat TYPE bldat,
xblnr TYPE xblnr,
shkzg TYPE shkzg,
debit TYPE dmbtr,
credit TYPE dmbtr,
due TYPE dmbtr,
line_color(4),
END OF ty_final.

DATA: wa_bsid TYPE ty_bsid,


wa_final TYPE ty_final,
wa_final1 TYPE ty_final,
it_bsid TYPE TABLE OF ty_bsid,
it_final TYPE TABLE OF ty_final,
it_final1 TYPE TABLE OF ty_final.

DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV,


WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

Rohini kumar
SAP-ABAP 339

ENDCLASS.

CLASS cl_overdue IMPLEMENTATION.

METHOD get_bsid.
SELECT kna1~kunnr kna1~name1 bsid~belnr bsid~blart bsid~bldat bsid~xblnr
bsid~shkzg bsid~dmbtr INTO TABLE it_bsid FROM BSID INNER JOIN KNA1
ON bsid~kunnr = kna1~kunnr
WHERE bsid~kunnr IN s_kunnr
AND bsid~umskz IN s_umskz
AND bsid~budat IN s_budat
AND bsid~bukrs IN s_bukrs
AND bsid~belnr IN s_belnr.
ENDMETHOD.

METHOD combine_data.
SORT it_bsid BY kunnr.
LOOP AT it_bsid INTO wa_bsid.
wa_final-kunnr = wa_bsid-kunnr.
wa_final-name1 = wa_bsid-name1.
wa_final-xblnr = wa_bsid-xblnr.
wa_final-belnr = wa_bsid-belnr.
wa_final-bldat = wa_bsid-bldat.
wa_final-blart = wa_bsid-blart.

IF wa_bsid-shkzg = ‘H’.
wa_final-credit = (-1) * wa_bsid-dmbtr.
ELSE.
wa_final-debit = wa_bsid-dmbtr.
ENDIF.

wa_final-due = wa_final-debit + wa_final-credit.

APPEND wa_final TO it_final.

CLEAR wa_final.

ENDLOOP.

ENDMETHOD.

METHOD combine_data1.
Rohini kumar
SAP-ABAP 340

SORT it_final BY kunnnr.

LOOP AT it_final INTO wa_final.

AT NEW kunnr.
MOVE wa_final-kunnr TO wa_final1-kunnr.
APPEND wa_final1 TO it_final1.
CLEAR wa_final1.
ENDAT.

wa_final1-name1 = wa_final-name1.
wa_final1-belnr = wa_final-belnr.
wa_final1-bldat = wa_final-bldat.
wa_final1-xblnr = wa_final-xblnr.
wa_final1-blart = wa_final-blart.
wa_final1-debit = wa_final-debit.
wa_final1-credit = wa_final-credit.
wa_final1-due = wa_final-due.

APPEND wa_final1 TO it_final1.

CLEAR wa_final1.

AT END OF kunnr.
SUM.
wa_final1-due = wa_final-due.
wa_final1-kunnr = wa_final-‘Total’.
wa_final1-line_color = ‘C510’.

APPEND wa_final1 TO it_final1.

CLEAR wa_final1.
ENDAT.

AT LAST.
SUM.
wa_final1-due = wa_final-due.
wa_final1-kunnr = wa_final-‘Grand Total’.
wa_final1-line_color = ‘C510’.

APPEND wa_final1 TO it_final1.

Rohini kumar
SAP-ABAP 341

CLEAR wa_final1.
ENDAT.

ENDLOOP.
ENDMETHOD.

METHOD fill_cat.
wa_fcat-fieldname = ‘KUNNR’.
Wa_fcat-seltext_m = ‘Customer Code’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘NAME1’.
Wa_fcat-seltext_m = ‘Customer Name’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘BELNR’.
Wa_fcat-seltext_m = ‘Accounting Document Number’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘BLDAT’.
Wa_fcat-seltext_m = ‘Document Date’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘BLART’.
Wa_fcat-seltext_m = ‘Document Type’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘XBLNR’.
Wa_fcat-seltext_m = ‘Reference Document Number’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘DEBIT’.
Wa_fcat-seltext_m = ‘Debit’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘CREDIT’.
Wa_fcat-seltext_m = ‘Credit’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘DUE’.
Wa_fcat-seltext_m = ‘Over Due’.
APPEND wa_fcat TO it_fcat.
Rohini kumar
SAP-ABAP 342

ENDMETHOD.

METHOD layout.
wa_layout-zebra = ‘X’.
wa_layout-colwidth_optimize = ‘X’.
wa_layout-info_fieldname = ‘LINE_COLOR’.
ENDMETHOD.

METHOD display_data.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
IT_FIELDCAT = IT_FCAT.
IS_LAYOUT = WA_LAYOUT
I_SAVE = ‘X’
TABLES
T_OUTTAB = IT_FINAL1.
ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

DATA obj TYPE REF TO cl_overdue.

CREATE OBJECT obj.

CALL METHOD: obj->get_bsid,


obj->combine_data,
obj->combine_data1,
obj->fill_cat,
obj->layout,
obj->display_data.

Rohini kumar
SAP-ABAP 343

27-10-2014

Local Class:
In local class all the 3 sections of a class are maintained in ABAP Editor

BSID & BSAD Table:


BSID holds open items data & BSAD holds cleared items data. The fields will be same

Fields:
1. BUKRS ---------- company code
2. KUNNR --------- customer code
3. UMSKZ --------- special G/L indicator
4. ** ZUONR ------ assignment (or) bill number
5. GJAHR ---------- financial year
6. BELNR ---------- accounting document number
7. BUDAT --------- posting date
8. BLDAT --------- bill date
9. XBLNR --------- reference document number
[Link] --------- document type
[Link] --------- debit (s) / credit (h) indicator
12.**DMBTR ----- amount in local currency
[Link] -------- G/L amount
14.**ZFBDT ------ base line date for due date calculation
[Link] -------- payment terms

Rohini kumar
SAP-ABAP 344

Inheritance:
Creating new objects from existing objects is called inheritance

Syntax for declaring Derived Class:


CLASS <cl_derived> DEFINITION INHERITING FROM <cl_base>.
-----------
-----------
ENDCLASS.

Requirement:
Vendor Aging Report
Vendor aging report is prepared by customer based on respective vendors

Input:
S_lifnr
S_prctr
S_umskz
S_bukrs

Output:
Vendor code
Vendor name
0-30 days
31-60 days
61-90 days
91-120 days
121-150 days
151-180 days
>-180 days
Total amount

Solution:
ZFI_VENDOR_AGING_REPORTS

TYPE-POOLS SLIS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr,
s_prctr FOR bsik-prctr,
s_umskz FOR bsik-umskz,
s_bukrs FOR bsik-bukrs.
SELECTION-SCREEN: END OF BLOCK b1.
Rohini kumar
SAP-ABAP 345

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.


PARAMETERS keydate TYPE budat.
SELECTION-SCREEN: END OF BLOCK b2.

INITIALIZATION.
keydate = SY-DATUM.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘keydate’.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

CLASS cl_base DEFINITION.


PUBLIC SECTION.
METHODS: get_bsik,
combine_data.

PROTECTED SECTION.
TYPES: BEGIN OF ty_bsik,
belnr TYPE belnr_d,
bldat TYPE bldat,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
lifnr TYPE lifnr,
END OF ty_bsik.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
name1 TYPE name1,
END OF ty_lfa1.

TYPES: BEGIN OF ty_final,


lifnr TYPE lifnr,
name1 TYPE name1,
a30 TYPE dmbtr,
a60 TYPE dmbtr,
a90 TYPE dmbtr,
a120 TYPE dmbtr,
a150 TYPE dmbtr,
a180 TYPE dmbtr,
Rohini kumar
SAP-ABAP 346

ag180 TYPE dmbtr,


total TYPE dmbtr,
END OF ty_final.

DATA n TYPE I.

DATA: wa_lfa1 TYPE ty_lfa1,


wa_bsik TYPE ty_bsik,
wa_bsik1 TYPE ty_bsik,
wa_final TYPE ty_final,
it_lfa1 TYPE TABLE OF ty_lfa1,
it_bsik TYPE TABLE OF ty_bsik,
it_bsik1 TYPE TABLE OF ty_bsik,
it_final TYPE TABLE OF ty_final,
it_final1 TYPE TABLE OF ty_final.

DATA: wa_fcat TYPE SLIS_FIELDCAT_ALV,


wa_layout TYPE SLIS_LAYOUT_ALV,
it_fcat TYPE SLIS_T_FIELDCAT_ALV.

ENDCLASS.

CLASS cl_base IMPLEMENTATION.

METHOD get_bsik.
SELECT belnr bldat shkzg dmbtr lifnr FROM BSIK INTO TABLE it_bsik
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND prctr IN s_prctr
AND umskz IN s_umskz
AND bldat < keydate.

SELECT belnr bldat shkzg dmbtr lifnr FROM BSAK APPENDING TABLE it_bsik
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND prctr IN s_prctr
AND umskz IN s_umskz
AND bldat < keydate
AND augdt > keydate.

IF NOT it_bsik IS INITIAL.


SELECT lifnr name1 FROM LFA1 INTO TABLE it_lfa1
Rohini kumar
SAP-ABAP 347

FOR ALL ENTRIES IN it_bsik WHERE lifnr = it_bsik-lifnr.


ENDIF.
ENDMETHOD.

METHOD combine_data.
SORT it_bsik BY lifnr.
LOOP AT it_lfa1 INTO wa_lfa1.
LOOP AT it_bsik INTO wa_bsik WHERE lifnr = wa_lfa1-lifnr.

IF wa_bsik-zhkzg = ‘H’.
wa_bsik-dmbtr = (-1) * wa_bsik-dmbtr.
ENDIF.

n = keydate - wa_bsik-bldat.

IF n = 0.
CONTINUE.
ENDIF.

wa_final-a30 = wa_final-a30 + wa_bsik-dmbtr.

ELSEIF n GT 30 AND n LE 60.


wa_final-a60 = wa_final-a60 + wa_bsik-dmbtr.

ELSEIF n GT 60 AND n LE 90.


wa_final-a90 = wa_final-a90 + wa_bsik-dmbtr.

ELSEIF n GT 90 AND n LE 120.


wa_final-a120 = wa_final-a120 + wa_bsik-dmbtr.

ELSEIF n GT 120 AND n LE 150.


wa_final-a150 = wa_final-a150 + wa_bsik-dmbtr.

ELSEIF n GT 150 AND n LE 180.


wa_final-a180 = wa_final-a60 + wa_bsik-dmbtr.

ELSEIF n GT 180 .
wa_final-Ag180 = wa_final-ag180 + wa_bsik-dmbtr.

ENDIF.
ENDLOOP.

Rohini kumar
SAP-ABAP 348

wa_final-total = wa_final-a30 + wa_final-a60 + wa_final-a90 + wa_final-120 +


wa_final0150 + wa_final-a180 + wa_final-ag180.
wa_final-lifnr = wa_lfa1-lifnr.
wa_final-name1 = wa_lfa1-name1.

APPEND wa_final TO it_final.

CLEAR wa_final.

ENDLOOP.
ENDMETHOD.
ENDCLASS.

CLASS cl_derived DEFINITION INHERITING FROM cl_base.


PUBLIC SECTION.
METHODS: fill_cat,
layout,
display_data.
ENDCLASS.

CLASS cl_derived IMPLEMENTATION.


METHOD fill_cat.
wa_fcat-filename = ‘lifnr’.
wa_fcat-key = ‘x’.
wa_fcat-seltext_m = ‘vendor code’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘name1’.
wa_fcat-key = ‘x’.
wa_fcat-seltext_m = ‘vendor name’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘a30’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘0-30 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘a60’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘31-60 days’.
APPEND wa_fcat TO it_fcat.

Rohini kumar
SAP-ABAP 349

wa_fcat-filename = ‘a90’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘61-90 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘a120’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘91-120 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘a150’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘121-150 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘a180’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘151-180 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘ag180’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘> 180 days’.
APPEND wa_fcat TO it_fcat.

wa_fcat-filename = ‘total’.
wa_fcat-do_sum = ‘x’.
wa_fcat-seltext_m = ‘total amount’.
APPEND wa_fcat TO it_fcat.

ENDMETHOD.

METHOD layout.
wa_layout-zebra = ‘x’.
wa_layout-colwidth_optimize = ‘x’.
ENDMETHOD.

METHOD display_data.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = ‘X’
IS_LAYOUT = wa_layout
Rohini kumar
SAP-ABAP 350

IT_FIELDCAT = it_fcat
I_SAVE = ‘X’
TABLES
T_OUTTAB = it_final.
ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
DATA obj TYPE REF TO cl_derived.

CREATE OBJECT obj.

CALL METHOD: obj->get_bsik,


obj->combine_data,
obj->fill_cat,
obj->layout,
obj->display_data.

Rohini kumar
SAP-ABAP 351

BSIT & BSAK Tables:


BSIK holds open item data for vendor & BSAK holds cleared item data for customers

Fields:
1. LIFNR ----------- vendor code
2. BUKRS ---------- company code
3. KUNNR --------- customer code
4. UMSKZ --------- special G/L indicator
5. ** ZUONR ------ assignment (or) bill number
6. GJAHR ---------- financial year
7. BELNR ---------- accounting document number
8. BUDAT --------- posting date
9. BLDAT --------- bill date
[Link] --------- reference document number
[Link] --------- document type
[Link] --------- debit (s) / credit (h) indicator
13.**DMBTR ----- amount in local currency
[Link] -------- G/L amount
15.**ZFBDT ------ base line date for due date calculation
[Link] -------- payment terms

Rohini kumar
SAP-ABAP 352

28-10-2014
Abstract Class:
 Abstract classes are cannot be implemented
 Objects cannot be created for abstract classes
 Abstract class methods are also abstract in nature
 Derived class can implement abstract class methods by redefining the methods of abstract
class in derived class

Requirement:
Employee Salary & Attendance Details report

Input:
S_pernr --------- employee number
S_persg -------- employee group
S_persk -------- employee sub group
S_abkrs -------- payroll area
S_date --------- period
Attendance (radio button)
Salary (radio button)

Output:
For Attendance:
Employee number
Employee name
Present
Leaves
Rest
Holiday enjoyed

For Salary:
Employee number
Employee name
Date of birth
Basic salary
Da
Hra

Solution:
 Go to SE11
 Create structure YHR_SAL with following fields
Pernr

Rohini kumar
SAP-ABAP 353

Ename
Bsal
Da
Hra

 Create another structure YHR_ATTEN with following fields


Pernr
Ename
Present
El
Rest
He

 Go to SE38
 Program: ZHR_ATTEN_SAL_DETAILS
 Create
 Title: Employee salary & attendance details report
 Type: Executable Program
 Logical Database: PNP
 Enter
 Enter
 Activate program
 Back
 Attributes
 Change
 HR Report Category
 Master Data (info types): IE_P35L
 Enter
 Enter
 Source Code
 Change

TABLES: PERNR.

INFOTYPES: 0002, 0008.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_date FOR pernr-dayps.
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.


Rohini kumar
SAP-ABAP 354

PARAMETERS: p_rb1 RADIOBUTTON GROUP rg1,


p_rb2 RADIOBUTTON GROUP rg1.
SELECTION-SCREEN: END OF BLOCK b2.

DATA: p_betrg TYPE pad_amt7s,


p_lgart TYPE lgart.

CLASS cl_abstract DEFINITION ABSTRACT.

PUBLIC SECTION.
METHODS: get_emp ABSTRACT IMPORTING pernr TYPE person,
display_data ABSTRACT.

PROTECTED SECTION.
DATA: wa_sal TYPE yhr_sal,
wa_atten TYPE yhr_atten,
it_sal TYPE TABLE OF yhr_sal,
it_atten TYPE TABLE OF yhr_atten,
gwa_tim TYPE hrf_tim_b2,
wa_ph TYPE ptr_f_psp,
wa_ab TYPE ptr_f_ab,
wa_tp TYPE ptr_f_tp,
rest TYPE I,
present TYPE I,
el TYPE I,
wrk TYPE I,
he TYPE I.

ENDCLASS.

CLASS cl_atten DEFINITION INHERITING FROM cl_abstract.

PUBLIC SECTION.
METHODS: get_emp REDEFINITION,
display_data REDEFINITION.

ENDCLASS.

CLASS cl_atten IMPLEMENTATION.

METHOD get_emp.
CALL FUNCTION ‘HR_FORMS_TIM_GET_B2_RESULTS’
Rohini kumar
SAP-ABAP 355

EXPORTING
Pernr = pernr
Begda = s_date-low
Endda = s_date-high
IMPORTING
Tim_b2 = gwa_tim.

LOOP AT gwa_tim-ft_psp INTO wa_psp.


IF wa_psp-ftkla EQ ‘1’.
He = he + 1.
ENDIF.

Wrk = wrk + 1.

IF wa_psp-trprog = ‘OFF’.
Rest = rest + 1.
ENDIF.

ENDLOOP.

LOOP AT gwa_tim-ft_ab INTO wa_ab.


IF wa_ab-awart EQ ‘100’.
el = el + 1.
ENDIF.
ENDLOOP.

Present = wrk - (rest + el + he).


wa_atten-pernr = pernr.
wa_atten-ename = p0002-nachn.
wa_atten-present = present.
wa_atten-el = el.
wa_atten-rest = rest.
wa_atten-he = he.

APPEND wa_atten TO it_atten.

CLEAR: rest, el, present, he, wrk, wa_atten.

ENDMETHOD.

METHOD display_data.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
Rohini kumar
SAP-ABAP 356

EXPORTING
I_STRUCTURE_NAME = ‘YHR_ATTEN’
TABLES
T_OUTTAB = it_atten.

ENDMETHOD.
ENDCLASS.

CLASS cl_sal DEFINITION INHERITING FROM cl_abrstract.

PUBLIC SECTION.
METHODS: get_emp REDEFINITION,
display_data REDEFINITION,
calc_sal,
hold_sal.

ENDCLASS.

CLASS cl_sal IMPLEMENTATION.

METHOD get_emp.
wa_sal-pernr = pernr.
wa_sal-ename = p0002-nachn.
ENDMETHOD.

METHOD calc_sal.
CASE p_lgart.
WHEN ‘MA90’.
wa_sal-bsal = p_betrg.
WHEN ‘MA80’.
wa_sal-da = p_betrg.
WHEN ‘MA70’.
wa_sal-hra = p_betrg.
ENDCASE.
ENDMETHOD.

METHOD hold_sal.
APPEND wa_sal TO it_sal.
ENDMETHOD.

METHOD display_data.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPALY’
Rohini kumar
SAP-ABAP 357

EXPORTING
I_STRUCTURE_NAME = ‘YHR_SAL’
TABLES
T_OUTTAB = it_sal.

ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
DATA: obj TYPE REF TO cl_atten,
obj1 TYPE REF TO cl_sal.

IF p_rb1 EQ ‘X’.
CREATE OBJECT obj.
ELSE.
CREATE OBJECT obj1.
ENDIF.

GET PERNR.
CHECK pernr-pernr IN s_pernr.

IF SY-SUBRC EQ 0.

IF p_rb1 EQ ‘X’.
CALL METHOD obj->get_emp
EXPORTING
Pernr = pernr-pernr.

RP_PROVIDE_FROM_LAST P0008 SPACE ‘18000101’ ‘99991231’.


(or)
REFRESH P0008[ ].
CALL FUNCTION ‘HR_READ_INFOTYPE’
EXPORTING
Pernr = pernr-pernr
Infty = ‘0008’
Begda = ‘20020101’
Endda = ‘99991231’
TABLES
Infty_tab = P0008[ ].

DO 30 TIMES VARING p_betrg FROM P0008-bet01 NEXT P0008-bet02


VARING p_lgart FROM P0008-lga01 NEXT P0008-lga02.
Rohini kumar
SAP-ABAP 358

CALL METHOD obj1->calc_sal.

ENDDO.

CALL METHOD obj1->hold_sal.

ENDIF.
ENDIF.

END-OF-SELECTION.
IF p_rb1 EQ ‘X’.
CALL METHOD obj->display_data.
ELSE.
CALL METHOD obj1->display_data.
ENDIF.

Rohini kumar
SAP-ABAP 359

Assignment:
Employee Family & Previous Employers Details Report

Input:
S_pernr
S_persg
S_abkrs
Experience (radio button)
Family (radio button)

Output:
Experience:
Employee number
Employee name
Date of birth
Previous experience
Current experience
Total experience

Family:
Employee number
Employee name
Father
Mather
Spouse
Child1
Child2

Solution:

Rohini kumar
SAP-ABAP 360

Assignment:
Employee Late Coming Report

Input:
S_pernr
S_persg
S_abkrs
S_period

Output:
Employee number
Employee name
Department
Date
In time
Late

Solution:

Rohini kumar
SAP-ABAP 361

29-10-2014
Global Class:
In global class CLASS DEFINITION & CLASS IMPLEMENTATION parts are maintained
in Class Builder (SE24) & Execution part is maintained in ABAP Editor (SE38)

Requirement:
Asset Acquisition Date Report

Input:
Asset number

Output:
Asset number
Sub asset number
Acquisition date

Tables:
ANLA

Solution:
Step-1: creating Structure & Table Type
 Go to SE11
 Data Type: ZFI_ASSET
 Create
 ** Structure
 Enter
 Short Description: Structure for Asset fields
Component Component Type
ANLN1 ANLN1
ANLN2 ANLN2
ZUGDT ZUGDT

 Activate
 Back
 Data Type: ZFI_TAB
 Create
 ** Table Type
 Enter
 Short Description: Table Type for Asset
 ** Line Type: ZFI_ASSET
 Activate

Rohini kumar
SAP-ABAP 362

Step-2: creating class definition & class implementation parts


 Go to SE24
 Object Type: ZCL_ASSET_CLASS
 Create
 Description: Asset Class
 Enter
 Enter
 Attributes tab
Attribute level visibility associated type
IT_ANLA INSTANCE PRIVATE ZFI_TAB
A_LOW INSTANCE PRIVATE ANLN1
A_HIGH INSTANCE PRIVATE ANLN1
WA_FCAT INSTANCE PRIVATE SLIS_FIELDCAT_ALV
WA_LAYOUT INSTANCE PRIVATE SLIS_LAYOUT_ALV
IT_FCAT INSTANCE PRIVATE SLIS_T_FIELDCAT_ALV

 Methods tab
Method level visibility description
CONSTRUCTOR INSTANCE PUBLIC default method

 Place cursor on constructor


 Parameters
Parameter associated type description
ASSET_LOW ANLN1 importing parameter
ASSET_HIGH ANLN1 importing parameter

 Methods
 Double click on CONSTRUCTOR
 Yes
 Place cursor between METHOD…………..ENDMETHOD
A_LOW = ASSET_LOW.
A_HIGH = ASSET_HIGH.

 Activate
 Back
Method level visibility description
GET_DATA INSTANCE PUBLIC method for getting data

 Double click on GET_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

Rohini kumar
SAP-ABAP 363

SELECT anln1 anln2 zugdt FROM ANLA INTO TABLE it_anla


WHERE anln1 BETWEEN a_low AND a_high.

 Activate
 Back
Method level visibility description
GET_DATA INSTANCE PUBLIC method for getting data

 Double click on GET_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

SELECT anln1 anln2 zugdt FROM ANLA INTO TABLE it_anla


WHERE anln1 BETWEEN a_low AND a_high.

 Activate
 Back
Method level visibility description
LAYOUT INSTANCE PUBLIC method for layout management

 Double click on LAYOUT


 Yes
 Place cursor between METHOD…………..ENDMETHOD

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.

 Activate
 Back
Method level visibility description
FILL_CAT INSTANCE PUBLIC method for field catalogs

 Double click on FILL_CAT


 Yes
 Place cursor between METHOD…………..ENDMETHOD

WA_FCAT-FIELDNAME = ‘ANLN1’.
WA_FCAT-SELTEXT_M = ‘Asset Number’.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘ANLN2’.
WA_FCAT-SELTEXT_M = ‘Sub Asset Number’.
Rohini kumar
SAP-ABAP 364

APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-FIELDNAME = ‘ZUGDT’.
WA_FCAT-SELTEXT_M = ‘Acquisition Date’.
APPEND WA_FCAT TO IT_FCAT.

 Activate
 Back
Method level visibility description
DISPLAY_DATA INSTANCE PUBLIC method for displaying output list

 Double click on DISPLAY_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’


EXPORTING
IT_FIELDCAT = IT_FCAT
IS_LAYOUT = WA_LAYOUT
TABLES
T_OUTTAB = IT_ANLA.

 Activate
 Back
 Activate

Step-3: class execution part


 Go to SE38
 Program: ZFI_ASSET_DETAILS
 Create
 Title: asset acquisition details
 Type: Executable Program
 Enter
 Enter

TABLES: ANLA.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_anln1 FOR anal-anln1.
SELECTION-SCREEN: END OF BLOCK b1.

DATA obj TYPE REF TO ZCL_ASSET_CLASS.


Rohini kumar
SAP-ABAP 365

 Pattern
 ABAP object patterns
 Enter
 Create Object
 Instance: obj
 Class: ZCL_ASSET_CLASS
 Enter

Asset_low = s_anln1-low.
Asset_high = s_anln1-high.

 Pattern
 ABAP object patterns
 Enter
 Call Method
 Instance: obj
 Class: ZCL_ASSET_CLASS
 Method: get_data
 Enter

CALL METHOD: obj->get_data,


obj->layout,
obj->fill_cat,
obj->display_data.

 Activate
 Execute
 Provide input
 Execute

Rohini kumar
SAP-ABAP 366

30-10-2014
Constructor:
 Constructor is a default method in Object Oriented ABAP
 It is called automatically whenever object is created
 Use this method for initializing values in Object Oriented ABAP

Rohini kumar
SAP-ABAP 367

Assignment:
Asset Register Report

Input:
S_anln1
S_bukrs

Output:
Asset number (anln1)
Sub asset number (anln2)
Company code (bukrs)
Plant (werks)
Capitalization date (aktlv)
Asset description (txt50)
Acquisition value (kansw)
Accumulated depreciated (knafa)
Asset location (start)
Asset class (anlkl)
Quantity (menge)
Unit of measurement (meins)
Currency (waers)

Tables:
ANLC
ANLA
ANLB
T499S
T093B

Solution:

Rohini kumar
SAP-ABAP 368

Assignment:
PR to GR Report

Input:
S_pr number
S_pr date

Output:
Pr number
Pr quantity
Item text
Vendor number
Vendor name
Material number
Material description
Po number
Po quantity
Gr number
Gr quantity
Pending pr
Pending po

Solution:

Rohini kumar
SAP-ABAP 369

Interface Functionality:
 It is a template which extends the scope of a class & implements polymorphism
 Instances cannot be created based on interface
 Interface methods are always implemented in other class

Difference between Class & Interface:


Interface Class
1. implements polymorphism 1. Cannot implement it
2. method of interface are implemented 2. Method of a class implemented in class itself
In public section of other class
3. instances cannot be create 3. Instances can be created

Requirement:
Input:
S_sales order
Deliver (radio button)
Invoice (radio button)

Solution:
Step-1: creating Structure & Table Type
 Go to SE11
 Data Type: ZSD_LIKP
 Create
 ** Structure
 Enter
 Short Description: Structure for Delivery fields
Component Component Type
VBELN VBELN_VF
LFDAT LFDAT
MATNR MATNR
LFIMG LFIMG

 Currency / Quantity Fields


Reference Table Reference Field
EKPO MEINS

 Activate
 Back
 Data Type: ZSD_LIKPTAB
 Create
 ** Table Type
 Enter
Rohini kumar
SAP-ABAP 370

 Short Description: Table Type for LIKP


 ** Line Type: ZSD_LIKP
 Activate

 Data Type: ZSD_VBRK


 Create
 ** Structure
 Enter
 Short Description: Structure for Invoice fields
Component Component Type
VBELN VBELN_VF
FKDAT FKDAT
MATNR MATNR
MAKTX MAKTX
FKIMG FKIMG
NETWR NETWR

 Currency / Quantity Fields


Reference Table Reference Field
VBAP VRKME
T001 WAERS

 Activate
 Back
 Data Type: ZSD_VBRKTAB
 Create
 ** Table Type
 Enter
 Short Description: Table Type for VBRK
 ** Line Type: ZSD_VBRK
 Activate

Step-2: creating class definition & class implementation parts


 Go to SE24
 Object Type: ZINT_DEL_INV
 Create
 ** Interface
 Description: interface
 Enter
 Enter
 Attributes tab
Attribute level visibility associated type
Rohini kumar
SAP-ABAP 371

WA_VBELN INSTANCE PUBLIC VBELN

 Methods tab
Method level visibility description
GET_DATA INSTANCE PUBLIC method for getting data
DISPLAY_DATE INSTANCE PUBLIC method for displaying data

 Place cursor on get_data


 Parameters
Parameter type associated type description
P_VBELN importing VBELN importing parameter

 Activate
 Back
 Object Type: ZCL-DEL_CLASS
 Create
 Description: Delivery class
 Enter
 Enter
 Attributes tab
Attribute level visibility associated type
IT_LIKP INSTANCE PRIVATE ZSD_LIKPTAB

 Interfaces
Interface methods description
ZINT_DEL_INV

 Methods
 Double click on GET_DATA
 Yes
 Place cursor between METHOD…………..ENDMETHOD

SELECT vbeln FROM VBFA INTO zint_del_inv~wa_vbeln


WHERE vbelv = p_vbelv
AND vbtyp_n = ‘J’.

IF zint_del_inv~wa_vbeln IS NOT INITIAL.


SELECT likp~vbeln likp~lfdat
lips~matnr lips~lfimg INTO TABLE it_likp
FROM LIKP INNER JOIN LIPS
ON likp~vbeln = lips~vbeln
WHERE likp~vbeln = zint_del_inv~wa_vbeln.
Rohini kumar
SAP-ABAP 372

ENDIF.

 Activate
 Back
Method level visibility description
DISPLAY_DATA INSTANCE PUBLIC method for displaying output list

 Double click on DISPLAY_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


EXPORTING
I_STRUCTURE_NAME = ‘ZSD_LIKP’
TABLES
T_OUTTAB = IT_LIKP.

 Activate
 Back
 Activate

 Object Type: ZCL-INV_CLASS


 Create
 Description: Invoice class
 Enter
 Enter
 Attributes tab
Attribute level visibility associated type
IT_VBRK INSTANCE PRIVATE ZSD_VBRKTAB

 Interfaces
Interface methods description
ZINT_DEL_INV

 Methods
 Double click on GET_DATA
 Yes
 Place cursor between METHOD…………..ENDMETHOD

SELECT vbeln FROM VBFA INTO zint_del_inv~wa_vbeln


WHERE vbelv = p_vbelv
AND vbtyp_n = ‘M’.
Rohini kumar
SAP-ABAP 373

IF zint_del_inv~wa_vbeln IS NOT INITIAL.


SELECT vbrk~vbeln vbrk~fkdat
vbrp~matnr vbrp~arktx
vbrp~fkimg vbrp~netwr INTO TABLE it_vbrk
FROM VBRK INNER JOIN VBRP
ON vbrk~vbeln = vbrp~vbeln
WHERE vbrk~vbeln = zint_del_inv~wa_vbeln.
ENDIF.

 Activate
 Back
Method level visibility description
DISPLAY_DATA INSTANCE PUBLIC method for displaying output list

 Double click on DISPLAY_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


EXPORTING
I_STRUCTURE_NAME = ‘ZSD_VBRK’
TABLES
T_OUTTAB = IT_VBRK.

 Activate
 Back
 Activate

Step-3: class execution part


 Go to SE38
 Program: ZSD_DEL_BILLING_DETAILS
 Create
 Title: invoice details
 Type: Executable Program
 Enter
 Enter

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETERS p_order TYPE vbeln.
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.


Rohini kumar
SAP-ABAP 374

PARAMETERS: p_rb1 RADIOBUTTON GROUP rg1,


p_rb2 RADIOBUTTON GROUP rg1.
SELECTION-SCREEN: END OF BLOCK b2.

DATA: obj1 TYPE REF TO ZCL_DEL_CLASS,


obj2 TYPE REF TO ZCL_DEL_CLASS.

CREATE OBJECT: obj1,


obj2.

IF p_rb1 EQ ‘X’.
CALL METHOD obj1->zint_del_inv~get_data
EXPORTING
P_vbeln = p_order.

CALL METHOD obj1->zint_del_inv~display_data.

ELSE.
CALL METHOD obj2->zint_del_inv~get_data
EXPORTING
P_vbeln = p_order.

CALL METHOD obj2->zint_del_inv~display_data.


ENDIF.

 Activate
 Execute
 Provide input
 Execute

Rohini kumar
SAP-ABAP 375

31-10-2014
Alias:
 Go to SE24
 Object Type: ZCL_DEL_CLASS
 Change
 Aliases
Method alias name visibility
Zint_del_inv~get_data sel1 public
Zint_del_inv~display_data sel public

 Activate
 Go to SE38
 Program: ZSD_DEL_BILLING_DETAILS
 Change

Rohini kumar
SAP-ABAP 376

PP Module:
Production & Planning Module

Master Data for PP Module:


1. BOM (Bills of Materails)
2. Routing
3. Work Center

BOM:
 Every main material is having sub components (sub materials) called BOM
 Costing department should calculate main material cost as well as sub material cost also

T Codes:
CS01, CS02, CS03

Tables:
MAST, STOP, STKO

Key Field:
Stlnr

Routing:
These are the sequence of operations performed on a material in order to manufacture it

T Codes:
CA01, CA02, CA03

Tables:
PLKO, PLPO, PLMZ

Work Center:
It is a place where operations are carried out

T Codes:
CR01, CR02, CR03

Tables:
CRHD

Production Order:
In order to produce finished goods sales department have to give (or) raise production order to
production department
Rohini kumar
SAP-ABAP 377

T Codes:
CO01, CO02, CO03, COLLN

Tables:
AFKO, AFPO, AFRU

Key Field:
Aufnr

Types of Planning:
1. MRP (Material Requirement Planning)
2. Demand
3. Sales & Operations
4. Capacity

Process Flow:

Customers

Marketing

Production production inventory (or)


Planning department ware house

Vendor produce goods

Rohini kumar
SAP-ABAP 378

Event Functionality:
 In Object Oriented ABAP events will trigger & at the same time respective method will
be executed
 In Object Oriented ABAP every event is having Event Handler (Method) which is
executed whenever the event is fired

Syntax for Calling Event Handler:


SET HANDLER <object name>-><event handler name> FOR <object name>.

Requirement:
Production Details based on Production Order

Input:
P_furnance
P_plant
S_posting date

Output:
Purchase order number
Posting date
Production start date
Production end date
Material number
Production quantity

Solution:
Step-1: creating Structure & Table Type
 Go to SE11
 Data Type: ZPP_AFRU
 Create
 ** Structure
 Enter
 Short Description: Structure for Order fields
Component Component Type
AUFNR AUFNR
BUDAT BUDAT
LMNGA RU_LMNGA

 Currency / Quantity Fields


Reference Table Reference Field
EKPO MEINS

Rohini kumar
SAP-ABAP 379

 Activate
 Back
 Data Type: ZPP_AFRUTAB
 Create
 ** Table Type
 Enter
 Short Description: Table Type for AFRU
 ** Line Type: ZPP_AFRU
 Activate
 Back

 Data Type: ZPP_AFKO


 Create
 ** Structure
 Enter
 Short Description: Structure for AFKO fields
Component Component Type
AUFNR AUFNR
GSTRI CO_GSTRI
GLTRI CO_GLTRI
PLNBEZ MATNR

 Activate
 Back
 Data Type: ZPP_AFKOTAB
 Create
 ** Table Type
 Enter
 Short Description: Table Type for AFKO
 ** Line Type: ZPP_AFKO
 Activate
 Back

 Data Type: ZPP_FINAL


 Create
 ** Structure
 Enter
 Short Description: Structure for FINAL fields
Component Component Type
AUFNR AUFNR
BUDAT BUDAT
GSTRI CO_GSTRI
Rohini kumar
SAP-ABAP 380

GLTRI CO_GLTRI
PLNBEZ MATNR
LMNGA RU_LMNGA

 Currency / Quantity Fields


Reference Table Reference Field
EKPO MEINS

 Activate
 Back
 Data Type: ZPP_FINALTAB
 Create
 ** Table Type
 Enter
 Short Description: Table Type for FINAL
 ** Line Type: ZPP_FINAL
 Activate
 Back

Step-2: creating class definition & class implementation parts


 Go to SE24
 Object Type: ZINT_PROD_CLASS
 Create
 Description: class for production details
 Enter
 Attributes tab
Attribute level visibility associated type
WA_AFRU INSTANCE PRIVATE ZPP_AFRU
WA_AFKO INSTANCE PRIVATE ZPP_AFKO
WA_FINAL INSTANCE PRIVATE ZPP_FINAL
IT_AFRU INSTANCE PRIVATE ZPP_AFRUTAB
IT_AFKO INSTANCE PRIVATE ZPP_AFKOTAB
IT_FINAL INSTANCE PRIVATE ZPP_FINALTAB
WA_LAYOUT INSTANCE PRIVATE SLIS_LAYOUT_ALV

 Events tab
Event level visibility Description
CHECK_DATA INSTANCE PUBLIC checking data

 Methods tab
Method level visibility description
NO_DATA INSTANCE PUBLIC method for event
Rohini kumar
SAP-ABAP 381

 *** Detail View


 Event Handler For (check it)
 Class / Interface: ZCL_PROD_CLASS
 Event: CHECK_DATA
 Enter

Method level visibility description


GET_AFRU INSTANCE PUBLIC getting afru data

 Place cursor on GET_AFRU


 Parameters
Parameter type associated type description
P_RASCH importing RUEARSCHLU importing parameter
P_WERKS importing WERKS_D importing parameter
BUDAT_LOW importing BUDAT importing parameter
BUDAT_HIGH importing BUDAT importing parameter

 Methods
 Double click on GET_AFRU
 Yes
 Place cursor between METHOD………..ENDMETHOD

SELECT afru~aufnr afru~budat afru~lmnga INTO TABLE it_afru FROM AFRU


INNER JOIN CRHD
ON afru~arbid = crhd~objid
WHERE chrd~rasch = p_rasch
AND chrd~weks = p_werks
AND afru~budat BETWEEN budat_low AND budat_high.

IF SU-SUBRC NE 0.
RAISE EVENT CHECK_DATA.\
ENDIF.

 Activate
 Back
 Double click on NO_DATA
 Place cursor between METHOD………..ENDMETHOD

MESSAGE S000(RGS) WITH ‘No data found’.

 Activate
 Back
Rohini kumar
SAP-ABAP 382

Method level visibility description


GET_AFKO INSTANCE PUBLIC method for getting afko data

 Double click on GET_AFKO


 Yes
 Place cursor between METHOD…………..ENDMETHOD

IF IS NOT it_afru INITIAL.


SELECT aufnr gstri gltri plnbez INTO it_afko FROM AFKO
FOR ALL ENTRIES IN it_afru
WHERE aufnr = it_afru-aufnr.
ENDIF.

 Activate
 Back

Method level visibility description


COMBINE_DATA INSTANCE PUBLIC method for combining data

 Double click on COMBINE_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

LOOP AT it_afru INTO wa_afru.


wa_final-aufnr = wa_afru-aufnr.
wa_final-budat = wa_afru-budat.
wa_final-lmnga = wa_afru-lmnga.

READ TABLE it_afko INTO wa_afko WITH KEY aufnr = wa_afru-aufnr.


wa_final-gstri = wa_afko-gstri.
wa_final-gltri = wa_afko-gltri.
wa_final-plnrez = wa_afko-plnrez.

APPEND wa_final TO it_final.

ENDLOOP.

 Activate
 Back

Method level visibility description


LAYOUT INSTANCE PUBLIC method for layout management
Rohini kumar
SAP-ABAP 383

 Double click on LAYOUT


 Yes
 Place cursor between METHOD…………..ENDMETHOD

WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-COWIDTH_OPTIMIZE = ‘X’.

 Activate
 Back

Method level visibility description


DISPLAY_DATA INSTANCE PUBLIC method for displaying data

 Double click on DISPLAY_DATA


 Yes
 Place cursor between METHOD…………..ENDMETHOD

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’


EXPORTING
I_STRUCTURE_NAME = ‘ZPP_FINAL’
IS_LAYOUT = WA_LAYOUT
TABLES
T_OUTTAB = ZPP_FINALTAB

 Activate
 Back
 Activate

Step-3: class execution part


 Go to SE38
 Program: ZPP_PRODUCTION_DETAILS
 Create
 Title: production details
 Type: Executable Program
 Enter
 Enter

TABLES AFRU.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETERS: p_rasch TYPE ruearschlu,
p_werks TYPE werks_D.
Rohini kumar
SAP-ABAP 384

SELECTION-SCREEN: END OF BLOCK b1.

DATA: obj TYPE REF TO ZCL_PROD_CLASS.

CREATE OBJECT obj.

SET HANDLER obj->no_data obj.

CALL METHOD obj->get_afru


EXPORTING
P_rasch = p_rasch
P_werks = p_werks
Budat_low = s_budat-low
Budat_high = s_budat-high.

CALL METHOD: obj->get_afko,


obj->combine_data,
obj->layout,
obj->display_data.
 Activate
 Execute
 Provide input
 Execute

Rohini kumar
SAP-ABAP 385

Exception Class:
In real time you will find number of exceptions (Run time errors) such as
1. Time out exception
2. SQL statement exception
3. Division by zero exception
4. No convert number exception
5. Type conflict exception
6. BCD overflow exception
7. *** Storage exception for internal table

 For all the above exceptions SAP is providing standard exception classes
 Exception class starting with prefix ‘CX’
 These exception classes should be provided with in TRY……………ENDTRY using
CATCH keyword

Example:
DATA: v1 TYPE I VALUE 0,
v2 TYPE I,
v3 TYPE I.

TRY.
v3 = v1 / v2.
CATCH CX_SY_ZERODIVIDE.
MESSAGE ‘Division by zero exception’ TYPE I.
ENDTRY.

Rohini kumar
SAP-ABAP 386

ALV Object Oriented Programming: SLV


 SAP List Viewer
 It is advance to ALVs
 In OOALV we should work with Custom Control (List Viewer Control)
 In ALVs you cannot perform advanced operations such as
1. Maintaining buttons
2. Exception coding
3. Hyperlinks …………………..etc

 All these features are maintained by using a control called List Viewer Control
 SLV is totally based on Object Oriented Programming

01-11-2014
Custom Control:

------------ screen 100

----------------- custom control (container)

Steps in Custom Control:


Step-1:
Identify location of control using class CL_GUI_CUSTOM_CONTAINER

Step-2:
Display control in the location identified using class CL_GUI_AVL_GRID

Step-3:
Display data in the control using method SET_TABLE_FOR_FIRST_DISPLAY of
CL_GUI_GRID class

Rohini kumar
SAP-ABAP 387

Requirement:
Report for Quality Notifications

Input:
S_date

Output:
Notification number
Complaint text
Date
Material code

Solution:
 Go to SE38
 Program: ZQM_QUALITY_NOTIF
 Create
 Title: Quality Notifications
 Type: Executable Program
 Enter
 Enter

TABLES QMEL.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_erdat FOR qmel-erdat.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_qmel,


qmnum TYPE qmnum,
qmtxt TYPE qmtxt,
erdat TYPE erdat,
matnr TYPE matnr,
END OF ty_qmel.

DATA: it_qmel TYPE TABLE OF ty_qmel.

DATA: wa_fcat TYPE lvc_s_fcat,


wa_layo TYPE lvc_s_layo,
it_fcat TYPE lvc_t_fcat.

* defining objects for custom conrol


DATA: container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
Rohini kumar
SAP-ABAP 388

grid TYPE REF TO CL_GUI_ALV_GRID.

PERFORM get_qmel.
PERFORM layout.
PERFORM fill_cat.
CALL SCREEN 100.

FORM get_qmel.
SELECT qmnum qmtxt erdat matnr FROM QMEL INTO TABLE it_qmel
WHERE erdat IN s_erdat.
ENDFORM.

FORM layout.
WA_LAYO-ZEBRA = ‘X’.
WA_LAYO-CWIDTH_OPT = ‘X’.
ENDFORM.

FORM fill_cat.
wa_fcat-fieldname = ‘QMNUM’.
wa_fcat-scrtext_m = ‘Notification Number’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘QMTXT’.
wa_fcat-scrtext_m = ‘Complaint Text’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘ERDAT’.
wa_fcat-scrtext_m = ‘Date’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘MATNR’.
wa_fcat-scrtext_m = ‘Material Number’.
APPEND wa_fcat TO it_fcat.

ENDFORM.

 Activate
 Double click on 100
 Yes
 Short Description: Screen 100
 Layout
 Place Custom Control on the screen
Rohini kumar
SAP-ABAP 389

 Double click on Custom Control


name: container
 Close
 Flow Logic
 Remove comment for MODULE STATUS_100
 Double click on STATUS_100
 Yes
 Main Program
 Enter
 Place cursor between MODULE…………ENDMODULE of STATUS_100

CREATE OBJECT container


EXPORTING
CONTAINER_NAME = ‘container’.

IF SY-SUBRC EQ 0.
CREATE OBJECT grid
EXPORTING
I_PARENT = container.

IF SY-SUBRC EQ 0.
CALL METHOD grid->set_table_for_first_display
EXPORTING
IS_LAYOUT = wa_layo
CHANGING
IT_FIELDCATALOG = it_fcat
IT_OUTTAB = it_qmel.
ENDIF.

ENDIF.
 Activate
 Back

 Remove comment for SET PF_STATUS ‘BACK’.


 Double click on BACK
 Yes
 Expand Function Key
 Provide BACK
 Activate
 Back

 Remove comment for MODULE USER_COMMAND_100.


Rohini kumar
SAP-ABAP 390

 Double click on USER_COMMAND_100


 Yes
 Main Program
 Enter

CASE SY-UCOMM.
WHEN ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.

 Activate
 Back
 Activate
 Back
 Execute
 Provide input
 Execute

Rohini kumar
SAP-ABAP 391

Assignment:
Packing cost material report using interactive functionality with 2 custom controls

Input:
S_matnr
S_werks

Output:
Material code
BOM component
Material description
BOM component description
BOM quantity
Amount

Interactive Logic:
If I double click on any material I should switch to MM03 along with material code

Solution:
ZPP_BOM_DETAILS

TYPE-POOLS SLIS.

TABLES: MAST, STAS, STOP, MAKT, MBEW.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_matnr FOR mast-matnr,
s_werks FOR mast-werks.
SELECTION-SCREEN: END OF BLOCK b1.

* declaring objects for custom control


DATA: container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
container1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
l_tree TYPE REF TO CL_GUI_ALV_TREE_SIMPLE,
grid TYPE REF TO CL_GUI_ALV_GRID.

DATA: n(5) TYPE C,


header(100) TYPE C,
wa_header TYPE SLIS_LISTHEADER,
it_header TYPE SLIS_T_LISTHEADER.

Rohini kumar
SAP-ABAP 392

TYPES: BEGIN OF ty_mast,


matnr TYPE matnr,
stlnr TYPE stnum,
stlal TYPE stlal,
END OF ty_mast.

TYPES: BEGIN OF ty_stas,


stlnr TYPE stnum,
stlal TYPE stlal,
stlkn TYPE stlkn,
END OF ty_stas.

TYPES: BEGIN OF ty_stpo,


stlnr TYPE stnum,
idnrk TYPE idnrk,
menge TYPE menge_D,
END OF ty_stpo.

TYPES: BEGIN OF ty_makt,


matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_makt.

TYPES: BEGIN OF ty_mbew,


matnr TYPE matnr,
verpr TYPE verpr,
END OF ty_mbew.

DATA: wa_mast TYPE ty_mast,


wa_makt TYPE ty_makt,
wa_makt1 TYPE ty_makt,
wa_stpo TYPE ty_stpo,
wa_mbew TYPE ty_mbew,
it_mast TYPE TABLE OF ty_mast,
it_makt TYPE TABLE OF ty_makt,
it_makt1 TYPE TABLE OF ty_makt,
it_stas TYPE TABLE OF ty_stas,
it_mbew TYPE TABLE OF ty_mbew.

TYPES: BEGIN OF ty_final,


matnr TYPE matnr,
maktx TYPE maktx,
Rohini kumar
SAP-ABAP 393

idnrk TYPE idnrk,


maktx1 TYPE maktx,
menge TYPE menge_D,
verpr TYPE verpr,
END OF ty_final.

DATA: wa_final TYPE ty_final,


it_final TYPE TABLE OF ty_final.

DATA: WA_FCAT TYPE LVC_S_FCAT,


WA_LAYO TYPE LVC_S_LAYO,
WA_SORT TYPE LVC_S_SORT,
IT_SORT TYPE LVC_T_SORT,
IT_FCAT TYPE LVC_T_FCAT.

CLASS cl_click DEFINITION.


PUBLIC SECTION.
METHODS: click FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING e_row.
ENDCLASS.

CLASS cl_click IMPLEMENTATION.


METHOD click.
READ TABLE it_final INTO wa_final INDEX e_row.

SET PARAMETER ID ‘MAT’ FIELD wa_final-idnrk.

CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.

END METHOD.

END CLASS.

START-OF-SELECTION.
PERFORM get_mast.
PERFORM get_stas.
PERFORM get_stpo.
PERFORM get_makt.
PERFORM get_mbew.
PERFORM combine_data.
PERFORM sort.
PERFORM layout.
Rohini kumar
SAP-ABAP 394

PERFORM fill_cat.
CALL SCREEN 100.

FORM get_mast.
SELECT matnr stlnr stlal FROM MAST INTO TABLE it_mast
WHERE matnr IN s_matnr
AND werks IN s_werks.
ENDFORM.

FORM get_stas.
IF NOT it_mast IS INITIAL.
SELECT stlnr stlal stlkn FROM STAS INTO TABLE it_stas
FOR ALL ENTRIES IN it_mast
WHERE stlnr = it_mast-stlnr
AND stlty EQ ‘M’.
ENDIF.
ENDFORM.

FORM get_stpo.
IF NOT it_stas IS INITIAL.
SELECT stlnr ldnrk menge FROM STOP INTO TABLE it_stpo
FOR ALL ENTRIES IN it_stas
WHERE stlnr = it_stas-stlnr
AND stlkn = it_stas-stlkn
AND stlty EQ ‘M’.
ENDIF.
ENDFORM.

FORM get_makt.
IF NOT it_mast IS INITIAL.
SELECT matnr maktx FROM MAKT INTO TABLE it_makt
FOR ALL ENTRIES IN it_mast
WHERE matnr = it_mast-matnr
AND spras EQ ‘EN’.
ENDIF.

IF NOT it_stpo IS INITIAL.


SELECT matnr maktx FROM MAKT INTO TABLE it_makt1
FOR ALL ENTRIES IN it_stpo
WHERE matnr = it_stpo-idnrk
AND spras EQ ‘EN’.
ENDIF.
Rohini kumar
SAP-ABAP 395

ENDFORM.

FORM get_mbew.
IF NOT it_stpo IS INITIAL.
SELECT matnr verpr FROM MBEW INTO TABLE it_mbew
FOR ALL ENTRIES IN it_stpo
WHERE matnr = it_stpo-ldnrk.
ENDIF.
ENDFORM.

FORM combine_data.
LOOP AT it_mast INTO wa_mast.
LOOP AT it_stpo INTO wa_stpo WHERE stlnr = wa_mast-stlnr.
wa_final-matnr = wa_mast-matnr.

READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mast-matnr.


wa_final-maktx = wa_makt-maktx.
wa_final-idnrk = wa_stpo-idnrk.

READ TABLE it_makt1 INTO wa_makt WITH KEY matnr = wa_stpo-idnrk.


wa_final-maktx1 = wa_makt-maktx.
wa_final-menge = wa_stpo-menge.

READ TABLE it_mbew INTO wa_mbew WITH KEY matnr = wa_stpo-idnrk.


wa_final-verpr = wa_mbew-verpr.

APPEND wa_final TO it_final.

ENDLOOP.

ENDFORM.

FORM fill_cat.
wa_fcat-fieldname = ‘MATNR’.
wa_fcat-seltext_m = ‘Material Code’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘MAKTX’.
wa_fcat-seltext_m = ‘Material Description’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘IDNRK’.
Rohini kumar
SAP-ABAP 396

wa_fcat-seltext_m = ‘BOM Component’.


APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘MAKTX1’.
wa_fcat-seltext_m = ‘BOM Component Description’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘MENGE’.
wa_fcat-seltext_m = ‘Quantity’.
wa_fcat-do_sum = ‘X’.
APPEND wa_fcat TO it_fcat.

wa_fcat-fieldname = ‘VERPR’.
wa_fcat-seltext_m = ‘Amount’.
wa_fcat-do_sum = ‘X’.
APPEND wa_fcat TO it_fcat.

ENDFORM.

FORM sort.
wa_sort-fieldname = ‘MATNR’.
wa_sort-up = ‘X’.
wa_sort-subtot = ‘X’.
APPEND wa_sort TO it_sort.
ENDFORM.

FORM layout.
wa_layout-zebra = ‘X’.
wa_layout-colwidth_optimize = ‘X’.
ENDFORM.

 Double click 100


 Yes
 Short Description: Screen 100
 Layout
 Design screen as per requirement
 Layout
 Remove comment for MODULE STATUS_100 OUTPUT
 Double click on STATUS_100
 Yes
 Main Program
 Enter
Rohini kumar
SAP-ABAP 397

 Place cursor between MODULE…………..ENDMODULE

wa_header-typ = ‘H’.
wa_header-info = ‘Reddy Labs’.
APPEND wa_header TO it_header.

DESCRIBE TABLE it_final LINES n.

CONCATENATE ‘Number of Records’ n INTO header SAPARATED BY ‘:’

wa_header-typ = ‘S’.
wa_header-info = header.
APPEND wa_header TO it_header.

CREATE OBJECT container1


EXPORTING
CONTAINER_NAME = ‘container1’.

CREATE OBJECT l_tree


EXPORTING
I_PARENT = ‘container1’.

CALL METHOD l_tree->create_report_header


EXPORTING
CONTAINER_NAME = ‘container’.

IF SY-SUBRC NE 0.
CREATE OBJECT grid
EXPORTING
I_PARENT = container.

IF SY-SUBRC EQ 0.
CALL METHOD grid->set_table_for_first_display
EXPORTING
I_SAVE = ‘X’
IS_LAYOUT = wa_layout
CHANGING
IT_OUTTAB = it_final
IT_FIELDCATALOG = it_fcat
IT_SORT = it_sort.

DATA obj TYPE REF TO CL_CLICK.


Rohini kumar
SAP-ABAP 398

CREATE OBJECT obj.

SET HANDLER obj->click FOR grid.


ENDIF.
ENDIF.
ENDMODULE.

 Remove comment for MODULE USER_COMMAND_100 INPUT.


 Double click on COMMAND_100
 Yes
 Main Program
 Enter
 Place cursor between MODULE…………..ENDMODULE

CASE SY-UCOMM.
WHEN ‘&F03’.
LEAVE TO SCREEN 0.
ENDCASE.

Rohini kumar
SAP-ABAP 399

03-11-2014
MAST Table:
It holds material header data

Fields:
1. MATNR ------------ material number
2. WERKS ------------ plant
3. STLAN ------------- BOM usage
4. STLAL ------------- alternate BOM
5. STLNR ------------- BOM number

STAS Table:
It holds items in BOM

Fields:
1. STLTY ------------ BOM category
2. STLNR ------------ BOM number
3. STLAL ------------ alternate BOM
4. STLKN ----------- BOM item number

STPO Table:
It holds BOM item data

Fields:
1. STLTY ------------ BOM category
2. STLNR ------------ BOM number
3. STLKN ----------- BOM item number
4. IDNRK ----------- BOM component (MATNR)
5. MENGE --------- quantity
6. MEINS ---------- unit of measurement

MBEW Table:
It holds material valuation data

Fields:
1. MATNR ---------- material number
2. BWKEY ---------- plant
3. LBKUM ---------- total stock
4. SALK3 ----------- total value
5. VERPR ---------- moving average price

Rohini kumar
SAP-ABAP 400

Exception Coding:
 Using Exception coding you can display color in ALV OOPs
 For displaying color you can add a field called exception using standard field EXCP-
FNAME which is part of LVC_S_LAYO

Requirement:
Open Sales Order Report

 The sales orders for which delivery is partially done are called open sales orders
 In some companies delivery (or) invoice is done for more quantity then given in sales
order
 Such sales orders are opening nature

Input:
S_kunnr
S_vbeln ------- sales order number
P_werks
S_erdat

Output:
Sales order number
Sales order date
Customer number
Customer name
Sale order quantity
Delivery quantity
Invoice quantity
Open quantity

Solution:
ZSD_OPEN_SALESORDER_REPORT

Rohini kumar
SAP-ABAP 401

Button Functionality:
Using this functionality you can add additional buttons on ALV tool bar

Requirement:
Employee Allowances Report

Input:
S_pernr --------- employee number
S_persg --------- employee group
S_abkrs --------- payroll area
S_persk --------- employee sub group

Output:
Check box
Employee number
Date of birth
Date of joining
Medical allowance
CA (Canteen Allowance)
LTA (Leave Travelling Allowance)
INSERT (button)
SELECT ALL (button)
DESELECT ALL (button)

Solution:
Step-1:
 Go to SE11
 Database Table: ZHR_TAB_ALLOW
 Create
 Short Description: Table for allowances
Field Data Element
MANDT MANDT
SEL CHAR1
PERNR PERSNO
GBDAT GBDAT
DOJ ZEMPDOJ
MEDICAL ZMEDICAL
LAT ZLTA
CA ZCA

 Activate
 Back
Rohini kumar
SAP-ABAP 402

Step-2:
 Go to SE38
 Program: ZHR_EMPLOYEE_ALLOWANCE_REPORT
 Create
 Title: employee allowance report using button functionality
 Type: Executable Program
 Enter
 Enter

TABLES PERNR.

INFO TYPES: 0001, 0002.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_persg FOR pernr-persg,
s_abkrs FOR pernr-abkrs,
s_persk FOR pernr-persk.
SELECTION-SCREEN: END OF BLOCK b1.

DATA: container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,


grid TYPE REF TO CL_GUI_ALV_GRID.

DATA: wa_button TYPE STB_BUTTON,


wa_layo TYPE LVC_S_LAYO,
wa_fcat TYPE LVC_S_FCAT,
it_fcat TYPE LVC_T_FCAT.

DATA: wa_allow TYPE ZHR_TAB_ALLOW,


it_allow TYPE TABLE OF ZHR_TAB_ALLOW.

CLASS cl_button DEFINITION.

PUBLIC SECTION.
METHODS: tool FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING
e_object e_interactive,
command FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING e_ucomm.

ENDCLASS.

Rohini kumar
SAP-ABAP 403

CLASS cl_button IMPLEMENTATION.

METHOD tool.
wa_button-function = ‘INSERT’.
wa_button-text = ‘Insert’.
APPEND wa_button TO e_object->mt_toolbar.

wa_button-function = ‘SAL’.
wa_button-text = ‘Select All’.
APPEND wa_button TO e_object->mt_toolbar.

wa_button-function = ‘DALL’.
wa_button-text = ‘Deselect All’.
APPEND wa_button TO e_object->mt_toolbar.

ENDMETHOD.

METHOD command.

CASE e_ucomm.
WHEN ‘INSERT’.
LOOP AT it_allow INTO wa_allow WHERE sel = ‘X’.
MODIFY ZHR_TAB_ALLOW FROM wa_allow.
ENDLOOP.

WHEN ‘SALL’.
LOOP AT it_allow INTO wa_allow.
wa_allow-sel = ‘X’.
MODIFY it_allow FROM wa_allow TRANSPORING sel.
ENDLOOP.

WHEN ‘DALL’.
LOOP AT it_allow INTO wa_allow.
wa_allow-sel = ‘ ’.
MODIFY it_allow FROM wa_allow TRANSPORING sel.
ENDLOOP.

ENDCASE.

CALL METHOD grid->refresh_table_display.

ENDMETHOD.
Rohini kumar
SAP-ABAP 404

ENDCLASS.

START-OF-SELECTION.
GET PERNR.
CHECK pernr-pernr IN s_pernr
AND pernr-persg IN s_persg
AND pernr-persk IN s_persk
AND pernr-abkrs IN s_abkrs.

IF SY-SUBRC EQ 0.
PERFORM get_emp.
ENDIF.

END-OF-SELECTION.
PERFORM layout.
PERFORM fill_cat.
CALL SCREEN 100.

FORM get_emp.
wa_allow-pernr = pernr-pernr.
wa_allow-gbdat = pernr-gbdat.

CALL FUNCTION ‘RP_GET_HIRE_DATE’


EXPORTING
PERSNR = pernr-pernr
CHECK_INFOTYPES = ‘0001’
IMPORTING
HIREDATE = wa_allow-doj.

APPEND wa_allow TO it_allow.

CLEAR wa_allow.

ENDFORM.

FORM layout.
wa_layo-zebra = ‘X’.
wa_layo-cwidth_opt = ‘X’.
ENDFORM.

Rohini kumar
SAP-ABAP 405

FORM fill_cat.
wa_fcat-fieldname = ‘SEL’.
wa_fcat-scrtext_m = ‘Check’.
wa_fcat-checkbox = ‘X’.
wa_fcat-edit = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘PERNR’.
wa_fcat-scrtext_m = ‘Employee Number’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘GBDAT’.
wa_fcat-scrtext_m = ‘Date of Birth’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘DOJ’.
wa_fcat-scrtext_m = ‘Date of Joining’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘MEDICAL’.
wa_fcat-scrtext_m = ‘Medical Allowance’.
wa_fcat-edit = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘LTA’.
wa_fcat-scrtext_m = ‘Leave Travelling Allowance’.
wa_fcat-edit = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-fieldname = ‘CA’.
wa_fcat-scrtext_m = ‘Canteen Allowance’.
wa_fcat-edit = ‘X’.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

ENDFORM.
Rohini kumar
SAP-ABAP 406

 Double click on 100


 Yes
 Short Description: Screen 100
 Layout
 Design screen as per your requirement
 Flow Logic
 Remove comment for MODULE STATUS_100 OUTPUT.
 Double click on STATUS_100
 Place cursor between MODULE…………….ENDMODULE

SET PF_STATUS ‘BACK’.

CREATE OBJECT container


EXPORTING
CONTAINER_NAME = ‘container’.

IF SY-SUBRC EQ 0.
CREATE OBJECT grid
EXPORTING
I_PARENT = container.

IF SY-SUBRC EQ 0.
CALL METHOD grid->set_table_for_first_display
EXPORTING
IS_LAYOUT = wa_layo
CHANGING
IT_FIELDCATALOG = it_fcat
IT_OUTTAB = it_allow.

DATA obj TYPE REF TO CL_BUTTON.

CREATE OBJECT obj.

SET HANDLER: obj->tool FOR grid,


obj->command FOR grid.

CALL METHOD grid->set_toolbar_interactive.

ENDIF.
ENDIF.

ENDMODULE.
Rohini kumar
SAP-ABAP 407

 Remove comment for MODULE USER_COMMAND_100 INPUT.


 Double click on USER_COMMAND_100
 Place cursor between MODULE…………….ENDMODULE

CASE SY-UCOMM.
WHEN ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.

04-11-2014
Syntax for Declaring Event Handler:
METHODS: <event handler> FOR EVENT <event name> OF <class name>
IMPORTING <param 1> <param 2>………………..

Note:
 E_object is an instance created based on standard class
CL_ALV_EVENT_TOOLBAR_SET
 The respective class is having an attribute MT_TOOLBAR (Table Type)

Rohini kumar
SAP-ABAP 408

Hyperlinks Functionality:
Using hyperlink functionality you can switch to respective hyperlink based on specific URL
address

SAP is providing a structure LVC_S_HYPE which is having fields


1. HANDLE (integer)
2. HREF (url)

Requirement:
Vendor hyperlinks report

Input:
S_erdat

Output:
Vendor number
Vendor name

Hyperlink Logic:
When you click on vendor number we have to switch particular web address

Solution:
ZMM_VENDOR_LINKS

Rohini kumar
SAP-ABAP 409

Questions & Answers:

Module Pool Programming:


Ques-1:
Suppose in table control when I entered few records then I selected ‘Enter’ option, I found that
the records are completely vanished from table control. Why it happens & What logic you will
write to avoid problem?
Ans:
 When you select ‘Enter’ control will moves from screen to program
 In program there is no logic provided for storing the table control data in internal table
 So nothing is transferred back to table control screen
 So it looks like empty
Logic:
MODIFY it_demo FROM zmm_demo INDEX vcontrol-current_line.
IF SY-SUBRC NE 0.
APPEND zmm_demo TO it_demo.
ENDIF.

Ques-2: In table control how you can perform auto calculations whenever ‘Enter’ key selected?
Ans:
 Remove comment for SET PF_STATUS.
 Under MODULE STATUS_100 ‘xxxxxxxxx’.
 Remove ‘xxxxxxxxxx’ provide ’BACK’.
 Yes
 Yes
 Short Text: BACK
 Enter
 Expand function keys option
 _/ ENTER
 Activate
 You will find a pop-up, Enter
 Function Text: Enter
 Enter
 Back (F3)
 Activate program

Rohini kumar
SAP-ABAP 410

Ques-3: What is the difference between SSCRFIELDS-UCOMM & SY-UCOMM?


Ans:
 SSCRFIELDS is a structure for maintaining text for the buttons in SELECTION-
SCREEN
 SSCRFIELDS-UCOMM returns FCT code for buttons maintained in SELECTION-
SCREEN
 SY-UCOMM returns FCT code for buttons maintained in SCREEN
 SY-UCOMM will works for both Screen & Selection-screen

Rohini kumar
SAP-ABAP 411

Reports:
Ques-1:
Suppose there are 20 pages in my report. How many times INITIALIZATION will triggers &
TOP-OF-PAGE will triggers?
Ans:
 INITIALIZATION will triggers only 1 time
 TOP-OF-PAGE will triggers 20 times

Ques-2: What is LOAD-OF-PROGRAM event?


Ans:
This event will triggers before INITIALIZATION & once your program is loaded into memory

Ques-3: What is the flow of events?

Ans:

 INITIALIZATION
 AT SELECTION-SCREEN OUTPUT
 START-OF-SELECTION
 END-OF-SELECTION
 TOP-OF-PAGE
 END-OF-PAGE

Ques-4: What do you mean by restricted & unrestricted stock?


Ans:
 The stock which is produced by production department & it is in Quality check (or) it is
in hold (or) stock returns is called restricted stock
 The stock which is ready for sale is called unrestricted stock

*** Ques-5: This report is already provided by SAP (MMB). Then why you created it?
Ans:
 MMB is providing materials details plant wise & storage location wise material by
material
 My client gave a requirement for viewing all restricted & unrestricted stock at one time

Rohini kumar
SAP-ABAP 412

*** Ques-6: Explain procedure of working with Hierarchal ALVs?


Answer:
 In Hierarchal Sequential ALVs we have to create 2 internal tables
 One for Header data (it_final1) & another for Item data (it_final)
 Both these internal tables should have a common field called KEY field
 In Header internal table the Key field should be unique
 In Item internal table the Key field should having number of items based on that unique
key
 Pass these two internal tables to a function module called
REUSE_ALV_HIERSEQ_LIST_DISPLAY

Rohini kumar
SAP-ABAP 413

FAQS IN REPORTS
1.) What is the purpose of reports in real time?
Ans:
In real time ABAP Reports are designed for analysis & based on the that analysis decision
making will done

2.) What are the three mandatory details for generating report?
Ans:
a.) Input
b.) Processing Logic
c.) Output

3.) What are the flow of events in ABAP reports?


Ans:
Flow of Events:
 Initialization
 At selection screen
 Start of selection
 End of selection
 Top of page
 Top of page during line selection
 End of page
 At user command

4.) What is the diff b/w START-OF-SELECTION & AT SELECTION-SCREEN?


Ans:
START-OF-SELECTION:
 This event will triggers once your selection-screen is processed
 It triggers when you select F8 function key
 It triggers before reading data from database
 It triggers for all processing blocks in a program
 It is a default event triggered before extracting data from database

AT SELECTION-SCREEN:
 It triggers once the control leaves from selection-screen & still selection-screen is in
active mode
 i.e. It triggers at end of PAI when all the values are passed from selection-screen to
program variables

Rohini kumar
SAP-ABAP 414

5.) What is the diff b/w AT SELECTION-SCREEN & AT SELECTION-SCREEN OUTPUT?


Ans:
AT SELECTION-SCREEN:
 It triggers once the control leaves from selection-screen & still selection-screen is in
active mode
 i.e. It triggers at end of PAI when all the values are passed from selection-screen to
program variables

AT SELECTION-SCREEN OUTPUT:
 It triggers after initialization & before selection-screen display
 Use this event for modifying selection-screen

6.) What is the diff b/w INITIALIZATION & START-OF-SELECTION?


Ans:
INITIALIZATION:
It triggers before selection-screen display
Note:
Use this event for initializing
4. Default values in selection-screen
5. Texts on push buttons in selection-screen
6. Texts for blocks, radio buttons, check boxes…………..etc

START-OF-SELECTION:
 This event will triggers once your selection-screen is processed
 It triggers when you select F8 function key
 It triggers before reading data from database
 It triggers for all processing blocks in a program
 It is a default event triggered before extracting data from database

7.) Why is it mandatory to use start-of-selection when we are writing


initialization and at selection-screen?
Ans:

8.) What is LOAD-OF-PROGRAM event?


Ans:
This event will triggers before INITIALIZATION & once your program is loaded into memory

Rohini kumar
SAP-ABAP 415

9.) What are the events in classical reporting?


Ans:
7. INITIALIZATION
8. AT SELECTION-SCREEN
9. START-OF-SELECTION
[Link]-OF-SELECTION
[Link]-OF-PAGE
[Link]-OF-PAGE

10.) What are the events in interactive reporting?


Ans:
 AT LINE-SELECTION:
 TOP-OF-PAGE DURING LINE-SELECTION

11.) What is the functionality of AT LINE-SELECTION?


Ans:
It triggers whenever user interacts with a list

12.) What is the functionality if GET CURSOR keyword?


Ans:
If fetches the field name & value selected by user from output list

Syntax:
GET CURSOR FIELD <field name> VALUE <value>.

13.) How u can transfer data b/w two reports?


Ans:

14.) What is the functionality of SY-LISEL in interactive reporting?


Ans:
It returns list of contents selected by user from output list

15.) What is the functionality of SY-LSIND in interactive reporting?


Ans:
It returns current list index

16.) How to switch from 14 to 4 list in interactive reporting?


Ans:

Rohini kumar
SAP-ABAP 416

17.) What is the output of following code?

INITIALIZATION.

WRITE:/ 'Hello Abap'.


Ans:

18.) What is the diff between SELECT SINGLE .... & SELECT SINGLE…. UP TO 1 ROW?
Ans:

19.) What is the functionality of SCREEN internal table in reports?


Ans:
20.) How u can create dynamic selection screens in reports?
Ans:

21.) How u make a field mandatory apart from OBLIGATORY keyword?


Ans:

22.) How u can make a selection screen field in invisible mode?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
EDIT_MASK ------- it hides the field data

23.) What are various events used on ALV reporting?


Ans:
WA_EVENT-NAME = ‘USER_COMMAND’.
WA_EVENT-FORM = ‘INTERACTIVE’.

24.) What are the function modules in ALV reporting?


Ans:
1. REUSE_ALV_GRID_DISPLAY
It is for display the data in ALV grid

2. REUSE_ALV_BLOCK_LIST_INIT
It initializes lists in blocked alvs

3. REUSE_ALV_BLOCK_LIST_APPEND
This function module
 Maintains field catalogs
 Maintains data in list
 Append field catalogs & data with layout

Rohini kumar
SAP-ABAP 417

4. REUSE_ALV_BLOCK_LIST_DISPLAY
It displays data in list in blocked alvs

5. REUSE_ALV_HIRESEQ_LIST_DISPLAY
Using this function module, you can display the in hierarchal format

25.) What is the diff b/w REUSE_ALV_LIST_DISPLAY & REUSE_ALV_GRID_DISPLAY?


Ans:

26.) How u can perform following operations in alvs:

a.) Editing field values?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
EDIT ------------------- by default the field catalogs in a layout are in display mode. Using
this option a field should be converted into change mode

b.) How to get hotspot on fields?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
HOTSPOT ------------ provides hand symbol

c.) How u can fix a column?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
FIX_COLOUMN ----------- you can fix a coloumn

d.) How u can color a particular field?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
EMPHASIZE ------- it provides a specific default color for a field in ALV grid

e.) How u can remove zeros in alv output?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
NO_ZERO ---------- removes zeros from output list

f.) How u can highlight a particular row in alv reporting?


Ans:
In layout work area you should pass INFO-FIELDNAME for displaying row with a specific
color given in output list

Rohini kumar
SAP-ABAP 418

g.) How u can create checkboxes?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
CHECKBOX ------- with this option you can create check box for a specific field

h.) How u can perform auto totals and subtotals?


Ans:
SLIS_FIELDCAT_ALV is a standard SLIS structure with following field
DO_SUM ----------- provides totals

27.) How to debug background jobs?


Ans:

28.) Explain the fields of SCREEN Internal table?


Ans:

29.) Explain how hierarchal alvs works?


Ans:
 In Hierarchal Sequential ALVs we have to create 2 internal tables
 One for Header data (it_final1) & another for Item data (it_final)
 Both these internal tables should have a common field called KEY field
 In Header internal table the Key field should be unique
 In Item internal table the Key field should having number of items based on that unique
key
 Pass these two internal tables to a function module called
REUSE_ALV_HIERSEQ_LIST_DISPLAY

30.) What is the function module used for printing heading and logo in alv?
Ans:
SLIS_LISTHEADER:
It is a standard ALV structure for maintaining headings in output list
It is having following fields
4. TYP -------------- type of heading (H, S, A)
5. KEY ------------- text for heading in 20 characters
6. INFO ------------ text for heading in 60 characters

Navigation for Maintaining Logos:


 Go to Paint
 Design a picture
 Save it on desktop

Rohini kumar
SAP-ABAP 419

 Go to OAER
 Class Name: Pictures
 Class Type: OT
 Object Key: ABAP
 Execute
 At bottom expand Standard Document Types
 Double click on Screen
 Select you Logo
 Enter
 Enter

31.) What is event internal table in ALVS?

Ans:
SLIS_ALV_EVENT:
It is a standard ALV structure for maintaining events
It is having following fields
3. NAME ----------- name of event
4. FORM ----------- subroutine name

32.) How u can work with interactive alvs?


Ans:
If I double click on customer code switch to XD03 application

Syntax:
FORM <interactive> USING <ucomm> TYPE SY-UCOMM <sel> TYPE
SLIS_SELFIELD.
-------------
-------------
ENDFORM.

33.) Explain the parameters of REUSE_ALV_GRID_DISPLAY?


Ans:
REUSE_ALV_GRID_DISPLAY
It is for display the data in ALV grid
The parameters are
[Link] program name
It is important for activating layout management & for displaying logos & headings

[Link] work area

[Link] catalog internal table


Rohini kumar
SAP-ABAP 420

16.I_CALLBACK_USER_COMMAND
It is for interactive purpose

17.I_STRUCTURE_NAME
For providing structure

18.I_BACKGROUND_ID
For maintaining background pictures

19.I_GRID_TITLE
For maintaining title in ALV grid
20.IT_SORT
For sorting data & for maintaining sub totals
21.I_SAVE
For saving layouts

22.IT_EVENTS
For events internal table

23.IS_PRINT
For deactivating (or) activating the print mode for PDF formats…………etc

24.T_OUTTAB
For output internal table

34.)What are the various ways of creating FIELDCATALOGS in ALVS?Which one


u feel is the best?Why?
Ans:
There are 3 ways to create FIELD CATALOGS
4. Manually
Ex: WA_FCAT-FIELDNAME = ‘KUNNR’.
WA_FCAT-SELTEXT_M = ‘Customer Code’.
APPEND WA_FCAT TO IT_FCAT.
5. By using REUSE_ALV_FIELDCATALOG_MERGE function module
6. By passing DDIC Structure name to REUSE_ALV_LIST_DISPLAY function module

35.) What is the functionality of REUSE_ALV_FIELDCATALOG_MERGE?


Ans:

36.) What is logical database reporting?How it is useful in realtime?


Ans:

Rohini kumar
SAP-ABAP 421

37.) What is the Function module used for Hierarichal alvs?


Ans:
1. REUSE_ALV_HIRESEQ_LIST_DISPLAY
Using this function module, you can display the in hierarchal format

38.) Explain the function module of blocked alvs?


Ans:
1. REUSE_ALV_BLOCK_LIST_INIT
It initializes lists in blocked alvs

2. REUSE_ALV_BLOCK_LIST_APPEND
This function module
 Maintains field catalogs
 Maintains data in list
 Append field catalogs & data with layout

3. REUSE_ALV_BLOCK_LIST_DISPLAY
It displays data in list in blocked alvs

39.) Explain one requirement where u used blocked alvs in realtime?


Ans:
 Using Blocked ALVs you can display multiple lists at one place
 In real time we are using blocked alvs in few scenarios such as if you want to display
production affiance of different machines of one furnace in one Output list
 If client requires invoice details based on customers, materials, segments at one place we
have to work with Blocked ALVs

40.) How u can improve performance of programming?Give atleast 15 tips for the same?
Ans:

41.) Mention some 30 system fields that u used on realtime?


Ans:

42.) What are the system fields used on interactive reporting?


Ans:
3. SY-LSIND
4. SY-LISEL

43.) What are the pitfalls for for all entries keyword?
Ans:

Rohini kumar
SAP-ABAP 422

44.) How many times initialization and top-of-page triggers in report having 20 pages?
Ans:
INITIALIZATION will triggers only 1 time
TOP-OF-PAGE will triggers 20 times

45.) Why u created restricted and unrestricted stock report when already SAP is providing
such report in the form of MMBE?
Ans:
 MMBE is providing materials details plant wise & storage location wise material by
material
 My client gave a requirement for viewing all restricted & unrestricted stock at one time

46.) What is Code inspector? How it is useful in real time?


Ans:
It will inspect your code comprehensively & it will check
6. Performance Checks
7. Security Checks
8. Syntax Checks
9. User Interface
[Link] Guidelines

47.) What is the functionality of HIDE keyword?


Ans:
It holds the records selected by user in interactive reporting

48.) How u can transfer data from alv reporting to MM01 Application?
Ans:

49.) How u can create listbox in reports?


Ans:

50.) If there are 50 records i want message at 10th record then how to do you do.
Ans:

51) Difference between sy-tabix,sy-index and sy-subrc


Ans:

52.) How you can convert alv report to oo abap report, is there any possibilities ?
Ans:

53.) Can we define select statements in end-of-selection event?


Ans:
Rohini kumar
SAP-ABAP 423

54.) I have internal table


a b
1 1
1 1
1 2
1 2
2 2

when does "at new" event triggers at 'a' and 'b'?


ans:

55.) In interactive reports in 20th secondary list if double click what will happen?
Ans:

56.) What are the abap runtime errors we have faced in reporting?
Ans:
In real time you will find number of exceptions (Run time errors) such as
8. Time out exception
9. SQL statement exception
[Link] by zero exception
[Link] convert number exception
[Link] conflict exception
[Link] overflow exception
14.*** Storage exception for internal table

57.) What is the use of initialization event? We can initialize the input values in selection screen
without initialization event also but why we are using initialization event?
Ans:
Initialization Event triggers before selection-screen display
Note:
Use this event for initializing
1. Default values in selection-screen
2. Texts on push buttons in selection-screen
3. Texts for blocks, radio buttons, check boxes…………..etc

58.) After developing source code in development server how many reviews we will get for our
source code.
Ans:

59.) Tell me some Table and fields that u created in reports?\


Ans:
Rohini kumar
SAP-ABAP 424

60.) What is the toughest report u created, what difficulties u faced and how u overcome those?
Ans:

61.) What is the use of SLIS type pool in abap reports?


Ans:

62.) What are Alv reports? How they are different from normal reports?
Ans:
ALV is advanced reporting with additional features of reporting

7. In traditional reporting you cannot maintain logos (pictures…………etc)


With ALV reporting you can maintain logos using ALV Function Modules
8. With ALV reporting you can improve performance of programming by avoiding
LOOP…..ENDLOOP
9. Using ALV reporting you can maintain Main Headings, Sub Headings……….etc

63.) What are the various ways of creating buttons in selection screens?
Ans:
Page number: 230

64.) How indexing is helpful in resolving performance issues in reports? Explain with ur
experience in real time?

Ans:
 Indexing is a way of searching
 Indexing is a way of improving performance while accessing the data from database
 I created secondary index on production efficient report
 First I debugged the program
 I found that control is taking lot of time for program execution
Then I will identify none primary key fields of that SELECT statement & based on that non-
primary key fields I will created a secondary index

65.) What is system landscape in ur company?


Ans:

Rohini kumar
SAP-ABAP 425

66.) What is ABAP/4 QUERY?(Sap Query).


Ans:
 In real time for developing a report it will take lot of time for development
 i.e. Requirement ---- Functional Consultant-----Functional Document----Technical
Consultant-----Technical Document------Object Creation------Unit Testing-----
Functional Testing-----User Testing-----go live (transfer to Production)
 using SAP Query you can create a report immediately through navigation

67.) How do you validate the selection criteria of report?


Ans:

68.) How SUBMIT keyword is helpful in ABAP REPORTS?


Ans:
* push mails to SAP inbox
SUBMIT RSLONN01 WITH MODE = ‘INT’ AND RETURN.

Rohini kumar
SAP-ABAP 426

FAQS IN REPORTS:

1 Q: What are SAP reports?


Ans:
 SAP Reports are event-driven programs using ABAP/4 programming language
 These reports are used to fetch business-specific data from SAP standard databases under
specified selection criteria
 Fetched data is processed to display result on output screen
 User develop SAP report object on ABAP editor using the standard SAP transaction
SE38

2Q: What are ABAP report types?


Ans:
 ABAP report types are of 7 types
 ABAP report types are available in report’s attributes screen
They are:
1. Executable program
2. Function group (containing function modules)
3. Include
4. Interface pool
5. Class pool
6. Module pool
7. Subroutine pool

3Q: How many lists can be displayed through an interactive report?


Ans:
Maximum 21 lists can be displayed (1 basic list+ 20 secondary lists).

4Q: what is the event that will be triggered first in an ABAP report?
Ans:
 Initialization event is triggered first if user executes an ABAP report
 But if the program is of type 1, M, F, or S; then LOAD-OF-PROGRAM is triggered first
and then INITIALIZATION event.

5Q: What are the differences between simple and interactive ABAP reports?
Ans:
 A simple ABAP report allows the user to interact with the whole business-result data.
 In case of interactive reports user can interact with specific result data at a time.

Rohini kumar
SAP-ABAP 427

6Q: How do you read selected lines of database table into an internal table in packages of
predefined size?
Ans:
SELECT * FROM <SPFLI> INTO TABLE <ITAB> PACKAGE SIZE <N>.
Where n is variable.

7Q: How do you write a DATA object from ABAP/4 program to ABAP/4 memory and restore
the same from memory to program.
Ans:
EXPORT <f1> [FROM <g1>] <f2> [FROM <g2>]…. TO MEMORY ID <key>.
The ID <key>, which can be up to 32 characters long, identifies the data in memory.

8Q: Name the function modules to write data from an Internal Table to the Presentation Server.
Ans:
1. DOWNLOAD
2. WS_DOWNLOAD.

9Q: How to determine the attributes of an internal table?


Ans:
DESCRIBE TABLE <itab> [LINES <lin>] [OCCURS <occ>].

9Q: What is interactive reporting?


Ans:
 It helps you to create easy-to-read lists
 You can display an overview list first that contains general information and provide the
user with the possibility of choosing detailed information that you display on further lists.
10Q: What are the uses of interactive reporting?
Ans:
 The user can actively control data retrieval and display during the session
 Instead of an extensive and detailed list, you create a basic list with condensed
information from which the user can switch to detailed displays by positioning the cursor
and entering commands
 The detailed information appears in secondary lists.

Rohini kumar
SAP-ABAP 428

11Q; what are the event key words in interactive reporting?


Ans:
Event Keyword Event
AT LINE-SELECTION Moment at which the user selects a line by double clicking on
it or by positioning the cursor on it and pressing F2

AT USER-COMMAND Moment at which the user presses a function key

TOP-OF-PAGE DURING Moment during list processing of a

LINE-SELECTION Secondary list at which a new page starts.

12Q: What is secondary list?

Ans:
 It allows you to enhance the information presented in the basic list
 The user can, for example, select a line of the basic list for which he wants to see more
detailed information
 You display these details on a secondary list
 Secondary lists may either overlay the basic list completely or you can display them in an
extra window on the screen
 The secondary lists can themselves be interactive again.

13Q: How to select valid lines for secondary list?


Ans:
 To prevent the user from selecting invalid lines, ABAP/4 offers several possibilities.
 At the end of the processing block END-OF-SELECTION, delete the contents of one or
more fields you previously stored for valid lines using the HIDE statement.
 At the event AT LINE-SELECTION, check whether the work area is initial or whether
the HIDE statement stored field contents there.
 After processing the secondary list, clear the work area again.
 This prevents the user from trying to create further secondary lists from the secondary list
displayed.

14Q: Can we call reports and transactions from interactive reporting lists?
Ans:
 Yes,
 It also allows you to call transactions or other reports from lists
 These programs then use values displayed in the list as input values
 The user can, for example, call a transaction from within a list of change the database
table whose data is displayed in the list
Rohini kumar
SAP-ABAP 429

15Q: What are system fields for secondary lists?


Ans:
1. SY-LSIND Index of the list created during the current event (basic list = 0)
2. SY-LISTI Index of the list level from which the event was triggered.
3. SY-LILLI Absolute number of the line from which the event was triggered.
4. SY-LISEL Contents of the line from which the event was triggered.
5. SY-CUROW Position of the line in the window from which the event was triggered
6. SY-CUCOL Position of the column in the window from which the event was triggered
7. SY-CPAGE Page number of the first displayed page of the list from which the event
was triggered.
8. SY-STARO Number of the first line of the first page displayed of the list from which
the event was triggered (counting starts with 1). Possibly, a page header
occupies this line.
9. SY-STACO Number of the first column displayed in the list from which the event was
triggered
[Link]-UCOMM Function code that triggered the event.
[Link]-PFKEY Status of the displayed list.

16Q: What are the page headers for secondary lists?


Ans:
 On secondary lists, the system does not display a standard page header and it does not
trigger the event TOP-OF-PAGE.
 To create page headers for secondary list, you must enhance TOP-OF-PAGE: Syntax
TOP-OF-PAGE DURING LINE-SELECTION.
 The system triggers this event for each secondary list.
 If you want to create different page headers for different list levels, you must program the
processing block of this event accordingly,
 For example by using system fields such as SY-LSIND or SY-PFKEY in control
statements (IF, CASE)

17Q: What are the types of messages?


Ans:
A message can have five different types.
These message types have the following effects during list processing:
1. A (=Amend):
2. E (=Error) or W (=Warning):
3. I (=Information):
4. S (=Success):

Rohini kumar
SAP-ABAP 430

18Q: What are the drill-down features provided by ABAP/4 in interactive lists?
Ans:
 ABAP/4 provides some interactive events on lists such as AT LINE-SELECTION
(double click) or AT USER-COMMAND (pressing a button).
 You can use these events to move through layers of information about individual items in
a list.

19Q: What is meant by stacked list?


Ans:
A stacked list is nothing but secondary list and is displayed on a full-size screen unless you
have specified its coordinates using the window command.

19Q: Is the basic list deleted when the new list is created?
Ans:
No. It is not deleted and you can return back to it using one of the standard navigation
functions like clicking on the back button or the cancel button.

20Q: What is meant by hotspots?

Ans:
 A Hotspot is a list area where the mouse pointer appears as an upright hand symbol.
 When a user points to that area (and the hand cursor is active), a single click does the
same thing as a double-click.
 Hotspots are supported from R/3 release 3.0c.

21Q: What is the length of function code at user-command?


Ans:
Each menu function, push button, or function key has an associated function code of length
FOUR (for example, FREE), which is available in the system field SYUCOMM after the user
action.

22Q: Can we create a GUI status in a program from the object browser?
Ans:
Yes. You can create a GUI STATUS in a program using SET PF-STATUS.

23Q: In which system field does the name of current gui status is there?
Ans:
The name of the current GUI STATUS is available in the system field SY-PFKEY.

Rohini kumar
SAP-ABAP 431

24Q: Can we display a list in a pop-up screen other than full-size stacked list?
Ans:
Yes, we can display a list in a pop-up screen using the command WINDOW with the additions
starting at X1 Y1 and ending at X2 Y2 to set the upper-left and the lower-right corners where
x1 y1 and x2 y2 are the coordinates.

25Q: What is meant by hide area?


Ans:
 The hide command temporarily stores the contents of the field at the current line in a
system-controlled memory called the HIDE AREA.
 At an interactive event, the contents of the field are restored from the HIDE AREA.

26Q: When they get cursor command used in interactive lists?


Ans:
 If the hidden information is not sufficient to uniquely identify the selected line, the
command GET CURSOR is used.
 The GET CURSOR command returns the name of the field at the cursor position in a
field specified after the addition field,
 And the value of the selected field in a field specified after value.

27Q: How can you display frames (horizontal and vertical lines) in lists?

Ans:
 You can display tabular lists with horizontal and vertical lines (FRAMES) using the
ULINE command and the system field SY-VLINE.
 The corners arising at the intersection of horizontal and vertical lines are automatically
drawn by the system.

28Q: What are the events used for page headers and footers?
Ans:
The events TOP-OF-PAGE and END-OF-PAGE are used for pager headers and footers.

29Q: How can you access the function code from menu painter?
Ans:
 From within the program, you can use the SY-UCOMM system field to access the
function code.
 You can define individual interfaces for your report and assign them in the report to any
list level.
 If you do not specify self-defined interfaces in the report but use at least one of the three
interactive event keywords.

Rohini kumar
SAP-ABAP 432

 AT LINE-SELECTION, AT PF<nn>, OR AT USER-COMMAND in the program, the


system automatically uses appropriate predefined standard interfaces.
 These standard interfaces provide the same functions as the standard list described under
the standard list.

30Q: How the at-user command serves mainly in lists?


Ans:
 The AT USER-COMMAND event serves mainly to handle own function codes.
 In this case, you should create an individual interface with the Menu Painter and define
such function codes.
31Q: How to pass data from list to report?
Ans:
ABAP/4 provides three ways of passing data:
1. Passing data automatically using system fields
2. Using statements in the program to fetch data
3. Passing list attributes

32Q: How can you manipulate the presentation and attributes of interactive lists?
Ans:
1. Scrolling through Interactive Lists.
2. Setting the Cursor from within the Program.
3. Modifying List Lines.

33Q: How to call other programs?

Ans:
Report Transaction
1. Call and return SUBMIT AND RETURN CALL TRANSACTION
2. Call without return SUBMIT LEAVE TO TRANSACTION
You can use these statements in any ABAP/4 program.

34Q: How many lists can a program can produce?


Ans:
 Each program can produce up to 21 lists
 One basic list and 20 secondary lists
 If the user creates a list on the next level (that is, SY-LSIND increases), the system stores
the previous list and displays the new one.
 Only one list is active, and that is always the most recently created list

Rohini kumar
SAP-ABAP 433

35Q: What’s ABAP dictionary and its role in SAP?


Ans:
 ABAP dictionary is the central information base for the developers.
 This manages all definitions(metadata) required for different applications in SAP.
 ABAP dictionary is completely integrated into ABAP development workbench.
 All other component of ABAP development workbench can access the data
definitions(meta data) stored in the data dictionary.

Role: ABAP data dictionary supports

 Definition of user-defined types (data elements, structures, table types).


 Structure of database objects (tables, indexes and views) can also be defined.
 These user-defined types/objects are then automatically created in the underlying
relational database using the above data definitions.
 The ABAP dictionary also provides tools for editing screen fields (e.g., for assigning a
field an input help i.e. F4 help).
 Data dictionary ensures data integrity, consistency and security.

36Q: What are the main object types of ABAP dictionary?


Ans:
Tables:
 Tables are defined in the ABAP Dictionary independently of the database.
 A table having the same structure is then created from this table definition in the
underlying database.

Views:
 Views are logical views on more than one table.
 The structure of the view is defined in the ABAP Dictionary.
 A view on the database can then be created from this structure.

Types: (elements, structures, table types)


 Types are created in ABAP programs.
 The structure of a type can be defined globally in ABAP programs.
 Changes to a type automatically take effect in all the programs using the type.

Lock objects:
 These are used to synchronize access to the same data by more than one user.
 Function modules that can be used in application programs are generated from the
definition of a lock object in the ABAP Dictionary.

Rohini kumar
SAP-ABAP 434

Domains:
 Different fields having the same technical type can be combined in domains.
 Domain defines the value range of all table fields and structure components that refer to
this domain.

Data element:
 The ABAP Dictionary also contains the information displayed with the F1 and F4 help
for a field in an input template.
 The documentation about the field is created for a data element.

Input help:
 The list of possible input values that appears for the input help is created by a foreign key
or a search help.

37Q: What are the components of a table definition.


Ans:
Table fields:
For table fields, field names and data types are defined.

Foreign keys:
Relationship between the table and the other tables are defined.

Technical settings:
Data class and size category defines that what type of table to be created and how much space
required.

Indexes:
Secondary indexes are created for a table for faster data selection.

Again following are defined for a table fields:


1. Field name --------- can be of maximum 16 characters in a table and must start with a
letter.
2. Key flag ----------- determines if a field should be the table key.
3. Field type --------- depicts the data type of the field in the ABAP dictionary.
4. Field length ------ denotes the number of valid places in the field.
5. Decimal places----- Number of places after decimal point for float type value.
6. Short text ----------- describes the business meaning of the field.
7. Also fields from other structures can be added to the table definition as include.

Rohini kumar
SAP-ABAP 435

38Q: What are the assignment options to the field?


Ans:
1. Direct assignment of data types, field length, short text to a field
2. Data element assignment to a field
3. An input check (check table) for a field can be defined with a foreign key.
4. A search help can be assigned to a field.
5. Reference field or reference table must be specified for a table field that holds currency
or quantity type value.

39Q: What’s reference table and reference field?


Ans:
 Reference table is specified for fields containing quantities(data type QUAN) or
currency(Data type CURR).
 This reference table must contain a field with the format for the currency key (data type
CUKY) or unit of measure (data type UNIT).
 This field is called the reference field of the output field.
 The reference field can also reside in the table itself.

49Q: What is the maximum depth of nested includes in a table?


Ans:
Maximum depth is 9
i.e. maximum 9 structures can be included in a table/structure.

50Q: What are the uses of foreign keys in SAP?


Ans:
 Using foreign keys (as main table-field is linked with check table), input value check for
any input field can be done.
 Foreign keys can also be used to link several tables.

51Q: How many types of data classes are there in SAP?

Ans:
1. Choose APPL0(master data) for data that is frequently accessed but rarely
updated/changed.
2. Choose APPL1 (transaction data) for data that is frequently changed.
3. Choose APPL2 (organizational data) for customizing data that is defined/entered during
system installation and rarely changed.

Rohini kumar
SAP-ABAP 436

52Q: How many types of size category are there in SAP?


Ans:
 There are five size categories. Size category from 0 to 4 can be chosen for the tables.
 A certain fixed memory size is assigned to each category in the SAP database.

53Q:What is delivery class?


Ans:
 We need to insert an delivery class value while creating customized table in SAP through
the transaction code SE11.
 Delivery class is that which regulates the transport of the table’s data records (during
SAP installations, SAP software upgrade, client copies, and data transport to other SAP
system).
 SAP and its customers have different write types depending on the variety of delivery
class.
 If Delivery class is A, it depicts that the application table for master and transaction data
changes only rarely.

54Q: What is value table?


Ans:
 Value table is maintained at domain level in SAP.
 During domain creation, value range of the domain is defined by specifying value table.
 Suppose for a particular domain, its value table holds the values ‘A’, ‘B’, ‘Z’.
 So whenever the domain will be used, system will allow to use these values only.

Rohini kumar
SAP-ABAP 437

FAQS IN INTERACTIVE REPORTS:

1Q: What are the event key words in interactive reporting ?


Ans:
1. AT LINE-SELECTION
Moment at which the user selects a line by double-clicking on it or by positioning the cursor on
it and pressing F2

2. AT USER-COMMAND
Moment at which the user presses a function key

3. TOP-OF-PAGE DURING LINE-SELECTION


Moment during list processing of a secondary list at which a new page starts

2Q: What is secondary list ?


Ans:
 Secondary lists allow you to enhance the information presented in the basic list.
 The user can, for example, select a line of the basic list for which he wants to see more
detailed information
 You display these details on a secondary list.
 Either secondary lists may overlay the basic list completely (or) you can display them in
an extra window on the screen.
 The secondary lists can themselves be interactive again.

3Q: How to select valid lines for secondary list?


Ans:
 To prevent the user from selecting invalid lines, ABAP/4 offers several possibilities.
 At the end of the processing block END-OF-SELECTION, delete the contents of one or
more fields you previously stored for valid lines using the HIDE statement.
 At the event AT LINE-SELECTION, check whether the work area is initial or whether
the HIDE statement stored field contents there.
 In the latter case, create a secondary list, since you previously stored field contents for
valid lines only.
 After processing the secondary list, clear the work area again.
 This prevents the user from trying to create further secondary lists from the secondary list
displayed.

Rohini kumar
SAP-ABAP 438

4Q: How to create user interfaces for lists ?


Ans:
 The R/3 system automatically generates a graphical user interface (GUI) for your lists
that offers the basic functions for list processing, such as saving or printing the list.

 If you want to include additional functionality, such as pushbuttons, you must define your
own interface status.
 To create a new status, the Development Workbench offers the Menu Painter.
 With the Menu Painter, you can create menus and application toolbars.
 And you can assign Function keys to certain functions.
 At the beginning of the statement block of AT END-OF-SELECTION, activate the status
of the basic list using the statement: SET PF-STATUS 'STATUS'.

5Q: Can we call reports and transactions from interactive reporting lists ?
Ans:
 YES,
 Interactive reporting also allows you to call transactions or other reports from lists.
 These programs then use values displayed in the list as input values.
 The user can, for example, call a transaction from within a list to change the database
table whose data is displayed in the list.

6Q: How to maintain lists ?


Ans:
 To return from a high list level to the next-lower level (SY-LSIND), the user chooses
Back on a secondary list.
 The system then releases the currently displayed list and activates the list created one step
earlier.
 The system deletes the contents of the released list.
 To explicitly specify the list level into which you want to place output, set the SY-LSIND
field.
 The system accepts only index values which correspond to existing list levels.
 It then deletes all existing list levels whose index is greater or equal to the index you
specify.
 For example, if you set SY-LSIND to 0, the system deletes all secondary lists and
overwrites the basic list with the current secondary list.

7Q: What are the page headers for secondary lists?


Ans:
 On secondary lists, the system does not display a standard page header and it does not
trigger the event TOP-OF-PAGE.
 To create page headers for secondary list, you must enhance TOP-OF-PAGE:
Rohini kumar
SAP-ABAP 439

Syntax:
TOP-OF-PAGE DURING LINE-SELECTION
 The system triggers this event for each secondary list.
 If you want to create different page headers for different list levels,
 You must program the processing block of this event accordingly,
 For example by using system fields such as SY-LSIND or SY-PFKEY in control
statements (IF, CASE).

8Q:What is meant by stacked list ?


Ans:
Stacked list is nothing but secondary list and is displayed on a full-size screen unless you have
specified its coordinates using the window command.

9Q: Is the basic list deleted when the new list is created?
Ans:
No. It is not deleted and you can return back to it using one of the standard navigation functions
like clicking on the back button or the cancel button.

10Q:What is meant by hotspots ?


Ans:
 Hotspot is a list area where the mouse pointer appears as an upright hand symbol.
 When a user points to that area (and the hand cursor is active),
 A single-click does the same thing as a double-click.
 Hotspots are supported from R/3 release 3.0c.

11Q: In which system field does the name of current gui status is there ?
Ans:
The name of the current GUI STATUS is available in the system field SY-PFKEY.

12Q: What is meant by hide area ?


Ans:
 The hide command temporarily stores the contents of the field at the current line in a
system-controlled memory called the HIDE AREA.
 At an interactive event, the contents of the field is restored from the HIDE AREA.
 When calling a secondary list from a list line for which the HIDE fields are stored, the
system fills the stored values back into the variables in the program.
 In the program code, insert the HIDE statement directly after the WRITE statement for
the current line.

Rohini kumar
SAP-ABAP 440

13Q: When the get cursor command used in interactive lists ?


Ans:
 If the hidden information is not sufficient to uniquely identify the selected line ,the
command GET CURSOR is used.
 The GET CURSOR command returns the name of the field at the cursor position in a
field specified after the addition field, and the value of the selected field in a field
specified after value.

14Q: How to pass data from list to report ?

Ans:

ABAP/4 provides three ways of passing data:


1. Passing data automatically using system fields
2. Using statements in the program to fetch data
3. Passing list attributes

15Q: How to call other programs ?


Ans:
Report Transaction
Call and return SUBMIT AND RETURN CALL TRANSACTION
Call without return SUBMIT LEAVE TO TRANSACTION

System fields used in interactive Reporting:


 The SY-LSIND system field contains the index of the list currently created.
 While creating a basic list, SY-LSIND equals 0.
 With each interactive event, the system automatically sets the following system fields

System field Information:


SY-LINCT --------- total line count of a list
SY-LINNO -------- current line no where cursor is placed.
SY-LSIND -------- Index of the list currently created during the current event (basic list = 0)
SY-LISTI ---------- Index of the list level from which the event was triggered
SY-LILLI ---------- Absolute number of the line from which the event was triggered
SY-LISEL --------- Contents of the line from which the event was triggered
SY-CUROW ------ Position of the line in the window from which the event was triggered
(counting starts with 1)
SY-CUCOL ------- Position of the column in the window from which the event was triggered
(counting starts with 2)
SY-UCOMM ----- Function code that triggered the event
SY-PFKEY ------- Always contains the status of the current list.

Rohini kumar
SAP-ABAP 441

TOP-OF-PAGE DURING LINE-SELECTION:


 The system triggers this event for each secondary list.
 If you want to create different page headers for different list levels, you must program the
processing block of this event accordingly,
 For example by using system fields such as SY-LSIND or SY-PFKEY in control
statements (IF, CASE)

Data from System Fields of Interactive Lists:


 From system fields, you retrieve the following information:
 The index of a list,
 The position of the list in the output window &
 The location of the cursor
 The only system field that contains the contents of the selected line is SY-LISEL.

Passing Data by Program Statements:


To pass individual output fields or additional information from a line to the corresponding
processing block during an interactive event, Use following statements

HIDE:
 The HIDE statement is one of the fundamental statements for interactive reporting
 Using the HIDE technique, you can at the moment you create a list level define, which
information later to pass to the subsequent secondary lists.

Example:
HIDE: SPFLI-CARRID, SPFLI-CONNID, NUM.

READ LINE:
 Use the statements READ LINE & READ CURRENT LINE to explicitly read data from
the lines of existing list levels.
 These statements are tightly connected to the HIDE technique.

Syntax:
READ LINE [INDEX ]
[FIELD VALUE [INTO ]... [INTO ]]
[OF CURRENT PAGE|OF PAGE ].

Example:
READ LINE SY-INDEX FIELD VALUE BOX.

Rohini kumar
SAP-ABAP 442

GET CURSOR:
Use the statements GET CURSOR FIELD & GET CURSOR LINE to pass the output field or
output line on which the cursor was positioned during the interactive event to the processing
block.

Syntax:
GET CURSOR FIELD [OFFSET ] [LINE ]
[VALUE ] [LENGTH ].

SET CURSOR:
 To set the cursor, use the SET CURSOR statement
 This statement sets the cursor in the most recently created list
 While creating the basic list, this is always the basic list itself
 While creating a secondary list, this is the previous list.

ABAP allows you to call reports as well as transactions using these statements:
Report Transaction
Call and return SUBMIT AND RETURN CALL TRANSACTION
Call without return SUBMIT LEAVE TO TRANSACTION

Typical Structure of ABAP Program:


1. Report Definitions *
2. Table and Data definitions *
3. Initialization event
4. Screen Select Options/Inputs *
5. Selection-screen event
6. Start-of-selection event
7. Performs and other Events *
Statements
8. End-of-selection event
9. Initialization

Rohini kumar
SAP-ABAP 443

OOABAP:
1Q: Principles of oops?
Ans:
5. Inheritance
6. Polymorphism
7. Abstraction
8. Encapsulation

2Q: What is difference between procedural & OO Programming?


Ans:
Structured Programming Object Oriented Programming
1. Not Reusable 1. Reusable
2. Not based on real life 2. Based on real life
(not user friendly)
3. No data security 3. High data security
4. No exception handling 4. Exception handling

3Q: What is class?


Ans:
 Class is a template based on which objects are created
 All the features (Methods) of an object is encapsulated within a class
 As class is a template memory is not allocated by system to a class

4Q: What is object?


Ans:
 It is real time entity
 It is always created based on a class (object is an instance of a class)
 As object is a real time entity memory is allocated by system to an object
 Every object holds data in such a way that outside world cannot access

5Q: Can we instantiate a class within implementation of other class?


Ans:

6Q: What is deferred key word?


Ans:

7Q: How we can refer to a class without defining it?


Ans:

8Q: Can we put non declarative statement e.g. START-OF-SELECTION within a class
Ans:
Rohini kumar
SAP-ABAP 444

9Q: What is static attribute & method?


Ans:

10Q: How to create a global class?


Ans:
In global class CLASS DEFINITION & CLASS IMPLEMENTATION parts are maintained
in Class Builder (SE24) & Execution part is maintained in ABAP Editor (SE38)

11Q: How can we pass importing parameter? Pass by value/pass by reference


Ans:

13Q: Can we changed pass by reference in any method?


Ans:

14Q: What is preferred parameter?


Ans:
More than one optional & no mandatory

15Q: Can we pass returning parameter by reference?


Ans:
No, Only pass by value

16Q: Can static method use instance attribute ?


Ans:

17Q: Can a method call itself?


Ans:

18Q: What is me variable?


Ans:

19Q: What is constructor? What are types of constructor? When it is called?


Ans:
 Constructor is a default method in Object Oriented ABAP
 It is called automatically whenever object is created
 Use this method for initializing values in Object Oriented ABAP

20Q: Can we have export parameter in Instance constructor?


Ans:

21Q: Can instance constructor raise exception?


Ans:
Rohini kumar
SAP-ABAP 445

22Q: When static constructor is called?


Ans:

23Q:Can we have interface for static class or constructor?


Ans:

24Q: What is abstract class?


Ans:
 Abstract classes are cannot be implemented
 Objects cannot be created for abstract classes
 Abstract class methods are also abstract in nature
 Derived class can implement abstract class methods by redefining the methods of abstract
class in derived class

25Q: Can we implement abstract method in abstract class? If not then where it can be
implemented?
Ans:

26Q: What is final class & Method?


Ans:

27Q: Can subclass call super class constructor?


Ans:

28Q: Can we call static constructor more than once in a program?


Ans:

29Q: What is method redefinition?


Ans:

30Q: What is interface?


Ans:
 It is a template which extends the scope of a class & implements polymorphism
 Instances cannot be created based on interface
 Interface methods are always implemented in other class

31Q: Can we implement interface in private section of any class?


Ans:

32Q: Is it mandatory to implement all the methods of interface?


Ans:
Rohini kumar
SAP-ABAP 446

33Q: What is alias? Instead of specifying full name of interface methods we can assign it a
name which can directly trigger.
Ans:

34Q: What is Friendship?


Ans:

35Q: What is event handler method?


Ans:

36Q: Can we have more than one event handler method for same event?
Ans:

37Q: Can event have import parameter?


Ans:

38Q: How you handled exception during programming?


Ans:

39Q: What is cleanup section?


Ans:

40Q: What is BADI?


Ans:

41Q: What is check box for multiple usse in BADI?


Ans:

42Q: How to search a BADI ?


Ans:

43Q: What is Value table and Check table, Difference between them?
Ans:

44Q: What are secondary index’s?


Ans:

45Q: What is the draw back of secondary index’s?


Ans:

46Q: What are conversion routines?


Ans:
Rohini kumar
SAP-ABAP 447

47Q: At which level are they mantained?


Ans:

48Q: what are Predeifined data types?


Ans:

49Q: Which predefined data type uses conversion routines?


Ans:

50Q: What are logical units of work?


Ans:

51Q: When is difference btw native and open sql


Ans:

52Q: Difference between Modify and Update


Ans:

53Q: Which is more efficient for all entries or joins?


Ans:

54Q: When is implicit commit triggered.


Ans:

55Q: What are RFC?


Ans:

56Q: How do u create a destination system?


Ans:

57Q: What are different types of commits used?


Ans:

58Q: What are search helps?


Ans:

59Q: Types of tables?


Ans:

60Q: Difference between pool tables and cluster tables?


Ans:

Rohini kumar
SAP-ABAP 448

61Q: What is a delivery class?


Ans:

62Q: What are the types of delivery class?


Ans:

63Q: Difference between System tables and control tables?


Ans:

64Q: What is normalization?


Ans:

65Q: What is BCNF?


Ans:

66Q: What is persistant class?


Ans:

SAP-ADV ABAP

NAME : Rohini Kumar


TOPICS : BDC
SCRIPTS
SMART FORMS
ENHANCEMENTS
ALE
BAPI
Rohini kumar
SAP-ABAP 449

Rohini kumar
SAP-ABAP 450

INDEX
1 BDC 5
2 Data Transfer Techniques (Inbound & Outbound) 5
3 Steps in BDC Data Transfer Technique 6
4 Methods in BDC (Session, Call Transaction, LSMW & Direct Input methods) 7
5 1. Session Method 8
6 Upload bank data from Notepad using session method 10
7 Uploading data from XL Sheet using Session Method 15
8 2. Call Transaction Method 21
9 Upload pricing data using Call Transaction Method 23
10 3. LSMW 29
11 SKIP Functionality 35
12 . Upload material master data with MM01 using flat file with headings & logo 35
13 BDC with Table Control 36
14 Upload vendor master data using XK01 using Table Control 37
15 File Handling 38
16 Opening a File in Application Server in Output Mode (Write Mode) 38
17 Opening a File in Input Mode (Read Mode) 40
18 Upload asset master data with AS02 using Call Transaction Method 43
(Assignment)
19 Upload employee payroll for infotype 14 with PA30 using Call Transaction 44
Method (Assignment)
20 SAP Scripts 45
21 Flow of Creating Form (Steps) 47
22 Goods receipt form using Scripts 48
23 Function Modules for Print Program 56
24 PO Form using Scripts(Assignment) 57
25 Standard Forms 58
26 Smart Forms 61
27 Steps in Working of Smart Forms 63
28 PO Form using Smart Forms 64
29 SAP Enhancements (Userexits, Customerexits, BADI, Enhancement Frame 81
Work & BTE)
30 1. Userexits 81
31 Validate sales order application using Userexits 81
32 2. Customerexits (Function Exits, Menu Exits, Screen Exits & Field Exits) 83
33 a) Function Exits 83
34 Validate vendor master application for postal code 83
35 b) Menu Exits 86
36 c) Screen Exits 88
Rohini kumar
SAP-ABAP 451

37 d) Fieldexits 92
38 3. BADI(Standard, Custom &Filter BADIs) 93
39 i) Standard BADI 94
40 Watch Point 96
41 Navigation for Finding BADI (3 Methods) 97
42 Validate BOM application (CS01) for alternate Bom using Standard BADI 98
43 Add a menu in FBL5N application using Standard BADI 100
44 . Add a screen in XD01, XD02 with field Sales Manager using Standard BADI 102
45 ii) Custom BADI 107
46 iii) Filter BADI 107
47 Determine tax code for sales organization using Filter BADI 107
48 4. Enhancement Framework 111
49 Provide Profit center as obligatory in F-28 application 113
50 In MB31 provide Document date & Posting date as previous date 114
51 Add fields in FB03 application ( Dmbtr, Hlcont ) 115
52 Add screen in VF01, VF02, VF03 with ZZBOXNO, ZZSIZE, ZZTEXT 117
53 5. BTE 120
54 Add indicator field in FBL5N application 120
55 Cross Applications (ALE & IDOC) 125
56 Records (Control, Data & Status) 126
57 ALE Architecture 128
58 Message Type 130
59 Types of IDOCs (Standard IDOC, Custom IDOC &Extended IDOC) 131
60 a) Standard IDOC 131
61 Distributing material master data 131
62 Sending Changes to Inbound System 137
63 IDOC Filtering(Segment Filtering, IDOC Filtering &Reduced IDOC Filtering) 139
64 1. Segment Filtering 139
65 2. IDOC Filtering 140
66 3. Reduced IDOC Type 146
67 Distributing Transactional Data 148
68 b) Custom IDOC 154
69 c) Extended IDOC 160
70 Trouble Shooting & Recovery 167
71 Debugging IDOCs 168
72 EDI 169
73 Steps in EDI Process Flow 171
74 BAPI 174
75 BOR 176
76 Types of BAPIs (Standard BAPI, Custom BAPI & Extended BAPI) 177

Rohini kumar
SAP-ABAP 452

77 1. Standard BAPI 177


78 2. Custom BAPI 181
79 Adobe Forms 186
80 Debugging Techniques 189
81 Table Level Debugging 189
82 Modifying Data during Debugging 190
83 Debugging Background Jobs 191
84 Lock Object 192
85 Search Help Exit 195
86 Questions & Answers 197
87 BDC 197
88 SCRIPTS & SMART FORMS 217

Rohini kumar
SAP-ABAP 453

BDC:
Batch Data Communication
BDC is a data transfer technique from one system to another system

*** Real time need for BDC:


1. Assume client wants to enter (or) process 1000 materials using MM01 T-code. Manually
it will take lot of time for the same. In this case we have to use BDC
2. In real time every company have to update their prices quarterly (or) half yearly using
VK11 T-code. Again manually, it will take lot of time. In this case also we have to use
BDC
3. In HR module ESI Numbers have to be modified yearly for workers. This is again time-
consuming process. In this case also we have to use BDC

 In all above examples manually clients have to process application data & there is no
guaranty that data is 100% consistent
 SAP is providing a technique called BDC for data transfer

Data Transfer Techniques:


There are two types of data transfer techniques
1. Outbound
2. Inbound

Outbound:

SAP
SAP
(source system) Non-SAP

Inbound:

SAP
SAP (target system)

Non-SAP

Note:
BDC is an Inbound data transfer technique

Rohini kumar
SAP-ABAP 454

Steps in BDC Data Transfer Technique:


Step-1:
In real time Flat File (XL Sheet (or) Note pad) is provided by end user (client)

Step-2:
 Functional Consultant will analyses Flat File & there only he will converts Non-SAP data
into SAP format
 Functional Consultant will prepare Functional Document & provide it to Technical
Consultant

Step-3:
Technical Consultant will write an interface program (BDC program) in SAP system & he will
upload the data from Flat File to Internal table (created based on Flat File)

Step-4:
 In real time some data might be in SAP format (or) Non-SAP format
 All Non-SAP format data is converted into SAP format using validations in application

Step-5:
 Before validation we have to perform mapping logic
 **For that we have to create mapping logic internal table based on BDC Data Structure

Step-6:
 From mapping logic internal table (it_bdcdata) data will goes to respective application
where LUW is performed
 With LUW data is finally transferred to database tables

Note:
BDC is a part of conversion technique

Flat File:
In real time Flat File (mainly XL Sheet) is provided by end user

Rohini kumar
SAP-ABAP 455

Mapping Logic:
BDC Data (structure)

Program (module pool program)

Dynpro (screen number)

Dynbegin (start screen)


Fnam (field name)
Fval (field value)

Methods in BDC:
1. ** Session method
2. ** Call Transaction method
3. LSMW (this job is done by Functional Consultant)
4. Direct Input method (it is out dated)

Rohini kumar
SAP-ABAP 456

Session Method:
Features:
1. Use session method for uploading large amount of data (more than 10000 records)
2. Data can be processed in Foreground as well as Background
3. *** In BDC in session method error records are captured using Log File
4. In session method respective Log File is already given by SAP
5. *** Multiple applications can be processed at one time
6. Asynchronous processing
7. Synchronous updating
8. It is a slower method but consistent

Function Modules in Session Method:


1. BDC_OPEN_GROUP
2. BDC_INSERT
3. BDC_CLOSE_GROUP

BDC_OPEN_GROUP:
It will open a session in SM35

BDC_INSERT:
It transfers mapped data from mapping logic internal table to session

BDC_CLOSE_GROUP:
It closes a session which is already opened.
Flow of Data in Session Method:

Flat File
(using function module)
It_data
(using LOOP………ENDLOOP)
Wa_data
(using APPEND keyword)
It_bdcdata
(using BDC_INSERT function module)
Session

Session processed (SM 35)

Screens

LUW
Database Tables
Rohini kumar
SAP-ABAP 457

Processing:
 Transferring the data from Flat File (Presentation Server) ultimately to Session
(Application Server) is called processing
 In session method processing is asynchronous (all records from Flat File are ultimately
broad to session)

Updating:
 Transferring the data from Application Server to Database Server is called updating
 In session method updating is synchronous
 In session method if a record is correctly committed to database then only next record is
updated (next transaction can be processed only when the previous record is correctly
written to the database)

** Recording:
 Using recording you can map Program name, Screen number, Field names………….etc
 You can map Screen Sequences
 You can map FCT values for different function codes (BACK, SAVE,
ENTER………etc)

Note:
T Code for recording is SHDB

Rohini kumar
SAP-ABAP 458

Requirement:
Upload bank data from Notepad using session method

Solution:
Step-1:
 Go to SHDB
 New Recording
 Recording: ZBANK_RECO
 Transaction Code: FI01
 Start Recording
 Bank Country: IN
 Bank Key: SR Nagar
 Enter
 Bank Name: state bank on Hyderabad
 Street: SR nagar
 City: Hyderabad
 Bank Branch: SR nagar branch
 Save
 Save
 Back

Note:
In real time, Functional Consultants perform recording. As a Technical Consultant based on
recording we have to create a program

Step-2:
 Go to SHDB
 Select your recording name (ZBANK_RECO)
 Program
 Program Name: ZFI_BANK_UPLOAD
 Transaction For Recording
 Enter
 Title: BDC for FI01
 Type: Executable Program
 Source Code
 Local Object
 You will find a program
 Remove starting 3 lines
i.e. INCLUDE BDCRECXL
START-OF-SELECTION
……………………….

Rohini kumar
SAP-ABAP 459

 From bottom remove last 2 lines


i.e. PERFORM BDC_TRANSACTION USING
………………….

Step-3:
Write your program from begging of given program

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETER p_file TYPE rlgrap-filename.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_fi01,


banks TYPE banks,
bankl TYPE bankl,
banka TYPE banka,
stras TYPE stras,
brnch TYPE brnch,
END OF ty_fi01.

DATA: wa_fi01 TYPE ty_fi01,


it_01 TYPE TABLE OF ty_fi01.

* mapping objects
DATA: wa_bdcdata TYPE BDCDATA,
it_bdcdata TYPE BDCDATA.

DATA: fnam TYPE STRING.

* F4 functionality
AT SELECTION-SCREEN ON VALUE_REQUEST FOR p_file.

PERFORM open_file.

START-OF-SELECTION.

PERFORM upload.
PERFORM open_session.
PERFORM process_data.
PERFORM close_session.

Rohini kumar
SAP-ABAP 460

FORM open_file.

CALL FUNCTION ‘F4_FILENAME’


EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ‘p_file’
IMPORTING
FILE_NAME = p_file.

ENDFORM.

FORM upload.

fnam = p_file.

CALL FUNCTION ‘GUI_UPLOAD’


EXPORTING
FILENAME = fnam
HAS_FIELD_SEPARATOR = ‘X’
TABLES
DATA_TAB = it_fi01.

ENDFORM.

FORM open_session.

CALL FUNCTION ‘BDC_OPEN_GROUP’


EXPORTING
CLIENT = SY-MANDT
GROUP = ‘Ashok’
USER = SY-UNAME
KEEP = ‘X’.
ENDFORM.

** FORM process_data.
LOOP AT it_fi01 INTO wa_fi01.
REFRESH it_bdcdata.

Remove dummy values & provide work area


wa_fi01-banks.
wa_fi01-bankl.
Rohini kumar
SAP-ABAP 461

wa_fi01-banka.
wa_fi01-stras.
wa_fi01-ort01.
wa_fi01-brnch.

* transfer mapped data to session


CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = ‘FI01’
TABLES
DYNPROTAB = it_bdcdata.

ENDLOOP.

ENDFORM.

FORM close_session.
CALL FUNCTION ‘BDC_CLOSE_GROUP’.
ENDFORM.

* screen mapping
FORM BDC_DYNPRO USING PROG SCREEN.

CLEAR wa_bdcdata.

wa_bdcdata-program = prog.
wa_bdcdata-dynpro = screen.
wa_bdcdata-dynbegin = ‘X’.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM.

* field mapping
FORM BDC_FIELD USING FIELD VALUE.

CLEAR wa_bdcdata.

wa_bdcdata-fnam = field.
wa_bdcdata-fval = value.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.
Rohini kumar
SAP-ABAP 462

Step-4:
Create a Flat File with Note pad
IN SBI009 STATEBANKOFINDIA LBNAGAR HYDERABAD
IN SBH008 STATEBANKOFHYD AMEERPET HYDERABAD

Step-5:
 Go to SE38
 Execute
 Apply F4
 Select your Flat File
 Open
 Execute

 Go to SM35
 Select your Session name
 Process
 Background
 Process

07-11-2014
Question-1:
Assume my Session has been processed & after processing, I want my Session to be displayed
in SM35 for status check. How you can achieve this task?
Answer:
By providing exporting parameter KEEP = ‘X’ you can get your processed session back in
SM35

Question-2:
How you can maintain Logs (or) Error records in Session method?
Answer:
In Session method SAP is providing a Log file by default
No need to create a Log file for handling error records
You can find Log file by using SM35
 Go to SM35
 Select your session
 Select Log option (F7)
 Select your session
 Select Display button

Rohini kumar
SAP-ABAP 463

Uploading data from XL Sheet using Session Method:


Using TEXT_CONVERT_XLS_TO_SAP you can upload the data from XL Sheet to internal
table

Requirement:
Upload bank data from XL Sheet using session method

Solution:
Step-1:
 Go to SHDB
 New Recording
 Recording: ZBANK_RECO
 Transaction Code: FI01
 Start Recording
 Bank Country: IN
 Bank Key: SR Nagar
 Enter
 Bank Name: state bank on Hyderabad
 Street: SR nagar
 City: Hyderabad
 Bank Branch: SR nagar branch
 Save
 Save
 Back

Note:
In real time, Functional Consultants perform recording. As a Technical Consultant based on
recording we have to create a program

Step-2:
 Go to SHDB
 Select your recording name (ZBANK_RECO)
 Program
 Program Name: ZFI_BANK_UPLOAD
 Transaction For Recording
 Enter
 Title: BDC for FI01
 Type: Executable Program
 Source Code
 Local Object
 You will find a program
 Remove starting 3 lines
Rohini kumar
SAP-ABAP 464

i.e. INCLUDE BDCRECXL


START-OF-SELECTION
……………………….

 From bottom remove last 2 lines


i.e. PERFORM BDC_TRANSACTION USING
………………….

Step-3:
Write your program from begging of given program

** TYPE-POOLS TRUXS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETER p_file TYPE rlgrap-filename.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_fi01,


banks TYPE banks,
bankl TYPE bankl,
banka TYPE banka,
stras TYPE stras,
brnch TYPE brnch,
END OF ty_fi01.

DATA: wa_fi01 TYPE ty_fi01,


it_01 TYPE TABLE OF ty_fi01.

* mapping objects
DATA: wa_bdcdata TYPE BDCDATA,
it_bdcdata TYPE BDCDATA.

DATA: t_raw TYPE TRUXS_T_TEXT_DATA.

* F4 functionality
AT SELECTION-SCREEN ON VALUE_REQUEST FOR p_file.

PERFORM open_file.

START-OF-SELECTION.

PERFORM upload.
Rohini kumar
SAP-ABAP 465

PERFORM open_session.
PERFORM process_data.
PERFORM close_session.

FORM open_file.

CALL FUNCTION ‘F4_FILENAME’


EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ‘p_file’
IMPORTING
FILE_NAME = p_file.

ENDFORM.

FORM upload.

CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP’


EXPORTING
I_TAB_RAW_DATA = t_raw
I_FILENAME = p_file
TABLES
I_TAB_CONVERTED_DATA = it_fi01.

ENDFORM.

FORM open_session.

CALL FUNCTION ‘BDC_OPEN_GROUP’


EXPORTING
CLIENT = SY-MANDT
GROUP = ‘rgs’
USER = SY-UNAME.

ENDFORM.

** FORM process_data.
LOOP AT it_fi01 INTO wa_fi01.
REFRESH it_bdcdata.

Rohini kumar
SAP-ABAP 466

Remove dummy values & provide work area


wa_fi01-banks.
wa_fi01-bankl.
wa_fi01-banka.
wa_fi01-stras.
wa_fi01-ort01.
wa_fi01-brnch.

* transfer mapped data to session


CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = ‘FI01’
TABLES
DYNPROTAB = it_bdcdata.

ENDLOOP.

ENDFORM.

FORM close_session.
CALL FUNCTION ‘BDC_CLOSE_GROUP’.
ENDFORM.

* screen mapping
FORM BDC_DYNPRO USING PROG SCREEN.

CLEAR wa_bdcdata.

wa_bdcdata-program = prog.
wa_bdcdata-dynpro = screen.
wa_bdcdata-dynbegin = ‘X’.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM.

* field mapping
FORM BDC_FIELD USING FIELD VALUE.

CLEAR wa_bdcdata.

wa_bdcdata-fnam = field.
Rohini kumar
SAP-ABAP 467

wa_bdcdata-fval = value.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

Step-4:
Create a Flat File MS-XL
IN SBI009 STATEBANKOFINDIA LBNAGAR HYDERABAD
IN SBH008 STATEBANKOFHYD AMEERPET HYDERABAD

Step-5:
 Go to SE38
 Execute
 Apply F4
 Select your Flat File
 Open
 Execute

 Go to SM35
 Select your Session name
 Process
 Background
 Process

Question-1:
How you can perform background processing in Session method?
Answer:
Using program RSBDCSUB you can execute session in background

Example:
In above program modify subroutine PERFORM close_session.

FORM close_session.

CALL FUNCTION ‘BDC_CLOSE_GROUP’.

SUBMIT RSBDCSUB VIA SELECTION-SCREEN.

ENDFORM.

 Execute
 F4
 Select your Flat File
Rohini kumar
SAP-ABAP 468

 Execute
 You will find a selection screen
 Session: RGS
 Execute

Question-2:
Suppose I’m having a Flat File with 50000 records. It happened that the system crashed while
uploading data. How I know the number of records exactly uploaded?
Answer:
I will go to respective database table & copy the key values to the table & execute it

Question-3:
Assume there are 1000 records out of which I uploaded 500 records & remaining I want to
upload next day. How you will, you perform this job.
Answer:
I will check the status of the records uploaded & I will delete the records from Flat File which
are correctly uploaded & remaining I will execute once again on next day

Question-4:
I’m having 2 Flat Files with 500 records & 50000 records. Which method will you prefer for
both Flat Files?
Answer:
 For 500 records Call Transaction Method
 For 50000 records Session Method

Rohini kumar
SAP-ABAP 469

Call Transaction Method:


Features of Call Transaction Method:
1. Use Call Transaction Method for uploading small amount of data (master data)
2. Data can be uploaded foreground & as well as background
3. ** Only single application can be processed at one time with one BDC program
4. ** In Call Transaction Method we have to create Log file explicitly using structure
BDCMSGCOLL
5. Synchronous processing (record by record)
6. Asynchronous updating by default (even you can switch updating mode to synchronous)
7. Faster than Session method. Because in Call Transaction Method control will not wait for
updating process to be happened. It simply transfers the control to Message Service (or)
Update Service to perform the same. That’s why this method is faster than Session
method

Note:
In Call Transaction Method session function modules are not required

** Syntax for Call Transaction Method:


CALL TRANSACTION <T code> USING <it_bdcdata>
MODE <mode>
UPDATE <update>
MESSAGE INTO <it_bdcmsgcoll>
OPTIONS FROM <ctu_param>

Parameters & Modes in Call Transaction Method:


Parameter Mode
1. MODE A ----------- Foreground
E ----------- Error
N ----------- Background
2. UPDATE A ----------- Asynchronous
S ------------ Synchronous
3. MESSAGE M

Append Mode (A):


It is foreground processing

Error Mode (E):


If error occurs then only it will display screen & remaining processing is background

No Display Mode (N):


It is background processing

Rohini kumar
SAP-ABAP 470

Update Parameter:
Using this parameter, you can switch the control from asynchronous to synchronous

Message Parameter:
It is for error handling in Call Transaction Method

Flow of Data in Call Transaction Method:


Flat File
(using function module)
It_data
(using LOOP………ENDLOOP)
Wa_data
(using APPEND keyword)
It_bdcdata
(using function module CALL TRANSACTION)
Screens

LUW

Database Tables

Rohini kumar
SAP-ABAP 471

Requirement:
Upload pricing data using Call Transaction Method

Every company will increases the prices of their finished products using VK11 application

Solution:
Step-1:
 Go to SHDB
 New Recording
 Recording: ZVK11_RECO
 Transaction Code: VK11
 Start Recording
 Condition Type: ZZ01
 Enter
 Sales Organization: 1000
 Distribution Channel: 10
 Material: 100-100
 Amount: 500
 Unit: INR
 Valid From: 01.07.2014
 Valid To: 31.12.2014
 Save
 Save
 Back

Step-2:
 Go to SHDB
 Select your recording name (ZVK11_RECO)
 Program
 Program Name: ZMM_VK11_UPLOAD
 Transaction For Recording
 Enter
 Title: BDC for VK11
 Type: Executable Program
 Source Code
 Local Object
 You will find a program
 Remove starting 3 lines
i.e. INCLUDE BDCRECXL
START-OF-SELECTION
……………………….

Rohini kumar
SAP-ABAP 472

 From bottom remove last 2 lines


i.e. PERFORM BDC_TRANSACTION USING
………………….

Step-3:
Write your program from begging of given program

** TYPE-POOLS TRUXS.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETER p_file TYPE rlgrap-filename.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_fi01,


banks TYPE banks,
bankl TYPE bankl,
banka TYPE banka,
stras TYPE stras,
brnch TYPE brnch,
END OF ty_fi01.

DATA: wa_vk01 TYPE ty_fi01,


vk_01 TYPE TABLE OF ty_fi01.

* mapping objects
DATA: wa_bdcdata TYPE BDCDATA,
it_bdcdata TYPE BDCDATA.

DATA: t_raw TYPE TRUXS_T_TEXT_DATA.

* F4 functionality
AT SELECTION-SCREEN ON VALUE_REQUEST FOR p_file.

PERFORM open_file.

START-OF-SELECTION.

PERFORM upload.
PERFORM process_data.
PERFORM fill_cat.
PERFORM display_data.

Rohini kumar
SAP-ABAP 473

FORM open_file.

CALL FUNCTION ‘F4_FILENAME’


EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ‘p_file’
IMPORTING
FILE_NAME = p_file.

ENDFORM.

FORM upload.

CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP’


EXPORTING
I_TAB_RAW_DATA = t_raw
I_FILENAME = p_file
TABLES
I_TAB_CONVERTED_DATA = it_fi01.

ENDFORM.

** FORM process_data.
LOOP AT it_fi01 INTO wa_fi01.
REFRESH it_bdcdata.

Remove dummy values & provide work area


wa_fi01-banks.
wa_fi01-bankl.
wa_fi01-banka.
wa_fi01-stras.
wa_fi01-ort01.
wa_fi01-brnch.

* transfer mapped data to session


CALL FUNCTION ‘BDC_INSERT’
EXPORTING
TCODE = ‘FI01’
TABLES
DYNPROTAB = it_bdcdata.

Rohini kumar
SAP-ABAP 474

ENDLOOP.

ENDFORM.

* screen mapping
FORM BDC_DYNPRO USING PROG SCREEN.

CLEAR wa_bdcdata.

wa_bdcdata-program = prog.
wa_bdcdata-dynpro = screen.
wa_bdcdata-dynbegin = ‘X’.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM.

* field mapping
FORM BDC_FIELD USING FIELD VALUE.

CLEAR wa_bdcdata.

wa_bdcdata-fnam = field.
wa_bdcdata-fval = value.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

Step-4:
Create a Flat File MS-XL
IN SBI009 STATEBANKOFINDIA LBNAGAR HYDERABAD
IN SBH008 STATEBANKOFHYD AMEERPET HYDERABAD

Step-5:
 Go to SE38
 Execute
 Apply F4
 Select your Flat File
 Open
 Execute

 Go to SM35
 Select your Session name
Rohini kumar
SAP-ABAP 475

 Process
 Background
 Process

Rohini kumar
SAP-ABAP 476

08-11-2014
Question:
What is the difference between Session Method & Call Transaction Method?
Answer:
Session Method Call Transaciton Method
1. It for uploading large amount of data 1. It for uploading small amount of data
2. Multiple applications can be processed 2. Only single application can be processed
at one time with one BDC program at one time with one BDC program
3. In this method respective Log File is 3. In this method we have to create Log file
already given by SAP explicitly using structure BDCMSGCOLL
4. Asynchronous processing 4. Synchronous processing
5. Synchronous updating 5. Asynchronous updating
6. It is a slower method but consistent 6. Faster than Session method

Question:
How will you handle error records BDC?
Answer:
 In real time client will ask error records during BDC upload
 For that we have to provide him Logs in the form of error file
 In Session Method Log file you can find directly in SM35
 In Call Transaction Method as processing synchronous we have to create a Log file
internal table based on structure BDCMSGCOLL which holds log details during
processing of application
 The error records are looped to respective work area which further exported to Funtion
Module FORMAT_MESSAGE
 It returns a Message ID which I will capture by using a dummy internal table

Rohini kumar
SAP-ABAP 477

LSMW:
 Legacy System Migration Work bench
 It is convenient tool for migrating Non-SAP (or) Legacy data from one system to another
system

Difference between BDC & LSMW:


BDC LSMW
1. Same Flat file can be uploaded 1. Use this method for uploading data at one time
Number of times
2. Here recording you have to do 2. Recording is in-built
Separately using SHDB
3. Mapping is maintained manually 3. Mapping is done by system itself
Using program

Method in LSMW:
1. Batch Input Recording (Session Method)
2. IDOC Method
3. BAPI Method
4. Direct Input Method

Note:
 The T code for working with LSMW is LSMW
 In real time LSMW is mostly performed by Functional Consultant

Example:
 Go to LSMW
 Project: ZFI_LSMW
 Sub Project: ZFI_SUBPRO
 Project: ZFI_SESSION
 Create Entry
 Description: LWMW Project
 Enter
 Description: Sub Project
 Enter
 Name: Session name
 F8
 If Numbering Off is selected get it into Numbering On
 If Double Click = Display get it into Double Click = Change

Rohini kumar
SAP-ABAP 478

****
Step-1: Maintain object attributes
With this step you can maintain attributes for your method
i.e. Method name, Recording details……………etc
 Select F8
 Option
 Recording Overview
 Create Recording (Ctrl + F1)
 Recording: FILSMW
 Description: Recording
 Enter
 Transaction Code: FI01
 Enter
 Bank Country: IN
 Bank Key: B0001
 Enter
 Bank Name: SBH
 Street: LBNagar
 City: Hyderabad
 Bank Branch: LBNagarBranch
 Save
 Double click on BNKA-BANKS
 Name: BANKS
 Name: Bank Country
 Default Value: ____________
 Enter
 Double click on BNKA-BANKL
 Name: BANKL
 Name: Bank Key
 Default Value: ____________
 Enter
 Repeat the same procedure with BNKA-STRAS, BNKA-ORT01, BNKA-BRNCH
 Save
 Back
 Back
 Batch Input Recording
 Recording: FILSMW
 Enter
 Save
 Back

Rohini kumar
SAP-ABAP 479

Step-2: Maintain source structure


With this step source structure is created based on flat file
 F8
 Create
 Source Structure: ITBANK
 Description: Bank internal table
 Enter
 Save
 Back

Step-3: Maintaing source fields


With this step fields are created
 F8
 Select ITBANK
 Table Maintaince (Ctrl + F9)
Field name Type Length Description
BANKS C 3 Country
BANKL C 10 Key
BANKA C 40 Name
STRAS C 40 Street
ORT01 C 40 City
BRNCH C 40 Branch

 Save
 Back
 Save
 Back

Step-4: Maintain structure relations


With this step recording is linked with source structure ITBANK
 F8
 Save
 Back

Step-5: Maintain field mapping & conversion groups


With this step field mapping is done
 F8
 Select BANKS
 Source Field (Ctrl + F2)
 You will find a pop-up, Double click on BANKS
 Select BANKL
 Source Field (Ctrl + F2)
Rohini kumar
SAP-ABAP 480

 You will find a pop-up, Double click on BANKL


 Repeat the same procedure for BANKA, STRAS, ORT01, BRNCH
 Save
 Back

Step-6: Maintain fixed values and translating user defined routines


With this step routing are linked with LSMW

Note:
This step is not required ignore it

 Select Step-7

Step-7: Specify fields


With this step flat file is maintained
Create a flat file (XL (or) Notepad) in the following manner
IN B0001 SBH LBNagar Hyderabad LBNagarBranch

 F8
 Double click Legacy Data On The PC (Frontend)
 Apply F4 on File
 Select your flat file from required path
 Name: Flat file
 Delimitor
 Tablator

Note:
If headings are maintained in Flat file it is mandatory to select check Fields Names At Start Of
File

 Enter
 Save

Note:
Sometimes you may find an error ‘Field names at start of File………….up to 45
charectors…..remaing data saved’. If you get this error
 Doublce click on Convert Data
 File: your flat file path
 Save

 Back

Rohini kumar
SAP-ABAP 481

Step-8: Assign fields


 With this step flat file is linked with source structure FIBANK
 F8
 Save
 Back

Step-9: Read data


 With this step data is uploaded from flat file to source structure
 Execute
 Execute
 Back
 Back

Step-10: Display read data


 With this step data in source structure can be viewed
 Execute
 Enter
 Back

Step-11: Convert data


 With this step screen mapping is done. This step is directly linked with Step-1
 Execute
 Execute
 Back
 Back

Step-12: Display converted data


 With this step converted data is displayed
 Execute
 Enter
 Back

Step-13: Create batch input session


 With this step session is created
 Execute
 Execute
 You will find a message ‘1 batch input folder with 1 transaction created’, Enter

Step-14: Run batch input session


 With this step session is processed
 Execute
 Select your session
Rohini kumar
SAP-ABAP 482

 Process
 Enter
 Enter
 Enter

Rohini kumar
SAP-ABAP 483

09-11-2014
SKIP Functionality:
Requirement:
Upload material master data with MM01 using flat file with headings & logo

Flat File:
A-922 M ROH Sodaash Kg R1111 1000 Kg 800
A-923 M ROH Sodaash Kg R1111 1000 Kg 800

Solution:
ZMM_MM01_BDC1

Rohini kumar
SAP-ABAP 484

BDC with Table Control:


Requirement:
Upload vendor master data using XK01 using Table Control

Flat File:
9444 1000 1000 0001 MR Satya Google
LBNagar Hyderabad IN, IN, IN, IN, IN, IN SBI001,SBH001, ICICI001,
HDFC001, CANARA001, AXIS001 30941209294, 30941209295, 30941209296,
30941209297, 30941209298, 30941209299 31000 A1 INR

Solution:
 Go to SHDB
 New Recording
 Transaction Code: XK01
 Start Recording
 Vendor: 8733
 Company Code: 1000
 Purchase Org: 1000
 Account Group: 0001
 Title: MR
 Name: Satya
 Search Term: Google
 Postal Code: 500074
 City: Hyderabad
 Country: IN
 Enter
 No data in this screen
 Enter
 Country: IN
 Bank Key: SBH001
 Bank Account: 30941209294
 Enter
 Enter
 Recoun. Amount: 31000
 Cash Mng Group: A1
 Enter
 No data in this screen
 Enter
 No data in this screen
 Enter
 Order Currency: INR
 Enter
Rohini kumar
SAP-ABAP 485

 Save
 Save
 Back
 Select your recording
 Program
 Program Name: ZVENDOR_UPLOAD
 Transfer For Recording
 Enter
 Title: BDC for recording
 Type: Executable Program
 Source Code
 Remove starting 3 lines
 Remove last 3 lines
 Write your program
ZXK01_UPLOAD

Rohini kumar
SAP-ABAP 486

File Handling:
 If flat file is maintaining in presentation server then any-body can manipulated it
 Even flat files can be maintained in application server also where data is more secure as it
is managed by administrator
 If the flat file is maintained in presentation server then it is a part of Physical File
Handling
 If the flat file is maintained in application server then it is a part of Logical File Handling

Opening a File in Application Server in Output Mode (Write Mode):


Syntax:
OPEN DATASET <file> FOR OUTPUT IN BINARY MODE.
-------------
-------------
CLOSE DATASET <file>.

Example:
 Go to SE38
 Program: ZSD_OPEN_DATASET
 Create
 Title: Opening dataset
 Type: Executable Program
 Enter
 Local Object

PARAMETERS p_file(100) TYPE C.

INCLUDE ZCUSTOM.

OPEN DATASET p_file FOR OUTPUT IN BINARY MODE.


SELECT kunnr land1 name1 ort01 pstlz stras FROM KNA1 INTO TABLE
it_kna1 UPTO 10 ROWS.

LOOP AT it_kna1 INTO wa_kna1 FROM 1 TO 4.


TRANSFER wa_kna1 TO p_file.
ENDLOOP.

CLOSE DATASET p_file.

 Double click on ZCUSTOM


 Yes
 Enter

Rohini kumar
SAP-ABAP 487

 Local Object

TYPES: BEGIN OF ty_kna1,


kunnr TYPE kunnr,
land1 TYPE land1,
name1 TYPE name1,
ort01 TYPE ort01,
pstlz TYPE pstlz,
stras TYPE stras,
END OF ty_kna1.

DATA: wa_kna1 TYPE ty_kna1,


it_kna1 TYPE TABLE OF ty_kna1.

 Activate
 Back
 Activate
 Execute
 P_file: D:\[Link]
 Execute

Rohini kumar
SAP-ABAP 488

Opening a File in Input Mode (Read Mode):


Syntax:
OPEN DATASET <file> FOR INPUT IN BINARY MODE.
-------------
-------------
CLOSE DATASET <file>.

Example:
 Go to SE38
 Program: ZSD_CUSTOMER
 Create
 Title: BDC for customer master data
 Type: Module Pool
 Save
 Local Object

 Go to SE51
 Program: ZSD_CUSTOMER
 Screen: 100
 Create
 F6
 Table: KNA1
 Enter
 Select required fields (kunnr, land1, name1, ort01, pstlz, stras)
 Enter
 Place the fields on the screen
 Place two buttons (INSERT, EXIT) on the screen
 Provide Text & FCT code of buttons
 Flow Logic
 Remove comment for MODULE USER_COMMAND_100
 Double click on USER_COMMAND_100
 Yes
 Main Program
 Enter

TABLES KNA1.

 Place cursor between MODULE…………ENDMODULE of USER_COMMAND_100

CASE SY-UCOMM.
WHEN ‘INSERT’.
INSERT KNA1.
Rohini kumar
SAP-ABAP 489

IF SY-SUBRC EQ 0.
MESSAGE ‘Record inserted’ TYPE ‘I’.
ELSE.
MESSAGE ‘Inserting failed’ TYPE ‘E’.
ENDIF.

WHEN ‘EXIT’.
LEAVE TO SCREEN 0.
ENDCASE.

 Activate
 Back
 Activate

 Go to SE93
 Transaction Code: ZCUST
 Screen: 100
 Save

 Go to SE38
 Program: ZSD_CUSTOMER_BDC
 Create
 Title: BDC for customer data
 Type: Executable Program
 Enter
 Enter

PARAMETERS p_file(100) TYPE C.

INCLUDE ZCUSTOM.

DATA: wa_bdcdata TYPE BDCDATA,


it_bdcdata TYPE BDCDATA.

OPEN DATASET p_file FOR INPUT IN BINARY MODE.


DO.
READ DATASET p_file INTO wa_kna1.
IF SY-SUBRC NE 0.
EXIT.
ELSE.
REFRESH it_bdcdata.
Rohini kumar
SAP-ABAP 490

PERFORM bdc_dynpro USING ‘zsd_customer_bdc’ ‘100’.


PERFORM bdc_field USING: ‘kna1-kunnr’ wa_kna1-kunnr,
‘kna1-land1’ wa_kna1-land1,
‘kna1-name1’ wa_kna1-name1,
‘kna1-ort01’ wa_kna1-ort01,
‘kna1-pstlz’ wa_kna1-pstlz,
‘kna1-stras’ wa_kna1-stras,
‘bdc-okcode’ ‘/00’.

CALL TRANSACTION ‘ZCUSTOM’ USING it_bdcdata MODE ‘A’.

ENDIF.
ENDDO.

CLOSE DATASET p_file.

FORM bdc_dynpro USING prog screen.


CLOSE wa_bdcdata.
wa_bdcdata-program = prog.
wa_bdcdata-dynpor = screen.
wa_bdcdata-dynbegin = ‘X’.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.
FORM bdc_field USING field value.
CLOSE wa_bdcdata.
wa_bdcdata-fname = field.
wa_bdcdata-fval = value.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

 Execute
 P_file: D:\[Link]

Rohini kumar
SAP-ABAP 491

Assignment-1:
Upload asset master data with AS02 using Call Transaction Method

Flat File:
Asset number Sub asset number Company code Qunatity
3000006 0 0005 300

Recording:
 Go to SHDB
 New Recording
 Recording: ZREC_AS02
 Transaction Code: AS02
 Start Recording
 Asset: 3000003
 Sub Number: 0
 Company Code: 0005
 Enter
 Quantity: 200
 Save
 Back
 Save

Solution:
 Go to SHDB
 Select your recording
 Program
 Title: BDC for AS02
 Type: Executable Program
 Source Code
 Remove first 3 lines
 Remove last 2 lines & write your program

Rohini kumar
SAP-ABAP 492

Assignment-2:
Upload employee payroll for infotype 14 with PA30 using Call Transaction Method

Flat File:
Employee number Amount
1000 3000
1001 5000
1002 7000

Recording:
 Go to SHDB
 New Recording
 Recording: ZREC_PA30
 Transaction Code: Pa30
 Start Recording
 Employee number: 1000
 Infotype: 14
 Sty: M110
 F6
 Start: 01.04.2013
 To: 31.03.2014
 Wage Type: M110
 Amount: 3000
 Save
 Back
 Save

Solution:
 Go to SHDB
 Select your recording
 Program
 Title: BDC for PA30
 Type: Executable Program
 Source Code
 Remove first 3 lines
 Remove last 2 lines & write your program

Rohini kumar
SAP-ABAP 493

SAP Scripts:
Using Scripts you can design Forms & send the data for print outs

Components of Scripts:
1. Form
2. Page
3. Window
4. Page Window
5. Layout
6. Paragraph Formats
7. Character Formats
8. Header

Form:
It is a collection of pages

Page:
It is a collection of windows

Window:
It is the smallest element of a form, which holds actual data

Page Window:
Using this option windows are maintained in a page in SAP Scripts

Layout:
All windows are adjusted in a page using layout

Paragraph Formats:
With this option you can maintain Font size, Style, Color, Underline……….etc for text on a
form

Character Formats:
Using this option you can maintain Font size, Style, Color…….etc for text (for special
characters in a form)

Header:
Using header administrative data (client number, date of creation, date of change, user
id……..etch) is maintained

Rohini kumar
SAP-ABAP 494

*** Types of Windows:


1. Main Window
2. Constant Window
3. Variable Window

Main Window:
 It is a default window in forms
 Use this window for maintaining dynamic length data (transactional data)
 In one page you can maintain 99 Main Windows (Main 00 to Main 98)

Note:
Without Main Window you cannot work with Scripts

Constant Window:
It is reflected to all the pages of a form

Note:
Maintain Logos, Headers, Footers……….etc using this window

Variable Window:
It is restricted to a specific page

Flow of Data in Scripts:


(Printer, Fax…….etc)
External Devices

SAPLD SE38

Form Driver Program

Database

Rohini kumar
SAP-ABAP 495

Note:
SAPLD provides interface between Form Painter & External Devices

Note:
T code for working with Scripts is SE71

Flow of Creating Form (Steps):


1. Page
2. Paragraph Formats
3. Character Formats
4. Assign paragraph formats to header
5. Create windows
6. Assign all windows to page using page window
7. Write logic for each window
8. Adjust all windows in layout
9. Activate form
[Link] driver program (print program)

Rohini kumar
SAP-ABAP 496

Requirement:
Goods receipt form
Heading Logo

User: Page: 3 of 60

Date:

Sno matnr movement type quantity amount

Page Total:

Heading Logo

User: Page: 3 of 60

Date:
Carry forward amount:

Sno matnr movement type quantity amount

Heading Logo

Page Total:

User: Page: 3 of 60

Date:
Carry forward amount:

Sno matnr movement type quantity amount

Grand Total:

Solution:
Step-1: Form
 Go to SE71
 Form: ZFORM_GRN
Rohini kumar
SAP-ABAP 497

 Create
 You will find a message, Enter
 Meaning: GRN Form

Step-2:
 Select Pages
 Page: PAGE1
 Next Page: PAGE1
 Enter
 Meaning: page1

Step-3:
 Select Paragraph Formats
 Paragraph: P1
 Enter
 Meaning: p1
 Font
 Family: COURIER
 Font Size: 12
 BOLD ON

Step-4:
 Select Character Formats
 Char. Format: C1
 Enter
 Meaning: c1
 Family: HELVE
 Size: 10
 BOLD ON

Step-5:
 Select Header (F5)
 Basic Settings
 First Page: PAGE1
 Default Paragraph: P1

Step-6:
 Select Windows
 Edit ------ Create Element
 Window: LOGO
 Meaning: window
 Enter
Rohini kumar
SAP-ABAP 498

 Window Type: CONST


 Edit ------- Create Element
 Window: PAGE
 Meaning: window
 Enter
 Repeat the same procedure for USER, HEADER, HEADER1

Step-7:
 Select Page Windows
 Edit ----- Create Element
 You will find a pop-up, Double click on HEADER
 Window Width: 5
 Window Height: 5
 Edit ----- Create Element
 Double click on HEADER1
 Window Width: 5
 Window Height: 5
 Edit ----- Create Element
 Repeat the same procedure for USER, PAGE, MAIN, CONST, LOGO windows

Note:
When you maintain MAIN window using Page Windows you will get MAIN window again in
the pop-up (as we can maintain 99 MAIN windows in a Page). So next time you don’t select it

Step-8:
 Double click on MAIN window
 Edit ----- Text Elements
 Goto ----- Change Editor

/: SUMMING &wa_msg-dmbtr& INTO &wa_sum&


/E ELEL
/: TOP
/: IF &page& NE 1
* ,,,,,,,,,,<C1>Carry forward amount: &wa_sum&</>
/: ENDIF
/: ENDTOP
*
* &sno&,,&wa_mseg-matnr&,,&wa_mseg-bwart&,,&wa_mseg-menge&
= &wa_mseg-dmbtr&
/E PAGE_TOTAL
* &uline(60)&
* ,,,,,,,,,,<C1>Page total: &wa_sum&</>
Rohini kumar
SAP-ABAP 499

*
/E GRAND_TOTAL
* &uline(60)&
* ,,,,,,,,,,<C1>Grand total: &wa_sum&</>
 Back

Step-9:
 Double click HEADER window
 Edit ----- Text Elements
 Goto ----- Change Editor

/: BOX WIDTH 7 CM HEIGHT 4 LN FRAME 4 TW INTENSITY 8


* ,,Reddy labs
* An Anji Reddy Group
* Ameerpet-500074
 Back
 Next Page

Step-10:
 Double click on HEADER1 window
 Edit ----- Text Elements
 Goto ----- Change Editor

* &uline(60)&
*
* Sno,,,,Material,,,,Material Type,,,,Quantity,,,,Amount
* &uline(60)&
 Back

Step-11:
 Double click on LOGO window
 Edit ----- Text Elements
 Goto ----- Change Editor

/: BITMAP enjoy OBJECT GRAPHICS ID BMAP TYPE BCOL


 Back
 Next Page

Step-12:
 Double click on PAGE window
 Edit ----- Text Elements
 Goto ----- Change Editor
Rohini kumar
SAP-ABAP 500

/: BOX WIDTH 5 CM HEIGHT 1 LN FRAME 4 TW


* PAGE &page& OF &sapscript_jobpages&
 Back

Step-13:
 Double click on USER window
 Edit ----- Text Elements
 Goto ----- Change Editor

/: BOX WIDTH 5 CM HEIGHT 2 LN FRAME 4 TW


* USERNAME: &sy-uname&
* DATE: &sy-datum&
 Back

Step-14:
 Select Settings
 Form Painter
 By default graphical pc editor selected, Deselect it
 Select Graphical Form Painter
 Enter
 Adjust all the windows according to the size of data
 Select Minimize
 Settings ------ Form Painter
 Deselect Graphical Form Painter check box
 Select Graphical PC Editor check box
 Select Utilities -------- Printing Text
 You will find a pop-up
 Output Device: LP01
 Print Preview
 Form
 Activate
 Local Object

Step-15:
 Go to SE38
 Program: ZGRN_FORM
 Create
 Title: Forms for GRN details
 Type: Executable Program
 Enter
 Local Object
 Write driver program
Rohini kumar
SAP-ABAP 501

ZGRN_COL_FORM

TYPES: MKPF, MSEG.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_mblnr FOR mkpf-mblnr,
s_werks FOR mseg-werks,
s_bukrs FOR mseg-bukrs,
s_budat FOR mkpf-budat.
SELECTION-SCREEN: END OF BLOCK b1.

TYPES: BEGIN OF ty_mseg,


matnr TYPE matnr,
bwart TYPE bwart,
menge TYPE menge_D,
dmbtr TYPE dmbtr,
END OF ty_mseg.

DATA: wa_mseg TYPE ty_mseg,


it_mseg TYPE TABLE OF ty_mseg.

DATA: sno TYPE I,


wa_sum TYPE DMBTR.

PERFORM get_mseg.
PERFORM open_form.
PERFORM start_form.
PERFORM process_form.
PERFORM end_form.
PERFORM close_form.

FORM get_mseg.
SELECT mseg~matnr mseg~bwart mseg~menge mseg~dmbtr INTO TABLE it_mseg
FROM MKPF INNER JOIN MSEG
ON mkpf~mblnr = mseg~mblnr
WHERE mkpf~mblnr IN s_mblnr
AND mseg~werks IN s_werks
AND mseg~bukrs IN s_bukrs
AND mseg~budat IN s_budat.
ENDFORM.

FORM open_form.
Rohini kumar
SAP-ABAP 502

CALL FUNCTION ‘OPEN_FORM’.


EXPORTING
LANGUAGE = SY-LANGU
FORM = ‘ZFORM_GRN’.
ENDFORM.

FORM start_form.
CALL FUNCTION ‘START_FORM’
EXPORTING
STARTPAGE = ‘PAGE1’
LANGUAGE = SY-LANGU
FORM = ‘ZFORM_GRN’.
ENDFORM.

FORM process_form.
LOOP AT it_mseg INTO wa_mseg.
sno = sno + 1.
CALL FUNCTION ‘WRITE_FORM’
EXPORTING
ELEMENT = ‘ELE1’
WINDOW = ‘MAIN’.

IF sno = 8.
CALL FUNCTION ‘WRITE_FORM’
EXPORTING
ELEMENT = ‘PAGE_TOTAL’
WINDOW = ‘MAIN’.

CALL FUNCTION ‘CONTROL_FORM’


EXPORTING
COMMAND = ‘NEW-PAGE’.

sno = 0.
ENDIF.

AT LAST.
CALL FUNCTION ‘WRITE_FORM’
EXPORTING
ELEMENT = ‘GRAND_TOTAL’
WINDOW = ‘MAIN’.
ENDAT.

Rohini kumar
SAP-ABAP 503

ENDLOOP.
ENDFORM.

FORM end_form.
CALL FUNCTION ‘END_FORM’.
ENDFORM.

FORM close_form.
CALL FUNCTION ‘CLOSE_FORM’.
ENDFORM.

 Execute driver program


 Material Doc: 49000000 to 49000100
 Execute
 You will find a pop-up,
 Output Device: LP01
 Print Preview

Rohini kumar
SAP-ABAP 504

Function Modules for Print Program:


1. OPEN_FORM:
Activates a form in SAP Scripts (pass Form name & Language)

2. STRAT_FORM:
It opens a form from a specific page (pass Form name & Page name)

3. WRITE_FORM:
It is for calling text elements in SAP Scripts (pass Text element name & Window name)

4. END_FORM:
It is for closing START_FORM

5. CLOSE_FORM:
It is for closing OPEN_FORM

Script Symbols:
1. * ----- default paragraph
2. ----- continous text
3. = ------- extended line
4. / ------- line field (one line gap)
5. /= ------ line field & extended line
6. /: ------ command line (it is for script commands i.e. BOX, BITMAP)
7. /* ------ comment line
8. /E ------ text element
9. TW ---- twip

1 TW = 1/20 PT (points)
1 PT = 1/72 inches

Debugging SAP Scripts:


 Go to SE71
 Form: ZFORM_GRN
 Utilities ------ Activate Debugger

 Go to SE38
 Program: ZGRN_COL_FORM
 Debugging

Rohini kumar
SAP-ABAP 505

Assignment:
PO Form

Heading Logo

Vendor Number: PO Number:

Vendor Name: PO Date:

Address:

Item no Item description UOM PO Quantity UPrice Tprice

Total Amount:

PO Quantity:

Pending Quantity:

Delivery Quantity:

Logic:
* Item number &space(5)&Item description &space(30)& Unit of measurement &space(5)&
PO Quantity &space(5)& Unit price &space(5)& Total price &space(5)&
/ BOX FORM 4 TW
/ BOX HIEGHT 2 LN FRAME 4 TW INTENSIVILY 8
/ BOX WIDTH ‘15’ CH HIEGHT ‘15’ LN FRAME 4 TW
/ BOX WIDTH ‘30’ CH HIEGHT ‘15’ LN FRAME 4 TW

Solution:
ZGRN_FORM

Rohini kumar
SAP-ABAP 506

10-11-2014
Standard Forms:
 SAP is providing standard forms which are stored in a table TNAPR
 In these standard forms we have to make our own modifications based on requirement &
customize the same in NACE T-code

Example:
Step-1: coping a standard form into user defined form
 Go to SE71
 Utilities ----- Copy From Client
 Form Name: MEDRUCK
 Source Client: 800
 Target Form: ZPO_MEDO
 Execute
 Package: YABAP
 Enter
 Create Request

Step-2: adding a logo in a form


 Go to Paint
 Design a logo
 Save it on desktop

 Go to SE78
 Expand Graphics-General Graphics
 Double click on BMAP-Bit Map Images
 Graphics ---- Input
 Apply F4 on File Name
 Select your logo
 Name: SCRIPTLOGO
 Description: script logo
 Color Bit Map Image
 Enter
 Graphic
 Transport
 Enter

 Go to SE71
 Form: ZPO_MEDD
 Change
 Page Windows
 Try to find HEADER window by selecting Next Page option
Rohini kumar
SAP-ABAP 507

 Double click on HEADER window


 Edit ---- Text Elements
 Goto ---- Change Editor
 Place cursor on INCLUDE
 Apply End by keyboard
 Enter
/: BITMAP SCRIPTLOGO OBJECT GRAPHICS ID BMAP TYPE BCOL
 Back
 Form ---- Activate
 Utilities ----- Printing Test
 Print Preview

Step-3: adding a field lable based on logic


 Go to SE71
 Form: ZPO_MEDO
 Change
 Page Windows
 Double click on INFO1 window
 Edit ---- Text Elements
 Goto ---- Change Editor
 Place cursor starting of 1st line
 Apply 4 times Enter & see that existing code should not be deleted
AS <S>Modifing Layout </>
/: IF ekko-lifnr > 1001
/ Plant ID is 1001
/: ENDIF

 Back
 Form ----- Activate

Step-4: customizing a form in NACE T-code


Note:
This job is done by MM Functional Consultant

 Go to NACE
 Application EF
 Output Types
 Position
 Output Type: NEU
 Enter
 Select NEU
 On left side double click on processing Routines
Rohini kumar
SAP-ABAP 508

 Display / Change
 Form: ZPO_MEDD
 Save
 Enter

Step-5: testing the application with ME9F


 Go to ME9F
 Vendor: 1000 to 3000
 Execute
 Select any one check box
 Display Message

Step-6: transporting a form from one client to another client


Note:
We know that SAP Script is client dependant
Using program RSTXR3TR we can transport a form from one client to another client

 Go to SE10
 Display
 Expand Main request number
 Select sub request number
 Select Truck symbol Relase
 Select main request number
 Select Truck symbol Relase

 Go to SE38
 Program: RSTXR3TR
 Execute
 Transport Request: LID0001
 Export
 File Name: ‘ZPO_MEDD’
 Execute

 Log on to 810 client


 Go to SE38
 Program: RSTXR3TR
 Execute
 Transport Request: LID0001
 Import
 File Name: ZPO_MEDD
 Execute
 Go to SE71-------- Form: ZPO_MEDO---------- Change
Rohini kumar
SAP-ABAP 509

**Smart Forms:
It is a smartest way of working with forms

** Difference between Scripts & Smart Forms:


Script Smart Forms
1. It is client dependent 1. It is client independent
2. Table is created manually using BOX 2. Table can be created automatically
through navigation
3. Data transfer between Print Program & 3. Data transfer between Print Program &
Form is record by record (window by window) Form at one time using a unique Function
Module
4. Paragraph formats & character formats 4. Paragraph formats & character formats
Cannot be reuse can be reuse
5. Back ground pictures cannot be created 5. Can be created
6. With out MAIN window you cannot work 6. You can work without MAIN window
With Scripts also
7. You cannot work with Scripts without 7. You can work
Print Program
8. ** Templates cannot be created 8. Can be created

Components of Smart Forms:


1. Form
2. Style
3. Text Module

Form:
It is a collection of Pages

Style:
It is for Paragraph Formats & Character Formats

Text Module:
Maintains conditional data

Types of Windows:
1. Main Window
2. Secondary Window
3. Final Window
4. Copies Window

Main Window:
Use this for holding dynamic length data (transactional data)
Rohini kumar
SAP-ABAP 510

Note:
Without Main window also you can work with Smart Forms

Secondary Window:
Use this for holding fixed length data (master data)

Final Window:
Use this for holding final data (totals, grand totals)

Copies Window:
Use this for copy (or) original format data

**Components of Window:
1. Text (maintains logic)
2. Template (static tables can be created)
3. Folder (holds different components together)
4. Address (maintains address)
5. ** Program Lines (create program)
6. Command (maintains page breaks)
7. Alternate (flip flop logic (if condition))
8. Loop (maintains loops)
9. Table Line (different cells logic)
[Link] (holds data dynamically)
[Link] (maintains logo)

Flow of Data in Smart Forms:


(Printer, Fax…….etc)
External Devices

Smart Form Driver Program

(Unique Function
Module)

Database
Rohini kumar
SAP-ABAP 511

Steps in Working of Smart Forms:


1. Create style (paragraph formats & character formats)
2. Create form
3. Form
3.1. Form interface (import & table parameters)
3.2. Form attributes (maintain styles)
4. Global definitions (create global variables)
5. Create page
5.1. Background picture
5.2. ** Print mode for duplex
6. Create windows
6.1. Graphics window
6.2. Text window
6.3. Alternate window
6.4. Table window
6.5. Template window
6.6. Main window……………..etc
7. Adjust windows in a layout (form painter)
8. Activate form
9. Create print program

Note:
T code for working with Smart Forms is SMARTFORMS

Rohini kumar
SAP-ABAP 512

Requirement:
PO Form

Heading Logo

Vendor Number: PO Number:

Vendor Name: PO Date:

Address:

Item no Item description PO Quantity UPrice Tprice

Total Amount:

PO Quantity:

Pending Quantity:

Delivery Quantity:

Page Number

Solution:
Step-0: creating structure
 Go to SE11
 Data Type: ZPO_STRUC
 Create
 Structure
 Enter
 Short Description: structure for PO details
Component Compenent type
EBELP EBELP
MAKTX MAKTX
MENGE MENGE
NETPR NETPR
NETWR NETWR

 Currency / Quantity
Rohini kumar
SAP-ABAP 513

Reference table Reference field


EKPO MEINS
T001 WAERS
T001 WAERS
 Activate

Step-1: (creating Paragraph Format & Character Format)


 Go to SMARTFORMS
 Style: ZPO_STYLE
 Create

P1 -Paragraph Format:
 Right click on Paragraph Formats
 Create Node
 Paragraph Formats: P1
 Enter
 Description: p1
 Font
 Font Family: COURIER
 Font Size: 12
 Font Style: BOLD

P2 -Paragraph Format:
 Right click on Paragraph Formats
 Create Node
 Paragraph Formats: P2
 Enter
 Description: p2
 Indents and Spacing
 Alignment: CENTER
 Font
 Font Family: HELVE
 Font Size: 15
 Font Style: BOLD

P3- Paragraph Format:


 Right click on Paragraph Formats
 Create Node
 Paragraph Formats: P3
 Enter
 Description: p3
 Indents and Spacing
Rohini kumar
SAP-ABAP 514

 Alignment: CENTER
 Font
 Font Family: HELVE
 Font Size: 12
 Font Style: BOLD

C1- Character Format:


 Right click on Charector Formats
 Create Node
 Charector Formats: C1
 Enter
 Font
 Font Family: HELVE
 Font Size: 10
 Font Style: BOLD
 Doble click on Header Data
 Standard Paragraph: P1
 Style----- Activate
 Enter
 Back

Step-2: creating Form (Import & Table parameters)


 Form: ZPO_FORM
 Create
 You will find a form, the left part is called Navigation Tree, the right part is called
Maintain Screen. Using Form Painter you can design layout
 By default Form Attributes is selected, on Maintaince Screen select Output Options tab
 Style: ZPO_STYLE

Import parameters:
 Double click on Form Interface
 By default Import tab is selected, provide
Parameter name Type assignment Associated type
EBELN TYPE EBELN
BEDAT TYPE BEDAT
LIFNR TYPE LIFNR

Table parameters:
 Tables
Parameter name Type assignment Associated type
IT_EKPO LIKE ZPO_STRUC

Rohini kumar
SAP-ABAP 515

Step-3: creating Global variables


 Double click on Global Definaitions
Variable name Type assignment Associated type
TOTAL TYPE DMBTR
WA_EKPO TYPE ZPO_STRUC

 Types

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lifnr,
name1 TYPE name1,
adrnr TYPE adrnr,
END OF ty_lfa1.

TYPES: BEGIN OF ty_adrc,


city1 TYPE ort01,
street TYPE stras,
END OF ty_adrc.

 Global Data
Variable name Type assignment Associated type
WA_LFA1 TYPE TY_LFA1
WA_ADRC TYPE TY_ADRC

 Form Routines
 Currency / Quantity Fields
Field name Reference table Data type
Wa_ekpo-menge wa_ekpo-menge quan
Wa_ekpo-netpr wa_ekpo-netpr curr
Wa_ekpo-netwr wa_ekpo-netwr curr

Step-4: creating windows (LOGO, PO, PAGE, HEADER, VENDOR)


Logo window:
 Right click on PAGE1
 Create------- Window
 Window: LOGO
 Meaning: window for logo
 Enter
 Right click on LOGO window
 Create ------ Graphic
 Apply F4 on Name field

Rohini kumar
SAP-ABAP 516

 You will find a pop-up Color Bit Map Image check box & Deselect Block and White
Image check box
 Execute
 Select any one Logo based on your requirement

Note:
1. In real time logo is provided by client
2. While creating logo you can adjust the size of the logo using Resolution option
3. Double click on PAGE1 on maintaince screen you will find Background Picture option
with this you can maintain background pictures in Smart Forms
4. Select Output Options tab under that you will find Print Mode. If Print Mode is D you
can provide double side printing
5. By default Page Format is Potrate Format which is for form with less fields. If form
contains more fields (say 15, 20,…….etc) use Landscape Format

PO window:
 Right click on LOGO window
 Create ------- Window
 Window: PO
 Meaning: template for po
 Enter
 Right click on PO window
 Create ------ Template
 To increase the Width & Height of a template, double click on PO window
 On maintaince screen select Output Options tab
 Width: 10
 Height: 10

Note:
Only upto 25 only we can provide for Height & Width

 Enter
 Double click on Template 1
 Select Template tab
 Increase the width of a template based on your requirement
 Right click on C1
 Split ------ Line
 Right click on C1
 Split ------ Cell
 Right click on C2
 Split ------ Cell
 Under Template tab, select Pattern option (1st button)
Rohini kumar
SAP-ABAP 517

By default all the patterns are deselected, select Display Framed Patterns option
Double click on 2nd pattern
Right click on Template 1
Create ----- Folder 1
Right click on Folder 1
Create ------ Text
Right click on Text 1
Create ------ Text
Similarly create 3 more texts (Text2, Text3, Text4)
Double click on Text1
On maintaince screen, select Output Options tab
Scroll down to bottom
Line: 1
Coloumn: 1
Double click on Text2
On maintaince screen, select Output Options tab
Scroll down to bottom
Line: 1
Coloumn: 2
Double click on Text3
On maintaince screen, select Output Options tab
Scroll down to bottom
Line: 2
Coloumn: 1
Double click on Text4
On maintaince screen, select Output Options tab
Scroll down to bottom
Line: 2
Coloumn: 2
Double click on Text1
Select Conditions
Output Options
Web Properties
General Attributes
Select Edit option
PO Number
(or)
 Goto ----- Change Editor
* PO Number
 Back

 Double click on Text2


Rohini kumar
SAP-ABAP 518

 Select Edit option


 Goto ---- Change Editor
 P1 &EBELN&
 Back
(or)
 Select Field List ON/ OFF option
 At bottom expand Import interface
 Drag & drop EBELN on Editor

 Double click on Text3


 Select Edit option
 PO Date

 Double click on Text4


 At bottom expand Import interface
 Drag & drop BEDAT on Editor

PAGE window:
 Right click on PO window
 Create ------ Window
 Window: PAGE
 Meaning: page number
 Enter
 Right click on PAGE window
 Create ---- Text
 At bottom expand System Fields
 Drag & drop PAGE on Editor (&SFSYT-PAGE&)

Note:
SFSY-is a standard structure for Smart Forms sytem fields

HEADER window:
 Right click on PAGE window
 Create ----- Window
 Window: HEADER
 Meaning: widow for header text
 Enter
 Right click on HEADER window
 Create ----- Text
 Double click on Text5
 Select Editor option
 Goto ------ Change Editor
Rohini kumar
SAP-ABAP 519

P2 REDDY LABS
P2 <C1>,,,,,,An Anji Reddy group </>
P2 <C1>,,,,,, Ameerpet-10 </>
 Back

VENDOR window:
 Right click on HEADER window
 Create ------ Window
 Window: VENDOR
 Meaning: window for vendor details
 Enter
 Right click on VENDOR window
 Create ----Flow Logic -----Program Lines
Input parameters Output parameters
LIFNR WA_LFA1
WA_ADRC
SELECT SINGLE name1 FROM LFA1 INTO wa_lfa1 WHERE lifnr = lifnr.
IF NOT wa_lfa1 IS INITIAL.
SELECT SINGLE city1 street FROM ADRC INTO wa_adrc
WHERE addrnumber = wa_lfa1-kunnr.
 Execute
 Right click on CODE1
 Create ----- Text
 Expand Global Data option
 Expand WA_LFA1
 Editor option
 Goto ---- Change Editor
* Vendor Number: &WA_LFA1-LIFNR&
* Vendor Name: &WA_LFA1-NAME1&
* City: &WA_LFA1-CITY1&
* Street: &WA_LFA1-STREET&

MAIN window:
 Right click on MAIN window
 Create ----- Table
 On maintaince screen you will find %LTYPE1
 Split %LTYPE1 into 5 equal parts
 Right click on %LTYPE1
 Insert ------ Empty Line Underneath
 Split %LTYPE2 into 2 parts

 Under Table tab


Rohini kumar
SAP-ABAP 520

 Select Pattern option


 Select Display Framed Patterns
 Double click on 2nd pattern
 Select Data tab
 Internal Table: IT_EKPO
 Into; WA_EKPO
 Select Calculations tab
Operation Field name Target field Time
SUM total wa_ekpo-netwr total after loop

 Expand HEADER option under Tables


 Right click on HEADER
 Create ----- Table Line
 Line Type: %LTYPE1
 Right click on %CELL1
 Create --- Text
 Conditions
 Output Options
 Web Properties
 General Attributes
 Edit
 Goto ----- Change Editor
P3 Item Number

 Right click on %CELL2


 Create --- Text
 Editor
 Goto --- Change Editor
P3 Item Text

 Right click on %CELL3


 Create --- Text
 Editor
 Goto --- Change Editor
P3 PO Quantity

 Right click on %CELL4


 Create --- Text
 Editor
 Goto --- Change Editor
P3 Unit Price

Rohini kumar
SAP-ABAP 521

 Right click on %CELL5


 Create --- Text
 Editor
 Goto --- Change Editor
P3 Total Price

 Right click on MAIN window


 Create ----- Table Line
 Line Type: LTYPE1

 Right click on %CELL6


 Create --- Text
 Conditions
 Output Options
 Web Properties
 General Attributes
 Editor
 Goto --- Change Editor
P3 &WA_EKPO-EBELP&

 Right click on %CELL7


 Create --- Text
 Editor
 Goto --- Change Editor
P3 &WA_EKPO-ARKTX&

 Right click on %CELL8


 Create --- Text
 Editor
 Goto --- Change Editor
P3 &WA_EKPO-MENGE&

 Right click on %CELL9


 Create --- Text
 Editor
 Goto --- Change Editor
P3 &WA_EKPO-NETPR&

 Right click on %CELL10


 Create --- Text
 Editor
Rohini kumar
SAP-ABAP 522

 Goto --- Change Editor


P3 &WA_EKPO-NETWR&

 Right click on Footer option


 Create ----- Table Line
 Line Type: LTYPE2
 Right click on CELL11
 Create ---- Text
 Conditions
 Output Options
 Web Properties
 General Attributes
P3 Total Amount

 Back
 Right click on CELL12
 Create ----- Text
 Editor
 Goto ---- Change Editor
P3 &TOTAL&
 Back

Step-5: adjust windows in a layout


 Select Form Painter option
 Adjust all the windows in layout as per client requirement (based on data size)
 The MAIN widow size should be large as it holds item data
 Form Painter

Step-6: activating form


 Select Activate

Step-7: creating driver program


 Go to SE38
 Program: ZMM_CALL_SMART_FORM
 Create
 Title: Driver program for smart form
 Type: Executable Program
 Enter
 Enter
 Write your driver program

Rohini kumar
SAP-ABAP 523

12-11-2014
Note:
SSF_FUNCTION_MODULE_NAME:
This function module returns a smart form function module generated on activation of smart
form

Ques-1:
Why we should call SSF_FUNCTION_MODULE_NAME instead of hard coding the function
module name itself?
Answer:
 We know that in real time we have to transport the objects from one client to another
client
 If the form is in Quality Server the system may assign a different version of function
module name to respective form & the same happen in Production Server also
 So therefore it always advisable to call SSF_FUNCTION_MODULE_NAME which
returns the function module currently which system you are working

Ques-2:
What are the common errors you are facing while working with smart forms?
Answer:
1. Incorrect parameter with call function
This exception you will get if you not pass all the parameters which you maintained in smart
form

2. Type conflict when calling a function module


This exception you will find when data type of smart form parameters will not match with
attributes of print program

3. Reference field …………unknown in form


This error you will find if you are not maintaining Currency / Quantity fields in smart form

4. *** sometimes your print program will not be executed at all


This will happen when your Window (specially Templates) are not maintained properly

5. Template does not fit into window


This will happen when template height is more than window height

6. Form generation error


This error you will find if form is having internal errors in Production Server thow it is perfectly
tested in Development Server

Rohini kumar
SAP-ABAP 524

7. *** Table is wider than window


This error you will find if your Table (or) Template is wider than your window based on which
is created

8. Graphic cannot be displayed


This error you will find if graphic is not maintained properly

Ques-3:
How do you work with Alternate option in smart form?
Answer:
 Righ click on any one Window (say LOGO)
 Create ----- Window Alternate
 Right click on Alternate Window
 Create ----- Flow Logic ------- Alternate
 Conditions option
Field name Relational Operator
LIFNR double click

 Select =/= (NE) option


Comparision Values
‘ ’
 Right click on True option
 Create ------ Text
 Editor
 PO Created

 Right click on Flase option


 Create ----- Text
 Editor
 PO not created

 Form Painter
 Adjust Alternate window
 Activate form

Ques-4:
How you can work with more than one Page in smart form?
Answer:
 Right click on PAGE1
 Create ------ Page
 Right click on PAGE2
Rohini kumar
SAP-ABAP 525

 Create ---- Window


 Window: LETTER
 Meaning: Window for letter description
 Save
 Right click on LETTER window
 Create ----- Text
 Editor
 Goto ------ Change Editor
* ,,,,,,,,,,Dear Satya,
* ,,,,,,,,,,Yor are shortlisted in Google as a Technical Consultant
* ,,,,,,,,,,Thanking you,

 Back
 Double click on MAIN window
 Window Type: Secondary Window
 Double click on PAGE1
 Next Page: PAGE2
 Double click on PAGE2
 Next Page:______
 Activate form

*** Ques-5:
How you can convert a smart form into PDF format?
Answer:
 Run your print program
 Provide input
 Execute
 Select Print option (Ctrl + P)
 At bottom you will find a print request number note down it (say 11,5716)
 Go to SE38
 Program: RSTXPDFT4
 Execute
 Spool Request: 11,5716
 Execute
 Save

Ques-6:
How you can debug a smart form?
Answer:
 Go to SMARTFORMS
 Form: ZPO_FORM
 Change
Rohini kumar
SAP-ABAP 526

 Expand VENDOR window


 Double click on CODE1
 Provide BREAK-POINT
 Activate form
 Go to SE38
 Program: ZMM_CALL_SMART_FORM (print program)
 Execute

Note:
In smart forms you can set only Static Break Point. You cannot set Dynamic Break Point

Ques-7:
How you can work with Excel Sheet in smart forms?
Answer:
DATA fnam TYPE STRING.

CALL FUNCTION ‘GUI_DOWNLOAD’

Ques-8:
How you can print multiple records in smart forms?
Answer:
ZMM_CALL_SMART_FORMN

TABLES: EKPO, EKKO, LFA1, ADRC.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
SELECTION-SCREEN: END OF BLOCK b1.

DATA: fname TYPE RS38L_FNAM,


control TYPE SSFCTRLOP.

DATA: BEGIN OF wa_ekko,


ebeln TYPE ebeln,
bedat TYPE bedat,
lifnr TYPE lifnr,
END OF wa_ekko.

DATA: wa_ekpo TYPE zpo_strucc,


it_ekpo TYPE TABLE OF zpo_strucc.

DATA: fnam TYPE STRING.


Rohini kumar
SAP-ABAP 527

CONTROL-NO_OPEN = ‘X’.
CONTROL-PREVIEW = ‘X’.
CONTROL-NO_DIALOG = ‘X’.
CONTROL-NO_CLOSE = ‘X’.

START-OF-SELECTION.

CALL FUNCTION ‘SSF_OPEN’


EXPORTING
USER_SETTINGS = ‘X’.
CONTROL_PARAMETERS = control.

CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’


EXPORTING
FORMNAME = ‘ZPO_FORM’
IMPORTING
FM_NAME = FNAME.

LOOP AT S_EBELN.
PERFORM get_data USING s_ebeln-low.

CALL FUNCTION FNAME


EXPORTING
CONTROL_PARAMETERS = control
EBELN = s_ebeln-low
BEDAT = wa_ekko-bedat
LIFNR = wa_ekko-lifnr
TABLES
IT_EKPO = it_ekpo.
ENDLOOP.

CALL FUNCTION ‘SSF_CLOSE’.

FORM get_data USING ORDER.


SELECT SINGLE ebeln bedat lifnr FROM EKKO INTO wa_ekko
WHERE ebeln EQ ORDER.

IF NOT wa_ekko IS INITIAL.


SELECT ebelp txz01 menge netpr netwr FROM EKPO INTO TABLE it_ekpo
WHERE ebeln = wa_ekko-ebeln.
ENDIF.
ENDLOOP.
Rohini kumar
SAP-ABAP 528

Ques-9:
How you can migrate SAP Script to smart form?
Answer:
 Go to SMARTFORMS
 Utilities ---- Migration ----- Import SAP Script Form
 Form: ZPO_MEDD
 Name: ZPO_MEDD
 Enter

Ques-10:
How you can generate smart form into PDF format during runtime of print program?
Answer:

Ques-11:
How you can send of a form in the form of mail?
Answer:

Ques-12:
How you can write code in smart forms?
Answer:

Ques-13:
How you can maintain Page Breaks in smart forms?
Answer:

Rohini kumar
SAP-ABAP 529

13-11-2014
SAP Enhancements:
 SAP is highly customizable
 Using SAP Enhancements you can add additional functionalitites in existing once
without disturbing the same

Types of SAP Enhancements:


1. Userexits
2. Customerexits
3. BADI
4. Enhancement Frame Work
5. BTE

Userexits:
Userexits are empty code blocks within subroutines

Object:
Validate sales order application using Userexits

Business Requirements:
 In real time using VA01 application sales order is created which is again modified by
using VA02
 Write an enhancement to validate VA02 such that one user created sales order is allowed
to modify is by same user only

Solution:
 Go to SE38
 Program: MV45AFZB
 Display
 Select Enhance option
 Edit ---- Enhancement Operations ----- Show Implicit Enhancement Options
 Try to search for USEREXIT_CHECK_VBAK subroutine
 Right click on spot under form USEREXIT_CHECK_VBAK
 Enhancement Implementation ----Create Implementation
 You will find a message, select Code option
 You will find a pop-up, select Create option
 Again you will find a pop-up, provide
 Enhancement Implementation: ZENC_VA02
 Short Text: enhancement for VA02 implementation
 Enter
 Enter

Rohini kumar
SAP-ABAP 530

 Enter
 Again you will find that pop-up, select your Enhancement name i.e. ZENC_VA02
 Enter
IF SY-TCODE EQ ‘VA02’.
IF VBAK-ERNAM NE SY-UNAME.
MESSAGE ‘Access denied’ TYPE ‘E’.
ENDIF.
ENDIF.

 Activate

Testing the Application:


 Go to VA02
 Order: 4969
 Enter
 You will find a pop-up, Enter

Navigation for Deleting Enhancement:


 Go to SE38
 Program: MV45AFZB
 Display
 Enhance
 Place cursor on your enhancement name i.e. ZENC_VA02
 Right click on it
 Enhancement Implementation ----- Undo Implementation
 Activate

Note:
 MV45AFZB & MV45AFZZ are the very important Userexits for VA01, VA02
application which we are working in real time
 Currently Userexits are outdated except above

Rohini kumar
SAP-ABAP 531

Customerexits:
 Customerexits are advanced to Userexits
 Instead of adding customization in existing code it is always better to provide your own
customization using a T code which is done by Customerexits

Note:
Customerexits is based on Fucntional Consultant

Types of Customerexits:
1. Function Exits
2. Menu Exits
3. Screen Exits
4. Field Exits

Function Exits:
Object:
Validate vendor master application for postal code

Business Requirement:
 Some times users will not enter Postal code, City, Tax code……..etc in an application
which are optional but important for clients
 Provide validation such that without entering Postal code the transaction should not be
created

Note:
** The T code for working Customerexits is CMOD
** The T code for identifying Customerexits for an application is SMOD

Solution:
Step-1: identifying Package name of an application
 Go to XK01
 System -----Status
 Double click on Program Name
 Goto ---- Attributes
 Note down package name (FBK)

Step-2: identifying Customerexits for an application


 Go to SMOD
 Apply F4 on Enhancement field
 You will find a pop-up, at bottom select Information System button
 Package: FBK

Rohini kumar
SAP-ABAP 532

 Enter
 Note down Customerexits (SAPMF02K)

Note:
In real time Customerexits for an application is provided by Functional Consultant

Step-3: writing enhancement


 Go to CMOD
 Project: ZENC_XK01
 Create
 Short Text: customerexits for xk01
 Save
 Enhancement Assignments button
 Select your enhancement SAPMF02K
 Enter

 You may find an error message ‘SAP enhancement……….SAPMF02K already belongs


to project……….’
 If you are getting such error you have to delete the old enhancement

Deleting Customerexits Enhancement:


 Note down old enhancement name (ZH1XK01)
 Go to /OCMOD
 Project: ZH1XK01
 Deactivate
 Delete option
 Yes
 Enter

Note:
** In Customerexits you cannot reuse the same exit in more than one project

 Select Components option


 Yes
 Double click on function module EXIT_SAPMF02K_001
 Scroll down to bottom
 Double click on INCLUDE
IF I_LFA1-PSTLZ IS INITIAL.
MESSAGE ‘Enter postal code’ TYPE ‘E’.
ENDIF.
 Activate
 Back
Rohini kumar
SAP-ABAP 533

 Back
 Back
 Activate project

Testing the Application:


 Go to XK01
 Vendor: 4275
 Create

Rohini kumar
SAP-ABAP 534

Menu Exits:
Add a menu in MC94 application

Solution:
Step-1: identifying Package name of an application
 Go to MC94
 System -----Status
 Double click on Program Name
 Goto ---- Attributes
 Note down package name (MCP2)

Step-2: identifying Customerexits for an application


 Go to SMOD
 Apply F4 on Enhancement field
 You will find a pop-up, at bottom select Information System button
 Package: MCP2
 Enter
 Note down Customerexits (MCP20003)

Step-3: writing enhancement


 Go to CMOD
 Project: ZENC_MC94
 Create
 Short Text: customerexits for mc94
 Save
 Enhancement Assignments button
 Select your enhancement MCP20003
 Enter

 You may find an error message ‘SAP enhancement……….MCP20003 already belongs to


project……….’
 If you are getting such error you have to delete the old enhancement

Deleting Customerexits Enhancement:


 Note down old enhancement name (ZHMC94)
 Go to /OCMOD
 Project: ZHMC94
 Deactivate
 Delete option
 Yes
 Enter
 Close
Rohini kumar
SAP-ABAP 535

 Select Components option


 Yes
 Display / Change option
 Display / Chane option
 Double click on +CU1
 Function Text: Call FAGLL03
 Enter
 Double click on +CU2
 Function Text: Call FBL5N
 Enter
 Double click on EXIT_SAPMMCP6_003
 Scroll down to bottom
 Double click on INCLUDE ZXSOPU03
 Display / Change option
CASE I_FCODE.
WHEN ‘+CU1’.
CALL TRANSACTION ‘FAGLL03’.
WHEN ‘+CU2’.
CALL TRANSACTION ‘FBL5N’.
ENDCASE.

 Activate
 Back
 Back
 Back
 Activate project

Testing the Application:


 Go to MC94
 Planning Type: apply F4 select any one
 Enter
 Active Version
 Extras ---- Customer Functions ---- Call FAGLL03
 ------ Call FBL5N

Rohini kumar
SAP-ABAP 536

Screen Exits:
Object:
Add a screen with following fields in CS01, CS02, CS03 applications
ZZORDER PO number
ZZDATE PO date
ZZVENDOR vendor number

Solution:
Step-1: adding fields to table
 Go to SE11
 Database Table: STKO
 Display
 Append Structure
 You will find a message, Enter
 Append Name: ZSTKO_APP
 Enter
 Short Description: Additional fields for stko table
Component Component Type
ZZORDER EBELN
ZZDATE BEDAT
ZZVENDOR LIFNR

 Activate

Step-2: identifying Package name of an application


 Go to CS01
 System -----Status
 Double click on Program Name (screen)
 Goto ---- Attributes
 Note down package name (CS)

Step-3: identifying Customerexits for an application


 Go to SMOD
 Apply F4 on Enhancement field
 You will find a pop-up, at bottom select Information System button
 Package: CS
 Enter
 Note down Customerexits (PCSP0003)

Step-4: writing enhancement


 Go to CMOD
 Project: ZENC_CS01
Rohini kumar
SAP-ABAP 537

 Create
 Short Text: customerexits for cs01
 Save
 Enhancement Assignments button
 Select your enhancement PCSP0003
 Enter
 Select Components option
 Yes
 Double click on 0114
 You find a message, select Maintain in Original Language option
 You should find a message ‘for program SAPLXCSA is been created’, Enter

 If you are not getting such message you have to delete the old enhancement

Deleting Customerexits Enhancement:


 Go to /OSE51
 Project: SAPLXCSA
 Screen Number: 1100
 Delete option
 Yes
 Enter
 Close

 Short Description: Sub Screen 1100


 Sub Screen
 Layout
 F6
 Table Name: STKO
 Enter
 Scroll down to bottom
 Select your fields (ZZORDER, ZZDATE, ZZLIFNR), Enter
 Place the fields on the screen
 Activate
 Back

 Double click on EXIT_SAPLCSDI_004


 Double click on CSCI_STKO
 Append Structure
 Enter
 Append Name: ZCSCI_APP
 Enter
 Short Description: additional fields
Rohini kumar
SAP-ABAP 538

Component Component Type


ZZORDER EBELN
ZZDATE BEDAT
ZZVENDOR LIFNR

 Activate
 Back
 Back
 Scroll down to bottom
 Double click on INCLUDE ZXCSAU04
 Display / Change option
TABLES STKO.

STKO-ZZEBELN = USERDATA-ZZORDER.
STKO-ZZDATE = USERDATA-ZZDATE.
STKO-LIFNR = USERDATA-ZZLIFNR.
 Activate
 Back
 Back
 Double click EXIT_SAPLSOI_005
 Double click on INCLUDE
 Display / Change option
USERDATA-ZZORDER = STKO-ZZEBELN.
USERDATA-ZZDATE = STKO-ZZBEDAT.
USERDATA-ZZLIFNR = STKO-ZZLIFNR.
 Activate
 Back
 Back
 Back
 Activate project

Testing the Application:


 Go to CA01
 Material: 100-101
 Bom: 1
 Header (cap symbol)
 Customer Fields
 Purchase Document: 30005
 Po Date: 11.11.2014
 Vendor: satya
 Save

Rohini kumar
SAP-ABAP 539

14-11-2014
Assignment:
Add following fields in ME21N, ME22N, ME23N
ZZDEL Delivery priority
Customerexit: MM06C005

Solution:

Rohini kumar
SAP-ABAP 540

Fieldexits:
Using fieldexits you can modify field labels of data elements in data dictionary

Example:
 Go to CMOD
 Goto ----- Text Enhancements ------Keywords ----Change
 Data Element: REGIO
 Enter
 Shot Field Lable: State
 Medium Field Lable: State
 Long Field Lable: State
 Heading: State
 Short Description: State
 Save

Note:
SAP is not recommending Fieldexits in real time

Rohini kumar
SAP-ABAP 541

BADI:
 Bussines Addins
 It is based on object oriented programming
 In Userexits (Customerexits) the same exit cannot be reuse in other projects
 In BADIs the same BADI definition can be implemented in N number of
implementations
 BADI concept is purly designed based on object oriented programming
 For implementing BADI, SAP will provide you an interactive & respective
implementation class
 Here interface is a collection of methods where you have to implement the additional
code

Note:
T codes for working with BADIs are
1. SE18 -------- for BADI definition
2. SE19 -------- for BADI implementation

Types of BADI:
1. Standard BADI
2. Custom BADI
3. Filter BADI

Rohini kumar
SAP-ABAP 542

***Standard BADI:
 In Standard BADI, BADI definitions are predefined (given by SAP)
 In Standard BADI we have to provide only implementation section

Object-1:
Validate customer master application for postal code

Solution:
 Go to SE19
 Classic BADI
 BADI Name: CUSTOMER_ADD_DATA
 Create Impl
 Enter
 Implementation Name: ZXD01_IMPL
 Enter
 Short Text: implementation for xd01 application
 Interface tab
 Double click on CHECK_ALL_DATA
 Yes
 Enter
 You may find a message ‘implementation ZXD01_IMPL migrated’, Enter
 You will find a pop-up, Select Create option
 Again you will find a pop-up, provide
 Enhancement Implementation: ZCUSTOMER_IMPL
 Short Text: implementation for xd01 application
 Enter
 Select your implementation (ZXD01_IMPL)
 Enter
 You may find a wrong method
 Back
 Again double click on CHECK_ALL_DATA
 Place cursor between METHOD………..ENDMETHOD

IF S_KNA1-PSTLZ IS INITIAL.
MESSAGE ‘Enter postal code’ TYPE ‘E’.
ENDIF.

 Activate
 Back
 Activate

Rohini kumar
SAP-ABAP 543

Testing the Application:


 Go to XD01
 Account Group: 004 bill to party
 Customer number: 5869
 Enter
 Title: Mr
 Name: satya
 City: Hyderabad
 Country: IN
 Save
 You will find an error message ‘Enter postal code’

Rohini kumar
SAP-ABAP 544

Watch Point:
 Watch point is a cleaver break point
 Use watch point for watching the errors in standard applications
 The another purpose of watch point is to watch a specific record in an internal table
during debugging

Note:
You can keep maximum 5 wach points in ABAP for a specific report

Example:
 Go to XD01
 Provide required input
 Save
 Apply /H in Command prompt (/H is a T code for debugging)
 Enter
 Enter
 Watch point button
 You will find a pop-up, provide
 ***Variable: SY-MSGTY (system field for capturing messages)
 Enter
 You will find a message ‘watch point created’
 F7

Rohini kumar
SAP-ABAP 545

Navigation for Finding BADI:


1st Method:
 Go to SE90
 Expand Enhancements option
 Expand Bussiness Add-ins
 Double click on Definitions
 Execute

2nd Method:
 Go to SE80
 Select Package
 Provide CS
 Enter
 Expand Enhancements
 Expand Classic BADIs Def

*** 3rd Method:


 Go to SE24
 Object Type: CL_EXITHANDLER
 Display
 Double click on method GET_INSTANCE
 Place cursor at call method CL_EXITHANDLER
 GET_CLASS_NAME_BY_INTERFACE
 Select Dynamic Break Point, stop

 Go to CS01
 Variable: EXIT_NAME
 F7………….
 Material: 100-101
 Plant: 1000
 Bom: 1
 Enter

Rohini kumar
SAP-ABAP 546

Object-2:
Validate BOM application (CS01) for alternate Bom

Business Requirement:
 In real time every material is having an alternate Bom
 But some materials alternate Bom not possible
 Provide to control on such materials such that user try to create alternate Bom system
through an error

Solution:
 Go to SE19
 Classic BADI
 BADI Name: BOM_UPDATE
 Create Impl
 Enter
 Implementation Name: ZBOM_IMPL
 Enter
 Short Text: implementation for BOM application
 Interface tab
 Double click on CHANGE_AT_SAVE
 Yes
 Enter
 You may find a wrong method
 Back
 Again double click on CHANCE_AT_SAVE
 Place cursor between METHOD………..ENDMETHOD

DATA: WA TYPE STPOB.

LOOP AT DELTA_STPOB INTO WA.


IF WA_IDNRK EQ ‘100-101’.
IF I_STLAL > 1.
MESSAGE ‘Alternate Bom not allowed’ TYPE ‘E’.
ENDIF.
ENDIF.
ENDLOOP.

 Activate

Rohini kumar
SAP-ABAP 547

Testing the Application:


 Go to CS01
 Material: 100-101
 Plant: 1000
 Bom: 1
 Save
 You will find an error message ‘Alternate Bom not allowed’

***Assignment:
 In MIRO (or) MIGO you will find posting date & document date
 Posting date never be less than document date
 Provide control such that if user provides document date greather than posting date gives
error

BADI Definition: INVOICE_UPDATE

Solution:

Rohini kumar
SAP-ABAP 548

Object-3:
Add a menu in FBL5N application

Solution:
 Go to SE90
 Expand Enhancements
 Expand Bussiness Addins
 Double click on Definitions
 Package: FREP
 Execute
 Note down BADI name

 Go to SE19
 Classic BADI
 BADI Name: F5_ITEMS_MENUE01
 Create Impl
 Enter
 Implementation Name: ZFI_ITEM
 Enter
 Short Text: implementation for FBL5N application
 Interface tab
 Double click on LIST_ITEMS01
 You may find a wrong method
 Back
 Again double click on LIST_ITEMS01
 Place cursor between METHOD………..ENDMETHOD

CALL TRANSACTION ‘FAGLL03’

 Activate
 Back
 Double click on LIST_ITEMS02
 Place cursor between METHOD………..ENDMETHOD

CALL TRANSACTION ‘FBL5N’

 Activate
 Back
 Activate

Rohini kumar
SAP-ABAP 549

Testing the Application:


 Go to FBL5N
 Customer Account: 1000
 Execute
 Extras ------Call FBL5N
o ----- Call FAGLL03

Rohini kumar
SAP-ABAP 550

Object-4:
Add a screen in XD01, XD02 with following field
Sales Manager

Solution:
 Go to SE11
 Database Table: KNA1
 Display
 Append Structure
 Create Append
 Append Name: ZKNA1_APP
 Enter
 Short Text: Additional fields
Component Component Type
ZZSM ZSM

 Activate

 Go to SPRO
 Select SAP Reference Img option
 Expand Logistic General
 Expand Bussiness Partner
 Expand Customers
 Expand Control
 Expand Adaption of Customers Own Master Data Fields
 Select Prepare Modification- Free Enhancement of Customer Master Record
 You will find a message, Enter
 New Entries
Screen Grp Description
Z5 Sales manager

 Save
 On left side double click on Label Tab Pages by selecting Screen Grp Z5
 You will find another screen
 Select New Entries button
Number Function Code Description
5000 TAB1 Sales manager
 Save
 Back
 Back
 Back
 Back
Rohini kumar
SAP-ABAP 551

 Select 2nd option Bussiness Addin Processing of Master data Enhancements


 You will find a pop-up, at bottom select Create option
 Implementation Name: ZCUST_ADD_SM
 Enter
 Implementation Short Text: Badi implementation
 Save
 You may find a message ‘implementation ZCUST_ADD_SM migrated’, Enter
 At bottom select Create option
 Enhancement Implementation: ZSM_IMPL
 Short Text: Addition of extra field
 Select your implementation name (ZSM_IMPL)
 Enter
 Interface tab
 Scroll down to bottom, Double click on last method CHECK_ADD_ON_ACTIVE
 Place cursor between METHOD………..ENDMETHOD

IF I_SCREEN_GROUP EQ Z5.
E_ADD_ON_ACTIVE = ‘X’.
ENDIF.

 Activate
 Back
 Activate
 Back
 Select 3rd option Bussiness Addin Customer Sub screen
 You will find a pop-up, at bottom select Create option
 You will find a pop-up, provide
 Implementation Name: ZCUST_CS_DATA
 Enter
 Implementation Short Text: Badi implementation
 Attributes tab
 Scroll down to bottom
 Select ‘+’ Insert Row
Screen Grp
Z5

 Save
 You may find a message, Enter
 You will find pop-up, at bottom select Create option
 Enhancement Implementation: ZSM_IMPL_SM
 Short Text: Badi implementation
 Enter
Rohini kumar
SAP-ABAP 552

 You will find a pop-up, select your implementation name ZSM_IMPL_SM


 Enter
 Interface tab
 Scroll vertical scroll bar up
 Double click on GET_TAXI_SCREEN
 Place cursor between METHOD………..ENDMETHOD

CASE I_TAXI_FCODE.
WHEN ‘TAB1’.
E_SCREEN = ‘5000’.
E_PROGRAM = ‘ZBADI_SM’.
ENDCASE.

 Activate
 Back
 Activate

 Go to SE38
 Program: ZBADI_SM
 Create
 Title: Sales manager
 Type: Module Pool
 Enter

 Go to SE51
 Program: ZBADI_SM
 Screen Number: 5000
 Create
 Short Description: Sub Screen 5000
 Sub Screen
 Layout
 F6
 Table Name: KNA1
 Enter
 Scroll down to bottom, select your field name ZZSM
 Enter
 Place the field on the screen
 Flow Logic
 Remove comment for MODULE STATUS_5000
 Double click on STATUS_5000
 Yes
 Main Program
Rohini kumar
SAP-ABAP 553

 Enter
 Yes

TABLES KNA1.

 Place cursor between MODULE……….ENDMODULE of STATUS_5000

IF SY-TCODE EQ ‘XD03’.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘KNA1-ZZSM’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

 Activate
 Back
 Activate

Testing the Application:


 Go to XD01
 Account Group: bill to party
 Customer: 500025
 Enter
 Title: Mr
 Name: Satya
 Search Term: 1
 Street: LB Nagar
 Postal code: 500074
 City: Hyderabad
 Country: IN
 Enter
 You will find your screen with Sales manager field

Rohini kumar
SAP-ABAP 554

***Assignment:
Add following fields in VL01N, VL02N
Order number
Order date
Delivery challana number
Delivery challana date
Driver
Hint:
Add fields in LIKP table
BADI name is LE_SHP_TAB_CUST_HEAD

Solution:

Rohini kumar
SAP-ABAP 555

Custom BADI:
In Custom BADI, BADI definition is custom defined

Filter BADI:
 It is a part of Custom BADI
 In Filter BADI, the same definition can be called in different implementations

Object:
Determine tax code for sales organization

Solution:
 Go to SE18
 Utilities --- Create Classic BADI
 Definition Name: ZBADI_CUST_FILTER
 Enter
 Scroll down to bottom, select Filter Depend check box
 Filter Type: VKORG
 Save
 Interface tab

Note:
Based on your definition name system will create an interface ZIF_EX_BADI_CUST_FILTER

 Double click on interface name ZIF_EX_BADI_CUST_FILTER

Method Level Description


GET_TAX INSATANCE getting tax details

 Select method GET_TAX


 Parameters

Parameter Type Associated Type


P_TAX CHANGING I

 Activate
 During activation you will find a message, Enter
 Once your interface is activated system will add additional parameter FLT_VAL based
on your filter type VKORG

 Go to SE19
 Classic BADI
 BADI Name: ZBADI_CUST_FILTER
Rohini kumar
SAP-ABAP 556

 Create Impl
 Enter
 Implementation Name: ZBADI_FIL
 Enter
 Short Text: implementation for filter badi
 Scroll down to bottom
 Select ‘+’ Insert Row

Sales org
1000

 Save
 Interface tab
 Double click on GET_TAX
 Place cursor between METHOD………..ENDMETHOD

IF FLT_VAL = ‘1000’.
P_TAX = 10.
ENDIF.

 Activate
 Back
 Activate
 Back

 Classic BADI
 BADI Name: ZBADI_CUST_FILTER
 Create Impl
 Enter
 Implementation Name: ZBADI_FIL
 Enter
 Short Text: implementation for filter badi
 Attributes
 Scroll down to bottom
 Select ‘+’ Insert Row

Sales org
1020

 Save
 Interface tab
 Double click on GET_TAX
Rohini kumar
SAP-ABAP 557

 Place cursor between METHOD………..ENDMETHOD

IF FLT_VAL = ‘1020’.
P_TAX = 12.
ENDIF.

 Activate
 Back
 Activate
 Back

 Classic BADI
 BADI Name: ZBADI_CUST_FILTER
 Create Impl
 Enter
 Implementation Name: ZBADI_FIL
 Enter
 Short Text: implementation for filter badi
 Scroll down to bottom
 Select ‘+’ Insert Row

Sales org
1030

 Save
 Interface tab
 Double click on GET_TAX
 Place cursor between METHOD………..ENDMETHOD

IF FLT_VAL = ‘1030’.
P_TAX = 8.
ENDIF.

 Activate
 Back
 Activate

 Go to SE38
 Program: ZCAL_CUSTOM_FILTER_BADI
 Create
 Title: Method of filter badi
 Type: Executable Program
Rohini kumar
SAP-ABAP 558

 Save

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETERS v_vkorg TYPE vkorg.
SELECTION-SCREEN: END OF BLOCK b1.

DATA v_tax TYPE I.

DATA obj TYPE REF TO ZFI_EX_BADI_CUST_FILTER.

* get reference of the class implemented


CALL METHOD CL_EXITHANDLER=>GET_INSTANCE
CHANGING
INSTANCE = obj.

IF SY-SUBRC NE 0.
MESSAGE ‘Error in calling BADI’ TYPE ‘E’.
ELSE.
CALL METHOD obj->get_tax
EXPORTING
FLT_VAL = V_VKORG
CHANGING
P_TAX = V_TAX.

IF NOT V_TAX IS INITIAL.


WRITE:/ ‘The tax code for sales organization’, V_VKORG ‘is’, V_TAX.

ENDIF.
ENDIF.

Rohini kumar
SAP-ABAP 559

Enhancement Framework:
 BADIs are based on object oriented programming
 But SAP is not providing BADIs for all requirements
 Restricted to specific applications & only for specific requirements
 Using Framework you can enhance all types of SAP objects

Object-1:
 In VA01 you will find a field called Sales office, which is meant for sales office data
 Generally clients are instructed not to enter Sales office data as it pickup automatically
from master data (KNVV table)
 Some times clients will enter wrong data into Sales office, which is wrongly updated to
transactional tables
 Provide an enhancement to deselect Sales office field

Solution:
 Go to VA01
 Apply F1 on Sales office
 You will find a pop-up, select 4th option Technical Information
 Double click on Screen 101
 Double click on FELDAUSWAHL-101
 Double click on subroutine FELDAUSWAHL-101
 Enhance
 Edit ---- Enhancement Operations ----Show Implicit Enhancement Options
 Right click under spot under FORM FELDAUSWAHL-101
 Enhancement Implementation ----Create Implementation
 Code
 Create
 Enhancement Implementation: ZVA01_IMPL
 Enter
 Select your implementation name ZVA01_IMPL
 Enter

IF SY-TCODE EQ ‘VA01’.

LOOP AT SCREEN.

IF SCREEN-NAME EQ ‘VBAK-VKBUR’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.

Rohini kumar
SAP-ABAP 560

ENDLOOP.
ENDIF.

 Activate

Testing the Application:


 Go to VA01
 Sales office is in display mode

Rohini kumar
SAP-ABAP 561

Object-2:
Provide Profit center as obligatory in F-28 application

Solution:
 Go to F-28
 Apply F1 on Profit Center
 Technical Information
 Double click on Screen 103
 Double click on DYNPRO_KOPF_MODIF
 Double click on subroutine DYNPRO_KOPF_MODIF
 Enhance
 Edit ---- Enhancement Operations ----Show Implicit Enhancement Options
 Right click under spot under FORM DYNPRO_KOPF_MODIF
 Enhancement Implementation ----Create Implementation
 Code

LOOP AT SCREEN.

IF SCREEN-NAME EQ ‘BSEG-PRCTR’.
SCREEN-REQUIRED = 1.
MODIFY SCREEN.
ENDIF.

 Activate

Testing the Application:


 Go to F-28
 There you will find Profit center became mandatory

Rohini kumar
SAP-ABAP 562

Object-3:
 In MB31 you will find Document date & Posting date as current date
 Provide an enhancement such that I want both the dates by default as previous dates

Solution;
 Go to MB31
 Apply F1 on Document date
 Technical Information
 Double click on Screen 300
 Double click on MODULE BELEGKOPF_VORGSCHLOG
 You will find a subroutine, Double click on it
 Enhance
 Edit ---- Enhancement Operations ----Show Implicit Enhancement Options
 Right click on spot above ENDFORM
 Enhancement Implementation ----Create Implementation
 Code
 Create
 Enhancement Implementation: ZMB_MB31
 Short Text: Implementation for MB51 application
 Enter
 Select your implementation ZMB_MB31
 Enter

MKPF-BUDAT = SY-DATLO - 1.
MKPF-BLDAT = SY-DATLO - 1.

 Activate

Testing the Application:


 Go to MB31
 There you will find previous date

Rohini kumar
SAP-ABAP 563

*** Object-4:
Add following fields in FB03 application
Dmbtr, Hlcont

Solution:
 Go to SE11
 Data Type: BKPF_ALV
 Display
 Append Structure
 Enter
 Append Name: ZBKPF_APP
 Enter
 Short Description: Additional fields
Component Component Type
HKONT HKONT
DMBTR DMBTR

 Currency / Quantity Fields


Reference Table Reference Field
T001 WAERS

 Activate

 Go to FB03
 Document List
 Apply F1 on Document number
 Technical Information
 Double click on Program name
 Go to REUSE_ALV_GRID_DISPLAY
 Find internal table
 Enhance
 Edit ---- Enhancement Operations ----Show Implicit Enhancement Options
 Right click on spot under FORM GRID_DISPLAY
 Enhancement Implementation ----Create Implementation
 Code
 Create
 Enhancement Implementation: ZENC_FB03
 Short Text: Implementation for FB03 application
 Enter
 Select your implementation ZENC_FB03
 Enter

Rohini kumar
SAP-ABAP 564

DATA: wa_s1 TYPE BKPF_ALV,


It_i1 TYPE TABLE OF BKPF_ALV.

TYPES: BEGIN OF ty_bseg1,


Belnr TYPE belnr_D,
Hkont TYPE hkont,
Dmbtr TYPE dmbtr,
Gjahr TYPE gjahr,
END OF ty_bseg1.

DATA: wa_bseg1 TYPE ty_bseg1,


It_bseg1 TYPE TABLE OF ty_bseg1.

APPEND LINES OF GT_YBKPF_ALV TO IT_I1.

REFRESH GT_YBKPF_ALV.

SELECT belnr hkont dmbtr FROM BSEG INTO TABLE it_bseg1


WHERE belnr = wa_s1-belnr.

Testing the Application:


 Go to FB03
 Document List
 Company code: 1000
 Document number: 100000000
 Execute
 Change Layout
 Scroll down to bottom
 Double click on G / L Account
 Double click on Amount_In_LC
 You will find your fields

Rohini kumar
SAP-ABAP 565

Object-5:
Add screen in VF01, VF02, VF03 with ZZBOXNO, ZZSIZE, ZZTEXT

Solution;
 Go to SE11
 Database Table: VBRK
 Display
 Append Structure
 Create Append
 Append Name: ZVBRK_APP
 Enter
 Short Description: Additional fields
Component Component Type
ZZBOXNO ZBOXNO
ZZSIZE ZSIZE
ZZTEXT ZTEXT

 Activate

 Go to SE80
 Program: SAPMV60A
 At bottom, expand Screens option
 Find 6001 screen & double click on it
 Double click on MODULE CUST_HEAD_ACTIVATE
 You will find a subroutine, double click on it
 Enhance
 Right click under FORM CUST_HEAD_ACTIVATE

LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘TABSTRIP_TAB06’.
GS_CUST_TAB_HEAD_OPTION = ‘invocice’.
GS_CUST_TAB_HEAD_PROGRAM = ‘ZSD_INVV’.
GS_CUST_TAB_HEAD_DYNPRO = ‘100’.

IF SCREEN-ACTIVE = 1.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.

TABSTRIP_TAB06 = GS_CUST_TAB_HEAD_CAPTION.
ENDIF.

Rohini kumar
SAP-ABAP 566

ENDLOOP.

 Activate

 Go to SE38
 Program: ZSD_INVV
 Create
 Title: Invoice details
 Type: Modulpe Pool
 Save

 Go to SE51
 Program: ZSD_INVV
 Screen: 100
 Create
 Short Description: Sub screen 100
 Sub Screen
 Layout
 F6
 Table Name: VBRK
 Enter
 Scroll down to bottom, select your fields
 Enter
 Place the fields on screen
 Flow Logic
 Remove comment for MODULE STATUS_100
 Double click on STATUS_100
 Yes
 Main Program
 Enter
 Yes

IF SY-TCODE EQ ‘VF03’.
LOOP AT SCREEN.
IF SCREEN-NAME EQ ‘VBRK-ZZBOXNO’
OR SCREEN-NAME EQ ‘VBRK-ZZSIZE’
OR SCREEN-NAME EQ ‘VBRK-ZZTEXT’.
SCREEN-INPUT = 0.
ENDIF.
ENDLOOP.
ENDIF.

Rohini kumar
SAP-ABAP 567

 Activate
 Back
 Activate

Testing the Application:


 Go to VF02
 Bill number: 90030506
 Enter
 Goto ---Header ---Header
 Invoice tab
 Your fields will be displayed
 Fill data
 Save

Assignment-1:
Add fields Purchase requisition number & Requisitioner name in MB51 application
EBAN-BOMFN,
EBAN-AFNAM

Solution:

Assignment-2:
Add fields storage bin (MARD-LGPBE) in MB5B

Solution:

***Assignment-3:
 Validate Sales order quantity (VBAP-KWMENG) with PO quantity (EKPO-MENGE)
 If Sales order quantity is > PO quantity provide a control on VA01 application

Solution:

Rohini kumar
SAP-ABAP 568

BTE:
 Business Framework
 Business Transaction Events
 For standard applications SAP is providing BTE
 For BTE a specific function module is attached
 When BTE triggers respective function module is called

Note:
BTE is mostly for finance transactions
T code for BTE is FIBF

*** Identifing Event Associated with an Application:


 Go to SE93
 Transaction Code: FBL5N
 Display
 Double click on Program name
 Select Find option
 Find: OPEN
 Enter
 Double click on 1650

Rohini kumar
SAP-ABAP 569

Object:
Add indicator field in FBL5N application

Solution:
 Go to SE11
 Database Table: RFPOS
 Display
 Append Structure
 Create Append
 Append Name: ZFI_FBL5N
 Enter
 Short Text: indicator field
Component Component Type
ZZIND ZIND

 Extras ---- Enhancement Category


 Enter
 Can be Enhanced option
 Enter
 Activate

 Go to SE11
 Database Table: RFPOSX
 Display
 Append Structure
 Create Append
 Append Name: ZFI_FBL5N1
 Enter
 Short Text: indicator field
Component Component Type
ZZIND ZIND

 Extras ---- Enhancement Category


 Enter
 Can be Enhanced option
 Enter
 Activate

 Go to BERE
 Execute
 Select Event 1650
 Sample Function Module option
Rohini kumar
SAP-ABAP 570

 Copy button
 To: ZSAMPLE_INTERFACE_0001650
 Function Group: F4
 Enter
 Enter
 Function Module: ZSAMPLE_INTERFACE_0001650
 Change
 Remove comment for E_POSTAB = I_POSTAB

IF I_POSTAB-SHKZG = ‘H’.
I_POSTAB-ZZIND = ‘Credit’.
ELSE.
E_POSTAB-ZZIND = ‘Debit’.
ENDIF.

 Activate

 Go to FIBF
 Settings ----- Products ---- Of a Customer
 New Entries
Products A
ZFBL5N _/

 Save
 Back
 Back
 Settings ---- PS Modules ---- Of a Customer
 New Entries
Event Product Function Module
1650 ZFBL5N ZSAMPLE_INTERFACE_0001650

 Save

 Go to SE38
 Program: RFPOSXEXTEND
 Activate
 Yes
 Enter

Testing Application:
 Go to FBL5N
 Customer Account: 1000
Rohini kumar
SAP-ABAP 571

 Company code: 1000


 Execute
 Change Layout
 Double click on Indicator
 Enter

Rohini kumar
SAP-ABAP 572

Ques-1: What are the different ways of idntifing Customerexits (Functionexits)?


Answer:
 Go to SE93
 Transaction Code: XK01
 Display
 Double click on Program name
 Find option
 Find: CALL CUSTOMER_FUNCTION
 Enter
 Double click on 001

Ques-2: What is the difference between Implicit & Explicit Enhancement?


Answer:
 Under implicit enhancement you can write your own code
 Adding Z-enhancement in already existing one is called Explicit enhancement

Example:
 Go to SE93
 Transaction Code: VA01
 Display
 Double click on Program Name
 You will find a spot given by SAP
 Enhance
 Right click ES_SAPMV45A
 Enhancement Implementation ----Create Implementation

Ques-3: What is the difference between Enhancement spot (point) & Enhancement section?
Answer:
 In enhancement spot both customized & standard code will be executed
 In enhancement section only customized code will be executed

Ques-4: What is Transaction Variant in enhancements?


Answer:
 Using transaction variant you can provide enhancements
 You can make fields as Required, Output only, Invisible mode……etc using SHDO
(Transaction Variant)
 With above concept you have to create a Z-T code & the same you should provide it to
end user (standard applications should not be effected)

Rohini kumar
SAP-ABAP 573

Cross Applications: (ABAP / CA)


 It is a part of distributed environment in which various business applications are running
in different system
 Such that they can integrate at one point (or) another to stay synchronize

ALE:
 Application Linking Enabling
 ALE is SAP’s distributed technology for distributing (or) exchanging business process
between two systems (SAP (or) Non-SAP)
 In real time if two companies are having same SAP systems (Servers) & if they want to
exchange their business data
 Similarly, if two (or) more than two systems are working with different systems (other
than SAP) & they want to interact with SAP system we have to work with tool called
ALE

IDOC:
 Intermediate Document
 IDOC is a container with which business data can be exchanged between two systems

Components of IDOC:
1. IDOC Type
2. Segment Type
3. Records

IDOC Type:
 It specifies the structure & format of an IDOC
 It is simply collection of Segments
 Standard IDOC Types have a suffix with 01, 02, 03…………. Which is known as
Version Number

Segment Type:
 It is a collection of fields
 Standard starts with prefix ‘E1’

Example:
E1KNA1M
E1MARA1M

Rohini kumar
SAP-ABAP 574

Records:
Records are classified into
1. Control Record
2. Data Record
3. Status Record

Control Record:
 It holds control level information (IP address of both Sender & Receiver, Message Type
information, Segment Type information…………..etc)
 Only one Control Record exists in an IDOC
 The structure & format of Control Record is same for all IDOCs
 Control Record information is finally updated to a table EDIDC

Data Record:
 It holds actual data

It is again having 2 sections


1. Admin Section (holds segment type information)
2. Data Section (holds actual data in 1000 bytes)

 Data Record information is finally updated to a table EDIDU (the structure related to it is
EDIDD)

Status Record:
 IDOC have to travel through different layers (Application layer, ALE Service layer,
Communication layer)
 At each layer the status information of an IDOC can be gathered from Status Record
 Status Record information is updated to EDIDS

Sender Receiver

Outbound Inbound

1-49 Status Numbers 50-99 Status Numbers

Note:
1. There exists only one Control Record in an IDOC
2. Status Records & Data Records can be many
3. In real time as an ALE Consultant we have to work with only IDOCs

Rohini kumar
SAP-ABAP 575

Run Time Components of IDOC:


 During run time a unique IDOC Number is attached to an IDOC
 All the Segments are translated into Data Records
 A unique Control Record is attached
 A unique Status Record is attached based on an IDOC status

Rohini kumar
SAP-ABAP 576

ALE Architecture:

Outbound Program Application Layer


CDM (Receivers)
Message Type Database
Master IDOC

MASTER_IDOC_DISTRIBUTED

Receivers ALE Service Layer

Master IDOC

Changes are made

IDOC filtering version change field conversion

Communication communication communication Database Layer


IDOC IDOC IDOC

Syntax Checks
Communication Layer
IDOC Port created

Partner Profile table created

ARFC_DEST_SHIP

Outbound System

Integration Layer
RFC

Remote Function Call

Rohini kumar
SAP-ABAP 577

Database

Read data from IDOC status 51 status 53

Posting Program application IDOC application IDOC

Not posted posted

IDOC

Syntax Checks

IDOC filtering Version Change Field Conversion

Basic Integrity Checks

IDOCs

Partner Profile Created

Ports are created

INBOUND_IDOC_SYNCHRONOUS

Inbound System

Rohini kumar
SAP-ABAP 578

Message Type:
These are unique application identities
SAP is providing an unique identity for all application data to identify the same

Note:
T code for Message Type is WE81 & WE82

Message Type Description


1. MATMAS material master
2. CREMAS vendor master
3. DEBMAS customer master
4. ORDERS purchase order
5. ORDRSP sales order
6. COSMAS cost center

Model View Functionality:


 It is also called Customer Distribution Model
 It acts as bag of information for Sender
 The information is that Receiver & the type of data that he want to send (Message Type)
 T code is BD64

Model View
Sender
Receiver
Message Type

Partner Profile:
 Using Partner Profiles Ports can be created
 T codes are WE21 & BD64

Process Flow:
Master Data Material MATMAS MATMAS05 Master IDOC Process codes Communication IDOC
(WE81) (WE30) (WE41) (WE021 & WE03)

ALE Testing Tool (WE19) RFC (SM59)

Transactional data PO orders ORDERS ORDERS05 Master IDOC Process codes Communication IDOC

Rohini kumar
SAP-ABAP 579

Types of IDOCs:
1. Standard IDOC
2. Custom IDOC
3. Extended IDOC

Standard IDOC:
In this all IDOC options (Message Type, IDOC Type, Segment Type…………etc) are already
provided by SAP

Object:
Distributing material master data
Message Type: MATMAS
IDOC Type: MATMAS05

Logical Systems:
 These are unique client identities
 In real time for each client Logical Systems needs to be created

Solution:
Steps:
Client 800 Client 810
1. Work with SALE
Create Logical Systems
Assign Logical Systems to Clients

2. Work with SM59 2. Work with SM59


Create RFC destinations Create RFC destinations

3. Work with BD64


Create Model View

4. Work with BD64


Create Partner Profiles

5. Work with BD64 5. Work with BD64


Distribute Model View Create Ports

6. Work with MM01 6. Work with WE20


Create Material Create Process Codes

7. Work with BD10


Run Outbound program
Rohini kumar
SAP-ABAP 580

8. Work with WE05 8. Work with WE05


IDOC List Check status of IDOC

9. Work with MM03


Step-1:
Creating logical systems:
 Go to SALE
 Expand Basic Settings
 Expand Logical Systems
 Select Define Logical System option
 Enter

Note:
Logical systems are client independent

 New Entries
Logical System Name
MATT800 SENDER
MATT810 RECEIVER

 Save
 Back
 Back

Assigning Logical Systems to Clients:


 Select Assign Logical System to Client option
 Enter
 Double click on 800 client
 Logical System: MATT800
 Save
 Enter
 Back
 Double click on 810 client
 Logical System: MATT810
 Save
 Enter

Step-2:
Creating RFC destinations in 800 client:
 Go to SM59
 Select ABAP Connections
Rohini kumar
SAP-ABAP 581

 Create
 RFC Destination: MATT810
 Description: RFC for Client 810
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 810
 User: user1
 PW Status: rgsabap
 Enter
 Enter
 Save
 Enter
 Remote Logon button
 Working under client 810

Creating RFC destinations in 810 client:


 Go to SM59
 ABAP Connections
 Create
 RFC Destination: MATT800
 Description: RFC for Client 800
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 800
 User: user1
 PW Status: Rgsabap
 Enter
 Enter
 Save

Note:
In real time the above 2 steps are done by Basis Consultant

Step-3: Creating Model View


 Select client 800 session
 Go to BD64
 By default Create Model View button is deselected
 Select F9
Rohini kumar
SAP-ABAP 582

 Select Create Model View button


 Short Text: Model view for material details
 Technical Name: MATERIALM
 Enter
 Scroll down to bottom
 Select short description of your model view
 Select Add Message Type
 Sender: MATT810
 Receiver: MATT800
 Message Type: MATMAS
 Enter
 Again, select Add Message Type
 Sender: MATT800
 Receiver: MATT810
 Message Type: MATMAS
 Enter
 Save

Step-4: Creating Partner Profiles


 Environment ---- Generate Partner Profiles
 Partner System: MATT810
 Execute
 You will find a message ‘port 000000104 with RFC destination has been created’

Note:
Sometimes you may find an error message in red color. In such case
Go back
Again, execute

 Back

Step-5:
Distributing Model View:
 Edit --- Model View ---- Distribute
 Enter
 You should find a message ‘model view has been created’

Creating Ports:
 Select client 810 session
 Go to BD64
 Select your model view name
 Environment ---- Generate Partner Profiles
Rohini kumar
SAP-ABAP 583

 Partner System: MATT800


 Execute
 You will find a message ‘port has been created’

Step-6:
Creating process codes in 810 client:
 Go to WE20
 Expand Partner Type LS
 Select Sender logical system name (MATT800)
 Right side scroll down to bottom
 Under Inbound Parameters
 Double click on MATMAS
 By default you will find Process Code: AFSA which is wrong one, provide
 Process Code: MATN
 Save

Creating material in 800 client:


 Select client 800 session
 Go to MM01
 Material: u-883
 Industry Sector: mechanical grp
 Material Type: 1
 Enter
 Select Basic Data1 & Basic Data2
 Enter
 Material: sodaash
 Base unit of Measure: kg
 Material group: 001
 Gross wt: 1200
 Weight unit: kg
 Net weight: 1000
 Save

Note:
The above material is created by end user

Step-7:
Running Outbound program:
 Go to BD10
 Material: u-883
 Message Type: MATMAS
Rohini kumar
SAP-ABAP 584

 Logical System: MATT810


 Execute
 You will find a message ‘master IDOC is created for message type MATMAS’, Enter
 Again, you will find a message ‘communication IDOC created for message type
MATMAS’, Enter

Step-8:
Displaying IDOC List:
 Go to WE05
 Execute

Note:
In real time we should work with only outbound system. In outbound system you should always
get status as Green (or) Yellow

Checking status of IDOC in 810 client:


 Select client 810 session
 Go to WE05
 Execute

Step-9:
Working with MM03:
 Go to MM03
 Material: u-883
 Enter
 Enter

Rohini kumar
SAP-ABAP 585

Sending Changes to Inbound System:


Change Pointers Technique:
Steps:
1. Work with BD50
2. Work with BD52
3. Work with BD61
4. Work with SE38 (execute RBDM IDOC)
5. Work with WE05

Step-1:
 Go to BD50
 In real time sometimes all the Message Types may be selected, first you Deselect them &
then
 Select your Message Type MATMAS
 Save

Step-2:
 Go to BD52
 Message Type: MATMAS
 Enter
 Here we have to add additional tables & fields related to material

Step-3:
 Go to BD61
 Select Change Pointer Activated Generally check box
 Save

Step-4:
 Go to SE38
 Program: RBDMIDOC
 Execute
 Message Type: MATMAS
 Execute
 You will find a message, Enter
 Enter

 Go to MM02
 Material: u-883
 Enter
 Select Basic Data1, Basic Data2
 Enter
 Make some changes i.e. material: soda bottle, Gross wt: 800………etc
Rohini kumar
SAP-ABAP 586

 Save
 Go to SE38
 Program: RBDMIDOC
 Execute
 Message Type: MATMAS
 Execute
 You will find a message ‘1 master IDOC generated’, Enter
 Again, you will find a message ‘1 communication IDOC generated’, Enter

Step-5:
 Go to WE05
 Execute
 Scroll down to bottom, Double click on your IDOC Number

Rohini kumar
SAP-ABAP 587

IDOC Filtering:
1. Segment Filtering
2. IDOC Filtering
3. Reduced IDOC Filtering

Segment Filtering:
Unnecessary Segments can be filtered using Segment Filtering

Steps:
1. Work with BD56
2. Work with BD10
3. Work with BE05

Step-1:
 Go to BD56
 Message Type: MATMAS
 Enter
 New Entries
Ty Sender Ty Receiver Segment Type
LS MATT810 LS MATT800 E1MARMM

 Save

Step-2:
 Go to BD10
 Material: u-883
 Message Type: MATMAS
 Logical System: MATT800
 Execute

Step-3:
 Go to WE05
 Execute

Note:
Mandatory Segments cannot be deleted

Rohini kumar
SAP-ABAP 588

IDOC Filtering:
 Assume a company is having N number of Company Codes operating in different
countries
 Assume a customer is approaching to Company Code 1000 for business
 His customer master data will be available not only to 1000 Company Code but also to
other Company Code which is not required from 1000 Company Code perspective
 Whenever a customer is created for 1000 Company Code, it should be allowed by the
system
 It the same is done for other Company Codes it should be filtered out
 In customer distribution model you should create a Filter Set based on Company
Code…….etc
 Whenever Master IDOC is created then system will check whether the Company Code is
matching with Filter Set (or) not
 If not matching respective Segment is filtered out
Steps:
Client 800 Client 810
1. Work with SALE
Create Logical Systems
Assign Logical Systems to Clients

2. Work with SM59 2. Work with SM59


Create RFC destinations Create RFC destinations

3. Work with BD64


Create Model View
*** Create Filter Set

4. Work with BD64


Create Partner Profiles

5. Work with BD64 5. Work with BD64


Distribute Model View Create Ports

6. Work with XD01 6. Work with WE20


Create Material Create Process Codes

7. Work with BD12


Run Outbound program

8. Work with WE05 8. Work with WE05


IDOC List Check status of IDOC
Rohini kumar
SAP-ABAP 589

Step-1:
Creating logical systems:
 Go to SALE
 Expand Basic Settings
 Expand Logical Systems
 Select Define Logical System option
 Enter

Note:
Logical systems are client independent

 New Entries
Logical System Name
CUST800 SENDER
CUST810 RECEIVER

 Save
 Back
 Back

Assigning Logical Systems to Clients:


 Select Assign Logical System to Client option
 Enter
 Double click on 800 client
 Logical System: CUST800
 Save
 Enter
 Back
 Double click on 810 client
 Logical System: CUST810
 Save
 Enter

Step-2:
Creating RFC destinations in 800 client:
 Go to SM59
 Select ABAP Connections
 Create
 RFC Destination: CUST810
 Description: RFC for Client 810
 Target Host: SAPLID
 Logon & Security tab
Rohini kumar
SAP-ABAP 590

 Scroll down to bottom


 Language: EN
 Client: 810
 User: user1
 PW Status: rgsabap
 Enter
 Enter
 Save
 Enter
 Remote Logon button
 Working under client 810

Creating RFC destinations in 810 client:


 Go to SM59
 ABAP Connections
 Create
 RFC Destination: CUST800
 Description: RFC for Client 800
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 800
 User: user1
 PW Status: Rgsabap
 Enter
 Enter
 Save

Note:
In real time the above 2 steps are done by Basis Consultant

Step-3:
Creating Model View:
 Select client 800 session
 Go to BD64
 By default Create Model View button is deselected
 Select F9
 Select Create Model View button
 Short Text: Model view for customer master
 Technical Name: CUSTOM ORDER
 Enter
Rohini kumar
SAP-ABAP 591

 Scroll down to bottom


 Select short description of your model view
 Select Add Message Type
 Sender: CUST810
 Receiver: CUST800
 Message Type: DEBMAS
 Enter
 Again, select Add Message Type
 Sender: CUST800
 Receiver: CUST810
 Message Type: DEBMAS
 Enter
 Save

Creating Filter Set:


 Expand Model View
 Expand Sender
 Expand Receiver
 Expand DEBMAS
 You will find No Filter Set, double click on it
 Create Filter Group
 Expand Data Filtering
 Expand Filter Group
 Double click on Global Co Cde
 ‘+’ Insert Row
Value List
GL_1000

 Enter
 Enter
 Save

Step-4: Creating Partner Profiles


 Environment ---- Generate Partner Profiles
 Partner System: CUST810
 Execute
 You will find a message ‘port 000000104 with RFC destination has been created’
Note:
Sometimes you may find an error message in red color. In such case
Go back
Again, execute
Back
Rohini kumar
SAP-ABAP 592

Step-5:
Distributing Model View:
 Edit --- Model View ---- Distribute
 Enter
 You should find a message ‘model view has been created’

Note:
On distributing Model View, model view will became client independent

Creating Ports:
 Select client 810 session
 Go to BD64
 Select your model view name
 Environment ---- Generate Partner Profiles
 Partner System: CUST800
 Execute
 You will find a message ‘port has been created’

Step-6:
Creating process codes in 810 client:
 Go to WE20
 Expand Partner Type LS
 Select Sender logical system name (CUST800)
 Right side scroll down to bottom
 Under Inbound Parameters
 Double click on DEBMAS
 By default you will find Process Code: DEB2 which is wrong one, provide
 Process Code: DEBM
 Save

Creating customer in 800 client:


 Select client 800 session
 Go to XD01
 Account Group: Bill to party
 Customer: 7856
 ***Company Code: 1000
 Enter
 Title: Mr
 Name: Satya
 Search Term: 1
 Street: LB Nagar
 Postal Code: 500074
Rohini kumar
SAP-ABAP 593

 City: Hyderabad
 Country: IN
 Save

Step-7:
Running Outbound program:
 Go to BD12
 Customer: 7856
 Output Type: DEBMAS
 Execute

Step-8:
Displaying IDOC List:
 Go to WE05
 Execute
 Select DEBMAS
 Execute
 Double click on IDOC Number
 Expand Data Records

 Go to XD01
 Customer: 7856
 Company Code: 3000
 Enter
 Title: Mr
 Name: Satya
 City: Hyderabad
 Country: IN
 Save

 Go to BD12
 Customer: 7856
 Output Type: DEBMAS
 Execute

Checking status of IDOC in 810 client:


 Select client 810 session
 Go to WE05
 Execute

Rohini kumar
SAP-ABAP 594

Reduced IDOC Type:


Unwanted fields can be filtered using Reduced IDOC Type

Steps:
1. Work with BD53
2. Work with BD64
3. Work with BD10
4. Work with WE05

Step-1:
 Go to BD53
 Reduced Message Type: ZRED_MATMAS
 Create
 Message Type Ref: MATMAS
 Enter
 Description: Reduced message type for material type
 Enter
 Place cursor on E1MARMM
 Select button
 You will find a white color change instead of red color to the segment
 Double click on that segment
 Select the fields which you want to filter
 Select button
 Enter
 Save

Step-2:
Creating Model View:
 Select client 800 session
 Go to BD64
 By default Create Model View button is deselected
 Select F9
 Select Create Model View button
 Short Text: Model view for customer master
 Technical Name: CUSTOM ORDER
 Enter
 Scroll down to bottom
 Select short description of your model view
 Select Add Message Type
 Sender: CUST810
 Receiver: CUST800
 Message Type: DEBMAS
Rohini kumar
SAP-ABAP 595

 Enter
 Again, select Add Message Type
 Sender: CUST800
 Receiver: CUST810
 Message Type: DEBMAS
 Enter
 Save

Step-3:
 Go to BD10
 Material: u-883
 Message Type: MATMAS
 Logical System: MATT800
 Execute

Step-4:
 Go to WE05
 Execute

Note:
In real time we are not working with Reduced IDOC Filtering

Rohini kumar
SAP-ABAP 596

Distributing Transactional Data:


Method: Message Control Technique
In Message Control Technique whenever application document is created, IDOC is created &
dispatched to Inbound system

***Object:
Distribute Purchase Order Data using Message Control Technique
Message Type: ORDERS
IDOC Type: ORDERS05

Steps:
Client 800 Client 810
1. Work with SALE
Create Logical Systems
Assign Logical Systems to Clients

2. Work with SM59 2. Work with SM59


Create RFC destinations Create RFC destinations

3. Work with BD64


Create Model View

4. Work with BD64


Create Partner Profiles

5. Work with BD64 5. Work with BD64


Distribute Model View Create Ports

6. Work with XK01


Create Vendor master

7. Work with WE20


Maintain Partner Profiles

8. Work with MN05


Maintain Conditional Records

Note:
Conditional Records are maintained by Functional Consultant

9. Work with ME21N


Create Purchase Order based on vendor
Rohini kumar
SAP-ABAP 597

Note:
Purchase Order creation is done by end user. Once ME21N is executed IDOC is created &
dispatched to Inbound system

10. Work with ME22


Check the status of IDOC

Solution:
Step-1:
Creating logical systems:
 Go to SALE
 Expand Basic Settings
 Expand Logical Systems
 Select Define Logical System option
 Enter

Note:
Logical systems are client independent

 New Entries
Logical System Name
MATT800 SENDER
MATT810 RECEIVER

 Save
 Back
 Back

Assigning Logical Systems to Clients:


 Select Assign Logical System to Client option
 Enter
 Double click on 800 client
 Logical System: MATT800
 Save
 Enter
 Back
 Double click on 810 client
 Logical System: MATT810
 Save
 Enter

Rohini kumar
SAP-ABAP 598

Step-2:
Creating RFC destinations in 800 client:
 Go to SM59
 Select ABAP Connections
 Create
 RFC Destination: MATT810
 Description: RFC for Client 810
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 810
 User: user1
 PW Status: rgsabap
 Enter
 Enter
 Save
 Enter
 Remote Logon button
 Working under client 810

Creating RFC destinations in 810 client:


 Go to SM59
 ABAP Connections
 Create
 RFC Destination: MATT800
 Description: RFC for Client 800
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 800
 User: user1
 PW Status: Rgsabap
 Enter
 Enter
 Save

Note:
In real time the above 2 steps are done by Basis Consultant

Rohini kumar
SAP-ABAP 599

Step-3: Creating Model View


 Select client 800 session
 Go to BD64
 By default Create Model View button is deselected
 Select F9
 Select Create Model View button
 Short Text: Model view for material details
 Technical Name: ORDDMOD
 Enter
 Scroll down to bottom
 Select short description of your model view
 Select Add Message Type
 Sender: MATT810
 Receiver: MATT800
 Message Type: ORDERS
 Enter
 Again, select Add Message Type
 Sender: MATT800
 Receiver: MATT810
 Message Type: ORDERS
 Enter
 Save

Step-4: Creating Partner Profiles


 Environment ---- Generate Partner Profiles
 Partner System: MATT810
 Execute
 You will find a message ‘port 000000104 with RFC destination has been created’

Note:
Sometimes you may find an error message in red color. In such case
Go back
Again, execute

 Back

Step-5:
Distributing Model View:
 Edit --- Model View ---- Distribute
 Enter
 You should find a message ‘model view has been created’

Rohini kumar
SAP-ABAP 600

Creating Ports:
 Select client 810 session
 Go to BD64
 Select your model view name
 Environment ---- Generate Partner Profiles
 Partner System: MATT800
 Execute
 You will find a message ‘port has been created’, Enter

Step-6: Creating vendor master


 Select client 800 session
 Go to XK01
 Create a Vendor with providing mandatory inputs (9343, 1000, 001…)
 Save

Step-7: Maintaining Partner Profiles


 Go to WE20
 Select Create option (F5)
 Partner: 9343
 Save
 Under Outbound Parameters
 Select ‘+’ Insert Row
 Create Outbound Parameters
 Partner Role: VN
 Message Type: ORDERS
 Receiver Port: A0000106
 Select Transfer IDOC Immediately option
 Basic Type: ORDERS05
 Save
 Select Message Control tab
 Scroll down to bottom
 Select ‘+’ Insert Row
Application Message Type Process Code
EF NEU ME10
 Save

Note:
With the above navigation we should provide
1. Whom to transfer (Receiver address)
2. What to transfer (Message Type & IDOC Type)
3. Mode of dispatch (Transfer Immediately & Collect IDOCs)
4. Medium of data transfer (Port)
Rohini kumar
SAP-ABAP 601

Step-8: Maintaining Conditional Records


 Go to MM05
 Output Type: NEU
 Key Combination button
 You will find a pop-up, Enter
 Execute
Vendor Function Partner Medium Date / Time Language
9343 VN 9343 A 4 EN

 Save

Step-9: Creating Purchase Order based onvendor


 Go to ME21N
 Vendor: 9343
 Enter
 Purchase Organization: 1000
 Purchase Group: 001
 Company Code: 1000
 Enter
 Currency: EUR
 Material: 100-101
 Quantity: 30
 Net Price: 3000
 Plant: 1000
 Save
 You will find a message ‘Standard PO record under the number 45000-17462 created’

Step-10: Checking status of IDOC


 Go to ME22
 You will find the Purchase Order: 45000-17462, Enter
 Header
 Messages
 Once PO is created accurately you will find an Output Type in green color
 Select that Output Type
 Select Processing Log option
 IDOC 00034355549 has been created & success

Rohini kumar
SAP-ABAP 602

Custom IDOC:
In Custom IDOC all IDOC options are customized

Steps:
Client 800 Client 810
1. Work with SALE
Create Logical Systems
Assign Logical Systems to Clients

2. Work with SM59 2. Work with SM59


Create RFC destinations Create RFC destinations

3. Work with WE31


Create Segment Type

4. Work with WE30


Create IDOC Type

5. Work with WE81


Create Message Type

6. Work with WE82


Link Message Type & IDOC Type

7. Work with BD64


Create Model View

8. Work with WE21


Create Port

9. Work with WE20


Maintain Partner Profiles

10. Work with SE38


Create Stand Alone program

11. Run Stand Alone program

Solution:
Step-1:
Creating logical systems:
 Go to SALE
Rohini kumar
SAP-ABAP 603

 Expand Basic Settings


 Expand Logical Systems
 Select Define Logical System option
 Enter

Note:
Logical systems are client independent

 New Entries
Logical System Name
MATT800 SENDER
MATT810 RECEIVER

 Save
 Back
 Back

Assigning Logical Systems to Clients:


 Select Assign Logical System to Client option
 Enter
 Double click on 800 client
 Logical System: MATT800
 Save
 Enter
 Back
 Double click on 810 client
 Logical System: MATT810
 Save
 Enter

Step-2:
Creating RFC destinations in 800 client:
 Go to SM59
 Select ABAP Connections
 Create
 RFC Destination: MATT810
 Description: RFC for Client 810
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 810
Rohini kumar
SAP-ABAP 604

 User: user1
 PW Status: rgsabap
 Enter
 Enter
 Save
 Enter
 Remote Logon button
 Working under client 810

Creating RFC destinations in 810 client:


 Go to SM59
 ABAP Connections
 Create
 RFC Destination: MATT800
 Description: RFC for Client 800
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 800
 User: user1
 PW Status: Rgsabap
 Enter
 Enter
 Save

Note:
In real time the above 2 steps are done by Basis Consultant

Step-3: Creating Segment Type


 Select client 800 session
 Go to WE31
 Segment Type: Z1SEG
 Create
 Short Description: custom segment type
Field Name Data element
KUNNR KUNNR
NAME1 NAME1
LAND1 LAND1
ORT01 ORT01
PSTLZ PSTLZ
STRAS STRAS
Rohini kumar
SAP-ABAP 605

 Save

Step-4: Creating IDOC Type


 Go to WE30
 Object Type: Z1CUST_01
 Create
 F5
 You will find a message ‘assignment line is longer than 800’, Enter
 Short Description: custom IDOC type
 Select your IDOC Type
 Create Segment
 You will find a pop-up, provide
 Segment Type: Z1SEG
 Select Mandatory Segment option
 Min: 1
 Max: 1
 Enter
 Save

Step-5: Creating Message Type


 Go to WE81
 Display / Change option
 You will find a message, Enter
 New Entries
Message Type Short Text
ZCUSTM for customer segment

 Save

Step-6: Linking Message Type & IDOC Type


 Go to WE82
 Display / Change option
 You will find a message, Enter
 New Entries
Message Type Basic Type (or) IDOC Type Release
ZCUSTM Z1CUST_01 620

 Save

Step-7: Creating Model View


 Go to BD64
 F9
Rohini kumar
SAP-ABAP 606

 Create Model View


 Short Text: model view for customer IDOC
 Technical Name: CUSTOMID
 Enter
 Scroll down to bottom
 Select your model view description
 Add Message Type option
 Sender: MATT800
 Receiver: MATT810
 Message Type: ZCUSTM
 Enter
 Save

Step-8: Creating Port


 Go to WE21
 Transactional RFC option
 Create
 You will find a pop-up, Enter
 Description: Port creation
 RFC Destination: MATT810
 Save

Step-9: Maintaining Partner Profiles


 Go to WE20
 Partner Type: LS
 Create
 Partner Number: MATT810
 Save
 Scroll down to bottom
 Under Outbound Parameters
 Select ‘+’ create Outbound Parameters
 Message Type: ZCUSTM
 Basic Type: Z1CUST_01
 Receiver Port: A0000127
 Select Transfer IDOC Immediately option
 Save

Step-10: Creating Standard alone program


 Go to SE38
 Program: ZSD_IDOC_PROGRAMMING
 Create
 Title: Standard alone program
Rohini kumar
SAP-ABAP 607

 Type: Executable Program


 Save
 Write your program

Step-11: Executing standard alone program


 Go to SE38
 Program: ZSD_IDOC_PROGRAMMING
 Execute
 Provide input
 Execute

Rohini kumar
SAP-ABAP 608

17-11-2014
Extended IDOC:
Extended IDOC = Predefined IDOC Type + Additional Segment

Steps:
Client 800 Client 810
1. Work with SALE
Create Logical Systems
Assign Logical Systems to Clients

2. Work with SM59 2. Work with SM59


Create RFC destinations Create RFC destinations

3. Work with WE31


Create Segment Type

4. Work with WE30


Create Extended IDOC Type

5. Work with WE82


Link Message Type & IDOC Type & Extended IDOC Type

6. Work with BD64


Create Model View

7. Work with WE21


Create Port

8. Work with WE20


Maintain Partner Profiles

9. Work with SMOD


Create Extended IDOC program

10. Work with CMOD


Link Extended IDOC program with CMOD

11. Work with XD01


Create customer master

12. Run BD12

Rohini kumar
SAP-ABAP 609

13. Work with WE05

Solution:
Step-1:
Creating logical systems:
 Go to SALE
 Expand Basic Settings
 Expand Logical Systems
 Select Define Logical System option
 Enter

Note:
Logical systems are client independent

 New Entries
Logical System Name
EXT1800 SENDER
EXT1810 RECEIVER

 Save
 Back
 Back

Assigning Logical Systems to Clients:


 Select Assign Logical System to Client option
 Enter
 Double click on 800 client
 Logical System: EXT1800
 Save
 Enter
 Back
 Double click on 810 client
 Logical System: EXT1810
 Save
 Enter

Step-2:
Creating RFC destinations in 800 client:
 Go to SM59
 Select ABAP Connections
 Create
 RFC Destination: EXT1810
Rohini kumar
SAP-ABAP 610

 Description: RFC for Client 810


 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 810
 User: user1
 PW Status: rgsabap
 Enter
 Enter
 Save
 Enter
 Remote Logon button
 Working under client 810

Creating RFC destinations in 810 client:


 Go to SM59
 ABAP Connections
 Create
 RFC Destination: EXT1800
 Description: RFC for Client 800
 Target Host: SAPLID
 Logon & Security tab
 Scroll down to bottom
 Language: EN
 Client: 800
 User: user1
 PW Status: Rgsabap
 Enter
 Enter
 Save

Note:
In real time the above 2 steps are done by Basis Consultant

Step-3: Creating Segment Type


 Select client 800 session
 Go to WE31
 Segment Type: Z1SEG
 Create
 Short Description: custom segment type
Field Name Data element
Rohini kumar
SAP-ABAP 611

KUNNR KUNNR
NAME1 NAME1
LAND1 LAND1
ORT01 ORT01
PSTLZ PSTLZ
STRAS STRAS

 Save

Step-4: Creating Extended IDOC Type


 Go to WE30
 Object Type: Z1CUST_02
 Extension radio button
 Create
 Enter
 Linked Basic Type: DEBMAS05
 Description: IDOC Extension
 Enter
 Select E1KNA1M
 Create
 Enter
 Segment Type: Z1SEG
 Select Mandatory Segment option
 Min: 1
 Max: 1
 Enter
 Save

Step-5: Linking Message Type & Extended IDOC Type


 Go to WE82
 Display / Change option
 New Entries
Message Type Basic Type Extension Release
DEBMAS DEBMAS05 Z1CUST_02 620

 Save

Step-6: Creating Model View


 Go to BD64
 Display / Change (F9)
 Create Model View
 Short Text: model view for Extended IDOC
Rohini kumar
SAP-ABAP 612

 Technical Name: EXTMOD


 Enter
 Scroll down to bottom
 Select your model view description
 Add Message Type option
 Sender: EXT1800
 Receiver: EXT1810
 Message Type: DEBMAS
 Enter
 Save

Step-7: Creating Port


 Go to WE21
 Transactional RFC option
 Create
 You will find a pop-up, Enter
 Description: Port creation
 RFC Destination: EXT1810
 Save

Step-8: Maintaining Partner Profiles


 Go to WE20
 Partner Type: LS
 Create
 Partner Number: EXT1810
 Save
 Scroll down to bottom
 Under Outbound Parameters
 Select ‘+’ create Outbound Parameters
 Message Type: DEBMAS
 Basic Type: DEBMAS05
 Extension: Z1CUST_02
 Receiver Port: A00000111
 Select Transfer IDOC Immediately option
 Save

Step-9: Creating Extended IDOC program


 Go to SMOD
 Enhancement: VSV00001
 Display
 Components
 Double click on EXIT_SAPLVV01_001
Rohini kumar
SAP-ABAP 613

 Double click on INCLUDE ZXVSVN01


 Display / Change option

DATA: WA_KNA1 TYPE Z1SEG,


WA_DATA TYPE EDIDD,
WA_MAPPING TYPE E1KNA1M.

CASE SEGMENT_NAME.
WHEN ‘E1KNA1M’.
READ TABLE IDOC_DATA INTO WA_DATA WITH KEY SEGNAM =
‘E1KNA1M’.
WA_MAPPING = WA_DATA + SDATA.

SELECT SINGLE KUNNR NAME1 ORT01 PSTLZ STRAS FROM KNA1 INTO
WA_KNA1 WHERE KUNNR = WA_MAPPING-KUNNR.
WA_DATA-SDATA = WA_KNA1.
WA_DATA-SEGNAM = ‘Z1SEG’.

APPEND WA_DATA TO IDOC_DATA.

ENDCASE.

Step-10: Linking Extended IDOC program with CMOD


 Go to CMOD
 Project: EXTIDOC
 Create
 Short Text: linking
 Enhancement Assignments
 Enhancement
 SAPVSV00001

 You may find an error note down that project name


 Project: ZIDOC
 Activate

Step-11: Creating customer master


 Go to XD01
 Account Group: bill to party
 Customer: 9634
 Enter
 Title: Mr
 Name: Satya
Rohini kumar
SAP-ABAP 614

 City: Hyderabad
 Country: In
 Save

Step-12: Running BD12


 Go to BD12
 Customer: 9634
 Output Type: DEBMAS
 Logical System: EXT1810
 Execute

Step-13: Checking IDOC status


 Go to WE05
 Execute
 Double click on your IDOC Number
 Expand Data Records
 Here you will find your IDOCs

Rohini kumar
SAP-ABAP 615

*** Trouble Shooting & Recovery:


1. Message ‘0 Master IDOC is created’
No data in databse

2. Message ‘0 Communication IDOC generated’


No Logical System defined in SALE

3. Status 29
Error in ALE Service Layer (or)
Error in Custom (or) Extended program

4. Status 26
Error in Syntax Check (or)
If Segment is wrong (or)
Mandatory Segments are deleted (or)
If Partner Profiles are not maintained in WE20

Important T codes for ALE:


1. WE19 (ALE Testing Tool)
It is for testing IDOCs

Example:
 Go to WE19
 IDOC Number: 8110 (it is wrong)
 Execute
 Double click on IDOC Number
 Standard Inbound option
 You will find a pop-up with error message

2. BD20
It is for processing partial IDOCs

3. WE09
It is for searching IDOCs which are being processed as on date

Rohini kumar
SAP-ABAP 616

Debugging IDOCs:
1st Method:
 Go to BD20
 IDOC Number: 801120
 Command Prompt: /H
 Enter
 Enter
 F6………………..

2nd Method:
 Go to SE37
 Function Module: IDOC_INPUT
 Display
 Place Dynamic Break Point at DESCRIBLE TABLE IDOC_DATA LINES

 Go to BD20
 IDOC Number: 801120
 Execute

***Question: How you can change the status of an IDOC?


Answer:
Using standard program RBDAPP01

Rohini kumar
SAP-ABAP 617

EDI:
 Electronic Data Interchange
 Paperless work
 EDI is computer to computer exchange of routine business data (Purchase Orders,
Invoices, Sales Orders………..etc) in standard format

Advantages of EDI:
 Availability of data in electronic forms
 Reduced data entry errors
 Paperless work
 Better competitive advantage
 Accuracy of data
 Speed
 Security

Difference between ALE & EDI:


 ALE is SAP’s distributed technology for transferring data between two systems
 In ALE data transfer is done between Logical Systems
 EDI is not SAP’s technology
 In EDI data transfer is done in standard format between Business Partners

EDI Architecture:

MM SD

IDOC IDOC

EDI Sub System Network EDI Sub System

Rohini kumar
SAP-ABAP 618

EDI Architecture Involves:


1. EDI Enable Applications
For creating business processes such as Purchase Orders, Invoices, Sales Orders…….. etc

2. Carrier of Data (IDOC)


3. EDI Sub Systems
4. Middleware Technologies (networks).
These converts IDOC interfaces into EDI Enabled Message Types
Example:
Middleware Technologies, Web methods, EAI …………..etc

Middle Wares:
1. EAI
Enterprise Application Integration
1.1. MA Series
1.2. Web Methods

2. EDI Systems
2.1. Gentian
2.2. Mercator

3. SAP XI
Exchange infrastructure

4. SAP Net wavers

Rohini kumar
SAP-ABAP 619

Steps in EDI Process Flow:


1. Work with WE21
Create File Port

2. Work with XK01


Create vendor

3. Work with WE20


Maintain Partner Profiles

4. Work with MN05


Maintain Conditional Records

5. Work with ME21N


Create Purchase Order based on vendor

6. Work with ME22


Check status of IDOC

Solution:
Step-1: Creating File Port
 Go to WE21
 File
 Create
 Port: IDOCPORT
 Description: Port creation
 Scroll down to bottom
 Function Module: EDI_PATH_CREATE_USERNAME
 Inbound File tab
 Function Module: EDI_PATH_CREATE_USERNAME
 Save
 Outbound Trigger tab
 RFC Destination: SERVER_EXEC
 Save

Note:
SERVER_EXEC will transfer the IDOC file to Web methods

Step-2: Creating Vendor


 Go to XK01
 Create a vendor 9347 by providing mandatory fields
 Save
Rohini kumar
SAP-ABAP 620

Step-3: Maintaining Partner Profiles


 Go to WE20
 Partner Type: LI
 Create
 Partner Number: 9347
 Save
 Under Outbound Parameters
 Select ‘+’ Create Outbound Parameter
 Partner Role: VM
 Message Type: ORDERS
 Receiver Port: IDOCPORT
 Transfer IDOC Immediately option
 Start Sub System option
 Basic Type: ORDERS05
 Save
 Message Control
 ‘+’ Insert Row
Application Message Type Process Code
EF NEU ME10

 Save

Step-4: Maintaining Conditional Records


 Go to MN05
 Output Type: MEU
 Key Combination
 Enter
 Execute
Vendor Function Partner Medium Language
9347 VN 9347 6 EN

 Save

Step-5:
 Go to ME21N
 Vendor: 9347
 Enter
 Purchase Organization: 1000
 Purchase Group: 001
 Company Code: 1000
 Enter
Rohini kumar
SAP-ABAP 621

 Currency: INR
 Material: 100-101
 PO Quantity: 10
 Net Price: 3000
 Plant: 1000
 Save
 Once you save the application you will get a message ‘Purchase Order ……… created’

Step-6: Checking status of IDOC


 Go to ME22
 F6
 Header ------- Messages
 Here you will find a green color status
 Select that status, select Processing Log option
 You should find message ‘IDOC created & written to file’

Rohini kumar
SAP-ABAP 622

BAPI:
 Business Application Programming Interface
 It is an interface programming across business applications

Difference between BDC & BAPI:


BDC BAPI
1. In BDC we have to update the database 1. BAPI updates the database directly
Via Screens
2. Screen mapping is compulsory 2. No mapping required
3. BDC programs not effective for 3. BAPI ensures very good performance for
Large applications (poor performance) all SAP applications
4. In up gradation projects as there may be 4. Same BAPI programs can be reused
New screens with new fields therefore you
Have to rewrite your BDC program
5. BDC is not available for Enjoy transactions 5. Can upload data for Enjoy Transactions
Also

Features of BAPI:
1. BAPI is an interface programming
2. It is based on Object Oriented Programming
3. It supports all types of Languages (.Net, Java, VC++………etc)
4. It supports all type of Communication interfaces (RFC, COM, DCOM, CORBA,
TIBCO………….etc)
5. In BAPI, RFC function module converted to method & the same method is accessed by
3rd party communication interfaces
6. BAPI is synchronous

Business Object:
 The entire business objected oriented programming is designed based on business objects
 Every business object holds business data & does not allow it to access by outside world

Components of Business Object:


1. Kernel
2. Integration Layer
3. Interface Layer
4. Communication Layer

Kernel:
It holds inherent data

Rohini kumar
SAP-ABAP 623

Integration Layer:
In this layer methods are defined for accessing Kernel data

Interface Layer:
Here interfaces (BAPIs) are maintained for integrating with methods

Communication Layer:
All communication interfaces (RFC, CORBA……..etc) can access this layer

Other Components of Business Object:


1. Object Type
2. Key Fields
3. Methods
4. Attributes ………….etc

Object Type:
 Business Objects are created based on Object Type
 It acts as a blue print (or) template for creating business objects

Key Fields:
Using this option key fields are maintained (Customer Number, Sales Order………etc)

Methods:
The main logic for extracting business data is maintained using Methods

Attributes:
 These are the parameters which are passed & returns from Methods
 These are actually part of Methods

Rohini kumar
SAP-ABAP 624

BOR:
 Business Object Repository
 It is the central repository for all business object types & their BAPIs

Features of BOR:
1. It acts as central access point (or) repository for all Business Objects, Object Types, Their
Key Fields, Methods …………..etc
2. All 3rd party Communication interfaces can access Business Objects stored in BOR
3. Business Objects maintained in BOR remains stable for a long time

Note:
The T code for working with BOR is BAPI & SW01

Where BAPIs are used in Real Time:


1. In all modules (SD, MM, PP, HR ………etc)
2. In dimensional products (CRM, APO, SCM………etc)
3. In ALE directly

Rohini kumar
SAP-ABAP 625

***Types of BAPIs:
1. Standard BAPI
2. Custom BAPI
3. Extended BAPI

Standard BAPI:
In standard BAPI, all BAPI function modules are predefined

Object:
Create a bank in client database

Solution:
 Go to SE38
 Program: ZFI_BAPI_BANK
 Create
 Title: Uploading bank data using BAPI
 Type: Executable Program
 Save

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


PARAMETERS: p_banks TYPE banks,
p_bankl TYPE bankl.
SELECTION-SCREEN: END OF BLOCK b1.

DATA: wa_bank_address TYPE BAPI1011_ADDRESS,


wa_return TYPE BAPIRET2.

wa_bank_address-bank_name = ‘Sbi’.
wa_bank_address-street = ‘Lbnagar’.
wa_bank_address-city = ‘Hyderabad’.
wa_bank_address-bank_brnch = ‘Lbnagarbranch’.

CALL FUNCTION ‘BAPI_BANK_CREATE’


EXPORTING
BANK_COUNTRY = p_banks
BANK_KEY = p_bankl
BANK_ADDRESS = wa_bank-address
IMPORTING
RETURN = wa_return.

IF SY-SUBRC EQ 0.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
Rohini kumar
SAP-ABAP 626

EXPORTING
WAIT = ‘X’.
ENDIF.

IF wa_return-message IS NOT INITIAL.


WRITE:/30 wa_return-message.
ELSE.
MESSAGE ‘Bank created successfully’ TYPE ‘I’.
ENDIF.

Rohini kumar
SAP-ABAP 627

Object-2:
Create interface program for update bank data

Solution:
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.
PARAMETERS: p_banks TYPE banks,
p_bankl TYPE bankl.
SELECTION-SCREEN: END OF BLOCK b1.

DATA: wa_bank_address TYPE BAPI1011_ADDRESS,


wa_return TYPE BAPIRET2.

wa_bank_address-bank_name = ‘Sbi’.
wa_bank_address-street = ‘Tnagar’.
wa_bank_address-city = ‘Chennai’.
wa_bank_address-bank_brnch = ‘Tnagarbranch’.

wa_bank_addressx-street = ‘X’.
wa_bank_addressx-city = ‘X’.
wa_bank_addressx-bank_brnch = ‘X’.

CALL FUNCTION ‘BAPI_BANK_CHANGE’


EXPORTING
BANK_COUNTRY = p_banks
BANK_ADDRESS = wa_bank-address
BANK_ADDRESSX = wa_bank-addressx
IMPORTING
RETURN = wa_return.

IF SY-SUBRC EQ 0.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’.
ENDIF.

IF wa_return-message IS NOT INITIAL.


WRITE:/30 wa_return-message.
ELSE.
MESSAGE ‘Bank updated successfully’ TYPE ‘I’.
ENDIF.

Rohini kumar
SAP-ABAP 628

*** Assignment:
Create BAPI interface program for creating sales order using
BAPI_SALEORDER_CRETEDAT2

Solution:

Rohini kumar
SAP-ABAP 629

23-11-2014
Custom BAPI:
In Custom BAPI, BAPI function modules are custom defined

Object:
Create customized BAPI for invoice object

Phases:
1. Analysis Phase
2. Design Phase
3. Implementation Phase
4. Test & Release Phase

Analysis Phase:
During this phase Project Managers will analyze which BAPI project should be implemented
for current project

Design Phase:
During this phase BAPI Structures & Tables are designed

Implementation Phase:
During this phase BAPI project will be implemented
It is further having following sub phases
1. Working with SE11 (DDIC)
2. Working with SE37 (Create RFC Form)
3. Working with SWo1 (create Business Object)
4. Working with SE38 (create Interface program)

Test & Release Phase:


In this phase BAPI is tested & released

Solution:
Step-1:
Creating Structure:
 Go to SE11
 Data Type: ZBAPI_INVSTR
 Create
 Structure
 Short Description: Invoice details
Component Component Type
VBELN VBELN_VF
FKDAT FKDAT
Rohini kumar
SAP-ABAP 630

MATNR MATNR
ARKTX ARKTX
FKIMG FKIMG
NETWR NETWR

 Currency / Quantity Fields tab


Reference Table Reference Field
EKPO MEINS
T001 WAERS

 Activate

Creating Table:
 Go to SE11
 Database Table: ZBAPI_INVTABLE
 Create
 Short Description: Invoice table
 Delivery Class: A
 Table View Maintenance: Display / Maintenance View Allowed
 Fields
Field Data Element
MANDT _/ MANDT
VBELN _/ VBELN_VF
FKDAT FKDAT
MATNR MATNR
ARKTX ARKTX
FKIMG FKIMG
NETWR NETWR

 Currency / Quantity Fields tab


Reference Table Reference Field
EKPO MEINS
T001 WAERS

 Technical Settings
 Data Class: APPL0
 Size Category: 0
 Save
 Back
 Activate
 Utilities ----- Table Contents ----- Create Entries
 Provide input & Save
Rohini kumar
SAP-ABAP 631

Step-2: Creating RFC Function Module


 Go to SE37
 Goto ---Function Groups ---- Create Group
 Function Group: ZBAPI_FGR
 Short Text: BAPI Group
 Enter
 Function Module: ZBAPI_BILL_FUNCTION
 Create
 Function Group: ZBAPI_FGR
 Short Text: BAPI module for invoice
 Enter
 Enter
 Attributes tab
 *** Remote Enabled Module
 Import tab
Parameter Name Typing Associated Type Pass Value
VBELN_LOW TYPE ZBAPI_INVSTR-VBELN _/
VBELN_HIGH TYPE ZBAPI_INVSTR-VBELN _/
DATE_LOW TYPE ZBAPI_INVSTR-FKDAT _/
DATE_HIGH TYPE ZBAPI_INVSTR-FKDAT _/

 Export tab
Parameter Name Typing Associated Type Pass Value
RETURN TYPE BAPIRET2 _/

 Tables tab
Parameter Name Typing Associated Type
IT_INV LIKE ZBAPI_INVTABLE

 Source Code tab


SELECT * FROM ZBAPI_INVTABLE INTO TABLE IT_INV
WHERE VBELN BETWEEN VBELN_LOW AND VBELN_HIGH
AND FKDAT BETWEEN DATE_LOW AND DATE_HIGH.

IF SY-SUBRC NE 0.
RAISE INVALID-INPUT.
ENDIF.

 Activate
 Back
 Function Module --- Release----- Release
Rohini kumar
SAP-ABAP 632

Step-3: creating Business Object


 Go to SWO1
 Object Type: ZCUS_BILL
 Create
 Object Type: ZCUS_BILL
 Object Name: BILLINGG
 Name: Invoice Details
 Description: Invoice Details
 Program: ZBILL_INV
 Application: V
 Enter
 Select Key Fields
 Create (F5)
 Yes
 Table: ZBAPI_INVTABLE
 Enter
 Select VBELN
 Enter
 You will find a pop-up, Enter
 Select Methods
 Utilities ---- API Methods --- Add Method
 Function Module: ZBAPI_BILL_FUNCTION
 Enter
 You will find a pop-up, select Next Step option
 Next Step option
 You will find a message ‘Do you want to generate a template automatically for missing
section’, Yes
 Save
 Back

Testing the Business Object:


 Object Type ---- Change Release Status To ------- Implemented
 Test button
 Execute
 Provide input
 Execute
 You should find entries in your internal table

Note:
In real time if your testing is not fine go to SE37 & solve the issue

Rohini kumar
SAP-ABAP 633

Creating Business Object in BOR:


 Go to SWO1
 Change Object Type: ZCUS_BILL
 Change
 Select ZCUS_BILL
 Edit ----- Change Release Status ----Object Type ---- To Released
 Enter
 Enter
 Expand Methods
 Select your method (ZBAPIFUNCTION)
 Edit ---- Change ---- Release Status ---- Object Type Component----- To
Released
 *** Generate (Ctrl + F3)\
 Go to BAPI
 Scroll down you will find your Business Object

Note:
In real time as a ABAP Consultant we should create business objects in BOR

Assignment-1:
Create standard BAPI for creation of material using BAPI_MATERIAL_SAVEDATA

Assignment-2:
Create standard BAPI for creating purchase order using BAPI_PO_CREATE

Rohini kumar
SAP-ABAP 634

Adobe Forms:
 Using Adobe Forms you can design interactive forms with various interactive actions
 In Smart Forms we can design only Paper Forms
 But using Adobe Forms you can design PDF (or) Online Forms

System Requirements for Installing Adobe Forms:


1. Adobe life cycle designer
2. Java stack
3. Version ECC 6.0 & above
4. QUI patch level should be greater than 5

Note:
 T code for working with Adobe Forms is SFP
 Adobe forms can be exploited using
ABAP knowledge
Web Dynpro
Java Script

Object:
Develop an invoice form using Adobe forms

Solution:
 Go to SFP
 Interface: ZBILL_INT
 Create
 Description: Invoice interface
 Enter
 By default Import option is selected
 On right side select Append Row option
VBELN TYPE VBELN_VF

 Double click on Types option


TYPES: BEGIN OF TY_VBRP,
VBELN TYPE VBELN_VF,
MATNR TYPE MATNR,
FKIMG TYPE FKIMG,
ARKTX TYPE ARKTX,
NETWR TYPE NETWR,
END OF TY_VBRP.

TYPES: T_VBRP TYPE TABLE OF TY_VBRP.

Rohini kumar
SAP-ABAP 635

 Double click on Global Data


 On right side select Append Row option
IT_VBRP TYPE T_VBRP

 Double click on Code Initialization


 Above Input Parameters, select Append Row
 Above Output Parameters, select Append Row
VBELN IT_VBRP

SELECT VBELN MATNR FKIMG ARKTX NETWR FROM VBRP INTO


TABLE IT_VBRP WHERE VBELN = VBELN.

 Activate
 Back
 Form: ZBILL_FORM
 Create
 Description: Invoice form
 Interface: ZBILL_INT
 Enter
 Expand Import
 Drag & drop VBELN under ZBILL_FORM
 Expand Global Data option
 Drag & drop IT_VBRP under ZBILL_FORM
 Expand System Fields
 Expand SFPSY
 Drag & drop DATE, USER NAME under ZBILL_FORM
 Layout
 Palettes ---- Library
 Place Text Icon on Design view
 Place Image Icon on design view
 Double click on Image
 Ok
 Select any Logo, Open
 Right click on image
 Palettes ----- Object
 Embed Image Data
 Close
 Place VBELN, DATE, USER NAME on design view
 Place IT_VBRP on design window
 Save
 Close
Rohini kumar
SAP-ABAP 636

 Activate
 Go to SE38
 Program: ZSD_ADOBE_FORM
 Create
 Title: Adobe form
 Type: Executable Program
 Save

PARAMETERS p_vbeln TYPE vbeln_vf.

DATA: fname TYPE RS38L_FNAM,


output TYPE SFPOUTPUTPARAMS.

PERFORM open_form.
PERFORM call_form.
PERFORM close_form.

FORM open_form.
CALL FUNCTION ‘FP_JOB_OPEN’
CHANGING
IE_OUTPUTPARAMS = output.
ENDFORM.

FORM call_form.
CALL FUNCTION ‘FP_FUNCTION_MODULE_NAME’
EXPORTING
I_NAME = ‘ZBILL_FORM’
IMPORTING
E_FUNCNAME = fname.

CALL FUNCTION FNAME


EXPORTING
VBLEN = p_vbeln.
ENDFORM.

FORM close_form.
CALL FUNCTION ‘FP_JOB_CLOSE’.
ENDFORM.
 Activate
 Execute
 Provide input
 Execute
Rohini kumar
SAP-ABAP 637

Debugging Techniques:
Table Level Debugging:
Using table level debugging you can manipulate data directly from table level

Example:
 Go to SE11
 Database Table: KNA1
 Display
 Contents
 Kunnr: 1000 to 1005
 Execute
 Select Select All option (F9)
 Display (F7)
 Command Prompt: /H
 Enter
 Enter
 Debugging ----Switch to New ABAP Debugger
Variable
CODE

 Enter
 Scroll horizontally
 Click on Change Field
 Remove SHOW & provide EDIT

Note:
For delete ------ DELE
For modify ---- EDIT
For insert ------ INSR

 Enter
 F6 ……………….
 F8
 Provide input (which you want to modify)
 Save
 Next Entry
 Provide input (which you want to modify)
 Save

Rohini kumar
SAP-ABAP 638

Modifying Data during Debugging:


 Go to SE38
 Program: any program name
 Debugging
 Provide input values
 Execute
 Tables
 Table: internal table name
 F6
 Double click on the record which you want to modify
 Click on Pen option
 Modify & Enter

Rohini kumar
SAP-ABAP 639

Debugging Background Jobs:


 Go to SM37
 Job Name: any job name
 Execute
 You will find a job name tick its check box
 ***Command Prompt: JDBG
 Enter
 Enter

Rohini kumar
SAP-ABAP 640

Lock Object:
Using lock object you can maintain data integrity between applications

Example:
 Go to SE11
 Database Table: YCUSTOM
 Create
 Short Description: custom table
 Delivery Class: A
 Table View Maintained: Display / view allowed
 Fields tab
Field name Data element
MANDT MANDT
KUNNR KUNNR
NAME1 NAME1

 Technical Settings
 Data Class: APPL0
 Size Category: 0
 Save
 Back
 Activate
 Utilities ---- Table Contents ---- Create Entries
 Kunnr: 1000
 Name1: satya
 Save

 Go to SE38
 Program: ZLOCK
 Create
 Title: lock object program
 Type: Executable Program
 Save

TABLES YCUSTOM.

PARAMETERS p_cust TYPE KUNNR.

START-OF-SELECTION.
CALL SCREEN 100.

 Double click on 100


Rohini kumar
SAP-ABAP 641

 Yes
 Short Description: main screen
 Layout
 F6
 Table: YCUTOM
 Enter
 Select all fields, Enter
 Place the fields on screen
 Flow Logic
 Remove comment for MODULE STATUS_100
 Double click on STATUS_100
 Yes
 Main Program
 Enter

SELECT SINGLE * FROM YCUSTOM WHERE KUNNR = p_cust.

 Go to /OSE11
 Lock Object: EZLCK1
 Create
 Short Description: lock object
 Tables
 Name: YCUSTOM
 Lock Mode: WRITE LOCK
 Activate

Note:
Once your lock object is activated system will create 2 function modules
One for applying lock &
Another for releasing lock

 Goto ---- Lock Modules


 Copy Request Lock function module (ENQUEUE_EZLCK1)
 Select your program session (SE38)
 Pattern
 Call Function: paste (ENQUEUE_EZLCK1)
 Enter

CALL FUNCTION ‘ENQUEUE_EZLCK1’


EXPORTING
MODE_YCUSTOM = ‘E’
MANDT = SY-MANDT
Rohini kumar
SAP-ABAP 642

KUNNR = p_cust.

 Activate

 Remove comment for MODULE USER_COMMAND_100


 Double click on USER_COMMAND_100
 Yes
 Main Program
 Enter
 Select DDIC (SE11) session
 Copy Release Lock function module (DEQUEUE_EZLCK1)
 Go to SE38 session
 Pattern
 Call Function: paste (DEQUEUE_EZLCK1)
 Enter

CALL FUNCTION ‘DEQUEUE_EZLCK1’


EXPORTING
MODE_YCUSTOM = ‘E’
MANDT = SY-MANDT
KUNNR = p_cust.

 Activate
 Back
 Activate

Testing:
 Go to SE38
 Execute your program
 Done

 Go to /OSE38
 Execute your program
 Not Done

Note:
In real time locks are released manually using T code SM12
o Go to SM12
o List
o Select locks
o Lock Entry ----- Delete All

Rohini kumar
SAP-ABAP 643

Search Help Exit:


Example:
 Go to SE11
 Database Table: YCUST1
 Create
 Short Description: custom table
 Delivery Class: A
 Table View Maintained: Display / view allowed
 Fields tab
Field name Data element
MANDT MANDT
KUNNR KUNNR
NAME1 NAME1

 Technical Settings
 Data Class: APPL0
 Size Category: 0
 Save
 Back
 Activate
 Insert the following records into table
1000 satya
1001 satya
1002 satya
1003 pruthvi

 Go to SE37
 Function Module: F4IF_SHLP_EXIT_EXAMPLE
 Copy
 To: ZSEARCH_MOD
 Function Group: ZFGR
 Enter
 Enter
 Function Module: ZSEARCH_MOD
 Change
 Scroll down to bottom, before EXIT

SORT RECORD_TAB.

DELETE ADJACENT DUPLICATES FROM RECORD_TAB.

 Activate
Rohini kumar
SAP-ABAP 644

 Go to SE11
 Search Help: ZSEAR_HELP
 Create
 Enter
 Short Description: elementary search help
 Selection Method: ZCUST1
 Search Help Exit: ZSEAR_HELP
 Scroll down to bottom, provide
Search Help Parameter Export Import LPOS SPOS
NAME1 _/ _/ 1 1

 Activate

 Go to SE38
 Program: ZCALL_SEARCH
 Create
 Title: search help exit program
 Type: Executable Program
 Save

PARAMETERS p_search MATCHCODE OBJECT ZSEAR_HELP.

 Activate
 Execute
 Apply F4 on field
 You will find only sorted list
i.e. 1000 satya
1004 pruthvi

Rohini kumar
SAP-ABAP 645

Questions & Answers:


BDC:
Question-1:
Assume my Session has been processed & after processing I want my Session to be displayed in
SM35 for status check. How you can achieve this task?
Answer:
By providing exporting parameter KEEP = ‘X’ you can get your processed session back in
SM35

Question-2:
How you can maintain Logs (or) Error records in Session method?
Answer:
In Session method SAP is providing a Log file by default
No need to create a Log file for handling error records
You can find Log file by using SM35
 Go to SM35
 Select your session
 Select Log option (F7)
 Select your session
 Select Display button

Question-3:
How you can perform background processing in Session method?
Answer:
Using program RSBDCSUB you can execute session in background

Example:
In above program modify subroutine PERFORM close_session.

FORM close_session.

CALL FUNCTION ‘BDC_CLOSE_GROUP’.

SUBMIT RSBDCSUB VIA SELECTION-SCREEN.

ENDFORM.

 Execute
 F4
 Select your Flat File

Rohini kumar
SAP-ABAP 646

 Execute
 You will find a selection screen
 Session: RGS
 Execute

Question-4:
Suppose I’m having a Flat File with 50000 records. It happened that the system crashed while
uploading data. How I know the number of records exactly uploaded?
Answer:
I will go to respective database table & copy the key values to the table & execute it

Question-5:
Assume there are 1000 records out of which I uploaded 500 records & remaining I want to
upload next day. How you will you perform this job?
Answer:
I will check the status of the records uploaded & I will delete the records from Flat File which
are correctly uploaded & remaining I will execute once again on next day

Question-6:
I’m having 2 Flat Files with 500 records & 50000 records. Which method will you prefer for
both Flat Files?
Answer:
 For 500 records Call Transaction Method
 For 50000 records Session Method

Question-7:
What is the difference between Session Method & Call Transaction Method?
Answer:
Session Method Call Transaciton Method
7. It for uploading large amount of data 1. It for uploading small amount of data
8. Multiple applications can be processed 2. Only single application can be processed
at one time with one BDC program at one time with one BDC program
9. In this method respective Log File is 3. In this method we have to create Log file
already given by SAP explicitly using structure BDCMSGCOLL
[Link] processing 4. Synchronous processing
[Link] updating 5. Asynchronous updating
[Link] is a slower method but consistent 6. Faster than Session method

Question-8:
How will you handle error records BDC?
Answer:
 In real time client will ask error records during BDC upload
Rohini kumar
SAP-ABAP 647

 For that we have to provide him Logs in the form of error file
 In Session Method Log file you can find directly in SM35
 In Call Transaction Method as processing synchronous we have to create a Log file
internal tabld based on structure BDCMSGCOLL which holds log details during
processing of application
 The error records are looped to respective work area which further exported to Funtion
Module FORMAT_MESSAGE
 It returns a Message ID which I will capture by using a dummy internal table

1.) What is the full form of bdc?


Ans: Batch data communication

2.) What is alternate to batch input session?


Ans: Call transaction and call dialog.

3.) What are the steps in bdc session?


Ans:
 The first step is to identify screens of a transaction the program will process
 Next step is to write a bdc program to build a bdc table will be used to submit data in sap.
 The final step is to submit the bdc table to the system in the batch mode or through a
single call transaction method.

4.) What table stores on line messages?


Ans: T100

5.) What do u do if system crashes in middle of bdc?


Ans:
I will check the number of record updated and delete the same from flat file and upload again. (I
will check the log file in sm35)

6.) What do u do with errors in bdc session?


Ans: Analyze the input file format and entries in internal table bdc data.

7.) What are the commands for sequential file and their syntax?
Ans:
1. Read dataset file <file> into <wa>.
2. Open dataset file <filename> in binary mode
3. Close dataset <file>.
4. Transfer <file> to <wa>.
5. Delete dataset <file>.

Rohini kumar
SAP-ABAP 648

8.) Why batch input?


Ans: To upload large amount of information at peak times

9.) Can data be put directly in database in sap?


Ans: No, only when data has been entered into transaction.

10.) Explain at high levels, the batch input sessions?


Ans:
 Batch data is placed in queues called batch input sessions
 Then placed into Application programs for maintenance
 Then into the database

11.) What are the function modules for batch input?


Ans:
1. Bdc_open_group
2. Bdc_insert
3. Bdc_close_group

12.) What is the structure of bdc table?


Ans:
1. Program (program name)
2. Dynrpo (screen numbers)
3. Dynbegin (start screen)
4. Fnam (fieldnames)
5. Fval (field values)

13.) Write down the coding example of filling the data into bdc table ?
Ans:

14.)How do u find the transaction number, screen numbers and fieldnames?


Ans:
 System->status
 F1
 Technical attributes
 Functional
 Tech specs
 Recording

15.) What are the processing modes of batch input?


Ans:
1. Foreground
2. Background
Rohini kumar
SAP-ABAP 649

3. Display with errors

16.) What is the effect of bdc_cursor field in bdc table?


Ans:
U can set the cursor and enter the corresponding field value and corresponding
Fieldname on which the cursor to be positioned

17.) Why u choose session or call transaction method?


Ans:
 When u want to update database for a single transacton->ctm
 U can update the database in asynchronous mode.
 U can update huge database updating for more than one transaction.

18.) How u can trap error in ctm?


Ans:
 Errors can be trapped using a structure BDCMSGCOLL, whose field MSGTYP will
become ‘E’ whenever an error occurs.
 There errors are formatted using FORMAT_MESSAGE in the desired format and stored
in an internal table.

19.) What are the diff types of update modes?


Ans:
1. Synchronous
2. Asynchronous

20.) What is diff b/w session method and lsmw?


Ans:
 In session the method of updation is ‘BATCH INPUT’ we require a program to be coded.
 In lsmw the method of updation is BATCHINPUT, DIRECT INPUT, IDOC, BAPI.
 Here method is through navigation.

21.) How do u find the information in current screen?


Ans: Menu->system->status

22.) How do u save data in bdc tables?


Ans: By using field name BDC_OKCODE and value is ‘/11’.

23.) What is multiple line field?


Ans: It is special field, which allows user to enter multiple lines in it.

24.) What is the last entry in bdc tables?


Rohini kumar
SAP-ABAP 650

Ans: The last entry is to save data using BDC_OKCODE and the value is ‘/11’.

25.) An index is added to the fieldname to indicate which line is to be populated by bdc
session?
Ans:

26.) What is batch input session?


Ans:
 Intermediate step between internal table and database table
 Data along with the action is stored in session
 i.e. Data for screen fields, to which screen the data should be passed, the program
behind the screen.

27.) A situation: an abap program creates a batch input session. We need to submit the Program
and batch input session in background. How will u do it?
Ans:
Go to SM36 and create a background job by giving job name, job class and job steps
(background scheduling steps).

28.) What are the problems in processing batch input sessions?


Ans: If user forgets to ‘keep’ session then session is automatically removed from session queue
and the log remains

29.) Which mode in call transaction allows background processing?


Ans: ‘n’

30.) What is the syntax of call transaction method?


Ans:

31.) Is it possible to use call transaction without bdc table?


Ans:
Yes, in such case the current program is suspended, the transaction specified is brought up and a
user must enter data into screens.

32.) How many sessions are opened with BDC_OPEN_GROUP?


Ans: One.

33.) What is batch input or bdc?


Ans:
The methods ctm and session are collectively called batch input for transferring data between
systems.

Rohini kumar
SAP-ABAP 651

34.) What are the advantages of batch input?


Ans:
 Ensures data integrity
 No manual interaction for data transfer

35.) What is synchronous database update?


Ans: No new transaction is started until previous transaction is written to database.

36.) Suppose there are 1000 records and there is an error at 66 record. How will u identify and
send it to end user?
Ans: Using BDCMSGCOLL u can capture error records and using T code SLG1 u can find it.

37.) I am uploading 1000 records using session method. I have an error at 950 record. What will
happen in both ctm and session method?
Ans:
 Up to 949 records are updated using session method.
 Except 950 remaining all records are update using ctm.

38.) What is the use of OK_CODE in bdc?


Ans:
 Bdc_okcode will hold all the ok codes in the bdc program,
 When u pass fields to a screen after filling the fields we need to click on a button to move
other screens,
 So here, button will have a ok_code internally to know this we are recording in a program
 After that, we will store this ok_code in bdc_okcode field to trigger next operation.

39.) How will generate and processing the session in the same program?
Ans: In ur program using SUBMIT RSBDCSUB VIA SELECTION-SCREEN

40.) How will run bdc program in background?


Ans: RSBDCSUB

41.) I want to upload 10 lakh records and each record is taking 1 minute for processing. How
will solve this issue?
Ans:
 Break the records into 100/1000 sessions and process ur session it will take same time as
it take for single sessions.
 We can go through lsmw direct input method.
 Use bapi run in background.

42.) How does u know that updation is successful or not?


Rohini kumar
SAP-ABAP 652

Ans:
 Using BDCMSGCOLL u can find the errors
 In session method go to SM35 see the status (the green shows successful & red with
errors)

43.) If I want to upload 5 lakh records. Which method do think is best?


Ans: Session as it provide log for each record processed

44.) What is ‘keep’ in bdc structure?


Ans:
 It is an indicator to check processed sessions
 If this flag is set then session is kept even after it is processed otherwise session is deleted
after its processing is over.

45.) After running a bdc program with session, I found few errors next morning. What will u
do?
Ans:
 Correct the error records (ur flat file) and run bdc program.
 If problem is not in session then I will check the bdc program.

46.) U are given FD for bdc, how will u decide which method to use?
Ans:
 It depends on client requirement
 If it is large data use session method.
 Small amount of data use ctm.

47.) How will run bdc program in background?


Ans: RSBDCSUB (or) SM36

48.) What is the utility of BDC_CURSOR?


Ans: Move cursor location to a specific screen field where data need to be inserted.

49.) What is the difference between batch input and direct input?
Ans:
Batch Input Direct Input
1. Validations are done based on predefined 1. Validations are done by applications
Function Module
2. We cannot send the fields according to 2. Fields can be send (our requirement)
Our requirement

Rohini kumar
SAP-ABAP 653

50.) How do u write a program in session such that it will run the program without going to
SM35 and creates a session?
Ans: SUBMIT RSBDCSUB VIA SELECTION-SCREEN AND RETURN.

51.) How will u handle Table Control in bdc?


Ans:

52.) What are the types of batch input?


Ans:
1. Classical batch input
2. Call transaction
3. Call dialog

53.) How u can execute a function code in bdc session?


Ans:
Bdcdata-fnam = ‘bdc_okcode’.
Bdcdata-fval = ‘=upda’.

54.) How we can position a cursor on a particular field?


Ans:
Bdcdata-fnam = ‘bdc_cursor’.
Bdcdata-fval = ‘fieldname’.

55.) What are dialog users and background users?


Ans:
 Dialog users are normal interactive users in sap system.
 Background users are user master records that are specially defined for providing
authorizations for background processing jobs.

56.) What are update modes in call transaction?


Ans:
1. Synchronous (s)
2. Asynchronous (a)
3. Local (l)

57.) What does message parameter indicate?


Ans:
It indicates that all system messages issues during call transaction are written into internal table
created based on <BDCMSGCOLL>

Rohini kumar
SAP-ABAP 654

58.) What is direct input?


Ans:
 To enhance batch input procedure, the system offers direct input technique especially for
transferring for large amount of data.
 It does not create sessions but stores data directly in database.
 The direct input programs are executed directly in background
 To maintain and start these programs use program RBMVSHOW (or) T code BMV0.

59.) What are the features of recording?


Ans: Generates a batch input program from recorded data.

60.) How do u set up batch input process?


Ans:
 Data analysis: analyze the data that is to be transferred to SAP system.
 Generate SAP structures: generate structures to incorporate for incorporation into data
export programs.
 Develop transfer programs: bdc program
 Create sequential file: export the data to be transferred to a sequential file.
 Create batch input program: read data to be transferred from the sequential file.
 Process batch input data: process data and add it to sap system(ctm and session method).
 Analyze errors: check all data is successfully processed.
 Analyze error session: correct and reprocess erroneous session.

61.) What is CTU_PARAMS?


Ans:
This is a structure defined in SE11 that must be used to declare the type of variable
After the options from keyword of call transaction….
DATA: WA_PARAMS TYPE CTU_PARAMS.
WA_PARAMS-DISMODE = ‘X’.
WA_PARAMS-UPDMODE = ‘X’.
CALL TRANSACTION ‘SM04’ USING IT_BDCDATA OPTIONS FROM WA_PARAMS.

62.) What are the commands available for controlling batch input session?
Ans:
1. /bbeg------- restart transaction
2. /bbdel------ delete transaction from from batch input session
3. /n ----------- terminate current transaction
4. /bda--------- foreground processing
5. /bde--------- display mode to error mode
6. /bend------- end current batch input session

Rohini kumar
SAP-ABAP 655

63.)Diff b/w session and call transaction method.


Session method
1.)Using call transaction syntax
2.)Only one transaction is called.
3.)The abap program must do the error handling itself
(call transaction return error messages into internal table)
4.)By default standard size is not used.
5.)Update mode can be chosen.(syn,asyn)
6.)U may use racommit of ctu_params
To not stop the bdc at the end of commit_work
7.)Sy-binpt is always set to space using nobinpt
Of ctu_params
8.)As sy-binpt is reset to ‘x’ after commit work it
Can be set to ‘x’ again by using nobiend of ctu_params
Option cattmode of ctu_params can be used.
9.)All display modes can be used including p and s.
10.)Recording(shdb).
Session method:
1.)It is saved to database using function modules
Bdc_open_group,bdc_insert,bdc_close_group and
Later run by sm35 or programs rsbdcsub,rsbdcbtc.
It does not run ctu but bdc_start_group.
2.)Several transaction can be processed with one session.
3.)There is built in error and recovery mechanism in sm35
To view error records and run the erroneous records again
(note:bdc data cannot be corrected)
4.)By default standard size is used(22 lines * 84 columes)
5.)Update mode is always synchronous.
6.)Transaction execution always stops at commit_work.
7.)Sy-binpt value is always ‘x’.
8.)Always stops after commit_work.
9.)Always display modes can be used except p & s.
10.)Extended log,expert mode,cancel if log occurs.

63.) How do I record a batch input session for later playback?


Ans: SHDB(recording)

64.) Why SHDB doesn’t record some screens?


Ans: There was probably a commit work. By default recording stops after commit_work

Rohini kumar
SAP-ABAP 656

65.) How will copy a recording?


Ans:
 Display the recording
 There is a button to export to a file on ur presentation server.
 Create a recording without T code and without starting the recorder,
 A but to input is displayed

66.) How does recording work?


Ans:
 It works similarly as ctm,
 It is surrounded by kernel SET_TRANS_VAR for activating and deactivating recording
using function module BDC_RECORD_TRANSACTION.
 SHDB records the bdc data into APQI and APQD tables.
 Lsmw uses same technique but records bdc data into tables SAPDMC (or) LSGBDC*
tables.

Rohini kumar
SAP-ABAP 657

BDC FAQS:

1Q: What should be the approach for writing a BDC program?


Ans:
 Analysis the Data
 Generate SAP structure
 Develop transfer program
 Create sequential file
 Create batch input program
 Process batch input data

2Q: What is the alternative to batch input session?


Ans: Call transaction & Call Dialog

3Q: What are the steps in a BDC session ?


Ans:
 The first step in a BDC session is to identify the screens of the transaction that the
program will process.
 Next step is to write a program to build the BDC table that will be used to submit the data
to SAP.
 The final step is to submit the BDC table to the system in the batch mode or as a single
transaction by the CALL TRANSACTION command.

4Q: What are the problems in processing batch input sessions? How is batch input process
different from processing on line?
Ans: Sessions cannot be run in parallel and not fast.

5Q: What do you do when the system crashes in the middle of a BDC batch session?
Ans:
 Check no. of records already updated and
 Delete them from input file and
 Run BDC again.

6Q: What do you do with errors in BDC batch session?


Ans: Analysis and correct input file format and entries in internal table BDCDATA.

7Q: What are the commands that allow you to process sequential file? What is their syntax?
Ans :-
1. READ DATASET (reading) and
2. TRANSFER (writing)
Syntax:

Rohini kumar
SAP-ABAP 658

OPEN DATASET for < appending=" " output=" "> in mode at POSITION
MESSAGE.
READ DATASET INTO.
CLOSE DATASET.
DELETE DATASET.
TRANSFER to

8Q: What is the process for transferring data from legacy system to SAP?
Ans:
 FTP file transfer,
 Manufacturer –specific field transfer NFS (network file system) (or) BDC.

9Q: How many types of tables exists and what are they in data dictionary?
Ans:

10Q: What is the step-by-step process to create a table in data dictionary?


Ans:
 Create Domain.
 Create Data Element.
 Create Actual Table.

11Q: Can a transparent table exist in data dictionary but not in the data base physically?
Ans: NO

12Q: What are the domains and data elements?


Ans:

13Q: Can you create a table with fields not referring to data elements?
Ans: NO.

14Q: What is the advantage of structures? How do you use them in the ABAP programs?
Ans:

15Q: What does an extract statement do in the ABAP program?


Ans:
 An extract dataset consists of a sequence of records.
 These records may have different structures.
 All records with the same structure form a record type.
 You must define each record type of an extract dataset as a field group, using the FIELD-
GROUPS statement.

Rohini kumar
SAP-ABAP 659

 When the first EXTRACT statement occurs in a program, the system creates the extract
dataset and adds the first extract record to it.
 In each subsequent EXTRACT statement, the new extract record is added to the dataset.

16Q: What is a collect statement? How is it different from append?


Ans:
COLLECT:
 When the line is inserted, the system checks whether there is already a table entry that
matches the key.
 If there is no corresponding entry already in the table, the COLLECT statement has the
same effect as inserting the new line.
 If an entry with the same key already exists, the COLLECT statement does not append a
new line, but adds the contents of the numeric fields in the work area to the contents of
the numeric fields in the existing entry.

17Q: What is Open SQL v/s Native SQL?


Ans:
 Open SQL allows you to access database tables declared in the ABAP Dictionary
regardless of the database platform that your R/3 System is using.
 Native SQL allows you to use database-specific SQL statements in an ABAP program.
 This means that you can use database tables that are not administered by the ABAP
Dictionary, and therefore integrate data that is not part of the R/3 System.

18 (a). What does an EXEC SQL stmt do in ABAP?


Ans:
To use a Native SQL statement, you must precede it with the EXEC SQL statement, and follow
it with the ENDEXEC statement as follows:

EXEC SQL.

ENDEXEC.

18(b). What is the disadvantage of using EXEC SQL stmt do in ABAP?


Ans:
Using inverted commas (") or an asterisk (*) at the beginning of a line in a native SQL
statement does not introduce a comment as it would in normal ABAP syntax

19Q: What is the meaning of ABAP editor integrated with ABAP data dictionary?
Ans: Area menu

Rohini kumar
SAP-ABAP 660

20Q: What is an interactive report? What is the obvious differences of such report compared
with classical type reports?
Ans:
 Interactive reporting allows the user to participate in retrieving and presenting data at
each level during the session.
 Gives a basic list form, which the user can call detailed information by positioning the
cursor and entering the commands
 Classical reports consists of one program the creates a single list which contains
clustered data requested, regardless of the details the user wants to see.

21Q: What is a drill down report?


Ans: A drilldown report is a report used for the interactive evaluation of data. (Interactive
reports)

22Q: How do you write a function module in SAP? Describe?.


Ans:
 Create function group.
 Create function module program in se37.
 Specify the parameters for passing data to and from the module and the exceptions.
 Write source code.
 Write executable program calling the functional program.

23Q: What are the exceptions in function module?


Ans:
 Exceptions are used to handle errors.
 The Function module checks for any type of error & raise exception & returns SY-
SUBRC to the calling program.
 Main program checks for SY-SUBRC for any errors and then takes action accordingly.

24Q: What is a function group?


Ans:
Function Modules that operate with same data can be grouped in one known as function group.

25Q: How are the date and time field values stored in SAP?
Ans: SY-DATUM & SY-UZEIT

26Q: What are the fields in a BDCTab Table?


Ans:
1. PROGRAM
2. DYNPRO
3. DYNBEGIN
Rohini kumar
SAP-ABAP 661

4. FNAM
5. FVAL

27Q: Name few data dictionary objects?


Ans:

28Q: Why batch input?


Ans :- To input a large amount of information at off peak times.

29Q: Can data be put directly into the database?


Ans:- No, only after the data has been entered via transaction.

30Q: Explain at high level, the batch input process?


Ans :-
 Batch data is placed into queues called batch input sessions
 Then placed into the application programs for maintenance into the database

31Q: What are the function modules associated with batch input?
Ans :-
1. BDC_OPEN_GROUP ,
2. BDC_CLOSE_GROUP ,
3. BDC_INSERT

32Q: What is the structure of the BDC table?


Ans :-
Program / Dynpro / Start / Field Name / Field Content

33Q: Write out a coding example for filling a BDC Table?


Ans :-
FORM
REFEESH
CLEAR
MOVE to -PROGRAM
TO -DYNPRO
‘X’ TO -DYNBEGIN
APPEND
CLEAR
MOVE: TO -FNAM
TO -FVAL
APPEND

Rohini kumar
SAP-ABAP 662

34Q: How do you find the transaction number, program number and field names?
Ans :-
 Transaction no., Program no –
 System -> status
 Field names - F1,
 Technical help

35Q: What are the processing modes for Batch Input?


Ans :-
1. Process on screen (foreground) ,
2. Display errors only and
3. Process in the background

36Q: What are the available OK Codes that can be utilized during batch input processing?
Ans :-
/n –-------- terminates current batch input transaction and marks as incorrect.
/bdel –---- delete current batch input transaction from session.
/bend –----- terminate batch input processing and mark session as incorrect.
/bda –------ change display mode to process the session on screen instead of displaying only
errors.
/bde –------ change display mode to display only errors instead of processing the session on the
screen.

37Q: What is the effect of the BDC_CURSOR field name in the BDC table?
Ans :-
You can set the cursor and enter as a corresponding field value the name of the field on which
the cursor is to be positioned

38Q: How many types of BDCs you have done?


Ans:

39Q: Why you choose Call transaction and/or session method?


Ans:
 Call transaction is mainly used when you want to update the database using a single
transaction
 You can also update the database in asynchronous mode,
 Whereas session is used to perform huge database updations using more than one
transaction and which will last for a long time.

40Q: What are different types of Update modes?


Ans: In BDC’s we have two types of updation modes – 1) Synchronous 2) Asynchronous

Rohini kumar
SAP-ABAP 663

41Q: What is main difference between session method and LSMW?


Ans:
 In the context of session method, the method of updating is “Batch Input” , we require a
program to be coded,
 But in the context of LSMW method, The methods of updating using “Batch
Input/Direction Input” from an IDOC, from a BAPI structure.
 No source code is required the complete operation is performed in 16 steps sequence

42Q: What is main difference between CATT and LSMW?


Ans:
 Using LSMW you can update any kind of data but no changes to database are allowed,
 Whereas CATT tool can update only master data, which also allows changes to the
master data and also a significant testing of data is possible

43Q: Give real time work done by u in BDC ? Transactions used ? parameters passed with
functions?
Ans:

44Q: Will ask u for screen no's and dynpro names for BDC that u say u have done?
Ans:

45Q: Which technical field in the BDCDATA table holds the last cursor position?
Ans:

46Q: How do you read a LOCAL sequential file?


Ans:

47Q: How do you write a sequential file?


Ans:

48Q: How do you send the BDCDATA table in a Call Transaction statement?
Ans:

49Q: What loop do you code for a READ DATASET statement?


Ans:

Rohini kumar
SAP-ABAP 664

50Q: What are the steps in a BDC session ?


Ans:
 The first step in a BDC session is to identify the screens of the transaction that the
program will process.
 Next step is to write a program to build the BDC table that will be used to submit the data
to SAP.
 The final step is to submit the BDC table to the system in the batch mode or as a single
transaction by the CALL TRANSACTION command.

Rohini kumar
SAP-ABAP 665

SCRIPTS & SMART FORMS:


Ques-1:
Why we should call SSF_FUNCTION_MODULE_NAME instead of hardcoding the function
module name itself?
Answer:
 We know that in real time we have to transport the objects from one client to another
client
 If the form is in Quality Server the system may assign a different version of function
module name to respective form & the same happen in Production Server also
 So therefore it always advaisable to call SSF_FUNCTION_MODULE_NAME which
returns the function module currently which system you are working

Ques-2:
What are the common errors you are facing while working with smart forms?
Answer:
9. Incorrect parameter with call function
This exception you will get if you not pass all the parameters which you maintained in smart
form

[Link] conflict when calling a function module


This exception you will find when data type of smart form parameters will not match with
attributes of print program

[Link] field …………unknown in form


This error you will find if you are not maintaining Currency / Quantity fields in smart form

12.*** sometimes your print program will not be executed at all


This will happen when your Window (specially Templates) are not maintained properly

[Link] doesnot fit into window


This will happen when template height is more than window height

[Link] generation error


This error you will find if form is having internal errors in Production Server thow it is perfectly
tested in Development Server

15.*** Table is wider than window


This error you will find if your Table (or) Template is wider than your window based on which
is created

Rohini kumar
SAP-ABAP 666

[Link] cannot be displayed


This error you will find if graphic is not maintained properly

Ques-3:
How do you work with Alternate option in smart form?
Answer:
 Righ click on any one Window (say LOGO)
 Create ----- Window Alternate
 Right click on Alternate Window
 Create ----- Flow Logic ------- Alternate
 Conditions option
Field name Relational Operator
LIFNR double click

 Select =/= (NE) option


Comparision Values
‘ ’
 Right click on True option
 Create ------ Text
 Editor
 PO Created

 Right click on Flase option


 Create ----- Text
 Editor
 PO not created

 Form Painter
 Adjust Alternate window
 Activate form

Ques-4:
How you can work with more than one Page in smart form?
Answer:
 Right click on PAGE1
 Create ------ Page
 Right click on PAGE2
 Create ---- Window
 Window: LETTER
 Meaning: Window for letter description
 Save
 Right click on LETTER window
Rohini kumar
SAP-ABAP 667

 Create ----- Text


 Editor
 Goto ------ Change Editor
* ,,,,,,,,,,Dear Satya,
* ,,,,,,,,,,Yor are shortlisted in Google as a Technical Consultant
* ,,,,,,,,,,Thanking you,

 Back
 Double click on MAIN window
 Window Type: Secondary Window
 Double click on PAGE1
 Next Page: PAGE2
 Double click on PAGE2
 Next Page:______
 Activate form

*** Ques-5:
How you can convert a smart form into PDF format?
Answer:
 Run your print program
 Provide input
 Execute
 Select Print option (Ctrl + P)
 At bottom you will find a print request number note down it (say 11716)
 Go to SE38
 Program: RSTXPDFT4
 Execute
 Spool Request: 11716
 Execute
 Save

Ques-6:
How you can debug a smart form?
Answer:
 Go to SMARTFORMS
 Form: ZPO_FORM
 Change
 Expand VENDOR window
 Double click on CODE1
 Provide BREAK-POINT
 Activate form
 Go to SE38
Rohini kumar
SAP-ABAP 668

 Program: ZMM_CALL_SMART_FORM (print program)


 Execute

Note:
In smart forms you can set only Static Break Point. You cannot set Dynamic Break Point

Ques-7:
How you can work with Excel Sheet in smart forms?
Answer:
DATA fnam TYPE STRING.

CALL FUNCTION ‘GUI_DOWNLOAD’

Ques-8:
How you can print multiple records in smart forms?
Answer:
ZMM_CALL_SMART_FORMN

TABLES: EKPO, EKKO, LFA1, ADRC.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.


SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
SELECTION-SCREEN: END OF BLOCK b1.

DATA: fname TYPE RS38L_FNAM,


control TYPE SSFCTRLOP.

DATA: BEGIN OF wa_ekko,


ebeln TYPE ebeln,
bedat TYPE bedat,
lifnr TYPE lifnr,
END OF wa_ekko.

DATA: wa_ekpo TYPE zpo_strucc,


it_ekpo TYPE TABLE OF zpo_strucc.

DATA: fnam TYPE STRING.


CONTROL-NO_OPEN = ‘X’.
CONTROL-PREVIEW = ‘X’.
CONTROL-NO_DIALOG = ‘X’.
CONTROL-NO_CLOSE = ‘X’.

Rohini kumar
SAP-ABAP 669

START-OF-SELECTION.

CALL FUNCTION ‘SSF_OPEN’


EXPORTING
USER_SETTINGS = ‘X’.
CONTROL_PARAMETERS = control.

CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’


EXPORTING
FORMNAME = ‘ZPO_FORM’
IMPORTING
FM_NAME = FNAME.

LOOP AT S_EBELN.
PERFORM get_data USING s_ebeln-low.

CALL FUNCTION FNAME


EXPORTING
CONTROL_PARAMETERS = control
EBELN = s_ebeln-low
BEDAT = wa_ekko-bedat
LIFNR = wa_ekko-lifnr
TABLES
IT_EKPO = it_ekpo.
ENDLOOP.

CALL FUNCTION ‘SSF_CLOSE’.

FORM get_data USING ORDER.


SELECT SINGLE ebeln bedat lifnr FROM EKKO INTO wa_ekko
WHERE ebeln EQ ORDER.

IF NOT wa_ekko IS INITIAL.


SELECT ebelp txz01 menge netpr netwr FROM EKPO INTO TABLE it_ekpo
WHERE ebeln = wa_ekko-ebeln.
ENDIF.
ENDLOOP.

Rohini kumar
SAP-ABAP 670

Ques-9:
How you can migrate SAP Script to smart form?
Answer:
 Go to SMARTFORMS
 Utilities ---- Migration ----- Import SAP Script Form
 Form: ZPO_MEDD
 Name: ZPO_MEDD
 Enter

Ques-10:
How you can generate smart form into PDF format during runtime of print program?
Answer:

Ques-11:
How you can send of a form in the form of mail?
Answer:

Ques-12:
How you can write code in smart forms?
Answer:

Ques-13:
How you can maintain Page Breaks in smart forms?
Answer:

1. ) How to Force a page break within table loop ?


Ans:
 Create a loop around the table.
 Put a Command node before the table in the loop that forces a NEWPAGE on whatever
condition you want.
 Then only loop through a subset of the internal table (based on the conditions in the
Command node) of the elements in the Table node.

2.) Difference between 'form interface' and 'global definitions' in global settings of smart
forms?
Ans:
 Form Interface is where you declare what must be passed in and out of the smart form (in
from the print program to the smart form and out from the smart form to the print
program).
 Global definition is where you declare data to be used within the smart form on a global
scope.
Rohini kumar
SAP-ABAP 671

 ie: anything you declare here can be used in any other node in the form.

3.) How u can convert Smart Forms Output to PDF?


Ans:
There is a way to download smart form in PDF format.
Please do the following:
1. Print the smart form to the spool.
2. Note the spool number.
3. Download a PDF file (Acrobat Reader) version of the spool by running Program
RSTXPDFT4 and entering the noted spool number.

4.) How u print a Smart Form Double sided (Duplex printing)?


Ans:
 Your customer wants your PO Smart Form to be able to print "Terms and Conditions" on
the backside of each page.
 They do not want to purchase pre-printed forms with the company's logo on the front and
terms & conditions on the back.
 Easy - page FRONT lists page CONTACTS as next page and CONTACTS lists FRONT
as next page.
 Since CONTACTS does not contain a MAIN window, it will print the contacts info and
then continue on to FRONT for the rest of the main items.
 Additionally, set print mode on FRONT to D (duplex) and set CONTACTS to 'blank' (for
both resource name and print mode - this is the only way to get to the back of the page).

5.) How u can transport SMARTFORM? SE01?


Ans:

6.) How do you make sure that both, the SMARTFORM & it's function module gets
transported? (or) Does the FM with same name gets generated automatically in the transported
client?
Ans:
 A smart form is transported no differently than any other object.
 If it is assigned to a development class that is attached to a transport layer, it will be
transported.
 The definition is transported, and when called, the function module is regenerated.
 This leads to an interesting situation.
 On the new machine, it is very likely the function module name will be different than the
name on the source system.
 Make sure, before you call the function module, you resolve the external name to the
internal name using the 'SSF_FUNCTION_MODULE_NAME' function module.
 Typically, generate the SF, then use the pattern to being in the interface.
Rohini kumar
SAP-ABAP 672

 Then change the call function to use the name you get back from the above function
module.

7.)How to protect lines in the main window from splitting between pages?
Ans:
It was easy with SAP script, but how to do it with SFs
For 4.7 version if you are using tables there are two options for protection against line break
1. You can protect a line type against page break.
2. You can protect several table lines against page break for output in the main area.

Protection against page break for line types


 Double-click on your table node and choose the Table tab page.
 Switch to the detail view by choosing the Details pushbutton.
 Set the Protection against page break checkbox in the table for the relevant line type.
 Table lines that use this line type are output on one page.

Protection against page break for several table lines:


 Expand the main area of your table node in the navigation tree.
 Insert a file node for the table lines to be protected in the main area.
 If you have already created table lines in the main area, you can put the lines that you
want to protect again page break under the file using Drag &Drop.
 Otherwise, create the table lines as sub nodes of the file.
 Choose the Output Options tab page of the file node and set the Page Protection option.
 All table lines that are in the file with the Page Protection option set are output on one
page.
 In 4.6, Alternatively in a paragraph format use the Page protection attribute to determine
whether or not to display a paragraph completely on one page.
 Mark it if you want to avoid that a paragraph is split up by a page break.
 If on the current page (only in the main window) there is not enough space left for the
paragraph, the entire paragraph appears on the next page.

8.) What are the differences between SAP Scripts and Smart forms?
Ans:
 SAP Scripts are client dependent whereas Smart forms are client independent.
 SAP Scripts require a driver program to display the output whereas in smart forms the
form routines can be written so that it is standalone.
 An integrated Form Builder helps to design Smart forms more easily than SAP Scripts
 A Table Painter and Smart styles to assist in building up the smart forms
 On activation a function module is generated for Smart forms

Rohini kumar
SAP-ABAP 673

9.) Is multiple page formats possible in smart forms?


Ans: Multiple page formats is possible in smart forms

10.) How can I insert symbols in Smart forms?


Ans:
 Select the Text node.
 Change Editor (Click the button above Check near the Editor)
 Go to menu Include->Characters->SAP Symbols
 Choose the SAP symbol that you want to insert.

11.) I have a smart form which works fine in DEV. After transporting it to PROD, there is no
Function module generated for this smart form. As a result my program dumps in PROD?
Ans:
 The Smart form that is created in the Development may not have the same name in the
Production server.
 So it is always advised to use the Function Module
SSF_FUNCTION_MODULE_NAME

12.) How u write Function Module name by passing the Smart form name?
Ans:

13.) How can I make the Smart forms to choose a printer name by default?
Ans:

14.) How can I display the total number of pages in Smartforms?


Ans:
SFSY-FORMPAGES -----------to display the total number of pages in the Smart forms
SFSY-PAGE--------------------- Current page number
SFSY-FORMPAGE------------ Total number of pages in the currently formatted layout set
SFSY-JOBPAGE---------------Total number of pages in the currently formatted print request
SFSY-COPYCOUNT---------Original-1,1st copy-2
SFSY-DATE------------ Date
SFSY-TIME------------ Time
SFSY-USERNAME--- Username

15.) What are the various text formatting options in Smartforms?


Ans:
&symbol(Z)&----------- Omit Leading Zeros
&symbol(S)&----------- Omit Leading Sign
&symbol(<)&----------- Display Leading Sign to the Left
&symbol(>)& -----------Display Leading Sign to the Right
&symbol(C)& ----------Compress Spaces
Rohini kumar
SAP-ABAP 674

&symbol(.N)& ---------Display up to N decimal places


&symbol(T)& ----------Omit thousands separator
&symbol(R)& ----------Right justified
&symbol(I)& -----------Suppress output of the initial value

16.) Where can I provide the input parameters to the smart form?
Ans:
 The input parameters for the smart form can be defined in Global Settings->Form
Interface.
 The Associated Type must be defined in the ABAP Dictionary.

17.) Where can I define my own global types for the smart form?
Ans:
 The global types (within the smart form) can be defined in
 Global Settings->Global Definitions->Types
 The types defined here will be global through the entire smart form.
 Also the form routines can be defined Global Settings->Global Definitions->Form
Routines

18.)I have defined my own Program Lines, where I have used a global variable G_TEXT. I get
an error G_TEXT is not defined?
Ans:
 Whenever using the global variables in the Program Lines, enter the variable name in
Input Parameters if you are going to use (read) the variable.
 If you are going to both read/write the variable value enter the same in Output
Parameters.

19.) I have created a table node for display. Where can I check the condition which must satisfy
to display the table?
Ans:
 The conditions can be defined in the Conditions tab.
 In smart forms all the nodes have a condition tab where you can specify the condition to
be satisfied to access the node.
20.) How can I define Page Protect in Smart forms?
Ans:
To define Page Protect for a node go to the Output options and check the Page Protection
checkbox.

Rohini kumar
SAP-ABAP 675

21.) What is the difference between Template and Table in Smart forms?
Ans:
 The Template contains a fixed number of rows and columns, where the output is fixed.
 The Table can have variable number of rows

22.) Where can I define the paragraph and character format for the smart forms?
Ans:
The paragraph and character format for the smart forms can be defined in the transaction
SMARTSTYLES

22.) How will add watermark to smart form output?


Ans:
 Go to the properties of 'PAGE',
 Tab 'Background Picture'
 Add the graphic image name here

23.) How to add buttons and radio buttons etc in smart forms?
Ans:
 Buttons is not possible in smart forms (only in adobe forms it is possible).
 But you can insert checkboxes and radio buttons in smart forms.
 You can print a check box in different ways..
 By inserting symbols and making window as check box..
 Once go through the thread u will get to k now different ways

24.) How u can keep checkboxes in smart form?


Ans:
To use Check box in smart form do the following:
 Change the editor to 'PC Editor' and take the menu.
 In text editor of TEXT ELEMENTS..
 Insert -> Characters -> SAP Symbols
 In print preview u can't see these changes..

25.) How u can debug smart forms?


Ans:
By keeping a static breakpoint in program lines (BREAK <USERNAME>.

26.) How can I provide a background shading to the table?


Ans:
In the Table Painter, you can specify the color and shading for the table lines.

Rohini kumar
SAP-ABAP 676

Faqs in Smartforms:

1.) What is the difference b/w Scripts and Smartforms?


2.) What is the diff b/w Table and a Template? In which requirements do u prefer table and in
which cases u prefer template?
3.) How u can debug smartforms?
4.) How u can migrate scripts into smartforms?
5.) How u can convert scripts or smartforms into pdf format?
6.) How u can print signature in last page in smartforms?
7.) How u can apply control break functionality in smartforms?
8.) What is the functionality of :
a.)Loop
b.)Alternate
c.)Command
d.)Graphic
e.)Program lines
in smartforms. Given explanation with a real time example?

9.) Is main window is mandatory in smartforms?


10.) Is print program is mandatory in smartforms?
11.) How u can write a program in form in smartforms?(using program lines).
12.) How u can acheive page break in smartforms?
13.) What is page protection in smartforms?
14.) How is pre printed stationary done in smartforms?
15.) Is it possible to create a table in a normal window?Yes.
16.) Assume I hard coded a runtime function module in print program? If i am quality client
for tesing I am getting dump? Why?
17.) How u can print multiple records say invoices and employee numbers with one time print
program execution?
18.) What is the functionality of
a.)SSF_FUNCTION_MODULE_NAME
b.)SSF_OPEN
c.)SSF_CLOSE
19.) I am getting an error Table is wider than window? How will u rectify it?
20.) How u can run a form without getting print dialog?
21.) I want 3 page to be printed out of 5 pages? How will u achieve it?

Rohini kumar
SAP-ABAP 677

Ques-1: What are the different ways of idntifing Customerexits (Functionexits)?


Answer:
 Go to SE93
 Transaction Code: XK01
 Display
 Double click on Program name
 Find option
 Find: CALL CUSTOMER_FUNCTION
 Enter
 Double click on 001

Ques-2: What is the difference between Implicit & Explicit Enhancement?


Answer:
 Under implicit enhancement you can write your own code
 Adding Z-enhancement in already existing one is called Explicit enhancement

Example:
 Go to SE93
 Transaction Code: VA01
 Display
 Double click on Program Name
 You will find a spot given by SAP
 Enhance
 Right click ES_SAPMV45A
 Enhancement Implementation ----Create Implementation

Ques-3: What is the difference between Enhancement spot (point) & Enhancement section?
Answer:
 In enhancement spot both customized & standard code will be executed
 In enhancement section only customized code will be executed

Ques-4: What is Transaction Variant in enhancements?


Answer:
 Using transaction variant you can provide enhancements
 You can make fields as Required, Output only, Invisible mode……etc using SHDO
(Transaction Variant)
 With above concept you have to create a Z-T code & the same you should provide it to
end user (standard applications should not be effected)

Rohini kumar
SAP-ABAP 678

***Question-5: How you can change the status of an IDOC?


Answer:
Using standard program RBDAPP01

Rohini kumar

Common questions

Powered by AI

Pool tables and cluster tables are types of SAP database tables used to optimize data storage. Pool tables are used when many small tables with a matching structure are gathered and stored in a single table in the database known as a table pool. This conserves space in the database as all rows from different tables that belong to one pool are stored as a single row in the pool table. Cluster tables, similar to pool tables, group several logical tables into a single database table, but they are used mainly for storing data belonging together, often with a hierarchical relationship, in a compressed form. The primary use of cluster tables is to store control data like system configuration settings or temporary data such as session-specific data. Both types optimize database storage and performance but are used in different scenarios based on data organization needs .

The use of Table Maintenance Generator (TMG) significantly impacts data management for both client-specific and cross-client tables within SAP ABAP. For client-specific tables, TMG allows data manipulation directly from the database, providing an efficient and user-friendly interface for managing data updates while ensuring client-specific isolation and security. However, for cross-client tables, TMG usage can be more complex due to the need to maintain consistent data across multiple client environments. TMG facilitates structured and controlled data operations, reducing redundant data entry errors but requires careful configuration to ensure data integrity across all connected instances. Well-designed authorizations and clear understanding of table settings are crucial when dealing with cross-client data to prevent unwarranted data exposure or errors, thus highlighting the importance of TMG in managing SAP table security and data integrity .

Checkboxes in TMG operations enhance functionality by providing visual cues and interactive elements that allow users to quickly select and modify records within database tables. They simplify the process of enabling or disabling options and make the interface intuitive by allowing batch operations on selected records. In TMG, adding checkboxes involves defining a field with a domain representing checkbox states, which usually have fixed values like 'X' or space to indicate checked or unchecked statuses. This approach improves user interaction with the data entry interface, offering an easy way to manage boolean attributes or facilitate selection processes for batch updates within the table maintenance view .

Extended IDOCs are used in SAP to accommodate additional data fields that are not present in standard IDOCs, thereby allowing for customized data exchange tailored to specific business needs. Configuring extended IDOCs involves several steps: creating logical systems and assigning them to clients, defining new segment types in WE31, and creating the extended IDOC type in WE30. Once created, the modified IDOC type is linked to a message type in WE82. Partner profiles are then maintained or modified to include the extended capabilities in WE20, and appropriate ports and processing rules are established. These configurations ensure that the extended IDOCs can be generated, sent, and processed efficiently across different systems, enhancing the integration and data handling capabilities within SAP landscapes .

SELECT-OPTIONS and PARAMETERS enhance data retrieval in SAP ABAP reports by allowing users to define flexible and dynamic input criteria for report selection screens. SELECT-OPTIONS allow for multiple selections and ranges for a field, making data retrieval more specific and tailored to user needs. PARAMETERS, on the other hand, enable the definition of single fields where users can input or select single values. The integration of these elements in a report offers users more control over the data retrieved, providing a refined and precise output according to the specified conditions, thereby improving the interactivity and specificity of reports compared to static reporting .

Interactive reports in SAP ABAP offer substantial benefits over classical reports by allowing users to dynamically interact with the data presentation layer. Unlike classical reports, which create a static list, interactive reports give users the ability to drill down into more detailed data with real-time participation via user-driven commands at different levels. This means users can click on displayed items to view further granular details or execute additional functions directly from the report. This capability makes interactive reports more user-friendly and flexible, particularly for decision-making contexts where specific insights or detailed information retrieval is crucial. Such real-time data interactions support better business intelligence and responsiveness within the organization .

The purpose of creating a Table Maintenance Generator (TMG) in SAP ABAP is to enable direct insertion, updating, and deletion of data in database tables when data is not linked with other tables, allowing for efficient manipulation at the table level. The process involves creating the database table using SE11, defining the table's delivery class, allowing the display and creation of entries, and specifying technical settings with appropriate data class and size category. Once the table is activated, you go to SE80, select Function Group, and create a maintenance screen. This setup enables supporting operations like creating, updating, and deleting records directly on the table .

Using Native SQL in ABAP programming presents several challenges and considerations, mainly related to its independence from the ABAP Dictionary. Native SQL allows the use of database-specific SQL statements, providing flexibility to access external data not managed by the ABAP Dictionary. However, this can lead to potential maintainability and portability issues since it may not be compatible across different database systems. Additionally, unlike ABAP's Open SQL, Native SQL lacks automatic client handling and security checks, requiring more meticulous control and error handling by the developer. Furthermore, improper use of Native SQL can jeopardize system integrity through bypassing of ABAP security protocols .

Assigning Logical Systems to clients in SAP is crucial for establishing unique identifiers that handle data exchange within and between SAP systems. A logical system facilitates communication and data transfer processes by designating specific partners in scenarios like ALE (Application Link Enabling), IDocs, or RFCs (Remote Function Calls). Execution involves defining these logical systems globally by navigating to the SALE transaction and configuring them under Basic Settings. Logical systems are created and assigned in a client-independent manner, enhancing seamless integration across different business units or external partners. This structure supports robust data management and efficient system interactions essential for distributed environments .

Batch Input Sessions in SAP play a crucial role in mass data processing, allowing for the automated input of high volumes of data into the SAP system. These sessions create an intermediate step between internal tables and the database, storing data along with necessary actions for screen fields. The sessions facilitate the batch input method by queuing data in a controlled manner, which can then be processed to update the database with minimal manual intervention. This method ensures consistent data entry processes while providing options for error handling and data validation throughout the session execution. Additionally, this processing can be run in different modes, such as foreground or background, with display options for errors to enhance data reliability and integrity .

You might also like