Sunteți pe pagina 1din 10

3. Structures and Internal Table.

What is an internal table and work area in SAP ABAP ? Difference


between internal table and work area
Internal Tables and Work Areas are temporary memory locations which are used to store the
data of database tables at run time and in other way we can call them as instances of
database tables.
Internal tables and Work areas

Internal Tables Work Areas

 Temporary memory locations which are used to  Temporary memory locations which are used to
store the data of database table. store the data of database table.
 Internal table is an instance of database table.  Work area is an instance of database table.
 By default 8kb memory will be allocated and it
increases dynamically( +8kb +8kb).

Internal tables can store multiple records. Work areas can store only one record.

General Syntax : General Syntax:

DATA : <ITAB> TYPE TABLE OF <DBTABLE> . DATA : <WA> TYPE <DBTABLE> .

Internal Table declaration


DATA : <ITAB> TYPE TABLE OF <DBTABLE> .
Example :
DATA : IT_ITAB TYPE TABLE OF MARA .

Example Explanation : Here IT_ITAB is the name of Internal table and MARA is the
Database table name, after declaring, IT_ITAB will be the instance of table MARA.

An internal Table declaration with user defined types

DATA : <ITAB> TYPE TABLE OF <userdefinedtype>.


Example is : TYPES : BEGIN OF TY_TABLE,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS TYPE MARA-MEINS,
END OF TY_TABLE.<br>
DATA : IT_ITAB TYPE TABLE OF TY_TABLE .
Here TY_TABLE is a user defined type with 3 fields
Reading data from databases tables using OPEN SQL (SELECT)
statements in SAP ABAP.
The only way of reading data from a database table is using select statements, in the
below example we will read data from the MARA table in various ways.

Operation Explanation

INTO TABLE ITAB Means getting data into an internal table ITAB from database table

INTO WA Means getting data into WAa work area (Work area can store only one record)

INTO CORRESPONDING FIELDS Means getting data in the common fields of database table and user defined
OF TABLE ITAB internal table ITAB (Here ITAB is a user defined internal table )

INTO CORRESPONDING FIELDS Means getting data of the common fields of database tables and work
OF WA areaWA(Here WA is a work area )

Read whole data from MARA


To read all records from MARA table, we use below code

data : it_mara type table of mara . " Declare internal table of type
MARA
Select * from MARA into table it_mara . " Read all records from MARA
table and store in it_mara internal table

Read single record from MARA based on where condition

data : wa_mara type mara . " Declare work area of type MARA, because we
are getting only one record
Select single * from MARA into wa_mara where matnr = '00001' . " Read
one records from MARA table and store in wa_mara work area
OR
data : it_mara type table of mara . " Declare internal table of type
MARA
select * from MARA into table it_mara where matnr = '00001' . " Read
all records from MARA table where MATNR is 00001, MATNR is a key field
.

Reading data into the corresponding fields


By using INTO CORRESPONDING FIELDS of statement, we can get data into a user
defined internal table.

As per performance standards, this method is not preferable


TYPES : BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS TYPE MARA-MEINS,
MBRSH TYPE MARA-MBRSH,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA . "Declare internal table of type


user defined table.

SELECT * FROM MARA INTO CORRESPONDING FIELD OF TABLE IT_MARA . " Here
we are getting data from <code>MARA</code>
"table into internal table IT_MARA which contains only four fields.

Reading data into user defined internal table

Reading data from a database table into a user defined table.

This method is advisable as it gets limited fields from database table

TYPES : BEGIN OF TY_MARA,


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS TYPE MARA-MEINS,
MBRSH TYPE MARA-MBRSH,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA. " Declare a Internal table of


user defined type
SELECT MATNR, MTART, MEINS, MBRSH FROM MARA INTO TABLE IT_MARA. " Get
list of fields Data Into internal table
" Now data of four fields is available in IT_MARA

Working with internal tables and work areas in SAP ABAP, Internal
table operations in SAP ABAP programs
Internal table operations are most important for an ABAP developer, below are some
of the most important internal table operations

 APPEND
 INSERT
 SORT
 DESCRIBE TABLE
 READ TABLE WITH KEY
 READ TABLE WITH INDEX
 LOOP....ENDLOOP.
 MODIFY
 DELETE
 DELETE ADJACENT DUPLICATES
 CLEAR, REFRESH, FREE
 APPEND LINES OF
 INSERT LINES OF
 MOVE
 COLLECT

