289.2.4. 리포지터리 구성

289.2.4.1. 개요

리포지토리의 구성은 SAP 구성 요소의 repositoryDataStore 속성에서 유지 관리됩니다. 이 맵의 각 항목은 고유한 리포지토리를 구성합니다. 각 항목의 키는 리포지토리의 이름이며 이 키는 이 리포지토리가 연결된 서버의 이름이기도 합니다.

각 항목의 값은 메타 데이터 리포지토리의 내용을 정의하는 리포지토리 데이터 구성 오브젝트 org.fusesource.camel.component.sap.model.rfc.RepositoryDataImpl 입니다. 리포지토리 데이터 오브젝트는 함수 템플릿 구성 오브젝트( org.fuesource.camel.component.sap.model.rfc.impl.FunctionImpl )의 맵입니다. 이 맵의 각 항목은 함수 모듈의 인터페이스를 지정하고 각 항목의 키는 지정된 함수 모듈의 이름입니다.

289.2.4.2. 리포지터리 데이터 예

다음 코드는 meta-data 리포지토리를 구성하는 간단한 예를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<blueprint ... >
    ...
    <!-- Configures the sap-srfc-server component -->
    <bean id="sap-configuration"
        class="org.fusesource.camel.component.sap.SapConnectionConfiguration">
        <property name="repositoryDataStore">
            <map>
                <entry key="nplServer" value-ref="nplRepositoryData" />
            </map>
        </property>
    </bean>

    <!-- Configures a Meta-Data Repository -->
    <bean id="nplRepositoryData"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RepositoryDataImpl">
        <property name="functionTemplates">
            <map>
                <entry key="BOOK_FLIGHT" value-ref="bookFlightFunctionTemplate" />
            </map>
        </property>
    </bean>
    ...
</blueprint>

289.2.4.3. 함수 템플릿 속성

함수 모듈의 인터페이스는 데이터가 RFC 호출에서 함수 모듈로 전달되는 네 개의 매개 변수 목록으로 구성됩니다. 각 매개변수 목록은 하나 이상의 필드로 구성되며, 각 필드는 RFC 호출에서 전송되는 명명된 매개 변수입니다. 다음 매개변수 목록 및 예외 목록이 지원됩니다.

  • import 매개변수 목록에 는 RFC 호출에서 function 모듈에 전송되는 매개변수 값이 포함되어 있습니다.
  • export 매개변수 목록에 는 RFC 호출에서 function 모듈에서 반환하는 매개변수 값이 포함되어 있습니다.
  • Change 매개변수 목록에 는 RFC 호출에서 function 모듈에 의해 반환되고 반환되는 매개변수 값이 포함되어 있습니다.
  • table 매개 변수 목록에 는 RFC 호출에서 함수 모듈에서 보내고 반환하는 내부 테이블 값이 포함되어 있습니다.
  • 또한 함수 모듈의 인터페이스는 RFC 호출에서 모듈을 호출할 때 발생할 수 있는 ABAP 예외의 예외 목록으로 구성됩니다.

함수 템플릿은 함수 인터페이스의 각 매개 변수 목록에 있는 매개 변수의 이름과 유형 및 함수에서 throw된 ABAP 예외를 설명합니다. 함수 템플릿 오브젝트는 다음 표에 설명된 대로 meta-data 오브젝트의 5개 속성 목록을 관리합니다.

속성

설명

importParameterList

목록 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.ListFieldMeataDataImpl. 함수 모듈에 대한 RFC 호출로 전송되는 매개변수를 지정합니다.

changingParameterList

목록 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.ListFieldMeataDataImpl. RFC 호출에서 함수 모듈로 전송 및 반환되는 매개변수를 지정합니다.

exportParameterList

목록 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.ListFieldMeataDataImpl. 함수 모듈의 RFC 호출에서 반환되는 매개변수를 지정합니다.

tableParameterList

목록 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.ListFieldMeataDataImpl. RFC 호출에서 및 함수 모듈에서 전송 및 반환하는 테이블 매개 변수를 지정합니다.

exceptionList

ABAP 예외 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.impl.AbapExceptionImpl. RFC 함수 모듈 호출에서 발생할 수 있는 ABAP 예외를 지정합니다.

289.2.4.4. 함수 템플릿 예

다음 예제에서는 함수 템플릿을 구성하는 방법에 대한 개요를 보여줍니다.

<bean id="bookFlightFunctionTemplate"
    class="org.fusesource.camel.component.sap.model.rfc.impl.FunctionTemplateImpl">
    <property name="importParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="changingParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exportParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="tableParameterList">
        <list>
            ...
        </list>
    </property>
    <property name="exceptionList">
        <list>
            ...
        </list>
    </property>
