{ME10-Tabelle speichern Trennzeichen ist Semikolon} {Punkt wird durch Komma ersetzt} DEFINE le_csv_ltab_to_csv LOCAL tab LOCAL datei LOCAL T {TabellentitelzÌhler} LOCAL T1 {Anzahl Tabellentitel} LOCAL B {TabellenspaltenzÌhler} LOCAL B1 {Anzahl Tabellenspalten} LOCAL K {TabellenzeilenzÌhler} LOCAL K1 {Anzahl Tabellenzeilen} LOCAL wert LOCAL zeile_out LOCAL Z {ZÌhler} LOCAL test LOCAL wert_1 PARAMETER tab PARAMETER datei LET T1 (LTAB_TITLES tab) LET B1 (LTAB_COLUMNS tab) LET K1 (LTAB_ROWS tab) OPEN_OUTFILE 1 DEL_OLD datei {Titel schreiben} IF (T1 > 0) {Titel vorhanden} LET T 1 LET zeile_out '' LOOP LET wert (TRIM (STR (READ_LTAB tab TITLE T))) IF (wert <> '') LET zeile_out ((zeile_out) + (wert)) END_IF EXIT_IF (T = T1) LET zeile_out ((zeile_out) + ';') LET T (T + 1) END_LOOP WRITE_FILE 1 zeile_out LET B1 T1 END_IF {Daten schreiben} IF ((B1 > 0) AND (K1 > 0)) LET K 1 LOOP LET B 1 LET zeile_out '' LOOP LET wert (TRIM (STR (READ_LTAB tab K B))) IF (wert <> '') {Punkte durch Komma ersetzen} LET Z 1 LET wert_1 '' LOOP LET test (SUBSTR wert Z 1) IF ((POS '.' test) <> 0) {Punkt} LET wert_1 (wert_1 + ',') ELSE LET wert_1 (wert_1 + test) END_IF EXIT_IF (Z = (LEN wert)) LET Z (Z + 1) END_LOOP LET zeile_out ((zeile_out) + (wert_1)) END_IF EXIT_IF (B = B1) LET zeile_out ((zeile_out) + ';') LET B (B + 1) END_LOOP WRITE_FILE 1 zeile_out DISPLAY_NO_WAIT ('bearbeite Zeile ' + (STR K)) EXIT_IF (K = K1) LET K (K + 1) END_LOOP END_IF CLOSE_FILE 1 END_DEFINE {copyright by lw_lemo} {CSV-Datei nach ME10-Tabelle Trennzeichen ist Semikolon oder | Pipe} {Komma wird durch Punkt ersetzt} DEFINE le_csv_csv_to_ltab { Aufruf mit 4 Parameter 1. Tabellenname, Tabelle wird neu erzeugt 2. Dateiname *.csv 3. Tabellentitel aus der 1. Zeile generieren 2 abfragen 1 ja 0 nein 4. Trennzeichen ';' oder '|' } LOCAL tab LOCAL datei LOCAL aktion LOCAL ezt {1 = erste Zeile als Titelzeile} LOCAL T {TabellentitelzÌhler} LOCAL B {TabellenspaltenzÌhler} LOCAL K {TabellenzeilenzÌhler} LOCAL wert LOCAL zeile_in LOCAL trennz {Trennzeichen ';' oder '|'} LOCAL apos {Position Suchzeichen} LOCAL Z {ZÌhler} LOCAL test LOCAL wert_1 PARAMETER tab PARAMETER datei PARAMETER aktion PARAMETER trennz LET ezt 0 IF (aktion = 2) READ 'Soll die erste Zeile fÏr Tabellentitel verwendet werden?' DEFAULT 'j' wert IF ((wert = 'j') OR (wert = 'J')) LET ezt 1 ELSE LET ezt 0 END_IF ELSE LET ezt aktion END_IF CREATE_LTAB tab TRAP_ERROR OPEN_INFILE 1 datei IF (NOT CHECK_ERROR) {Titel lesen} IF (ezt = 1) {Titel vorhanden} LET T 1 READ_FILE 1 zeile_in LOOP EXIT_IF (zeile_in = 'END-OF-FILE') LET wert '' LET apos (POS zeile_in trennz) {Semikolon oder Pipe} IF (apos <> 0) LET wert (SUBSTR zeile_in 1 (apos - 1)) {Komma durch Punkt ersetzen} IF ((POS wert ',') <> 0) {Komma} LET Z 1 LET wert_1 '' LOOP LET test (SUBSTR wert Z 1) IF ((POS test ',') <> 0) {Komma} LET wert_1 (wert_1 + '.') ELSE LET wert_1 (wert_1 + test) END_IF EXIT_IF (Z = (LEN wert)) LET Z (Z + 1) END_LOOP LET wert wert_1 END_IF IF (wert = '') LET wert (STR T) END_IF WRITE_LTAB tab TITLE T (TRIM wert) LET zeile_in (SUBSTR zeile_in (apos + 1) (LEN zeile_in)) ELSE WRITE_LTAB tab TITLE T zeile_in END_IF EXIT_IF (apos = 0) LET T (T + 1) END_LOOP END_IF {Daten lesen} LET K 1 {ZeilenzÌhler} LOOP READ_FILE 1 zeile_in DISPLAY_NO_WAIT ('bearbeite Zeile ' + (STR K)) EXIT_IF (zeile_in = 'END-OF-FILE') LET zeile_in (STR zeile_in) LET B 1 {SpaltenzÌhler} LOOP LET wert '' LET apos (POS zeile_in trennz) {Semikolon oder Pipe} IF (apos <> 0) LET wert (SUBSTR zeile_in 1 (apos - 1)) {Komma durch Punkt ersetzen} IF ((POS wert ',') <> 0) {Komma} LET Z 1 LET wert_1 '' LOOP LET test (SUBSTR wert Z 1) IF ((POS test ',') <> 0) {Komma} LET wert_1 (wert_1 + '.') ELSE LET wert_1 (wert_1 + test) END_IF EXIT_IF (Z = (LEN wert)) LET Z (Z + 1) END_LOOP LET wert wert_1 END_IF WRITE_LTAB tab K B (TRIM wert) LET zeile_in (SUBSTR zeile_in (apos + 1) (LEN zeile_in)) ELSE WRITE_LTAB tab K B zeile_in END_IF EXIT_IF (apos = 0) LET B (B + 1) END_LOOP LET K (K + 1) END_LOOP ELSE DISPLAY 'Kann Datei nicht Îffnen' END_IF CLOSE_FILE 1 END_DEFINE {copyright by lw_lemo}