This commit is contained in:
2024-07-03 12:00:46 +02:00
47 changed files with 727 additions and 0 deletions

View File

@@ -0,0 +1,291 @@
//////////////////////////////////
//
// Geschäftspartner-IDs ändern
//
// geschrieben von calb / 2019.01.23
//
// (c) d.velop AG 2019
//
//////////////////////////////////
//////////////////////////////////
//
// Dieses Skript passt Geschäftspartner-ID von verschiedenen Dokumentarten an
//
vars vers = "0.1 calb d.AG/PS 2019.01.23 Initialversion"
//
//////////////////////////////////
// Konfiguration
// debug = 1 => es werden keine Änderungen am Dokumentbestand durchgeführt
// debug = 0 => es werden Änderungen am Dokumentbestand durchgeführt
vars debug = 1
// db_tabelle => Tabelle, in der die zu ändernden Werte gefunden werden.
vars db_tabelle = "d3_mapping"
// spalte_alter_wert => DB-Spalte, in der der alte Wert gefunden werden kann
vars spalte_alter_wert = "Kunde_alt"
// spalte_neuer_wert => DB-Spalte, in der der neue Wert gefunden werden kann
vars spalte_neuer_wert = "Kunde_neu"
// spalte_status => DB-Spalte, in der der Status des Eintrags festgehalten wird
vars spalte_status = "status"
// liste_dokuarten => Liste von Dokumentarten, in denen das Update durchgeführt werden soll
vars liste_dokuarten = "AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK"
//vars liste_dokuarten = "EVERT,DFOT"
// zu_aenderndes_ddf => DDF, in welchem die Information geändert werden soll
vars zu_aenderndes_ddf = "6"
//////////////////////////////////
call dmglog( 4, "*********************************************" )
call dmglog( 4, "* DMG_gesch_id_wechsel.jpl *" )
call dmglog( 4, "* calb/d.velop AG *" )
call dmglog( 4, "*********************************************" )
call dmglog( 4, "* " ## vers )
call dmglog( 4, "* db_tabelle : " ## db_tabelle )
call dmglog( 4, "* spalte_alter_wert : " ## spalte_alter_wert )
call dmglog( 4, "* spalte_neuer_wert : " ## spalte_neuer_wert )
call dmglog( 4, "* spalte_status : " ## spalte_status )
call dmglog( 4, "* liste_dokuarten : " ## liste_dokuarten )
call dmglog( 4, "* zu_aenderndes_ddf : " ## zu_aenderndes_ddf )
call dmglog( 4, "* DEBUG : " ## debug )
// Los geht's ......
call dmglog( 4, "*********************************************" )
///////////////////////////////////////////////////////////////////////
vars spalte_aw[5000], spalte_nw[5000]
vars doku_id[500000]
vars anzahl, anzahl2, i, j, k, dokuarten, ergebnis, kaputt
kaputt = 0
k = 0
// Zuerst ein Select auf die Tabelle, um festzustellen, was alles getan werden muss.
dbms alias spalte_aw, spalte_nw
dbms sql select :spalte_alter_wert, :spalte_neuer_wert \
from :db_tabelle \
where :spalte_status = '' or :spalte_status is null
anzahl = @dmrowcount
dbms alias
call dmglog( 4, "Es wurden " ## anzahl ## " Treffer gefunden." )
// Aufbereiten der Dokumentartenliste:
if ( @length( liste_dokuarten ) > 0 )
{
ergebnis = api_function( "string_replace", liste_dokuarten, " ", "" )
liste_dokuarten = api_converted_string
ergebnis = api_function( "string_split", liste_dokuarten, "," )
if ( ergebnis > 0 )
{
for j = 1 while j <= ergebnis step 1
{
dokuarten = dokuarten ## "'" ## api_splitted_string[ j ] ## "', "
}
dokuarten = dokuarten( 1, @length(dokuarten) -1 )
}
call dmglog( 5, "Dokuarten " ## dokuarten )
}
call dmglog( 4, "*******************" )
for i = 1 while i <= anzahl step 1
{
call dmglog( 4, i ## ": Alter Wert: " ## spalte_aw[ i ] ## " | Neuer Wert: " ## spalte_nw[ i ] )
call dmglog( 4, i ## ": Suche zu ändernde Dokumente ...")
dbms alias doku_id
dbms sql select doku_id from firmen_spezifisch \
where kue_dokuart in ( :dokuarten ) \
and dok_dat_feld_:zu_aenderndes_ddf = :+spalte_aw[ i ]
anzahl2 = @dmrowcount
dbms alias
call dmglog( 4, i ## ": Es wurden " ## anzahl2 ## " zu ändernde Dokumente gefunden.")
call dmglog( 4, i ## ": ******************************************" )
for j = 1 while j <= anzahl2 step 1
{
k = 1
call dmglog( 4, i ## ": bearbeite DokuID " ## doku_id[ j ] ## " ...")
if ( debug == 0 )
{
ergebnis = api_function( "attribute_update_single", zu_aenderndes_ddf, spalte_nw[ i ], "", doku_id[ j ], "Master" )
}
else
{
call dmglog( 3, i ## " / " ## j ## ": hier findet jetzt keine Dokumentänderung statt. \:-(")
ergebnis = 0
}
if ( ergebnis == 0 )
{
call dmglog( 4, i ## " / " ## j ## ": DokuID " ## doku_id[ j ] ## " erfolgreich aktualisiert." )
}
else
{
call dmglog( 2, i ## " / " ## j ## ": Fehler " ## ergebnis ## " beim Setzen des Attributes (attribute_update_single) bei DokuID " ## doku_id[ j ] )
kaputt = 1
}
call dmglog( 4, i ## ": ==========================================" )
}
//call dmglog( 5, "kaputt: " ## kaputt )
if ( debug == 0 )
{
if ( k == 1 )
{
if ( kaputt == 0 )
{
dbms sql update :db_tabelle set :spalte_status = 'fertig' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
}
else
{
dbms sql update :db_tabelle set :spalte_status = 'Problem' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
}
}
else
{
dbms sql update :db_tabelle set :spalte_status = 'keine Treffer' where :spalte_alter_wert = :+spalte_aw[ i ] and :spalte_neuer_wert = :+spalte_nw[ i ]
}
}
kaputt = 0
k = 0
call dmglog( 4, "*********************************************" )
}
call dmglog( 4, "Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ..." )
call dmglog( 4, "*********************************************" )
proc dmglog( loglevel, message )
{
vars l_logdirect = "BEIDE"
vars l_logdatei = "D\:\\d3\\apps\\log.txt"
vars l_loglevel = 5
vars zeitstempel, loglevel_lang, d3loglevel, logmessage
if ( loglevel == 5 )
{
loglevel_lang = "DEBUG"
// Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log.
d3loglevel = 9
}
if ( loglevel == 4 )
{
loglevel_lang = "INFO."
d3loglevel = 6
}
if ( loglevel == 3 )
{
loglevel_lang = "WARN."
d3loglevel = 6
}
if ( loglevel == 2 )
{
loglevel_lang = "ERROR"
d3loglevel = 0
}
if ( loglevel == 1 )
{
loglevel_lang = "FATAL"
d3loglevel = 0
}
if ( loglevel <= l_loglevel )
{
if ( ( l_logdirect == "DATEI" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe in Datei
zeitstempel = sm_sdtime( "n%4y.%0m.%0d %0h\:%0M\:%0s" )
logmessage = zeitstempel ## " " ## loglevel_lang ## " " ## message
call api_function( "file_add_line", l_logdatei, logmessage, "APPEND" )
}
if ( ( l_logdirect == "D3LOG" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe im d.3 Log
logmessage = loglevel_lang ## " " ## message
call api_log( d3loglevel, logmessage )
}
}
}

View File

@@ -0,0 +1,87 @@
Rahmen
======
Es sollen Geschäftspartner-IDs geändert werden. Bereitgestellt wird eine Tabelle, in der der alte und der neue Wert angegeben sind. Pro Kombination aus altem und neuem Wert kann es mehrere Dokumente geben, die zu ändern sind.
Die zugrundeliegende Tabelle sieht folgendermaßen aus:
CREATE TABLE [dbo].[d3_mapping](
[Kunde_alt] [varchar](50) NULL,
[Kunde_neu] [varchar](50) NULL,
[status] [varchar](20) NULL
)
Log-Augabe
==========
Die Log-Ausgaben wurden gekürzt. Es sollte hier aber klar sein was dabei rauskommt.
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:58 INFO. * DMG_gesch_id_wechsel.jpl *
2019.01.24 12:13:58 INFO. * calb/d.velop AG *
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:58 INFO. * 0.1 calb d.AG/PS 2019.01.23 Initialversion
2019.01.24 12:13:58 INFO. * db_tabelle : d3_mapping
2019.01.24 12:13:58 INFO. * spalte_alter_wert : Kunde_alt
2019.01.24 12:13:58 INFO. * spalte_neuer_wert : Kunde_neu
2019.01.24 12:13:58 INFO. * spalte_status : status
2019.01.24 12:13:58 INFO. * liste_dokuarten : AGSP,DMY,DKOR,DRECH,DVER,DKRE,DAGES,DGS,AAUF,DAB,DVPM,DFUEK,DESDO,DARTE,DLIEF,DVORK,DREKL,DGEAK
2019.01.24 12:13:58 INFO. * zu_aenderndes_ddf : 6
2019.01.24 12:13:58 INFO. * DEBUG : 1
2019.01.24 12:13:58 INFO. *********************************************
2019.01.24 12:13:59 INFO. Es wurden 27 Treffer gefunden.
2019.01.24 12:13:59 DEBUG Dokuarten 'AGSP','DMY','DKOR','DRECH','DVER','DKRE','DAGES','DGS','AAUF','DAB','DVPM','DFUEK','DESDO','DARTE','DLIEF','DVORK','DREKL','DGEAK'
2019.01.24 12:13:59 INFO. *******************
2019.01.24 12:13:59 INFO. 1: Alter Wert: 101800 | Neuer Wert: 37474
2019.01.24 12:13:59 INFO. 1: Suche zu ändernde Dokumente ...
2019.01.24 12:13:59 INFO. 1: Es wurden 2723 zu ändernde Dokumente gefunden.
2019.01.24 12:13:59 INFO. 1: ******************************************
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939873 ...
2019.01.24 12:13:59 WARN. 1 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 1: DokuID P003939873 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939874 ...
2019.01.24 12:13:59 WARN. 1 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 2: DokuID P003939874 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939875 ...
2019.01.24 12:13:59 WARN. 1 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 3: DokuID P003939875 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
2019.01.24 12:13:59 INFO. 1: bearbeite DokuID P003939876 ...
2019.01.24 12:13:59 WARN. 1 / 4: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:13:59 INFO. 1 / 4: DokuID P003939876 erfolgreich aktualisiert.
2019.01.24 12:13:59 INFO. 1: ==========================================
[...]
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 2: Alter Wert: 101801 | Neuer Wert: 37475
2019.01.24 12:15:11 INFO. 2: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 2: Es wurden 0 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 2: ******************************************
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 3: Alter Wert: 101802 | Neuer Wert: 37476
2019.01.24 12:15:11 INFO. 3: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 3: Es wurden 0 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 3: ******************************************
2019.01.24 12:15:11 INFO. *********************************************
2019.01.24 12:15:11 INFO. 4: Alter Wert: 101803 | Neuer Wert: 37477
2019.01.24 12:15:11 INFO. 4: Suche zu ändernde Dokumente ...
2019.01.24 12:15:11 INFO. 4: Es wurden 3 zu ändernde Dokumente gefunden.
2019.01.24 12:15:11 INFO. 4: ******************************************
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800366 ...
2019.01.24 12:15:11 WARN. 4 / 1: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 1: DokuID P003800366 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800369 ...
2019.01.24 12:15:11 WARN. 4 / 2: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 2: DokuID P003800369 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
2019.01.24 12:15:11 INFO. 4: bearbeite DokuID P003800370 ...
2019.01.24 12:15:11 WARN. 4 / 3: hier findet jetzt keine Dokumentänderung statt. :-(
2019.01.24 12:15:11 INFO. 4 / 3: DokuID P003800370 erfolgreich aktualisiert.
2019.01.24 12:15:11 INFO. 4: ==========================================
[...]
2019.01.24 12:15:43 INFO. *********************************************
2019.01.24 12:15:43 INFO. Bearbeitung abgeschlossen, DMG_gesch_id_wechsel.jpl beendet sich ...
2019.01.24 12:15:43 INFO. *********************************************

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -0,0 +1,84 @@
vars dokuarten = "DMATE"
vars ergebnis = api_function( "string_get_position", dokuarten, dokuart_kurz, 1, 1 )
if ( ergebnis > 0 )
{
vars i, ar_temp = " ( ", ma_temp = " ( ", ar_hilf = 0, ma_hilf = 0, sql_where = "", sql_or = "", anzahl
vars artikel[ CUR_60ER_FIELD_NR ], material[ CUR_60ER_FIELD_NR ]
for i = 1 while i <= CUR_60ER_FIELD_NR step 1
{
if ( dok_dat_feld_61[ i ] != "" )
{
ar_temp = ar_temp ## " MAT_NUMMER = '" ## dok_dat_feld_61[ i ] ## "' OR "
ar_hilf = 1
}
else
{
break
}
}
for i = 1 while i <= CUR_60ER_FIELD_NR step 1
{
if ( dok_dat_feld_60[ i ] != "" )
{
ma_temp = ma_temp ## " MA_NUMMER = '" ## dok_dat_feld_60[ i ] ## "' OR "
ma_hilf = 1
}
else
{
break
}
}
if ( ( ar_hilf != 0 ) || ( ma_hilf != 0 ) )
{
sql_where = " where "
}
if ( ar_hilf == 1 )
{
ar_temp = ar_temp( 1, @length( ar_temp ) - 3 ) ## " ) "
sql_where = sql_where ## ar_temp
sql_or = " or "
}
if ( ma_hilf == 1 )
{
ma_temp = ma_temp( 1, @length( ma_temp ) - 3 ) ## " ) "
sql_where = sql_where ## sql_or ## ma_temp
}
if ( @length( sql_where ) > 0 )
{
//call xlog( 1, "where " ## sql_where )
dbms alias material, artikel
dbms sql select MA_NUMMER, MAT_NUMMER from NEXUS_ERP_MATERIAL :sql_where
anzahl = @dmrowcount
dbms alias
if ( anzahl > 0 )
{
for i = 1 while i <= anzahl step 1
{
if ( material[ i ] != "" )
{
//call xlog( 1, ":i material " ## material[ i ] ## " artikel " ## artikel[ i ] )
dok_dat_feld_60[ i ] = material[ i ]
dok_dat_feld_61[ i ] = artikel[ i ]
}
else
{
break
}
}
}
}
}

265
Funke/FUN_loesch_akten.jpl Normal file
View File

@@ -0,0 +1,265 @@
//////////////////////////////////
//
// leere Akten löschen
//
// geschrieben von calb / 2020.07.01
//
// (c) d.velop AG 2020
//
//////////////////////////////////
//////////////////////////////////
//
// Dieses Skript löscht leere Akten. Dazu ist eine Aktenart konfigurierbar. Das Skript iteriert dann über die Akten dieser Aktenart
// und löscht die Akten, die kene Kind-Elemente haben, d.h. leer sind.
//
vars vers = "0.1 calb d.AG/PS 2020.07.01 Initialversion"
//
// create table d3_loesch_akten
// (
// doku_id varchar(50),
// status varchar(20)
// );
//
// create unique index idx_doku_idx on d3_komplett (doku_id);
//////////////////////////////////
// Konfiguration
// debug = 1 => es werden keine Änderungen an der DB durchgeführt
// debug = 0 => es werden Änderungen an der DB durchgeführt
vars debug = 0
// Aktenart der zu löschenden Akten
vars aktenart_kuerzel = "ADEB"
// Anzahl der Dokumente, die in einem Skriptdurchlauf bearbeitet werden
vars anzahl_doks_pro_durchlauf = 4
//////////////////////////////////
vars ergebnis, dokart_lang
call bkklog( 4, "*********************************************" )
call bkklog( 4, "* FUN_loesch_akten.jpl *" )
call bkklog( 4, "* calb/d.velop AG 25.06.2020 *" )
call bkklog( 4, "*********************************************" )
call bkklog( 4, "* " ## vers )
call bkklog( 4, "* DEBUG : " ## debug )
ergebnis = api_function( "document_type_get_long", aktenart_kuerzel )
if ( ergebnis == 0 )
{
dokart_lang = api_single_info
}
else
{
call bkklog( 2, "* Aktenart konnte nicht korrekt bestimmt werden: " ## ergebnis )
call bkklog( 2, "* FUN_loesch_akten.jpl beendet sich ..." )
return ergebnis
}
call bkklog( 4, "* Aktenart : " ## dokart_lang ## " (" ## aktenart_kuerzel ## ")")
call bkklog( 4, "* anzahl_doks_pro_durchlauf : " ## anzahl_doks_pro_durchlauf )
// Los geht's ......
call bkklog( 4, "*********************************************" )
///////////////////////////////////////////////////////////////////////
vars anzahl, ergebnis, i
vars d3db = "d3" ## d3fc_server_kuerzel ## ".INFORMATION_SCHEMA.TABLES"
anzahl = pruefe_ob_tabelle_existiert( "d3_loesch_akten" )
if ( anzahl == 0 )
{
// Tabelle existiert nicht, wird angelegt
call bkklog( 1, "DB-Tabelle d3_loesch_akten nicht gefunden. Lege Tabelle an ...")
dbms sql create table d3_loesch_akten ( doku_id varchar(50), status varchar(20) )
dbms sql create unique index idx_doku_idx on d3_loesch_akten (doku_id)
anzahl = pruefe_ob_tabelle_existiert( "d3_loesch_akten" )
if ( anzahl == 0 )
{
call bkklog( 2, "Es gab ein Problem beim Anlegen der Tabelle. Bitte legen Sie die Tabelle manuell an und starten das Skript erneut.")
}
else
{
call bkklog( 1, "DB-Tabelle d3_loesch_akten wurde angelegt.")
}
}
else
{
call bkklog( 4, "DB-Tabelle d3_loesch_akten gefunden.")
}
call bkklog( 4, "*********************************************" )
vars doku_id[ anzahl_doks_pro_durchlauf ]
vars i
dbms alias doku_id
dbms sql select doku_id from firmen_spezifisch where kue_dokuart = :+aktenart_kuerzel and doku_id not in (select doku_id from d3_loesch_akten )
anzahl = @dmrowcount
dbms alias
for i = 1 while i <= anzahl step 1
{
// Prüfen, ob die Akte Kind-Elemente hat
// falls ja: nächste
// falls nein: Löschen
ergebnis = api_function( "link_get_children", doku_id[ i ], "Master" )
if ( ergebnis == 0 )
{
// Das Ermitteln der Kind-Elemente hat funktioniert.
// Jetzt wird geprüft, ob die Anzahl 0 (null) oder > 0 ist.
if ( api_single_info == 0 )
{
// Keine Kinder gefunden. Akte wird gelöscht:
if ( debug == 0 )
{
ergebnis = api_function( "document_delete", "leere Akten nach Kd.-Nr.-Änderung", 1, 1, doku_id[ i ], "Master" )
if ( ergebnis == 0 )
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " wurde gelöscht." )
}
else
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " konnte nicht gelöscht werden: RC " ## ergebnis )
}
}
else
{
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " wurde nicht gelöscht wegen eingeschaltetem DEBUG-Modus." )
}
}
else
{
// Die Akte hat Kind-Elemente, darf nicht gelöscht werden. Die Akte wird in die Tabelle eingetragen, damit sie beim nächsten
// Durchlauf nicht mehr berücksichtigt wird.
dbms sql insert into d3_loesch_akten ( doku_id, status ) values ( :+doku_id[ i ], '0' )
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## " hat Kind-Elemente und wurde zurückgelegt.")
}
}
else
{
// Es gab ein Problem beim Ermitteln der Kind-Elemente. Die Akte wird mit Fehlerstatus zurückgelegt.
dbms sql insert into d3_loesch_akten ( doku_id, status ) values ( :+doku_id[ i ], :+ergebnis )
call bkklog( 4, "Nr. " ## i ## ": Akte " ## doku_id[ i ] ## ": Fehler beim Ermitteln der Kind-Elemente; Akte wurde mit RC " ## ergebnis ## " zurückgelegt.")
}
}
string proc pruefe_ob_tabelle_existiert( tab_name )
{
vars anzahl
dbms alias anzahl
dbms sql select count(*) anzahl from :d3db where table_name = :+tab_name;
dbms alias
return anzahl
}
proc bkklog( loglevel, message )
{
vars l_logdirect = "BEIDE"
vars l_logdatei = "D\:\\d3\\apps\\log.txt"
vars l_loglevel = 5
vars zeitstempel, loglevel_lang, d3loglevel, logmessage
if ( loglevel == 5 )
{
loglevel_lang = "DEBUG"
// Da die d.3 Server i.d.R. nicht im Debug-Modus laufen, erscheinen DEBUG-Meldungen nicht im Log.
d3loglevel = 9
}
if ( loglevel == 4 )
{
loglevel_lang = "INFO."
d3loglevel = 6
}
if ( loglevel == 3 )
{
loglevel_lang = "WARN."
d3loglevel = 6
}
if ( loglevel == 2 )
{
loglevel_lang = "ERROR"
d3loglevel = 0
}
if ( loglevel == 1 )
{
loglevel_lang = "FATAL"
d3loglevel = 0
}
if ( loglevel <= l_loglevel )
{
if ( ( l_logdirect == "DATEI" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe in Datei
zeitstempel = sm_sdtime( "n%4y.%0m.%0d %0h\:%0M\:%0s" )
logmessage = zeitstempel ## " " ## loglevel_lang ## " " ## message
call api_function( "file_add_line", l_logdatei, logmessage, "APPEND" )
}
if ( ( l_logdirect == "D3LOG" ) || ( l_logdirect == "BEIDE" ) )
{
// Ausgabe im d.3 Log
logmessage = loglevel_lang ## " " ## message
call api_log( d3loglevel, logmessage )
}
}
}