Interne Tabelle

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Interne Tabelle

Beitrag von kaufmann123 (ForumUser / 18 / 6 / 0 ) »
Hallo,

ich bin ziemlich neu in ABAP und bin grad dabei ein paar Übungsaufgaben zu machen :)

Aktuelles Thema sind interne Tabellen. Nun meine Fragen:

1. a) Wie definiere ich eine interne Tabelle
und b)ein Feld aus einer anderen Tabelle ( z.B. MAKTX aus MAKT)

ansonsten ist das meine Aufgabe:

Kopieren Sie die Datensätze in die interne Tabelle, lesen Sie die zugehörigen Materialtexte (Tabelle ?), und sortieren Sie die Tabelle:

- nach Materialkurztext
- nach Warengruppe

Geben Sie wieder die Liste aus.

Wie muss ich hier ungefähr an die Aufgabe herangehen?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Hmmm, gucken wir doch mal.... ;)

1.a
1.b
Kopieren der Datensätze
Materialtexte: Texttabelle finden, aber die kennst du ja offensichtlich schon....
Sortieren
Ausgeben

Für alle weiteren Standardfragen gibt es den ultimativen Link *scnr

Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
kaufmann123

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interne Tabelle

Beitrag von kaufmann123 (ForumUser / 18 / 6 / 0 ) »
Hast du vlt auch Beispiele oder so die das gut erklären, aus solchen Einträgen werde ich immernoch nicht ganz schlau...

Re: Interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Beispiele hab ich genug, das Programm ist ein Fünfzeiler. Das Programm zu schreiben wäre schneller gewesen als die Links rauszusuchen. Aber was machst du dann? ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interne Tabelle

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Woraus Ralf hinaus will, ist, dass Du eigentlich gar keine richtigen Fragen stellst, sondern einfach Deine Unterrichtsaufgabe gelöst haben möchtest. Wie er schon richtig sagt, kann das jeder hier in zwei Minuten für Dich machen, aber dann hast Du nichts gelernt. Ich gehe mal davon aus, dass man Dir nicht einfach Aufgaben gestellt hat, ohne vorher was zu unterrichten, sondern dass man Dir und Deiner Lerngruppe Unterricht erteilt hat, dessen Stoff im Grundsatz geeignet sein sollte, die Aufgabe zu lösen. Dass das nicht für jeden Schüler sofort so eingängig ist, dass er es auf Anhieb hinbekommt, steht auf einem anderen Blatt.

Lass mich Dir einen konstruktiven Vorschlag machen: Versuch Du mal, mit den von Dir gelernten Befehlen ein passendes Programm zu erstellen (wie Ralf schon sagt, reden wir hier von wenigen Zeilen). Dieses Programm postest Du dann hier und erläuterst, an welchen Stellen Du ggf. nicht weiterweißt bzw. welche Details Du nicht hinbekommst. Dann bin ich sicher, dass Ralf, ich und sicherlich noch einige andere hier gerne bereit sein werden, Dir das zu erklären, damit Du in die Lage versetzt wirst, die Aufgabe selber zu lösen.

Entscheidender Vorteil: So lernst Du was und schreibst nicht nur eine Fertiglösung ab.

Re: Interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Huch. Ich habe einen Pressesprecher? ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interne Tabelle

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich wollte Dir doch nur Rückendeckung geben. :-D Außerdem waren Deine Bemerkungen zwar richtig, aber nicht unbedingt so konstruktiv.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ralf.wenzel


Re: Interne Tabelle

Beitrag von deejey (Specialist / 419 / 128 / 45 ) »
einfach Dreisatz anwenden

Re: Interne Tabelle

Beitrag von kaufmann123 (ForumUser / 18 / 6 / 0 ) »

Code: Alles auswählen.

types: begin of itab_mara,
Materialnummer type MARA-MATNR,
Materialkurztext type MAKT-MAKTX,
Warengruppe type MAKT-MAKTG,
end of itab_mara.

DATA: itab_mara type TABLE OF itab_mara,
      wa_mara TYPE itab_mara.

BREAK-POINT.

SELECT MARA~MATNR MAKTX MAKTG
     INTO CORRESPONDING FIELDS OF TABLE itab_mara
     from MARA JOIN Makt ON mara~matnr = makt~matnr.

sort itab_mara by Materialkurztext.
sort itab_mara by Warengruppe.

LOOP at itab_mara INTO wa_mara.
  WRITE: wa_mara-Materialnummer, wa_mara-Materialkurztext, wa_mara-Warengruppe.
  NEW-LINE.
ENDLOOP.
das wäre mein code soweit, jedoch bekomme ich nichts ausgegeben da er anscheinend an der select funktion scheitert... könntet ihr mir sagen wo mein fehler liegt?

Re: Interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Wenn du into corresponding fields selektierst, aber keine korrespondierenden (also namensgleichen) Felder hast, geht das in die Hose. Entweder machst du die Zielfelder namensgleich oder lässt „corresponding fields“ weg.

