Intro to ABAP Chapter 07

background image

BC170_2.07.1

Data Structures and Creating

Internal Tables

background image

BC170_2.07.2

Objectives

• The participants will be able to:

Create a Structure in an ABAP Program

Create an Internal Table in an ABAP program

Populate an Internal Table with data

Read Database information into an Internal Table

background image

BC170_2.07.3

Address List

Structure

Structure

Data Structures

Address List

Internal

Internal

Table

Table

LN

LN

FN

FN

City

City

ST.

ST.

LN

LN

FN

FN

City

City

ST.

ST.

LN

LN

FN

FN

City

City

ST.

ST.

LN

LN

FN

FN

City

City

ST.

ST.

background image

BC170_2.07.4

1

REPORT YN1C0008.

2

3

TABLES: TABNA.

4

DATA:

BEGIN OF ADDRESS,

5

FLAG

TYPE C,

6

ID

LIKE TABNA-ID,

7

NAME1

LIKE TABNA-NAME1,

8

CITY

LIKE TABNA-CITY,

9

END OF ADDRESS.

10

MOVE

‘X’

TO ADDRESS-FLAG.

11

MOVE

‘0001’

TO ADDRESS-ID.

12

MOVE

‘Smith’ TO ADDRESS-NAME1.

13

MOVE

‘Philadelphia’ TO ADDRESS-CITY.

14

15

WRITE ADDRESS.

16

17

18

19

20

21

22

23

Basic Syntax:

DATA: BEGIN OF
<name>

<field1> . . .

<field2> . . .

. . .

END OF
<name>.

Flag

ID

Name1

City

Address Structure

Is this

statement

necessary for

the code?

Declaring a Structure - Method

#1

background image

BC170_2.07.5

REPORT Yxxxxxxx.
TYPES: BEGIN OF ADDR,

FLAG,
ID

LIKE EMPLOYEE-ID,

NAME1 LIKE EMPLOYEE-NAME1,
CITY

LIKE EMPLOYEE-CITY,

END OF ADDR.
DATA: ADDRESS TYPE ADDR.

MOVE: ‘X’ TO ADDRESS-FLAG,

‘00001’ TO ADDRESS-ID,
‘Smith’ TO ADDRESS-NAME1,
‘Philadelphia’ TO ADDRESS-CITY.

WRITE ADDRESS.

Basic Syntax:

TYPES: BEGIN OF
<name1>,

<field1> . . . ,

<field2> . . . ,

. . . ,

END OF
<name1>.

DATA: <name2> TYPE

<name1>.

Flag

ID

Name1

City

Address Structure

Declaring a Structure - Method

#2

background image

BC170_2.07.6

Populating a Structure with

Field-by-Field Transport

REPORT Y170DM37.
TABLES: EMPLOYEE.
DATA: BEGIN OF ADDRESS,

FLAG,
ID

LIKE EMPLOYEE-ID,

NAME

LIKE EMPLOYEE-

NAME1,

CITY

LIKE EMPLOYEE-CITY,

END OF ADDRESS.

SELECT * FROM EMPLOYEE.
MOVE-CORRESPONDING EMPLOYEE TO
ADDRESS.
WRITE: / ADDRESS-FLAG, ADDRESS-

ID,

ADDRESS-NAME, ADDRESS-

CITY.
CLEAR ADDRESS.
ENDSELECT.

EMPLOYEE

Address

ID

Name1

City

000000001 Electronics Inc. Waldorf

MOVE-CORRESPONDING EMPLOYEE TO
ADDRESS.

Flag

ID

Name

City

000000001

Waldorf

Clear <Address>.

background image

BC170_2.07.7

Internal Table Types

Table type Search Technique Access time in

relation to the
number of table
entries

Standard

Linear

Linear

Sorted

Binary

Logarithmic

Hashed

Hash Algorithm

Constant (number
of entries has no
effect)

background image

BC170_2.07.8

REPORT Y170DM38.
TABLES: EMPLOYEE.
TYPES: BEGIN OF EMP,

ID

LIKE EMPLOYEE-ID,

NAME1

LIKE EMPLOYEE-NAME1,

COUNTRY LIKE EMPLOYEE-COUNTRY,

END OF EMP.

DATA: IT_EMPTAB TYPE STANDARD TABLE
OF EMP INITIAL SIZE 10 WITH HEADER

LINE.

SELECT * FROM EMPLOYEE.
MOVE-CORRESPONDING EMPLOYEE TO

IT_EMPTAB.
APPEND IT_EMPTAB.
ENDSELECT.

The TYPES statement
defines the structure and
data type for the internal
table.

