본문 바로가기

Ⅰ. ERP/1. ABAP

[ABAP] 문자열에서 특정 문자 지우고 싶을 때 ( 특히 \,@ 등)

728x90

 1️⃣ 일반적인 특수문자 제거 방법


SAP에서 문자열의 특정 문자를 제거할 때는 `REPLACE ALL OCCURRENCES OF REGEX` 구문을 사용하는 것이 보통입니다. 이 방식은 특정 문자가 문자열에서 반복적으로 등장할 경우, 이를 쉽게 찾아 제거할 수 있는 간단한 접근 방법입니다. 예를 들어, 특정 문자를 공백이나 다른 문자로 대체하고자 할 때 다음과 같은 구문을 사용합니다.

```abap
REPLACE ALL OCCURRENCES OF REGEX '특정문자' IN 문자열 WITH ' '.
```



위 구문은 문자열에서 지정된 특정 문자를 공백으로 바꾸는 역할을 합니다. 이 방식은 문자가 일정하고 그 수가 적을 때 효과적입니다. 하지만 SAP 환경에서 문자 자체가 시스템에 따라 다르게 인식되는 경우, 이런 기본적인 방식으로는 문제가 발생할 수 있습니다.


 


2️⃣ 문제 상황: 문자 일치 인식 문제


일부 특수문자, 예를 들어 `\`와 같은 문자는 SAP에서 문자열에 포함될 때 그대로 인식되지 않을 수 있습니다. 특히 CHAR 형식문자열에 들어갈 때 문자 자체로 일치하지 않거나, 아스키 코드로 표시되어 일치하지 않는 문제가 발생할 수 있습니다. 이러한 경우 단순한 `REPLACE` 구문만으로는 문자를 찾고 제거하는 것이 어렵습니다.

이와 같은 문제는 SAP에서 다양한 문자열 조작 시 주로 발생하며, 문자 일치 방식이 시스템에 따라 다를 수 있기 때문에 예기치 않은 오류가 발생할 수 있습니다.



---

 

3️⃣ 해결책: 정규식을 활용한 특수문자 제거 방법


SAP의 정규식 기능을 사용하면, 모든 특수문자를 한 번에 제거할 수 있습니다. 아래와 같은 구문으로 모든 알파벳과 숫자를 제외한 문자를 제거할 수 있습니다.

```abap
REPLACE ALL OCCURRENCES OF REGEX '[^[:alnum:]]' IN LS_MOD_CELLS-VALUE WITH ''.
```


이 구문에서 `[[:alnum:]]`는 알파벳과 숫자만을 나타내며, `^` 기호를 앞에 붙여 알파벳과 숫자가 아닌 모든 문자를 찾도록 설정합니다. 이 패턴을 사용하면 특수문자를 전부 제거하여 숫자와 문자만 남기는 것이 가능합니다. 특히, 엑셀과 같은 외부 프로그램에서 가져온 데이터를 SAP에 입력할 때 불필요한 특수문자가 포함된 경우 이 방법을 사용하여 한 번에 정리할 수 있습니다.

---


4️⃣ 추가적으로 고려할 점: ASCII 코드 방식 활용


특정 문자나 기호가 정규식을 통해도 완벽히 처리되지 않는다면, ASCII 코드를 사용해 접근할 수 있습니다. ASCII 코드는 각 문자에 대한 고유의 코드로서, 이를 활용해 문자를 식별하고 삭제할 수 있습니다. 예를 들어, 특수문자의 ASCII 값을 확인한 후, 이를 조건문으로 추가하여 제거할 수 있습니다.

---


 5️⃣ 엑셀 업로드 시 특수문자 정리 활용 예시


엑셀 파일을 SAP로 업로드할 때, 데이터를 변환해 특수문자를 제거해야 하는 경우가 있습니다. 예를 들어, 엑셀에서 불러온 금액 필드에 포함된 특수문자(`,`, `\`) 등은 SAP에서 인식되지 않거나 잘못 인식될 수 있습니다. 이 경우 위에서 설명한 정규식을 적용하여 특수문자를 제거하면 데이터를 깨끗하게 변환할 수 있습니다.

### 예시 코드
```abap
DATA(lv_text) = '1,000\USD'.

REPLACE ALL OCCURRENCES OF REGEX '[^[:alnum:]]' IN lv_text WITH ''.

WRITE: lv_text. " 결과: 1000USD
```


이처럼 정규식을 사용하면 다양한 특수문자 처리 상황에서 유연하게 대처할 수 있으며, SAP에서 문자열 데이터를 정리하는 데 유용합니다!

728x90