SegmentHandle API - Scoped

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 9분
  • 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.

    표 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.
    표 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.

    표 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.
    표 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.

    표 5. Parameters
    Name Type Description
    None
    표 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.

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