norwim
18th April 2006, 14:09
Hallo zusammen,

ich habe (mit awk, wie gewohnt) in der Vergangenheit einige Teilloesungen gebastelt, die sich dann zu zwei recht maechtigen Tools gemausert haben, als ich sie miteinander verknuepfte.
Erster Schritt: Sammel mal alle Domainen, die es so gibt.
Schritt Nummer 2: Erzeuge mal eine Liste der ganzen Feldnamen.
Schritt Nummer 3: Erzeuge mal eine detaillierte Beschreibung aller Tabellen mit Feldnamen und Feldeigenschaften.
Erstfassung Tool1: Erzeuge doch bitte mal fuer ausgewaehlte Tabellen ein sql-script, mit dem man ein Abbild dieser Tabelle z.B. in einer mysql-datenbank anlegen kann.
Tool1 Endfassung: Konvertiere doch bitte dann auch den sequentiellen Dump derart, dass z.B. die Datumsfelder alle die Form YYYY-MM-DD haben, die enum-Felder die richtigen Werte haben (JA statt 1, NEIN statt 2 z.B.) und alle Gleitkommavariablen auf die richtige Anzahl Nachkommastellen gerundet werden.
Mithin kann man mit diesem Tool automatisch Baan Tabellen ueber eine Datei mit Tabellennamen komplett fertig aufbereiten zum Import in eine DB seiner Wahl.

Zu Tool2: Wir wollten aus einem Fremdsystem Fertigmeldungen von Produktionsauftragsschritten direkt an Baan melden und dort halt alles so buchen, wie es das entsprechende Programm in Baan auch getan haette.
Leider verfuegen wir aber weder ueber die erforderlichen Quellen der Baanprogramme, noch ueber die eisernen Nerven, diese dann auch mit all ihren (ihrerseits wieder includes aufrufenden) includes zu analysieren.
An dieser Stelle fiel mir ein, dass man ja mit dem Setzen der bshell-Umgebungsvariable DBSLOG die bshell zwingen kann, alle ihre Dateioperationen in einer Datei dbs.log zu protokollieren.
Doch, oh Schreck ..... diese Datei ist nun zum einen nicht unbedingt leicht lesbar, zum anderen dafuer aber auch hmm.... gross!
Mit den Listen der Dateinamen und Feldnamen aber, die ich nun (s.o.) zur Verfuegung hatte, war es eigentlich keine grosse Hexerei mehr, diese dbs.log nun so aufzubereiten, dass eine knappe, menschenlesbare email erzeugt werden konnte.
Zusammen mit 2 Steuerdateien, in denen ich auswaehlen kann, welche Tabellen ich NICHT, bzw. welche ich ausgewertet haben moechte, gelang es uns in erstaunlich kurzer Zeit, diverse Mysterien (was tut Baan den nun genau, wenn ich z.B. einen Wareneingang buche) aufzuklaeren, um diese Schreiboperationen mit eigenen Programmen nachzubilden zu koennen.
Lange Rede, kurzer Sinn: nachfolgend findet Ihr ein Beispiel solch einer email:

Start bshell: Mon Jan 23 08:34:08 CET 2006
=============================================================
Kommentar: Bestellung mit rabatt(2)
-------------------------------------------------------------
Bitte beachten Sie, dass bei der Auswertung folgende(r) Filter aktiv war:
EXCLUDE: tt* tf* (as noted in tab.deny)
-------------------------------------------------------------
<15554> 2006-01-23[08:34:20]: Logging started mode 010
<15555> 2006-01-23[08:34:30]: Logging started mode 010
update tcmcs047416 index1:1|2 ffno from: 11626 to: 11627 <---> Erste_freie_Nummern : Erste_freie_Nummer
Insert in tdpur040416, index1:211626 <---> Bestellungen
Insert in tdpur050416, index1:211626|732334|30887 <---> Bestellhistorie
Insert in tdpur041416, index1:211626|10 <---> Bestellpositionen
Insert in tdpur045416, index1:211626|10|0 <---> Wareneingänge
update tiitm001416 index1:64223 ordr from: 840.00000000 to: 1680.00000000 <---> Artikel : In_Produktion/Bestellt
update tdinv001416 index1:003|64223| ordr from: 840.00000000 to: 1680.00000000 <---> Artikeldaten_pro_Lager : In_Produktion/Bestellt
Insert in tdinv150416, index1:2|211626|1|10|0 <---> Geplante_Bestandsänderungen_pro_Artikel
update tccom021416 index1:97613|416 buor from: -8405305.78999999 to: -8405122.96999999 <---> Kreditorensalden_pro_Firma : Saldo_unbezahlter_Bestell.
Insert in tdpur051416, index1:211626|10|732334|30951|1|0 <---> Bestellpositionshistorie
=============================================================
Ende bshell: Mon Jan 23 08:36:25 CET 2006
=============================================================

Sollte Interesse bestehen, so bin ich gerne bereit, die entsprechenden awk-scripte zu verteilen.

Wuensche frohe Ostern gehabt zu haben

Norbert