interne Tabellenverarbeitung

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

interne Tabellenverarbeitung

Beitrag von gerold2102 (ForumUser / 3 / 0 / 0 ) »
Hallo liebe Forenmitglieder!

Ich habe folgende Frage an euch: Wie kann ich eine intern gefüllte Tabelle verarbeiten? Folgende Problematik:
Eingabeparamenter 1 bestimmt die Anzahl der Intervalle. Eingabeparameter 2 bestimmt die Anzahl der auszugebenden Datensätze. Beispiel: Datensätze 1 bis 12 mit Inhalt 1,2,3,4,5,6,7,89,10,11,12 steht in der Tabelle. Parameter 1 beinhaltet 3 Intervalle. Parameter 2 beinhaltet 2 Datensätze zum ausgeben. Die Ausgabe sollte folgendermasßen sein: 1,2,5,6,9,10,3,4,7,8,11,12. Dieser Algorithmus sollte jedoch mit unterschiedlichen Parameter arbeiten können. z. B Intervall 2 mit je 3 Datensätzen. Vielleicht kann mir jemand helfen. Ich bin für jeden Ratschlag dankbar.

Lg Gerold

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


Re: interne Tabellenverarbeitung

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
Hallo Gerold,

deine Tabelle wurde doch nur umsortiert. Es ist völlig unklar was du genau willst!
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: interne Tabellenverarbeitung

Beitrag von gerold2102 (ForumUser / 3 / 0 / 0 ) »
Hallo Stefan,

danke für die Antwort. Ich versuche es anders zu erklären:
Stimmt es ist nur eine neue Sortierung der Tabelle. Die interne Tabelle enthält eine bestimmte Anzahl von Datensätzen (bspw. Geschäfspartnernummern von 1 bis 1000)...ist bereits aufsteigend sortiert. Der User sollte die Möglichkeit haben die Anzahl der Intervalle und die Anzahl der auszugebenden Datensätze.
1) Beispielsweise soll die Tabelle in drei Intevalle unterteilt werden. D.h. erster Intervall enthält Datensätze 1 - 333, 2 Intervall enthält die Datensätze von 334 - 666, 3 Intervall enthält die Datensätze von 667 bis 1000.
2) Der User sollte eine bestimmte Anzahl von Datensätzen pro Intervall ausgeben können. Die restlichen Datensätze sollen nachfolgen ausgegeben werden. beispielsweise 100. Die Ausgabe sollte daher folgendermaßen sein.

Geschäftspartnernummern:

1 Intervall Datensätze 1......100
2 Intervall Datensätze 334...434
3 Intervall Datensätze 667...767
-------------------------------------
1 Intervall Datensätze 101...200
2 Intervall Datensätze 435...535
3 Intervall Datensätze 768...868
----------------------------------------
1 Intervall Datensätze 201...300
2 Intervall Datensätze 536...636
3 Intervall Datensätze 869...969
---------------------------------------
Restwert:
1 Intervall Datensätze 301...333
2 Intervall Datensätze 637...666
3 Intervall Datensätze 970...1000

Es ist schwierig zu erklären, aber vielleicht ist es jetzt verständlich. Genauso könnte es 4 Intervalle geben zu je 50 Datensätze. Intervall und die Anzahl der Datensätze sind die einzugebenden Parameter im Report.

Ausgabe:

Geschäftspartnernummern:

1 Intervall Datensätze 1......50
2 Intervall Datensätze 200...250
3 Intervall Datensätze 400...450
4 Intervall Datensätze 600...650
5 Intervall Datensätze 800...850
-------------------------------------
1 Intervall Datensätze 51.....100
2 Intervall Datensätze 251...300
3 Intervall Datensätze 451...500
4 Intervall Datensätze 651...700
5 Intervall Datensätze 851...900
----------------------------------------
etc.

Danke & lg Gerold

Re: interne Tabellenverarbeitung

Beitrag von cosmo (Specialist / 175 / 0 / 0 ) »
Hallo Gerold,

ich würde ein weiteres Feld in die Tabelle aufnehmen, das evtl. "Priorität" heißen könnte. In einem Vorlauf vergibst du die Priorität 1 für die ersten 50 (oder 100 oder 200...) Datensätze jedes Intervalls. Das kannst Du einfach über einen mitlaufenden Zähler realisieren. Alle anderen Datensätze erhalten die Priorität 2. Wenn du danach die Tabelle zuerst nach Priorität, dann nach Ordungsnummer sortierst, erhältst Du genau das Ergebnis, das du willst.

Viele Grüße
Jörg
Jörg Krause, Anwendungsentwickler und SAP-Betreuer MM/PP

Re: interne Tabellenverarbeitung

