SegmentHandle API - 범위 지정됨

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 7분
  • 헤더 또는 항목과 같은 세그먼트의 단일 인스턴스를 처리하는 방법입니다. 이 클래스는 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)

    현재 세그먼트 인스턴스의 미리 정의된 필드를 페이로드에 추가합니다.

    표 1. 매개변수
    이름 유형 설명
    fieldName 문자열 세그먼트에 추가할 필드의 이름입니다.
    문자열 세그먼트에 추가할 필드의 값입니다.
    표 2. 반환
    유형 설명
    객체 체인을 위한 현재 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, 객체 값)

    미리 정의된 중첩된 하위 세그먼트를 페이로드에 추가합니다.

    표 3. 매개변수
    이름 유형 설명
    세그먼트 이름 문자열 현재 세그먼트 내에 중첩된 세그먼트의 이름입니다.
    객체 addField() 메서드 대신 선택적 구현입니다.
    표 4. 반환
    유형 설명
    객체 하위 세그먼트에 대한 새 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()

    스키마에서 한 수준 위로 이동합니다.

    표 5. 매개변수
    이름 유형 설명
    안 함
    표 6. 반환
    유형 설명
    객체 상위 핸들 또는 루트 핸들러입니다.
    • 하위 세그먼트에서 상위 SegmentHandle 객체를 반환합니다.
    • 최상위 세그먼트에서 상위 SegmentHandler 객체를 반환합니다.
    root() 메서드를 사용하여 루트 SegmentHandler 개체를 반환합니다.

    다음 예제에서는 하나의 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 객체를 가져옵니다.

    표 7. 매개변수
    이름 유형 설명
    안 함
    표 8. 반환
    유형 설명
    객체 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");