機械翻訳について

品目ルールの論理関数と演算子

品目ルールの論理関数および演算子を使用して、式の妥当性をテストします。

論理演算子

品目ルールで使用可能な論理演算子を次に示します。

  • and (論理AND)

  • or (論理OR)

  • not (論理NOT)

および

構文:


            expression1 and expression2
         

and演算子のかわりに&&という表記を使用することもできます。

論理and演算子は、expression1およびexpression2に対して次のtrue表を実装します。

expression1

expression2

expression1およびexpression2

F

F

F

F

T

F

T

F

F

T

T

T

F

null

F

null

*[see note]

null

*最初のFALSEが見つかると、プロセッサは停止します。 したがって、F and nullnull and Fの間には非対称性があります。

または

構文:

expression1 or expression2

or演算子のかわりに||という表記を使用することもできます。

論理or演算子は、expression1およびexpression2に対して次のtrue表を実装します。

expression1

expression2

expression1またはexpression2

F

F

F

F

T

T

T

F

T

T

T

T

T

Null

T

null

*[see note]

null

*プロセッサは、最初のTRUEを検出すると停止します。 したがって、T and nullnull and Tの間には非対称性があります。

not

構文:

not expression1

論理not演算子は、expression1およびnot expression1に対して次のtrue表を実装します。

expression1

expression1ではありません

F

T

T

F

null

null

論理関数

品目ルールで使用可能な論理関数を次に示します。

assignedToOrg

構文:

assignedtoOrg("org_code")

検証式で、指定した組織に品目が割り当てられている場合はTRUEを返します。

例:

次の例では、品目の品目区分が追加データ・サーバーの場合、組織をS2にすることはできません。

Severity: Reject
If Expression:  [Item].[Item Basic].[Item Class] == "Extra Data Servers"
Validation Expression:  !assignedtoOrg("S2")

assignedtoCatalog

構文:

assignedToCatalog(Catalog[CatalogCode].Category[CategoryCode])

検証式で、指定したカタログおよびカテゴリに品目が割り当てられている場合はTRUEを返します。

例:

次の例では、品目がカタログLadies WearおよびカテゴリSummerに割り当てられている場合、KidsおよびカテゴリSummerをカタログに割り当てることはできません。

Severity: Reject
If Expression:  
assignedtoCatalog(Catalog[LadiesWear].Category[Summer])
Validation Expression:  
!assignedtoCatalog(Catalog[Kids].Category[Summer])

component_type

構文:

component_type("typename1", "typename2", ...)

構成のコンポーネント・タイプをチェックする検証式で、その構成に関連付けられたコンポーネントが有効である場合はTRUEを返します。 引数は、コンポーネントの有効なユーザー品目タイプのリストです。

構成のコンポーネント・タイプをチェックするルールを作成する場合は、「ルール」の作成ダイアログ・ボックスで「有効なコンポーネント・ルール」チェック・ボックスを選択する必要があります。

他の検証ルールとは異なり、コンポーネントを検証するルールには重大度がありません。

例:

次の例では、構造がプライマリの場合、構造の構成要素として使用できるのはtype1およびtype2のみです。

If Expression: [Structure].[Structure Attributes].[Structure Name] == "Primary"
Validation Condition:  component_type("type1","type2")

exists

構文:

exists(Boolean_expression)

Boolean_expressionで使用されているエンティティの行をループして、いずれかの行で式が満たされた場合はTRUEを返します。

次のエンティティでexists()を使用できます:

  • 関係(関連品目関係および相互参照)

  • 構造

  • 複数行属性グループ

式の例:

次の式は、品目のすべての構造をループし、構造の名前が"ManufacturingBOM"の場合はTRUEを返します。

exists([Structure].[Structure Attributes].[Structure Name] == "ManufacturingBOM")

次の式は、品目に特定の関係が存在するかどうかを検証します:

