SAP의 ABAP 프로그램에서 쿼리문은 기본적으로 오픈 쿼리(Open SQL)를 사용합니다.
오픈 쿼리를 사용함으로써 Oracle, MS-SQL, Informix 등등 다양한 DBMS에 대해서 별도의 쿼리문 변경없이 통일된 쿼리문으로 프로그램을 개발할 수 있게 됩니다.
오픈 쿼리로 개발된 프로그램은 실행하는 시점에 각각의 DBMS에 맞는 Native SQL로 자동 변환되어 실행 됩니다.
SAP ABAP에서 LIKE문 사용은 일반적인 SQL의 LIKE문 사용과 동일한 방법으로 사용하면 됩니다.
가장 일반적으로 SQL에서 LIKE 사용할 때는 ‘%‘ 를 사용 합니다.
예) SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘L%‘.
SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘%L%‘.
SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘%H’.
그리고 각각의 자릿수 위치에 매칭 되는 한 글자를 비교하기 위해 ‘_‘ 를 사용 합니다.
예) WHERE name LIKE ‘__123_45_‘.
LIKE문의 ‘%’는 일반적으로 모든 DB의 쿼리 문에서 자주 사용하는 방법이라 별도 설명을 하지 않고 ‘_’에 대한 설명을 예제를 통해 해 보겠습니다.
실제 MARA 테이블의 자재번호를 가져오는 LIKE 문 ‘_’ 사용 예
▶ ABAP에서 LIKE문의 독특한 사용 예제를 위해 MARA 테이블의 자재번호를 가져오는 쿼리 문에서 ‘_’를 사용한 LIKE 문을 설명해 보겠습니다.
DATA LV_MATNR LIKE MARA-MATNR.
SELECT MATNR INTO LV_MATNR FROM MARA WHERE MATNR LIKE ‘_________140140___’.
WRITE:/ LV_MATNR.
ENDSELECT.
앞에 ‘_’이 9개, 뒤에 ‘_’이 3개 표시를 했습니다. 중간에 숫자는 6개 있습니다.
자재번호가 18자리이기 때문에 LIKE문에서 전체 글자 수를 맞추어 주었습니다.
LIKE문의 ‘%’ 는 글자 수에 영향을 받지 않습니다.
하지만 ‘_’ 는 글자 수에 영향을 받습니다.
즉 검색 대상 컬럼의 값과 LIKE문 각각의 해당 자릿수를 비교하게 되는 것입니다.
그래서 아래와 같은 방식의 LIKE문 사용도 가능해 집니다.
WHERE MATNR LIKE ‘_______0_140140__1’.
각 자릿수를 비교하는 단점이 있는 대신, 좀 더 다양한 방식으로 조건을 줄 수 있는 장점도 있습니다.
마무리
이상으로 ABAP 오픈 쿼리에서 LIKE문의 독특한 사용 방식을 예제를 통해 알아보았습니다.
다른 개발 언어에서의 LIKE 문과 조금 다른 방식의 LIKE 문을 잘 활용해 보시기 바랍니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
♥ 이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.