289.5. RFC에 대한 메시지 본문

289.5.1. 요청 및 응답 오브젝트

SAP 끝점은 SAP 요청 오브젝트가 포함된 메시지 본문이 포함된 메시지를 수신할 것으로 예상되며 SAP 응답 개체가 포함된 메시지 본문이 포함된 메시지를 반환합니다. SAP 요청 및 응답은 사전 정의된 데이터 유형을 사용하는 각 필드와 함께 명명된 필드를 포함하는 고정된 맵 데이터 구조입니다.

SAP 요청 및 응답에서 명명된 필드는 SAP 끝점과 관련이 있으며 각 엔드포인트는 SAP 요청에 매개 변수를 정의하고 이를 수락하게 됩니다. SAP 끝점은 팩토리 메서드를 제공하여 특정 요청 및 응답 개체를 만들 수 있습니다.

public class SAPEndpoint ... {
    ...
    public Structure getRequest() throws Exception;

    public Structure getResponse() throws Exception;
    ...
}

289.5.2. 구조 오브젝트

SAP 요청 및 응답 개체 모두 Java에서 org.fusesource.camel.component.sap.model.rfc.Structure 인터페이스를 지원하는 구조 오브젝트로 표시됩니다. 이 인터페이스는 java.util.Maporg.eclipse.emf.ecore.EObject 인터페이스를 모두 확장합니다.

public interface Structure extends org.eclipse.emf.ecore.EObject,
                                        java.util.Map<String, Object> {

    <T> T get(Object key, Class<T> type);

}

구조 오브젝트의 필드 값은 맵 인터페이스의 필드 getter 메서드를 통해 액세스합니다. 또한 구조 인터페이스는 필드 값을 검색하기 위해 형식 제한 메서드를 제공합니다.In addition, the structure interface provides a type-restricted method to retrieve field values.

구조 개체는 EMF(Eclipse Modeling Framework)를 사용하여 구성 요소 런타임에서 구현되며 프레임워크의 EObject 인터페이스를 지원합니다. 구조 오브젝트의 인스턴스에는 제공하는 필드 맵의 구조와 내용을 정의하고 제한하는 메타 데이터가 연결되어 있습니다. 이 meta-data는 EMF에서 제공하는 표준 방법을 사용하여 액세스하고 세부 검사할 수 있습니다. 자세한 내용은 EMF 설명서를 참조하십시오.

참고

구조체 개체에 정의되지 않은 매개 변수를 가져오려고 하면 null이 반환됩니다.Attempting to get a parameter not defined on a structure object will return null. 구조에 정의되지 않은 매개 변수를 설정하려고 하면 예외가 throw되고 잘못된 유형으로 매개변수 값을 설정하려고 시도합니다.

다음 섹션에서 설명한 대로 구조 오브젝트는 복잡한 필드 유형, STRUCTURETABLE 의 값을 포함하는 필드를 포함할 수 있습니다. 이러한 유형의 인스턴스를 생성하여 구조에 추가하는 것은 필요하지 않습니다. 이러한 필드 값의 인스턴스는 포함된 구조에서 액세스할 때 필요할 때 생성됩니다.

289.5.3. 필드 유형

SAP 요청 또는 응답의 구조 객체 내에 있는 필드는 elementary 또는 complex 일 수 있습니다. elementary 필드에는 단일 스칼라 값이 포함되어 있지만 복잡한 필드는 요소 또는 복잡한 유형의 필드를 하나 이상 포함합니다.

289.5.4. 기본 필드 유형

요소 필드는 문자, 숫자, 16진수 또는 문자열 필드 유형일 수 있습니다. 다음 표에서는 구조 개체에 있을 수 있는 요소 필드의 유형을 요약합니다.The following table summarizes the types of elementary fields that may reside in a structure object:

필드 유형

해당 Java Type

바이트 길이

유니코드 바이트 길이

숫자 Decimals Digits

설명

