rm25645
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| rm25645 [2018/06/04 09:11] – [Reproduce] kalaschnikow | rm25645 [2018/06/12 10:53] (current) – [Analyze] kalaschnikow | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== rm25645 AIRS_PRD: Error: PO Finalizer Job auf PRD ====== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | ===== Description ===== | ||
| + | ... | ||
| + | |||
| + | |||
| + | ===== TODO ===== | ||
| + | * **+** Analyze | ||
| + | * **+** Reproduce | ||
| + | * **+** Fix | ||
| + | * **-** Test | ||
| + | |||
| + | ===== Analyze ===== | ||
| + | Probleme macht folgende OTD-Line: | ||
| + | <code sql> | ||
| + | Insert into tOTDLINE__ | ||
| + | (COTDLINEID, | ||
| + | (' | ||
| + | ; | ||
| + | </ | ||
| + | In dem Changelog sieht man, dass der Vorgang " | ||
| + | Verdacht: der Übergang ist nicht transaktionssicher, | ||
| + | ===== Reproduce ===== | ||
| + | |||
| + | 1. Import PO\\ | ||
| + | * Status = NOP | ||
| + | 2. Supplier Accept\\ | ||
| + | * Status = OPEN | ||
| + | 3. Stock Movement\\ | ||
| + | * Status = RECEIVED | ||
| + | 4. Import PO\\ | ||
| + | * Status = CCOR | ||
| + | 5. Breakpoint | ||
| + | 6. Customer Modify (Req.Date ändern)\\ | ||
| + | * Debugger bleibt stehen | ||
| + | 7. Supplier Accept\\ | ||
| + | * Debugger bleibt am Breakpoint stehen, aber wir lassen DIESEN Thread laufen (der " | ||
| + | 8. Customer Modify Thread laufen lassen\\ | ||
| + | * Jetzt ist der Satz kaputt: die PO ist in dem " | ||
| + | |||
| + | ---- | ||
| + | Der Job geht auf Fehler weil er versucht eine neue Line anzulegen, welche die UNIQUE Constraint hat, die bereits existiert (UNIQUE_OTDLINE_PER_POSL= cBaseLineId + cBaseHeaderId). Aber bevor eine neue Line erstellt wird, wird die alte gesucht und gelöscht (s. '' | ||
| + | |||
| + | Bei dem Update der PO wird geprüft, ob sie OTD-relevant ist, und wenn ja, die alte OTD-Line wird zur Löschung markiert (cDeletionFlag=1). Das wird gemacht, um danach, wenn der PO-Status " | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | Burkhard: | ||
| + | Das ist alles was ich aus der Historie entnehmen kann: zuerst geht die PO von NOP auf Received durch eine Goods Receipt Nachricht, dann wieder zurück nach CCOR. Vielleicht hilft das den Fall nachzustellen. | ||
| + | |||
| + | Das kann man reproduzieren, | ||
| + | * eine PO importiert (PO Status wird zu NOP) | ||
| + | * dann eine GoodsReceipt Nachricht mit voller Menge importiert (PO Status wird zu RECEIVED) | ||
| + | * dann eine " | ||
| + | |||
| + | |||
| + | |||
| + | Damit der Finalizer Job auf einen Fehler läuft, müssen 2 Bedingungen erfüllt sein: | ||
| + | * Status der POScheduleLine muss eins von folgenden Werten sein: | ||
| + | * 1000 CANREQ | ||
| + | * 1300 CCOR | ||
| + | * 2000 SAWC | ||
| + | * 2100 SCOR | ||
| + | * OTDLine muss cDeletionFlag auf 0 haben | ||
| + | |||
| + | Misc: | ||
| + | * '' | ||
| + | * ? | ||
| + | ==== Misc ==== | ||
| + | |||
| + | === 1 === | ||
| + | |||
| + | Some helpful SQL statements: | ||
| + | <code sql> | ||
| + | SELECT * FROM TAIRPOHEADER where cPONUM like ' | ||
| + | |||
| + | SELECT * FROM TAIRPOSCHEDULE where CLINEPONUM like ' | ||
| + | |||
| + | SELECT * FROM TAIRCHANGELOG where CSUBOBJECTREFERENCE=5003673 | ||
| + | |||
| + | SELECT * FROM TAIRCHANGELOG where cActionTime > 1527079088222 | ||
| + | --and cLocalOp like ' | ||
| + | |||
| + | -- fetch OTD lines: | ||
| + | SELECT * FROM TOTDLINE order by cOTDLineID; | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | === 2 === | ||
| + | |||
| + | Komischerweise liefert: | ||
| + | |||
| + | <code java> | ||
| + | collabId = POCollabStatus.getUniqueCollabTransactionId(new Config(IPOConstants.CLIENT_ID), | ||
| + | </ | ||
| + | im SMManagerEJB: | ||
| + | |||
| + | |||
| + | === 3 === | ||
| + | |||
| + | Wichtige Stelle: '' | ||
| + | |||
| + | ===== Fix ===== | ||
| + | |||
| + | In '' | ||
| + | ===== Misc ===== | ||
| + | |||
| + | ===== Result ===== | ||
| + | |||
