brunch

You can make anything
by writing

C.S.Lewis

by 동네아밥 Sep 02. 2022

Call Transformation?

call tran <탭> 누르면 트랜잭션 대신 뜨는애

잘못 뜨는 자동완성 덕에 몇번 본 적은 있다만 이걸 쓸 일은 없을 줄 알았는데

생각보다 기능이 유용하여 정리해둔다.


ABAP 소스 데이터 <-> XML 간 변환을 해주는 구문인데

테이블도 던져넣을 수 있어 유용하다.


기존에 테이블타입 필드를 DB테이블에 넣으려면 

INDX 테이블과 같은 형태로 변환해서 

키값과 함께 별도의 테이블에 저장해 사용하거나 했는데


이건 DB에 RAWSTRING 도메인의 필드만 집어넣으면 되니 좀 더 간편해졌다.

단점이라면.. 이 테이블은 이제 LIKE로 다른 필드도 선언이 불가하다는거 정도.


ALV엔 어차피 128자리까지만 보인다. 더 봐도 알지도 못하고..


테이블 타입은 어떻게 선언하던지 상관없으며

저장할 때와 동일한 타입의 데이터를 선언해주고 가져오면 된다.

아쉽게도 inline declaration은 불가능한듯.


ex) 다른 자재코드에 해당 배치 속성을 통째로 저장할 필요가 있을 경우

> AUSP 테이블에 저장된 속성값 전체를 ITAB에 저장

> ITAB을 CALL TRANSFORMATION 구문을 통해 RAWSTRING으로 변환

> 변환된 RAWSTRING을 포함해 DB에 INSERT


> 추후 해당 DB에서 RAWSTRING 필드를 불러와 변환을 통해 테이블 생성!


DATA: LT_DATA TYPE TABLE OF MARA.

DATA: LV_CHAR_XML TYPE RSRAWSTRING.


"Source(ABAP) -> RAWSTRING

call transformation id source root = LT_DATA result xml LV_CHAR_XML.


"RAWSTRING -> Source(ABAP)

call transformation id source xml LV_CHAR_XML result root = LT_DATA.


※ id 는 고정값으로, 변경하지 않는다.

※ IF LV_CHAR_XML1 = LV_CHAR_XML2. 와 같은 조건문도 사용 가능

작가의 이전글 CTS Request F4 help 생성
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari