dynamic table in alv grid anzeigen

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

dynamic table in alv grid anzeigen

Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
hallo miteinander
ich habe ein programm erstellt. in diesem programm wird eine dynamische Tabelle per cl_alv_table_create=>create_dynamic_table.
Dies klappt auch wunderbar, und habe auch alle Werte in dieser Tabelle "insertet".
Nun, wenn ich diese Tabelle in ALV Grid Ausgeben möchte, dann stürzt das Programm ab. Aber wenn ich keine Werte in dynamischer Tabelle
einfüge, dann wird ALV Grid angezeigt.
Erhaltene Fehlermeldung

Code: Alles auswählen.

Es wurde auf ein noch nicht zugewiesenes Feldsymbol zugegriffen   
(Datensegment Nr. 32821).                                         
                                                                  
Dieser Fehler tritt auf, wenn                                     
- ein typisiertes Feldsymbol angesprochen wird, bevor es mittels  
  ASSIGN gesetzt wird, oder                                       
- ein Feldsymbol angesprochen wird, das auf die Zeile einer       
  internen Tabelle gezeigt hat, die gelöscht wurde, oder          
- ein Feldsymbol angesprochen wird, das vorher mit UNASSIGN       
  zurückgesetzt wurde oder das auf ein lokales Feld gezeigt hat,  
  das nicht mehr existiert oder                                   
- ein Parameter einer globalen Funktionsschnittstelle angesprochen
  wird, obwohl der entsprechende Funktionsbaustein nicht aktiv ist
  d.h. nicht in der Liste der aktiven Aufrufe steht. Die Liste der
  aktiven Aufrufe kann diesem Kurzdump entnommen werden.          
Programmcode

Code: Alles auswählen.

REPORT  zmm_intgr_art_text.

*------------------*
*Tabelledefintion  *
*------------------*
TYPES: BEGIN OF t_mara,
        matnr LIKE mara-matnr,
        spras LIKE makt-spras,
        maktx LIKE makt-maktx,
       END OF t_mara.

*------------------*
*Tabelledefintion  *
*------------------*
TABLES: mara. "Allgemeine Materialdaten

*--------------------------*
*Interne Tabelledefintion  *
*--------------------------*
DATA: mara_tab TYPE TABLE OF t_mara. "Artikelstamm(Tiefe Struktur)

*----------------------------------*
*Hilfsvariablen für Dym. Table     *
*----------------------------------*
DATA: lt_fieldcatalog TYPE lvc_t_fcat,
      ls_fieldcatalog TYPE lvc_s_fcat,
      lt_data TYPE REF TO data,
      new_line TYPE REF TO data.

FIELD-SYMBOLS: <f_newtab> TYPE REF TO data,
               <f_tab> TYPE ANY TABLE,
               <f_type> TYPE ANY,
               <f_wert>.
*----------------------------------*
*Hilfsvariablen für ALV-Grid       *
*----------------------------------*
DATA: ok_code LIKE sy-ucomm,
      save_ok LIKE sy-ucomm,
      g_container TYPE scrfname VALUE 'BCALV_GRID_0100',
      grid1  TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container.

*-------------------*
*Selektionsscreens  *
*-------------------*
SELECTION-SCREEN SKIP 1.
* Datenselektion
SELECTION-SCREEN BEGIN OF BLOCK data_sele WITH FRAME TITLE text-dsl.
SELECT-OPTIONS:   sl_matnr FOR mara-matnr OBLIGATORY. "Materialnummer
SELECTION-SCREEN END OF BLOCK data_sele.

SELECTION-SCREEN SKIP 1.
* Dateidownload und Anzeige
SELECTION-SCREEN BEGIN OF BLOCK pste WITH FRAME TITLE text-tps.
* Downloadlokal
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS       pm_dlpc  RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_dlpc.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS       pm_filpc TYPE localfile.
SELECTION-SCREEN END OF LINE.
* Download Applikationsserver
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS       pm_dlas  RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_dlas.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS       pm_filas TYPE localfile DEFAULT 'zmm_intgr_matstamm.txt'.
SELECTION-SCREEN END OF LINE.
* ALV Grid Anzeige
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS       pm_test  RADIOBUTTON GROUP act.
SELECTION-SCREEN COMMENT 4(28) FOR FIELD pm_test.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK pste.

