CX_TRANSACTION::FirstPredecessorByCondition
Beschreibung:
Diese Funktion wird solange rekursiv für alle Objekte der "predecessors" Liste (predecessors ist ein Slot vom Typ collection) aufgerufen, bis ein Vorgängerobjekt gefunden wurde, für das die als Parameter übergebene Bedingung erfüllt (=TRUE) ist. Wird kein entsprechender Vorgängerbeleg gefunden, liefert die Funktion INVALID zurück.
Erfüllt bereits das aufrufende Transaktionsobjekt die Bedingung, wird dieses zurückgegeben, sofern nicht das Bit 3 des Modus Parameters gesetzt wurde. Der Modus Parameter steuert die – erweiterte – Durchsuchung der Transaktionsobjekte der spezialisierten Typen CX_COMPOUND_TXN und CX_ALLOCATION_TXN.
Hinweis: Um nachzuvollziehen, welche Objekte wie durchsucht werden, kann der Logger cx.model.txn in den Modus TRACE geschaltet werden. Die einzelnen Schritte werden dann in der Log-Datei angegeben.
Code-Beispiele:
// Hole den ersten Vorgängerbeleg, der zu einem Kundenauftrag gehört txnObject Get(FirstPredecessorByCondition("type(TopTransaction())=CX_SALES_ORDER").TopTransaction()) // Hole den ersten Vorgängerbeleg, der zu einem Lieferschein gehört, durchsuche dabei auch die subTransactions collections compoundTxnObject Get(FirstPredecessorByCondition("type(TopTransaction())=CX_DELIVERY_NOTE",1).TopTransaction())
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_TRANSACTION | Das aufrufende Transaktionsobjekt |
Top-1 | INTEGER | Modus (Bitmuster) 0 (Integer 1) = bei Belegen des Typs CX_COMPOUND_TXN werden zusätzlich auch die Belege in der subTransactions collection durchsucht 1 (Integer 2) = bei Belegen des Typs CX_ALLOCATION_TXN wird zusätzlich auch der TopTransaction() Beleg durchsucht 2 (Integer 4) = nur die eigene predecessors-Collection durchsuchen, nicht die der Vorgängerbelege (kein rekursiver Aufruf!) 3 (Integer 8) = das aufrufende Transaktionsobjekt wird ignoriert, auch wenn es die Bedingung erfüllen sollte |
|
Top-2 | STRING | Bedingung in Form eines booleschen Ausdrucks | |
Stack(Out) | Top | CX_TRANSACTION oder NULL | Vorgängerbeleg-Objekt, für das die Bedingung erfüllt ist |