SAP - DataBase

신지수·2022년 3월 4일
2

SAP

목록 보기
2/10

0. OPEN SQL & NATIVE SQL

  • OPEN SQL: DB종류에 상관 없이 ABAP Dictionary에서 선언한 모든 오브젝트를 조회할 수 있음
  • NATIVE SQL: DB 종류에 따라 사용할 수 있는 SQL구문이 다름

1. OPEN SQL

1. SELECT

1-1. SELECT 구문

  • DB 테이블에서 필요한 데이터를 읽어 옴
  1. SINGLE LINE
    : 하나의 라인 값을 읽어오고자 할 때(한 건의 데이터만 가져옴)

    SELECT SINGLE 필드명 
    INTO 변수 
    FROM DB 
    WHERE 조건
  1. CORRESSPONDING FIELDS OF
    : 한 번에 Work area(=header line)의 동일 필드명에 값을 할당

    SELECT * 
    INTO CORRESPONDING FIELDS OF TABLE ITAB 
    FROM DB 
    INNER JOIN DB2 ON DB-A = DB2-A 
    WHERE  조건
  1. FOR ALL ENTIRES IN
    : INTERNAL TABLE에 담긴 모든 데이터를 where 아래의 조건에 따라 itab의 record를 select구문의 조건으로 활용.

    • INTERNAL TABLE에 존재하는 필드만 가능
    • 제약조건이 많고 Performance가 좋은 편이 아님
    • 아래 코드에서 GT_DATA, LT_LFA1의 컬럼타입이 같아야 함.
    • 아래 코드에서 GT_DATA에 값이 있어야함

    SELECT *
      INTO CORRESPONDING FIELDS OF TABLE LT_LFA1
      FROM LFA1
       FOR ALL ENTRIES IN GT_DATA
      WHERE LIFNR = GT_DATA-PERSNO.

    SORT LT_LFA1 BY LIFNR.
  1. MOVE-CORRESPONDING a TO b
    : 컬럼명이 같은 데이터만 복사

    • Loop 안에서 쓸 시 append를 붙여 줘야 함

	LOOP AT DATA.
    	MOVE-CORRESPONDING A TO B.
        APPEND B.
    ENDLOOP.
    

1-2. INTO 구문

  • SELECT 구문에서 조회한 결과값을 변수(Target Area)에 저장하는 기능을 수행

  - GT_M0323에 조건 만족하는 값 저장
  
  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE GT_M0323
  FROM ZOJT01_T0323
  WHERE ZMENU IN M_1.

1-3. WHERE 구문

연산자의미
EQ , =같음
NE , <> , ><같지않음
LT , <보다 작음
LE , <=작거나 같음
GT , >보다 큼
GE , >=크거나 같음

2. INSERT

2-1. INSERT 구문

  • 테이블에 하나 또는 여러개의 데이터를 삽입

 두개 같은 의미, WA는 테이블과 같은 구조로 선언되야 함 
 INSERT INTO <TABLE> VALUES <WA>
 INSERT <TABLE> FROM <WA>

3. MODIFY

  • INSERT, UPDATE기능 제공
    • INSERT: 동일한 키값이 존재하지 않는 경우
    • UPDATE: 동일한 키값이 존재하는 경우

DATA: LT_DATA LIKE GT_DATA OCCURS 0 WITH HEADER LINE.
  
" LPT_DATA의 수정 작업을 거친 후 PT_DATA를 LPT_DATA로 MODIFY
   MODIFY GT_DATA FROM LT_DATA.
  
" GT_DATA의 특정 인덱스를 MODIFY
   MODIFY GT_DATA INDEX 1.

4. DELETE


" 1. WHERE 조건에 맞는 데이터를 모두 삭제 
DELETE FROM <TABLE> WHERE SERNO = GT_DATA-SERNO.
  
" 2. READ, LOOP에서 찾은 INDEX로 데이터 삭제
DELETE <TABLE> INDEX SY-TABIX.
  
" 3. 해당 Work Area의 key와 동일한 데이터 삭제
DELETE TABLE <TABLE> FROM <WA>
profile
병아리 개발자🐥

0개의 댓글