Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Posten Sie hier Tutorials & Cookbooks.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Beitrag von Azreal (Specialist / 180 / 1 / 0 ) » 25.06.2004 15:34

Hallo allerseits,
erste Mal würde ich gern loswerden, dass das hier echt ein klasse Forum ist! ein Dank and die Webmaster, macht echt Spaß, sich hier zu tummeln. Meiner Meinung nach, ist das hier im deutschsprachigen Raum das Beste.

Aus dem Grund hab ich mich entschlossen, hier nen kleinen Aufsatz über ALV zu schreiben. (nicht nur, außer mir etwas davon hat... ich hoffe, daß ihr mir Feedback gebt. Und ich meine Programme dadurch optimieren kann ;))

Vorwort:
Vor einiger Zeit habe ich den Auftrag bekommen einen Report zu schreiben, der eine Auswertung macht. Wie die Auswertung am Schluss dargestellt werden sollte wurde mir überlassen. Ich habe mich für den ALV Grid entschieden. Jedoch musste ich schnell feststellen, dass dieser so seine Tücken hat. und auch die Informationen dazu etwas spärlich sind... Aber genug gequakt, lasst uns mal eine kleine Applikation bauen:
Ich wollte in meinem Report keine Dynpros zeichnen und habe in dem Forum folgenden Beitrag gefunden: http://www.abapforum.com/forum/viewtopic.php?t=834.

1. Einfachstaufruf des FuBas 'REUSE_ALV_GRID_DISPLAY'
Der Baustein REUSE_ALV_GRID_DISPLAY baut selbständig einen ALV auf. Der Einfachstaufruf sieht wie folgt aus:

Code: Alles auswählen.

* call ALV
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_STRUCTURE_NAME = 'SFLIGHT'
    TABLES
      t_outtab      = lt_sflight
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2.
Der an I_STUCTURE_NAME übergebene Parameter ist der Name der Struktur aus dem die Tabelle lt_sflight besteht. Diese Struktur verwendet der ALV um sich die Tabellennamen und Tabelldefinitionen zu ziehen (z.B. ob es sich bei Spalte X ein Datumsfeld handelt, um die dann nach Userzeitzone aufzubereiten)
Das Ergebnis ist ein ALV mit der alt bekannten Buttonleiste. Als Spalten sehen wir die Felder aus der die Tabelle besteht.

2. Ausgabe der Felder anpassen -> REUSE_ALV_FIELDCATALOG_MERGE'
Damit nicht alle Felder angezeigt werden muss man dem ALV einen Fieldcatalog mitgeben. Das ist eine Definition von Feldern die in einer Tabelle übergeben werden. Um die Tabelle nicht mühsam händisch aufbauen zu müssen, verwende ich den Baustein 'REUSE_ALV_FIELDCATALOG_MERGE'.
Der Aufruf sieht wie folgt aus:

Code: Alles auswählen.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'SFLIGHT'
    CHANGING
      ct_fieldcat            = lt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Der FuBa liefert uns also eine komplette Definition aller Felder der Struktur SFLIGHT. Um eine Tabelle von dem geforderten Typ anzulegen muß man folgende Type-Pool includieren slis. Dies geschieht über die anweisung (meist ganz am anfang des reports):

Code: Alles auswählen.

TYPE-POOLS slis.

Nun erst mal die unnötigen Felder rausschmeißen:

Code: Alles auswählen.

  DELETE lt_fieldcat WHERE NOT ( fieldname = 'CARRID'
                             OR  fieldname = 'CONNID'
                             OR  fieldname = 'FLDATE'
                             OR  fieldname = 'PLANETYPE').
und das ganze an unseren ALV übergeben:

Code: Alles auswählen.

* call ALV
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat   = lt_fieldcat
    TABLES
      t_outtab      = lt_poarch
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2.
Diesmal haben wir einen etwas schmaleren ALV, der nur die Spalten Carrid, connid, fldate und planetype enthält.

