Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

기존 SAP 사용자 정의 소스 운영

SAP 사용자 정의 소스는 magritte-sap-source 유형과 YAML로 연결을 구성하는 방식입니다. 기존 통합의 유지보수에 사용하며 새 통합에는 안내형 설정과 새 데이터 읽기 API를 제공하는 SAP ERP 또는 SAP SLT 커넥터를 사용합니다. 대상 SAP 애플리케이션 계층에는 Palantir Foundry Connector 2.0 for SAP Applications 추가 기능이 필요합니다.

원천 탐색, 배치 동기화, 증분 수집, 웹훅과 대량 쓰기 반영은 일반 제공 기능입니다. 이 소스 유형의 스트리밍 동기화는 Beta입니다.

YAML 소스 구성

Data Connection에서 + New Source, Add Custom Source를 선택하고 이름과 위치를 정합니다. 다음은 가상 호스트와 사용자명을 사용한 구성입니다. 호스트는 SAP 애플리케이션 서버, 포트는 ICM(Internet Communication Manager)의 HTTPS 포트입니다. 기존 환경에서는 ICM의 HTTP 연결을 사용할 수도 있으므로 실제 연결 방식에 맞게 지정합니다.

type: magritte-sap-source
url: https://sap.example.com:443/sap/palantir
usernamePassword: FOUNDRY_USER:{{password}}

사용자는 Connector 설치 시 만든 Foundry 기술 사용자입니다. {{password}}는 그대로 입력하는 비밀 정보 참조 문법입니다. 저장 후 오른쪽 Encrypted values에 실제 비밀번호를 넣습니다. YAML에 평문 비밀번호를 쓰지 않습니다.

스트리밍에는 SLT 연결 유형을 명시해야 합니다. 다음 EXAMPLE_ERP는 실제 SLT와 원천 ERP 연결의 context로 바꿉니다.

type: magritte-sap-source
url: https://sap.example.com:443/sap/palantir
usernamePassword: FOUNDRY_USER:{{password}}
connectionType:
  type: slt
  slt:
    context: EXAMPLE_ERP

소스 속성

속성필수 여부기본값의미
url필수없음SAP 추가 기능 서비스의 기본 URL입니다.
usernamePassword필수없음기술 사용자의 사용자명과 비밀번호 참조입니다.
useKernelJsonSerialization선택false페이지 데이터를 kernel JSON으로 직렬화합니다. useTsvFormat: true와 함께 사용할 수 없습니다.
useTsvFormat선택false페이지 데이터를 JSON 대신 TSV로 전송합니다.
output선택50,000행요청당 출력 Parquet 파일 크기를 행 수 또는 바이트로 설정합니다. 동기화별로 덮어쓸 수 있습니다.
convertDatesToStrings선택false이 소스의 모든 동기화에서 날짜를 문자열로 수집합니다.
proxy선택없음SAP 연결의 프록시 구성입니다.
cacheConfigurations선택없음SAP 객체 유형별 캐시 제한 시간입니다.

Foundry가 SAP 호스트에 도달하도록 외부 통신 정책을 설정합니다. 온프레미스 시스템은 보통 에이전트 프록시 경로가 필요합니다. 자체 서명 인증서로 SSL handshake 예외가 발생하면 SAP 시스템의 올바른 인증서를 소스에 추가합니다.

탐색과 배치 동기화

소스에서 Explore and create syncs를 선택합니다.

원격 또는 SLT 연결이면 context를 선택합니다.

테이블이나 모듈을 선택하여 그래프에 추가하면 관계를 살펴볼 수 있습니다.

수집할 SAP 객체마다 동기화를 만듭니다. 소스 개요의 배치 동기화 옆 + New에서 이름, 대상 데이터셋과 스케줄을 설정합니다. 전체 적재는 SNAPSHOT, 증분 수집은 APPEND를 선택합니다. 객체 유형, 필요한 context, 객체 이름과 증분 필드를 입력하고 Extras의 추가 옵션을 구성합니다. 이름 입력 중에는 선택한 유형에 맞는 후보가 표시됩니다.