CHAR

java.lang.String

1에서 65535

1에서 65535

-

ABAP 유형 'C': 수정된 크기 문자 문자열

DATE

java.util.Date

8

16

-

ABAP 유형 'D': Date (format: YYYYMMDD)

BCD

java.math.BigDecimal

1~16

1~16

0~14

ABAP 유형 'P': 패키징된 BCD 번호. BCD 번호는 바이트당 두 자리 숫자를 포함합니다.

TIME

java.util.Date

6

12

-

ABAP 유형 'T': Time (format: HHMMSS)

BYTE

byte[]

1에서 65535

1에서 65535

-

ABAP 유형 'X':Fixed sized byte array

NUM

java.lang.String

1에서 65535

1에서 65535

-

ABAP 유형 'N': 수정된 크기의 숫자 문자열

FLOAT

java.lang.Double

8

8

0에서 15

ABAP 유형 'F': 유동 포인트 번호

INT

java.lang.Integer

4

4

-

ABAP 유형 'I': 4바이트 Integer

INT2

java.lang.Integer

2

2

-

ABAP 유형 'S': 2바이트 Integer

INT1

java.lang.Integer

1

1

-

ABAP 유형 'B': 1바이트 정수

DECF16

java.match.BigDecimal

8

8

16

ABAP 유형 'decfloat16': 8 -byte decimal 부동 소수점

DECF34

java.math.BigDecimal

16

16

34

ABAP 유형 'decfloat34': 16바이트의 유동 포인트 번호

STRING

java.lang.String

8

8

-

ABAP 유형 'G': 변수 길이 문자열

XSTRING

byte[]

8

8

-

ABAP 유형 'Y': 변수 길이 배열

289.5.5. 문자 필드 유형

문자 필드에는 기본 JCo 및 ABAP 런타임에서 비유니코드 또는 유니코드 문자 인코딩을 사용할 수 있는 고정된 크기의 문자 문자열이 포함되어 있습니다. 비유니코드 문자 문자열은 바이트당 한 개의 문자를 인코딩합니다. 유니코드 문자 문자열은 UTF-16 인코딩을 사용하여 두 바이트로 인코딩됩니다. 문자 필드 값은 Java에서 java.lang.String 개체로 표시되며 기본 JCo 런타임은 ABAP 표현으로 변환을 담당합니다.

문자 필드는 각 인코딩 시스템에서 필드 문자열의 길이를 결정하는 연결된 바이트 길이 및 unicodeByteLength 속성을 선언합니다.A character field declares its field length in its associated byteLength and unicodeByteLength properties, which determines the length of the field's character string in each encoding system.

CHAR
CHAR 문자 필드는 영숫자 문자가 포함된 텍스트 필드이며 ABAP 유형 C에 해당합니다.
NUM
NUM 문자 필드는 숫자 문자만 포함하는 숫자 텍스트 필드이며 ABAP 유형 N에 해당합니다.
DATE
DATE 문자 필드는 YYYYMMDD 로 포맷된 연도, 월 및 날짜 형식의 8 문자 날짜 필드이며 ABAP 유형 D에 해당합니다.
TIME
TIME 문자 필드는 HHMMSS 로 포맷된 시간, 분 및 초를 가진 6 문자 시간 필드이며 ABAP 유형 T에 해당합니다.

289.5.6. 숫자 필드 유형

숫자 필드에는 숫자가 포함됩니다. 다음과 같은 숫자 필드 유형이 지원됩니다.

