[Gelöst] Rechnungen importieren

11. September 2009 14:21

Hallo liebe Leute,

ich möchte gern Rechnungen aus einem anderen System nach Navision importieren, wahrscheinlich muss ich das über nen Dataport machen, nun habe ich schonmal versucht einen Export zu basteln, damit ich sehe welche Daten ich benötige. Ich habe nun festgestellt, das jede Rechnung Grundsätzlich in einen Rechnungskopf und in die dazu gehörigen Rechnungszeilen geteilt wird. Beides liegt in seperaten Tabellen. Welche Daten werden denn unbedingt benötigt und welche werden durch Trigger automatisch hinzugefügt.
Kann mir jemand nen paar Tipps dazu geben, irgendwie finde ich im Netz nix brauchbares zum Rechnungsimport.

Gruß
René
Zuletzt geändert von kockiren am 19. Oktober 2009 11:21, insgesamt 1-mal geändert.

Re: Rechnungen importieren

18. September 2009 14:39

Hallo nochmal,

ich habe mich soweit durchgeschlagen und habe noch ein Problem. Ich habe den Export der Rechnungen gemacht um zu sehen welche Daten ich benötige. Das Problem ist jedoch das in diesen Export nur gebuchte Rechnungen auftauchen das würde ja nun bedeuten das beim Import diese auch als gebuchte Rechnungen importiert würden, ich möchte sie jedoch noch verändern und dann über eine Stapelbuchung alle mit einmal buchen.

In welche Tabellen muss ich denn importieren damit die Rechnungen als ungebucht importiert werden?

Gruß
René

Re: Rechnungen importieren

18. September 2009 15:13

Um die Belege neu zu Buchen, bei Verkaufsrechnungen: Tabelle Nr. 36 und 37. (Verkaufskopf und Zeile), das Feld "Belegart" = Rechnung.
Wichtig:
Um Daten in Postentabellen von Navision zu bekommen, sollte muss grundsätzlich der Weg über die vorgegebenen Buchungsfunktionen (Buchungscodeunit, Buchblätter usw.) gegangen werden.

Welche Felder benötigt werden hängt u.a. davon ab, was gebucht werden soll, u.a. (die Liste ist nicht vollständig!):
Verkaufskopf:
-Belegart
- Nr. (=Belegnummer) (kann auch von Navision vergeben werden!)
- Verkauf an Debitor Nr.
- Evtl. Abweichende Rechnungsadresse
- Auftragsdatum
- Buchungsdatum


Verkaufszeile:
- Belegart
- Belegnr.
- Zeilennr.
- Art (z.B. Artikel oder Sachkonto)
- Nr. (z.B. Artikelnummer)
- Buchungsgruppen
- Menge
- ggf. Preis

Um das Feld "Verkauf an Deb.-Nr." füllen zu können, muss der entsprechende Debitor mit seinen Buchungsgruppen angelegt werden.
Falls Sachkontenbuchungen hinzukommen, müssen diese angelegt werden, falls nicht vorhanden.

Um Artikel einfügen zu können, müssen die Artikel angelegt und in den Bestand gebucht werden.

Re: Rechnungen importieren

18. September 2009 15:49

Hallo

mikka hat geschrieben:- Nr. (=Belegnummer) (kann auch von Navision vergeben werden!)

Aber bitte nur von NAV vergeben lassen, wenn es sich NICHT (!) um bereits extern versendete Rechnungen handelt, die importiert werden sollen. Dann muss die echte Rechnungsnummer auch in NAV zu finden sein, sonst könnte es Ärger mit Prüfern geben.

Zudem muss die bereits versendete Rechnung dann auch genauso in NAV zu finden sein.
kockiren hat geschrieben:ich möchte sie jedoch noch verändern
Deswegen irritiert mich dieser Satz ziemlich....

VG,
Anke

Re: Rechnungen importieren

18. September 2009 16:08

Anke S. hat geschrieben:Hallo

mikka hat geschrieben:- Nr. (=Belegnummer) (kann auch von Navision vergeben werden!)

