ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ABAP] #29 OPEN SQL DML
    SAP/ABAP 2026. 1. 11. 15:43

     

     

     

     

     

     

     

    데이터 변경 관련 Open SQL

    데이터베이스 테이블의 내용을 변경하는 명령어들은 다음과 같다.

    • INSERT (데이터 삽입)
    • UPDATE (데이터 수정)
    • MODIFY (삽입 또는 수정)
    • DELETE (데이터 삭제)

     

    그리고 처리 결과는 다음과 같은 시스템 변수에서 확인할 수 있다. 

    • sy-subrc : SQL의 실행 성공 여부
    • sy-dbcnt : 실제로 처리된 레코드 건수

    Client Handling (클라이언트 처리)

    SAP는 기본적으로 로그인한 클라이언트(MANDT) 기준으로만 데이터에 접근한다.
    다른 클라이언트 데이터를 다뤄야 할 경우 아래 구문을 사용한다.

     

    1. CLIENT SPECIFIED 

    • WHERE 조건에 MANDT를 직접 명시, 그렇지 않으면 전체 클라이언트 조회
    SELECT * FROM ztable
      CLIENT SPECIFIED
      WHERE mandt = '100'.

     

    2. USING CLIENT 

     

    • 특정 클라이언트로 접속한 것처럼 동작
    • 최신 구문
    SELECT * FROM ztable
      USING CLIENT '100'.

     


     

    INSERT (데이터 삽입)

    • 단일 건
    INSERT INTO <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] VALUES <wa>.
    INSERT      <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM   <wa>.

     

    • 다 건
    INSERT <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab>
                   [ACCEPTING DUPLICATE KEYS].

     

    ※ 동일키가 존재하면 Insert 불가 -> 덤프 에러남.

       ACCEPTING DUPLICATE KEYS를 사용하면 덤프가 일어나지 않고, 중복키 제외하고 나머지 데이터를 추가한다.


    UPDATE (데이터 수정)

    • 단일 건
    UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>.
    UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] SET <f1> = <g1>
                                                                 <f2> = <g2> ...
                                                             WHERE <full_qualified_key>.

     

    • 다 건
    UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab>.
    UPDATE <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] SET <f1> = <g1>
                                                                 <f2> = <g2> ...
                                                             WHERE <condition>.

     

    ※ Where 조건 항상 확인 !

       조건 없으면 전체 업데이트됨.


    MODIFY (삽입 또는 수정)

    • Modify는 Update와 Insert 기능 둘 다 수행한다.
    • 동일키가 존재하면 Update
      동일키가 존재하지 않으면 Insert를 수행한다.

     

    • 단일 건
    MODIFY <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>.

     

    • 다 건
    MODIFY <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <itab>.

     

    가장 편리하지만 의도치 않은 Insert 발생 가능하기 때문에 주의 !


    DELETE (데이터 삭제)

    • 단일 건
    DELETE      <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM <wa>.
    DELETE FROM <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] WHERE <full_qualified_key>.

     

    • 다 건
    DELETE      <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] FROM TABLE <wa>.
    DELETE FROM <dbtab> [CLIENT SPECIFIED | USING CLIENT client#] WHERE <condition>.

     

    ※ Where 조건 항상 확인 !

       조건 없으면 전체 삭제됨.


    데이터 원복

    DB 변경 작업을 취소하고 이전 상태로 되돌린다.

    • ROLLBACK WORK 명령어 사용.
    • 메시지 타입 A가 발생하면 자동으로 롤백
    ...
    
    IF sy-subrc <> 0.
      MESSAGE a...
      또는
      ROLLBACK WORK.
    ENDIF.

     

     

     

     

     

     

     

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

    [ABAP] #31 Number Range  (0) 2026.01.16
    [ABAP] #30 LUW & Lock  (0) 2026.01.16
    [ABAP] #28 BDC & Background Job  (0) 2026.01.11
    [ABAP] #27 프로그램 호출과 데이터 전달  (0) 2026.01.10
    [ABAP] #26 ALV Container  (1) 2026.01.10
Designed by Tistory.