본문 바로가기

ABAP 프로그래밍 개념/ABAP Structue and Internal Table

Structures and Internal Tables Overview

이전 장에서는 하나의 개별 필드를 선언하고 처리하는 방법에 대해 설명했습니다. 그러나 대부분의 경우, 우리는 연관된 필드들의 그룹에서 데이터를 작업할 것입니다. 예를 들어, 고객 데이터를 저장할 때, 모든 정보를 하나의 필드에 저장하지 않고, 고객의 이름을 저장할 하나의 필드, 주소를 저장할 다른 필드, 전화번호를 저장할 다른 필드 등을 만들어 고객에 대한 모든 다양한 정보를 저장합니다.

이번 장에서는 배열(array) 형식으로 데이터를 작업하는 데 사용되는 데이터 유형 및 데이터 객체에 대해 설명할 것입니다. 

ABAP 프로그램에서 데이터베이스 테이블의 데이터를 처리하려면, 데이터베이스처럼 열과 행을 가지고 데이터를 유사한 방식으로 저장할 수 있는 데이터 객체가 필요합니다. 

이러한 데이터 유형과 개별 필드의 데이터 객체는 각각 structure type과 structure로 그룹화됩니다. structure type이라는 용어는 데이터 유형을 나타내는 데 사용되며, structure라는 용어는 데이터 객체를 나타내는 데 사용됩니다. structure는 하나 이상의 필드로 구성됩니다. structure의 필드는 components라고합니다. 구조체의 각 필드는 우리가 다른 카테로에서 다룬 Type나 like 참조로 정의됩니다.

 

5.1 Defining Structure

구조체는 지역(local) 또는 전역(global)으로 나뉩니다. 지역(local)과 전역(global)에 대한 여러 정의가 있으며, 이를 나중에 다룰 것입니다. 맥락에 따라, 지역(local)은 몇 가지 의미를 가질 수 있습니다. 프로그램에 대해 언급할 때는, 지역(local)은 해당 프로그램 내의 procedure(method, function module, Subroutine)에 선언된 객체(데이터 객체 또는 데이터 유형)를 나타낼 수 있습니다. 이러한 객체는 해당 객체가 정의된 Procedure 내에서 볼 수 있습니다. 이 경우 전역 Object는 프로그램 전체에서 가시성을 가지며, 프로그램의 모든 Procedure과 Event Block에서 접근 할 수 있습니다.

* 가시성(visibility)은 데이터 Object나 데이터 유형이 프로그램 코드의 특정 위치에서 액세스될 수 있는지 여부를 나타냅니다.

 

FORM data.
TYPES : BEGIN OF ty_sflight,
     CARRID TYPE S_CARR_ID,
     CONNID TYPE S_CONN_ID,
     FLDATE TYPE S_DATE,
        END OF ty_sflight.
DATA ls_sflight TYPE ty_sflight.
ENDFORM.

FORM output.

DATA lv_sflight TYPE ty_sflight.

SELECT SINGLE carrid connid fldate FROM sflight
  INTO ls_sflight
 WHERE carrid EQ 'AA'.
 
ENDFORM.

위 코드 예시처럼, data type인 ty_sflight와 dta object인 ls_sflight 데이터 객체에는 data라는 subroutine 내에서만 접근할 수 있습니다. 동일한 프로그램의 다른 Procedure(subroutine : output)에서 이러한 객체에 접근하려고 하면 구문 오류가 발생합니다. 이러한 객체는 선언된 Procedure 외부에서는 볼 수 없기 때문입니다. 그러나, 만약 ty_sflight와 ls_sflight를 프로그램의 전역 선언 영역에서 선언하면, 프로그램의 모든 Processing Block에서 이들에 접근할 수 있습니다.

3종류의 ABAP Structue Type(유형) 이 있습니다.

1) Flat Structure
-> Components들이 Elementary Type을 참조하는 개별 필드로 구성

2) Nested Structure
-> 적어도 하나의 Components가 다른 Structure을 형식으로 가지고 있음

3) Deep Structure
-> 적어도 하나의 Components가 테이블 형식으로 가지고 있음

학습 목표 : 구조체가 프로그램에서 어떻게 유용한지에 대해 배우게 됩니다. 구조체 유형이 프로그램 내에서 지역적으로 또는 ABAP 데이터 사전에서 전역적으로 정의될 수 있는 방법을 살펴볼 것입니다. 구조체를 사용하여 데이터를 저장하고 액세스하는 방법도 배우게 됩니다. 이번 섹션에서는 구조체의 사용 사례를 제공하여 마무리할 것입니다.

반응형

'ABAP 프로그래밍 개념 > ABAP Structue and Internal Table' 카테고리의 다른 글

5.1.5 Use Cases  (0) 2023.04.19
5.1.4 Working with Structures  (0) 2023.04.19
5.1.3 Global Structures  (0) 2023.04.19
5.1.2 Local Structures  (0) 2023.04.19
5.1.1 When to Define Structures  (0) 2023.04.18