290.9. RFC에 대한 메시지 본문
290.9.1. 요청 및 응답 오브젝트
SAP 끝점에서는 SAP 요청 오브젝트가 포함된 메시지 본문이 포함된 메시지를 수신하고 SAP 응답 오브젝트가 포함된 메시지 본문이 포함된 메시지를 반환합니다. SAP 요청 및 응답은 각 필드에 사전 정의된 데이터 유형이 있는 이름이 지정된 필드를 포함하는 고정 맵 데이터 구조입니다.
SAP 요청 및 응답에서 이름이 지정된 필드는 SAP 끝점에 고유하며 각 끝점은 SAP 요청의 매개변수와 허용 가능한 응답을 정의합니다. SAP 끝점은 특정 요청 및 응답 개체를 생성하는 팩토리 방법을 제공합니다.
public class SAPEndpoint { ... public Structure getRequest() throws Exception; public Structure getResponse() throws Exception; ... }
290.9.2. 구조 오브젝트
SAP 요청 및 응답 오브젝트는 둘 다 org.fusesource.camel.component.sap.model.rfc.Structure
인터페이스를 지원하는 구조 오브젝트로 Java에 표시됩니다. 이 인터페이스는 java.util.Map
및 org.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.
구조 오브젝트는 Eclipse Modeling Framework(EMF)를 사용하여 구성 요소 런타임에서 구현되며 해당 프레임워크의 EObject
인터페이스를 지원합니다. 구조 오브젝트의 인스턴스에는 제공하는 필드 맵의 구조와 내용을 정의하고 제한하는 연결된 메타데이터가 있습니다. 이 메타데이터는 EMF에서 제공하는 표준 방법을 사용하여 액세스 및 세부 검사할 수 있습니다. 자세한 내용은 EMF 설명서를 참조하십시오.
구조 오브젝트에 정의되지 않은 매개 변수를 가져오려고 하면 null이 반환됩니다. 구조에 정의되지 않은 매개 변수를 설정하려고 하면 예외가 발생하고 잘못된 유형으로 매개변수 값을 설정하려고 합니다.
다음 섹션에서 설명한 것처럼 구조 오브젝트에는 복잡한 필드 유형, STRUCTURE
및 Cryostat의 값이 포함된 필드가 포함될 수 있습니다
.
이러한 유형의 인스턴스를 생성하고 구조에 추가하는 것은 불필요합니다. 필요에 따라 이러한 필드 값의 인스턴스는 enclosing 구조에서 액세스하면 필요에 따라 생성됩니다.
290.9.3. 필드 유형
SAP 요청 또는 응답의 구조 객체 내에 상주하는 필드는 elementary 또는 complex 일 수 있습니다. elementary 필드에는 단일 스칼라 값이 포함된 반면, complex 필드는 elementary 또는 complex type의 하나 이상의 필드를 포함합니다.
290.9.4. 기본 필드 유형
기본 필드는 문자, 숫자, 16진수 또는 문자열 필드 유형일 수 있습니다. 다음 표에는 구조 오브젝트에 있을 수 있는 기본 필드 유형이 요약되어 있습니다.
필드 유형 | 해당 Java 유형 | 바이트 길이 | 유니코드 Cryostat 길이 | 숫자 Decimals >-<t s | 설명 |
|
| 1에서 65535 | 1에서 65535 | - | ABAP 유형 'C': 크기 조정된 문자 문자열 |
|
| 8 | 16 | - | ABAP 유형 'D': 날짜(유형: YYYYMMDD) |
|
| 1에서 16 | 1에서 16 | 0에서 14 | ABAP Type 'P': 패키징된 BCD 번호입니다. BCD 번호는 바이트당 두 자리가 포함되어 있습니다. |
|
| 6 | 12 | - | ABAP Type 'T': Time (format: HHMMSS) |
|
| 1에서 65535 | 1에서 65535 | - | ABAP 유형 'X': 고정 크기 바이트 배열 |
|
| 1에서 65535 | 1에서 65535 | - | ABAP 유형 'N': 크기가 지정된 숫자 문자열 고정 |
|
| 8 | 8 | 0에서 15 | ABAP 유형 'F': 유동 포인트 번호 |
|
| 4 | 4 | - | ABAP 유형 'I': 4바이트 정수 |
|
| 2 | 2 | - | ABAP Type 'S': 2byte Integer |
|
| 1 | 1 | - | ABAP 유형 'B': 1바이트 정수 |
|
| 8 | 8 | 16 | ABAP 유형 'decfloat16': 8바이트 Decimal floating point number |
|
| 16 | 16 | 34 | ABAP 유형 'decfloat34': 16바이트 Decimal floating point number |
|
| 8 | 8 | - | ABAP 유형 'G': 변수 길이 문자 문자열 |
|
| 8 | 8 | - | ABAP 유형 'Y': 변수 길이 바이트 배열 |
290.9.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 determine the length of the field's character string in each encoding system.
CHAR
-
characters 필드는 영숫자 문자를 포함하는 텍스트 필드이며 ABAP 유형 C에 해당합니다.
NUM
-
숫자
문자
필드는 숫자 문자만 포함하는 숫자 텍스트 필드이며 ABAP 유형 N에 해당합니다. DATE
-
문자
필드는
YYYYMMDD
로 포맷된 연도, 월 및 날짜가 있는 8자 날짜 필드이며 ABAP 유형 D에 해당합니다. TIME
-
TIME
문자 필드는HHMMSS
로 포맷된 시간, 분 및 초가 있는 6자 시간 필드이며 ABAP 유형 T에 해당합니다.
290.9.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바이트 double 값으로 저장된 바이너리 부동 소수점 숫자 필드이며 ABAP 유형 F에 해당합니다.FLOAT
필드는 필드의 값이 연결된 10진수에 포함된 10진수 수를 선언합니다.FLOAT
필드의 경우 10진수 속성의 값은 1에서 15자리 사이일 수 있습니다.FLOAT
필드 값은 Java.lang. Cryostat 오브젝트로 표시됩니다.
BCD
-
BCD
필드는 기본 JCo 및 ABAP 런타임에서 1~16바이트 패킹 번호로 저장된 바이너리 코딩된 10진수 필드이며 ABAP 유형 P에 해당합니다. 패킹된 수는 바이트당 두 개의 10진수를 저장합니다.BCD
필드는 연결된byteLength
및unicodeByteLength
속성에서 필드 길이를 선언합니다.BCD
필드의 경우 이러한 속성의 값은 1에서 16바이트와 두 속성 모두 동일한 값을 가질 수 있습니다.BCD
필드는 필드의 값이 연결된 10진수 속성에 포함된 10진수 수를 선언합니다.BCD
필드의 경우 10진수 속성의 값은 1에서 14 자리 사이일 수 있습니다.BCD
필드 값은 Java에서java.math.BigDecimal
로 표시됩니다. DECF16
-
DECF16
필드는 기본 JCo 및 ABAP 런타임에서 8바이트 IEEE 754 decimal64 부동 소수점 값으로 저장된 10진수 부동 소수점이며 ABAP 유형decfloat16
에 해당합니다.DECF16
필드의 값은 16진수입니다.DECF16
필드의 값은 Java에java.math.BigDecimal
로 표시됩니다. DECF34
-
DECF34
필드는 기본 JCo 및 ABAP 런타임에서 16바이트 IEEE 754 decimal128 부동 소수점 값으로 저장된 10진수 부동 소수점이며 ABAP 유형decfloat34
에 해당합니다.DECF34
필드의 값은 34개의 10진수입니다.DECF34
필드의 값은 Java에java.math.BigDecimal
로 표시됩니다.
290.9.7. 16진수 필드 유형
16진수 필드에는 원시 바이너리 데이터가 포함되어 있습니다. 다음과 같은 16진수 필드 유형이 지원됩니다.
BYTE
-
BYTE
필드는 기본 JCo 및 ABAP 런타임에 바이트 배열로 저장된 고정된 크기의 바이트 문자열이며 ABAP 유형 X에 해당합니다.BYTE
필드는 연결된byteLength
및unicodeByteLength
속성에 필드 길이를 선언합니다.BYTE
필드의 경우 이러한 속성은 1에서 65535바이트 사이의 값을 가질 수 있으며 두 속성 모두 동일한 값을 갖습니다.BYTE
필드의 값은 Java에서byte[]
오브젝트로 표시됩니다.
290.9.8. 문자열 필드 유형
문자열 필드는 변수 길이 문자열 값을 참조합니다. 런타임까지 해당 문자열 값의 길이는 고정되어 있지 않습니다. 문자열 값의 스토리지는 기본 JCo 및 ABAP 런타임에서 동적으로 생성됩니다. 문자열 필드 자체의 스토리지는 고정되어 있으며 문자열 헤더만 포함합니다.
STRING
-
STRING
필드는 문자 문자열을 나타내며 기본 JCo 및 ABAP 런타임에 8바이트 값으로 저장됩니다. 이는 ABAP 유형 G에 해당합니다.STRING
필드의 값은 Java에서java.lang.String
오브젝트로 표시됩니다. XSTRING
-
XSTRING
필드는 바이트 문자열을 참조하고 기본 JCo 및 ABAP 런타임에 8바이트 값으로 저장됩니다. 이는 ABAP 유형 Y에 해당합니다.STRING
필드의 값은 Java에서byte[]
오브젝트로 표시됩니다.
290.9.9. 복잡한 필드 유형
복잡한 필드는 구조 또는 테이블 필드 유형일 수 있습니다. 다음 표에는 이러한 복잡한 필드 유형이 요약되어 있습니다.
필드 유형 | 해당 Java 유형 | 바이트 길이 | 유니코드 Cryostat 길이 | 숫자 Decimals >-<t s | 설명 |
|
| 총 개별 필드 바이트 길이 | 개별 필드의 유니코드 바이트 길이 | - | ABAP 유형 'u' & 'v': Heterogeneous structure |
|
| 행 구조의 바이트 길이 | 유니코드 바이트 길이의 행 구조 | - | ABAP 유형 'h': 테이블 |
290.9.10. 구조 필드 유형
STRUCTURE
필드는 구조 객체를 포함하며 ABAP 구조 레코드로 기본 JCo 및 ABAP 런타임에 저장됩니다. 이는 ABAP 유형 u
또는 v
에 해당합니다. STRUCTURE
필드의 값은 Java에서 org.fusesource.camel.component.sap.model.rfc.Structure
인터페이스가 있는 구조 오브젝트로 표시됩니다.
290.9.11. 테이블 필드 유형
Cryo stat
필드에는 테이블 오브젝트가 포함되어 있으며 기본 JCo 및 ABAP 런타임에 ABAP 내부 테이블로 저장됩니다. 이는 ABAP 유형 h
에 해당합니다. 필드의 값은 org.fusesource.camel.component.sap.model.rfc.Table
인터페이스가 있는 테이블 오브젝트로 Java에 표시됩니다.
290.9.12. 테이블 오브젝트
테이블 개체는 동일한 구조를 가진 구조 개체의 행을 포함하는 동종 목록 데이터 구조입니다.A table object is a homogeneous list data structure containing rows of structure objects with the same structure. 이 인터페이스는 java.util.List
및 org.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); }
테이블 개체의 행 목록은 목록 인터페이스에서 정의된 표준 방법을 사용하여 액세스 및 관리됩니다. 또한 테이블 인터페이스는 구조 개체를 만들고 행 목록에 추가하기 위한 두 가지 팩토리 메서드를 제공합니다.In addition, the table interface provides two factory methods for creating and adding structure objects to the row list.
테이블 오브젝트는 Eclipse Modeling Framework(EMF)를 사용하여 구성 요소 런타임에서 구현되며 해당 프레임워크의 EObject 인터페이스를 지원합니다. 테이블 개체의 인스턴스에는 제공하는 행의 구조와 내용을 정의하고 제한하는 연결된 메타데이터가 있습니다. 이 메타데이터는 EMF에서 제공하는 표준 방법을 사용하여 액세스 및 세부 검사할 수 있습니다. 자세한 내용은 EMF 설명서를 참조하십시오.
잘못된 형식의 행 구조 값을 추가하거나 설정하려고 하면 예외가 발생합니다.Attempts to add or set a row structure value of the wrong type throws an exception.