Basic과 Advanced는 서로 같은 속성을 모두 표시하지 않습니다. Advanced는 전체 YAML을 편집하며 일부 객체 유형과 매개변수는 여기에서만 설정할 수 있습니다. Basic으로 돌아가면 UI에 대응 항목이 없는 YAML 속성이 표시되지 않고 사라질 수 있으므로 고급 설정을 사용하는 동기화는 이 전환에 주의해야 합니다.

SAP 객체 유형

유형데이터와 조건
ERP TableABAP 데이터 사전의 ERP 테이블과 뷰이며 사용자 정의 Z* 테이블도 포함합니다.
BW InfoProviderInfoCube, DataStore object와 MultiProvider를 읽습니다. SAP BW 권한 체계를 적용합니다.
BW BEx QueryBW 시스템의 BEx 쿼리를 실행합니다.
SLT트리거 기반 CDC 결과를 저장한 Operational Delta Queue(ODQ)를 읽습니다. Context가 필요합니다.
BW Content Extractor업무 로직과 CDC 기능을 가진 Business Content extractor를 실행합니다. 델타 지원 extractor에는 APPEND를 사용합니다.
FunctionERP 또는 BW 시스템의 remote-enabled 함수나 BAPI를 실행합니다.
ERP Table Data Model기본 키와 외래 키에 기반한 테이블 관계를 읽습니다. depth로 탐색 깊이를 지정합니다.
Remote ERP Table원격 ERP 테이블이며 Context가 필요합니다.
Remote BW InfoProvider원격 BW InfoProvider이며 Context가 필요합니다.
Remote BW BEx Query원격 BEx 쿼리이며 Context가 필요합니다.
Remote Function원격 ERP/BW의 함수이며 Context가 필요합니다.
Transaction codeALV 보고서 결과입니다. Advanced에서만 구성합니다.
HANA viewSAP 애플리케이션 계층에 활성화한 HANA 뷰입니다. Advanced에서만 구성합니다.
CDS viewABAP CDS의 의미 기반 데이터 모델을 읽습니다. Advanced에서만 구성합니다.

BEx 쿼리

BEx는 BW InfoProvider 위에서 업무 로직을 적용하는 다차원 쿼리 체계입니다. 표준 BW 접근 방식과 권한을 사용합니다. 특성값마다 key figure 열이 반복되어 열 집합이 변하는 동적 출력은 지원하지 않으므로 쿼리를 고정된 열 구조로 조정합니다.

설정의미
Use Technical Names기술 이름과 언어에 따라 달라지는 사람이 읽는 열 이름 사이를 전환합니다.
Drop columns출력에서 key characteristic을 제거합니다.
Free characteristics쿼리에 정의된 free characteristic을 출력에 추가합니다.
Filter쿼리 실행 후 결과를 제한하는 필터입니다.
BEx Query Input Variables쿼리 입력 변수에 필터값을 전달합니다.

Function의 입출력

함수 모듈은 읽기와 쓰기를 모두 수행할 수 있지만 이 수집 경로는 표 형태의 출력 인자가 하나 이상인 함수만 읽을 수 있습니다. 기술 사용자에게 /PALANTIR/SERVICE_USER, /PALANTIR/CONTENT_FUNCTION_ALL과 대상 함수에 필요한 별도 역할 또는 권한 객체가 있어야 합니다.

출력이 여러 개이면 paramName으로 수집할 출력을 선택합니다.

type: magritte-sap-source-adapter
sapType: function
obj: BAPI_USER_GETLIST
paramName: USERLIST

inputParams는 단일 값, 구조체와 테이블을 받습니다. 구조체와 테이블은 JSON 문자열로 지정합니다.

입력 종류YAML 값 예시
단일 값PARAM_NAME: 'value'
구조체PARAM_NAME: '{"FIELD1": "value1", "FIELD2": "value2"}'
테이블PARAM_NAME: '[{"FIELD1": "value1"}, {"FIELD1": "value2"}]'

