*---------------------------------------------------------------------*
* Z _ B J H _ A L V _ O O *
* *
* Autor: Bernd Haase (BJH Software) *
*---------------------------------------------------------------------*
* ALV = ABAP List Viewer. Struktur und Funktionsbausteine für das *
* einfache Anzeigen von Reporting-Liststrukturen, ohne den Aufbau *
* über Write-Anweisung und Berechnung der Position durchführen zu *
* müssen. *
*---------------------------------------------------------------------*
* Beispielprogramm zur Anzeige von Bestellköpfen und deren Positionen,*
* ergänzt um ein grafisches Element. Hotspot auf die Bestellnummer *
* Anmerkung: ALV über Funktionsbaustein im Programm z_bjh_alv *
*---------------------------------------------------------------------*
* (A) Inner Join(2), FS, ALV OO *
*---------------------------------------------------------------------*
* 18.05.2005 BHaa: Programm kopiert aus z_bjh_alv *
* 23.05.2005 BHaa: In der Toolbar im ALV eigene Funktion als Test *
*---------------------------------------------------------------------*
REPORT z_bjh_alv_oo .
INCLUDE <icon>.
TABLES:
ekko, "Einkaufsbelegkopf
ekpo. "Einkaufsbelegposition
DATA:
* interner Parameter
anzahl(5) TYPE n.
***************
* Dynpro 9000 *
***************
* Dynpro für den Container, in dem der ALV angezeigt wird
DATA:
erster_lauf(1) TYPE c,
okcode LIKE sy-ucomm.
*****************
* ALV Variablen *
*****************
* Type Pool, wo alle Tabellen und Strukturen definiert sind, welche für
* die Listanzeige über ALV (ABAP List Viewer) benötigt werden
TYPE-POOLS:
slis.
* ALV typische Variablen
INCLUDE miolxtop.
* Klasse für Ereignisse vorankündigen (wegen Compiler)
CLASS lcl_ereignisse DEFINITION DEFERRED.
DATA:
* Container-Aufbau für ALV im OO-Modus
c_grid TYPE REF TO cl_gui_docking_container,
o_grid TYPE REF TO cl_gui_alv_grid,
* Ereignis-Klasse für Aktionen im ALV
event_receiver TYPE REF TO lcl_ereignisse.
DATA:
* Beschreibung der Attribute zu einem Feld
gs_fieldcat TYPE lvc_s_fcat,
gt_fieldcat TYPE lvc_t_fcat,
* Sortierfolge Feld
gs_sort TYPE lvc_s_sort,
gt_sort TYPE lvc_t_sort,
* Eigenschaften der Liste, Beschreibung des LayOuts
gs_layout TYPE lvc_s_layo,
* Variante zur Layoutgestaltung
gs_variante TYPE disvariant,
* Name des Programmes und Dynpro für den ALV-Container
prog_name LIKE sy-repid,
dynpro_alv LIKE sy-dynnr VALUE '9000'.
**************
* Bestellung *
**************
* für das Beispiel dient die Bestellpositionstabelle
DATA:
* Werteinhalte für die auszugebende Liste. Achtung: anscheinend können
* geschachtelte Strukturen nicht ordnungsgemäß ausgegeben werden,
* deswegen der Umweg über ausw-Struktur und move-corresponding
BEGIN OF wa_alv,
ebeln LIKE ekko-ebeln,
ebelp LIKE ekpo-ebelp,
bstyp LIKE ekko-bstyp,
lifnr LIKE ekko-lifnr,
matnr LIKE ekpo-matnr,
meins LIKE ekpo-meins,
menge LIKE ekpo-menge,
werks LIKE ekpo-werks,
netwr LIKE ekpo-netwr,
* Zusatzfelder, die berechnet werden
selected(1) TYPE c,
ampel(20) TYPE c,
* Pushbutton mit einem grafischen Symbol
pb LIKE icons-text,
END OF wa_alv,
itab_alv LIKE TABLE OF wa_alv.
FIELD-SYMBOLS:
<fs_alv> LIKE wa_alv.
*---------------------------------------------------------------------*
* CLASS DEFINITION *
* *
* L C L _ E R E I G N I S S E *
*---------------------------------------------------------------------*
* Definition, welche Ereignisse im ALV vorkommen können. *
*---------------------------------------------------------------------*
CLASS lcl_ereignisse DEFINITION.
PUBLIC SECTION.
METHODS:
alv_init_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive,
alv_hotspot
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no,
button_toolbar
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm,
button_click
FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING
es_col_id
es_row_no.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS IMPLEMENTATION *
* *
* L C L _ E R E I G N I S S E *
*---------------------------------------------------------------------*
CLASS lcl_ereignisse IMPLEMENTATION.
*---------------------------------------------------------------------*
* CLASS IMPLEMENTATION *
* *
* L C L _ E R E I G N I S S E *
* *
* A L V _ I N I T _ T O O L B A R *
*---------------------------------------------------------------------*
* Zusatzfunktionen in der ALV-Toolbar definieren. *
*---------------------------------------------------------------------*
METHOD alv_init_toolbar.
DATA: gs_toolbar TYPE stb_button.
CLEAR gs_toolbar.
* Separator / Trennlinie (s. Wertebereich in der Domäne)
MOVE 3 TO gs_toolbar-butn_type.
APPEND gs_toolbar TO e_object->mt_toolbar.
* Funktion einbauen. Es soll in der ALV-Toolbar ein neuer Button
* generiert werden, der anwendungsspeziell ist
CLEAR gs_toolbar.
MOVE 'ALV_FKT_1' TO gs_toolbar-function.
MOVE icon_generate TO gs_toolbar-icon.
MOVE 'Testfunktion 1' TO gs_toolbar-quickinfo.
MOVE ' Test' TO gs_toolbar-text.
MOVE ' ' TO gs_toolbar-disabled.
APPEND gs_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
*---------------------------------------------------------------------*
* CLASS IMPLEMENTATION *
* *
* L C L _ E R E I G N I S S E *
* *
* B U T T O N _ C L I C K *
*---------------------------------------------------------------------*
* in der ALV-Matrix wurde der Pushbutton gedrückt. Die Grafik des *
* Druckknopfes soll die Unterschriftenregelung bei Bestellungen symbo-*
* lisieren. Wenn dort gedrückt wird, soll in die Bestellung, die zu *
* dieser Position gehört, gesprungen werden. *
*---------------------------------------------------------------------*
METHOD button_click.
* welche Zeile wurde gedrückt.
READ TABLE itab_alv INTO wa_alv INDEX es_row_no-row_id.
IF sy-subrc = 0.
CASE es_col_id-fieldname.
WHEN 'PB'.
* Pushbutton mit der Unterschriftenregelung angeklickt. Hier im Bei-
* spiel wird nun in die Bestellung verzweigt
IF NOT wa_alv-ebeln IS INITIAL.
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
EXPORTING
i_ebeln = wa_alv-ebeln
i_enjoy = 'X'
i_bstyp = wa_alv-bstyp
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDCASE.
ENDIF.
ENDMETHOD.
*---------------------------------------------------------------------*
* CLASS IMPLEMENTATION *
* *
* L C L _ E R E I G N I S S E *
* *
* B U T T O N _ T O O L B A R *
*---------------------------------------------------------------------*
* Zusatzfunktionen in der Toolbar des ALV. Diese werden hier abgefragt*
* und entsprechend reagiert. *
*---------------------------------------------------------------------*
METHOD button_toolbar.
CASE e_ucomm.
WHEN 'ALV_FKT_1'.
* Aktionen zu dieser Funktion. Keine hinterlegt, es soll nur gezeigt
* werden, wie das Durchsteuern von gedrückter Taste bis zur Ausführung
* programmtechnisch umzusetzen ist
MOVE e_ucomm TO e_ucomm.
ENDCASE.
ENDMETHOD.
*---------------------------------------------------------------------*
* CLASS IMPLEMENTATION *
* *
* L C L _ E R E I G N I S S E *
* *
* A L V _ H O T S P O T *
*---------------------------------------------------------------------*
* ein im ALV unterlegtes Feld mit Hotspot-Variante ist gedrückt *
* worden. Auswertung, welches Feld in welcher Zeile und entsprechend *
* des Feldes weitere Verzweigungen oder Absprünge durchführen *
*---------------------------------------------------------------------*
METHOD alv_hotspot.
READ TABLE itab_alv INTO wa_alv INDEX es_row_no-row_id.
IF sy-subrc = 0.
CASE e_column_id-fieldname.
* Doppelklick auf das Material. Springen in den Materialstamm. Als
* Sichten sind Grunddaten und Einkauf eingestellt
WHEN 'MATNR'.
IF NOT wa_alv-matnr IS INITIAL.
SET PARAMETER ID 'MAT' FIELD wa_alv-matnr.
SET PARAMETER ID 'WRK' FIELD wa_alv-werks.
SET PARAMETER ID 'LAG' FIELD ' '.
* B=Buchhaltung1, D=Disposition1, E=Einkauf, K=Grunddaten,
* L=Werksdaten / Lagerung 1, X=Werksbestand, Z=
SET PARAMETER ID 'MXX' FIELD 'KE'.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDIF.
ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
* *
* A u s w a h l b i l d s c h i r m *
* *
*---------------------------------------------------------------------*
* Auswahlbildschirm zur Eingrenzung der Bestellungen
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-901.
SELECT-OPTIONS:
* Lieferantennummer
solifnr FOR ekko-lifnr,
* Bestellnummern
soebeln FOR ekko-ebeln,
* Materialnummern
somatnr FOR ekpo-matnr.
SELECTION-SCREEN: END OF BLOCK a1.
INITIALIZATION.
MOVE '1' TO erster_lauf.
MOVE sy-repid TO prog_name.
***********************************************************************
* *
* P R O G R A M M S T A R T *
* *
***********************************************************************
* Dynpro basierte Methodik, deswegen kein start-of-selection
AT SELECTION-SCREEN.
* Selektion der Datensätze auf Basis der Vorabauswahl
SELECT
ij_ekko~ebeln
ij_ekpo~ebelp
ij_ekko~bstyp
ij_ekko~lifnr
ij_ekpo~matnr
ij_ekpo~meins
ij_ekpo~menge
ij_ekpo~werks
ij_ekpo~netwr
FROM ekko AS ij_ekko
INNER JOIN ekpo AS ij_ekpo
ON ij_ekko~ebeln = ij_ekpo~ebeln
INTO TABLE itab_alv
WHERE ij_ekko~ebeln IN soebeln
AND ij_ekko~lifnr IN solifnr
AND ij_ekko~loekz = ' '
AND ij_ekpo~matnr IN somatnr
AND ij_ekpo~loekz = ' '.
LOOP AT itab_alv ASSIGNING <fs_alv>.
* zu Beispielzwecken Ampel einblenden, die an den Preis gekoppelt ist
* Pushbutton soll die Unterschrifthierarchie symbolisieren, wer alles
* unterschreiben muß
IF <fs_alv>-netwr > 10000.
MOVE icon_red_light TO <fs_alv>-ampel.
* Symbolisiert: Unterschrift durch Vorgesetzen und Abteilungsleiter
MOVE icon_shared_position TO <fs_alv>-pb.
ELSE.
IF <fs_alv>-netwr > 300.
MOVE icon_yellow_light TO <fs_alv>-ampel.
* Symbolisiert: Unterschrift durch Vorgesetzen
MOVE icon_position_hr TO <fs_alv>-pb.
ELSE.
MOVE icon_green_light TO <fs_alv>-ampel.
* Keine weitere Unterschrift von nöten.
* Natürlich könnten statt der Grafik auch Texte angezeigt werden
MOVE icon_space TO <fs_alv>-pb.
* MOVE 'keine' TO -pb.
ENDIF.
ENDIF.
ENDLOOP.
DESCRIBE TABLE itab_alv LINES anzahl.
* es wurden Datensätze selektiert
IF anzahl > 0.
* Ausgabeformat bestimmen
PERFORM upro-alv_init_layout.
* die Ausgabetabelle aufbauen
PERFORM upro-alv_init_fieldcat.
* Sortierfolge festlegen
PERFORM upro-alv_init_sort.
* Liste nach Bestellnummer sortieren
SORT itab_alv BY ebeln ebelp ASCENDING.
* Bildschirm wecheln, in dem der ALV-Container liegt
LEAVE TO SCREEN dynpro_alv.
ENDIF.
END-OF-SELECTION.
EXIT.
*---------------------------------------------------------------------*
* Module S T A T U S _ 9 0 0 0 OUTPUT *
*---------------------------------------------------------------------*
* Dynpro, welches den ALV sichtbar macht, wechseln *
* OO-Methodik für den ALV aktivieren *
*---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
* Aktionszeile, hinterlegt sind nur zurück, Programmende und Abbruch
SET PF-STATUS '9000'.
* SET TITLEBAR 'xxx'.
PERFORM upro-alv_oo_vorbereitung.
ENDMODULE.
*---------------------------------------------------------------------*
* Module D Y N P R O _ C O M M A N D _ 9 0 0 0 INPUT *
*---------------------------------------------------------------------*
* Aktionen, die im Container-Dynpro ausgelöst wurden. Hinterlegt sind *
* nur die Zurückgehe- und Abbruchaktionen *
*---------------------------------------------------------------------*
MODULE upro-dynpro_command_9000 INPUT.
CASE okcode.
WHEN 'ZURU'
OR '&F12'.
LEAVE TO SCREEN '1000'.
WHEN 'ENDE'
OR '&F15'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*---------------------------------------------------------------------*
* A L V _ I N I T _ L A Y O U T *
*---------------------------------------------------------------------*
* allgemeines Layout für die Aufbereitung im ALV bestimmen und para- *
* metrisieren. *
*---------------------------------------------------------------------*
FORM upro-alv_init_layout.
CLEAR: gs_layout.
* Format der Ausgabe definieren. Es sind nur die Attribute besetzt, die
* nicht dem Initialisierungszustand entsprechen
gs_layout-zebra = ' '. "Zeilen straffiert darstellen
* Merge von Zellen ausschalten. Ohne Zusammenfassen von Einträgen bei
* Sortierung. Achtung: FB=REUSE_ALV_TRANSFER_DATA Wert=N setzen. Prüfen
* ob dieses auch in CL-Methodik so ist !
gs_layout-no_merging = 'N'.
* Aktionscode beim Doppelklick, bei Attributen, wo Hotspot gesetzt ist
* F2 sollte im Gui-Status auch mit ANZ belegt sein (Variante LIST)
* gs_layout-f2code = 'ANZ'.
* Varianten sichern zulassen
CLEAR: gs_variante.
MOVE sy-repid TO prog_name.
MOVE prog_name TO gs_variante-report.
* MOVE sy-uname TO gs_variante-username.
MOVE '/BJH' TO gs_variante-variant.
ENDFORM.
*---------------------------------------------------------------------*
* A L V _ I N I T _ F I E L D C A T *
*---------------------------------------------------------------------*
* Ausgabereihenfolge der anzuzeigenden Liste definieren. Falls Aufbau *
* nicht dem Standard entsprechen sollte oder mehrzeilig dargestellt *
* wird, dann sind die Parameter row_pos und col_pos auch zu setzen *
* im Beispiel: 1-stufig, 1-zeilig, Bildchen (Icon) + 7 Elemente *
*---------------------------------------------------------------------*
FORM upro-alv_init_fieldcat.
CLEAR: gt_fieldcat, gs_fieldcat.
REFRESH: gt_fieldcat.
gs_fieldcat-fieldname = 'AMPEL'.
* Überschrift zu diesen Feld, da keinem Data Dictionary zugeordnet ist
gs_fieldcat-reptext = 'Ampel'.
* Ampel als Bildchen ausgeben
gs_fieldcat-icon = 'X'.
* Länge des Anzeigefeldes am Bildschirm
gs_fieldcat-outputlen = 5.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
* Pushbutton aktivieren, bei dem durch Drücken eine Aktion durchgeführt
* werden soll
gs_fieldcat-fieldname = 'PB'.
gs_fieldcat-reptext = 'Unterschrift'.
gs_fieldcat-icon = 'X'.
gs_fieldcat-outputlen = 3.
gs_fieldcat-style = cl_gui_alv_grid=>mc_style_button.
* Styl 'Pushbutton' setzen. Siehe Attributliste der Klasse
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'LIFNR'.
gs_fieldcat-tabname = 'EKKO'.
gs_fieldcat-ref_field = 'LIFNR'.
gs_fieldcat-ref_table = 'EKKO'.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'EBELN'.
gs_fieldcat-tabname = 'EKKO'.
gs_fieldcat-ref_field = 'EBELN'.
gs_fieldcat-ref_table = 'EKKO'.
* gs_fieldcat-row_pos = 1. "Positionierung : in welcher Reihe Feld
* gs_fieldcat-col_pos = 1. "Pos.der Spalte : ausgeben wird
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'EBELP'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'EBELP'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 1.
* gs_fieldcat-col_pos = 2.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'MATNR'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'MATNR'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 2.
* gs_fieldcat-col_pos = 1.
* Materialnummer, Doppelklick für Extra-Aktionen zulassen
gs_fieldcat-hotspot = 'X'.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'WERKS'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'WERKS'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 1.
* gs_fieldcat-col_pos = 3.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'MENGE'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'MENGE'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 2.
* gs_fieldcat-col_pos = 2.
* Wertefeld / Zahl, rechtbündig ausgeben
gs_fieldcat-just = 'R'.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'MEINS'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'MEINS'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 2.
* gs_fieldcat-col_pos = 3.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'NETWR'.
gs_fieldcat-tabname = 'EKPO'.
gs_fieldcat-ref_field = 'NETWR'.
gs_fieldcat-ref_table = 'EKPO'.
* gs_fieldcat-row_pos = 2.
* gs_fieldcat-col_pos = 3.
* Wert der Position. In der Standardanzeige nicht anzeigen, aber im
* LayOut-Vorrat vorhalten
gs_fieldcat-no_out = 'X'.
* rechtbündig ausgeben
gs_fieldcat-just = 'R'.
APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat.
ENDFORM.
*---------------------------------------------------------------------*
* A L V _ I N I T _ S O R T *
*---------------------------------------------------------------------*
* standardisierte Sortierung der Anzeige definieren. Im Beispiel ist *
* das Feld Materialnummer als aufsteigend angegeben. *
* Einstiegsvariante. Übersteuert Standard-Variante, wenn sie im ALV *
* hinterlegt ist. Tabelle für die Speicherung der Varianten in den *
* Programmen ist die LTDX *
*---------------------------------------------------------------------*
FORM upro-alv_init_sort.
CLEAR: gt_sort, gs_sort, gs_variante.
REFRESH: gt_sort.
CLEAR gs_sort.
gs_sort-fieldname = 'MATNR'.
gs_sort-spos = 1.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
APPEND gs_sort TO gt_sort.
MOVE sy-repid TO prog_name.
MOVE prog_name TO gs_variante-report.
* MOVE '/BJH' TO gs_variante-variant.
ENDFORM.
*---------------------------------------------------------------------*
* A L V _ O O _ V O R B E R E I T U N G *
*---------------------------------------------------------------------*
* Nur im ersten Lauf: Objekte generieren. Dazu zählt neben dem ALV *
* auch, daß das Objekt für die Ereignisse aufgebaut wird. Die benötig-*
* ten Ereignisse werden dazugefügt. *
* Bei jedem Aufruf des Container-Dynpros auf jeden Fall den ALV aktua-*
* lisieren, auch wenn in diesem Beispielprogramm dazwischen nichts *
* geschieht. *
*---------------------------------------------------------------------*
FORM upro-alv_oo_vorbereitung.
IF erster_lauf = '1'.
CREATE OBJECT c_grid
EXPORTING
repid = prog_name
dynnr = dynpro_alv
side = cl_gui_docking_container=>dock_at_left
extension = 1200
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.
IF sy-subrc <> 0.
* Fehler beim erzeugen eines &1. Abbruch!
MESSAGE a110(zc) WITH text-005.
ENDIF.
CREATE OBJECT o_grid
EXPORTING
i_parent = c_grid
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5
.
IF sy-subrc <> 0.
MESSAGE a110(zc) WITH text-006.
ENDIF.
* Ereignisse für den ALV aktivieren
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->alv_init_toolbar FOR o_grid.
SET HANDLER event_receiver->alv_hotspot FOR o_grid.
SET HANDLER event_receiver->button_click FOR o_grid.
SET HANDLER event_receiver->button_toolbar FOR o_grid.
ENDIF.
* sichern nur im Modus X (Systemspezifisch), A=System und Benutzer
* unterdrückt die Anzeige zum Sichern
CALL METHOD o_grid->set_table_for_first_display
EXPORTING
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CONSISTENCY_CHECK =
* i_structure_name =
is_variant = gs_variante
i_save = 'X'
i_default = 'X'
is_layout = gs_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
CHANGING
it_outtab = itab_alv
it_fieldcatalog = gt_fieldcat
* IT_SORT = gt_sort
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
MOVE 'N' TO erster_lauf.
ENDFORM.
***** Ende *****
* Copyright BJH Software, Datei überarbeitet am: 23.7.2005