3. Keine ddic Struktur für i_structure_name? Kein Problem für den 'REUSE_ALV_FIELDCATALOG_MERGE'
Doch was machen wir, wenn wir keine DDIC Struktur haben auf die wir uns beziehen können?
Was definitiv nicht geht ist folgendes (hab?s ausprobiert ;)): Lokal einen Type zu definieren und diesen dann an den Parameter I_STRUCTURE_NAME zu übergeben.

Und was nun folgt, ist echt eine klasse Funktion, die in den ?REUSE_ALV_FIELDCATALOG_MERGE' eingebaut wurde. das müsst ihr mal debugged haben - ein traumcoding ;)
Hier erstmal der Aufruf:

Code: Alles auswählen.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name        = sy-repid
      i_internal_tabname    = 'SRESULT'
*      i_structure_name
*      i_client_never_display
      i_inclname            = 'ZMADDOGTOP'
    CHANGING
      ct_fieldcat            = lt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Gibt man dem 'REUSE_ALV_FIELDCATALOG_MERGE' den Programmnamen (Parameter i_program_name) und einen Includenamen (Parameter i_inclname) sowie den Namen des lokalen Datentypen mit (Parameter i_internal_tabname), so parst dieser den Quelltext, sucht dann den definierten Typ und baut anhand dessen einen fieldcatalog zusammen. der Aufruf des FuBas REUSE_ALV_GRID_DISPLAY ist dann wie bei punkt 2.
Der Vorteil den wir hier haben ist, dass wir bei dem select auf die Datenbank gleich ein 'into corresponding fields of table' mitgeben können. Somit werden nicht alle Felder durch die Gegend geschoben (vielleicht kann Frank Dietrich etwas dazu sagen... die Performance lesson habe ich mir leider noch nicht gegeben).

4. Überschrift direkt oberhalb des ALVs - ein kleines Beispiel für Eventing ('REUSE_ALV_EVENTS_GET' - 'REUSE_ALV_COMMENTARY_WRITE')
Um den Benutzern meines Report etwas mehr Informationen über die Daten zu geben die der ALV Ihnen da anzeigt, habe ich mich entschlossen deine Überschriftenspalte einzubauen. Oder wie es in Abap heißt: HTML_TOP_OF_PAGE. Den eigentlichen Inhalt liefert der Baustein 'REUSE_ALV_COMMENTARY_WRITE'. Setzt man den FuBa Aufruf einfach vor den 'REUSE_ALV_GRID_DISPLAY' so erscheint erst unser hübscher ALV. Erst nachdem man auf Back oder F3 geklickt hat, sieht man die gewünschten Kommentare. Und genau hier kommt das Eventing vom ALV GRID ins Spiel. Um bestimmte den ALV flexibel zu halten haben die Entwickler bestimmte Punkte definiert, bei denen man eingreifen kann (Quasi wie BADIS). Die ganze liste aller verfügbaren events liefert der Baustein 'REUSE_ALV_EVENTS_GET'. Dieser hat einen Inputparameter I_LIST_TYPE (für den typ der liste. Nicht alle Listen haben die gleichen events). Dann muss man einfach einem event einen Perform zuordnen den man in seinem Report definiert hat. Diese Eventinformationen übergibt man dann in einer Tabelle an den REUSE_ALV_GRID_DISPLAY. Der Baustein ruft dann automatisch den Perform des eigenen Programms auf.

Und nun zur Praxis:
Zuerst baue ich mir den Header auf:

Code: Alles auswählen.

*&--------------------------------------------------------------------*
*&      Form  DO_TOP_OF_PAGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM do_top_of_page.
  DATA: ls_line TYPE slis_listheader,
        lt_top_of_page TYPE TABLE OF slis_listheader.

* Listenüberschrift: Typ H
  CLEAR ls_line.
  ls_line-typ  = 'H'.
* LS_LINE-KEY:  not used for this type
  ls_line-info = 'Na'.
  APPEND ls_line TO lt_top_of_page.
