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 / 4846 / 311 / 640 ) »
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 / 1941 / 257 / 412 ) »
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 / 4846 / 311 / 640 ) »
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 / 1941 / 257 / 412 ) »
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 / 4846 / 311 / 640 ) »
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.
1070
Views
0
Antw.
979
Views
Ausgleichsbeleg mit Positionen im S/4
von thalinn » 16.09.2020 14:46 • Verfasst in Financials
0
Antw.
1730
Views
Naturalrabatt für mehrere Positionen
von kotelna » 16.03.2005 11:44 • Verfasst in Sales and Distribution
1
Antw.
2021
Views
Übergeordnete Positionen und Konfiguration
von Weltenschmerz » 01.12.2016 08:24 • Verfasst in Sales and Distribution
2
Antw.
511
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

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von ewx 17 / 1041
Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 20 / 2501
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1640

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

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von ewx 17 / 1041
Dialog-Container mit Toolbar/Status
vor 6 Stunden von DeathAndPain gelöst 20 / 2501
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1640

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 703
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2333
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8916