Range-Tabelle befüllen

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

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Vorherige Seite 2 von 2 (current)
16 Beiträge Vorherige Seite 2 von 2 (current)

Re: Range-Tabelle befüllen

Beitrag von tm987456 (ForumUser / 72 / 42 / 14 ) »
Bei Range-Tabellen muss man auf die Anzahl der Einträge achten, sonst dumpt es:
"Die maximale Anzahl solcher Eingabewerte hängt vom Datenbanksystem ab und liegt größenordnungsmäßig zwischen 2000 und 10000."
https://help.sap.com/doc/abapdocu_750_i ... seltab.htm
Das kann bei FOR ALL ENTRIES nicht passieren.

Der Select scheint mit deutlichem Abstand die schnellste Lösung zu sein. Zumindest zeigt mir die SAT das für diesen Demo-Report an.

Code: Alles auswählen.

REPORT.

CLASS lcl_report DEFINITION.

  PUBLIC SECTION.
    TYPES:
      BEGIN OF ty_text,
        text TYPE c LENGTH 100,
      END OF ty_text,
      tty_texts TYPE STANDARD TABLE OF ty_text WITH NON-UNIQUE KEY table_line.
    CLASS-METHODS main.
  PRIVATE SECTION.
    CLASS-DATA:
      source_for    TYPE tty_texts,
      source_base   TYPE tty_texts,
      source_append TYPE tty_texts,
      source_insert TYPE tty_texts,
      source_select TYPE tty_texts.

    CLASS-METHODS prepare_source_table.
    CLASS-METHODS fill_table_with_base.
    CLASS-METHODS fill_table_with_append.
    CLASS-METHODS fill_table_with_insert.
    CLASS-METHODS fill_table_with_for.
    CLASS-METHODS fill_table_with_select.

ENDCLASS.

CLASS lcl_report IMPLEMENTATION.

  METHOD main.
    prepare_source_table( ).

    fill_table_with_select( ).
    fill_table_with_for( ).
    fill_table_with_insert( ).
    fill_table_with_append( ).
    fill_table_with_base( ).
  ENDMETHOD.


  METHOD prepare_source_table.
    DO 999999 TIMES.
      INSERT VALUE #( text =  |Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a sodales lorem. { sy-index }: for| ) INTO TABLE source_for.
      INSERT VALUE #( text =  |Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a sodales lorem. { sy-index }: base| ) INTO TABLE source_base.
      INSERT VALUE #( text =  |Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a sodales lorem. { sy-index }: append| ) INTO TABLE source_append.
      INSERT VALUE #( text =  |Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a sodales lorem. { sy-index }: insert| ) INTO TABLE source_insert.
      INSERT VALUE #( text =  |Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a sodales lorem. { sy-index }: select| ) INTO TABLE source_select.
    ENDDO.
  ENDMETHOD.


  METHOD fill_table_with_base.
    DATA rng_texts TYPE RANGE OF ty_text.

    LOOP AT source_base ASSIGNING FIELD-SYMBOL(<row>).
      rng_texts = VALUE #( BASE rng_texts ( sign = 'I' option = 'EQ' low = <row>-text ) ).
    ENDLOOP.
  ENDMETHOD.


  METHOD fill_table_with_append.
    DATA rng_texts TYPE RANGE OF ty_text.

    LOOP AT source_append ASSIGNING FIELD-SYMBOL(<row>).
      APPEND VALUE #( sign = 'I' option = 'EQ' low = CONV #( <row>-text ) ) TO rng_texts.
    ENDLOOP.
  ENDMETHOD.


  METHOD fill_table_with_insert.
    DATA rng_texts TYPE RANGE OF ty_text.

    LOOP AT source_insert ASSIGNING FIELD-SYMBOL(<row>).
      INSERT VALUE #( sign = 'I' option = 'EQ' low = CONV #( <row>-text ) ) INTO TABLE rng_texts.
    ENDLOOP.
  ENDMETHOD.


  METHOD fill_table_with_for.
    DATA rng_texts TYPE RANGE OF ty_text.

    rng_texts = VALUE #( FOR <row> IN source_for ( sign = 'I' option = 'EQ' low = <row>-text ) ).
  ENDMETHOD.


  METHOD fill_table_with_select.
    DATA rng_texts TYPE RANGE OF ty_text.
    SELECT DISTINCT 'I'         AS sign,
                    'EQ'        AS option,
                    source~text AS low
      FROM @source_select AS source
      INTO CORRESPONDING FIELDS OF TABLE @rng_texts.
  ENDMETHOD.


ENDCLASS.

START-OF-SELECTION.
  lcl_report=>main( ).


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


Vergleichbare Themen

3
Antw.
196
Views
Range-Tabelle gegen Range-Tabelle abgleichen
von Romaniac » 09.02.2024 16:26 • Verfasst in ABAP® Core
6
Antw.
3630
Views
Range Tabelle vom Typ RRRANGESID in eine DB-Tabelle füllen
von kaim77 » 15.09.2014 12:32 • Verfasst in ABAP® Core
3
Antw.
2410
Views
DB Tabelle befüllen
von bohne » 06.12.2006 23:47 • Verfasst in ABAP® für Anfänger
5
Antw.
3706
Views
Feldsymbol auf RANGE-Tabelle
von Erdbaehr » 07.06.2007 07:56 • Verfasst in ABAP Objects®
2
Antw.
11042
Views
Füllen von Range Tabelle
von ulli952 » 22.06.2007 13:08 • Verfasst in ABAP® Core

Ü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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141