Aber bitte nur von NAV vergeben lassen, wenn es sich NICHT (!) um bereits extern versendete Rechnungen handelt, die importiert werden sollen. Dann muss die echte Rechnungsnummer auch in NAV zu finden sein, sonst könnte es Ärger mit Prüfern geben.


So habe ich es gemeint, jedoch nicht so schön ausformuliert.

Kleine Zwischenfrage:
Ist es zulässig aus einem Fremdsystem die Belege zu übernehmen (dann wären die doch Theoretisch doppelt?!).
Oder ist es erst dann zulässig, wenn in dem "alt-System" ein Jahresabschluß gemacht wird und im "Neu-System" die Salden und Bestände per Inventur übernommen wurden?

Re: Rechnungen importieren

18. September 2009 16:16

mikka hat geschrieben: Ist es zulässig aus einem Fremdsystem die Belege zu übernehmen

Sicher kannst Du die übernehmen. Das wird ja fast immer dort gemacht, wo im Fremdsystem die Warenwirtschaft/Produktion abgebildet ist und "durchfakturiert"wird, aber in NAV die komplette Buchhaltung sitzt. Dort laufen dann die Rechnungen aus dem Fremdsystem rein und der Rest der Buchhaltung wird nur in NAV gebucht.

mikka hat geschrieben: (dann wären die doch Theoretisch doppelt?!).

Ja, aber das geht ja dann auch nicht anders. Es ist aber zu beachten, dass nur Eins der beiden Systeme das Führende sein kann. Und die exportierten Daten müssen mit den importierten Daten nachweisbar übereinstimmen.

Re: Rechnungen importieren

23. September 2009 11:28

Hallo und danke für eure Hilfe.

Also ich habe nun einen entsprechenden Dataport angelegt und kann damit auch Posten importieren und Rechnungen erstellen. Genauso wie ich das wollte :-) Nun habe ich nur ein Problem wenn ich nen Debitor einfüge dann gebe ich im Rechnungskopf die Kundennummer des Debitoren an und wenn ich die Rechnung dann öffne steht im Rechnungskopf lediglich die Debitor ID drin, muss ich die anderen Daten selbst einfügen oder kann man das über den Dataport irgendwie steuern das er sich die Daten aus den entsprechnenden Tabellen zieht und so die Felder vervollständigt. Bei den Artikeln ist es das selbe da stehen nur die Werte drin die ich eingebe und es wird nicht vervollständigt.

Kann mir bitte jemand nen Tipp geben.

VG
René

Re: Rechnungen importieren

23. September 2009 11:57

mikka hat geschrieben:...
Um das Feld "Verkauf an Deb.-Nr." füllen zu können, muss der entsprechende Debitor mit seinen Buchungsgruppen angelegt werden.
Falls Sachkontenbuchungen hinzukommen, müssen diese angelegt werden, falls nicht vorhanden.

Um Artikel einfügen zu können, müssen die Artikel angelegt und in den Bestand gebucht werden.

Vermutlich im Eifer des "Gefechts" untergegangen? macht aber nichts.


Ungefähr folgendes:
(auf dem Trigger an OnAfterImportRecord)
Die Tabellen Debitor und Artikel als Variable deklarieren
Code:
IF NOT Customer.GET(NummerDesDebitoren) THEN BEGIN
  Customer.INIT;
  // Nun alle Felder füllen Nummer, Name, Adresse, Geschäftsbuchungsgruppe, Debitroenbuchungsgruppe, Zahlungsbedin.-Code
  // Die Buchungsgruppen können per hand angelegt werden, wenn es nicht zu viele sind!
  Customer.INSERT;
END;


Das gleiche in "grün" für die Artikel.

:greenarrow: Der Trigger OnAfterImportRecord wird ausgeführt, wenn der Artikel Importiert wurde, der Artikel jedoch noch nicht in der Tabelle gespeichert wurde.

Re: Rechnungen importieren

23. September 2009 15:15

Das wird ja langsam mit meinem Dataport :-)

So also ich bin nun dabei den Trigger zu schreiben. Ich habe dazu die Variable Customer angelegt als Typ Record und die Tabelle Customer ausgewählt.

