SegmentHandle API :スコープ対象

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:7分
  • ヘッダーやアイテムなどのセグメントの単一インスタンスを処理するためのメソッド。このクラスは、SegmentHandler スクリプトインクルードで定義されています。

    SegmentHandler スクリプトインクルードには ERP 向けゼロコピーコネクタ (com.sn_erp_integration) ストアアプリケーションが必要であり、sn_erp_integration 名前空間内で提供されます。詳細については、「Zero Copy Connector for ERP」を参照してください。

    必要なロール:sn_erp_integration.erp_user

    このクラスのメソッドは、次のタスクに使用します。
    • その特定のセグメントインスタンスにフィールドを追加します。
    • インスタンスの下にネストされたセグメント/子セグメントを追加します。
    • endSegment() または root() メソッドを使用して親またはルートにチェーンバックします。

    SegmentHandle - addField(String fieldName, String value)

    現在のセグメントインスタンスの事前定義されたフィールドをペイロードに追加します。

    表 : 1. パラメーター
    名前 タイプ 説明
    fieldName 文字列 セグメントに追加するフィールドの名前。
    value 文字列 セグメントに追加するフィールドの値。
    表 : 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()

    スキーマ内の 1 つ上のレベルに移動します。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 返される内容
    タイプ 説明
    オブジェクト 親ハンドルまたはルートハンドラー。
    • 子セグメントから、親 SegmentHandle オブジェクトを返します。
    • 最上位セグメントから、親 SegmentHandler オブジェクトを返します。
    root() メソッドを使用して、ルート SegmentHandler オブジェクトを返します。

    次の例は、ネストされたセグメントを持つヘッダーとアイテムを 1 つの 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"
              }]
            }]
          }]
      }
    }

    SegmentHandle - 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");