The DATA statement with
TYPE STANDARD TABLE
creates the actual
internal table capable of
storing data. Because of
the WITH HEADER LINE
addition, this internal
table is created with a
header line.

Header Line

ID NAME1 COUNTRY

Creating an Internal Table

with Header Line

background image

BC170_2.07.9

Internal Table Keys

Implicit Key

All character fields

Explicit Key

User-defined

e.g. … WITH [ UNIQUE/NON-
UNIQUE ] KEY FIELD1 FIELD2 ...

background image

BC170_2.07.10

Size of an Internal Table

8K

8K

8K

8K

8K

8K

background image

BC170_2.07.11

Creating an Internal Table

With OCCURS Clause

REPORT YINTRODEMO6.
TABLES: EMPLOYEE.
DATA: BEGIN OF IT_EMP OCCURS 0,

ID

LIKE EMPLOYEE-ID,

NAME1

LIKE EMPLOYEE-NAME1,

COUNTRY LIKE EMPLOYEE-COUNTRY,

END OF IT_EMP.

SELECT * FROM EMPLOYEE.
MOVE-CORRESPONDING EMPLOYEE TO

IT_EMPTAB.
APPEND IT_EMPTAB.
ENDSELECT.

The TYPES statement is
not used.

The DATA statement is
used with the OCCURS
clause creates the
internal table object. The
header line is created
automatically. The
structure of the internal
table is defined with
BEGIN OF … and END OF
<itab>.

ID NAME1 COUNTRY

background image

BC170_2.07.12

APPEND <int. table>

SORTED BY <field>.

APPEND <int. table>.

Department Salary

1
2
3
4
5

6

Department Salary

Header

Loading an Internal Table with a

Header Line

R&D

400,000

PROD

7,800,000

MKTG

1,000,000

SALES

500,000

HR

140,000

IT

50,000

R&D

400,000

MKTG

1,000,000

SALES

500,000

PROD

7,800,000

IT

50,000

HR

140,000

background image

BC170_2.07.13

REPORT Y170DM42.
TABLES: EMPLOYEE.
TYPES: BEGIN OF EMP,

COUNTRY LIKE EMPLOYEE-COUNTRY,
ID

LIKE EMPLOYEE-ID,

SALARY

LIKE EMPLOYEE-SALARY,

END OF EMP.
DATA: IT_EMPTAB TYPE STANDARD TABLE
OF EMP INITIAL SIZE 10 WITH HEADER LINE.

SELECT * FROM EMPLOYEE.
MOVE-CORRESPONDING EMPLOYEE TO

IT_EMPTAB.
APPEND IT_EMPTAB.
MOVE-CORRESPONDING EMPLOYEE TO

IT_EMPTAB.
APPEND IT_EMPTAB SORTED BY SALARY.
ENDSELECT.

Loading an Internal Table with a

Header Line

More than ten entries

can be saved in the

internal table.

A maximum of ten

entries can be saved

in the internal table.

Any entries that

exceed the top ten

will

be deleted.

With both versions of the

APPEND statement,

memory space for ten

records is allocated when

the first record is written

to the internal table.

Example

1

Example 2

OR

background image

BC170_2.07.14

Internal Table with Header Line

EMPLOYEE

EMPLOYEE

COUNTRY ID FORMA NAME1 SORTL
. . .

ID NAME1

COUNTRY

Header Line

A

B

background image

BC170_2.07.15

Internal Table with Header Line

ID NAME1

COUNTRY

EMPLOYEE

EMPLOYEE

USA 00000001 Company Baker Distributors

BAKER

. . .

COUNTRY ID FORMA NAME1 SORTL
. . .

Header Line

1

background image

BC170_2.07.16

Internal Table with Header Line

ID NAME1

COUNTRY

00000001 Baker Distributors
USA

EMPLOYEE

EMPLOYEE

Header Line

2

1

USA 00000001Company Baker DistributorsBAKER

. . .

COUNTRY ID FORMA NAME1 SORTL

. . .

background image

BC170_2.07.17

Internal Table with Header Line

USA 00000001 Company Baker Distributors BAKER

. . .

ID NAME1 COUNTRY

00000001 Baker Distributors USA

00000001 Baker Distributors USA

EMPLOYEE

EMPLOYEE

COUNTRY ID FORMA NAME1 SORTL .

. .

Header Line

2

3

1

2

3

10

.

.

.

.

.

.

This header

line is

attached to

the body of

the internal

table.

1

background image

BC170_2.07.18

Internal Table with Header Line

ID NAME1

COUNTRY

00000001 Baker Distributors

USA

00000002 Diversified Indust... USA

00000002 Diversified Indust... USA

USA 00000002 Company Diversified Indust..

DIVERS . . .

