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를 돌리는게 옳은 방향일까 의심이 들긴 하다. 다른 방법으로 코딩을 해봐야 겠다.
'SAP > ABAP' 카테고리의 다른 글
SAP BATCH JOB을 만들어보자 (1) | 2023.10.11 |
---|---|
ABAP) ALV 레이아웃 변경->저장 만들기 (0) | 2023.09.04 |
조회한 결과의 데이터가 몇개(ROW COUNT)인지 메시지 만들기 (0) | 2023.08.16 |
ABAP INCLUDE 파일 정의 (SCR) (0) | 2023.08.04 |
ABAP INCLUDE 파일 정의 (TOP) (0) | 2023.08.04 |