</bean>

289.2.4.5. 필드 메타 데이터 속성 목록

list 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMeataDataImpl 은 매개 변수 목록의 필드 이름 및 유형을 지정합니다. 기본 매개변수 필드(CHAR,DATE,BCD,TIME,BYTE,NUM,FLOAT,INT 1,INT2,DECF16) 의 경우, DECF34,STRING,XSTRING), 다음 표에는 목록 필드 메타 데이터 객체에 설정될 수 있는 구성 속성이 나와 있습니다.

이름

기본값

설명

name

-

매개변수 필드의 이름입니다.

type

-

필드의 매개 변수 유형입니다.

byteLength

-

비유니코드 레이아웃의 필드 길이(바이트)입니다. 이 값은 매개변수 유형에 따라 다릅니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

unicodeByteLength

-

유니코드 레이아웃의 필드 길이(바이트)입니다. 이 값은 매개변수 유형에 따라 다릅니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

decimals

0

필드 값의 10진수 수입니다. 매개변수 유형 BCD 및 FLOAT에만 필요합니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

optional

false

true 인 경우 필드는 선택 사항이며 RFC 호출에 설정할 필요가 없습니다.

모든 elementary 매개변수 필드에는 name,type,byteLengthunicodeByteLength 속성이 field meta-data 오브젝트에 지정되어야 합니다. 또한 BCD,FLOAT,DECF16DECF34 필드에는 메타 데이터 오브젝트 필드에 10진수 속성을 지정해야 합니다.

TABLE 또는 STRUCTURE 유형의 복잡한 매개변수 필드의 경우 다음 표에는 목록 필드 meta-data 오브젝트에 설정할 수 있는 구성 속성이 나열되어 있습니다.

이름

기본값

설명

name

-

매개변수 필드의 이름입니다.

type

-

필드의 매개 변수 유형입니다.

recordMetaData

-

구조 또는 테이블에 대한 메타 데이터입니다. 레코드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl 은 구조 또는 테이블 행의 필드를 지정하도록 전달됩니다.

optional

false

true 인 경우 필드는 선택 사항이며 RFC 호출에 설정할 필요가 없습니다.

모든 복잡한 매개변수 필드에는 meta-data 필드 필드에 이름,유형recordMetaData 속성을 지정해야 합니다. recordMetaData 속성의 값은 레코드 필드 org.fusesource.camel.component.sap.model.rfc.RecordMetaDataImpl 이며 중첩 된 구조 또는 테이블 행의 구조를 지정합니다.

289.2.4.6. elementary list 필드 meta-data 예제

다음 meta-data 구성은 TICKET_PRICE 라는 두 개의 10 자리 자리 표시자로 선택적 24digit packed BCD 번호 매개변수를 지정합니다.

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
    <property name="name" value="TICKET_PRICE" />
    <property name="type" value="BCD" />
    <property name="byteLength" value="12" />
    <property name="unicodeByteLength" value="24" />
    <property name="decimals" value="2" />
    <property name="optional" value="true" />
</bean>

289.2.4.7. 복잡한 list 필드 메타 데이터 예

다음 meta-data 구성은 connectionInfo 레코드 meta-data 오브젝트에 지정된 행 구조를 사용하여 CONNINFO 라는 필수 TABLE 매개변수를 지정합니다.

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.ListFieldMetaDataImpl">
    <property name="name" value="CONNINFO" />
    <property name="type" value="TABLE" />
    <property name="recordMetaData" ref="connectionInfo" />
</bean>

289.2.4.8. record meta-data 속성

레코드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl.RecordMetaDataImpl 레코드는 중첩 STRUCTURE 또는 TABLE 매개변수 행의 이름 및 콘텐츠를 지정합니다. 레코드 meta-data 오브젝트는 레코드 필드 메타 데이터 오브젝트 목록, org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl, 중첩 구조 또는 테이블 행에 상주하는 매개변수를 지정합니다.

다음 표에는 레코드 meta-data 오브젝트에 설정할 수 있는 구성 속성이 나열되어 있습니다.

이름

기본값

설명

name

-

레코드의 이름입니다.

recordFieldMetaData

-

레코드 필드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.FieldMetaDataImpl. 구조에 포함된 필드를 지정합니다.

참고

레코드 meta-data 오브젝트의 모든 속성이 필요합니다.

289.2.4.9. 레코드 meta-data 예

다음 예제에서는 레코드 meta-data 오브젝트를 구성하는 방법을 보여줍니다.

<bean    id="connectionInfo"
        class="org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl">
    <property name="name" value="CONNECTION_INFO" />
    <property name="recordFieldMetaData">
        <list>
            ...
        </list>
    </property>
</bean>

