ABAP의 문자열에서 특정 문자를 삭제거나 다른 문자로 변경하는 방법(문자 치환)


ABAP 프로그램을 개발하다 보면 텍스트 문자열에서 특정 문자 또는 일부 문자열을 삭제해서 없애거나 다른 문자 또는 문자열로 변경해서 문자를 치환해야 하는 경우가 있습니다.

엑셀(탭으로 분리된 텍스트) 내용을 인터널테이블로 가져올 때 숫자의 천 단위 구분 쉼표(,)를 없애고 숫자만 컬럼에 넣거나 날짜의 년월일 구분 형식을 슬래쉬(/)에서 하이픈(-)으로 변경해야 하는 등의 일이 발생할 수 있습니다.

ABAP에서 STRING_REPLACE 함수를 사용하면 문자열을 쉽게 없애거나 치환할 수 있습니다.

이번 글에서는 ABAP의 문자열에서 특정 문자를 삭제거나 다른 문자로 변경하는 방법(문자 치환)에 대해 알아보겠습니다.

ABAP의 STRING_REPLACE 함수를 사용하여 특정 문자를 제거하는 방법

▶ STRING_REPLACE 함수는 문자열을 치환(변경)하는 함수 입니다.

▼ 아래 예제는 문자열에서 특정 문자, 여기서는 하이픈(-)을 모두 제거해서 없애는 방법에 대한 예제입니다.

  • PATTERN : 변경할 문자열을 지정해 줍니다. 문자일 수도 있고, 문자열일 수도 있습니다.
  • SUBSTITUTE : 변경될 문자열을 지정해 줍니다. 문자를 예제처럼 아무것도 지정하지 않을 경우 PATTERN에서 지정한 문자열은 모두 제거되어 없어지게 됩니다.
DATA: T_TEXT(30) VALUE ‘010-0000-1111’,
 
* – 문자를 모두 없애고자 할 때
CALL FUNCTION ‘STRING_REPLACE’ 
     EXPORTING 
          PATTERN             = ‘-‘   ” 변경할 문자열 
          SUBSTITUTE          = ”    ” 변경될 문자열 
*         MAX_REPLACES        = 0 
*    importing 
*         number_of_replaces  = numberofreplaces 
     CHANGING 
          TEXT                = T_TEXT    ” 문자열이 들어있는 문장 
     EXCEPTIONS 
          WRONG_STRING_LENGTH = 1 
          OTHERS              = 2.
  • 실행 결과는 T_TEXT의 문자열이 ‘010-0000-1111’에서 ‘01000001111’으로 변경됩니다.
  • 결과적으로 문자열에 포함된 하이픈(-)이 모두 제거된 결과 값을 반환 받을 수 있습니다.
ABAP의 문자열에서 특정 문자를 삭제거나 다른 문자로 변경하는 방법(문자 치환)

ABAP의 STRING_REPLACE 함수를 사용하여 특정 문자를 다른 문자로 변경하는 방법

▶ 앞 단락에서 문자열에서 특정 문자 또는 문자열을 제거하는 방법을 알아 보았다면 이번 단락에서는 STRING_REPLACE의 원래 기능인 문자열을 변경(치환)하는 방법에 대해 예제로 알아보겠습니다.

  • 문자열에서 ‘011’ 문자열을 ‘010’ 문자열로 변경하는 예제입니다.
DATA: T_TEXT(30) VALUE ‘011-0000-1111’,
 
* 문자열 ‘011’을 ‘010’으로 변경할 때
CALL FUNCTION ‘STRING_REPLACE’ 
     EXPORTING 
         PATTERN             = ‘011’   ” 변경할 문자열 
         SUBSTITUTE          = ‘010’    ” 변경될 문자열 
*         MAX_REPLACES        = 0 
*    importing 
*         number_of_replaces  = numberofreplaces 
     CHANGING 
          TEXT                = T_TEXT    ” 문자열이 들어있는 문장 
     EXCEPTIONS 
          WRONG_STRING_LENGTH = 1 
          OTHERS              = 2.
  • 실행 결과는 T_TEXT의 문자열이 ‘011-0000-1111’에서 ‘010-0000-1111’으로 변경됩니다.

결론

ABAP 프로그램에서 STRING_REPLACE Function Module을 사용하여 문자열에서 특정 문자 또는 문자열을 없애거나 치환하는 방법에 대해 알아보았습니다.

ABAP 리포트를 엑셀 파일로 내릴 때 특정 문자열에서 더블쿼테이션(“, 쌍따옴표)이 자동으로 붙어 엑셀에서 열었을 때 셀이 뭉쳐지는 현상을 예방하기 위해 쌍따옴표를 제거하는 로직을 구현할 때 STRING_REPLACE 함수를 사용하면 편리합니다.





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


답글 남기기