Neu Automatisierter Import via FTP

Thommi2015

Aktives Mitglied
7. September 2015
62
1
Hallo,

versuche den Bestand eines lieferanten automatisch in der Wawi zu aktualisieren, bin bisher der Anleitung gefolgt:

https://guide.jtl-software.de/jtl-wawi/jtl-ameise/daten-via-ftp-importieren/

Leider schließt beim Start der bat Datei das cmd Fenster sofort wieder und di eAmeise wird nicht gestartet. Ich habe daher den Befehl "Pause" eingefügt damit das nicht passiert.
Jetzt wird mir im cmd fenster folgendes angezeigt:

Überträgt Dateien von und zu einem Computer auf dem ein FTP-Serverdienst ausgeführt wird
(auch Daemon genannt). FTP kann interaktiv verwendet werden.

FTP [-v] [-d] [-i] [-n] [-g] [-s:Dateiname] [-a] [-A] [-x:Sendepuffer] [-r:Empfangpuffer] [-b:Asynchronpuffer] [-w:Fenstergröße] [Host]

-v Unterdrückt das Anzeigen von Remoteserverantworten.
-n Unterdrückt automatische Anmeldung bei erster Verbindung.
-i Schaltet die interaktive Aufforderung während
der Übertragung von mehreren Dateien aus.
-d Aktiviert Debugging.
-g Deaktiviert Dateinamenglobbing (siehe Befehl GLOB).
-s:Dateiname Legt eine Textdatei fest, die FTP-Befehle enthält. Befehle
werden automatisch nach dem Start von FTP ausgeführt.
-a Verwendet beliebige lokale Schnittstelle bei der
Herstellung der Datenverbindung.
-A Als anonym anmelden.
-x:Sendepuffer Überschreibt die SO_SNDBUF-Standardgröße (8192).
-r:Empfangpuffer Überschreibt die SO_RCVBUF-Standardgröße (8192).
-b:Asynchronpuffer Überschreibt den Standard Asynchronpuffer (3)
-w:Fenstergröße Überschreibt die Standardübertragungsgröße (65535).
Host Legt den Hostnamen bzw. die IP-Adresse des Remotehosts
fest, mit dem die Verbindung hergestellt wird.

Hinweise:
Die Befehle - mget und mput erfordern y/n/q für yes/no/quit.
- Verwenden Sie STRG+C, um Befehle abzubrechen.
Der Befehl "C:\Program" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Drücken Sie eine beliebige Taste . . .


Kann mir da jemand weiterhelfen?
 

fibergirl

Sehr aktives Mitglied
14. April 2016
329
48
Hamburg
Der Aufruf der Ameise:

C:\Program Files (x86)\JTL-Software\ JTL-wawi-ameise.exe...

gehört in doppelte Anführungszeichen:

"C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe"...

weil ein Leerzeichen drin ist.
 
  • Gefällt mir
Reaktionen: McAvity

McAvity

Sehr aktives Mitglied
7. September 2016
327
78
@Thommi2015

Hinsichtlich der Ausgabe von FTP würde ich mal prüfen, ob die Datei mit den FTP-Befehlen überhaupt vorhanden ist.
Zudem darf zwischen dem -s: und dem Dateinamen kein Leerzeichen sein.

Zudem den Hinweis von @fibergirl beachten.

MfG

McAvity
 

Thommi2015

Aktives Mitglied
7. September 2015
62
1
Hallo,

leider klappt es noch immer nicht, habe mich Heute wieder damit beschäftigt. Der Tip von Fibergirl war hilfreich, leider habe ich aber jetzt folgende Meldung:

Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

JTL-Ameise 0.984 (c) 2020 JTL-Software-GmbH
Start von JTL-Ameise ohne Parameterangabe öffnet die GUI Version

