300x250

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 예제

 

SAP Unicode 예제

 

potato98.tistory.com

비밀번호 : 유니코드

 

 

# STRLEN 사용해서 문자열 길이( X )


# 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

'.SAP > ..ABAP' 카테고리의 다른 글

SAP LOOP AT 정리( FIRST, NEW, END, LAST ) , 예제  (1) 2024.04.11
SAP ALV Hotspot 정리  (2) 2024.04.02
SAP Maintenance View ( + ) 해결 방법  (0) 2024.03.15
SAP ALV SubTotal(소계) 정리  (3) 2024.02.21
SAP CTS 릴리즈 취소하기  (4) 2024.02.12