Feldkatalog auf basis einer Itab

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Feldkatalog auf basis einer Itab

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
Hallo,
ich möchte eine ALV basierend auf einer internen Tabelle erstellen dessen Typ ich mir im Code erzeuge:

Code: Alles auswählen.

TYPES: BEGIN OF t_marc,
 matnr LIKE marc-matnr,
 werks LIKE marc-werks,
 maktx LIKE makt-maktx,
 dismm LIKE marc-dismm,
 dispo LIKE marc-dispo,
 beskz LIKE marc-beskz,
 sobsl LIKE marc-sobsl,
 kzaus LIKE marc-kzaus,
 ausdt LIKE marc-ausdt,
 nfmat LIKE marc-nfmat,
  END OF t_marc.
Aus diesem Typen erzeuge ich mir eine interne Tabelle:

Code: Alles auswählen.

DATA: lt_marc TYPE STANDARD TABLE OF t_marc.
Wenn ich diese Tabelle ODER nur den Typen (als Struktur und als Parameter natürlich auch der für Strukturen) an den Baustein für den Feldkatalog übergebe wird mir kein Feldkatalog erzeugt und der folgende Fuba zum erstellen des ALVs dumpd:

Code: Alles auswählen.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_inclname             = sy-repid
      i_program_name         = sy-repid
      i_internal_tabname     = 'LT_MARC'
    CHANGING
      ct_fieldcat            = gt_fcat_2000
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      i_callback_user_command = 'USERCMND'
      it_fieldcat             = gt_fcat_2000
    TABLES
      t_outtab                = lt_marc.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

Ich habe es auch schon nur mit Beginn of bei der Deklaration der Struktur versucht, hat aber auch nichts gebracht.Ich bin für jeden hinweis dankbar.

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


Re: Feldkatalog auf basis einer Itab

Beitrag von DeathAndPain (Top Expert / 1978 / 265 / 418 ) »
Man übergibt nicht SY-REPID, weil der Wert sich im Fuba ändert. Kopier den Wert in eine Variable LIKE SY-REPID um und übergib die. Sollte bei diesem Fuba zwar theoretisch keine Rolle spielen, da er alle seine Parameter per Wertübergabe übergibt, aber ich habe sowas schon mal gelesen, und alle Einsatzbeispiele, die ich auf die Schnelle von diesem Fuba im Netz finden konnte, machen es auch so.

Re: Feldkatalog auf basis einer Itab

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
DeathAndPain hat geschrieben:Man übergibt nicht SY-REPID, weil der Wert sich im Fuba ändert. Kopier den Wert in eine Variable LIKE SY-REPID um und übergib die. Sollte bei diesem Fuba zwar theoretisch keine Rolle spielen, da er alle seine Parameter per Wertübergabe übergibt, aber ich habe sowas schon mal gelesen, und alle Einsatzbeispiele, die ich auf die Schnelle von diesem Fuba im Netz finden konnte, machen es auch so.
Werd ich machen aber auf die Erstellung meines Feldkatalogs hat das ja dann keine Auswirkung oder?

Re: Feldkatalog auf basis einer Itab

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Man übergibt nicht SY-REPID, weil der Wert sich im Fuba ändert. Kopier den Wert in eine Variable LIKE SY-REPID um und übergib die. Sollte bei diesem Fuba zwar theoretisch keine Rolle spielen, da er alle seine Parameter per Wertübergabe übergibt, aber ich habe sowas schon mal gelesen, und alle Einsatzbeispiele, die ich auf die Schnelle von diesem Fuba im Netz finden konnte, machen es auch so.
Das ist seit Release 6.10 nicht mehr so. Siehe aktuelle Dokumentation bzw. News

Re: Feldkatalog auf basis einer Itab

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
Dele hat geschrieben:
Man übergibt nicht SY-REPID, weil der Wert sich im Fuba ändert. Kopier den Wert in eine Variable LIKE SY-REPID um und übergib die. Sollte bei diesem Fuba zwar theoretisch keine Rolle spielen, da er alle seine Parameter per Wertübergabe übergibt, aber ich habe sowas schon mal gelesen, und alle Einsatzbeispiele, die ich auf die Schnelle von diesem Fuba im Netz finden konnte, machen es auch so.
Das ist seit Release 6.10 nicht mehr so. Siehe aktuelle Dokumentation bzw. News
An was liegt es dann das mir kein Feldkatalog erstellt wird?