Using APPEND in SAP ABAP


APPEND statement is used to append or add a record from work area to internal table,
the new record will be added at the end of the internal table.

Syntax: APPEND <WA> TO <ITAB>


DATA: IT_MARA TYPE TABLE OF MARA.
DATA : WA_MARA TYPE MARA.
WA_MARA-MATNR = '00001'.
WA_MARA-MTART = 'FERT'.
WA_MARA-MEINS = 'EA'.
APPEND WA_MARA TO IT_MARA . "APPEND WORK AREA TO INTERNAL TABLE

Using INSERT in SAP ABAP


INSERT statement is used to insert or add a record from work area into internal table
at the specified location

Syntax: INSERT <WA> INTO <ITAB> INDEX <index>


DATA: IT_MARA TYPE TABLE OF MARA.
DATA: WA_MARA TYPE MARA.
WA_MARA-MATNR = '00001'.
WA_MARA-MTART = 'FERT'.
WA_MARA-MEINS = 'EA'.
INSERT WA_MARA INTO IT_MARA INDEX 2 . "The record will be inserted into
internal table at 2nd position

Using SORT in SAP ABAP


SORT is used to sort a Internal table data in ascending order or descending order, by default
it will sort the data in ascending order. In addition to this we can able to sort data based on
specified fields.

Syntax1: SORT <ITAB . "Default sorts data in ascending order


Syntax2 : SORT <ITAB> DESCENDING . " Sort in descending order
Syntax3 : SORT <ITAB> BY <FIELD1> <FIELD2...ASCENDING/DESCENDING ."It
sorts data by specified fields <FIELD1>, <FIELD2>..

Using DESCRIBE TABLE in SAP ABAP


DESCRIBE TABLE is used to count the no of records in a internal table

Syntax: DESCRIBE TABLE <ITAB> LINES <v_lines> ." Count the no. Of

record of an internal table, here v_lines store count


DATA : V_LINES TYPE I. "Type integer
DESCRIBE TABLE IT_MARA LINES V_LINES ." Count the no. of record of a
internal table
Write: v_lines .
Using READ TABLE WITH KEY in SAP ABAP
READ TABLE WITH KEY .. BINARY SEARCH is used to read a single record from an
internal table into work area specified by field name and field value .

BINARY SEARCH is a search mechanism which is used to read a record from internal
table into work area very fast, the functionality of binary search it divides the into
parts and searches, for full details Binary Search mechanism in SAP ABAPThe
internal table must be sorted in ascending order before using binary search.

Syntax: READ TABLE <ITAB> INTO <WA> WITH KEY <FIELD1> = <FIELD1 VALUE>
<FIELD1> = <FIELD1 VALUE>
BINARY SEARCH.
." Read a record into work area where some field = some value
READ TABLE IT_MARA INTO WA_MARA WITH KEY MATNR = '0001' BINARY SEARCH .
"Read a

record into work area where MATNE is '0001'

Using READ TABLE WITH INDEX in SAP ABAP


READ TABLE WITH INDEX is used to read a single record from an internal table into
work area specified by index.

Syntax: READ TABLE <ITAB> INTO <WA> INDEX <index_no


." Read a record into work area using index ( position )
READ TABLE IT_MARA INTO WA_MARA INDEX '2'. "Read a record into work
area where

index is 2.

Using LOOP....ENDLOOP. in SAP ABAP


Loop...Endloop. is also used to read data from a internal table into work area, this
is used to read multiple records serially one after one .

Syntax1: LOOP AT <ITAB> INTO <WA> .

ENDLOOP.

Syntax2: LOOP AT <ITAB> INTO <WA> WHERE <FIELDS1> =

<VALUE> .

ENDLOOP.

Syntax3: LOOP AT <ITAB> INTO <WA> FROM <INDEX1> TO

<INDEX2>.

ENDLOOP.

Using MODIFY in SAP ABAP


MODIFY is used to modify a single or multiple internal table records based on
condition
TRANSPORTING is a keyword which is used to specify a list of fields to be modified
instead of all fields.