* Kopfinfo: Typ S
  CLEAR ls_line.
  ls_line-typ  = 'S'.
  ls_line-key  = 'wie'.
  ls_line-info = 'gehts'.
  APPEND ls_line TO lt_top_of_page.
* Aktionsinfo: Typ A
  CLEAR ls_line.
  ls_line-typ  = 'A'.
* LS_LINE-KEY:  not used for this type
  ls_line-info = 'so?'.
  APPEND ls_line TO  lt_top_of_page.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_top_of_page.

ENDFORM.                    "DO_TOP_OF_PAGE
Danach bestimme ich, bei welchem event diese form aufgerufen werden soll:

Code: Alles auswählen.

*&--------------------------------------------------------------------*
*&      Form  set_event_for_alv
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->LT_EVENTS  text
*---------------------------------------------------------------------*
FORM set_event_for_alv  USING lt_events TYPE slis_t_event.
  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = lt_events.
* prüfen, ob das event für den listentyp 0 gibt.
  READ TABLE lt_events WITH KEY name =  slis_ev_top_of_page
                           INTO ls_event.
  IF sy-subrc = 0.
* wenn ja dann unseren Perform setzten.
    MOVE 'DO_TOP_OF_PAGE' TO ls_event-form.
    APPEND ls_event TO lt_events.
  ENDIF.
ENDFORM.                    "set_event_for_alv
Für Kopf ist es der event TOP_OF_PAGE. Den setzten wir nun auf unseren Perform 'DO_TOP_OF_PAGE'. Damit dieser zum entsprechenden Zeitpunkt vom ALV gerufen
wird.

Und nun brauchen wir nur noch unseren altbekannten Baustein 'REUSE_ALV_GRID_DISPLAY' aufzurufen:

Code: Alles auswählen.

* call ALV
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      it_fieldcat        = lt_fieldcat
      it_events          = lt_events
    TABLES
      t_outtab           = lt_poarch
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
Worauf zu achten ist, dass man hier noch den Parameter i_callback_program mit dem aktuellen Programm befüllt. Das ist wichtig, damit der FuBa unseren in der Tabelle lt_events angegeben Perform findet.
Und das war?s auch schon. Nun haben wir einen ALV der nur die Daten aus unserem Fieldcatalog hat und eine entsprechende Listenüberschrift.

Über Feedback oder Ergänzungen würde ich mich freuen.

Gruß Azreal

ps. als anhang findet ihr das im Punkt 4 beschriebene Programm


Beitrag von Chrisu (Specialist / 225 / 0 / 1 ) » 26.06.2004 09:07

Super Tipp IMHO!

Danke! Kann ich selbst und viele andere sicher gut gebrauchen.

Btw: Ich bin zwar noch nicht so lang dabei wie viele andere hier aber ich muss dir beipflichten, das ist m.A. n. das beste deutschsprachige (SAP-)Forum das ich kenne. (neben der NG de.alt.comp.sapr3)

Gruß,
Christian.

Re: Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Beitrag von Alf (ForumUser / 6 / 0 / 0 ) » 20.07.2004 11:06

Azreal hat geschrieben:<snip>
Setzt man den FuBa Aufruf einfach vor den 'REUSE_ALV_GRID_DISPLAY' so erscheint erst unser hübscher ALV. Erst nachdem man auf Back oder F3 geklickt hat, sieht man die gewünschten Kommentare. Und genau hier kommt das Eventing vom ALV GRID ins Spiel.
<snip>
Und das war?s auch schon. Nun haben wir einen ALV der nur die Daten aus unserem Fieldcatalog hat und eine entsprechende Listenüberschrift.
ps. als anhang findet ihr das im Punkt 4 beschriebene Programm
Hi,
Habe den Anhang mal kopiert und getestet.
Zu welchem Zeitpunkt sollte da jetzt die Listüberschrift zu sehen sein?
Ist bei mir immer leer und bei F3 geht es raus aus dem Report/ALV.
Grüße, Alf
<INSERT CLEVER QUOTATION HERE>

