Spaltenweise Ausgabe eines Datensatzes

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

Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Hallo!

Ich lasse mir eine Tabelle in einer ALV ausgeben. Beim Doppelklick in einen dieser Datensätze möchte ich nun diesen Datensatz entweder als Popup oder als Report ausgeben. Jedoch möchte ich keine Zeile ausgeben, sondern eine Spalte.
Der untenstehende Code macht bisher folgendes. Er liest nach dem Doppelklick den entsprechenden Datensatz und fügt ihn in ls_stg ein. Danach baue ich mir eine interne Tabelle auf, die zwei Spalten beinhaltet:

FELDNAME FELDWERT
MANDT 100
ID 3
...

Die Daten befinden sich in lt_data. Nun würde ich diese gerne ausgeben, entweder als Popup oder als Report.
Gibt es hierfür einen Funktionsbaustein, der auch funktioniert, ohne Elemente im DDIC anzulegen?

Code: Alles auswählen.

    IF <fs_sel_cell> IS ASSIGNED.
      READ TABLE me->gt_stg INDEX <fs_sel_cell>-row_id INTO ls_stg.

      sdescr ?= cl_abap_typedescr=>describe_by_data( ls_stg ).

      DO.
        ASSIGN COMPONENT sy-index OF STRUCTURE ls_stg TO <fs_field>.
        IF sy-subrc <> 0.
          EXIT.
        ENDIF.
        READ TABLE sdescr->components ASSIGNING <fs_components> INDEX sy-index.

        ls_data-name = <fs_components>-name.
        ls_data-value = <fs_field>.
        APPEND ls_data TO lt_data.

      ENDDO.

    ENDIF.

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


Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
hallo ABAP_User,

schau dir den Baustein MD_POPUP_SHOW_INTERNAL_TABLE an. Damit kann man eine interne Tabelle im Popup ausgeben lassen (zumindest habe ich mir das mal so in meinem Wiki notiert :-) )
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Dabei hab ich jetzt einen Kurzdump erhalten. Grund:
In der Schnittstelle des Funktionsbausteins wurde festgelegt, daß
unter "COLUMNS" nur Felder eines bestimmten Typs und einer bestim
Länge mitgegeben werden dürfen. Das aktuell mitgegebene Feld
" " hat zwar den richtigen Typ, nicht aber die richtige Länge.

Der Funktionsbaustein erwartet dass ich ihm Spalten vom gleichen Typ mit gebe, was ich ja nicht kann.
Vermutlich wird das daher gar nicht so einfach mit einem Popup funktionieren, wie ich das möchte.

Welche Anweisung benötige ich denn, wenn ich einen neuen Report herausschreiben möchte?
Sprich, im Grunde nur über meine interne Tabelle loopen und dann mit WRITE alles herausschreiben.

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Hmm, wenn ich mal in unsere Listen, die mit nem ALV erzeugt wurden, rein schaue, ist da oben links so ein kleines Symbol, auf das kann man klicken und sieht den Datensatz der aktuell ausgewählten Zeile.

Ausgabe erfolgt mit FuBa REUSE_ALV_GRID_DISPLAY
Normale Menschen wundern sich, warum in der Welt so viel schief läuft.
Programmierer wundern sich, warum alles so gut funktioniert.

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
ABAP_User hat geschrieben:Dabei hab ich jetzt einen Kurzdump erhalten. Grund:
In der Schnittstelle des Funktionsbausteins wurde festgelegt, daß
unter "COLUMNS" nur Felder eines bestimmten Typs und einer bestim
Länge mitgegeben werden dürfen. Das aktuell mitgegebene Feld
" " hat zwar den richtigen Typ, nicht aber die richtige Länge.
wie hast du denn den Baustein aufgerufen? Folgendes Beispiel funktioniert bei mir problemlos und die Spalten sind vom Typ nicht identisch

Code: Alles auswählen.

TYPES: BEGIN OF t_mara,
  matnr TYPE matnr,
  mtart TYPE mtart,
  END OF t_mara.

DATA: gt_mara TYPE STANDARD TABLE OF t_mara WITH DEFAULT KEY.

DATA: popup_tab TYPE STANDARD TABLE OF help_value WITH DEFAULT KEY,
      wa_tab LIKE LINE OF popup_tab,
      v_indx LIKE sy-index.

SELECT matnr mtart FROM mara
  APPENDING TABLE gt_mara UP TO 50 ROWS.

*  Überschriften für popup_tabelle füllen
wa_tab-tabname = 'MARA'.
wa_tab-fieldname = 'MATNR'.
wa_tab-selectflag = 'X'.
APPEND wa_tab TO popup_tab.
wa_tab-tabname = 'MARA'.
wa_tab-fieldname = 'MTART'.
APPEND wa_tab TO popup_tab..