다음은 테이블형 인자와 동일 이름의 출력을 사용하는 예제입니다.

type: magritte-sap-source-adapter
sapType: function
obj: EM_GET_NUMBER_OF_ENTRIES
inputParams:
  IT_TABLES: '[{"TABNAME":"TSTC"}]'
paramName: IT_TABLES

Advanced 전용 객체

Transaction code 수집은 ALV(ABAP List Viewer) 보고서만 지원합니다. 다음 ZTEST_ALV는 가상 사용자 정의 트랜잭션 이름입니다.

type: magritte-sap-source-adapter
sapType: tcode
obj: ZTEST_ALV

ABAP 프로그램 이름으로 지정할 때에는 programType: program을 사용합니다.

type: magritte-sap-source-adapter
sapType: tcode
obj: RSUSR200
programType: program
설정의미와 조건
filter선택 화면 변수에 값을 전달합니다. 임의의 출력 열을 사후 필터링하는 용도가 아닙니다.
selectionVariant선택 화면의 사전 정의 variant입니다. filter와 함께 쓰면 같은 항목의 variant 값을 filter가 덮어씁니다.
outputVariant프로그램의 레이아웃 이름입니다. SAP 선택 화면에 레이아웃 인자가 정의된 프로그램만 지원합니다.
ingestionType: spool결과를 프린터 큐에 보낸 뒤 수집합니다. SAP 내부 테이블 한도를 넘는 큰 보고서에 권장하며 모든 열을 String으로 수집합니다.

HANA 뷰는 애플리케이션 계층에서 활성화한 뷰를 다음처럼 지정합니다. ZEXT_SBOOK은 예시 이름입니다. 새 구성에서는 SAP ERP 커넥터의 HANA View 선택 항목을 사용합니다.

type: magritte-sap-source-adapter
sapType: hanaview
obj: ZEXT_SBOOK

이 사용자 정의 소스의 CDS 수집은 매개변수가 있는 CDS 뷰를 지원하지 않습니다. 현재 SAP ERP 커넥터의 매개변수 지원과 구분합니다.

증분 수집

증분 수집은 상태를 유지하며 APPEND 트랜잭션으로 행을 추가합니다.

방식동작
Single field한 필드가 이미 수집한 최댓값 이상인 행을 가져옵니다.
Multiple fields쉼표로 지정한 여러 필드 조건을 OR로 결합합니다. 생성 시각과 수정 시각을 함께 추적할 때 사용할 수 있습니다.
Concatenate fields필드 값을 이어 붙여 비교합니다. 수정 날짜와 수정 시간이 별도 열인 경우에 사용할 수 있습니다.
Change document tableCDHDR와 CDPOS의 변경 문서를 사용합니다. 단조 증가 필드가 없을 때 사용할 수 있지만 일부 객체의 삽입은 포착되지 않을 수 있습니다.
Twin 또는 twinjoin table별도 twin 테이블의 증분 조건으로 대상 행을 읽습니다. twinjoin은 여러 테이블을 조인한 대상을 사용할 수 있습니다.

객체별 지원 범위는 다음과 같습니다. 열거하지 않은 방식은 해당 객체에 지원하지 않습니다.

객체지원 증분 방식
Table, Remote TableSingle field, Multiple fields, Concatenate fields, Change document table, Twin table, Request based
InfoProvider, Remote InfoProviderSingle field, Multiple fields, Request based
SLTReplication
ExtractorSAP built-in delta
BEx Query, Function증분 미지원. 전체 추출만 수행합니다.

증분 필드는 단조 증가하는 값이 적합합니다. >= 비교로 날짜 경계 중간의 수집 누락을 막기 때문에 중복값이 생길 수 있습니다. 후속 변환의 첫 단계에서 중복을 제거합니다.