Aber ich verstehe die IF NOT Abfrage nicht ganz. Also folgendes hab ich geschrieben:
Code:
IF NOT Customer.GET("Sell-to Customer No.") THEN BEGIN
  Customer.INIT;
  // Nun alle Felder füllen Nummer, Name, Adresse, Geschäftsbuchungsgruppe, Debitroenbuchungsgruppe, Zahlungsbedin.-Code
  // Die Buchungsgruppen können per hand angelegt werden, wenn es nicht zu viele sind!
 
  Customer.INSERT;
END;


Der Fragt also ab ob in dem Record Customer ein Customer gibt der mit der Customer nummer des Dataport matched, oder? Und wenn das nicht der Fall ist beginnt er den code abzuarbeiten. Hm irgendwie komm ich damit noch nicht so recht zurecht. Wie kann ich denn auf die aktuell importiereten Record zugreifen.

so nach dem Motto:
Code:
currentRecord.name := customer.name;
oder hab ich das Prinzip völlig falsch verstanden?

Gruß
René

Re: Rechnungen importieren

23. September 2009 16:12

kockiren hat geschrieben:Das wird ja langsam mit meinem Dataport :-)

Dann machts doch bestimmt Spass :-)

kockiren hat geschrieben:Aber ich verstehe die IF NOT Abfrage nicht ganz. Also folgendes hab ich geschrieben:
Code:
IF NOT Customer.GET("Sell-to Customer No.") THEN BEGIN
  Customer.INIT;
  // Nun alle Felder füllen Nummer, Name, Adresse, Geschäftsbuchungsgruppe, Debitroenbuchungsgruppe, Zahlungsbedin.-Code
  // Die Buchungsgruppen können per hand angelegt werden, wenn es nicht zu viele sind!
 
  Customer.INSERT;
END;


Das IF NOT GET("Sell-to Customer No.") soll prüfen, gibt es diesen Debitoren schon. Wenn nicht, wird dieser angelegt, mit den Daten die aus dem Dataport kommen. (Und ja, du hast es Verstanden :-) )
Wie drauf zugreifen? Wie heissen den die Dataportfields?
Wenn z.B. dein DataItem "SalesHeader" heißt, benutzt du die Daten mit SalesHeader."Sell-to Customer No.".


kockieren hat geschrieben:so nach dem Motto:
Code:
currentRecord.name := customer.name;
oder hab ich das Prinzip völlig falsch verstanden?

Naja dicht dran :wink:
Eigentlich nur die Variablen vertauscht
Wenn du SalesHeader.Name aus dem aktuellen Record verarbeiten möchtest, kannst z.B. folgendes damit anstellen:
(Ich hole mal ein wenig weiter aus)
Code:
// Als Nachricht ausgeben
MESSAGE(SalesHeader.Name);
// Oder
MESSAGE('Der Debitorname ist %1',SalesHeader.Name);

// Einer Variablen zuweisen (auf die datentypen achten!)
DebitorTxt := SalesHeader.Name;

// Einem anderen Feld in einem Record zuweisen -->Das willst du
customer.name := SalesHeader.Name;


Also würde grob geschrieben (es fehlen weitere Felder), der Code so aussehen:
Code:
IF NOT Customer.GET(SalesHeader."Sell-to Customer No.") THEN BEGIN
  Customer.INIT;
  Customer."No." := SalesHeader."Sell-to Customer No.".;
  Customer.Name := SalesHeader.Name;
  // Bei Feldern, die geprüft werden müssen (Buchungsgruppen), folgendes als Zuweisung machen
  Customer.VALIDATE(Customer."Post Code",SalesHeader."Post Code");
  // usw.
  Customer.INSERT;
END;

Re: Rechnungen importieren

24. September 2009 15:01

Hallo Mikka,

ja du hast recht, es beginnt mir richtig Spaß zu machen :-) Also ich bin ja schonmal froh das ich es richtig verstanden habe. Ich erkläre nochmal kurz was ich gerade versuche:

