Zum Inhalt springen
Die Codezentrale
Programmierung, Tipps, Tricks, Snippets, Links (.Net, Java, JavaScript, C++, PHP, Python, SQL, SAP, ABAP, SAPUI5)
Zum Inhalt springen
  • Home
  • Links
    • Kachelmannwetter
    • MrLeehs Blog
    • Deskmodder
    • winfuture.de
    • Tricktresor
    • Python Online Compiler
    • [Raspberry Pi] Wichtige Terminal-Kommandos für Raspian
    • CodeSandbox JS Vanilla
  • Datenschutzerklärung
  • Impressum
Startseite SAP ABAP GUI Grid ALV [ABAP] Auf Daten eines ALV-Grids eines Reports zugreifen

[ABAP] Auf Daten eines ALV-Grids eines Reports zugreifen

admin 29. November 2017 31. Januar 2019ALV, Interne Tabellen

Variante 1 (SUBMIT)

* https://blogs.sap.com/2011/07/07/gain-programmatic-access-to-data-of-sapgui-alv-reports/
* http://www.saptutorial.org/get-data-from-alv-report-sap-standard-and-output-into-internal-table/

* Initialisierung
cl_salv_bs_runtime_info=>set( EXPORTING display  = abap_false   " Report anzeigen?
                                        metadata = abap_true    " Metadaten des ALV-Grids ermitteln?
                                        data     = abap_true ). " Datenimport aus ALV-Grid?

* Selektionsparameter des Reports 'RSVTPROT' (Transaktion SCU3)
DATA: it_sel_par TYPE STANDARD TABLE OF rsparams WITH DEFAULT KEY.

APPEND VALUE #( selname = 'CUSOBJ' " Name Parameter oder Selektionskriterium
                kind    = 'P'      " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = 'Z...' ) TO it_sel_par. " NAME des Customizing-Objektes (Z-Tabelle ...)

APPEND VALUE #( selname = 'DBEG' " Name Parameter oder Selektionskriterium
                kind    = 'P'    " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = '20170101' ) TO it_sel_par.

APPEND VALUE #( selname = 'DEND' " Name Parameter oder Selektionskriterium
                kind    = 'P'    " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = '20171231' ) TO it_sel_par.

APPEND VALUE #( selname = 'TBEG' " Name Parameter oder Selektionskriterium
                kind    = 'P'    " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = '000000' ) TO it_sel_par.

APPEND VALUE #( selname = 'TEND' " Name Parameter oder Selektionskriterium
                kind    = 'P'    " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = '235959' ) TO it_sel_par.

APPEND VALUE #( selname = 'ALV_GRID' " Name Parameter oder Selektionskriterium
                kind    = 'P'        " P - Parameter, S - Selektionskriterium
                sign    = 'I'
                option  = 'EQ'
                low     = 'X' ) TO it_sel_par.

* Report mit Selektionsparametern aufrufen
SUBMIT rsvtprot WITH SELECTION-TABLE it_sel_par AND RETURN.

TRY.
    DATA: o_alv_data TYPE REF TO data.

* Datenreferenz auf ALV-Daten des Reports
    cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = o_alv_data ).

    IF o_alv_data IS BOUND.
      FIELD-SYMBOLS: <alv> TYPE ANY TABLE.
      ASSIGN o_alv_data->* TO <alv>.

      IF <alv> IS ASSIGNED.

* Metadaten des ALV-Grids
        DATA(lv_metadata) = cl_salv_bs_runtime_info=>get_metadata( ).

* ALV-Grid-Titel
        WRITE: / lv_metadata-s_layout-grid_title.

        ULINE.

* ALV-Spaltentitel (Feldkatalog)
        LOOP AT lv_metadata-t_fcat ASSIGNING FIELD-SYMBOL(<f>).
          WRITE: / <f>-fieldname, <f>-seltext, <f>-tooltip, <f>-reptext, <f>-domname.
        ENDLOOP.

        ULINE.

* Anzahl Spalten
        DATA(lv_col_cnt) = lines( lv_metadata-t_fcat ).

* Datenausgabe
        LOOP AT <alv> ASSIGNING FIELD-SYMBOL(<row>).
          DO lv_col_cnt TIMES.
* Spaltenweise die Zellen der akt. Zeile
            ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO FIELD-SYMBOL(<cell>).
            IF <cell> IS ASSIGNED.
              WRITE: <cell>.
            ENDIF.
          ENDDO.
          SKIP.
        ENDLOOP.

      ENDIF.
    ELSE.
      WRITE: / 'Keine ALV-Daten verfügbar.'.
    ENDIF.

  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

TRY.
    cl_salv_bs_runtime_info=>clear_all( ).
  CATCH cx_root INTO DATA(e_txt2).
    WRITE: / e_txt2->get_text( ).
ENDTRY.

Variante 2 (CALL TRANSACTION)

* Initialisierung
cl_salv_bs_runtime_info=>set( EXPORTING display  = abap_false   " Report anzeigen?
                                        metadata = abap_true    " Metadaten des ALV-Grids ermitteln?
                                        data     = abap_true ). " Datenimport aus ALV-Grid?

* Selektionparameter "Werk" vorbelegen
SET PARAMETER ID 'WRK' FIELD '10'.
* Transaktion aufrufen
CALL TRANSACTION 'MM60' WITHOUT AUTHORITY-CHECK AND SKIP FIRST SCREEN.

