In ILE ist das doch kein Problem:
Die Protokoll-Tabelle ist identisch zur Basistabelle (Namen und Definitionen) nebst Zusatzinfos wie Timestamp usw.
Ggf. kannst du Workfelder der Tabelle, die nichts mit den reinen Stammdaten zu tun haben rauslassen.
Dann kann man leichter auch tatsächliche Änderungen vergleichen und unnötige Protokolleinträge verhindern.

Im Trigger bekommst du ja die beiden Puffer, die du mit qualified based pointer definierst.
Für die Zieltabelle hats du ebenso die DS qualified.
Nun machst du einen "eval-corr ZielDS = FromDS", kopierst also alle Felder, ergänzt den Rest und schwups bist du fertig.

Mit SQL-Trigger ist es leider schwieriger, da du da keine Strukturen hast und jedes Feld einzeln im Insert angeben musst.