Interne Tabelle auswerten

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
15 Beiträge • Seite 1 von 1
15 Beiträge Seite 1 von 1

Interne Tabelle auswerten

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

ich habe eine interne Tabelle

x y
--------------------
a z1
b z1
b z2
c x1
d x1
d x2
f z1

ich möchte nur Listen wenn zum Ordnungsbegriff X mehr als ein vorkommen vorhanden ist

Gibt es dafür eine einfache Lösung ?
Danke und Gruß Wolfgang

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


Re: Interne Tabelle auswerten

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Was ist der "Ordnungsbegriff X" bzw. wie sollte die Ausgabe denn deiner Meinung nach aussehen.
Wahrscheinliche Lösung: LOOP AT... GROUP BY
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle auswerten

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,
schon mal Danke für die Nachricht
In der Liste sollte nur
B z1
B Z2
D x1
D x2

stehen

Re: Interne Tabelle auswerten

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Interpretation der Ausgabeliste:
Du willst nur eindeutige Y-Werte sehen. Wenn es mehrere davon gibt, möchtest du den 2. x-Eintrag zum y Wert sehen ( sonst stände in der Liste ja F-Z1 und nicht B-Z1 - das hat mich etwas verwirrt bis ich das Muster erkannt hatte ) und wenn es nur einen Eintrag gibt halt diesen ( D X2 ).
Weiterhin muss der X-Wert in Großbuchstaben ausgegeben werden und der Y-Wert nur dann, wenn ... Ja. Hier bin ich leider nicht weitergekommen, unter was für Bedingungen denn nun der Y-Wert in Großbuchstaben und wann normal ausgegeben werden muss.
Desweiteren ist mir immer noch schleierhaft, wie sich deine Ausgabeliste mit dem Originalpost
wreichelt hat geschrieben:möchte nur Listen wenn zum Ordnungsbegriff X mehr als ein vorkommen vorhanden ist
verträgt.
Folgendes Programm kann deine Ausgabeliste halbwegs erzeugen - zumindest den Teil den ich verstanden habe:

Code: Alles auswählen.

REPORT.
TYPES: BEGIN OF gts_itab,
         x TYPE string,
         y TYPE string,
       END OF gts_itab,
       gtt_itab TYPE STANDARD TABLE OF gts_itab WITH NON-UNIQUE DEFAULT KEY.

DATA: gt_itab TYPE gtt_itab.

gt_itab = VALUE #( ( x = 'a' y = 'z1' )
                   ( x = 'b' y = 'z1' )
                   ( x = 'b' y = 'z2' )
                   ( x = 'c' y = 'x1' )
                   ( x = 'd' y = 'x1' )
                   ( x = 'd' y = 'x2' )
                   ( x = 'f' y = 'z1' )
                )       .

LOOP AT gt_itab ASSIGNING FIELD-SYMBOL(<gs_itab_line>)
                GROUP BY ( "key1 = <ls_itab_line>-x
                           key2 = <gs_itab_line>-y
                           "anzahl      = GROUP SIZE
                          ) ASSIGNING FIELD-SYMBOL(<gs_itab_group>).
  LOOP AT GROUP <gs_itab_group> ASSIGNING FIELD-SYMBOL(<gs_group_line>).
    IF sy-tabix = 2.
      EXIT.
    ENDIF.
  ENDLOOP.
  WRITE:/ to_upper( <gs_group_line>-x ),
          <gs_group_line>-y.

ENDLOOP.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
wreichelt

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle auswerten

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo, danke ich glaube das ist der beste Weg

Danke
Gruß Wolfgang

Re: Interne Tabelle auswerten