테이블형 증분 수집에는 Advanced YAML의 maxRowsPerSync로 실행당 대략적인 행 수를 제한할 수 있습니다. 긴 초기 수집을 여러 작은 실행으로 나눌 때 사용합니다.

Twin table

Incremental Twin Table에 보조 테이블을, Incremental Twin Mapping에 조인 조건을 지정합니다. 여러 조건은 세미콜론으로 연결하며 AND로 평가합니다.

{PRIMARY_TABLE_NAME}-{FIELD_NAME}={TWIN_TABLE_NAME}-{FIELD_NAME}

InfoProvider의 Request 기반 증분

SAP BW의 DSO와 InfoCube는 DTP(Data Transfer Process)로 적재합니다. 각 DTP가 만든 loading request를 사용해 변경된 데이터를 포착합니다.

압축하지 않은 request만 지원합니다. Foundry로 읽기 전에 request를 압축하면 동기화가 실패하고 초기 적재를 다시 수행해야 합니다. 다음 객체 이름은 실제 InfoProvider의 기술 이름으로 바꿉니다.

type: magritte-sap-source-adapter
sapType: infoprovider
obj: EXAMPLE_INFOPROVIDER
incrementalType: REQUEST

증분 상태 초기화

  1. 동기화의 Advanced YAML에 resetIncrementalState: true를 추가합니다.
  2. 기존 incremental* 인자는 유지하고 트랜잭션을 SNAPSHOT으로 바꿉니다.
  3. 실행하면 SAP 전체 데이터를 읽어 데이터셋 파일을 교체하고 증분 상태를 초기화합니다.
  4. 완료 후 resetIncrementalState: true를 제거하고 트랜잭션을 APPEND로 되돌립니다.

동기화 매개변수

설정적용 대상의미와 조건
Drop columnsERP Table, Remote ERP Table추출 전에 열을 제외합니다.
Timestamp전체실행 시각 /PALANTIR/TIMESTAMP와 동기화 내 행 순서 /PALANTIR/ROWNO를 추가합니다. ROWNO를 최신 변경의 순서로 해석할 수 있는 경우는 SLT 또는 CDPOS/CDHDR 증분 모드이며 값이 클수록 최근 변경입니다.
Page size전체기본 50,000행입니다. 이 사용자 정의 소스에서는 기본값보다 낮게 설정해도 효과가 없으며 더 줄이려면 SAP 추가 기능에 대한 시스템 호출이 필요합니다.
Retry count전체리소스 부족 때문에 요청이 실패했을 때의 재시도 횟수입니다.
Retry delay전체재시도 사이의 초 단위 대기 시간입니다.
Param nameFunction여러 출력 중 수집할 테이블을 지정합니다.
DepthERP Table Data Model관계 탐색 깊이입니다. 1은 1단계, 2는 2단계입니다.
Trace logging전체On이면 추적 로그를 활성화합니다.
Fetch optionSLTXML은 압축 데이터를 가져오는 빠른 방식이고 Direct는 문자열로 가져옵니다. XML 경로에서 데이터 내용 오류가 나면 Direct를 사용할 수 있습니다.
Debug logging전체동기화 동안 SAP의 백그라운드 프로세스를 실행합니다. 다른 사용자에게 영향을 줄 수 있으므로 필요한 경우에만 켭니다.
Continuous resource check전체On이면 모든 페이징 요청에서 메모리와 CPU 등을 확인하고 Off이면 초기 요청만 확인합니다.
Resource check전체Off이면 메모리, CPU와 프로세스 가용성 검사를 모두 없앱니다. SAP에 과도한 부하를 줄 수 있습니다.
Filter전체SAP 필드와 연산자로 수집 범위를 제한합니다. Transaction code의 선택 화면 및 BEx의 사후 필터와 같은 유형별 의미를 따릅니다.

필터 문법

필드 이름은 SAP 데이터 사전과 일치해야 합니다.

기호의미
,OR
;AND
:범위 사이
=같음
!=같지 않음
>, >=, <, <=비교
*와일드카드

