바로투입이력카드
SAP 게시판

정보·팁

ABAP JSON/XML 처리 방법 비교: sXML, CALL TRANSFORMATION, XCO, /ui2/cl_json

에이든ABAP 개발자운영자모듈 MMSD기타수정됨조회 17

3줄 요약

  • XML은 iXML·sXML 라이브러리나 CALL TRANSFORMATION으로 읽고 변환할 수 있어요.

  • JSON은 sXML·CALL TRANSFORMATION·XCO·/ui2/cl_json 등의 방법으로 처리해요.

  • 사용 가능한 클래스와 상대 시스템이 요구하는 필드명·날짜·숫자 형식을 확인한 뒤 도구를 선택하세요.

어떤 상황에서 쓰나요

외부 시스템과 데이터를 주고받으려면 ABAP 구조체나 내부 테이블을 JSON·XML로 변환해야 해요. 이번 글에서는 iXML·sXML·CALL TRANSFORMATION·XCO·/ui2/cl_json의 역할과 사용 방법을 비교해 봐요.

직렬화는 같은 데이터를 다른 표현 형식으로 바꾸는 작업입니다. 아래 그림처럼 ABAP 데이터와 JSON·XML의 관계를 먼저 이해한 뒤, 필드명과 날짜·숫자 변환 규칙을 확인하세요.

AI 설명 그림: 같은 데이터를 다른 형식으로. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.
AI 설명 그림: 같은 데이터를 다른 형식으로. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.

핵심 내용

XML — 클래스 라이브러리

  • iXML(Integrated XML Library): XML 1.0을 검증하고 파싱해 DOM(트리 구조)으로 만들고, DOM을 고치고 다시 렌더링해요. 장점은 문서의 각 부분에 쉽게 접근할 수 있고 DTD가 가능하다는 점이고, 단점은 DOM 전체를 만들면 메모리를 많이 쓴다는 점이에요.

  • sXML: 스트림(토큰) 방식의 읽기·쓰기 라이브러리예요. 토큰 기반과 객체지향 방식이 있어요(치트시트의 JSON 예제는 토큰 방식).

XML — 변환 (CALL TRANSFORMATION)

  • XSLT: XSL 변환 저장소 오브젝트예요. ABAP 데이터는 먼저 asXML로 암묵 변환돼서 변환의 소스가 돼요.

  • 항등 변환 ID: 미리 정의된 변환으로 asXML(그리고 asJSON) 형식을 읽고 써요. ABAP 구조를 XML로 바꿔도 구조 자체는 바뀌지 않아요.

  • Simple Transformation(ST): SAP 전용 언어로 XML과 ABAP 데이터 사이를 변환해요.

  • 가능한 조합: XML↔XML(XSLT), ABAP↔XML(XSLT, ST), ABAP↔ABAP(XSLT).

  • asXML은 "ABAP Serialization XML" 이고 직렬화/역직렬화의 중간 형식이에요. XML을 ABAP로 역직렬화하려면 asXML 형식이어야 해요. 클래스 인스턴스를 직렬화하려면 IF_SERIALIZABLE_OBJECT를 구현해야 해요.

  • 변환의 오류에는 알맞은 예외 클래스를 써야 해요. 동적 지정(CALL TRANSFORMATION ('ID'))은 변환이 없으면 cx_invalid_transformation을 던져요.

DATA str_a TYPE string VALUE `Hello`.
DATA(writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE hi = str_a
                       RESULT XML writer.
DATA(json) = cl_abap_conv_codepage=>create_in( )->convert( writer->get_output( ) ).
" json: {"HI":"Hello"}

JSON을 다루는 네 가지

  1. sXML의 JSON 쓰기/읽기: SAP 고유의 JSON-XML 형식을 중간에 거쳐요. cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json )으로 JSON 쓰기를 만들어요.

  2. CALL TRANSFORMATION의 SOURCE JSON/RESULT JSON 또는 JSON 리더/라이터: 항등 변환 ID로 ABAP↔JSON을 직접 바꿔요(asJSON이 중간 형식). 내부 테이블을 JSON 배열로 바꾸는 예제가 나와요.

  3. XCO 라이브러리: xco_cp_json=>data->from_abap( 구조 )->to_string( )로 JSON 문자열을, xco_cp_json=>data->from_string( json )->write_to( REF #( 대상 ) )로 ABAP 데이터를 만들어요. 빌더로 직접 JSON을 만들고, apply( ... pascal_case_to_underscore )처럼 이름 규칙 변환도 해요. 예제 출력에서 n 타입 필드가 "0017"로 앞자리 0을 유지하는 점을 확인해 보세요.

  4. /ui2/cl_json: /ui2/cl_json=>serialize( data = ... )와 deserialize로 직렬화/역직렬화하고, 선택 매개변수가 많아요.

부록 — 객체 직렬화/역직렬화, string↔xstring 변환, 이진 데이터 압축/해제, 데이터 클러스터 내보내기/가져오기도 같은 시트에 정리돼 있어요.

주의할 점

  • 치트시트의 예제는 간단한 경우만 다뤄요. 필드 이름 대소문자(CARRIER_ID vs carrierId), 날짜 형식, 숫자 앞자리 0 처리 등 상대 시스템과 맞춰야 하는 세부는 직접 시험해야 해요.

  • iXML 클래스(cl_ixml_core)가 클라우드용 ABAP에서 쓸 수 있다고 치트시트가 안내하지만, 클래식 클래스(cl_ixml)는 클라우드용에서는 릴리스되지 않았어요(ABAP Cloud 글 참고). 환경에 맞는 클래스를 고르세요.

  • 어떤 방법이 더 빠르거나 안전한지는 비교하지 않았어요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.

  • 치트시트는 계속 갱신되는 문서예요. 이 편의 첫 공개는 2023년 11월이고, 제가 읽은 판은 2026년 10월 기준이에요.

원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/21_XML_JSON.md

출처와 이용 안내
  • 원문: ABAP Cheat Sheets - Working with XML and JSON in ABAP · 작성자 SAP SE and contributors SAP-samples · 작성일 2023-11-30 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25

  • 이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.

  • 원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.

  • 설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.

  • SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.

댓글 0

아직 댓글이 없어요.

정보·팁 목록전체 목록