*----------------------------------------------------------------------*
*       CLASS download_loc DEFINITION
*----------------------------------------------------------------------*
*       Lokale Dateisicherung
*----------------------------------------------------------------------*
CLASS download_loc DEFINITION.
  PUBLIC SECTION.
*----------------------------------------------------------------------*
*   Parameterübergabe:
*   CHANGING pfx_file -> Benutzerdefinierte Dateiangabe
*----------------------------------------------------------------------*
    CLASS-METHODS: f4_locfile CHANGING pfx_file TYPE localfile.
*----------------------------------------------------------------------*
*   Parameterübergabe:
*   IMPORTING lf_file -> Name Übergabe von Datei
*----------------------------------------------------------------------*
    CLASS-METHODS: down IMPORTING lf_file TYPE localfile.
ENDCLASS.                    "download_loc DEFINITION

*----------------------------------------------------------------------*
*       CLASS download_loc IMPLEMENTATION
*----------------------------------------------------------------------*
*       Lokale Dateisicherung
*----------------------------------------------------------------------*
CLASS download_loc IMPLEMENTATION.
  METHOD f4_locfile.
    CALL FUNCTION 'F4_FILENAME'
      IMPORTING
        file_name = pfx_file.
  ENDMETHOD.                                                "f4_locfile
  METHOD down.
    DATA xlf_file TYPE string.

    xlf_file = lf_file.
    TRANSLATE xlf_file TO LOWER CASE.

    CALL METHOD cl_gui_frontend_services=>gui_download
      EXPORTING
        filename                = xlf_file
        write_field_separator   = ';'
      CHANGING
        data_tab                = mara_tab
      EXCEPTIONS
        file_write_error        = 1
        no_batch                = 2
        gui_refuse_filetransfer = 3
        invalid_type            = 4
        no_authority            = 5
        unknown_error           = 6
        header_not_allowed      = 7
        separator_not_allowed   = 8
        filesize_not_allowed    = 9
        header_too_long         = 10
        dp_error_create         = 11
        dp_error_send           = 12
        dp_error_write          = 13
        unknown_dp_error        = 14
        access_denied           = 15
        dp_out_of_memory        = 16
        disk_full               = 17
        dp_timeout              = 18
        file_not_found          = 19
        dataprovider_exception  = 20
        control_flush_error     = 21
        not_supported_by_gui    = 22
        error_no_gui            = 23
        OTHERS                  = 24.

    IF sy-subrc <> 0.
      MESSAGE text-err TYPE 'E'.
    ELSE.
      MESSAGE text-suc TYPE 'I'.
    ENDIF.
  ENDMETHOD.                    "down
ENDCLASS.                    "download_loc IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS show_alv DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS show_alv DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: output.
    CLASS-METHODS: create_table.
ENDCLASS.                    "show_alv DEFINITION

*----------------------------------------------------------------------*
*       CLASS show_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS show_alv IMPLEMENTATION.
  METHOD output.
    CALL SCREEN 100.
  ENDMETHOD.                    "output
  METHOD create_table.
    DATA: wa_mara TYPE t_mara.

    ls_fieldcatalog-fieldname = 'matnr'.
    ls_fieldcatalog-coltext = 'Materialnummer'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.

    ls_fieldcatalog-fieldname = 'spras'.
    ls_fieldcatalog-coltext = 'Sprachenschlüssel'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.

    ls_fieldcatalog-fieldname = 'maktx'.
    ls_fieldcatalog-coltext = 'Materialkurztext'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.

    "Datenreferenzierung auf lt_data
    ASSIGN lt_data TO <f_newtab>.

    "Tabelleerstellung
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog           = lt_fieldcatalog
      IMPORTING
        ep_table                  = <f_newtab>
      EXCEPTIONS
        generate_subpool_dir_full = 1
        OTHERS                    = 2.

    ASSIGN <f_newtab>->* TO <f_tab>.
  ENDMETHOD.                    "crete_table
ENDCLASS.                    "show_alv IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS appserver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS appserver DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: down IMPORTING filas TYPE localfile.
ENDCLASS.                    "appserver_down DEFINITION