INT
INT 숫자 필드는 기본 JCo 및 ABAP 런타임에서 4바이트 정수 값으로 저장된 정수 필드이며 ABAP 유형 I에 해당합니다. INT 필드 값은 Java에서 java.lang.Integer 개체로 표시됩니다.
INT2
INT2 숫자 필드는 기본 JCo 및 ABAP 런타임에서 2바이트 정수 값으로 저장된 정수 필드이며 ABAP 유형 S에 해당합니다. INT2 필드 값은 Java에서 java.lang.Integer 오브젝트로 표시됩니다.
INT1
INT1 필드는 기본 JCo 및 ABAP 런타임 값에 1바이트 정수 값으로 저장된 정수 필드이며 ABAP 유형 B에 해당합니다. INT1 필드 값은 Java에서 java.lang.Integer 개체로 표시됩니다.
FLOAT
FLOAT 필드는 기본 JCo 및 ABAP 런타임의 8바이트 이중 값으로 저장된 바이너리 부동 소수점 숫자 필드이며 ABAP 유형 F에 해당합니다. FLOAT 필드는 관련 10진수에 포함된 10진수 수를 선언합니다. FLOAT 필드의 경우 이 소수점 속성은 1에서 15 자리 사이의 값을 가질 수 있습니다. FLOAT 필드 값은 Java에서 java.lang.Double 오브젝트로 표시됩니다.
BCD
BCD 필드는 기본 JCo 및 ABAP 런타임에서 1~16바이트 패키징된 번호로 저장된 바이너리 코딩된 10진수이며 ABAP 유형 P에 해당합니다. 패키징된 숫자는 바이트당 2개의 10진수를 저장합니다. BCD 필드는 연관된 byteLengthunicodeByteLength 속성으로 필드 길이를 선언합니다. BCD 필드의 경우 이러한 속성은 1에서 16바이트 사이의 값을 가질 수 있으며 두 속성 모두 동일한 값을 갖습니다. BCD 필드는 필드 값이 연결된 10진수 속성에 포함된 10진수 수를 선언합니다. BCD 필드의 경우이 10진수는 1에서 14 자리 사이의 값을 가질 수 있습니다. BCD 필드 값은 Java에서 java.math.Big decimal 로 표시됩니다.
DECF16
DECF16 필드는 기본 JCo 및 ABAP 런타임의 8바이트 IEEE 754 decimal64 부동 소수점 값으로 저장된 소수점이며 ABAP 유형 decfloat16 에 해당합니다. DECF16 필드의 값은 16진수입니다. DECF16 필드의 값은 Java .math.BigDecimal 로 표시됩니다.
DECF34
DECF34 필드는 기본 JCo 및 ABAP 런타임의 16바이트 IEEE 754 decimal128 부동 소수점 값으로 저장된 소수점이며 ABAP 유형 decfloat34 에 해당합니다. DECF34 필드의 값은 34개의 10진수를 나타냅니다. DECF34 필드의 값은 Java .math.BigDecimal 로 표시됩니다.

289.5.7. 16진수 필드 유형

16진수 필드에는 원시 바이너리 데이터가 포함되어 있습니다. 다음과 같은 16진수 필드 유형이 지원됩니다.

BYTE
BYTE 필드는 기본 JCo 및 ABAP 런타임에서 바이트 배열로 저장된 고정된 크기의 바이트 문자열이며 ABAP 유형 X에 해당합니다. BYTE 필드는 관련 바이트 길이 및 유니코드 ByteLength 속성에 해당 필드 길이를 선언합니다. BYTE 필드의 경우 이러한 속성은 1에서 65535바이트 사이의 값을 가질 수 있으며 두 속성 모두 동일한 값을 갖습니다. BYTE 필드의 값은 Java에서 byte[] 오브젝트로 표시됩니다.

289.5.8. 문자열 필드 유형

문자열 필드는 변수 길이 문자열 값을 참조합니다. 해당 문자열 값의 길이는 런타임까지 수정되지 않습니다. 문자열 값의 스토리지는 기본 JCo 및 ABAP 런타임에서 동적으로 생성됩니다. 문자열 필드 자체에 대한 스토리지는 고정되어 있으며 문자열 헤더만 포함합니다.

