SegmentHandle API - 범위 지정됨
헤더 또는 항목과 같은 세그먼트의 단일 인스턴스를 처리하는 방법입니다. 이 클래스는 SegmentHandler 스크립트 포함에 정의되어 있습니다.
SegmentHandler 스크립트 포함에는 (com.sn_erp_integration) 스토어 애플리케이션이 필요 ERP용 제로 카피 커넥터 하며 sn_erp_integration 네임스페이스 내에서 제공됩니다. 자세한 내용은 Zero Copy Connector for ERP 문서를 참조하십시오.
필요한 역할: sn_erp_integration.erp_user
다음 작업에 이 클래스의 메서드를 사용합니다.
- 해당 특정 세그먼트 인스턴스에 필드를 추가합니다.
- 인스턴스 아래에 중첩된/하위 세그먼트를 추가합니다.
endSegment()또는root()메서드를 사용하여 상위 또는 루트에 다시 체인백합니다.
SegmentHandle - addField(String fieldName, String value)
현재 세그먼트 인스턴스의 미리 정의된 필드를 페이로드에 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 세그먼트에 추가할 필드의 이름입니다. |
| 값 | 문자열 | 세그먼트에 추가할 필드의 값입니다. |
| 유형 | 설명 |
|---|---|
| 객체 | 체인을 위한 현재 SegmentHandle 객체입니다. |
다음 예는 세그먼트 페이로드를 생성하는 방법을 보여줍니다. 특정 세그먼트에 대한 참조를 유지하려는 경우 명시적 변수를 사용합니다.
- 여러 obj.addSegment("E1EDK01") 호출은 여러 헤더 세그먼트를 생성합니다.
- 중첩된 세그먼트는 올바른 상위 핸들(p01, p20 등)에서 만들어집니다.
- k01_1, k01_2, p01과 같은 핸들은 나중에 다시 사용하여 필드나 하위 항목을 더 추가할 수 있습니다.
var obj = new SegmentHandler('460d3ff2ff5de210d3a2fffffffffff8');
// Create first E1EDK01
let k01_1 = obj.addSegment("E1EDK01")
.addField("BELNR", "1000")
.addField("CURCY", "USD");
// Create another E1EDK01
let k01_2 = obj.addSegment("E1EDK01")
.addField("BELNR", "2000")
.addField("CURCY", "EUR");
// Create E1EDP01 with nested segments
let p01 = obj.addSegment("E1EDP01")
.addField("MENGE", "50")
.addField("POSEX", "0010");
let p20 = p01.addSegment("E1EDP20")
.addField("AMENG", "10")
.addField("WMENG", "5");
p20.addSegment("E1EDP19")
.addField("IDTNR", "MAT01");
gs.info(JSON.stringify(obj.getData(), null, 2));
출력:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
SegmentHandle - addSegment(문자열 segmentName, 객체 값)
미리 정의된 중첩된 하위 세그먼트를 페이로드에 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 세그먼트 이름 | 문자열 | 현재 세그먼트 내에 중첩된 세그먼트의 이름입니다. |
| 값 | 객체 | addField() 메서드 대신 선택적 구현입니다. |
| 유형 | 설명 |
|---|---|
| 객체 | 하위 세그먼트에 대한 새 SegmentHandle 을 반환합니다. |
다음 예는 세그먼트 페이로드를 생성하는 방법을 보여줍니다. 특정 세그먼트에 대한 참조를 유지하려는 경우 명시적 변수를 사용합니다.
- 여러 obj.addSegment("E1EDK01") 호출은 여러 헤더 세그먼트를 생성합니다.
- 중첩된 세그먼트는 올바른 상위 핸들(p01, p20 등)에서 만들어집니다.
- k01_1, k01_2, p01과 같은 핸들은 나중에 다시 사용하여 필드나 하위 항목을 더 추가할 수 있습니다.
var obj = new SegmentHandler('460d3ff2ff5de210d3a2fffffffffff8');
// Create first E1EDK01
let k01_1 = obj.addSegment("E1EDK01")
.addField("BELNR", "1000")
.addField("CURCY", "USD");
// Create another E1EDK01
let k01_2 = obj.addSegment("E1EDK01")
.addField("BELNR", "2000")
.addField("CURCY", "EUR");
// Create E1EDP01 with nested segments
let p01 = obj.addSegment("E1EDP01")
.addField("MENGE", "50")
.addField("POSEX", "0010");
let p20 = p01.addSegment("E1EDP20")
.addField("AMENG", "10")
.addField("WMENG", "5");
p20.addSegment("E1EDP19")
.addField("IDTNR", "MAT01");
gs.info(JSON.stringify(obj.getData(), null, 2));
출력:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
SegmentHandle - endSegment()
스키마에서 한 수준 위로 이동합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
| 유형 | 설명 |
|---|---|
| 객체 | 상위 핸들 또는 루트 핸들러입니다.
|
다음 예제에서는 하나의 Fluent 체인에 중첩된 세그먼트가 있는 헤더와 항목을 빌드하는 방법을 보여줍니다. 구조는 구성된 스키마에 따라 달라집니다. 스키마 패턴은 배열이 중첩된 세그먼트의 배열입니다.
let obj = new sn_erp_integration.SegmentHandler('460d3ff2ff5de210d3a2fffffffffff8');
obj.addSegment("E1EDK01")
.addField("BELNR", "1000")
.addField("CURCY", "USD")
.endSegment()
.addSegment("E1EDP01")
.addField("MENGE", "50")
.addField("POSEX", "0010")
.addSegment("E1EDP20")
.addField("AMENG", "10")
.addField("WMENG", "5")
.addSegment("E1EDP19")
.addField("IDTNR", "MAT01")
.endSegment()
.endSegment()
.endSegment();
gs.info(JSON.stringify(obj.getData(), null, 2));
출력:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
세그먼트 핸들 - root()
중첩 깊이에 관계없이 루트 SegmentHandler 객체를 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
| 유형 | 설명 |
|---|---|
| 객체 | SegmentHandler 루트 수준에서. |
다음 예제에서는 스키마의 수준 사이를 이동하는 방법을 보여줍니다.
let p19 = p20.addSegment("E1EDP19").addField("IDTNR", "MAT01");
p19.endSegment() // back to E1EDP20
.endSegment() // back to E1EDP01
.root() // back to SegmentHandler
.addSegment("E1EDK01").addField("BELNR", "3000");