다음은 필터 구성을 설명하는 가상 필드와 값입니다.

조건식
가격이 500부터 650 사이PRICE=500:650
고객 A, B 또는 CCUSTOMER=A,B,C
가격 범위와 고객 조건을 모두 만족PRICE=500:650;CUSTOMER=A,B,C
자재가 PAL, DIS 또는 SAP로 시작MATERIAL=PAL*,DIS*,SAP*
2019년 8월 9일 이후 또는 당일DATE>=20190809

동적 필터

추가 기능 SP26 이상에서는 다음 키워드와 함수를 필터값에 사용할 수 있습니다.

키워드의미
[CURRENTYEAR]현재 연도 YYYY
[TODAY]오늘 YYYYMMDD
[LASTDAYOFMONTH]이번 달 마지막 날 YYYYMMDD
[LASTDAYOFLASTMONTH]지난달 마지막 날 YYYYMMDD
[FIRSTDAYOFMONTH]이번 달 첫날 YYYYMMDD
[FIRSTDAYOFLASTMONTH]지난달 첫날 YYYYMMDD

ADDDAY, ADDMONTH, ADDYEAR는 날짜에 일, 월, 연수를 더합니다. GETMONTH와 GETDAY는 두 자리 월과 일을, GETYEAR는 연도를 반환합니다. 날짜 인수를 직접 지정하는 예시는 [ADDDAY(22102022,1)]이며 결과는 23102022입니다.

키워드와 함수를 함께 사용할 수 있습니다.

[ADDDAY([TODAY], 1)]
[GETDAY([ADDDAY([FIRSTDAYOFMONTH], -1)])]
BUDAT>[TODAY]
BUDAT>[ADDDAY([FIRSTDAYOFMONTH], -1)]

첫 두 식은 함수 호출과 중첩 예시입니다. 마지막 두 식은 각각 오늘 이후, 지난달 마지막 날 이후의 레코드를 선택합니다.

Advanced YAML 전용 설정

SLT 및 테이블형 증분 동기화에서 한 실행에 대략 500,000행까지 읽도록 제한하는 예시입니다.

maxRowsPerSync: 500000

BEx 페이징은 Connector SP22 이상에서 사용할 수 있습니다.

bexSettings:
  bexPaging: true
  bexMemberLimit: 10

bexPaging은 자동 생성 필터로 페이징하며 기본값은 false입니다. bexMemberLimit은 필터 후보의 member 수 기준입니다. 이 값보다 member가 많은 InfoObject는 필터 생성에서 제외합니다. 기본값은 200, 최솟값은 2이며 위 예제는 10을 사용합니다.

Unexpected value encountered in SAP data Failed to parse value XXX in field YYY 오류는 날짜나 숫자를 해석할 수 없다는 뜻입니다. 다음 설정은 해석할 수 없는 값을 null로 쓰고 동기화 마지막에 예외 요약을 경고 로그로 남깁니다.

ignoreUnexpectedValues: true

Basic UI에는 이 항목이 없으므로 Basic으로 전환하면 설정이 사라질 수 있습니다. 특수한 날짜값을 그대로 유지해야 한다면 소스의 날짜 문자열 수집 설정도 고려합니다.

동기화별 Parquet 파일 크기는 outputSettingsOverride로 소스 기본값을 덮어씁니다. 행 수 예시는 다음과 같습니다.

outputSettingsOverride:
  maxFileSize:
    type: rows
    rows:
      max: 10000

바이트 제한은 근삿값이며 실제 파일이 조금 작거나 클 수 있습니다.

outputSettingsOverride:
  maxFileSize:
    type: bytes
    bytes:
      approximateMax: 400MB

바이트 값은 Parquet writer의 메모리 버퍼보다 적어도 두 배 커야 합니다. 기본 버퍼는 128MB이므로 그 기본값을 쓰면 최소 256MB에 해당합니다.

SLT 스트리밍

