289.12. RFC를 위한 XML 직렬화

289.12.1. 개요

SAP 요청 및 응답 개체는 이러한 개체를 XML 문서로 직렬화할 수 있는 XML 직렬화 형식을 지원합니다.

289.12.2. XML 네임 스페이스

리포지토리의 각 RFC는 Request 및 Response 오브젝트의 직렬화된 양식을 구성하는 요소에 대한 특정 XML 네임스페이스를 정의합니다. 이 네임스페이스 URL의 형식은 다음과 같습니다.

http://sap.fusesource.org/rfc/<Repository Name>/<RFC Name>

RFC 네임스페이스 URL에는 공통 http://sap.fusesource.org/rfc 접두사가 있으며 RFC의 메타데이터가 정의된 리포지토리의 이름이 뒤에 옵니다. URL의 최종 구성 요소는 RFC 자체의 이름입니다.

289.12.3. XML 문서 요청 및 응답

SAP 요청 오브젝트는 Request라는 문서의 루트 요소를 사용하여 XML 문서로 직렬화되고 요청의 RFC 네임스페이스에 의해 범위가 지정됩니다.

<?xml version="1.0" encoding="ASCII"?>
<BOOK_FLIGHT:Request
     xmlns:BOOK_FLIGHT="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT">
    ...
</BOOK_FLIGHT:Request>

SAP 응답 오브젝트는 Response라는 문서의 루트 요소를 사용하여 XML 문서로 직렬화되고 응답의 RFC의 네임스페이스에서 범위가 지정됩니다.

<?xml version="1.0" encoding="ASCII"?>
<BOOK_FLIGHT:Response
     xmlns:BOOK_FLIGHT="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT">
    ...
</BOOK_FLIGHT:Response>

289.12.4. 구조 필드

매개 변수 목록 또는 중첩 구조의 구조 필드는 요소로 직렬화됩니다. 직렬화된 구조의 요소 이름은 포함 매개변수 목록, 구조 또는 테이블 행 항목 내의 구조의 필드 이름에 해당합니다.

<BOOK_FLIGHT:FLTINFO
     xmlns:BOOK_FLIGHT="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT">
    ...
</BOOK_FLIGHT:FLTINFO>
참고

RFC 네임스페이스의 structure 요소의 유형 이름은 다음 예제와 같이 구조를 정의하는 레코드 메타데이터 오브젝트의 이름에 해당합니다.

<xs:schema
     targetNamespace="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT">
     xmlns:xs="http://www.w3.org/2001/XMLSchema">
    ...
    <xs:complexType name="FLTINFO_STRUCTURE”>
    ...
    </xs:complexType>
    ...
</xs:schema>

이러한 차이점은 289.14.3절. “예: SAP에서 요청 처리” 에서와 같이 구조를 마샬링하고 unmarshal으로 지정할 때 중요합니다.

289.12.5. 테이블 필드

매개 변수 목록 또는 중첩 구조의 테이블 필드는 요소로 직렬화됩니다. 직렬화된 구조의 요소 이름은 해당하는 매개 변수 목록, 구조 또는 테이블 행 항목 내의 테이블의 필드 이름에 해당합니다.The element name of the serialized structure corresponds to the table name of the table within the enclosing parameter list, structure, or table row entry it resides. table 요소에는 테이블 행 항목의 직렬화된 값을 보유하는 일련의 행 요소가 포함되어 있습니다.

<BOOK_FLIGHT:CONNINFO
     xmlns:BOOK_FLIGHT="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT">
    <row ... > ... </row>
    ...
    <row ... > ... </row>
</BOOK_FLIGHT:CONNINFO>
참고

RFC 네임스페이스의 table 요소의 유형 이름은 _ECDHE로 지정된 테이블의 행 구조를 정의하는 레코드 메타데이터 오브젝트의 이름에 해당합니다. RFC 이름에 있는 테이블 행 요소의 유형 이름은 다음 예제와 같이 테이블의 행 구조를 정의하는 레코드 메타데이터 오브젝트의 이름에 해당합니다.

<xs:schema
     targetNamespace="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT"
     xmlns:xs="http://www.w3.org/2001/XMLSchema">
    ...
    <xs:complextType name="CONNECTION_INFO_STRUCTURE_TABLE”>
        <xs:sequence>
            <xs:element
                name="row”
                minOccures="0”
                maxOccurs="unbounded”
                type="CONNECTION_INFO_STRUCTURE”/>
            ...
            <xs:sequence>
        </xs:sequence>
    </xs:complexType>

    <xs:complextType name="CONNECTION_INFO_STRUCTURE”>
            ...
    </xs:complexType>
    ...
</xs:schema>

이러한 차이점은 289.14.3절. “예: SAP에서 요청 처리” 에서와 같이 구조를 마샬링하고 unmarshal으로 지정할 때 중요합니다.

289.12.6. 기본 필드

매개 변수 목록 또는 중첩 구조의 요소 필드는 enclosing 매개 변수 목록 또는 구조의 요소에 대한 속성으로 직렬화됩니다. 직렬화 필드의 특성 이름은 다음 예제와 같이 enclosing 매개변수 목록, 구조 또는 테이블 행 항목 내의 필드의 필드 이름에 해당합니다.

<?xml version="1.0" encoding="ASCII"?>
<BOOK_FLIGHT:Request
     xmlns:BOOK_FLIGHT="http://sap.fusesource.org/rfc/nplServer/BOOK_FLIGHT"
     CUSTNAME="James Legrand"
    PASSFORM="Mr"
    PASSNAME="Travelin Joe"
    PASSBIRTH="1990-03-17T00:00:00.000-0500"
    FLIGHTDATE="2014-03-19T00:00:00.000-0400"
    TRAVELAGENCYNUMBER="00000110"
    DESTINATION_FROM="SFO"
    DESTINATION_TO="FRA"/>

289.12.7. 날짜 및 시간 형식

date 및 Time 필드는 다음 형식을 사용하여 속성 값으로 직렬화됩니다.

yyyy-MM-dd'T'HH:mm:ss.SSSZ

날짜 필드는 1년, 월, 일 및 시간대 구성 요소가 설정된 상태로 직렬화됩니다.

DEPDATE="2014-03-19T00:00:00.000-0400"

time 필드는 hour, minute, second, millisecond 및 timezone 구성 요소가 설정된 상태로 직렬화됩니다.

DEPTIME="1970-01-01T16:00:00.000-0500"