SegmentHandle API - Scoped
Methods for handling a single instance of a segment, such as a header or item. This class is defined in the SegmentHandler script include.
The SegmentHandler script include requires the Zero Copy Connector for ERP (com.sn_erp_integration) store application and is provided within the sn_erp_integration namespace. For more information, refer to Zero Copy Connector for ERP.
Role required: sn_erp_integration.erp_user
- Add fields to that specific segment instance.
- Add nested/child segments under the instance.
- Chain back to parent or root using the
endSegment()orroot()methods.
SegmentHandle - addField(String fieldName, String value)
Adds a predefined field on the current segment instance to the payload.
| Name | Type | Description |
|---|---|---|
| fieldName | String | The name of the field to be added to the segment. |
| value | String | The value of the field to be added to the segment. |
| Type | Description |
|---|---|
| Object | Current SegmentHandle object for chaining. |
- Multiple obj.addSegment("E1EDK01") calls generate multiple header segments.
- Nested segments are created from the correct parent handle (p01, p20, and so on).
- Handles like k01_1, k01_2, p01 can be reused later to add more fields or children.
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));
Output:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
SegmentHandle - addSegment(String segmentName, Object values)
Adds a predefined nested child segment to the payload.
| Name | Type | Description |
|---|---|---|
| segmentName | String | Name of a segment nested within the current segment. |
| values | Object | Optional implementation in place of the addField() method. |
| Type | Description |
|---|---|
| Object | Returns a new SegmentHandle for the child segment. |
- Multiple obj.addSegment("E1EDK01") calls generate multiple header segments.
- Nested segments are created from the correct parent handle (p01, p20, and so on).
- Handles like k01_1, k01_2, p01 can be reused later to add more fields or children.
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));
Output:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
SegmentHandle - endSegment()
Moves up one level in a schema.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | Parent handle or root handler.
|
The following example shows how to build a header and item with nested segments in one fluent chain. The structure depends on the configured schema. The schema pattern is arrays of segments with nested arrays.
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));
Output:
{
"data": {
"E1EDK01": [{
"BELNR": "1000",
"CURCY": "USD"
}],
"E1EDP01": [{
"MENGE": "50",
"POSEX": "0010",
"E1EDP20": [{
"AMENG": "10",
"WMENG": "5",
"E1EDP19": [{
"IDTNR": "MAT01"
}]
}]
}]
}
}
SegmentHandle - root()
Gets the root SegmentHandler object, regardless of nesting depth.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | SegmentHandler at the root level. |
The following example shows how to move between levels in a schema.
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");