Re: Feldkatalog auf basis einer Itab

Beitrag von Romaniac (Specialist / 223 / 65 / 28 ) »
Also wenn ich mich richtig entsinne darf der Typ nicht mit types angelegt sein sondern mit data:

Code: Alles auswählen.

DATA: BEGIN OF t_marc,
 matnr LIKE marc-matnr,
 werks LIKE marc-werks,
 maktx LIKE makt-maktx,
 dismm LIKE marc-dismm,
 dispo LIKE marc-dispo,
 beskz LIKE marc-beskz,
 sobsl LIKE marc-sobsl,
 kzaus LIKE marc-kzaus,
 ausdt LIKE marc-ausdt,
 nfmat LIKE marc-nfmat,
  END OF t_marc.

Folgende Benutzer bedankten sich beim Autor Romaniac für den Beitrag:
Daniel

Geht nicht gibts nicht

Re: Feldkatalog auf basis einer Itab

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
Romaniac hat geschrieben:Also wenn ich mich richtig entsinne darf der Typ nicht mit types angelegt sein sondern mit data:

Code: Alles auswählen.

DATA: BEGIN OF t_marc,
 matnr LIKE marc-matnr,
 werks LIKE marc-werks,
 maktx LIKE makt-maktx,
 dismm LIKE marc-dismm,
 dispo LIKE marc-dispo,
 beskz LIKE marc-beskz,
 sobsl LIKE marc-sobsl,
 kzaus LIKE marc-kzaus,
 ausdt LIKE marc-ausdt,
 nfmat LIKE marc-nfmat,
  END OF t_marc.
Diese Variante hatte ich auch schon getestet...

Re: Feldkatalog auf basis einer Itab

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
Alternativen:
1) Verwende statt eines CL_GUI_ALV_GRID den CL_SALV_TABLE
2) Lege die Struktur im DDIC ab und verwende den Parameter I_STRUCTURE_NAME des REUSE_ALV_FIELDCATALOG_MERGE
3) Kopiere die Logik des SALV aus der Klasse CL_SALV_DATA_DESCR (DESCRIBE_TABLE, READ_STRUCTDESCR und FILL_COLUMN)
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: Feldkatalog auf basis einer Itab

Beitrag von black_adept (Top Expert / 4136 / 131 / 956 ) »
https://wiki.scn.sap.com/wiki/display/S ... +ANY+table
Ach ja - in den Kommentaren zu dem Beitrag steht auch noch ein Trick mit dem man die F1- und F4-Hilfen im Feldkatalog automatisch bekommt. Und ich persönlich verwende eine weitere Ergänzung, die mir für Felder ohne Beschreibung ( wenn z.B. eineSpalte intern vom Typ String oder i in der Tabelle vorkommt ) noch den Spaltennamen in die Spaltenüberschrift setzt

Code: Alles auswählen.

*--------------------------------------------------------------------*
* Internal fields w/o descriptions --> set fieldname into header line
*--------------------------------------------------------------------*
      LOOP AT et_fieldcat ASSIGNING <ls_fc> WHERE scrtext_s = space
                                              AND scrtext_m = space
                                              AND scrtext_l = space.

        <ls_fc>-scrtext_m = <ls_fc>-fieldname.

      ENDLOOP.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Feldkatalog auf basis einer Itab

Beitrag von DeathAndPain (Top Expert / 1978 / 265 / 418 ) »
Na ja, für mich ist der REUSE_ALV_FIELDCATALOG_MERGE etwas für faule Leute. Ich spezifiziere die Zeilentypen meiner ALVs immer manuell. Dann kann ich Spaltenbreiten und Beschriftungen individuell auf das Programm abstimmen, und in aller Regel habe ich sowieso die eine oder andere Spalte dabei, die nicht einfach aus dem DDIC stammt, sondern durch das Programm berechnet wird.

Dabei gebe ich zu, dass REUSE_ALV_FIELDCATALOG_MERGE Vorteile bei der Sprachenübersetzung bietet, weil die Spalten damit auch automatisch in alle im DDIC definierten Sprachen übersetzt sind.

Re: Feldkatalog auf basis einer Itab