Beitrag von Azreal (Specialist / 180 / 1 / 0 ) » 22.07.2004 17:03

Hi Alf,
hab ich mich da etwa zu ungenau ausgedrückt?!... Mit:
<snip>
Setzt man den FuBa Aufruf einfach vor den 'REUSE_ALV_GRID_DISPLAY' so erscheint erst unser hübscher ALV. Erst nachdem man auf Back oder F3 geklickt hat, sieht man die gewünschten Kommentare. Und genau hier kommt das Eventing vom ALV GRID ins Spiel.
meinte ich eigentlich... Das passiert, wenn man das eventing vom Alv Grid nicht berücksichtigt bzw den FuBa 'REUSE_ALV_COMMENTARY_WRITE' nicht im TOPOFPAGE event des alv grids aufrufst.

Modifiziere den report wie folgt und du hast das ergebnis das ich gemeint habe:

Code: Alles auswählen.

*>>>> START OF DELETION <<<<<
* build up ALV...
DATA: lt_events TYPE slis_t_event.
PERFORM set_event_for_alv USING lt_events.
*>>>> END OF DELETION <<<<<<<
*>>>> START OF INSERTION <<<<
PERFORM do_top_of_page.
*>>>> END OF INSERTION <<<<<<

Gruß und danke fürs lesen!
Azreal

Beitrag von babap (Expert / 677 / 1 / 1 ) » 23.07.2004 22:20

Hallo Azreal,

tolle Sache, Gratulation!

Jetzt habe ich noch mal eine Frage zu der letzten Korrektur:
Ich habe sie zwar noch nicht ausprobiert, aber Du setzt
>>>Start of Deletion<<< VOR der Definition von lt_events.
Später wird aber der 'REUSE_ALV_GRID_DISPLAY' aufgerufen und bekommt lt_events mitgegeben. Das führt entweder zu Syntaxfehler oder zu Kurzdump wenn es nicht definiert ist.

Bitte noch mal reinsehen, ich bin wirklich interessiert.

Danke
mfg.
babap

Beitrag von Azreal (Specialist / 180 / 1 / 0 ) » 24.07.2004 14:53

Hi Babap,
danke für den hinweis! Du hast natürlich voll und ganz recht. So sieht es richtig aus:

Code: Alles auswählen.

*>>>> START OF DELETION <<<<< 
PERFORM set_event_for_alv USING lt_events. 
*>>>> END OF DELETION <<<<<<< 
*>>>> START OF INSERTION <<<< 
PERFORM do_top_of_page. 
*>>>> END OF INSERTION <<<<<< 
Das davon, wenn man denkt ohne testen kommt man aus :roll:

Aber dies war nicht wirklich eine korrektur von dem report. Ich wollte vielmehr damit demonstrieren, was passiert wenn man den 'REUSE_ALV_COMMENTARY_WRITE' unabhängig vom ALV aufruft.

An dieser stelle nochmals vielen dank. Bin sehr erstaunt solch positives Feedback zu bekommen (schon allein die tatsache, daß sich jemand den beitrag durchließt ehrt mich ;) )

schönes WE!

Gruß Azreal

Beitrag von asano (ForumUser / 26 / 0 / 0 ) » 27.07.2004 11:12

noch nen hinweis zum fieldcatalog merge:
der baustein puffert die einmal gewonnen informationen. also nicht verzweifeln wenn plötzlich die strukturen nicht mehr passen oder alv grid dumpt!
es kann sein dass sich an der struktur die ihr anzeigt etwas geändert hat.

wenn ich mich recht entsinne gibt es in der schnittstelle einen parameter namen bypass_buffer oder so in der art...
ich selbst mach während der entwicklung wenn die strukturen noch nicht 100%ig feststehen immer ein free memory. (ab und zu mal aufräumen kann ja auch nicht schaden) mit dem debugger liesse sich sicherlich auch die memory id für den fieldcatalog-merge ausfindig machen...
Kaum macht mans richtig schon funktionierts!

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) » 26.08.2004 15:43

