cl_salv_table=>factory "lt_bkpf ist nicht typkompatibel zum formalen Parameter "t_table"

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

cl_salv_table=>factory "lt_bkpf ist nicht typkompatibel zum formalen Parameter "t_table"

Beitrag von Elekam (ForumUser / 1 / 0 / 0 ) » 07.10.2020 15:59
Hallo!

Ich bin leider noch recht neu mit ABAP und finde mich schwer gute Quellen/Hilfe bei solchen Anfängerproblemen zu finden.

Ich möchte eine interne Tabelle mit cl_salv_table anzeigen. Momentan nehme ich praktisch die bkpf-Tabelle welche jede menge Spalten etc hat und schneide drei Spalten aus, welche ich in die interne Tabelle einfüge. Jetzt sagt er aber der Parameter t_table und lt_bkpf sind inkompatibel. Warum das? Wenn mehr Info benötigt gerne sagen.

Hier mein Code:

Code: Alles auswählen.

TABLES: bkpf, bseg.

*Selection-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE title_01.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE title_01.
SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(15) p_name1 FOR FIELD p_blart.
PARAMETERS: p_blart TYPE blart.

SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK block1.

AT SELECTION-SCREEN OUTPUT.
  p_name1 = 'Belegart'.


INITIALIZATION.
  p_blart = 'DD'. "Set default value
END-OF-SELECTION.
Data:
BEGIN OF lt_bkpf OCCURS 0,
  bukrs LIKE bkpf-bukrs,
  blart LIKE bkpf-blart,
  gjahr LIKE bkpf-gjahr,
END OF lt_bkpf.

SELECT
  bukrs,
  blart,
  gjahr
  FROM bkpf
  WHERE @bkpf-blart LIKE @p_blart
  INTO CORRESPONDING FIELDS OF @lt_bkpf.
ENDSELECT.

DATA: go_functions TYPE REF TO cl_salv_functions.        "Symbolleiste

DATA: go_table     TYPE REF TO cl_salv_table.            "Klasse

DATA: go_display   TYPE REF TO cl_salv_display_settings. "Displayeinstellungen

DATA: go_columns   TYPE REF TO cl_salv_columns_table.    "Spaltenmanipulation
DATA: go_column    TYPE REF TO cl_salv_column_table.

DATA: color        TYPE lvc_s_colo.                      "Farbe

DATA: go_sorts     TYPE REF TO cl_salv_sorts.            "Sortierung
DATA: go_agg       TYPE REF TO cl_salv_aggregations.     "Aggregation

DATA: go_filter    TYPE REF TO cl_salv_filters.          "Filter

DATA: go_layout    TYPE REF TO cl_salv_layout.           "Layout

DATA: key          TYPE salv_s_layout_key.

cl_salv_table=>factory( IMPORTING r_salv_table = go_table
                        CHANGING t_table = lt_bkpf ).


* Symbolleiste wird eingeblendet
  go_functions = go_table->get_functions( ).
  go_functions->set_all( abap_true ).

  go_display = go_table->get_display_settings( ).
  go_display->set_striped_pattern( cl_salv_display_settings=>true ).
  go_display->set_list_header( 'Belegzuordnung' ).

  go_columns = go_table->get_columns( ).
  go_column ?= go_columns->get_column( 'CITYTO' ).


* Überschriftenbezeichnung ändern
  go_column->set_long_text( 'Lange Überschrifte' ).      "max. 40 Zeichen
  go_column->set_medium_text( 'Mittlere Überschrift' ).  "max. 20 Zeichen
  go_column->set_short_text( 'Überschr.' ).              "max. 10 Zeichen


* Sortierung
  go_sorts = go_table->get_sorts( ).
 "gr_sorts->add_sort( 'CITYTO' ).


* Filter
  go_filter = go_table->get_filters( ).
  go_filter->add_filter( columnname = 'CARRID' low = 'LH' ).


* Layout (Layoutänderungen abspeicherbar)
  go_layout = go_table->get_layout( ).
  key-report = sy-repid.
  go_layout->set_key( key ).
  go_layout->set_save_restriction( cl_salv_layout=>restrict_none ).


*******************
* Anzeige Tabelle *
*******************
  go_table->display( ).
Danke schonmal!


Re: cl_salv_table=>factory "lt_bkpf ist nicht typkompatibel zum formalen Parameter "t_table"

Beitrag von ewx (Top Expert / 4280 / 202 / 460 ) » 07.10.2020 18:35
Mit OCCURS definierst du eine Tabelle mit Kopfzeile. Das macht man erstens nicht mehr und zweitens ist die Kopfzeile der Grund, weswegen die Parameter nicht kompatibel sind.
Du könntest bei der Übergabe an FACTORY nur den Tabellenkörper übergeben:

Code: Alles auswählen.

lt_bkpf[]
Das solltest du aber gleich wieder vergessen und die interne Tabelle mit TYPES definieren (und da es sich um eine GLOBALE und keine LOKALE Tabelle handelt, sollte diese auch mit G beginnen):

Code: Alles auswählen.

TYPES: begin of ts_bkpf,
         field1 type something,
         ...
       end of ts_bkpf,
       tt_bkpf TYPE STANDARD TABLE OF wa.
DATA gt_bkpf TYPE tt_bkpf.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
msfox


Seite 1 von 1

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Last erzeugen im SAPGui?
vor 23 Minuten von ewx 16 / 153
IDoc-Segmente löschen
vor 23 Stunden von littleJohn 2 / 74

Vergleichbare Themen

Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33
GUI Status verhindert on click Event des SALV Table
von Pinguincommander » 05.02.2019 09:51
Select into table @data(xxx) und returning Parameter
von Basler84 » 06.08.2018 18:40
sorted table, hashed table: Übergabe Workarea -> Performa
von Jürgen Fischer » 30.01.2006 08:09
standard table vs. sorted table
von ralf.wenzel » 31.07.2014 12:49