[gelöst] GET Befehl

30. Juni 2011 14:43

Hallo,

ich bräuchte für einen Report (Verkaufsrechnung) den Vorauszahlungs %. Dieser steht in der Sales Invoice Header (112) nicht drin, aberdafür in der Tabelle Sales Header (36) Nun würde ich gerne das Feld 130 (vorauszahlung %) dort herausholen.

da ich mich mit dem GET Befehl nicht gut auskenne würde ich euch mal fragen wie ich das hinbekommen die Verbindung dieser zwei Tabelle ( 112 das Feld Order No. <==> 36 das Feld No.) zu verbinden um dann das Feld Vorausszahlung % (130) auszulesen.

Code:
IF "Sales Header".Get("Sales Invoice Header"."Order No.") THEN
   BWVZProzent := "Sales Header"."Prepayment %";


Doch hier fehlt ja irgendwo der Key so das der Befehl weiss das er "sales invoice Header"."order no." und "Sales Header"."no." vergleichen soll.?

Kann mir jemand helfen?
Zuletzt geändert von sthuening am 9. November 2011 13:28, insgesamt 1-mal geändert.

Re: GET Befehl

30. Juni 2011 14:44

Das klappt so nicht, da der Auftrag in Tabelle 36 gelöscht wird, sobald er vollständig fakturiert ist.
get funktioniert wenn man den Primärschlüssel nutzt und dann dort alle felder listet. (Bei 36 wäre das )
Code:
Rec36.get(Rec36."Document Type"::Order, 'meineAuftragsnr')

Re: GET Befehl

30. Juni 2011 14:57

Hallo JanGD,

Und wie spreche ich nun das Vorauszahlungsfeld % an? Wie heisst das denn, denn das möchte ich auf dem Bericht andrucken?

Oder habe ich das falsch verstanden?

der HIntergrund ist der. Der Kunde will eine Vorauszahlungsrechnung haben mit einen Text " 50% Vorausszahlungsrechnung von Ihrem Auftrag xxx" Die 50% würde ich gerne aus dem Feld Sales Header.Prepayment% nehmen, da der Auftrag ja noch nicht abgeschlossen ist.

Re: GET Befehl

30. Juni 2011 15:03

Hallo,

habe nun folgendes gemacht:

Code:
IF ("Sales Invoice Header"."Prepayment Order No." <> '') THEN
   BWAuftragsnr :=  "Sales Invoice Header"."Prepayment Order No."
   Rec36.get(Rec36."Document Type"::Order, "Sales Invoice Header"."No.")
   BWVZProzent := "Sales Header"."Prepayment %";
   ELSE
   BWAuftragsnr :=  "Sales Invoice Header"."Order No.";


Doch da gibt es eine Fehlermeldung. Muss ich das Rec36 irgendwo unter C/Al Globals eintragen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: GET Befehl

30. Juni 2011 15:33

Damit holst Du den Auftrag mit der gleichen Nummer wie die Rechnung, nicht den Auftrag mit der Auftragsnummer aus der Rechnung.

Rec36 ist SalesHeader und muss als C/AL Global eingetragen werden.

zB SalesHeader / Record / Sales Header

Re: GET Befehl

30. Juni 2011 19:33

Lies mal hier: GET verwenden

Re: GET Befehl

1. Juli 2011 07:26

Hallo,

ich habe das nun wie folgt gemacht und es funktioniert:
Code:
IF ("Sales Invoice Header"."Prepayment Order No." <> '')
THEN
   BEGIN
      BWAuftragsnr := "Sales Invoice Header"."Prepayment Order No.";
      IF ("Sales Header".GET("Sales Header"."Document Type"::Order, "Sales Invoice Header"."Prepayment Order No."))
      THEN
         BEGIN
           BWVZProzent  :=  "Sales Header"."Prepayment %";
         END
      ELSE
         BEGIN
             // kein Datensatz!
            BWVZProzent  :=  -1;
         END
   END
ELSE
  BEGIN
     BWAuftragsnr := "Sales Invoice Header"."Order No.";
  END


@JanGD: wenn der Auftrag nun nicht mehr in der Tabelle 36 ist kann ich den Druck nicht mehr machen, da er keinen Datensatz in der SalesHEader findet. Wenn ich das auf Rec36 mache und rREc36 in C/al Globals mit Sales Header eintrage, dann findet er den Datensatz doch auch nicht, oder? D.h. für mich diese Vorauszahlungsrechnung kann ich nicht drucken wenn der Auftrag erledigt ist, oder?

@Natalie: danke für den Link.

Re: GET Befehl

4. Juli 2011 07:59

sthuening hat geschrieben:Hallo,

ich habe das nun wie folgt gemacht und es funktioniert:
Code:
IF ("Sales Invoice Header"."Prepayment Order No." <> '')
THEN
   BEGIN
      BWAuftragsnr := "Sales Invoice Header"."Prepayment Order No.";
      IF ("Sales Header".GET("Sales Header"."Document Type"::Order, "Sales Invoice Header"."Prepayment Order No."))
      THEN
         BEGIN
           BWVZProzent  :=  "Sales Header"."Prepayment %";
         END
      ELSE
         BEGIN
             // kein Datensatz!
            BWVZProzent  :=  -1;
         END
   END
ELSE
  BEGIN
     BWAuftragsnr := "Sales Invoice Header"."Order No.";
  END


@JanGD: wenn der Auftrag nun nicht mehr in der Tabelle 36 ist kann ich den Druck nicht mehr machen, da er keinen Datensatz in der SalesHEader findet. Wenn ich das auf Rec36 mache und rREc36 in C/al Globals mit Sales Header eintrage, dann findet er den Datensatz doch auch nicht, oder? D.h. für mich diese Vorauszahlungsrechnung kann ich nicht drucken wenn der Auftrag erledigt ist, oder?

@Natalie: danke für den Link.


Du müsstest dann im Sales Header Archive, Tabelle 5107 ist das glaube ich, den Auftrag suchen. Das geht nur wenn ihr die Archivierung aktiviert habt.