SAP ABAP SELECT문에서 LIKE 사용 방법(2가지 방식)


이전에 포스팅 한 글 중에서 ABAP에서 LIKE문의 독특한 사용 예제(Open Query에서 LIKE문 사용하기) 글이 있습니다.
SAP ABAP에서 사용하는 독특한 형식의 LIKE 구문 사용에 대한 설명을 다루어 본 적이 있습니다.

이번 글에서는 일반적으로 LIKE 구문에서 사용하는 ‘%’를 사용한 LIKE 구문에 대해 알아보고자 합니다.

사실 SELECT문의 LIKE 구문에서 ‘%’는 모든 데이터베이스(DBMS)에서 공통적으로 사용되는 구문입니다.

이번 글에서 중요하게 다루는 부분은 사용자 입장에서 어떤 방식으로 접근하는 것이 효과적인 방법인지에 대한 설명입니다.
그럼 지금부터 SAP ABAP SELECT문에서 LIKE 사용 방법(2가지 방식)에 대해 알아보겠습니다.

SELECT 쿼리 문에서 LIKE 구문의 일반적인 사용 방법

SELECT 쿼리 문에서 LIKE 구문은 테이블 필드(컬럼)에서 부분적으로 일치하는 데이터를 검색할 때 사용하는 구문입니다.
‘MATCH’ 구문과 비슷한 기능을 수행합니다.

일반적으로 SQL 쿼리 문에서 LIKE 사용할 때는 ‘%‘를 사용 합니다.

  • SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘L%.
  • SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘%L%.
  • SELECT * FROM SFLIGHT WHERE CARRID LIKE ‘%H’.

입력 변수(파라미터 변수)에 ‘%’를 붙여서 LIKE 구문 처리

▼ 아래 ABAP 예제 소스는 PA_NAME 파라미터 변수로 이름을 입력받고, LIKE 구문으로 NAME 필드에서 해당 이름이 포함된 데이터를 모두 가져오는 예제입니다.

REPORT  YTEST0001.
 
” SELECT 실행 결과를 저장할 인터널테이블
DATA : BEGIN OF GT_LIST OCCURS 0.
               INCLUDE STRUCTURE SCUSTOM.
DATA : END OF GT_LIST.
 
” LIKE문에 사용할 변수 선언(필드의 TYPE으로 선언 해줌)
DATA: LV_NAME LIKE SCUSTOM-NAME.
 
” 선택 조건의 파라미터를 선언
PARAMETER PA_NAME TYPE SCUSTOM-NAME.
 
 
” CONCATENATE을 통해서 % 와 선택 조건의 입력될 값을 연결
CONCATENATE ‘%’ PA_NAME ‘%’ INTO LV_NAME.
 
”  SELECT의 WHERE 조건문에 LIKE문 사용
SELECT *
   FROM SCUSTOM
   INTO TABLE GT_LIST
   WHERE NAME LIKE LV_NAME.
 
 
” 인터널 테이블 출력 “
LOOP AT GT_LIST.
 
  WRITE:/ GT_LIST-NAME.
 
ENDLOOP.

▼ 아래 화면은 SCUSTOM 테이블의 전체 데이터 리스트 입니다.

SAP ABAP SELECT문에서 LIKE 사용 방법 1

▼ 아래 화면은 위의 ABAP 예제 프로그램을 실행했을 때 검색 조건으로 “IN“을 입력하고 실행했을 때의 화면과 실행 결과 화면입니다.

  • NAME 필드에 ‘IN’ 포함 된 데이터만 모두 검색해서 출력해 주고 있습니다.
SAP ABAP SELECT문에서 LIKE 사용 방법 2

입력 변수(파라미터 변수)를 그대로 사용하여 LIKE 구문 처리

▶ 아래 예제는 CONCATENATE ‘%’ PA_NAME ‘%’ INTO LV_NAME.를 사용하지 않고, PA_NAME 파라미터 변수를 그대로 사용할 때의 예제들 입니다.

  • SELECT * FROM SCUSTOM INTO GT_LIST WHERE NAME LIKE PA_NAME.

▼ NAME 필드의 데이터에 ‘IN’이 포함된 데이터만 모두 검색해서 가져오고 있습니다.

  • SELECT * FROM SCUSTOM INTO GT_LIST WHERE NAME LIKE ‘%IN%’.
SAP ABAP SELECT문에서 LIKE 사용 방법 3

▼ NAME 필드의 데이터가 ‘SAP’로 시작하는 데이터만 모두 검색해서 가져오고 있습니다.

  • SELECT * FROM SCUSTOM INTO GT_LIST WHERE NAME LIKE ‘SAP%’.
SAP ABAP SELECT문에서 LIKE 사용 방법 4

▼ NAME 필드의 데이터가 ‘INC.’으로 끝나는 데이터만 모두 검색해서 가져오고 있습니다.

  • SELECT * FROM SCUSTOM INTO GT_LIST WHERE NAME LIKE ‘INC.%’.
SAP ABAP SELECT문에서 LIKE 사용 방법 5

마무리 및 효과적인 방법에 대한 고민

이상으로 ABAP에서 LIKE 구문을 사용하는 방법에 대해 예제 화면을 통해 알아보았습니다.
두 가지 방식에 대해 아래 내용을 참고해서 어떤 부분이 현재 상황에서 더 적절한지 고민해서 적용해 보시기 바랍니다.

▶ 쿼리 문에서 LIKE 구문을 사용할 때 사용자는 검색한 순수 단어만 입력하고, 프로그램 내부에서 ‘%’ 붙여서 사용하는 방법은 좀 더 사용자 친화적인 방법이 될 수 있습니다.

일반 사용자들은 ‘%’의 사용 의미를 이해하지 못하는 대부분 입니다. 따라서 사용자는 순수 검색 단어만 입력하고 프로그램에서 자동을 ‘%’ 붙여 실행되도록 해 주는 것이 사용자 입장에서는 더 편리한 방법이 됩니다.

하지만 입력한 단어로 시작하는 모든 데이터, 입력한 단어로 끝나는 모든 데이터, 입력한 단어가 포함된 모든 데이터 등의 구분을 프로그램에서 처리해줘야 하는 번거로움은 생길 수 있습니다.

▶ 쿼리 문에서 LIKE 구문을 사용할 때 사용자 직접 원하는 위치에 ‘%’를 붙여서 실행할 경우 프로그램을 단순화 할 수 있고, 좀 더 확장된 검색 결과를 가져올 수 있습니다. 사용자가 실행하는 시점에 ‘%’를 붙이는 위치에 따라 자동으로 검색 조건의 대상이 달라지므로 개발자가 딱히 정의해 줄 구문이 없습니다.

하지만 사용자가 ‘%’의 정확한 사용 의미를 알고 있어야 한다는 전제 조건이 필요합니다.
일반 사용자들은 ‘%’의 의미를 잘 모르기 때문에 사전에 설명이나 안내 문구를 함께 표시해 줘야 하는 번거로움이 생길 수 있습니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기