Pflichtparameter
-s, --server=SERVER Datenbankverbindung wird zu SERVER hergestellt
-d, --database=DATABASE Datenbank DATABASE wird angesprochen
Datenbanknamen anderer Mandanten sind
im Menü JTL-Wawi -> Mandanten zu finden.
-u, --dbuser=USER Datenbankverbindung wird mit USER erstellt
-p, --dbpass=PASSWORD Passwort des Datenbankbenutzers
-t, --templateid=ID Import-/Exportvorlage mit dieser ID wird genutzt
-i, --inputfile=FILE Importdatei. Pflicht, wenn importiert wird
-o, --outputfile=FILE Exportdatei. Pflicht, wenn exportiert wird

Optionale Angaben, falls nicht angegeben gilt der Wert mit (Std) dahinter
--mode=MODE 'test' oder 'production' = Produktivmodus (Std)
--loglevel=NUM 1 = ausführlich (Std)
3 = Kompakt
5 = Nur Fehler/Warnungen
-- log=FILE Logdatei für Hauptbericht
--log_errors=FILE Logdatei für Fehler
--log_warnings=FILE Logdatei für Warnungen
--log_imported=FILE Logdatei für importierte Datensätze
--log_updated=FILE Logdatei für aktualisierte Datensätze
--log_other=FILE Logdatei für Sonstiges
--csv_errors=FILE Datei, die fehlerhafte Datensätze enthalten soll
--csv_warnings=FILE Datei, die Datensätze mit Warnungen enthalten soll
--nostdout Keine Konsolenausgabe
--no_workflows Es werden keine Workflows ausgeführt
--writeLogAtEnd Für eine höhere Importgeschwindigkeit werden die Logdateien erst am Ende des Imports geschrieben.
Daher ist bei einem Absturz / Abbruch des Imports nicht gewährleistet, dass Logdateien erstellt werden.

In Dateinamen FILE können folgende Variablen verwendet werden:
%y Jahr, %m Monat, %d Tag, %H Stunde, %i Min, %s Sek
%db Datenbank, %id VorlagenID
Bitte beachten, dass % in Batch Dateien zu %% gewandelt werden müssen.

Beispiel 1
JTL-wawi-ameise.exe -s (local)\JTLWAWI -d eazybusiness -u sa -p sa04jT14 -t IMP3 -i import.csv

Beispiel 2
JTL-wawi-ameise.exe --server=(local)\JTLWAWI --database=eazybusiness --dbuser=sa --dbpass=sa04jT14 --templateid=IMP5 --inputfile=import.csv --log="bericht_%db_%y-%m-%d-%H%i%s.txt"

Weitere Dokumentation siehe http://guide.jtl-software.de/index.php?title=Hauptseite


Ungültige Parameter
Drücken Sie eine beliebige Taste . . .




Hat wer eine Idee dazu?
 

Thommi2015

Aktives Mitglied
7. September 2015
62
1
Ich habe es jetzt soweit hinbekommen dass ich zumindest den Lagerbestand in den Ordner bekomme, leider wir aber die Ameise nicht gestartet.

Hier die Datein:

open xxxxxxxxx
xxxxxxx
xxxxxxxxxx
bin
lcd C:\BestandsabgleichTD
cd /FTP_out/lagerbestand/sls
get Lagerbestand_25-05-2020.csv
bye

echo off
cd\
C:
cd BestandsabgleichTD
ftp -s:Download_LB_TD.ftp
"C:\Program Files (x86)\JTL-Software\ JTL-wawi-ameise.exe" –server=xxxxxxxxxxxx –database=mandant_9 –dbuser=sa–dbpass=xxxxxxxxx –templateid=IMP34 –inputfile=Lagerbestand_25-05-2020.csv
Pause
exit

Warum klappt das einfach nicht?? bin schon am verzweifeln......

Ist es auch möglich immer den aktuellsten Bestand nur zu laden?
Ich habe folgende Dateien auf dem ftp:

Lagerbestand_25-05-2020.csv
Lagerbestand_24-05-2020.csv
Lagerbestand_23-05-2020.csv

also pro Tag wird ein Lagerbestand ausgelesen, jetzt soll natürlich nur der aktuellste Bestand aktualisiert werden.
gibt es da eine Möglichkeit?

