[ABAP] OPEN SQL 데이터 변경 - INSERT, MODIFY


🌝 OPEN SQL : 데이터 변경 - INSERT



🌜 Single line


  • 테이블에 하나의 line을 삽입하기 위한 문장

  • INSERT INTO <target> VALUES <wa>.
    INSERT <target> FROM <wa>.
    INSERT <dbtab>. 
    
    • <wa>는 테이블과 같은 구조로 선언되어야 함

    • INSERT <dbtab> 구문을 쓰기 위해서는 TABLES : <dbtab>이 선언되어야 함

    • 위 두 내용은 UPDATE, DELETE, MODIFY에도 동일하게 적용


🌜 Several line


  • 인터널 테이블의 모든 값을 테이블에 한 번에 삽입

  • 같은 KEY 값을 INSERT 하면 dump error가 발생하기 때문에, 이를 방지하기 위해 ACCEPTING DUPLICATE KEYS 구문 사용

  • INSERT 구문 실패 시 SY-SUBRC 값 4 반환

  • ex)

      REPORT ZTEST.
    
      DATA : gt_spfli TYPE TABLE OF spfli,
          gs_spfli TYPE spfli.
    
      gs_spfli-carrid = 'KO'.
      gs_spfli-connid = '0001'.
      gs_spfli-cityfrom = 'SEOUL'.
      gs_spfli-cityto = 'PARIS'.
      APPEND gs_spfli TO gt_spfli.
    
      gs_spfli-carrid = 'KO'.
      gs_spfli-connid = '0002'.
      gs_spfli-cityfrom = 'SEOUL'.
      gs_spfli-cityto = 'NICE'.
      APPEND gs_spfli TO gt_spfli.
    
      INSERT spfli FROM TABLE gt_spfli ACCEPTING DUPLICATE KEYS.
    


  • 💡 APPEND 보다는 INSERT INTO TABLE을 사용하자!

    • APPEND

      • 인터널 테이블의 마지막 위치에 추가

      • Index만 이용해 추가하기 때문에 Hashed Type에서는 사용 불가

    • INSERT INTO

      • Standard Table, Sorted Table, Hashed Table에서 모두 사용 가능

      • Key와 Index를 이용해 원하는 위치에 추가 가능



🌝 OPEN SQL : 데이터 변경 - MODIFY


  • MODIFY는 UPDATE와 INSERT를 합한 기능을 수행

    • 킷값을 가지는 데이터가 테이블에 존재한다면 UPDATE

    • 존재하지 않는다면 INSERT

  • ex)

      REPORT ZTEST.
    
      DATA : gt_spfli TYPE TABLE OF spfli,
          gs_spfli TYPE spfli.
      * spfli 테이블의 킷값은 carrid, connid
    
      gs_spfli-carrid = 'KO'.
      gs_spfli-connid = '0001'.
      gs_spfli-cityfrom = 'KOREA'.
      MODIFY spfli FROM gs_spfli.
    
      gs_spfli-carrid = 'KO'.
      gs_spfli-connid = '0001'.
      gs_spfli-cityfrom = 'SEOUL'.
      APPEND gs_spfli TO gt_spfli.
    
      gs_spfli-carrid = 'KO'.
      gs_spfli-connid = '0003'.
      gs_spfli-cityfrom = 'BUSAN'.
      APPEND gs_spfli TO gt_spfli.
        
      MODIFY spfli FROM gt_spfli.
    

Categories:

SAP/ABAP