이 사용자 정의 소스의 스트리밍은 Beta이며 플랫폼 인스턴스에 따라 제공되지 않을 수 있습니다. SLT Replication Server 연결과 명시한 connectionType.type: slt가 필요합니다. 각 동기화는 자신의 ODQ를 만들고 구독합니다.

기본 폴링 간격은 1초입니다. 큐가 비어 있으면 다음 폴링까지 추가 요청하지 않습니다. 레코드가 50,000건 이하면 동기적으로 소비하고, 그보다 많으면 페이지로 나누어 읽습니다. 낮은 지연을 유지하려면 활성 스트리밍 동기화 수만큼 SLT dialog work process를 확보하는 것이 좋습니다.

기존 SLT 경로가 ODP-RFC를 사용한다면 SAP의 비SAP 애플리케이션 사용 금지와 보안 패치에 따른 차단 조건을 적용해야 합니다. 해당 경로를 계속 사용할 수 있다고 가정하지 말고 SAP SLT 커넥터의 OData 전환 조건을 확인합니다.

생성 절차

소스 Overview의 스트리밍 표에서 + Create streaming sync를 선택합니다.

수집할 SAP 테이블 이름을 입력합니다.

출력 스트리밍 데이터셋의 위치를 정합니다. 미리보기에서 스키마를 가져오므로 아래 미리보기 창의 로딩이 끝난 뒤 진행합니다. 데이터가 없이 스키마만 보여도 충분합니다.

Create streaming sync로 생성하고 즉시 시작하거나 나중에 수동으로 시작합니다.

에이전트나 SAP 시스템이 중단된 뒤 스트림을 자동 재시작하려면 출력 스트리밍 데이터셋에 1분 간격 시간 트리거 스케줄을 설정합니다.

Normal에서 Very high로 처리량을 올리면 파티션 수가 늘 수 있습니다. 파티션을 여러 개 사용한다면 SAP 기본 키에 대응하는 파티션 키를 지정하여 같은 레코드의 변경을 같은 키로 처리합니다. 키 지정이 전체 스트림의 도착 순서를 다시 정렬하거나 모든 키 사이의 전역 순서를 보장하는 것은 아닙니다.

웹훅 쓰기 반영

웹훅은 BAPI 같은 SAP 함수 모듈을 호출합니다. Foundry 관리형 클라우드에서 실행하는 Foundry 워커를 권장합니다. 이미 Foundry 워커인 소스는 별도 이관 없이 클라우드 실행을 사용하며 기존 에이전트 워커 소스는 실행 방식을 전환해야 합니다.

Task body는 Handlebars 템플릿을 렌더링한 JSON입니다.

필드필수 여부자료형의미
function-name필수StringSAP 함수 모듈 또는 BAPI 이름입니다.
inputs선택Object 또는 Object 배열한 레코드 또는 여러 레코드의 함수 인자입니다. 입력이 없는 함수에서는 생략합니다.
output선택String 또는 String 배열반환할 출력 변수입니다.
commit선택Boolean생략하면 커밋합니다. false이면 커밋을 억제합니다. 표준 BAPI의 변경 저장에 커밋이 필요할 수 있습니다.
parallel선택Object병렬 실행과 작업 수를 설정합니다.
remote선택Object원격 SAP 시스템의 context 문자열을 지정합니다.
api-version선택Integer기본 1이며 버전 2 기능에는 2를 지정합니다.

단일 레코드와 원격 시스템

sales-doc-id는 판매 문서 번호, purchase-date는 갱신할 날짜입니다. 아래 EXAMPLE_ERP는 가상 context로 실제 원격 시스템 식별자로 바꿉니다. json 헬퍼는 입력을 JSON 값으로 인코딩합니다.

{
    "function-name": "BAPI_SALESORDER_CHANGE",
    "inputs": {
        "SALESDOCUMENT": {{json sales-doc-id}},
        "ORDER_HEADER_IN": { "PURCH_DATE": {{json purchase-date}} },
        "ORDER_HEADER_INX": { "UPDATEFLAG": "U", "PURCH_DATE": "X" }
    },
    "output": "RETURN",
    "remote": { "context": "EXAMPLE_ERP" },
    "api-version": 2
}

