为什么在 ReqLineItem.SupplierPartNumber 上似乎忽略了有效性条件?

Why a validity condition seems to be ignored on ReqLineItem.SupplierPartNumber?

对于如下所示的自定义,在编辑行项目时,永远不会触发有效性并且不会显示其错误消息。我什至可以通过按 OK 按钮(从而保存更改)从行项目退出到编辑请购单 header 什么应该被阻止。

<inClass name="ariba.purchasing.core.ReqLineItem">
    <inField name="SupplierPartNumber">
        <validity combine="and">
            <context enclosingDocument="ariba.purchasing.core.Requisition"/>
            <condition expression="false">
                <parameter name="Message" value="Temporarily, this validity is always NOT valid."/>
            </condition>
        </validity>
    </inField>
</inClass>

但是,当我按下 提交 按钮或 显示批准流程 时,预期的错误消息显示在 header 级别按钮。

如何使有效性在订单项上正常工作?

改为在值源设置有效性条件。

ReqLineItem.SupplierPartNumber实际上是LineItemDescription.SupplierPartNumber的别名。虽然它的可见性和可编辑性条件可以单独控制,但它的有效性条件是从原始字段转移过来的。这是合乎逻辑的,因为当通过别名共享内容时,它仍然必须保持相同的有效性规则。

答案:

  • 在原始字段 LineItemDescription.SupplierPartNumber 实施有效性条件,它也适用于其别名
  • 不要在别名 ReqLineItem.SupplierPartNumber 处使用有效性条件。这种用法在技术上是可行的,不会出现错误,但实际上会导致上述一些意外行为。