CALL FUNCTION 'MD_POPUP_SHOW_INTERNAL_TABLE'
  EXPORTING
    title   = 'Test Popup'
  IMPORTING
    index   = v_indx
  TABLES
    values  = gt_mara
    columns = popup_tab
  EXCEPTIONS
    leave   = 1
    OTHERS  = 2.
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
Hi!

Wenn du eh schon ein ALV Grid verwendest, warum verwendest du dann nicht die zugehörige Detaildarstellung?
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
Okay!
Beim Doppelklick:
Funktion CL_GUI_ALV_GRID=>SET_FUNCTION_CODE und der Functionscode CL_GUI_ALV_GRID=>MC_FC_DETAIL.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Ich hatte bislang keine Toolbar, das war der Grund.

Code: Alles auswählen.

ls_layout_alv-no_toolbar = 'X'.
Wenn ich die obere Codezeil nun rausnehme, muss ich dann wirklich jeden einzelnen Button auflisten (wie unten), den ich nicht haben möchte?!

Code: Alles auswählen.

APPEND cl_gui_alv_grid=>mc_fc_detail TO lt_ui_functions.

CALL METHOD alv_grid->set_table_for_first_display
      EXPORTING
        is_layout       = me->ls_layout_alv
        it_toolbar_excluding = lt_ui_functions
      CHANGING
        it_outtab       = me->gt_stg
        it_fieldcatalog = me->lvc_fieldcat.

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
jein. Es gibt auch mehrere vordefinierte Variablen die bestimmte Buttongruppen beinhalten. MC_FG_* glaub ich. Aber eben leider nicht für alle.
Wenn du es eh nur beim Doppelklick brauchst, kannst ja, wie ich vorher schon angemerkt hab, die Methode SET_FUNCTION_CODE im Event Handler zum Doppelklick verwenden.
Oder funktioniert SET_FUNCTION_CODE nicht bei Doppelklick?

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Mir ist die Verwendung nicht ganz klar. So hab ich es gerade versucht:

Code: Alles auswählen.

METHOD handle_double_click.

    DATA lv_detail LIKE sy-ucomm.
    lv_detail = cl_gui_alv_grid=>mc_fc_detail.

    this_screen->alv_staging->set_function_code( CHANGING c_ucomm = lv_detail ).

  ENDMETHOD.  
Hast du es anders gemeint?
Die Toolbar habe ich weiterhin ausgeblendet, aber ich denke das sollte stimmen.

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
jepp, genau so.
Funktionierts?
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Nein, leider nicht.

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
Hi!

Versuchs mal mit dem Functionscode '&ETA'
Alternativ kannst du auch die Methode TRANSFER_FCODE_LVC_TO_SLIS verwenden um aus MC_FC_DETAIL den richtigen Wert zu erhalten.
Die Methode SET_FUNCTION_CODE arbeitet offensichtlich mit anderen Functionscodes (SLIS statt LVC)

Damit du das Info zur ganze Zeile erhältst und nicht nur zur Zelle auf die du doppelt geklickt hast, musst du vorher die Selektion im Grid ändern.
(SET_SELECTED_ ... )

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ABAP_User

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
a-dead-trousers hat geschrieben:Versuchs mal mit dem Functionscode '&ETA'
Super, das funktioniert! Wie kommt das?

Re: Spaltenweise Ausgabe eines Datensatzes

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
Der '&ETA' ist der "alte" Funktionscode aus den SLIS (SE16) Zeiten. Da gab es eine Zeichenbeschränkung die mit der "neuen" Toolbar des ALV Grid wieder weggefallen ist.
Unterstützt müssen aber weiterhin beide werden, da das ALV Grid auch in der SE16 Einsatz findet.
Mit den Methoden TRANSFER_FCODE_LVC_TO_SLIS bzw. TRANSFER_FCODE_SLIS_TO_LVC kann man aber jederzeit zwischen den beiden Varianten hin- und herwechseln.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ABAP_User

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1845
Views
Stücklistenkomponente Spaltenweise ausgeben
von Andrzej » 26.07.2015 15:30 • Verfasst in ABAP® für Anfänger
7
Antw.
7317
Views
Write-Ausgabe vor Alv-Grid Ausgabe
von L0w-RiDer » 14.08.2019 14:09 • Verfasst in ABAP® für Anfänger
3
Antw.
4101
Views
ALV Ausgabe
von Spyder » 26.05.2011 12:09 • Verfasst in ABAP® Core
0
Antw.
3200
Views
ALV-Ausgabe
von eddi89 » 16.12.2009 15:49 • Verfasst in ABAP Objects®
1
Antw.
2771
Views
Ausgabe DB
von Clarins » 21.05.2017 14:53 • Verfasst in ABAP® für Anfänger

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.