Beitrag von Murdock (Specialist / 126 / 60 / 10 ) »
black_adept hat geschrieben:
26.08.2021 13:44
Interpretation der Ausgabeliste:
Du willst nur eindeutige Y-Werte sehen. Wenn es mehrere davon gibt, möchtest du den 2. x-Eintrag zum y Wert sehen ( sonst stände in der Liste ja F-Z1 und nicht B-Z1 - das hat mich etwas verwirrt bis ich das Muster erkannt hatte ) und wenn es nur einen Eintrag gibt halt diesen ( D X2 ).
[...]
Folgendes Programm kann deine Ausgabeliste halbwegs erzeugen - zumindest den Teil den ich verstanden habe:
[...]
Das Programm funktioniert hier aber nur durch Zufall wie gewünscht, da die Daten entsprechend passen. Sieht man schön, wenn man in die Tabelle noch eine Zeile ( x = 'g' y = 'x1' ) anfügt. Dann wird nicht das zweite Vorkommen von x1 ausgegeben (D x1), sondern G x1.

Das liegt daran, dass sy-tabix hier nicht die Anzahl der Schleifendurchläufe beinhaltet, sondern den Index der "getroffenen" Zeile in der Ursprungstabelle (gt_itab). Also bei "meinem" x1 Durchlauf 4, 5 und 8

Re: Interne Tabelle auswerten

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Murdock hat geschrieben:
28.09.2021 11:08
Das liegt daran, dass sy-tabix hier nicht die Anzahl der Schleifendurchläufe beinhaltet, sondern den Index der "getroffenen" Zeile in der Ursprungstabelle (gt_itab). Also bei "meinem" x1 Durchlauf 4, 5 und 8
Cool - Danke. Wieder was gelernt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle auswerten

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Wenn ich mir den Ursprungstext kombiniert mit dem Beispiel anschaue, denke ich ohnehin, dass schon black adepts "Interpretation der Ausgabeliste", also die Anforderungsdefinition, nicht passt. Dem Ursprungstext zufolge ist eine Eindeutigkeit der ausgegebenen Y-Werte nämlich keineswegs gefordert. Ich würde das so interpretieren, dass alle Zeilen ausgegeben werden sollen, zu deren X-Wert mindestens eine weitere Zeile mit dem gleichen X-Wert existiert. Die Y-Werte sind egal; die sollen nur halt mit ausgegeben werden, wenn ihre Zeile entsprechend dieser Definition ausgaberelevant ist. Allein deshalb müsste das Programm schon völlig anders aussehen.

Nicht dass es den Fragesteller noch interessiert zu haben schiene...

Re: Interne Tabelle auswerten

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Wenn ihr euch echt noch mit diesem Thema befasst: Hat irgend jemand eine Idee, was für eine Gruppierung anhand der beiden Posts von wreichelt dieser nun wirklich haben wollte. Denn "mein" Muster anhand der beiden Posts war aus der Not geboren, weil ich kein "sinnvolles" Muster erkennen konnte.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle auswerten

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Habe ich doch gerade geschrieben: ich gehe davon aus, dass mein fett gedruckter Text genau das ist, was wreichelt beabsichtigt hat.

Re: Interne Tabelle auswerten

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
ok - scheint plausibel
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle auswerten

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

es tut mir Leid wenn ich hier zur Verwirrung beigetragen habe.
Hintergrund der Frage war:
Es gibt für die Auswertung von Stücklisten die Transaktionen CS15 und CS15M, damit kann gesucht werden ob ein bestimmtes Material in einer Stückliste vorkommt (CS15M auch für mehrere Materialien).
Aber es gibt meines Wissens keine Auswertung in der ich prüfen kann, ob 2 oder 3 Materialien zusammen in diversen Stücklisten zusammen vorkommen.

Oder kennt Jemand im Standard das was ?
Gruß Wolfgang

Re: Interne Tabelle auswerten

Beitrag von Alpmann (ForumUser / 62 / 5 / 19 ) »
Hallo Wolfgang,

sofern es nur um eine Ebene geht, wäre dies ein Weg. Ist dann aber eher was für zu Fuß... Kann man natürlich aus als Report machen und noch mehr Sachen prüfen - wie zum Beispiel den Stücklistenstatus aus dem Kopf, so dass man nur "aktive" Stücklisten erhält. So etwas würde ich dann vorschlagen, wenn dass keine Einmal-Aktion sein soll.

Mit der SE16 in Tabelle STPO. Nach Feld IDNRK filtern. Hier dann alle Artikelnummern rein, die zusammen in einer Stückliste sein sollen.

