Tabelle LTAP Positionen

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

Tabelle LTAP Positionen

Beitrag von Hatim89 (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,
Ich habe hier mal eine Frage an Experten und zwar wie kann ich innerhalb einer Loop nur die TA`s die nur eine Position haben ? Wenn ein TA mehrere Positionen hätte dann raus.
Könnt ihr mir bitte dazu paar tips vorschlagen.
Vielen Dank und viele Grüße
Hatim

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


Re: Tabelle LTAP Positionen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Hier ein Beispiel:

Code: Alles auswählen.

TYPES: BEGIN OF _doc_group,
         doc_id TYPE i,
         count  TYPE i,
       END OF _doc_group,
       _doc_groups TYPE SORTED TABLE OF _doc_group WITH UNIQUE KEY doc_id,
       BEGIN OF _item,
         doc_id      TYPE i,
         item_number TYPE i,
         value       TYPE string,
       END OF _item,
       _items TYPE SORTED TABLE OF _item WITH UNIQUE KEY doc_id item_number.

DATA(items) = VALUE _items(
    ( doc_id = 1 item_number = 1 value = 'a1' )
    ( doc_id = 1 item_number = 2 value = 'a2' )
    ( doc_id = 1 item_number = 3 value = 'a3' )
    ( doc_id = 2 item_number = 1 value = 'b1' )
    ( doc_id = 3 item_number = 1 value = 'c1' )
    ( doc_id = 3 item_number = 2 value = 'c2' )
    ( doc_id = 4 item_number = 1 value = 'd1' )
    ( doc_id = 5 item_number = 1 value = 'e1' )
     ).

DATA(result) = VALUE _doc_groups( FOR GROUPS docs OF wa IN items
                  GROUP BY ( doc_id  = wa-doc_id
                             count = GROUP SIZE ) WITHOUT MEMBERS
                  ( docs ) ).

"list all elements with COUNT
LOOP AT result INTO DATA(res).
  WRITE: / res-doc_id, res-count.
ENDLOOP.

ULINE.

"Loop at elements with only 1 member
LOOP AT items INTO DATA(item)
  GROUP BY ( doc_id = item-doc_id count = GROUP SIZE ) INTO DATA(doc) .
  CHECK doc-count = 1.
  WRITE: / doc-doc_id, doc-count.
  LOOP AT GROUP doc INTO DATA(itm).
    WRITE: /3 itm-item_number.
  ENDLOOP.

ENDLOOP.


Leider scheint es nicht möglich zu sein, GROUP SIZE direkt im LOOP/ VALUE Befehl mit WHERE abzufragen.

Mehr Beispiele in der Codezentrale

Re: Tabelle LTAP Positionen

Beitrag von DeathAndPain (Top Expert / 1948 / 258 / 413 ) »
Bin beeindruckt, dass Du mit seiner Frage etwas anfangen konntest, ewx. Ich habe sie nicht verstanden mangels korrekter Grammatik.

Re: Tabelle LTAP Positionen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ich weiß ja auch noch nicht, ob ich richtig liege mit meiner Lösung.

Leider funktioniert anscheinend ein SELECT DISTINCT nicht zusammen mit einer internen Tabelle, ansonsten könnte man hier evtl. zusammen mit HAVING mit einem Befehl alle geforderten Datensätze ermitteln...
Ich kriege es aber nicht hin.

Code: Alles auswählen.

 select DISTINCT(doc_id) from @items as items  into table @data(result).
Fehlermeldung:
Unbekannter Spaltenname "DISTINCT(DOC_ID)".

Re: Tabelle LTAP Positionen

Beitrag von DeathAndPain (Top Expert / 1948 / 258 / 413 ) »
Na, wenn nur das das Problem ist, dann machst Du einfach

Code: Alles auswählen.

select doc_id from @items as items into table @data(result).
sort result by table_line.
delete adjacent duplicates from result comparing table_line.
und fertig. Performancetechnisch dürfte das nicht nennenswert schlechter sein, als wenn Dein DISTINCT funktionieren würde.

Re: Tabelle LTAP Positionen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Das war ja nicht die Aufgabe. Es sollten mit DISTINCT - HAVING nur die Datensätze ermittelt werden, die genau einen Eintrag haben.

Das ist aber Quatsch. Eigentlich wollte ich COUNT + GROUP BY.

Und so geht's:

Code: Alles auswählen.

SELECT doc_id  FROM @items AS items
  GROUP BY doc_id
  HAVING COUNT( doc_id ) = 1
   INTO TABLE @DATA(result) ##ITAB_DB_SELECT.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1082
Views
0
Antw.
986
Views
Ausgleichsbeleg mit Positionen im S/4
von thalinn » 16.09.2020 14:46 • Verfasst in Financials
0
Antw.
1732
Views
Naturalrabatt für mehrere Positionen
von kotelna » 16.03.2005 11:44 • Verfasst in Sales and Distribution
1
Antw.
2028
Views
Übergeordnete Positionen und Konfiguration
von Weltenschmerz » 01.12.2016 08:24 • Verfasst in Sales and Distribution
2
Antw.
533
Views
PO Bestelländerung nur neue Positionen
von ceo007 » 01.02.2022 14:58 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag



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

Aktuelle Forenbeiträge

Bedarfszusammenfassung "Einzelbedarfe"
vor einer Stunde von harri 2 / 1146
Trennen Strasse und Hausnummer
vor 3 Stunden von ralf.wenzel 21 / 11269
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4365

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

Bedarfszusammenfassung "Einzelbedarfe"
vor einer Stunde von harri 2 / 1146
Trennen Strasse und Hausnummer
vor 3 Stunden von ralf.wenzel 21 / 11269
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4365

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 239
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3166
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9759