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.
Code: Alles auswählen.
DATA: lt_marc TYPE STANDARD TABLE OF t_marc.
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.
Werd ich machen aber auf die Erstellung meines Feldkatalogs hat das ja dann keine Auswirkung oder?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.
Das ist seit Release 6.10 nicht mehr so. Siehe aktuelle Dokumentation bzw. NewsMan ü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.
An was liegt es dann das mir kein Feldkatalog erstellt wird?Dele hat geschrieben:Das ist seit Release 6.10 nicht mehr so. Siehe aktuelle Dokumentation bzw. NewsMan ü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.
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...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.
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.
Und gerade, wenn man i_structure nicht verwendet, von der Performance her suboptimal.DeathAndPain hat geschrieben:Na ja, für mich ist der REUSE_ALV_FIELDCATALOG_MERGE etwas für faule Leute.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel
In der Hilfe zum Funktionsbaustein steht das ebenso drinDeathAndPain 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.
wie auch die Antwort auf die ursprüngliche Frage:Aus Performancegesichtspunkten suboptimal, da stets zur Laufzeit das Coding der Tabellendefinition nachgelesen und interpretiert werden muß.
Dictionaryreferenzen werden nur dann berücksichtigt, wenn die Schlüsselwörter LIKE oder INCLUDE STRUCTURE verwendet werden (kein TYPE).
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.ralf.wenzel hat geschrieben:In der Hilfe zum Funktionsbaustein steht das ebenso drinDeathAndPain 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.
Aus Performancegesichtspunkten suboptimal, da stets zur Laufzeit das Coding der Tabellendefinition nachgelesen und interpretiert werden muß.