Выражение XPATH с отрицательным условием в сопоставлении SAP PI XSLT
Я должен поддерживать условия в определении интерфейса ICO в SAP PI. У меня есть несколько типов счетов, таких как L1, S1, G1, F1 и т. Д. У меня есть два отдельных сопоставления согласно требованиям.
Когда тип счета-фактуры - L1, S1 или G1 и LAND1 = IND, PARW= W и QUALF=015, я хочу выбрать 1-е сопоставление, а для остальных типов счетов-фактур я хочу выбрать 2-е сопоставление.
Выражения 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'
Каково выражение XPath для второго условия, когда у нас есть значения ORGID, отличные от L1, G1 и S1?
1 ответ
К сожалению, выражение ORGID ≠ 'L1' or ORGID ≠ 'G1' or ORGID ≠ 'S1'
является тавтологией, то есть, это правда, еслиORGID
является 'L1'
и правда, если ORGID
не является L1
, поэтому все выражение всегда верно независимо от значения ORGID
является.
Что вы хотите:
not( ORGID = 'L1' or ORGID = 'G1' or ORGID = 'S1' )
Обратите внимание, что вы также можете использовать эквивалентное выражение без not
, используя закон Де Моргана, здесь вы должны переключить и / или отрицать условия:
ORGID != 'L1' and ORGID != 'G1' and ORGID != 'S1'
NB: делает ≠
действительно работает? Разве вы не должны использовать!=
?