본문 바로가기

SAP/ABAP

ABAP. 4

ABAP 언어에 대한 개념을 정리하는 포스팅입니다.

작성자는 ABAP에 대한 전문가가 아니며, 작성된 정보가 부정확할 수 있으니 게시글은 참고 목적으로만 봐주시면 감사하겠습니다.


1. SQL

* ABAP에서 SQL은 SAP R/3의 3개의 레이어 중 데이터베이스 레이어에서 테이블을 조회, 수정, 삭제, 변경할 때 주로 사용합니다.

 

SQL이란 Structured Query Language의 약자이며, 관계형 데이터베이스에 사용되는 표준화된 언어입니다.

DML, DDL, DCL 3종류로 분류되며, ABAP에선 DML 언어만 사용할 수 있습니다.

DML: 데이터 처리 언어 {Select(조회), Insert(삽입), Delete(삭제), Update(갱신)}

DDL: 데이터 정의 언어 {Create(생성), Drop(삭제), Alter(변경)}

DCL: 데이터 제어 언어 {Grant(권한 부여), Revoke(권한 제거)}

 

ABAP에서 SQL은 OPEN SQL과 Native SQL로 나눠집니다.

 

1. OPEN SQL은 ABAP 언어에서만 사용되며 데이터베이스 인터페이스를 통해 NATIVE SQL로 번역됩니다.

OPEN SQL은 DDL, DCL을 사용할 수 없으며, DML만 사용 가능합니다.

2. NATIVE SQL은 데이터베이스에 사용되는 SQL 언어입니다. 데이터베이스에 직접 접속하여 DML, DDL을 사용할 수 있습니다.


2. Select

Select 구문은 데이터베이스 테이블에서 필요한 데이터를 읽어오는 역할을 합니다.

Select 구문은 하나의 라인 값을 읽어올 경우와, 여러 라인 값을 읽어올 경우에 따라 구문을 선택하여 사용하실 수 있습니다.

 

1. Select Single: 데이터베이스에서 하나의 라인 값을 읽어오고자 할 경우 사용합니다.

코드는 다음과 같습니다.

SELECT SINGLE <컬럼 이름> FROM <테이블 이름> WHERE <조건>.

 

2. 여러 라인을 조회할 때는 Select 구문을 사용합니다. 대신 Single이 붙지 않고 조회하고자 하는 컬럼을 작성하시면 됩니다. 사용 시 Select의 결과가 내부 테이블에 저장됩니다. 이것을 ABAP에선 인터널 테이블이라고 합니다.

코드는 다음과 같습니다.

SELECT [DISTINCT] <컬럼 이름> FROM <테이블 이름> WHERE <조건>.

코드를 보니 처음보는 구문인 DISTINCT가 있습니다. DISTINCT는 중복된 값을 제외하는 구문입니다.

전체 컬럼을 조회하고 싶을 때는 '*'를 사용하시면 됩니다. 사용 시 전체 컬럼이 조회됩니다.

 

* AS 구문을 사용하여 칼럼 명에 별명을 지정할 수 있습니다.

SELECT <컬럼 이름> [AS <별명>].

 

3. INTO 구문: Select 구문에서 조회한 결과값을 변수에 저장하는 기능을 수행합니다.

 

INTO 구문엔 다양한 종류가 있습니다. 종류는 다음과 같습니다.

 3-1. INTO <변수>: SELECT 문에 기술한 컬럼의 값을 변수에 저장합니다, 여러 개의 데이터가 찾아질 경우 최종 데이터가 변수에 저장됩니다.

SELECT * INTO <변수> FROM <테이블>.

 3-2. INTO CORRESPONDING FIELDS OF <변수>: TABLE에 있는 컬럼과 변수명이 동일한 변수에 값을 이동

SELECT * INTO CORRESPONDING FIELDS OF <변수> FROM <테이블>.

 3-3. INTO CORRESPONDING FIELDS OF TABLE <인터널 테이블>: TABLE에 있는 필드와 Internal TABLE에 있는 필드가 다를 때 사용

SELECT * INTO CORRESPONDING FIELDS OF TABLE <인터널 테이블> FROM <테이블>.

 

4. FROM 구문: 데이터를 Select할 대상 테이블(또는 뷰)을 지정합니다. FROM 구문 다음에는 하나의 테이블을 지정하거나 여러 개의 테이블을 JOIN할 수 있습니다.

 

5. JOIN 구문: 관계형 데이터베이스에서 여러 개의 테이블 값을 동시에 읽어올 땐 JOIN 구문을 사용합니다.

ABAP Open SQL에서 사용할 수 있는 JOIN 구문은 INNER JOIN, LEFT OUTER JOIN, CROSS JOIN이 있습니다.

 5-1.  INNER JOIN: 조건에 맞는 데이터만 결과로 출력합니다.

 5-2. LEFT OUTER JOIN: 왼쪽에 있는 테이블을 특별 테이블로 관리하며, 왼쪽 테이블에 조건에 맞는 결과가 없어도 JOIN 데이터를 결과로 출력합니다.

 5-3. CROSS JOIN: 두 테이블을 별도의 조건 없이 JOIN합니다.

 

6. SELECT 구문을 이용하여 인터널 테이블에 데이터를 채우거나 추가할 땐 APPEND 구문을 사용합니다.

APPEND : 인터널 테이블에 데이터 추가

 

7. WHERE: WHERE 조건은 Select 조회 수를 줄여주고 사용자가 원하는 데이터를 정확하게 선택할 수 있도록 하는 조건입니다.

WHERE 구문에 사용되는 연산자의 종류는 다음과 같습니다.

    =(EQ), <>(NE), <(LT), >(GT), ≤(LE), ≥(GE)
    - IN(데이터 오브젝트 1 or 데이터 리터럴 1, 데이터 오브젝트 2 or 데이터 리터럴 2, …)
    - BETWEEN A<데이터 오브젝트> AND B<데이터 오브젝트>
    - LIKE <데이터 오브젝트>: ‘_’, ‘%’ 기호를 가지고 사용
    - IN seltab<select-options>
    - IS [NOT]NULL
    - AND, OR: 논리 표현
    - NOT

 

8. GROUPING: Aggregate 함수를 사용하기 위해 사용되는 구문입니다. GROUP BY 절 추가하면 필드를 GROUPING할 수 있습니다.

Aggregate 함수의 종류는 다음과 같습니다.

 AVG: 평균, COUNT: 개수, MAX: 최대값, MIN: 최솟값, STDDEV: 표준편차, SUM: 합계, VARIANCE: 분산

 

9. HAVING: 단독으로 사용 불가능하며, GROUP BY 절과 같이 사용해야 합니다. HAVING 절을 사용하여 추가적인 조건을 부여할 수 있습니다.

 

10. SORT: 데이터를 정렬할 때 사용하는 구문입니다. 정렬 구문에 ORDER BY 구문도 사용하며, ORDER BY 구문 뒤에는 PRIMARY KEY가 올 수 있습니다.

정렬의 종류는 다음과 같습니다.

 ASC(오름차순, 기본) / DESC(내림차순)

* PRIMARY KEY: 특정 필드의 데이터 중복을 없애는 역할을 합니다. 
      

'SAP > ABAP' 카테고리의 다른 글

ABAP. 6  (1) 2024.02.12
ABAP. 5  (1) 2024.01.29
ABAP. 3  (1) 2024.01.25
ABAP. 2  (1) 2024.01.24
ABAP. 1  (0) 2024.01.22