Du sortierst 2x. Du willst aber einmal nach zwei Kriterien sortieren. Das ist etwas anderes.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interne Tabelle

Beitrag von kaufmann123 (ForumUser / 18 / 6 / 0 ) »

Code: Alles auswählen.

types: begin of itab_mara,
Materialnummer type MARA-MATNR,
Materialkurztext type MAKT-MAKTX,
Warengruppe type MAKT-MAKTG,
end of itab_mara.

DATA: itab_mara type TABLE OF itab_mara,
      wa_mara TYPE itab_mara.

SELECT MARA~MATNR MAKTX MAKTG
     INTO TABLE itab_mara
     from MARA JOIN Makt ON mara~matnr = makt~matnr.

sort itab_mara by: Materialkurztext, Warengruppe. 

LOOP at itab_mara INTO wa_mara.
  WRITE: wa_mara-Materialnummer, wa_mara-Materialkurztext, wa_mara-Warengruppe.
  NEW-LINE.
ENDLOOP.
soweit so gut. wennn ich jedoch das prorgramm ausführe stehen manche sachne doppelt drin und statt der warengruppe steht in der dritten spalte der materialkurztext nochmal in großbuchstaben. muss ich bei der selcet funktion noch irgendetwas beachten?

Re: Interne Tabelle

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Du sortierst immer noch 2x nach einem Kriterium. Der Doppelpunkt sollte nicht verwendet werden, wenn man nicht genau verstanden hat, was er macht!
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
(Quatsch gelöscht)

Dein Join führt dazu, dass mehrsprachig gepflegte Materialien mehrfach selektiert werden. Vorschlag: WHERE MAKT-SPRAS EQ SY-LANGU.


Ralf
Zuletzt geändert von ralf.wenzel am 15.02.2018 11:37, insgesamt 1-mal geändert.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interne Tabelle

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
wennn ich jedoch das prorgramm ausführe stehen manche sachne doppelt drin
Klar, Du hats ja auch keine WHERE-Bedingung und JOINst die MAKT, also die Texttabelle zur MARA. Damit bekommst Du ein sog. Kreuzprodukt, soll heißen, für jede Materialnummer bekommst Du eine Zeile für jede Sprache, die in der MAKT für das Material gepflegt ist. Du solltest schon die gewünschte Sprache (MAKT-SPRAS) in JOIN oder WHERE einschränken.
und statt der warengruppe steht in der dritten spalte der materialkurztext nochmal in großbuchstaben
Auch das überrascht nicht, denn Deine "Warengruppe" hast Du ja definiert als:
Warengruppe type MAKT-MAKTG,
Jetzt geh mal in die SE11, schau Dir die Tabelle MAKT an und sieh, was im Feld MAKTG wirklich drinsteht. ;-)
ralf hat geschrieben:Wenn du into corresponding fields selektierst, aber keine korrespondierenden (also namensgleichen) Felder hast, geht das in die Hose. Entweder machst du die Zielfelder namensgleich oder lässt „corresponding fields“ weg.
Um das noch ein bisschen zu konkretisieren: der CORRESPONDING überträgt Feldname für Feldname. Du könntest also die Felder Deiner internen Tabelle auch MATNR, MAKTX und MAKTG nennen, dann würde es gehen. Speziell in diesem Falle ist es aber so, dass Deine interne Tabelle präzise die Felder in der richtigen Reihenfolge enthält, die Du SELECTierst. Damit kannst Du anstelle von INTO CORRESPONDING FIELDS OF TABLE auch einfach INTO TABLE schreiben. Dann sind SAP die Feldnamen egal und er schreibt Dir einfach Deine Tabelle voll. Das ist sogar performanter, weil der SELECT sich dann nicht jedes einzelne Feld anschauen und das namensgleiche Zielfeld heraussuchen muss. Das geht aber, wie gesagt, nur, wenn Du in Deiner internen Tabelle genau die Felder des SELECTs in genau der Reihenfolge des SELECTs hast, also kein Feld weniger und auch keins mehr!

Aber schau mal: Diese Diskussion ist doch für Dich bedeutend lehrreicher, als wenn wir Dir einfach eine Fertiglösung hingeschmiert hätten.

Die Warengruppe steht übrigens in MARA-MATKL.
ralf hat geschrieben:Die Felder im SELECT haben die falsche Reihenfolge (eine andere als in der itab).
Nö.

Re: Interne Tabelle

Beitrag von kaufmann123 (ForumUser / 18 / 6 / 0 ) »
okay vielen Danke für deine Erklärungen, hab das Programm jetzt zum Laufen gebracht :)

Vergleichbare Themen

4
Antw.
239
Views
5
Antw.
1272
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
3012
Views
interne Tabelle in andere interne Tabelle (Format)
von Gast » 20.10.2004 14:44 • Verfasst in ABAP® Core
5
Antw.
312
Views

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 56
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor einer Stunde von Patrick1982 gelöst 5 / 56
alv_grid aktualisieren
vor 6 Stunden von Egzon gelöst 4 / 82

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170