Hallo Azreal

super Bsp., hat mir weitergeholfen.
2 Fragen hätte ich noch:

) Wenn ich mein Prog. starte, habe ich wie beschrieben die Überschrift übern ALV.
Drück ich F3 oder BACK, kommt die Überschrift nochmal
(so wie von dir beschrieben, wenn ich kein event setzte). Wie bekomme ich das weg??


) ZITAT: ps. als anhang findet ihr das im Punkt 4 beschriebene Programm
konnte leider nur ein jpg finden

mfg
Richard

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) » 26.08.2004 16:00

Hallo

Hat sich erledigt.
Irgenwann kapierts ein jeder, auch ich. :oops:

mfg
Richard

Beitrag von hewaro (ForumUser / 2 / 0 / 0 ) » 06.10.2004 14:44

Hallo,

besten Dank für das gute Beispiel, das ich auch mal nachvollzogen habe.
Trotz allem hatte ich den Kopf erst nach F3. Und nachdem ich hoffentlich die Korrekturen richtig nachgezogen hatte, kam er garnicht mehr.

Mir fiel auf, daß beim Aufruf

Code: Alles auswählen.

REUSE_ALV_GRID_DISPLAY
     EXPORTING
          i_callback_program = sy-repid
          it_fieldcat        = lt_fieldcat
          it_events          = lt_events
stand, obwohl in der Doku des FB geschrieben wird, daß dies zwingend auf eine Variable gesetzt werden soll.
Gesagt, getan:

Code: Alles auswählen.

* BEGIN OF DELETION
* call ALV
*CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*     EXPORTING
*          i_callback_program = sy-repid
*          it_fieldcat        = lt_fieldcat
*          it_events          = lt_events
* END OF DELETION
* BEGIN OF INSERTION
* call ALV
DATA: prog    LIKE sy-repid.
prog = sy-repid.
* END OF INSERTION
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
          i_callback_program = prog
          it_fieldcat        = lt_fieldcat
          it_events          = lt_events
* END OF INSERTION
Ich hoffe, der Hinweis hilft einigen, die die Überschrift zusammen mit der Liste auf einem Screen sehen wollten, aber nicht bis dahin kamen.

Beitrag von kotelna (ForumUser / 27 / 2 / 0 ) » 22.10.2004 16:39

Hallo,

da ist mein Beitrag, wie man kann mit Varianten arbeiten. Man muss sich ein Parameter P_VARI auf dem Selectionscreen vorstellen, über den wird Anzeigevariante gesteuert (z.B. für Jobs). Danach ein Beitrag für USER_COMMAND.

Wichtige Bemerkung: Einzellne Teile sind aus verschiedenen Programmen geholt, also ist möglich, dass man konnte es besser schreiben. Hauptsache, das Programm funktioniert problemlos.

Code: Alles auswählen.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
         i_callback_program          = alv_repid
         i_callback_user_command     = 'USER_COMMAND'
         is_layout                   = alv_layout
         it_fieldcat                 = alv_fieldcat
         i_default                   = 'X'
         i_save                      = alv_save
         is_variant                  = variante
Mit diesem Code man kann eine Standardvariante suchen und Namen in ein Parameter auf dem Selektionscreen füllen:

Code: Alles auswählen.

initialization.

  variant_save = 'A'.
  clear variante.
  variante-report = sy-repid.
* Default-Variante holen:
  def_variante = variante.

  call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
       exporting
            i_save     = variant_save
       changing
            cs_variant = def_variante
       exceptions
            not_found  = 2.
  if sy-subrc = 0.
    p_vari = def_variante-variant.
  endif.
So man kann über die F4 Taste eine Variante suchen:

Code: Alles auswählen.

  call function 'REUSE_ALV_VARIANT_F4'
       exporting
            is_variant          = variante
            i_save              = variant_save