Ich versuche per CSV folgende Zeile zu importieren und möchte dann aus der Customer die Fehlenden Werte in die Sales Header schreiben:
Code:
Sales header
Doc.Type;No.;Sell-to customer no;Bill-to customer no;order date;posting date;
"Rechnung","106","2","2","23.09.09","23.09.09"


So wenn ich das mit dem nackigen Dataport mache bekomm ich die Rechnung rein nun versuch ich mir die Daten zu ziehen bekomm ich nen Fehler. Ich habe jetzt folgendes probiert:
Code:
SalesHeader.INIT;
SalesHeader."Bill-to Name" := Customer.Name;
SalesHeader.INSERT;

SalesHeader und Customer sind jeweils vom Typ Record und sind auf die jeweilige Tabelle gelinkt. Als Fehler wird mir beim Import
Code:
Die Verkaufskopf existiert bereits. Identifizierte Felder und Werte: Belegart='Angebot',Nr.="

Ich geh mal davon aus das es daran liegt das ich SalesHeader initialisiere obwohl da ja schon der Dataport tut, aber wie kann ich dann sonst die Felder der Tabelle nutzen?

VG
René

Re: Rechnungen importieren

24. September 2009 15:38

Ich konnte den Fehler nicht nachstellen, höchsten das ein bereits vorhandener da war mit der gleichen Rechnungsnummer.
Das INIT und INSERT lass weg, das macht Navision selbst.
Ungefähr so könne es klappen (ungetestet).
Code:

IF Customer.GET(SalesHeader."Sell-to Customer No.") THEN BEGIN
  // Wenn der Debitor gefunden wurde das Feld Validieren
  SalesHeader.VALIDATE(SalesHeader."Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
END ELSE BEGIN
  // Wenn nicht gefunden, dann müsste der Debitor erst angelegt werden
  // ginge hier nur, wenn in der Datei alle Info für den Debitoren stehen würden, dann so ungefähr
  // Customer.INIT;
  // Felder zuweisen
  // Customer."No." := SalesHeader."Sell-to Customer No." // usw. bis alle drin sind
  // Customer.INSERT;

  // Jetzt erst das validate
  SalesHeader.VALIDATE(SalesHeader."Sell-to Customer No.",Customer."No.");
END;

Re: Rechnungen importieren

24. September 2009 16:04

Hallo,

so wie ich das she fehlt dir
A: Die Angabe das es sich um eine Rechnung handelt (Document Type)
B: Die Rechnungsnummer (wird erzeugt wenn der onInsert trigger durchlaufen wird - daher Insert(TRUE)

Versuch doch mal

Code:
SalesHeader."Document Type" := Salesheader."Document Type"::INVOICE

SalesHeader.INSERT(TRUE);



Jörg

Re: Rechnungen importieren

6. Oktober 2009 15:47

Hallo,

so ich habe nun wieder etwas probiert und komm immer noch nicht so richtig klar damit:
Code:
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
  // Wenn der Debitor gefunden wurde das Feld Validieren
  SalesHeader.VALIDATE("Document Type");
  SalesHeader.VALIDATE("No.");
  SalesHeader.VALIDATE("Sell-to Customer No.");
  SalesHeader.VALIDATE("Bill-to Name", Customer.Name);
  SalesHeader.VALIDATE("Bill-to Customer No.");
  SalesHeader.VALIDATE("Order Date"); 
  SalesHeader.VALIDATE("Posting Date");
END ELSE BEGIN


Das habe ich nun, also ich teste ob der Customer den ich importieren will bereits existiert und wenn ja dann Validiere ich die Pflichtfelder? Nun möchte ich ja das als Bill-to Name das Feld Name aus dem Record Customer übertragen wird.

Ich bekomme nun aber die Meldung das ich die
Code:
Geschäftsbuchungsgruppe des Debitoren Nr. ="
angeben muss. In der CSV übernehm ich als Rechnungskopf den Debitor Nr. 2 der hat alles ausgefüllt auf seiner Karte und ich kann manuell auch Buchungen mit diesem Debitoren durchführen. Ich komm nicht recht weiter. Die Geschäftsbuchungsgruppe steht doch aber in der Customer Tabelle und nicht in der SalesHeader???

VG
René

Re: Rechnungen importieren

6. Oktober 2009 21:28

Hallo Rene,

das VALIDATE ist nicht ganz vollständig.
Der Syntax ist ungefähr (siehe auch in der Nav-Hilfe):
DeineTabelle.VALIDATE(DeineTabelle.Feld,DeineVariable)
(Das Validate führt den Validate-Trigger der Tabelle aus. Auf diesem kann weiterer Code stehen, der z.B. die Gültigkeit der Eingabe prüft, oder auch weitere Felder füllt)
z.B. Ein Validate des Feldes "SalesHeader."Sell-to Customer No."" füllt aus den Debitorenstammdaten fast alle Felder im Verkaufskopf (je nach dem wie der Angelegt wurde). Daher wäre es z.B. unnötig SalesHeader."Sell-to Customer Name" noch zuzuweisen (ausser der Name soll abweichen)
Aus diesem Grund, habe ich unten im Codebespiel eine weitere Prüfung eingefügt, das nur wenn die Rechnungsadresse abweicht, das Feld Rechnungsadresse Validiert wird.

Code:
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
  // Wenn der Debitor gefunden wurde das Feld Validieren
  SalesHeader."Document Type" := SalesHeader."Document Type"::Invoice;
  SalesHeader.VALIDATE(SalesHeader."No.",DeineVariableRechnungsnr);
  SalesHeader.VALIDATE(SalesHeader."Sell-to Customer No.",DeineVariableCustNo);
  // SalesHeader.VALIDATE("Bill-to Name", Customer.Name);  // Unnötig, zieht Nav aus den Stammdaten
  // Wenn der Rechnungsempfänger von der Verkaufsadr. abweicht
  IF ("Sell-to Customer No." <> "Bill-to Customer No." THEN
    // Prüfung ob der Debitor existiert
    IF Customer.GET(("Bill-to Customer No.) THEN
      SalesHeader.VALIDATE("Bill-to Customer No.")
    ELSE
      ERROR('Der Debitor "Rechnung an Deb." %1 existiert nicht!',("Bill-to Customer No.);
  SalesHeader.VALIDATE(SalesHeader."Order Date",DeineVariableDatum1); 
  SalesHeader.VALIDATE(SalesHeader."Posting Date",DeineVariableDatum2);
END ELSE BEGIN
  // Entweder hier Error, oder den Debitor anlegen
END;


**Edit by Mikka**
Ach so, die Fehlermeldung besagt ja auch Debitor=''.
Nav hat versucht den Debitor '' (also nichts) zu Validieren, das kann nicht klappen!
-->Daher diese etwas irritierende Fehlermeldung.

Re: Rechnungen importieren

6. Oktober 2009 21:31

Nur um evtl. Verwirrungen vorzubeugen:
DeineTabelle.VALIDATE(DeineTabelle.Feld,DeineVariable);


"Feld" bezieht sich automatisch auf die Tabelle links vom VALIDATE, sodass es - standardkonform - so geschrieben wird:
Code:
DeineTabelle.VALIDATE(Feld, NeuerWert);

Die erste Variante funktioniert natürlich auch.

Re: Rechnungen importieren

7. Oktober 2009 10:06

Vielen Dank für eure Unterstützung,

hm das hab ich nun glaub ich verstanden aber ich komm noch nicht dahinter wie ich auf den Record in SalesHeader mit dem aktuellen Datensatz der CSV verbinde? Ihr habt geschrieben Sysntax: Feld,meineVariable das ist genau der Punkt an dem es bei mir hängt. Also ich dachte bisher das die CSV Zeilenweise abgearbeitet wird und eine Zeile wird eingelesen und dann als aktueller Record in der Datenbanktabelle behandelt. Das würde für mich bedeuten das das erste Argument der VALIDATE Funktion ja schon meine Variable ist.

Also nochmal zusammenfassend: Ich möchte eine CSV über einen Dataport einfügen in der nur die Debitorennummer aufgeführt wird (+ posting date usw, siehe weiter oben in diesem Post) und der Name des Customer durch den Trigger ausgelöst in den Rechnungskopf eingetragen werden soll.

Das müsste doch für diesen Zweck ausreichen, das ist nur das minimalbeispiel aber sollte doch gehen, tut es aber nicht :-)
Code:
  SalesHeader."Document Type" := SalesHeader."Document Type"::Invoice;
  SalesHeader.VALIDATE("Sell-to Customer No.","Sell-to Customer No.");

Wenn ich den Trigger weglasse dann wird mir der Rechnungskopf erzeugt aber halt ohne den Namen und den anderen Customer Record Feldern.

Habt ihr noch nen Tipp für mich?

VG
René

Re: Rechnungen importieren

7. Oktober 2009 10:18

Bin doch gerade nen Schritt weiter gekommen, ich bin jetzt davon ausgegangen das er ne Leerzeile in der CSV als Customer No ='' interpretiert, hab also
Code:
 IF "No." <> ''

eingefügt und die Meldung mit dem Customer kommt nicht mehr, hm interessant welche kleinen Details mir hier die Freizeit nehmen :-) Aber es beginnt immer mehr Spaß zu machen, gerade wenn man es langsam beginnt zu begreifen :-)

Also nun habe ich ein neues Problem, ich bekomme die Fehlermeldung:
Code:
eine datumskalkulation kann nicht auf einem undefinierten datum basieren

Datum: 0D
Formel:


Das sagt mir jetzt gar nix, kann mir jemand nen Tipp geben?

VG
René

Re: Rechnungen importieren

7. Oktober 2009 11:01

kockiren hat geschrieben:Also nun habe ich ein neues Problem, ich bekomme die Fehlermeldung:
Code:
eine datumskalkulation kann nicht auf einem undefinierten datum basieren

Datum: 0D
Formel:


Das sagt mir jetzt gar nix, kann mir jemand nen Tipp geben?
René


ja. in deiner csv datei steht wohl an einer stelle, an der ein datum stehen sollte, nichts, so dass dann beim validate von z.b. dem posting date er "nichts" (bei einer datumsvariable gekennzeichnet mit 0d) validieren will, was zur besagten fehlermeldung führt.

daniel
Zuletzt geändert von dr am 7. Oktober 2009 11:02, insgesamt 1-mal geändert.

Re: Rechnungen importieren

7. Oktober 2009 11:01

kockiren hat geschrieben:..., hm interessant welche kleinen Details mir hier die Freizeit nehmen :-) Aber es beginnt immer mehr Spaß zu machen, gerade wenn man es langsam beginnt zu begreifen :-)

Also nun habe ich ein neues Problem, ich bekomme die Fehlermeldung:
Code:
eine datumskalkulation kann nicht auf einem undefinierten datum basieren

Datum: 0D
Formel:


Das sagt mir jetzt gar nix, kann mir jemand nen Tipp geben?

VG
René



Humor hast du :-D

Fehler beim Datum, mach es genauso wie mit der No., also:
(Meindatum ist das Datum das du Importierst, ist es leer wird das Tagesdatum genommen)
Code:
IF MeinDatum <> 0D THEN
  SalesHeader.VALIDATE(SalesHeader."Order Date",DeineVariableDatum1)
ELSE
  SalesHeader.VALIDATE(SalesHeader."Order Date",TODAY);
 


Wie in jeder anderen Programmiersprache, muß "Haarklein" jeder Fehler abgefangen bzw. Variable geprüft werden.
Die Fehlermeldung erscheint, weil das System z.B. den Befehl CALCDATE (auf irgendeinem Trigger in der Tabelle 36) nicht mit einem leeren Datum (0D)ausführen kann.

Evtl. erscheint der Fehler, weil das Datum nach dem Debitor einfügen eingefügt wird. -->Also das Datum erst einfügen, dann den Debitoren.

Re: Rechnungen importieren

7. Oktober 2009 14:11

Nochmal vielen Dank für eure Hilfe,

also das Problem war das erst das Datum angegeben werden muss und dann kam der Fehler auch nicht mehr, jetzt macht der Dataport auch den Import ohne einen Fehler zu schreiben. Er macht es nur nicht richtig *aarghh*

Folgenden Code habe ich nun:
Code:
IF "No." <>'' THEN BEGIN
  SalesHeader.VALIDATE("Order Date",TODAY);
  SalesHeader.VALIDATE("Posting Date", TODAY);
  SalesHeader.VALIDATE("Sell-to Customer No.","Sell-to Customer No.");
END;

Es wird aber das Datum aus dem CSV gesetzt und nicht das welches ich im onAfterImportRecord() gesetzt habe (TODAY) Hm echt nen Ding. Kann mir jemand nen Tipp geben was ich nun noch falsch mache. Das CSV hat folgenden Inhalt:
Code:
"Rechnung","120","2","2","15.09.09","15.09.09"

"Rechnung","120","10000","Artikel","12345","WEITERVERK","100","0,01"
"Rechnung","120","20000","Artikel","12345","WEITERVERK","14","0,05"


Und das VALIDATE stößt auch keinen Trigger an, zumindest keinen der mir die Daten aus der Customer Tabelle vervollständigt.

Gruß
René

Re: Rechnungen importieren

7. Oktober 2009 15:32

Ich bin im Moment nicht richtig bei der "Sache", soviel fällt mir im Moment auf:
Das Validate
Code:
SalesHeader.VALIDATE("Sell-to Customer No.","Sell-to Customer No.");

Müsste irgendwie so aussehen, oder?
Code:
SalesHeader.VALIDATE(SalesHeader."Sell-to Customer No.",DeineImportVariableCSV);


Wenn das Datum aus der CSV gesetzt wird, hast du dieses in den DataportFields direkt auf die Tabelle verknüpft, oder einer Variablen zugeordnet?

Re: Rechnungen importieren

7. Oktober 2009 15:38

Also das ist ja genau mein Problem, ich weiß nicht wie ich die Variable definiere die meine CSV Werte enthält, ich dachte das die CSV Werte in den aktuel geöffneten Record schreiben, aber das scheint ja nicht der Fall zu sein :-(
mikka hat geschrieben:Müsste irgendwie so aussehen, oder?
Code:
SalesHeader.VALIDATE(SalesHeader."Sell-to Customer No.",DeineImportVariableCSV);


Wenn das Datum aus der CSV gesetzt wird, hast du dieses in den DataportFields direkt auf die Tabelle verknüpft, oder einer Variablen zugeordnet?


Kann ich denn unter den Globals ne Variable vom Typ DataportField setzen? Ich hab da nix gefunden. Vielleicht irgendwie in der Art von Type:Record Subtyp Dataportfield oder so ähnlich aber da konnte ich nix zu finden. Ich denke das ich das direkt mit der Tabelle verknüpft habe aber ich weiß ja nicht wie ich das einer Variable übergeben kann ohne das es in die Tabelle geschrieben wird.

Gruß
René

Re: Rechnungen importieren

7. Oktober 2009 16:35

Wenn du im DataPort-Designer auf den DataItem stehst, gehe über -->Ansicht-->DataportFields
Im "Field Designer" kannst du entweder die Felder des DataItems (bei dir z.B. SalesHeader) auswählen oder auch eine Variable angeben.
Diese Variable kann dann in auf den Triggern für die weitere verarbeitung genutzt werden.

Hilft dir das weiter?

Re: Rechnungen importieren

8. Oktober 2009 10:38

Also ich bin auf mein DataItem: SalesHeader gegangen und hab mir den Field Designer geöffnet da stehen in der Spalter SourceExpr: meine Felder aus der Tabelle Sales Header. Ich versteh jetzt nicht ganz wo ich da nun meine Variable anlegen kann. Ich habe unter den Globals eine Variable CSVRecord angelegt, in diese möchte ich nun die Daten aus dem Dataport einlesen, welchen Typ muss ich der CSVRecord unter den C/AL Globals zuweisen? Und kann ich dann einfach in die SourceExpr CSVRecord."No." usw. schreiben?

Gruß
René