SAP/ABAP

ABAP CHECK 함수

쩨비 2023. 8. 10. 14:59
728x90

ABAP 소스 분석중 Web개발만 하던 나로써는 도저이 이해 할 수 없는 구문이였다.

 

IF SO_HKONT IS NOT INITIAL.
      LOOP AT  GT_BSEG WHERE BUKRS = GT_BKPF-BUKRS
                                      AND BELNR = GT_BKPF-BELNR
                                      AND GJAHR = GT_BKPF-GJAHR
                                      AND HKONT IN SO_HKONT.
      ENDLOOP.
      CHECK SY-SUBRC = 0.
    ENDIF.

LOOP를 도는데 BSEG가 있는지 찾고 왜 아무 행위도 하지 않고 LOOP를 끝내버리는거지??

 

정답은 CHECK 함수에 있었다.

 

CHECK 함수 : 조건이 맞으면 아래로 진행, 조건이 맞지 않으면 함수(FORM)을 빠져 나온다. GT_BSEG의 이터널 테이블에 WHERE절에 값이 있는지 없는지 체크하고 있지 않을경우 SY-SUBRC를 0이 아닌 다른 값으로 보내 구문을 빠져 나오려 함이다.

 

 

IF문을 이용한 분기처리나 return false를 이용 할 때와 다르게 나름 깔끔해 보이기도 하지만 저렇게 LOOP를 돌리는게 옳은 방향일까 의심이 들긴 하다. 다른 방법으로 코딩을 해봐야 겠다.