본문 바로가기

SAP/ABAP

SAP ABAP : NEW ABAP alpha conversion

SAP 와 타 시스템 간 인터페이스를 위해 alpha conversion 함수를 사용하는 일이 많은데
NEW ABAP 구문을 사용하면 좀 더 간결하게 코드를 작성할 수 있다.
 
 
SAP Help 내 SAP Documentation "ALPHA Conversion Routine"
https://help.sap.com/doc/saphelp_nw74/7.4.16/en-US/4a/547e956a8a1cd4e10000000a421937/frameset.htm

Example
Input and output fields are each 8 characters long. 
A conversion from the external to the internal format takes place:

External -> Internal Format
'1234 ' → '00001234'
'ABCD ' → 'ABCD '

https://help.sap.com/doc/saphelp_nw74/7.4.16/en-US/4a/547e956a8a1cd4e10000000a421937/frameset.htm

help.sap.com

 

DATA : lv_0001 TYPE CHAR4 VALUE '0001'.
DATA : lv_1	TYPE CHAR4 VALUE '0'.
*------------------------------------------
*[OLD] CONVERSION EXIT ALPHA OUTPUT/INPUT
*------------------------------------------
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
	EXPORTING
		INTPUT = lv_0001 "0001"
	IMPORTING
		OUTPUT = lv_1. "1"
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
	EXPORTING
		INTPUT = lv_1 "1"
	IMPORTING
		OUTPUT = lv_0001. "0001"
*------------------------------------------
*[NEW] CONVERSION EXIT ALPHA OUTPUT/INPUT
*------------------------------------------
	lv_1 = |{ lv_0001 ALPHA = OUT }|. "lv_1 = 0001"
	lv_0001 = |{ lv_1 ALPHA = IN}|.   "lv_0001 = 1"

 
코드가 더 간결하고 좀 더 명확해서 유지보수가 용이해진다는 장점이 있다.
다만 전제조건으로 SAP ABAP 7.40 버전 SP05 이상부터 사용이 가능하다는 점이 있다.
그 이전 버전 SAP 개발환경인 경우에는, 사용이 불가능하다.

처음 이 전제조건을 봤을 때는 ABAP도 버전이 있는건가 싶었고, Netweaver 버전을 의미하는 건가 싶기도 했다.
구글링 해보니 SAP_BASIS 컴포넌트의 버전을 확인하면 된다는 내용도 있었다..

SAP ABAP 언어의 사용버전을 확인하는 직접적인 방법은 찾지 못했고,
다만 alpha conversion 처럼, 특정 버전이상에서 사용이 가능한 코드를 작성하고 컴파일을 했을 때 오류가 없고 정상적으로 실행이 된다고 하면 해당 버전 이상을 사용하고 있는 것으로 추론해볼 수는 있다.