289.2.4.10. 레코드 필드 메타 데이터 속성

레코드 필드 org.fusesource.camel.component.sap.model.rfc.FieldMetaDataImpl .FieldMetaDataImpl 은 구조를 사용하는 매개변수 필드의 이름과 유형을 지정합니다.

레코드 필드 meta-data 오브젝트는 중첩된 구조 또는 테이블 행의 개별 필드 위치 오프셋을 추가로 지정해야 하는 경우를 제외하고 매개변수 필드 meta-data 오브젝트와 유사합니다. 개별 필드의 비유니코드 및 유니코드 오프셋은 구조 또는 행에 있는 이전 필드의 비유니코드 및 유니코드 바이트 길이 합계에서 계산하고 지정해야 합니다. 중첩된 구조 및 테이블 행에서 필드 오프셋을 올바르게 지정하지 않으면 기본 JCo 및 ABAP 런타임의 매개변수 필드 스토리지가 겹치고 RFC 호출에서 값을 올바르게 전송하지 못하게 합니다.

기본 매개변수 필드(CHAR,DATE,BCD,TIME,BYTE,NUM,FLOAT,INT 1,INT2,DECF16) 의 경우, DECF34,STRING,XSTRING), 다음 표에서는 레코드 필드 메타 데이터 객체에 설정될 수 있는 구성 속성을 나열합니다.

이름

기본값

설명

name

-

매개변수 필드의 이름입니다.

type

-

필드의 매개 변수 유형입니다.

byteLength

-

비유니코드 레이아웃의 필드 길이(바이트)입니다. 이 값은 매개변수 유형에 따라 다릅니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

unicodeByteLength

-

유니코드 레이아웃의 필드 길이(바이트)입니다. 이 값은 매개변수 유형에 따라 다릅니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

byteOffset

-

비유니코드 레이아웃의 바이트 단위 필드 오프셋입니다. 이 오프셋은 포함 구조 내의 필드의 바이트 위치입니다.

unicodeByteOffset

-

유니코드 레이아웃의 바이트 단위 필드 오프셋입니다. 이 오프셋은 포함 구조 내의 필드의 바이트 위치입니다.

decimals

0

필드 값의 10진수 수입니다. 매개변수 유형 BCDFLOAT 에만 필요합니다. 289.5절. “RFC에 대한 메시지 본문” 을 참조하십시오.

TABLE 또는 STRUCTURE 유형의 복잡한 매개변수 필드의 경우 다음 표에는 레코드 필드 meta-data 오브젝트에 설정할 수 있는 구성 속성이 나열되어 있습니다.

이름

기본값

설명

name

-

매개변수 필드의 이름입니다.

type

-

필드의 매개 변수 유형입니다.

byteOffset

-

비유니코드 레이아웃의 바이트 단위 필드 오프셋입니다. 이 오프셋은 포함 구조 내의 필드의 바이트 위치입니다.

unicodeByteOffset

-

유니코드 레이아웃의 바이트 단위 필드 오프셋입니다. 이 오프셋은 포함 구조 내의 필드의 바이트 위치입니다.

recordMetaData

-

구조 또는 테이블에 대한 메타 데이터입니다. 레코드 meta-data 오브젝트, org.fusesource.camel.component.sap.model.rfc.impl.RecordMetaDataImpl 은 구조 또는 테이블 행의 필드를 지정하도록 전달됩니다.

289.2.4.11. elementary record 필드 meta-data 예

다음 메타 데이터 구성은 비유 비유 레이아웃의 경우 ARRDATE 라는 DATE 필드 매개 변수를 85바이트로 지정하고 유니코드 레이아웃의 경우 170바이트를 인클로딩 구조로 지정합니다.

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="ARRDATE" />
    <property name="type" value="DATE" />
    <property name="byteLength" value="8" />
    <property name="unicodeByteLength" value="16" />
    <property name="byteOffset" value="85" />
    <property name="unicodeByteOffset" value="170" />
</bean>

289.2.4.12. 복잡한 레코드 필드 메타 데이터 예

다음 meta-data 설정은 flightInfo 레코드 meta-data 개체에 의해 지정된 구조가 있는 FLTINFO 라는 STRUCTURE 필드 매개변수를 지정합니다. 이 매개 변수는 비유니코드 및 유니코드 레이아웃의 경우 모두 포함된 구조의 시작 부분에 있습니다.

<bean    class="org.fusesource.camel.component.sap.model.rfc.impl.FieldMetaDataImpl">
    <property name="name" value="FLTINFO" />
    <property name="type" value="STRUCTURE" />
    <property name="byteOffset" value="0" />
    <property name="unicodeByteOffset" value="0" />
    <property name="recordMetaData" ref="flightInfo" />
</bean>