call tran <탭> 누르면 트랜잭션 대신 뜨는애
잘못 뜨는 자동완성 덕에 몇번 본 적은 있다만 이걸 쓸 일은 없을 줄 알았는데
생각보다 기능이 유용하여 정리해둔다.
ABAP 소스 데이터 <-> XML 간 변환을 해주는 구문인데
테이블도 던져넣을 수 있어 유용하다.
기존에 테이블타입 필드를 DB테이블에 넣으려면
INDX 테이블과 같은 형태로 변환해서
키값과 함께 별도의 테이블에 저장해 사용하거나 했는데
이건 DB에 RAWSTRING 도메인의 필드만 집어넣으면 되니 좀 더 간편해졌다.
단점이라면.. 이 테이블은 이제 LIKE로 다른 필드도 선언이 불가하다는거 정도.
테이블 타입은 어떻게 선언하던지 상관없으며
저장할 때와 동일한 타입의 데이터를 선언해주고 가져오면 된다.
아쉽게도 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. 와 같은 조건문도 사용 가능