본문 바로가기
카테고리 없음

ABAP New Syntax #3 - Strings

by SAPortal 2024. 2. 28.

목차

    1. 문자열 처리

    ABAP에서 문자열 처리는 프로그래밍의 기본 중 하나입니다.

    ABAP 7.40 이후, 문자열 처리 기능이 개선되고 새로운 문법이 도입되어 더 효율적으로 문자열을 다룰 수 있게 되었습니다. 여기서는 새로운 ABAP 문법을 사용한 문자열 관련 예제 몇 가지를 소개합니다.

     

     

    2. 문자열 처리 예제

    예제1) 문자열 연결(String Concatenation)

    DATA(LV_NAME) = 'World'.
    DATA(LV_TEXT) = 'Hello ' && LV_NAME && '!'.
    WRITE LV_TEXT. 
    
    " 결과: Hello World!

    새로운 ABAP 문법을 사용하면 CONCATENATE 문 대신 && 연산자를 사용하여 문자열을 더 간단하게 연결할 수 있습니다.

     

     

    예제2) 문자열 템플릿(String Templates)

    DATA(LV_FIRST_NAME) = 'John'.
    DATA(LV_LAST_NAME)  = 'Doe'.
    DATA(LV_FULL_NAME)  = |Hello { LV_FIRST_NAME } { LV_LAST_NAME }!|.
    WRITE LV_FULL_NAME. 
    
    " 결과: Hello John Doe!

    문자열 템플릿은 복잡한 문자열을 더 쉽게 구성할 수 있게 해줍니다. 중괄호 {} 안에 변수나 식을 넣어 동적으로 문자열을 생성할 수 있습니다.

     

     

    예제3) 조건부 문자열 생성(Conditional String Construction)

    DATA(LV_AGE)    = 20.
    DATA(LV_STATUS) = |{( LV_AGE >= 18 ) ? 'Adult' : 'Minor'}|.
    WRITE LV_STATUS. 
    
    " 결과: Adult

    문자열 템플릿과 함께 조건 연산자를 사용하여 조건에 따라 다른 문자열을 생성할 수 있습니다.

    LV_AGE가 18보다 크거나 같으면 ?뒤에 문자열을 출력하고 그렇지 않으면 콜론(:) 뒤에 문자열을 출력한다.

     

     

    예제4) 문자열 함수 사용하기

    DATA(LV_TEXT) = 'Hello World'.
    DATA(LV_UPPER_TEXT) = TO_UPPER( LV_TEXT ).
    WRITE LV_UPPER_TEXT.
    
    " 결과: HELLO WORLD
    
    DATA(LV_LOWER_TEXT) = TO_LOWER( LV_UPPER_TEXT ).
    WRITE LV_LOWER_TEXT.
    
    " 결과: hello world

    ABAP 7.40 이후에는 문자열 처리를 위한 다양한 내장 함수들이 도입되었습니다.

    문자열 함수 TO_UPPER는 문자열을 대문자로 변환해주고 TO_LOWER는 문자열을 소문자로 변환해 줍니다.

     

    DATA(LV_EMAIL) = 'user@example.com'.
    DATA(LV_DOMAIN) = SUBSTRING_BEFORE( VAL = LV_EMAIL SUB = '@' ).
    
    WRITE LV_DOMAIN. 
    
    " 결과: user
    
    LV_DOMAIN = SUBSTRING_AFTER( VAL = LV_EMAIL SUB = '@' ).
    
    " 결과: example.com

    이 함수는 지정된 검색 문자열을 기준으로 입력 문자열에서 해당 문자열 이전 또는 이후의 부분을 반환합니다.

    만약 검색 문자열이 입력 문자열에 존재하지 않는 경우, 결과는 빈 문자열이 됩니다.

     

    SELECT SINGLE STRING_AGG( CARRID, ',' ) AS CARRID_AGG
      FROM SCARR
        INTO @DATA(LV_CARRID_AGG).
        
    " 결과: AA,AB,AC,AF,AZ,BA,CO,DL,FJ,JL,LH,NG,NW,QF,SA,SQ,SR,UA

    STRING_AGG는 SAP HANA 데이터베이스에서 SQL 스크립트를 사용할 때 활용할 수 있는 함수로, 여러 행의 문자열 데이터를 하나의 문자열로 결합할 때 사용됩니다.

    이 함수는 특히, 특정 구분자를 사용하여 하나의 컬럼에 있는 여러 값을 단일 문자열로 집계(aggregation)할 필요가 있을 때 유용합니다.

     

     

    예제5) 문자열 분할(Splitting Strings)

    DATA(LV_STRING) = 'One,Two,Three'.
    SPLIT LV_STRING AT ',' INTO TABLE DATA(LT_PARTS).
    
    LOOP AT LT_PARTS INTO DATA(LV_PART).
      WRITE: /, LV_PART.
    ENDLOOP.
    
    " 결과: One
            Two
            Three

    문자열을 분할하여 내부 테이블에 저장할 수 있습니다.

    특정 구분자를 기준으로 문자열을 SPLIT하여 테이블에 담을때 유용하게 사용됩니다.

     

     

    3. 요약

    위 예제들은 ABAP의 새로운 문법을 사용하여 문자열을 처리하는 방법을 보여줍니다.

    이러한 기능들은 코드를 더 간결하고 읽기 쉽게 만들며, 문자열 처리 작업을 더 효율적으로 수행할 수 있도록 돕습니다.