Beitrag von JHM (Top Expert / 1223 / 2 / 204 ) »
gerold2102 hat geschrieben:Es ist schwierig zu erklären, aber vielleicht ist es jetzt verständlich.
Geht es dir nur um die Ausgabe?

Code: Alles auswählen.

REPORT  ztest.

DATA: gt_data TYPE TABLE OF sflight,
      gw_data TYPE          sflight.

DATA: g_cnt     TYPE i,
      g_int_cnt TYPE i,
      g_start   TYPE i,
      g_ende    TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-i01.
PARAMETERS: p_int   TYPE i OBLIGATORY.   "Wieviele Intervalle
PARAMETERS: p_anz   TYPE i OBLIGATORY.   "Wieviele Einträge sollen pro Intervall ausgegebe werden
PARAMETERS: p_rows  TYPE i OBLIGATORY.   "Anzahl Daten die gelesen werden sollen
SELECTION-SCREEN END OF BLOCK 1.

AT SELECTION-SCREEN ON p_rows.
  g_cnt = p_int * p_anz.
  IF g_cnt > p_rows.
    MESSAGE 'Anzahl Zeilen muss größer als Produkt aus Intervallanzahl und Intervalleinträge sein.' TYPE 'E'.
  ENDIF.

START-OF-SELECTION.
  SELECT *
    INTO TABLE gt_data
    FROM sflight
    UP TO p_rows ROWS.

  SORT gt_data.

  g_cnt = LINES( gt_data ).    "Wieviele Zeilen hat die ITAB?
  g_int_cnt = g_cnt DIV p_int. "Wieviele Zeilen hat ein Intervall? Rest wird dem letzten Intervall zugeordnet

  DO p_int TIMES. "Für jedes Intervall
*   Startwert berechnen
    IF sy-index = 1.
      g_start = 1.
    ELSE.
      g_start = ( sy-index - 1 ) * g_int_cnt.
    ENDIF.

*   Endwert berechen
    g_ende = g_start + p_anz - 1.

*   Ausgabe
    LOOP AT gt_data INTO gw_data FROM g_start TO g_ende.
      WRITE: / gw_data-carrid, gw_data-connid,   gw_data-fldate.
    ENDLOOP.
    WRITE: /.
  ENDDO.
Gruß Hendrik

Re: interne Tabellenverarbeitung

Beitrag von gerold2102 (ForumUser / 3 / 0 / 0 ) »
Liebe Forenmitglieder!

Vielen Dank für eure Vorschläge. Ich bin jetzt ein Stück weiter, jedoch habe ich noch Probleme mit der Ausgabe. Das nachfolgende Beispiel soll nur eine Demonstartion sein. Die itab ist jetzt mit Werten gefüllt: 16 Geschäftspartnernummern mit 3 Intervallen zu je 5 Datensätzen (Intervall 1 und 2), 6 Datensätze für Intervall 3.

GP Nr. intervall Datensatz
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 2 1
7 2 2
8 2 3
9 2 4
10 2 5
11 3 1
12 3 2
13 3 3
14 3 4
15 3 5
16 3 6

Die Ausgabe sollte so aussehen.

Intervall GP_von GP_bis Anzahl der Datensätze
1 1........2 2
2 6....... 7 2
3 10.....12 2
Gesamt: 6
------------------------------------
1 3....... 5 3
2 8.......10 3
3 13......16 4
---------------------------------
Gesamt: 10

Hat jemand einen Ansatz? Ich komme einfach nicht weiter. Vielen Dank im voraus.

Lg Gerold

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2029
Views
Tabellenverarbeitung im ABAP
von KlausB » 18.05.2007 10:53 • Verfasst in ABAP® für Anfänger
2
Antw.
3130
Views
Tabellenverarbeitung in "Forms by Adobe"
von Felix0401 » 25.02.2022 15:16 • Verfasst in ABAP® Core
4
Antw.
4460
Views
5
Antw.
5491
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
20
Antw.
6347
Views
Interne Tabelle
von NikoBc » 27.04.2017 15:08 • 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

Ermittlung der Arbeitstage (Mosid)
vor 17 Stunden von DeathAndPain 3 / 44198
LSMW-Problem
vor 17 Stunden von DeathAndPain gelöst 6 / 2040
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor 19 Stunden von Sebastian82 gelöst 4 / 603
ATC Finding in Smartforms
vor einer Woche von sap_enthusiast 2 / 2077

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

Ermittlung der Arbeitstage (Mosid)
vor 17 Stunden von DeathAndPain 3 / 44198
LSMW-Problem
vor 17 Stunden von DeathAndPain gelöst 6 / 2040
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor 19 Stunden von Sebastian82 gelöst 4 / 603
ATC Finding in Smartforms
vor einer Woche von sap_enthusiast 2 / 2077