Syntax1: MODIFY <ITAB> FROM <WA> INDEX <INDEX NO> TRANSPORTING <FIELD1>
<FIELD2>

Syntax1: MODIFY <ITAB> FROM <WA> TRANSPORTING <FIELD1>


<FIELD2> WHERE <CONDITION>

SY-TABIX is a key word which stores the index no of currently processed record.

DATA: IT_MARA TYPE TABLE OF MARA.


DATA: WA_MARA TYPE MARA.

SELECT * FROM MARA INTO TABLE IT_MARA . " GET DATA INTO ITAB IT_MARA

WA_MARA-MTART = 'FERT'; "ASSIGN A VALUE TO WORKAREA TO MODIFY INTERNAL


TABLE

MODIFY IT_MARA FROM WA_MARA INDEX SY-TABIX TRANSPORTING MTART. " NOW
THE VALUE OF

FIELD MTART WILL BE MODIFIED FOR CURRENT RECORD IN IT_MARA

DATA: IT_MARA TYPE TABLE OF MARA.


DATA: WA_MARA TYPE MARA.

SELECT * FROM MARA INTO TABLE IT_MARA. " GET DATA INTO ITAB IT_MARA

WA_MARA-MTART = 'FERT'; "ASSIGN A VALUE TO WORKAREA TO MODIFY INTERNAL


TABLE

MODIFY IT_MARA FROM WA_MARA TRANSPORTING MTART WHERE MATNR = '0001'. "
NOW THE

VALUE OF FIELD MTART WILL BE MODIFIED WHERE MATNR = '0001' IN ITAB

Using DELETE in SAP ABAP


DELETE is used to delete single or multiple records from an internal table from work
area based on some condition.

Syntax1: DELETE <ITAB> INDEX <INDEX NO>.

Syntax2: DELETE <ITAB> WHERE <FIELD1> = <FIELD1 VALUE>

<FIELD2> = <FIELD2 VALUE>.


DELETE IT_MARA INDEX 3. "3rd RECORD WILL BE DELETED IN IT_MARA

DELETE IT_MARA WHERE MTART = 'FERT'. "MATERIALS WITH MTART = 'FERT'


WILL BE DELETED
Using DELETE ADJACENT DUPLICATES in SAP ABAP
DELETE ADJACENT DUPLICATES is used to delete delete duplicate records which are
adjacent to each-other.Pre-requisite for this is the internal table must be sorted
in ascending order

Syntax1: DELETE ADJACENT DUPLICATED FROM <ITAB> ."ADJACENT DUPLICATED


WILL

BE DELETED IN INTERNAL TABLE COMPARING ALL FIELDS

Syntax2: DELETE ADJACENT DUPLICATES FROM <ITAB> COMPARING <FIELD1>

<FIELD2> . "ADJACENT DUPLICATES WILL BE DELETED COMPARING SPECIFIED


FIELDS
SORT IT_MARA ASCENDING.
DELETE ADJACENT DUPLICATES FROM IT_MARA . "3rd RECORD WILL BE DELETED
IN IT_MARA

SORT IT_MARA ASCENDING.


DELETE ADJACENT DUPLICATES IT_MARA COMPARING MATR, MTART. "DUPLICATES
WILL BE

DELETED BY COMPARING MATNR AND MTART

Using CLEAR, REFRESH, FREE in SAP ABAP


CLEAR is used to clear a value in a work area or in a variable.

REFRESH is used to clear all values in an internal table.

FREE is used to clear (free) memory of an internal table or work area. We all know
whenever we declare an internal table or work area, 8kb memory will be allocated.

Syntax clear : CLEAR <WA> "CLEAR WORK AREA OR VARIABLE

Syntax REFRESH: REFRESH <ITAB> "CLEAR ALL RECORDS OF INTERNAL TABLE BUT

MEMORY WILL BE THERE

Syntax FREE : FREE <WA> "FREE INTERNAL TABLE MEMORY


CLEAR WA_MARA.

REFRESH IT_MARA.

FREE IT_MARA.

Using APPEND LINES OF in SAP ABAP


APPEND LINES OF is used to append multiple records to an internal table from
another internal table.
Syntax : APPEND LINES OF <ITAB1> FROM <index no> TO <index no2>