Beitrag von ralf.wenzel (Top Expert / 3956 / 204 / 281 ) »
DeathAndPain hat geschrieben:Na ja, für mich ist der REUSE_ALV_FIELDCATALOG_MERGE etwas für faule Leute.
Und gerade, wenn man i_structure nicht verwendet, von der Performance her suboptimal.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: Feldkatalog auf basis einer Itab

Beitrag von DeathAndPain (Top Expert / 1978 / 265 / 418 ) »
Na ja, das dürfte egal sein, da man den Befehl ja nicht in Schleifen verwenden wird, sondern nur einmalig direkt vor der ALV-Ausgabe. So schlecht wird der ja hoffentlich nicht sein, dass er die ALV-Ausgabe nennenswert verzögert.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel


Re: Feldkatalog auf basis einer Itab

Beitrag von ralf.wenzel (Top Expert / 3956 / 204 / 281 ) »
DeathAndPain hat geschrieben:Na ja, das dürfte egal sein, da man den Befehl ja nicht in Schleifen verwenden wird, sondern nur einmalig direkt vor der ALV-Ausgabe. So schlecht wird der ja hoffentlich nicht sein, dass er die ALV-Ausgabe nennenswert verzögert.
In der Hilfe zum Funktionsbaustein steht das ebenso drin
Aus Performancegesichtspunkten suboptimal, da stets zur Laufzeit das Coding der Tabellendefinition nachgelesen und interpretiert werden muß.
wie auch die Antwort auf die ursprüngliche Frage:
Dictionaryreferenzen werden nur dann berücksichtigt, wenn die Schlüsselwörter LIKE oder INCLUDE STRUCTURE verwendet werden (kein TYPE).

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Re: Feldkatalog auf basis einer Itab

Beitrag von DeathAndPain (Top Expert / 1978 / 265 / 418 ) »
ralf.wenzel hat geschrieben:
DeathAndPain hat geschrieben:Na ja, das dürfte egal sein, da man den Befehl ja nicht in Schleifen verwenden wird, sondern nur einmalig direkt vor der ALV-Ausgabe. So schlecht wird der ja hoffentlich nicht sein, dass er die ALV-Ausgabe nennenswert verzögert.
In der Hilfe zum Funktionsbaustein steht das ebenso drin
Aus Performancegesichtspunkten suboptimal, da stets zur Laufzeit das Coding der Tabellendefinition nachgelesen und interpretiert werden muß.
ich glaube, dass an der Stelle eine vom SAP-Hilfetext abweichende Meinung zu rechtfertigen ist, da es sich wie gesagt um einen einmaligen Aufruf pro Programmstart handelt. In den Onlinedokus zu Funktionsbausteinen steht eine Menge Zweifelhaftes drin, beispielsweise "Die Dokumentation zu diesem Funktionsbaustein wird noch verbessert, so dass sie auch formal den Qualitätskriterien der SAP genügt." (Hab ich jetzt aus der Erinnerung zitiert, da ich aus dem Stegreif nicht mehr weiß, in welchen FBs das drinstand, aber es waren mehr als einer, und ich wette, Du hast diesen netten Text selber schon zu sehen bekommen.) Zu beachten ist dabei, dass das in dem jeweiligen Baustein schon seit zahlreichen Jahren so drinsteht.

Re: Feldkatalog auf basis einer Itab

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Für "schnell mal eben" ist das eine ganz prima Sache.
3 Dinge sind zu beachten:
Definition nur mit LIKE, kein TYPE,
Die Zeilenlänge des Codings in dem die Definition steht
darf 72 Zeichen nicht überschreiten,
wenn an der Definition geändert wurde muss der Puffer
abgeschaltet werden. Der Feldkatalog wird nur beim ersten
Aufruf erzeugt und dann wiederverwendet.

Vergleichbare Themen

30
Antw.
15353
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
1
Antw.
1410
Views
von ABA und BASIS 620 auf 640 wie?
von Leo » 22.08.2005 11:03 • Verfasst in SAP - Allgemeines
0
Antw.
1346
Views
Azubiverwaltung auf Basis SAP HCM
von Stentor » 19.08.2008 10:38 • Verfasst in Human Resources
2
Antw.
3137
Views
Mini SAP Basis
von flojo » 14.11.2005 16:37 • Verfasst in Web Application Server
4
Antw.
4295
Views
Basis Update
von commolus » 18.06.2013 09:13 • Verfasst in Sonstige Module

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.