300x250
728x90
Unicode란
ISO/IEC 10646 Universal Character Set과 UCS, UTF 등의 인코딩 방식, 문자 처리 알고리즘 등이다.
쉽게 말해서 Unicode는 지구상에서 통용되는 대부분의 문자들을 담고 있다고 보면 된다.
-나무위키-
# 서, 동유럽어, 아랍어, 히브리어, 중국어, 일본어, 한국어, 태국어등 언어의 문자를 인코딩할 수 있는 18비트 문자 인코딩이다.
또한 SAP에서는 Unicode 지원하기 전에는 ASC11, EBCDIC 문자 집합만 지원했지만
이제는 Unicode 지원을 해서 ISO 표준을 따르고 ASCII와 같은 인코딩 기술을 지원한다.
# ASC11, EBCDIC는 문자 길이가 1byte ,
# Unicode는 문자 길이가 2byte이다.
프로그램에서 Unicode 적용을 했을 때에는
한글 한 자( 2byte) , 영어 한 자( 1byte ) 알고 있으면 된다.
시작해 보자.
예제)
2024.03.20 - [.SAP/....ABAP 예제] - SAP Unicode 예제
비밀번호 : 유니코드
# STRLEN 사용해서 문자열 길이( 체크가 안되는 예제 )
# 01. 문자열 길이를 STRLEN 명령어를 통해 한다고 하면 다음과 같이 자를 수 있을 것이다.
# 02. 디버깅을 해서 실행을 해보면? 다음과 같이 자릿수가 37을 안 넘는 걸로 보인다.
# 실제로는 Unicode 때문에 37보다 자릿수를 더 많이 차지하지만 STRLEN을 사용하면 다음과 같이 보이기 때문에 한글과 영어가 같이 사용하게 되면 자릿수만 체크하는 걸 볼 수 있다.
# 그렇기 때문에 STRLEN을 쓰는 것보단 Class로 체크 해주어야 한다.
# Class을 사용해서 문자열 길이
CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
# 1. 위 Class을 통해서 실제 문자열 길이를 가져와보자.
# 2. 디버깅을 통해서 어떻게 나오는지 확인해 보자.
# 실제 문자열 길이는 "44"로 나오는 걸 볼 수 있다. 그렇기 때문에 STRLEN을 사용하는 것이 아닌 Class을 사용해서 문자열을 체크하는 방식으로 선택해야 한다.
DATA:
LV_UNICODE_LEN(3),
LV_TEXT(100).
PARAMETERS
PA TYPE MAKT-MAKTX.
CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
EXPORTING
FIELD = PA " Field "
RECEIVING
LEN = LV_UNICODE_LEN. " Output Length "
IF LV_UNICODE_LEN >= 37.
LV_TEXT = |{ PA+0(30) }|.
ELSE.
LV_TEXT = PA.
ENDIF.
WRITE: LV_TEXT.
728x90
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP 특정 컬러 중복제거( GROUP BY ) 정리 (0) | 2024.04.11 |
---|---|
SAP LOOP AT 정리( FIRST, NEW, END, LAST ) , 예제 (1) | 2024.04.11 |
SAP Maintenance View ( + ) 해결 방법 (0) | 2024.03.15 |
SAP 테이블 데이터 강제 수정하기 [SE16N] (1) | 2024.02.06 |
SAP Call Transaction 새 창 띄우기 (0) | 2024.01.19 |