*----------------------------------------------------------------------*
*       CLASS appserver_down IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS appserver IMPLEMENTATION.
  METHOD down.
    TYPES: BEGIN OF st_mara,
        matnr TYPE string,
        spras TYPE string,
        maktx TYPE string,
       END OF st_mara.

    "Variablendefinition
    DATA: v_filas TYPE localfile,
          v_linestamm TYPE string,
          wa_mara TYPE st_mara.

    FIELD-SYMBOLS: <f_mara> TYPE t_mara.

    v_filas = filas.
    TRANSLATE v_filas TO LOWER CASE.

    CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
      EXPORTING
        logical_path               = 'Z_TRANS_INTEGRAL'
        file_name                  = v_filas
      IMPORTING
        file_name_with_path        = v_filas
      EXCEPTIONS
        path_not_found             = 1
        missing_parameter          = 2
        operating_system_not_found = 3
        file_system_not_found      = 4
        OTHERS                     = 5.

    "Datei auf Applikationsserver anlegen
    OPEN DATASET v_filas FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE.

    "Artikel in Datei hineinschreiben
    LOOP AT mara_tab ASSIGNING <f_mara>.
      CONCATENATE <f_mara>-matnr ';' INTO wa_mara-matnr.
      CONCATENATE <f_mara>-spras ';' INTO wa_mara-matnr.
      CONCATENATE <f_mara>-maktx ';' INTO wa_mara-maktx.
      CONCATENATE wa_mara-matnr wa_mara-matnr wa_mara-maktx INTO v_linestamm.
      TRANSFER v_linestamm TO v_filas.
    ENDLOOP.

*    Datei schliesen
    CLOSE DATASET v_filas.

    IF sy-subrc <> 0.
      MESSAGE text-err TYPE 'E'.
    ELSE.
      MESSAGE text-suc TYPE 'I'.
    ENDIF.
  ENDMETHOD.                    "down
ENDCLASS.                    "appserver_down IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS write_struc DEFINITION
*----------------------------------------------------------------------*
*       Datenbankdaten in tiefe Struktur schreiben
*----------------------------------------------------------------------*
CLASS write_struc DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: select_db.
ENDCLASS.                    "write_struc DEFINITION

*----------------------------------------------------------------------*
*       CLASS write_struc IMPLEMENTATION
*----------------------------------------------------------------------*
*       Datenbankdaten in tiefe Struktur schreiben
*----------------------------------------------------------------------*
CLASS write_struc IMPLEMENTATION.
  METHOD select_db.
    DATA: v_fieldname1(100) TYPE c,
          v_fieldname2(100) TYPE c,
          v_fieldname3(100) TYPE c.

    FIELD-SYMBOLS: <f_mara> TYPE t_mara.

    "Zweier Tabelle joinen
    SELECT m~matnr e~spras e~maktx
             FROM mara AS m INNER JOIN makt AS e
             ON m~matnr = e~matnr
             INTO CORRESPONDING FIELDS OF TABLE mara_tab
             WHERE m~matnr IN sl_matnr.

    show_alv=>create_table( ).

    CREATE DATA new_line LIKE LINE OF <f_tab>.
    ASSIGN: new_line->* TO <f_type>,
            <f_tab> TO <f_wert>.

    LOOP AT mara_tab ASSIGNING <f_mara>.
      CLEAR: v_fieldname1, v_fieldname2, v_fieldname3.
      CONCATENATE '<f_type>-' 'matnr' INTO v_fieldname1.
      ASSIGN (v_fieldname1) TO <f_wert>.
      <f_wert> = <f_mara>-matnr.

      CONCATENATE '<f_type>-' 'spras' INTO v_fieldname2.
      ASSIGN (v_fieldname2) TO <f_wert>.
      <f_wert> = <f_mara>-spras.

      CONCATENATE '<f_type>-' 'maktx' INTO v_fieldname3.
      ASSIGN (v_fieldname3) TO <f_wert>.
      <f_wert> = <f_mara>-maktx.
      INSERT <f_type> INTO TABLE <f_tab>.
    ENDLOOP.
  ENDMETHOD.                    "select_db                  "select_alv
ENDCLASS.                    "select_db

* Wenn Taste F4 gedrückt wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pm_filpc.
  download_loc=>f4_locfile( CHANGING pfx_file = pm_filpc ).

START-OF-SELECTION.

  "Datenbankselektion ausführen
  write_struc=>select_db( ).
  CALL SCREEN 100.


  "Downloadauswahl