*           it_default_fieldcat =
       importing
            e_exit              = variant_exit
            es_variant          = def_variante
       exceptions
            not_found = 2.
  if sy-subrc = 2.
    message id sy-msgid type 'S' number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    if variant_exit = space.
      p_vari = def_variante-variant.
    endif.
  endif.
Und so wird die Variante an den GRID vergeben:

Code: Alles auswählen.

  if not p_vari is initial.
    move variante to def_variante.
    move p_vari to def_variante-variant.

    call function 'REUSE_ALV_VARIANT_EXISTENCE'
         exporting
              i_save     = variant_save
         changing
              cs_variant = def_variante.
    variante = def_variante.
  else.
    clear variante.
    variante-report = sy-repid.
  endif.
Und so man kann ablesen, was User gedrückt hat:

Code: Alles auswählen.

form user_command using r_ucomm like sy-ucomm
                        rs_selfield type slis_selfield.

  if r_ucomm = '&IC1'. "Doppelklick im Feld

    IF rs_selfield-value = ''.

      MESSAGE s398(00) WITH text-005 rs_selfield-fieldname '' ''.
* da wird nur Meldung ausgegeben, an welches Feld ist geklopft.

    ELSE.

    fld = rs_selfield-fieldname.
    inx = rs_selfield-tabindex.

    case fld.
      when 'EBELN'.
        set parameter id 'BES' field rs_selfield-value.
        call transaction 'ME22' and skip first screen.

...
Man kann über

Code: Alles auswählen.

I_CALLBACK_PF_STATUS_SET
analog zu USER_COMMAND ein eigenen PF_Status einsetzen und OK_CODE ablesen und reagieren.

Das war's von mir dazu.

Gruß

Kotelna

Reuse_ALV_...

Beitrag von Mario M?ller ( / / 0 / 3 ) » 23.06.2005 11:32

Ich habe ein JAVAScript gebaut, das Dir das Coding generiert:

http://www.list-editor.de/JAVASCRIPTS/J ... popup.html

Läuft evtl. nur im MS-IE.
Zunächst den Button "DEMO" betätigen, der erklärt alles.

Grüsse Mario

Beitrag von black_adept (Top Expert / 3341 / 60 / 623 ) » 23.06.2005 13:58

Hallo Mario,

warum denn nach JavaScript ausweichen. Das wäre doch mal eine Gelegenheit ein eigenes interaktives Muster für den Editor anzulegen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Cookbook: 'REUSE_ALV_GRID_DISPLAY' Wie man ihn benutzt?!

Beitrag von falk (ForumUser / 42 / 9 / 1 ) » 18.11.2005 14:01

Hallo Allerseits,

der hierbeschriebene Punkt 3 des Titelthemas bereitet mir einige Kopfschmerzen.
Ich habe eine kleine Auswertung über Kunden erstellt und die Tabellen:
KNA1, KNVK, KNVP und PA0002, die ich gern als ALV GRID ausgeben möchte (siehe Quellcode)

3. Keine ddic Struktur für i_structure_name? Kein Problem für den 'REUSE_ALV_FIELDCATALOG_MERGE'

Code: Alles auswählen.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name        = sy-repid
      i_internal_tabname    = 'SRESULT'
*      i_structure_name
*      i_client_never_display
      i_inclname            = 'ZMADDOGTOP'
    CHANGING
      ct_fieldcat            = lt_fieldcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

(Parameter i_program_name): Programmnamen
(Parameter i_inclname): Includenamen
(Parameter i_internal_tabname): Name des lokalen Datentypen

Nun zu meinen Fragen:
1. Was ist unter Includenamen zu verstehen? Hier wird dies leider nicht näher aufgeführt.
2. Entspricht der lokale Datentyp meiner internen Tabelle (also der Datenquelle)?

Über Tips zum gescheiten Einbau der hier vorgestellten Lösung wäre ich sehr dankbar.

Falk

Beitrag von ereglam (Top Expert / 1826 / 0 / 5 ) » 18.11.2005 15:37

Bitte keine Fragen in diesem Thread stellen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Mitglied im XING

Seite 1 von 2 (current) Nächste