SegmentHandle API :スコープ対象
ヘッダーやアイテムなどのセグメントの単一インスタンスを処理するためのメソッド。このクラスは、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)
現在のセグメントインスタンスの事前定義されたフィールドをペイロードに追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| fieldName | 文字列 | セグメントに追加するフィールドの名前。 |
| value | 文字列 | セグメントに追加するフィールドの値。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | チェーン用の現在の 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, オブジェクト値)
事前定義されたネストされた子セグメントをペイロードに追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| セグメント名 | 文字列 | 現在のセグメント内にネストされたセグメントの名前。 |
| 値 | オブジェクト | addField() メソッドの代わりに使用するオプションの実装。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | 子セグメントの新しい 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 つ上のレベルに移動します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | 親ハンドルまたはルートハンドラー。
|
次の例は、ネストされたセグメントを持つヘッダーとアイテムを 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 オブジェクトを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | ルートレベルの 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");