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를 돌리는게 옳은 방향일까 의심이 들긴 하다. 다른 방법으로 코딩을 해봐야 겠다.
728x90