SegmentHandle API - Scoped

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 3 minutes de lecture
  • Methods provided by the SegmentHandler script include for handling a single instance of a segment, such as a header or item.

    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() or root() methodw.

    SegmentHandle - addField(String fieldName, String value)

    Adds a predefined field on the current segment instance to the payload.

    Tableau 1. Parameters
    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.
    Tableau 2. Returns
    Type Description
    Object Current SegmentHandle object for chaining.
    The following example shows how to create a segment payload. Use explicit variables when you want to keep references to specific segments.
    • Multiple obj.addSegment("E1EDK01") calls generate multiple header segments.
    • Nested segments are created from the correct parent handle (p01, p20, etc.).
    • 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.

    Tableau 3. Parameters
    Name Type Description
    segmentName String Name of a segment nested within the current segment.
    values Object Optional implementation in place of the addField() method.
    Tableau 4. Returns
    Type Description
    Object Returns this SegmentHandle object for chaining.
    The following example shows how to create a segment payload. Use explicit variables when you want to keep references to specific segments.
    • Multiple obj.addSegment("E1EDK01") calls generate multiple header segments.
    • Nested segments are created from the correct parent handle (p01, p20, etc.).
    • 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.

    Tableau 5. Parameters
    Name Type Description
    None
    Tableau 6. Returns
    Type Description
    Object Parent handle or root handler.
    • From a child segment, returns the parent SegmentHandle object.
    • From the top-level segment, returns the parent SegmentHandler object.
    Use the root() method to return the root SegmentHandler object.

    The following example shows Build a header and item with nested segments in one fluent chain. The structure depends on the configured schema, but the pattern—arrays of segments with nested arrays—is the same.

    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.

    Tableau 7. Parameters
    Name Type Description
    None
    Tableau 8. Returns
    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");