IF sy-subrc = 0.
  TRY.
      DATA: o_alv_data TYPE REF TO data.

* Datenreferenz auf ALV-Daten des Reports
      cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = o_alv_data ).

      IF o_alv_data IS BOUND.
        FIELD-SYMBOLS: <alv> TYPE ANY TABLE.
        ASSIGN o_alv_data->* TO <alv>.

        IF <alv> IS ASSIGNED.

* Metadaten des ALV-Grids
          DATA(lv_metadata) = cl_salv_bs_runtime_info=>get_metadata( ).

* ALV-Grid-Titel
          WRITE: / lv_metadata-s_layout-grid_title.

          ULINE.

* ALV-Spaltentitel (Feldkatalog)
          LOOP AT lv_metadata-t_fcat ASSIGNING FIELD-SYMBOL(<f>).
            WRITE: / <f>-fieldname, <f>-seltext, <f>-tooltip, <f>-reptext, <f>-domname.
          ENDLOOP.

          ULINE.

* Anzahl Spalten
          DATA(lv_col_cnt) = lines( lv_metadata-t_fcat ).

* Datenausgabe
          LOOP AT <alv> ASSIGNING FIELD-SYMBOL(<row>).
            DO lv_col_cnt TIMES.
* Spaltenweise die Zellen der akt. Zeile
              ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO FIELD-SYMBOL(<cell>).
              IF <cell> IS ASSIGNED.
                WRITE: <cell>.
              ENDIF.
            ENDDO.
            SKIP.
          ENDLOOP.

        ENDIF.
      ELSE.
        WRITE: / 'Keine ALV-Daten verfügbar.'.
      ENDIF.

    CATCH cx_root INTO DATA(e_txt).
      WRITE: / e_txt->get_text( ).
  ENDTRY.

  TRY.
      cl_salv_bs_runtime_info=>clear_all( ).
    CATCH cx_root INTO DATA(e_txt2).
      WRITE: / e_txt2->get_text( ).
  ENDTRY.
ENDIF.
  ABAP, ASSIGN COMPONENT, CALL TRANSACTION, clear_all, cl_salv_bs_runtime_info, get_data_ref, get_metadata, rsparams, set, SET PARAMETER ID, SUBMIT, WITH SELECTION-TABLE. Lesezeichen.
[ABAP] REDUCE: Spaltensumme eines Feldes einer internen Tabelle berechnen
[ABAP] REDUCE: Minimum / Maximum in einer internen Tabelle suchen
  • Kategorien

    aufklappen | zuklappen
  • Neueste Beiträge

    • [ABAP] OLE2-Objekt ‚SAPINFO‘ aufrufen
    • [ABAP] Excel-Daten mit XCO API (xco_cp_xlsx) lesen
    • [ABAP] Daten einer internen Tabelle als Excel-Datei speichern (xco_cp_xlsx)
    • [ABAP] JSON -> ABAP (xco_cp_json)
    • [ABAP] ABAP -> JSON (xco_cp_json)
    • [ABAP] String nach SYMSG-Struktur konvertieren
    • [ABAP] Unix-Timestamp erzeugen
    • [ABAP] SALV-Grid: Eventhandler für Doppelklick auf eine Zelle (double_click)
    • [SAP] ABAP-Code nachgenerieren bzw. aktivieren
    • [ABAP] Feldkatalog aus Tabellendefinition erstellen
  • Archiv

  • Meta

    • Anmelden
    • Feed der Einträge
    • Kommentar-Feed
    • WordPress.org
  • Related Posts

    • [ABAP] Materialbelegliste (MB51) anzeigen
    • [ABAP] Transaktion mit Parametern vorbelegen und aufrufen
    • [ABAP] Popupfenster mit Eingabefeldern (cl_gui_toolbar, cl_gui_combobox, cl_gui_input_field)
    • [ABAP] ADBC (ABAP Database Connectivity) – Klassen für objektorienterten, dynamischen DB-Zugriff
    • [ABAP] Leistungserfassungsblatt anzeigen (ML81N)
    • [ABAP] Verwendung SAP-Memory
    • [ABAP] Dynamisch Programmcode erzeugen und persistent auf der Datenbank speichern
    • [ABAP] Generische Verarbeitung von internen Tabellen / Verwendung von Referenzen
    • [ABAP] Dynamische Tabelle anhand eines Tabellennamens erstellen, Daten ausgeben
    • [ABAP] CSV-Datei in interne Table einlesen
  • Tags

    ABAP (975) Android (18) CLASS (20) cl_abap_list_layout (19) cl_bcs_convert (28) cl_gui_alv_grid (24) cl_gui_container (39) cl_gui_docking_container (25) cl_gui_frontend_services (50) cl_salv_table (58) cntl_simple_event (16) create (27) Date (16) default_screen (28) display (14) EWM (17) Fiori (21) FREE OBJECT (15) get_columns (22) gui_download (15) HTML (16) JavaScript (78) JSON (23) MIME (17) NEW (20) OData (32) ole2_object (15) OpenSQL (44) Python (23) Raspberry Pi (50) Raspberry Pi 2 (27) Raspberry Pi 4 (23) Raspian (22) RegEx (18) SAP (350) SAPUI5 (27) SELECT (25) String (33) stringtab (15) suppress_toolbar (19) UTF-8 (15) Value (27) XML (29) xstring (20) xstring_to_solix (15)
(W) 2025 by codezentrale.de
Präsentiert von Tempera & WordPress.