EMPLOYEE

EMPLOYEE

COUNTRY ID FORMA NAME1 SORTL . .

.

Header Line

5

6

1

2

3

10

.

.

.

.

.

.

4

background image

BC170_2.07.19

Creating an Internal Table without a

Header Line

REPORT Y170DM40.
TABLES: EMPLOYEE.
TYPES: BEGIN OF EMP,

ID

LIKE EMPLOYEE-ID,

NAME1

LIKE EMPLOYEE-NAME1,

COUNTRY LIKE EMPLOYEE-COUNTRY,

END OF EMP.

DATA: IT_EMPTAB TYPE STANDARD TABLE
OF EMP INITIAL SIZE 10,
IT_EMPTAB_WA TYPE EMP.

SELECT * FROM EMPLOYEE.
MOVE-CORRESPONDING EMPLOYEE TO IT_EMPTAB_WA.
APPEND IT_EMPTAB_WA TO IT_EMPTAB.
ENDSELECT.

ID NAME1 COUNTRY

APPEND <work area> to
<EMPTAB>.

The TYPES statement
defines the structure and
data type for the internal
table and its work area.

Work Area

Not including the WITH
HEADER LINE addition
creates the actual internal
table without a header
line. Instead, the WORK
AREA for the internal table
is created by defining a
structure that uses the
user-defined data TYPE
EMP.

background image

BC170_2.07.20

Separate Internal Table Work
Area

Performance Issues

Nested Internal Tables

Internal Table without a Header

Line WHY???

background image

BC170_2.07.21

EMPLOYEE

EMPLOYEE

COUNTRY ID FORMA NAME1

SORTL . . .

Work Area

A

B

ID NAME1

COUNTRY

Internal Table without a Header

Line

background image

BC170_2.07.22

00000001

Baker Distributors USA

Internal Table without a Header

Line

ID NAME1

COUNTRY

ID NAME1

COUNTRY

00000001 Baker Distributors USA

USA 00000001 Company Baker Distributors BAKER . . .

EMPLOYEE

EMPLOYEE

COUNTRY ID FORMA NAME1

SORT . . .

Work Area

1

2

3

1
2
3

10

.

.

.

This work

area is not

attached to

the body of

the internal

table.

background image

BC170_2.07.23

Transferring ABAP Dictionary

Table Structures

REPORT Y170DM41.

TABLES: EMPLOYEE.

DATA: IT_EMPTAB LIKE STANDARD TABLE
OF EMPLOYEE INITIAL SIZE 10 WITH HEADER
LINE.

SELECT * FROM EMPLOYEE.

MOVE EMPLOYEE TO IT_EMPTAB.

APPEND IT_EMPTAB.

ENDSELECT.

The internal table

IT_EMPTAB will have the

exact same structure as

the dictionary table

EMPLOYEE.

Notice the MOVE

statement instead of a

MOVE-CORRESPONDING.

background image

BC170_2.07.24

Automatic Field Conversion

MOVE-CORRESPONDING or MOVE field to field

Individual field type conversion

MOVE

Structure to structure

Field to structure

Structure to field

Intermediate C type

Followed by adoption of new types

background image

BC170_2.07.25

Mass Reading from Database

Tables into Internal Tables

REPORT Y170DM69.

TABLES: EMPLOYEE.

DATA: IT_EMPTAB LIKE STANDARD TABLE
OF EMPLOYEE INITIAL SIZE 10 WITH HEADER
LINE.

SELECT * FROM EMPLOYEE INTO TABLE
IT_EMPTAB

WHERE COUNTRY = ‘USA’.

SELECT * FROM <table> . . .

1. INTO TABLE IT_EMPTAB.

2. APPENDING TABLE
IT_EMPTAB.

Notice no ENDSELECT

is needed here

because no loop

processing occurs.

background image

BC170_2.07.26

Working with an Internal Table

without a Header Line

APPEND <work area> TO <internal table>.

COLLECT <work area> INTO <internal table>.

INSERT <work area> INTO <internal table>.

MODIFY <internal table> FROM <work area>.

READ TABLE <internal table> INTO <work area>.

LOOP AT <internal table> INTO <work area>.

background image

BC170_2.07.27

Summary

• The participants will be able to:

Create a Structure in an ABAP Program

Create an Internal Table in an ABAP program

Populate an Internal Table with data

Read Database information into an Internal
Table


Document Outline


Wyszukiwarka

Podobne podstrony:
Intro to ABAP Chapter 13
Intro to ABAP Chapter 12
Intro to ABAP Chapter 15
Intro to ABAP Chapter 08
Intro to ABAP Chapter 11
Intro to ABAP Chapter 01

więcej podobnych podstron