exists([Relateditem.[RelateditemMain[.[Type] == "Up-sell")

次の式は、行が複数行属性グループに存在するかどうかを検証します:

exists(isNull([Item].[Ingredients].[Ingredient Name]) == false)

ルールの例:

次のルールは、品目属性Pack Typeが指定されている場合、GTIN属性GTINをnullにできないことを検証

If Expression: 
isNull([Item].[Main].[PACK TYPE]) == false
Validation Condition: 
exists(isNull([GTIN].[GTIN Main].[GTIN])) == false

次のルールは、属性TMの値がUSの場合、GTIN関係がUSFDAという名前のCustomerと関係する必要があることを検証します。

If Expression: 
[Item].[Group1].[TM] == "US"
Validation Condition: 
[GTIN].[GTIN Main].[Party Type] == "Customer" AND 
[GTIN].[GTIN Main].[Party Name] == "USFDA"

from_item_class

構文

from_item_class ("item class name")

品目の品目区分が変更されるときに起動されます。 検証式で、元の品目クラスの名前が"item class name"と一致する場合はTRUEを返し、これを引用符で囲む必要があります。

例:

次の例では、元の品目クラスがTCParentの場合にTRUEを返します:

FROM_ITEM_CLASS("TCParent")

組合せの例:

次の例では、品目の品目クラスをPneumatic_PumpsからHydraulic_Pumpsに変更できないようにします。

Severity: Reject 
If Expression: 
FROM_ITEM_CLASS("Pneumatic_Pumps") && TO_ITEM_CLASS("Hydraulic_Pumps")

to_item_class

構文

to_item_class("item class name")

品目の品目区分が変更されるときに起動されます。 検証式で、新しい品目クラスの名前が"item class name"と一致する場合はTRUEを返し、これを引用符で囲む必要があります。

例:

次の例では、新しい品目クラスがTCCHLDVRの場合にTRUEを返します

TO_ITEM_CLASS("TCCHLDVR")

付加フレックスフィールド

付加フレックスフィールドはどの属性グループにも属せず、FlexFieldセグメント・コードを使用してアクセスされます。

[<Entity Name>].Flexfield[<Flexfield segment code>]

例:

[ChangeHeader].Flexfield[Product__Line]

比較演算子

品目ルールで使用可能な比較演算子を次に示します。

  • == (equals)

  • != (等しくない)

  • < (より小さい)

  • <= (以下)

  • > (次より大きい)

  • >= (次より大きい)

比較演算子は、2つのブール式を比較し、比較の結果に応じてTRUEまたはFALSEを返します。 1つまたは両方の式がnullの場合、比較ではnull値のnull.Toチェックが返されます。比較関数isnullを使用します。

文字列比較では大文字と小文字は区別されません。 大/小文字を区別する比較には、文字列関数compareを使用します。

構文:

expression1 == expression2 (equals 
expression1 != expression2
expression1 < expression2
expression1 <= expression2
expression1 > expression2comp
expression1 >= expression2

ヌル

構文:

isnull(expression)

引数がnullの場合はTRUEを返し、それ以外の場合はFALSEを返します。 この関数を使用すると、値がnullであるかどうかを明示的にテストできます。 他の関数とは異なり、引数の値がnullの場合は無視されます。

論理関数isnull()は、expressionの次の真実表を実装します。

表情

isnull(expression)

null

T

nullでない

F

テレビ

構文:

nvl(expression,replacement-expression)

expressionがnullまたは空の文字列の場合、replacement-expressionを返します。

例:

次の例では、属性Attr1がnullの場合に空の文字列を返します。

nvl([Item].[AttrGrp1].[Attr1], "")

多数の拡張可能フレックスフィールド属性に基づいて品目摘要を生成するなどのシナリオでは、使用された属性の1つ以上がnullの場合でもルールの実行を維持する場合に、isnull()関数を使用するのは不便です。これは、isnull()がブール値を返すためで、各属性に対して個別に処理する必要があります。 次の例では、一連の属性値を長い説明に連結し、nvl()を使用して、参照される属性のいずれかがnullである説明に空の文字列を挿入します:

"Pipe Non-Metallic" + 
":OUTSIDE DIAMETER:" + nvl([Item].[Pipe:Non-Metallic].[Outside Diameter],"") + 
":NOMINAL SIZE:" + nvl([Item].[Pipe:Non-Metallic].[Nominal Size],"") + 
":COLOR:" + nvl([Item].[Pipe:Non-Metallic].[Color],"")