Aus dem Ergebnis nimmst du dann alle STLNR Einträge und kopierst die in Excel. In der zweiten Spalte packst du immer eine 1 daneben. Dann kannst du mit der Funktion Teilergebnis und Summe schnell feststellen, wo als Summe mehr als 1 steht. Mit diesen STLNR kannst du dann in der Tabelle MAST nachschauen, welche Artikel in welchem Werk das dann genau sind.

Für mehrstufige Stüklisten habe ich aber leider im Augenblick auch keinen Ansatz.

Mit freundlichen Grüßen
Matthias Alpmann

Folgende Benutzer bedankten sich beim Autor Alpmann für den Beitrag:
wreichelt


Re: Interne Tabelle auswerten

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo Alpmann,

ich habe einen ABAP erstellt der die Stücklisten komplett über alle Ebenen auflöst, ich verwende da den FB 'CS_BOM_EXPL_MAT_V2',
die Abfrage auf Vorkommen von mehreren Materialien in einer Stüli konnte ich so einbauen (nur mit den modernen Sprachmitteln von ABAP stehe ich auf Kriegsfuß aber letztendlich hat es mit den Hinweisen hier geklappt).

Gruß Wolfgang

Re: Interne Tabelle auswerten

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Um trotzdem hier noch eine Lösung zu bieten: So hätte ich es wohl gemacht (Routinecodeanteil von black_adept plagiatisiert):

Code: Alles auswählen.

REPORT.

TYPES: BEGIN OF GTS_ITAB,
         X TYPE STRING,
         Y TYPE STRING,
       END OF GTS_ITAB,
       GTT_ITAB TYPE SORTED TABLE OF GTS_ITAB WITH NON-UNIQUE DEFAULT KEY.

DATA: GT_ITAB TYPE GTT_ITAB,
      LT_DOPPELTE_X TYPE SORTED TABLE OF STRING WITH NON-UNIQUE KEY TABLE_LINE.

GT_ITAB = VALUE #( ( X = 'a' Y = 'z1' )
                   ( X = 'b' Y = 'z1' )
                   ( X = 'b' Y = 'z2' )
                   ( X = 'c' Y = 'x1' )
                   ( X = 'd' Y = 'x1' )
                   ( X = 'd' Y = 'x2' )
                   ( X = 'f' Y = 'z1' ) ).

LOOP AT GT_ITAB ASSIGNING FIELD-SYMBOL(<GS_ITAB_LINE>) FROM 2.
  CHECK <GS_ITAB_LINE>-X = GT_ITAB[ SY-TABIX - 1 ]-X.
  APPEND <GS_ITAB_LINE>-X TO LT_DOPPELTE_X.
ENDLOOP.

DELETE ADJACENT DUPLICATES FROM LT_DOPPELTE_X.

LOOP AT GT_ITAB ASSIGNING <GS_ITAB_LINE>.
  CHECK LINE_EXISTS( LT_DOPPELTE_X[ TABLE_LINE = <GS_ITAB_LINE>-X ] ).

  WRITE:/ <GS_ITAB_LINE>-X , <GS_ITAB_LINE>-Y.
ENDLOOP.
Ich weiß nicht, ob das superelegant ist, aber sonderlich lang ist es nicht, insofern fände ich solch Coding durchaus in Ordnung.

Meine Lösung setzt voraus, dass GT_ITAB sortiert ist, aber wenn nicht, könnte man sie ja problemlos in eine sortierte Hilfstabelle überführen.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1136
Views
1
Antw.
1041
Views
Tabelle COST umdrehen bzw. Spalten auswerten und in Zeilen zurückschreiben
von MarioR » 11.11.2019 17:30 • Verfasst in ABAP® Core
5
Antw.
2138
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.
921
Views

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 12 Stunden von Bright4.5 3 / 1485
Regex in where
vor 14 Stunden von tar 6 / 158

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

Daten an Tabelle binden
vor 12 Stunden von Bright4.5 3 / 1485
Regex in where
vor 14 Stunden von tar 6 / 158

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821