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 / 4787 / 295 / 629 ) »
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 / 1806 / 214 / 396 ) »
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 / 4787 / 295 / 629 ) »
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 / 1806 / 214 / 396 ) »
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 / 4787 / 295 / 629 ) »
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.
724
Views
0
Antw.
716
Views
Ausgleichsbeleg mit Positionen im S/4
von thalinn » 16.09.2020 14:46 • Verfasst in Financials
3
Antw.
1503
Views
Migo - Positionen einfügen
von RaCDigger » 02.10.2020 07:56 • Verfasst in Material Management & Produktionsplanung
1
Antw.
1201
Views
Archivierung von SAP Belegen zu Positionen
von SAP_ENTWICKLER » 03.12.2013 13:24 • Verfasst in ABAP® Core
0
Antw.
1668
Views
Naturalrabatt für mehrere Positionen
von kotelna » 16.03.2005 11:44 • Verfasst in Sales and Distribution

Über diesen Beitrag



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

Aktuelle Forenbeiträge

Artikel automatisch in va01
vor 2 Tagen von wreichelt 2 / 53
langtexte beim Fertigungsauftrag
vor 2 Tagen von ByteMeBaby 7 / 6423
Updates der Daten, Fehlermeldung
vor 3 Tagen von Egzon gelöst 1 / 73

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

Artikel automatisch in va01
vor 2 Tagen von wreichelt 2 / 53
langtexte beim Fertigungsauftrag
vor 2 Tagen von ByteMeBaby 7 / 6423
Updates der Daten, Fehlermeldung
vor 3 Tagen von Egzon gelöst 1 / 73

Unbeantwortete Forenbeiträge

Updates der Daten, Fehlermeldung
vor 3 Tagen von Egzon 1 / 73
Zwischensumme Adobe Forms
letzen Monat von Lucyalison 1 / 282