Wäre dankbar wenn mir jemand weiterhelfen könnte.
 
  • Gefällt mir
Reaktionen: tecaustria

Shopworker.de

Offizieller Servicepartner
SPBanner
4. Januar 2011
2.967
233
Arnsberg, Sauerland
Hast du die Ameise mal im Dos-Fenster aufgerufen und nicht per Batch? Da kann man meiner Meinung nach besser testen.

Mir fallen auf die schnelle 2 Formalien auf: keine doppelten Bindestriche, zwischen sa und - fehlt ein Leerzeichen

Vielleicht hängt es da ja schon ...
 
Zuletzt bearbeitet:

SebiW

Sehr aktives Mitglied
2. September 2015
1.158
265
Als Tipp, ich verwende für automatisierte Übertragungen WINSCP, kostenloses Tool, das man sehr schön via Kommandozeile steuern kann und das eine Menge hilfreiche Zusatzfeatures mitbringt.

Mögliche Probleme die ich noch sehe:
1. Passwort mit Leerzeichen/Sonderzeichen? Dann PW am besten in ""
2. Sind das bei Dir – oder - ?

Und zwecks aktuellstem Bestand, mach Dir ein Unterverzeichnis "archiv" und kopiere die Datei nach Import dort rein und benenne sie dabei gleich um, am besten mit Date Time.
So kannst Du jeweils nur die aktuellste csv mit immer gleichbleibendem Namen im Importverzeichnis haben.
 

Thommi2015

Aktives Mitglied
7. September 2015
62
1
Ja es läuft!! ich glaube das Leerzeichen zwischen sa und - war das Problem

jetzt gehts nur noch darum das immer die Datei mit dem letzten Datum verwendet wird.
@SebiW das verstehe ich nicht ? die Datei liegt ja am ftp vom Lieferanten. "nach Import" da hat er ja schon die Datei verwendet die in der Batch Datei angegben ist? Es muss die Möglichkeit geben dass er immer die aktuelleste Datei importiert.
 

SebiW

Sehr aktives Mitglied
2. September 2015
1.158
265
Ich würde das so machen:
Abruf der jeweils letzten Datei via ftp (WinSCP kann da diverse Späße wie "hole nur die neueste Datei", siehe zb: https://winscp.net/eng/docs/faq_script_modified_files ) in ein lokales Verzeichnis, dabei umbennen auf stets gleichen Dateinamen.
Import via Ameise, keine Anpassung des Dateinamens notwendig
Kopieren der Datei in einen Backup Folder mit Timestamp.

Alternativ wenn die Datei öfter als täglich rein soll: Gesynctes Verzeichnis lokal+ftp, Verzeichnis überwachen, wenn neue Datei kopieren und umbennen in Ameisen Import Verzeichnis und Ameise automatisch anwerfen.
 

Thommi2015

Aktives Mitglied
7. September 2015
62
1
@SebiW

habe mir Wins scp geladen und bin gerade drann, derzeit schaut es mich aber so ann dass ich nur eine Datei definieren kann welche dann immer nach der neuesten Datei geladen wir.
Man kann also nicht sagen, schau in dem Ordner und nehme immer die neueste Datei für den Dl?
 

Thommi2015

Aktives Mitglied
7. September 2015
62
1
hmm, jetzt gehts nicht mehr weiter, gibt es nicht die Möglichkeit einer Variable für das Datum in der Datei ?

open xxxxxxxxx
xxxxxxx
xxxxxxxxxx
bin
lcd C:\BestandsabgleichTD
cd /FTP_out/lagerbestand/sls
get Lagerbestand_25-05-2020.csv
bye

echo off
cd\
C:
cd BestandsabgleichTD
ftp -s:Download_LB_TD.ftp
"C:\Program Files (x86)\JTL-Software\ JTL-wawi- ameise.exe" –server=xxxxxxxxxxxx –database=mandant_9 –dbuser=sa–dbpass=xxxxxxxxx –templateid=IMP34 –inputfile=Lagerbestand_25-05-2020.csv
Pause
exit

Hat jemand eine Idee?