SegmentHandler API - Scoped

  • Release version: Zurich
  • Updated March 12, 2026
  • 2 minutes to read
  • Script include providing a chainable API for building an IDoc payload for a specific operation.

    This 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

    The SegmentHandler class:
    • Owns the root data object and the IDoc segment schema.
    • Enables creating top-level segments. For example, E1EDK01, E1EDP01, and so on.
    For handling lower-level instances of a segment, such as a header or item, refer to SegmentHandle API - Scoped.

    See also sn_erp_integration API - Scoped, Global.

    SegmentHandler - SegmentHandler(String operationId)

    Instantiates a new SegmentHandler object bound to an IDoc operation.

    Table 1. Parameters
    Name Type Description
    operationId String The sys_id of a configured ERP model operation.

    Table: ERP model operation [sn_erp_integration_model_operation]

    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"
              }]
            }]
          }]
      }
    }

    SegmentHandler - addSegment(String segmentName, Object values)

    Adds a predefined top-level segment of the type segmentName to the payload.

    Note:
    The segment must be defined in the operation.
    Table 2. Parameters
    Name Type Description
    segmentName String Name of the top-level segment.
    values Object Optional implementation in place of the addField() method.
    Table 3. Returns
    Type Description
    Object SegmentHandle for the new segment instance.

    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"
              }]
            }]
          }]
      }
    }

    SegmentHandler - getData()

    Gets the built segment payload.

    Table 4. Parameters
    Name Type Description
    None
    Table 5. Returns
    Type Description
    Object Object containing segment data.
    data Wrapper for the payload object containing all top-level and nested segments.

    { data: <payloadObject> }

    The exact structure depends on the configured schema, but the pattern (arrays of segments with nested arrays) is the same.

    Data type: Object

    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"
              }]
            }]
          }]
      }
    }