목차
1. CONV Operator 란?
CONV 연산자는 데이터 타입을 변환하는 데 사용됩니다.
이 연산자를 사용하여 한 타입의 변수를 다른 타입으로 변환할 수 있습니다.
CONV는 특히 인라인 선언과 함께 사용될 때 유용하며, 데이터 타입 변환을 간결하고 명시적으로 수행할 수 있게 합니다.
2. CONV Operator 예제
예제1) 문자열을 정수로 변환
DATA(LV_NUMBER_STRING) = '123'.
DATA(LV_NUMBER) = CONV I( LV_NUMBER_STRING ).
이 예제에서 문자열 '123'이 정수형으로 변환되어 LV_NUMBER에 저장됩니다.
정수형으로 변환하기 위하여 CONV 연산자 다음에 'I' 를 사용하였습니다.
예제2) 숫자를 문자열로 변환
DATA(LV_NUMBER) = 123.
DATA(LV_NUMBER_STRING) = CONV STRING( LV_NUMBER ).
이 예제에서는 정수형 변수 LV_NUMBER의 값을 문자열로 변환하여 LV_NUMBER_STRING에 저장합니다.
문자열로 변환하기 위하여 CONV 연산자 다음에 ' STRING' 을 사용하였습니다.
예제3) 날짜 타입 변환
DATA : LV_DATE TYPE D VALUE '20230101'.
DATA(LV_DATE_STRING) = CONV STRING( LV_DATE ).
이 예제에서는 ABAP 날짜 타입 D의 값을 문자열로 변환하여 LV_DATA_STRING에 저장합니다.
변환된 문자열은 YYYYMMDD 형식을 유지합니다.
예제4) FUNCTION에서의 변환
DATA: LV_STRING TYPE STRING VALUE '20200101'.
DATA: LV_OUTPUT TYPE DATUM.
CALL FUNCTION 'SN_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = CONV D( LV_STRING )
IMPORTING
END_OF_MONTH = LV_OUTPUT.
위 FUNCTION의 Input Parameter인 DAY_IN은 날짜타입 입니다.
그렇기 때문에 값을 대입하는 변수도 날짜타입이어야 합니다.
하지만 STRING타입인 LV_STRING 변수를 CONV 연산자와 함께 사용하면 날짜타입으로 변환된 값이 함수에 반영되기 때문에 에러가 발생하지 않습니다.
예제5) CLASS에서의 변환
CLASS ZCL_ADD DEFINITION.
PUBLIC SECTION.
METHODS: ADD IMPORTING I_NUM1 TYPE I
I_NUM2 TYPE I
EXPORTING O_OUTPUT TYPE I.
ENDCLASS.
CLASS ZCL_ADD IMPLEMENTATION.
METHOD ADD.
O_OUTPUT = I_NUM1 + I_NUM2.
ENDMETHOD.
ENDCLASS.
DATA: LV_FLOAT TYPE F VALUE '10.0',
LV_RESULT TYPE I.
DATA(LO_ADD) = NEW ZCL_ADD( ).
LO_ADD->ADD(
EXPORTING
I_NUM1 = CONV #( LV_FLOAT )
I_NUM2 = 2
IMPORTING
O_OUTPUT = LV_RESULT
).
CLASS에서도 마찬가지로 대입하는 변수의 타입이 틀리면 에러가 발생합니다.
하지만 FLOAT타입인 LV_FLOAT 변수를 CONV 연산자와 함께 사용하면 CLASS의 PARAMETER 타입으로 변환되어 CLASS에 반영되기 때문에 에러가 발생하지 않습니다.
CLASS와 FUNCTION에서의 CONV 연산자 사용은 거의 비슷하지만 틀린점이 한가지 있습니다.
CLASS에서는 CONV #으로 지정하면 PARAMETER의 타입으로 자동 변환되지만 FUNCTION은 CONV 연산자 다음에 타입을 지정해 줘야 합니다.
3. CONV Operator 장점
코드 간결성: CONV 연산자를 사용하면 데이터 타입 변환을 한 줄의 코드로 간결하게 수행할 수 있습니다.
타입 안전성: 변환하려는 타입을 명시적으로 지정함으로써 타입 안전성을 보장할 수 있습니다.
가독성 향상: 코드의 의도가 명확해지므로 다른 개발자가 이해하기 쉬워집니다.