*  CASE 'X'.
*    WHEN pm_dlpc.
*      download_loc=>down( EXPORTING lf_file = pm_filpc ).
*    WHEN pm_dlas.
*      appserver=>down( EXPORTING filas = pm_filas ).
*    WHEN pm_test.
*      show_alv=>output( ).
*  ENDCASE.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Module  PBO  OUTPUT
*&---------------------------------------------------------------------*
*       ALV-Grid Generierung vor der Ausgabe
*       i_structure_name -> Strukturname in DDIC
*       it_outtab -> interne Tabelle
*----------------------------------------------------------------------*
MODULE pbo OUTPUT.
  SET PF-STATUS 'ALV100'.
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
      EXPORTING
        container_name = g_container.
    CREATE OBJECT grid1
      EXPORTING
        i_parent = g_custom_container.
    CALL METHOD grid1->set_table_for_first_display
*      EXPORTING
*        i_structure_name = 'lvc_t_fcat'
      CHANGING
        it_outtab        = <f_tab>
        it_fieldcatalog  = lt_fieldcatalog.
  ENDIF.
ENDMODULE.                 " PBO  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PAI  INPUT
*&---------------------------------------------------------------------*
*       Reaktion auf OK_CODE
*----------------------------------------------------------------------*
MODULE pai INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=>dispatch.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN 'BACK'.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.                 " PAI  INPUT
danke kostonstyle

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


Beitrag von kostonstyle (Specialist / 247 / 0 / 0 ) »
so abapprogramer
ich habe es herraus gefunden. die Fehler müssen in Grossbuchstaben geschrieben werden.

Code: Alles auswählen.

    ls_fieldcatalog-fieldname = 'MATNR'.
    ls_fieldcatalog-coltext = 'Materialnummer'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.

    ls_fieldcatalog-fieldname = 'SPRAS'.
    ls_fieldcatalog-coltext = 'Sprachenschlüssel'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.

    ls_fieldcatalog-fieldname = 'MAKTX'.
    ls_fieldcatalog-coltext = 'Materialkurztext'.
    APPEND ls_fieldcatalog TO lt_fieldcatalog.
und hier

Code: Alles auswählen.

      CONCATENATE '<F_TYPE>-' 'MATNR' INTO v_fieldname1.
      ASSIGN (v_fieldname1) TO <f_wert>.
      <f_wert> = <f_mara>-matnr.

      CONCATENATE '<F_TYPE>-' 'SPRAS' INTO v_fieldname2.
      ASSIGN (v_fieldname2) TO <f_wert>.
      <f_wert> = <f_mara>-spras.

      CONCATENATE '<F_TYPE>-' 'MAKTX' INTO v_fieldname3.
      ASSIGN (v_fieldname3) TO <f_wert>.
      <f_wert> = <f_mara>-maktx.
gruss kostonstyle

Seite 1 von 1

Vergleichbare Themen

1
Antw.
3328
Views
MIGO: Eigenes Feld im Table-Control der Kopfdaten anzeigen?
von kevinh » 24.04.2013 12:48 • Verfasst in ABAP® Core
0
Antw.
1484
Views
Icon in ALv Grid anzeigen
von jondahl11 » 15.09.2006 08:55 • Verfasst in ABAP® für Anfänger
8
Antw.
7885
Views
Symbole im Alv-Grid anzeigen
von pohlmann-schwarza » 18.09.2008 10:24 • Verfasst in ABAP Objects®
0
Antw.
1149
Views
Grafik über ALV Grid anzeigen
von Blueshape » 03.06.2005 18:50 • Verfasst in ABAP® Core
2
Antw.
2063
Views
ALV Grid und Grafik in Feld anzeigen
von Andrea F. » 05.12.2005 18:24 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag

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

Aktuelle Forenbeiträge

SAP GUI Installation Probleme
Gestern von Romaniac gelöst 2 / 131
Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 346
Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 296
DIN Norm Klassifizierung
vor 5 Tagen von Radinator 2 / 3230

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

SAP GUI Installation Probleme
Gestern von Romaniac gelöst 2 / 131
Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 346
Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 296
DIN Norm Klassifizierung
vor 5 Tagen von Radinator 2 / 3230

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 346
Erweiterung in ME51N/ME52N:
vor 4 Tagen von ABAPlerv 1 / 296