Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 09:41

Hallo,

Beim Artikel soll in Zukunft die Beschreibung aus der Tabelle 5401(Item Variant) generiert werden.(über einer Codeunit)
in diesem fall muss die Beschreibung2 gefüllt werden falls die länge der Beschreibung1 nicht ausreichend ist.(Beschreibung1 = 50Zeichen)

Beispiel einer Variante:

Code: Beschreibung
1 TEST1
2 TEST2
3 TEST3

Lösung:

Beschreibung1 = TEST1/TEST2
Beschreibung2= TEST3

Vielen Dank für eure Hilfe und Vorschläge!
LG

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 10:52

Hi yopstar25,

bei was genau brauchst du hier Hilfe?
Wenn es um die Länge geht lege ich dir mal die Funktionen STRLEN, MAXSTRLEN, COPYSTR ans Herz.

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 11:40

Hallo und danke für die schnelle Antwort,

Die Tabelle Item-Variant kann manchmal mehrere Zeilen enthalten (> 5 zeilen), trotzdem spielt es keine Rolle da das Feld Beschreibung 1 nur 50 Zeichen aufnimmt und Beschreibung2 nur 30, der Rest soll dann abschnitten werden.


Beschreibung1 := Variant.Beschreibungzeile1+Variant.Beschreibungzeile2+ Variant.Beschreibungzeile3;

und wenn die 50 zeichen erreicht wurden soll:

Beschreibung2:= Variant.Beschreibungzeile4;

wie mache ich das?


viele Grüsse

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 11:55

Frei nach dem Motto "Hilfe zur Selbsthilfe":
Du durchläufst die Item-Variant in einer Schleife (FINDSET) und füllst die Beschreibung dann mit Hilfe der oben genannten Funktionen.
Hilfreich dürfte es dabei sein die eine Textvariable anzulegen in die du schreiben kannst während der Schleife, das ist allerdings nicht zwingend notwendig.

Aber mal ein Beispiel:
Text := Beschreibung aktuelle Zeile;
Nächster Durchlauf:
Wenn Text + Beschreibung aktuelle Zeile < 50
Text := Text + Beschreibung aktuelle Zeile
Ansonsten
Beschreibung1 := Text;
Text := Beschreibung aktuelle Zeile;
.....

Ich hoffe es ist klar was ich meine :)

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 15:21

Hallo nochmal,

so..ich habe es versucht und komme leider nicht weiter.. :oops: :oops:
Ich habe eine Codeunit(Item) erstellt wo drin steht:

Code:
Funktion: ErzeugeDescription

Item.RESET;
TEXT := '';
IF Item.GET(ItemVariant."No.") THEN BEGIN
  IF Itemvariant.FINDSET THEN BEGIN
  REPEAT
    TEXT := COPYSTR(TEXT + ItemVariant.Description,1,50);
    Item.Description = Text;
    Item.MODIFY;
    UNTIL ItemVariant.NEXT = 0;
  END;
END;


==> dann aus einem Button auf der Artikelkarte steht im OnPUSH-Trigger folgendes:
item.ErzeugeDescription;

ich weiss dass diese Übergabe verkehrt ist, aber was mache ich die ganze Zeit falsch..
ist FINDSET an dieser stelle richtig?
Vielen dank nochmal für ihre Unterstützung...
LG
Zuletzt geändert von Timo Lässer am 26. Juni 2009 15:40, insgesamt 1-mal geändert.
Grund: C/AL-Code der Lesbarkeit halber in [code]-Tags gebettet.

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 15:35

Wenn du die Funktion mit Item aufrufst ginge es so:
(Dazu noch ItemRec als Parameter der Funktion)

CreateDescription(Rec) als Aufruf in der Artikelkarte.

In der Codeunit dann:

Code:
CLEAR(Text);
ItemVariant.SETRANGE("Item No.",ItemRec."No.");
IF ItemVariant.FINDSET(FALSE,FALSE) THEN BEGIN
...
END;


Der Teil in der Schleife bei dir stimmt noch nicht ganz, aber ich denke du wirst dann im Testlauf schon feststellen woran es liegt.
Zwei allgemeine Punkte noch:
- CLEAR() leert eine Variable
- Nenne doch deine Funktionen komplett in einer Sprache ;)

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 16:00

Hallo,

vielen dank für den Hinweis..es hat geklappt :-D

mit welchem Befehl kann ich jetzt den rest (> 50 zeichen) in die Beschreibung2 speichern?

geht es so?

TEXT1 := COPYSTR(TEXT + ItemVariant.Description,1,50);
Beschreibung1:= Text1;
TEXT2 := COPYSTR(TEXT + ItemVariant.Description,51);
Beschreibung2 :=TEXT2;



LG

Re: Artikelbeschreibung aus Artikelvarianten

26. Juni 2009 16:11

Ja ..es klappt ..
vielen dank und schönes Wochenende

Re: Artikelbeschreibung aus Artikelvarianten

30. Juni 2009 08:11

Kein Problem.
Kannst du dann noch deinen ersten Beitrag editieren und [gelöst] davor schreiben?