본문 바로가기

[한설날][ABAP] SPLIT 문

728x90

 

목차로 가기 (Go to Table of Contents)

 

 

 

설명

· 대상(Text)을 기준(Separator)에 따라 잘라내 지정된 변수(Taget)에 할당합니다.

· 대상(Text)의 왼쪽부터 탐색하며, 대소문자를 구분합니다.

 

 

 

문법

SPLIT Text AT         Separator
         { INTO       Taget Variables
         | INTO TABLE Target ITAB }
         [ IN { CHARACTER | BYTE } MODE ].

 

 

SPLIT 절

· TextCharacter-Like 타입을 참고하는 변수여야 합니다.

 

 

AT 절

· SeparatorCharacter-Like 타입을 참고하는 변수여야 합니다.

· 만약 Separator가 '공백(SPACE, '')'이거나 Text에 존재하지 않는다면 Text를 한 글자씩 자릅니다.

 

 

INTO 절

· 공통

- Target은 IN 절의 모드에 따라 Character-Like 혹은 Byte-Like 타입을 참고하는 변수거나 필드 구조여야 합니다.

- DATA 문을 이용해 Inline Declaration 시 'IN CHARACTER MODE'일 땐 'STRING', 'IN BYTE MODE'일 땐 'XSTRING'을 타입으로 참고하는 변수로 선언됩니다.

- 데이터가 할당될 때 타입 변환 규칙은 무시됩니다.

- 잘린 데이터보다 Target의 길이가 짧다면 데이터의 오른쪽에서 버린 뒤 시스템 변수 'SY-SUBRC'에 4가 할당됩니다.

▴ 반대로 잘린 데이터보다 Target의 길이가 길면 여백만큼 데이터의 오른쪽에 공백(SPACE, ' ')이나 Hexadecimal 0이 채워집니다.

 

· INTO

- 2개 이상의 Target Variable을 사용해야 하며 띄어쓰기로 구분합니다.

 

· INTO TABLE

- Target ITAB은 세컨더리 테이블 키가 없는 스탠다드 테이블이어야 합니다.

- SPLIT 문을 실행하기 전 Target ITAB은 초기화됩니다.

 

 

문의 실행 과정

· ① Text의 왼쪽부터 Separator를 탐색합니다.

· ②-① SeparatorText의 마지막에 있다면 Text를 그대로 Target에 할당한 뒤 문을 종료합니다.

· ②-② Separator를 찾으면 Text에서 Separator 왼쪽 부분을 첫 번째 Target에 할당합니다. (Separator는 할당하지 않습니다.)

· ③ 아직 값이 할당되지 않은 Target이 1개뿐이면 Text의 나머지 부분을 모두 마지막 Target에 할당하고 문을 종료합니다. 이외의 경우 ①번으로 돌아가 현재 기준으로 사용된 Separator의 오른쪽 부분부터 재시작합니다.

· ④ 이미 Text를 다 분할했음해도 Target이 남아있다면 해당 Target들 중 고정된 길이를 갖는 Target들은 길이에 맞는 공백(SPACE, ' ')이나 Hexadecimal 0이 할당됩니다.

 

 

 

#00500 #한설날 #SAP #ABAP #아밥 #AbapSplitStatement #AbapSplit문 #Abap스플릿문 #아밥SplitStatement #아밥Split문 #아밥스플릿문

 

728x90