TO <ITAB2>.

DATA: IT_MARA TYPE TABLE OF MARA. "FIRST INTERNAL TABLE


DATA: IT_MARA1 TYPE TABLE OF MARA. "SECOND INTERNAL TABLE

APPEND LINES OF IT_MARA FROM 3 TO 5 TO IT_MARA1. "DATA IN IT_MARA WILL


BE APPENDED

TO IT_MARA1 FROM INDEX 3 TO INDEX 5 .

Using INSERT LINES OF in SAP ABAP


INSERT LINES OF is used to INSERT multiple records to an internal table from
another internal table at the specified location.

Syntax : INSERT LINES OF <ITAB1> FROM <index no> TO <index no2>

INTO <ITAB2> INDEX <index no>.

DATA: IT_MARA TYPE TABLE OF MARA. "FIRST INTERNAL TABLE


DATA : IT_MARA1 TYPE TABLE OF MARA. "SECOND INTERNAL TABLE

INSERT LINES OF IT_MARA FROM 3 TO 5 INTO IT_MARA1 INDEX 3. "DATA IN


IT_MARA WILL

BE INSERTED INTO IT_MARA1 FROM INDEX 3 TO INDEX 5 AT INDEX 3 LOCATION.

Using MOVE in SAP ABAP


MOVE keyword is used to move one internal table data to another.

Syantax: <ITAB2[]> = []> . "Move ITAB1 to ITAB2

Using COLLECT in SAP ABAP


COLLECT is slimier to APPEND, the difference is it (COLLECT) will check whether the
work area record already exists with the same key (only C, D, N, T), if exists it will
add numerical fields (sum) to the existing record, if the work area record does not
exist it will append a new record.

Syntax: COLLECT <WA> INTO <ITAB>.


Using messages in SAP ABAP programming, types of messages in
SAP ABAP, display error, success and warning messages in SAP
ABAP
Like all programming languages, we need to raise status, error, warning, information,
abort etc messages in ABAP programs, in SAP we can raise the following
messages.

I - information message

S - status message

E - error message

W - warning

A - termination message

X - exit message.

The below syntax is used to raise messages in SAP.

MESSAGE '<MESSAGE TEXT>' TYPE '<MESSAGE TYPE>'. "Message text = any


string, message type = A, E, I, S, W, X

Types of messages available in SAP

Message
Type Effect Description

A Termination The message appears in a dialog box, and the program terminates. When the user has
Message confirmed the message, control returns to the next-highest area menu.
E Error Depending on the program context, an error dialog appears or the program
Message terminates.
I Information The message appears in a dialog box. Once the user has confirmed the message, the
program continues immediately after the MESSAGE statement.
S Status The program continues normally after the MESSAGE statement, and the message is
Message displayed in the status bar of the next screen.
W Warning Depending on the program context, an error dialog appears or the program
terminates.
X Exit No message is displayed, and the program terminates with a short dump. Program
terminations with a short dump normally only occur when a runtime error occurs.
Message type X allows you to force a program termination. The short dump contains
the message ID.
What are the different types of internal tables in SAP ABAP ?
Difference between standard, sorted and hashed internal
tables in SAP ABAP
There are three types of internal tables in SAP ABAP programming, an
ABAP developer must know and understand before using them in ABAP
programs.

 Standard Internal Tables


 Sorted Internal Tables
 Hashed Internal Tables

Difference between Standard internal tables, Sorted internal tables


and Hashed internal tables

# Standard Internal tables Sorted Internal Tables Hashed Internal tables

1 These are default internal These are a special type of internal These are used with
tables. tables, where data is logical databases i:e
already(automatically) sorted as you with all fields and all
insert the record records.

2 To read a record we use To read a record we use either key or Here the index
either key or index index operation. operation is not
operation. allowed, we only use key
operation.

3 To search for a record, we To search for a record, we use binary To search for a record,
can use either linear search as data is already sorted. we use hashed
search or binary search. algorithm.

4 We can use sort operation. We do not use sort as data is already -


sorted.

5 We can use insert and We only use insert, not append. These are mainly used in
append to add records. ABAP with BI projects

S-ar putea să vă placă și