String Expressions & Functions
ABAP new syntax에서는 문자열 처리를 위해 in-line으로 사용할 수 있는 다양한 기능을 제공하고 있습니다.
아래 예시 최근에 사용한 String Expression의 format option과 function입니다.
이외에도 무수히 많은 기능이 있으니 도움말을 참고하면 됩니다.
String format_options
Syntax
... [WIDTH = len]
[ALIGN = LEFT|RIGHT|CENTER|(dobj)|expr]
[PAD = c]
[CASE = RAW|UPPER|LOWER|(dobj)|expr]
[SIGN = LEFT|LEFTPLUS|LEFTSPACE|RIGHT|RIGHTPLUS|RIGHTSPACE|(dobj)|expr]
[EXPONENT = exp]
[DECIMALS = dec]
[ZERO = YES|NO|(dobj)|expr]
[XSD = YES|NO|(dobj)|expr]
[STYLE = SIMPLE|SIGN_AS_POSTFIX|SCALE_PRESERVING
|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO
|SCALE_PRESERVING_SCIENTIFIC|ENGINEERING
|(dobj)|expr]
[CURRENCY = cur]
[NUMBER = RAW|USER|ENVIRONMENT|(dobj)|expr]
[ALPHA = IN|OUT|RAW|(dobj)|expr]
[DATE = RAW|ISO|USER|ENVIRONMENT|(dobj)|expr]
[TIME = RAW|ISO|USER|ENVIRONMENT|(dobj)|expr]
[TIMESTAMP = SPACE|ISO|USER|ENVIRONMENT|(dobj)|expr]
[TIMEZONE = tz]
[COUNTRY = cty] ...
String Processing Functions
- cmax, cmin - Character-Like Extreme Value Functions
- condense - Condense Function
- concat_lines_of - Concatenation Function
- escape - Escape Function
- insert- Insert Function
- match - Match Function
- repeat - Repeat Function
- replace - Replace Function
- reverse - Reverse Function
- segment - Segment Function
- shift_left, shift_right - Shift Functions
- substring, substring_... - Substring Functions
- to_upper, to_lower, to_mixed, from_mixed - Case Functions
- translate - Translate Function
# 사용 예시
DATA: LV_DEC TYPE P LENGTH 8 DECIMALS 2 VALUE -10000,
LV_URL TYPE STRING VALUE `https://www.naver.com/?q=한글`,
LV_STR TYPE STRING VALUE `Mat 자재 3.5", 10Kg`,
LV_KUN TYPE KNA1-KUNNR VALUE '0000000010',
LV_TIMESTAMP TYPE TIMESTAMPL.
GET TIME STAMP FIELD LV_TIMESTAMP.
*String format_options
*... [WIDTH = len]
* [ALIGN = LEFT|RIGHT|CENTER|(dobj)|expr]
* [PAD = c]
* [CASE = RAW|UPPER|LOWER|(dobj)|expr]
* [SIGN = LEFT|LEFTPLUS|LEFTSPACE|RIGHT|RIGHTPLUS|RIGHTSPACE|(dobj)|expr]
* [EXPONENT = exp]
* [DECIMALS = dec]
* [ZERO = YES|NO|(dobj)|expr]
* [XSD = YES|NO|(dobj)|expr]
* [STYLE = SIMPLE|SIGN_AS_POSTFIX|SCALE_PRESERVING
* |SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO
* |SCALE_PRESERVING_SCIENTIFIC|ENGINEERING
* |(dobj)|expr]
* [CURRENCY = cur]
* [NUMBER = RAW|USER|ENVIRONMENT|(dobj)|expr]
* [ALPHA = IN|OUT|RAW|(dobj)|expr]
* [DATE = RAW|ISO|USER|ENVIRONMENT|(dobj)|expr]
* [TIME = RAW|ISO|USER|ENVIRONMENT|(dobj)|expr]
* [TIMESTAMP = SPACE|ISO|USER|ENVIRONMENT|(dobj)|expr]
* [TIMEZONE = tz]
* [COUNTRY = cty] ...
" 마이너스 부호를 앞으로 이동
WRITE:/ |{ LV_DEC SIGN = LEFT }|.
" 숫자를 사용자 UI형식으로
WRITE:/ |{ LV_DEC NUMBER = USER }|.
" 숫자에 통화키 설정
WRITE:/ |{ LV_DEC CURRENCY = 'KRW' }|.
" 숫자에 통화키 설정 및 사용자 UI형식으로
WRITE:/ |{ LV_DEC CURRENCY = 'KRW' NUMBER = USER }|.
" 대문자 변환
WRITE:/ |{ LV_STR CASE = UPPER }|.
" 소문자 변환
WRITE:/ |{ LV_STR CASE = LOWER }|.
" Conversion Alpha OUTPUT
WRITE:/ |{ LV_KUN ALPHA = OUT }|.
" 날짜 표시 형식
WRITE:/ |{ SY-DATUM DATE = ISO }|.
WRITE:/ |{ SY-DATUM DATE = ENVIRONMENT }|.
WRITE:/ |{ SY-DATUM DATE = USER }|.
" 시간 표시 형식
WRITE:/ |{ SY-UZEIT TIME = ISO }|.
WRITE:/ |{ SY-UZEIT TIME = ENVIRONMENT }|.
WRITE:/ |{ SY-UZEIT TIME = USER }|.
" TIMESTAMP 표시 형식
WRITE:/ |{ LV_TIMESTAMP TIMESTAMP = ISO }|.
WRITE:/ |{ LV_TIMESTAMP TIMESTAMP = ENVIRONMENT }|.
WRITE:/ |{ LV_TIMESTAMP TIMESTAMP = USER }|.
*String Functions
*cmax, cmin - character-like extreme value functions
*condense - condense function
*concat_lines_of - concatenation function
*escape - escape function
*insert - insert function
*match - match function
*repeat - repeat function
*replace - replace function
*reverse - reverse function
*segment - segment function
*shift_left, shift_right - shift functions
*substring, substring_... - substring functions
*to_upper, to_lower, to_mixed, from_mixed - case functions
*translate - translate function
"Condense
WRITE:/ CONDENSE( ` text ` ).
"Replace
WRITE:/ REPLACE( VAL = |{ LV_TIMESTAMP TIMESTAMP = ISO }| REGEX = '[^[:alnum:]]' WITH = SPACE OCC = 0 ).
"Shift_left
WRITE:/ SHIFT_LEFT( VAL = LV_STR PLACES = 3 ).
"to_upper
WRITE:/ TO_UPPER( LV_STR ).
"to_lower
WRITE:/ TO_LOWER( LV_STR ).
"URL Encoding
WRITE:/ ESCAPE( VAL = LV_URL FORMAT = CL_ABAP_FORMAT=>E_URL ).
"Escape Json String
WRITE:/ ESCAPE( VAL = LV_STR FORMAT = CL_ABAP_FORMAT=>E_JSON_STRING ).
* String format과 function을 여러가질 조합하여 사용할 수 있다.
" replace와 shift_left 조합
WRITE:/ SHIFT_LEFT( VAL = REPLACE( VAL = |{ LV_TIMESTAMP TIMESTAMP = ISO }| REGEX = '[^[:alnum:]]' WITH = SPACE OCC = 0 ) PLACES = 2 ).
" condense와 alpha 조합
WRITE:/ CONDENSE( |{ LV_KUN ALPHA = OUT }| ).
'ABAP > Syntax' 카테고리의 다른 글
[Syntax] NEW - Instance Operator (0) | 2023.10.19 |
---|---|
[Syntax] FOR - 반복 표현식 (1) | 2023.10.17 |
[Syntax] LOOP AT itab - GROUP BY (0) | 2023.10.16 |
[OpenSQL] WITH - CTE 서브쿼리 (0) | 2023.07.21 |
[Syntax] FILTER - Internal table 데이터 필터링 (0) | 2023.07.20 |
댓글