MODIFY, APPEND 차이점

J._NA 개발일지·2025년 3월 4일

  LOOP AT GT_DISP INTO GS_DISP.
* 라디오 버튼
      IF C_DPO = 'X'.
       IF GS_DISP-LOEKZ = 'L'.
          CONTINUE.
       ENDIF.
     ENDIF.

*    APPEND GS_DISP TO GT_DISP[].
    MODIFY GT_DISP FROM GS_DISP .
  ENDLOOP.

체크 박스 체크시, 삭제PO포함(전체)를 보여주고, 미체크시 삭제PO필드 제외하여 보여줘야한다.

이것을 구현하기 위해서 GS_DISP-LOEKZ 필드의 값 여부에 따라 테이블에 담던지, 제외해야하는데

구현하지 못했다.

코드 리뷰 (문제점)

  1. MODIFY가 무엇인가 => INSERT, UPDATE.
    그렇다면, 언제 INSERT & UPDATE가 발생하는가?
    키값을 가지고 있는 데이터가 테이블에 존재하면 변경하고, 없으면 삽입한다.

    내가 구현한건 위처럼 IF문으로 분기처리 했는데 아무런 변경이 일어나지 않았다.
    이유1. 글로벌테이블에 전체 데이터 값을 갖고 있기때문

    LOOP 안에서는 데이터 가공을 위함인데 이미 전체 데이터에 LOEKZ 필드값이 다 들어 있기 때문에 값이 변경되지 않아 MODIFY가 제대로 작동하지 않는것.

해결방법 (APPEND)

  1. 글로벌테이블에 바로 담지 말고 로컬 테이블에 담기( GT_DISP => LT_DISP/ 구조체는 동일)
  1. LOOP를 GS_DISP 로 돌리고, APPEND 시킨다.

해결방법 (MODIFY)

RANGE 변수로 담아 쿼리에서 없애주기

profile
아밥 & 프론트엔드 개발자

0개의 댓글