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의 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 함수를 사용하면 편리합니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^