대량 및 병렬 쓰기

대량 및 병렬 쓰기는 OAuth 2.0 인증을 지원하지 않습니다. 다음 자재, 플랜트와 수량은 예시이며 실제 호출하면 SAP에 구매 요청을 생성합니다.

{
    "function-name": "BAPI_PR_CREATE",
    "commit": true,
    "parallel": { "max-jobs": 2, "max-calls-per-job": 4 },
    "inputs": [
        { "PRHEADER": { "PR_TYPE": "NB" }, "PRITEM": [ { "MATERIAL": "100-100", "PLANT": "1100", "QUANTITY": "1" } ] },
        { "PRHEADER": { "PR_TYPE": "NB" }, "PRITEM": [ { "MATERIAL": "100-200", "PLANT": "1100", "QUANTITY": "2" } ] }
    ],
    "output": ["NUMBER", "PRHEADEREXP"],
    "api-version": 2
}

입력 배열이 두 객체 이상이거나 parallel 블록을 명시하면 병렬 실행을 선택합니다. 빈 parallel: {}도 같은 효과가 있습니다. max-jobs는 동시 작업 수, max-calls-per-job은 작업당 레코드 수입니다. 생략하면 SAP 추가 기능의 설정을 사용하며 기본값은 작업 3개, 작업당 호출 4개입니다. 레코드 수보다 많은 작업을 지정해도 남는 작업은 사용하지 않습니다.

반환 형식과 오류

다음 값은 응답 형식을 설명하는 가상 예시입니다. 단일 레코드이고 parallel 블록이 없으며 출력 변수가 하나이면 그 변수의 행 목록을 반환합니다.

[
    { "NUMBER": "0010048439" }
]

단일 레코드에서 여러 출력 변수를 요청하면 변수 이름별 객체를 반환합니다.

{
    "NUMBER": [ { "NUMBER": "0010048439" } ],
    "PRHEADEREXP": [ { "PREQ_NO": "0010048439", "PR_TYPE": "NB" } ]
}

병렬 응답은 입력 레코드마다 하나의 원소를 가진 배열이며 입력이 하나인 경우에도 배열입니다.

[
    {
        "OUTPUT": { "NUMBER": [ { "NUMBER": "0010048439" } ], "PRHEADEREXP": [ { "PREQ_NO": "0010048439" } ] },
        "ROWNO": 1,
        "MSG": [ { "MSGTYP": "S", "MSGTXT": "Purchase requisition 0010048439 created" } ]
    }
]

OUTPUT은 단일 응답과 같은 형태의 해당 레코드 결과입니다. ROWNO는 1부터 시작하는 inputs 위치입니다. MSG는 레코드별 로그이며 MSGTYP에는 성공 S, 오류 E, 경고 W, 정보 I, 중단 A가 들어가고 MSGTXT는 본문입니다.

HTTP 실패는 웹훅 오류가 됩니다. 성공한 웹훅 응답에도 SAP 업무 오류가 포함될 수 있으므로 가능한 경우 RETURN을 요청하고 각 레코드의 MSG를 확인합니다.

여러 출력 변수와 대량/병렬 쓰기에는 api-version: 2와 SAP 추가 기능 2.29.0 이상이 필요합니다. 기본 버전 1은 입력 하나와 출력 변수 하나만 지원하며 parallel 블록을 사용할 수 없습니다. 버전 2로 전환할 때에는 0보다 큰 retries-per-request 설정을 제거합니다.

STXL 긴 텍스트 수집에는 압축 해제가 필요하며 HANA 외부 뷰와 BW extractor는 SAP 측 설정을 준비해야 합니다. 사용자 귀속 쓰기와 커스텀 역할은 대상 SAP의 추가 기능 및 인증 설정과 함께 관리합니다.