在 SAP PI XSLT 映射中具有否定条件的 XPATH 表达式



我必须在SAP PI中维护ICO接口确定的条件。我有几种发票类型,如 L1、S1、G1、F1 等。根据要求,我有两个单独的映射。

当发票类型为 L1、S1 或 G1,并且 LAND1 = IND、PARW= W 和 QUALF=015 时,我想选择第一个映射,对于其余发票类型,我想选择第二个映射。

条件编辑器中两个映射的 XPath 表达式为:

1(

(/ZEINV_INVOIC02/IDOC/E1EDKA1[PARVW = 'W' and LAND1 = 'IND'])   EX   AND
(/ZEINV_INVOIC02/IDOC/E1EDK14[QUALF = 015 and ORGID = 'L1'])    EX   OR
(/ZEINV_INVOIC02/IDOC/E1EDKA1[PARVW = 'W' and LAND1 = 'IND'])   EX   AND 
(/ZEINV_INVOIC02/IDOC/E1EDK14[QUALF = 015 and ORGID = 'G1'])    EX   OR 
(/ZEINV_INVOIC02/IDOC/E1EDKA1[PARVW = 'W' and LAND1 = 'IND'])   EX   AND
(/ZEINV_INVOIC02/IDOC/E1EDK14[QUALF = 015 and ORGID = 'S1'])    EX

2((我对关于 ORGID 表达式的第二行有问题(

(/ZEINV_INVOIC02/IDOC/E1EDKA1[PARVW = 'W' and LAND1 = 'IND'])                                    EX AND
(/ZEINV_INVOIC02/IDOC/E1EDK14[QUALF = 015 and ( ORGID ≠ 'L1' or ORGID ≠ 'G1' or ORGID ≠ 'S1' )]) EX

问题是,当ICO运行时,它正在选择两个映射,并使用以下值满足两个条件:

ORGID = 'L1'
QALF  = 015
PARW  = 'W' 
LAND1 = 'IND'

当我们有 L1、G1 和 S1 以外的 ORGID 值时,第二个条件的 XPath 表达式是什么?

不幸的是,表达式ORGID ≠ 'L1' or ORGID ≠ 'G1' or ORGID ≠ 'S1'是一个重言式,即如果ORGID'L1'的,则为真,如果ORGIDL1,则为真,所以无论ORGID的值是多少,整个表达式总是为真。

你想要的是这个:

not( ORGID = 'L1' or ORGID = 'G1' or ORGID = 'S1' )

请注意,您也可以使用不带not的等效表达式,通过使用德摩根定律,在这里您必须切换和/或并否定条件:

ORGID != 'L1' and ORGID != 'G1' and ORGID != 'S1'

NB:真的有效吗?你不应该使用!=吗?

相关内容

  • 没有找到相关文章

最新更新