STRING
STRING 필드는 문자 문자열을 참조하며 기본 JCo 및 ABAP 런타임에 8바이트 값으로 저장됩니다. 이는 ABAP 유형 G에 해당합니다. STRING 필드의 값은 Java에서 java.lang.String 개체로 표시됩니다.
XSTRING
XSTRING 필드는 바이트 문자열을 나타내며 기본 JCo 및 ABAP 런타임에 8바이트 값으로 저장됩니다. 이는 ABAP 유형 Y에 해당합니다. STRING 필드의 값은 Java에서 바이트[] 오브젝트로 표시됩니다.

289.5.9. 복잡한 필드 유형

복합 필드는 구조 또는 테이블 필드 유형일 수 있습니다. 다음 표에는 이러한 복잡한 필드 유형이 요약되어 있습니다.

필드 유형

해당 Java Type

바이트 길이

유니코드 바이트 길이

숫자 Decimals Digits

설명

STRUCTURE

org.fusesource.camel.component.sap.model.rfc.Structure

개별 필드 바이트 길이의 총

개별 필드 유니코드 바이트 길이의 수

-

ABAP 유형 'u' & 'v': Heterogeneous Structure

TABLE

org.fusesource.camel.component.sap.model.rfc.Table

행 구조의 바이트 길이

행 구조의 유니코드 바이트 길이

-

ABAP 유형 'h': Table

289.5.10. 구조 필드 유형

STRUCTURE 필드에는 구조 오브젝트가 포함되어 있으며 기본 JCo 및 ABAP 런타임에 ABAP 구조 레코드로 저장됩니다. 이는 ABAP 유형 u 또는 v 에 해당합니다. STRUCTURE 필드의 값은 Java에서 인터페이스 org.fusesource.camel.component.sap.model.rfc.Structure 가 있는 구조 오브젝트로 표시됩니다.

289.5.11. 테이블 필드 유형

TABLE 필드에는 테이블 오브젝트가 포함되어 있으며 기본 JCo 및 ABAP 런타임에 ABAP 내부 테이블로 저장됩니다. 이것은 ABAP 유형 h 에 해당합니다. 필드 값은 인터페이스 org.fusesource.camel.component.sap.model.rfc.Table 이 있는 테이블 오브젝트에 의해 Java로 표시됩니다.

289.5.12. 테이블 오브젝트

테이블 오브젝트는 동일한 구조를 가진 구조 개체의 행을 포함하는 동종 목록 데이터 구조입니다. 이 인터페이스는 java.util.Listorg.eclipse.emf.ecore.EObject 인터페이스를 모두 확장합니다.

public interface Table<S extends Structure>
    extends org.eclipse.emf.ecore.EObject,
    java.util.List<S> {

    /**
     * Creates and adds table row at end of row list
     */
    S add();

    /**
     * Creates and adds table row at index in row list
     */
    S add(int index);

}

테이블 개체의 행 목록은 목록 인터페이스에 정의된 표준 메서드를 사용하여 액세스 및 관리됩니다.The list of rows in a table object are accessed and managed using the standard methods defined in the list interface. 또한 테이블 인터페이스는 행 목록에 구조 개체를 만들고 추가하기 위한 두 가지 팩토리 메서드를 제공합니다.In addition the table interface provides two factory methods for creating and adding structure objects to the row list.

테이블 개체는 EMF(Eclipse Modeling Framework)를 사용하여 구성 요소 런타임에서 구현되며 프레임워크의 EObject 인터페이스를 지원합니다. 테이블 오브젝트의 인스턴스는 제공하는 행과 구조를 정의하고 제한하는 메타 데이터를 연결합니다. 이 meta-data는 EMF에서 제공하는 표준 방법을 사용하여 액세스하고 세부 검사할 수 있습니다. 자세한 내용은 EMF 설명서를 참조하십시오.

참고

잘못된 형식의 행 구조 값을 추가하거나 설정하려고 하면 예외가 발생합니다.Attempts to add or set a row structure value of the wrong type will throw an exception.