Sie sind auf Seite 1von 196

ALV Grid Control (BC-SRV-ALV)

HELP.BCSRVALV
HELP.BCSRVALV

Release 4.6C

ALV Grid Control (BC-SRV-ALV) HELP.BCSRVALV Release 4.6C

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Copyright

© Copyright 2001 SAP AG. Alle Rechte vorbehalten.

Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher Form auch immer, ohne die ausdrückliche schriftliche Genehmigung durch SAP AG nicht gestattet. In dieser Publikation enthaltene Informationen können ohne vorherige Ankündigung geändert werden.

Die von SAP AG oder deren Vertriebsfirmen angebotenen Software-Produkte können Software- Komponenten auch anderer Software-Hersteller enthalten.

Microsoft ® , WINDOWS ® , NT ® , EXCEL ® , Word ® , PowerPoint ® und SQL Server ® sind eingetragene Marken der Microsoft Corporation.

IBM ® , DB2 ® , OS/2 ® , DB2/6000 ® , Parallel Sysplex ® , MVS/ESA ® , RS/6000 ® , AIX ® , S/390 ® , AS/400 ® , OS/390 ® und OS/400 ® sind eingetragene Marken der IBM Corporation.

ORACLE ® ist eine eingetragene Marke der ORACLE Corporation.

INFORMIX ® -OnLine for SAP und Informix ® Dynamic Server TM sind eingetragene Marken der Informix Software Incorporated.

UNIX ® , X/Open ® , OSF/1 ® und Motif ® sind eingetragene Marken der Open Group.

HTML, DHTML, XML, XHTML sind Marken oder eingetragene Marken des W3C ® , World Wide Web Consortium, Massachusetts Institute of Technology.

JAVA ® ist eine eingetragene Marke der Sun Microsystems, Inc.

JAVASCRIPT ® ist eine eingetragene Marke der Sun Microsystems, Inc., verwendet unter der Lizenz der von Netscape entwickelten und implementierten Technologie.

SAP, SAP Logo, R/2, RIVA, R/3, ABAP, SAP ArchiveLink, SAP Business Workflow, WebFlow, SAP EarlyWatch, BAPI, SAPPHIRE, Management Cockpit, mySAP.com Logo und mySAP.com sind Marken oder eingetragene Marken der SAP AG in Deutschland und vielen anderen Ländern weltweit. Alle anderen Produkte sind Marken oder eingetragene Marken der jeweiligen Firmen.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Symbole

Symbol

Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax
Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax
Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax
Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax
Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax

Bedeutung

Achtung

Beispiel

Hinweis

Empfehlung

Syntax

(BC-SRV-ALV) Symbole Symbol Bedeutung Achtung Beispiel Hinweis Empfehlung Syntax April 2001 3

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Inhalt

ALV Grid Control (BC-SRV-ALV)

8

Instanz für das ALV Grid Control

11

Arbeiten mit dem ALV Grid Control

12

Erste Schritte

14

Anwendungsspezifisches Programmieren

16

Layouts

17

Abspeichern eines Layouts

18

Integration eigener Funktionen

20

Ändern von Standardfunktionen

21

Definition von GUI-Elementen in der Toolbar

22

Definition

eines

Kontext-Menüs

 

23

Definition eines Menüs in der Toolbar

24

Drag&Drop mit dem ALV Control

 

25

D&D-Verhalten

für

alle Zeilen/Spalten

26

D&D-Verhalten

für

spezielle

Spalten

27

D&D-Verhalten für spezielle Zeilen/Zellen

28

Ausgabe von Exceptions

 

30

Einfärben

von

Zeilen

32

Einfärben

von

Zellen

33

Darstellung von Drucktasten

35

Einbinden von Hyperlinks

37

Gruppierung von Feldern zur Feldauswahl

39

Verwendung des Konvertierungsexit

41

Das ALV Grid Control bei WAN-Anmeldungen

43

Das ALV Grid Control im Web

44

Darstellung im SAP GUI for HTML

45

Definition eines statischen Menüs

47

Darstellung im Workplace

49

Voraussetzungen

50

Der MiniALV

51

Als

MiniApp

53

Als Erweiterung einer MiniApp

54

Als interaktives Web Control

55

Service-Parameter

56

Ausgabe auf kleinen Bildschirmen

58

Fehleranalyse

60

Der MidiALV

61

Den MidiALV aufrufen

62

Service-Parameter

63

Aufruf des Internet-Service

65

Methoden der Klasse CL_GUI_ALV_GRID

67

activate_reprep_interface

70

CONSTRUCTOR

71

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

get_current_cell

72

get_filtered_entries

73

get_filter_criteria

74

get_frontend_fieldcatalog

75

get_frontend_layout

76

get_scroll_info_via_id

77

get_selected_cells

78

get_selected_cells_id

79

get_selected_columns

80

get_selected_rows

81

get_sort_criteria

82

get_subtotals

83

get_variant

86

offline

87

refresh_table_display

88

register_delayed_event

89

set_3d_border

90

save_variant_dark

91

set_current_cell_via_id

92

set_filter_criteria

93

set_frontend_fieldcatalog

94

set_frontend_layout

95

set_scroll_info_via_id

96

set_graphics_container

97

set_selected_cells

98

set_selected_cells_id

99

set_selected_columns

100

set_selected_rows

101

set_sort_criteria

102

set_table_for_first_display

103

set_toolbar_interactive

107

set_user_command

108

Ereignisse der Klasse CL_GUI_ALV_GRID

109

after_user_command

111

before_user_command

112

button_click

113

context_menu_request

114

delayed_callback

115

delayed_changed_sel_callback

116

double_click

117

hotspot_click

118

menu_button

119

onDrag

120

onDrop

121

onDropComplete

122

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

onDropGetFlavor

123

onf1

124

print_end_of_list

125

print_end_of_page

126

print_top_of_list

127

print_top_of_page

128

subtotal_text

129

toolbar

131

user_command

132

Der Feldkatalog

133

Aufbau des Feldkatalogs

134

Automatischer Aufbau

135

Manueller Aufbau

137

Halbautomatischer Aufbau

139

Felder des Feldkatalogs

140

Bezug zur Ausgabetabelle

144

Bezug zum Data Dictionary

145

Darstellung von Werten mit Währungs-/Mengeneinheit

146

Ausgabeoptionen einer Spalte

149

Formatierung von

Spalteninhalten

153

Texte

156

Parameter für Felder ohne DDIC-Bezug

159

Sonstige Felder

161

Die Layout-Struktur

163

Eigenschaften des Grid Controls

166

Exceptions

168

Farben

169

Summenoptionen

170

Interaktionssteuerung

171

Die Print-Struktur

172

Methoden des OO Control Frameworks

174

Methoden der Klasse CL_GUI_CFW

175

dispatch

176

flush

177

get_living_dynpro_controls

178

set_new_ok_code

179

update_view

180

Methoden der Klasse CL_GUI_OBJECT

181

free

182

is_valid

183

Methoden der Klasse CL_GUI_CONTROL

184

constructor

185

finalize

187

get_focus

188

get_height

189

get_registered_events

190

get_width

191

is_alive

192

set_alignment

193

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

set_focus

194

set_position

195

set_visible

196

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV)

Einsatzmöglichkeiten

Das ALV Grid Control (ALV = SAP List Viewer) ist ein flexibles Werkzeug zur Listendarstellung. Es bietet typische Listenoperationen als generische Funktionen an und ist um eigene Funktionen erweiterbar. Diese Eigenschaft ermöglicht den Einsatz des ALV Grid Controls in einer breiten Palette von Anwendungsprogrammen.

Controls in einer breiten Palette von Anwendungsprogrammen. In SAP-eigenen Entwicklungen wird das ALV Grid Control auch

In SAP-eigenen Entwicklungen wird das ALV Grid Control auch als Werkzeug zum Ändern und Erstellen von Tabellen genutzt. Diese Funktionalität wird bisher allerdings nur in Pilot-Projekten eingesetzt und ist nicht für Kunden freigegeben.

Das folgende Bild zeigt die Darstellung einer Liste mit dem ALV Grid Control in einem Popup- Fenster:

Titel Titel Generische Generische Funktionen Funktionen der der Toolbar Toolbar Ausgabetabelle Ausgabetabelle im im
Titel Titel
Generische Generische
Funktionen Funktionen
der der Toolbar Toolbar
Ausgabetabelle Ausgabetabelle
im im Grid Grid Control Control

Aus Benutzersicht besteht das ALV Grid Control aus einer Toolbar, einem Titel und der Ausgabetabelle, die in einem Grid Control dargestellt wird. Der Titel und die Standardfunktionen der Toolbar lassen sich ausblenden.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV)

Einführungshinweise

Das ALV Grid Control verwendet die Control-Technologie für eine moderne Darstellung am Bildschirm. Es bietet wie alle Control-Verschalungen Methoden für die Steuerung des Controls über eine globale Klasse im System an.

des Controls über eine globale Klasse im System an. SAP kann nicht garantieren, daß Methoden, Ereignisse

SAP kann nicht garantieren, daß Methoden, Ereignisse und Attribute dieser Klasse, die nicht öffentlich sind, unverändert bleiben oder in Zukunft noch existieren. Daher sollten Sie die Klasse nicht ableiten, um auf geschützten Objekte der Klasse zugreifen zu können. Die Verwendung dieser Objekte erschwert den Upgrade auf ein Folgerelease.

Die Verwendung von ABAP Objects hat zur Folge, daß eine Liste über eine ALV Instanz angezeigt wird und der Programmierer sich der Ereignisverwaltung von ABAP Objects bedient.

Integration

Controls sind Software-Komponenten, die auf dem lokalen PC installiert sind. Um mit diesen Komponenten zu kommunizieren, nutzen alle Control-Verschalungen Methoden des Control Framework. Das ALV Grid Control stellt insofern einen Sonderfall dar, als daß es ein bereits verschaltes Control benutzt: Das Grid Control. Bestimmte Schritte in der Ereignisverwaltung von Controls können so dem Programmierer abgenommen werden.

Das ALV Grid Control verwendet das SAP Kontext Menü, um Standardfunktionen zu integrieren. Dieses Menü läßt sich auf eigene Bedürfnisse anpassen.

Diese Dokumentation ist auf die Verwendung des ALV Grid Controls im SAP GUI for the Windows Enviroment beziehungsweise im SAP GUI for the Java Enviroment ausgerichtet. Außerdem gibt es die Möglichkeit das ALV Grid Control im Web [Seite 44] darzustellen.

Funktionsumfang

Zusammengefaßt bietet das ALV Grid Control folgende Möglichkeiten:

Einheitliche Darstellung von nicht-hierarchischen Listen in modernem Design.

Bereitstellung von typischen Listfunktionen - zum Beispiel Sortieren und Filtern - ohne zusätzlichen Programmieraufwand.

Anpassung von vorgegebenen Listfunktionen sowie deren Erweiterung.

Reagieren auf Benutzeraktionen (zum Beispiel Doppelklicken auf eine Zeile) individuell programmierbar.

Anbindung an die Report-Report Schnittstelle möglich.

Anbindung an die Report-Report Schnittstelle möglich. Anwendungsbeispiele zum ALV Grid Control finden Sie in der

Anwendungsbeispiele zum ALV Grid Control finden Sie in der Entwicklungsklasse SLIS.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

ALV Grid Control (BC-SRV-ALV)

Einschränkungen

Es ist nicht möglich, Block- oder hierarchische Listen mit dem ALV Grid Control darzustellen. Einfache Listen kann das ALV Grid Control zur Zeit nur einzeilig darstellen. Der Benutzer kann die Liste aber über die Druckvorschau mehrzeilig definieren und ausdrucken.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Instanz für das ALV Grid Control

Instanz für das ALV Grid Control

Definition

Diese Instanz wird mit einer Referenz auf die Klasse cl_gui_alv_grid definiert:

data <Name der Referenzvariablen> type ref to cl_gui_alv_grid.

Verwendung

Eine Instanz für das ALV Grid Control verwaltet alle Informationen bezüglich einer Liste auf Ihrem Dynpro. Auf diese Instanz können Sie Methoden aufrufen, mit denen Sie die Eigenschaften dieses Controls definieren und ändern können.

dieses Controls definieren und ändern können. Leiten Sie diese Klasse nicht ab, um auf geschützte

Leiten Sie diese Klasse nicht ab, um auf geschützte Bereiche der Klasse zugreifen zu können. Dies ist für die Verwendung des ALV Grid Controls nicht notwendig.

Vererbungshierarchie

CL_GUI_OBJECT

CL_GUI_OBJECT CL_GUI_CONTROL CL_GUI_ALV_GRID_BASE CL_GUI_ALV_GRID

CL_GUI_CONTROL

CL_GUI_OBJECT CL_GUI_CONTROL CL_GUI_ALV_GRID_BASE CL_GUI_ALV_GRID

CL_GUI_ALV_GRID_BASE

CL_GUI_OBJECT CL_GUI_CONTROL CL_GUI_ALV_GRID_BASE CL_GUI_ALV_GRID

CL_GUI_ALV_GRID

Integration

Die Klasse cl_gui_alv_grid beinhaltet sowohl controlspezifische Methoden [Seite 67] als auch Methoden des OO Control Frameworks [Seite 174].

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Arbeiten mit dem ALV Grid Control

Arbeiten mit dem ALV Grid Control

Grundlagen

Die folgende Grafik zeigt die nötigen Schritte, um eine Liste mit dem ALV Grid Control darzustellen:

Feldkatalog Feldkatalog Deklaration Deklaration von von Instanziierung Instanziierung und und Anzeige Anzeige der der
Feldkatalog
Feldkatalog
Deklaration Deklaration von von
Instanziierung Instanziierung und und
Anzeige Anzeige der der Daten Daten
Referenzvariablen Referenzvariablen
Dynpro-Integration Dynpro-Integration
auf auf dem dem Control Control
A Typ A
B Typ B
C Typ C
oder
grid
<name>
DDIC DDIC
A
B
C
(über
Struktur Struktur
Container
Interne
Interne
mit dem
Tabelle Tabelle
a
b
c
Dynpro
1
1
1
verlinkt)
a
b
c
Daten
2
2
2
a
b
c
3
3
3
Select * from <name>
Ausgabetabelle
Datenbeschreibung
DATA grid TYPE REF
TO cl_gui_alv_grid.
DATA container TYPE REF TO
cl_gui_custom_container.
CREATE OBJECT container
container_name = 'MYCONT‘.
CREATE OBJECT grid
parent = container.
CALL METHOD
grid->Set_table_for_first_display.
FLUSH

Angezeigte

Liste:

FLUSH Angezeigte Liste: Dynpro A B C a 1 b 1 c 1 a 2 b
Dynpro A B C a 1 b 1 c 1 a 2 b 2 c
Dynpro
A B C
a 1
b 1
c 1
a 2
b 2
c 2
a 3
b 3
c 3
Container Container mit mit
integriertem integriertem
ALV ALV Control Control

Für die Anzeige der Daten müssen Sie mindestens zweierlei Informationen bereitstellen:

Eine interne Tabelle mit den darzustellenden Daten, die Ausgabetabelle.

Eine Beschreibung über die Struktur dieser Daten, die entweder über den Feldkatalog oder über die entsprechende Struktur des Data Dictionary dem ALV Grid Control bekannt gemacht wird.

Die Ausgabetabelle besteht im allgemeinen aus Daten, die Sie vorher aus Datenbanktabellen selektiert haben.

die Sie vorher aus Datenbanktabellen selektiert haben. Die Referenz auf die Ausgabetabelle, die Sie an das

Die Referenz auf die Ausgabetabelle, die Sie an das ALV Grid Control übergeben, sollte so lange gültig sein wie das ALV Grid Control darauf operiert. Neben der Definition dieser Referenz als globale Tabelle ist es auch möglich, die Referenz über ein öffentliches Attribut in einer ABAP Objects Instanz zu halten.

Der Feldkatalog [Seite 133] ist eine Tabelle mit Informationen über die darzustellenden Felder. Mit Hilfe dieser Tabelle erkennt ALV zum Beispiel den Typ eines Feldes. Sie können aber auch über spezielle Felder des Katalogs die Formatierung von Zahlenausgaben und Spalteneigenschaften der auszugebenen Liste beeinflussen.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Arbeiten mit dem ALV Grid Control

Arbeiten mit Controls

Mit der Verwendung von ABAP Objects zu Release 4.6A wurde die Programmierung von Controls in vielen Punkten vereinheitlicht:

Erzeugen eines Controls und dessen Integration auf dem Dynpro

Übermittlung von Methoden vom Backend zum Frontend

Behandlung von Ereignissen, die das Control am Frontend auslöst

Abbau des Controls (Lifetime Management)

Für Basis Controls (wie z.B. das TextEdit Control, das HTML Viewer Control oder das Picture Control) gilt für die oben genannten Punkte das gleiche Programmiermodell.

Mit Einschränkungen im Bereich der Ereignisbehandlung gilt dieses Programmiermodell auch für das ALV Grid Control (siehe nächsten Abschnitt). Lesen sie Anlegen eines Controls [Extern] (inklusive Querverweise), um sich mit diesem allgemeinen Modell vertraut zu machen und beachten Sie unbedingt die im nächsten Abschnitt beschriebenen Unterschiede.

Besonderheiten des ALV Grid Control in der Ereignisbehandlung

Das ALV Grid Control benutzt das Grid Control für die Anzeige der Ausgabetabelle. Das ALV Grid Control ist also eine Verschalung, die die Verschalung eines Basis Controls verwendet. Als 'äußere Hülle' nimmt diese Verschalung dem Anwendungsprogrammierer die Registrierung der Ereignisse am Frontend ab, um die Ereignisbehandlung zu vereinfachen. Beachten Sie folgende Unterschiede zu den Basis Controls:

Alle Ereignisse werden beim Instanziieren des Controls als System-Ereignisse registriert.

des Controls als System-Ereignisse registriert. Wenn Sie alle Ereignisse als Anwendungs-Ereignis

Wenn Sie alle Ereignisse als Anwendungs-Ereignis registrieren wollen, können Sie dies mit dem Parameter I_APPL_EVENTS (Siehe auch: CONSTRUCTOR [Seite 71]). Dann müssen Sie wie üblich die Methode CL_GUI_CFW=>DISPATCH im PAI aufrufen.

Die Ereignisse DELAYED_CALLBACK oder DELAYED_CHANGED_SEL_CALLBACK werden über die Methode register_delayed_event [Seite 89] registriert.

Für Drag und Drop mit dem ALV Control [Seite 25] ist kein Aufruf von DISPATCH nötig.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Erste Schritte

Erste Schritte

Dieses Kapitel beschreibt, wie Sie im einfachsten Fall eine Liste mit selektierten Daten im ALV Grid Control anzeigen. Dazu müssen Sie:

1. Eine Instanz des ALV Grid Control erzeugen und auf einem Dynpro integrieren.

2. Die anzuzeigenden Daten selektieren und diese zusammen mit einer Beschreibung der Felder der Instanz übergeben.

mit einer Beschreibung der Felder der Instanz übergeben. Siehe auch Beispielreport BCALV_GRID_DEMO in der

Siehe auch Beispielreport BCALV_GRID_DEMO in der Entwicklungsklasse SLIS.

Ein ALV Grid Control anlegen

Ein ALV Grid Control wird auf die gleiche Weise instanziiert wie andere Controls:

1. Deklarieren Sie Referenzvariablen für das ALV Grid Control und den Container. Deklarieren Sie außerdem eine interne Tabelle, die Sie später mit selektierten Daten füllen werden:

DATA: grid TYPE REF TO cl_gui_alv_grid, g_custom_container TYPE REF TO cl_gui_custom_container gt_sflight TYPE TABLE OF sflight.

TO cl_gui_custom_container gt_sflight TYPE TABLE OF sflight. Um ein Control auf einem Dynpro zu integrieren, stehen

Um ein Control auf einem Dynpro zu integrieren, stehen Ihnen fünf verschiedene Container Controls [Extern] zur Verfügung (in diesem Beispiel wird das Custom Container Control verwendet).

2. Legen Sie ein normales Dynpro an und markieren Sie im grafischen Screen Painter einen Bereich für das Custom Container Control (Icon mit Buchstaben 'C'). Vergeben Sie für diesen Bereich den Namen CCCONTAINER.

Vergeben Sie für diesen Bereich den Namen CCCONTAINER . In Übung 1: Einen Bereich für ein

In Übung 1: Einen Bereich für ein Control reservieren [Extern] des Controls Tutorials ist das Markieren eines Bereichs im alphanumerischen Screen Painter erklärt.

3. Im PBO-Modul des Dynpro müssen Sie nun noch das Container- und ALV Grid Control instanziieren. Dabei binden Sie das Container Control an das Dynpro über den im Screen Painter angelegten Container. Über den Parameter parent legen sie das Container Control als Vater des ALV Control fest:

IF g_custom_container IS INITIAL.

CREATE OBJECT g_custom_container EXPORTING CONTAINER_NAME = 'CCCONTAINER'.

CREATE OBJECT GRID1 EXPORTING I_PARENT = g_custom_container.

ENDIF.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

SAP AG ALV Grid Control (BC-SRV-ALV) Erste Schritte Die IF -Abfrage der Referenzvariable g_custom_container stellt

Erste Schritte

Die IF-Abfrage der Referenzvariable g_custom_container stellt sicher, daß die Instanzen nur beim ersten Durchlauf des PBO erzeugt werden.

Instanzen nur beim ersten Durchlauf des PBO erzeugt werden. In der Regel müssen Sie mit der

In der Regel müssen Sie mit der Methode cl_gui_cfw=>flush die aufgerufenen Methoden zum Frontend übertragen. Da das Control Framework am Ende des PBO den Flush automatisch durchführt, ist er hier nicht nötig.

Wenn Sie das Programm starten, werden die beiden Instanzen (das Container- und das ALV Grid Control) zwar erzeugt, sind aber nicht sichtbar.

Eine Liste im ALV Control anzeigen

Nachdem Sie ein ALV Grid Control erzeugt haben und es über ein Container Control auf einem Dynpro integriert haben, müssen Sie noch die Daten und deren Struktur an das ALV Grid Control übergeben:

1. Füllen Sie die interne Tabelle mit Daten:

SELECT * FROM sflight INTO TABLE gt_sflight.

2. Übergeben Sie die Ausgabetabelle und die Strukturdaten an das ALV Grid Control. Achten Sie wiederum darauf, diese Methode nur einmal nach der Erzeugung des ALV Grid Control aufzurufen:

CALL METHOD grid->set_table_for_first_display EXPORTING I_STRUCTURE_NAME = 'SFLIGHT'

CHANGING IT_OUTTAB

I_STRUCTURE_NAME = 'SFLIGHT' CHANGING IT_OUTTAB = gt_sflight. In diesem Fall werden die Strukturdaten über

= gt_sflight.

In diesem Fall werden die Strukturdaten über das Data Dictionary bereitgestellt. Das ALV Control holt sich die Feldinformationen über die Tabelle SFLIGHT und stellt alle Felder der Tabelle dar.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Anwendungsspezifisches Programmieren

Anwendungsspezifisches Programmieren

Folgende Eigenschaften des ALV Grid Controls begünstigen den Einsatz dieses Werkzeuges in einer breiten Palette von Anwendungen:

Layouts bieten dem Benutzer die Möglichkeit, die Listausgabe seinen Bedürfnissen anzupassen. Die Anwendungsentwicklung bestimmt, welche Speicheroptionen der Benutzer für das Layout einer Liste hat.

Eigene Funktionen der Anwendungsentwicklung lassen sich in der Toolbar integrieren. Der Anwendungsentwickler kann außerdem Standardfunktionen an die jeweilige Anwendung anpassen oder ganz ausblenden.

Drag&Drop-Funktionen sind programmierbar. Das ALV Grid Control ermöglicht die Verwendung des Drag&Drop-Controls, mit dem sich anwendungsspezifische Funktionen zwischen dem ALV Grid Control und anderen Custom Controls realisieren lassen.

Formatierungs-, Ausgabe- und Steuerungsoptionen werden über drei Strukturen angeboten:

Der Feldkatalog [Seite 133]

Die Layout-Struktur [Seite 163]

Die Print-Struktur [Seite 172]

Die wichtigsten Szenarien sind in diesem Abschnitt beschrieben. Weitere Informationen entnehmen Sie bitte den Beschreibungen der Methoden, Ereignisse und Strukturen.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Layouts

Layouts

Mit Hilfe von Layouts kann der Benutzer die ausgegebene Liste seinen eigenen Bedürfnissen anpassen.

Der Anwendungsentwickler steuert die Berechtigungen des Benutzers bezüglich eines Layout über die Parameter I_SAVE, IS_VARIANT und I_DEFAULT der Methode set_table_for_first_display [Seite 103]. Es stehen drei Modi zur Verfügung:

Modus

Effekt

Belegung von I_SAVE und IS_VARIANT beim Aufruf von set_table_for_first_dis play

Ausschließliches

Das ALV Grid Control zeigt in der Toolbar nur das Layout-Icon (

aber kein Menü an. Über das Icon kann der Benutzer das aktuelle Menü ändern (im Wesentlichen die Auswahl und Reihenfolge der angezeigten Spalten, Filter, Sortierkriterien).

aktuelle Menü ändern (im Wesentlichen die Auswahl und Reihenfolge der angezeigten Spalten, Filter, Sortierkriterien). ),

),

IS_VARIANT = SPACE.

Ändern des

aktuellen Layout

I_SAVE = SPACE.

(Voreinstellung)

Ausschließliches

Das ALV Grid Control zeigt in der Toolbar sowohl ein Layout-Icon als auch ein zugehöriges Menü an. Im Menü befinden sich nur die Funktionen Layout auswählen und Layout ändern.

IS_VARIANT = <Struktur für ein Layout>

Laden von

mitausgelieferten

Layouts

I_SAVE = SPACE.

(oder IS_VARIANT gleich SPACE und I_SAVE ungleich SPACE)

Laden und

Das ALV Grid Control zeigt in der Toolbar sowohl das Layout-Icon als auch ein zugehöriges Menü an. Über das Layout-Icon kann der Benutzer eine schon existierendes Layout auswählen. Im Menü befinden sich die Funktionen Layout auswählen, Layout ändern, Layout sichern und Layout verwalten.

IS_VARIANT = <Struktur für ein Layout>

Speichern eines

Layout

I_SAVE = <'X', 'U' oder 'A'>

Siehe auch: Abspeichern eines Layout [Seite 18]

Zusätzlich können Sie über das Setzen des Parameters I_DEFAULT dem Benutzer das Speichern von Layoutvoreinstellungen erlauben (in der Voreinstellung gesetzt).

erlauben (in der Voreinstellung gesetzt). Falls der Benutzer die Berechtigung hat, transportiert er

Falls der Benutzer die Berechtigung hat, transportiert er Layouts in der Layout- Verwaltung über den Menüpunkt Layout->Transportieren

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Abspeichern eines Layouts

Abspeichern eines Layouts

Einsatzmöglichkeiten

Die Standard-Funktion Layout ändern steht dem Benutzer über ein Icon der Toolbar zur Verfügung. Sie ermöglicht ihm, das aktuelle Layout für die Lebensdauer der Control-Instanz seinen Bedürfnissen anzupassen.

Der Anwendungsprogrammierer bestimmt, ob der Benutzer Layouts speichern darf und wenn ja, mit welchen Speicheroptionen.

speichern darf und wenn ja, mit welchen Speicheroptionen. Siehe auch den Report BCALV_GRID_09 in der

Siehe auch den Report BCALV_GRID_09 in der Entwicklungsklasse SLIS.

Voraussetzungen

In der Voreinstellung kann der Benutzer eine Layoutvoreinstellung abspeichern. Existiert bereits so ein Layout, so wird diese beim Aufruf der Methode set_table_for_first_display [Seite 103] geladen. Falls Sie keine Layoutvoreinstellungen zulassen wollen, setzen Sie den Parameter I_DEFAULT dieser Methode auf SPACE.

Ablauf

1. Deklarieren Sie eine Variable, um die Speichermöglichkeiten des Benutzers zu bestimmen, und eine Struktur zum Identifizieren eines Layouts:

DATA: X_SAVE,

"for Parameter I_SAVE

GS_variant TYPE DISVARIANT. "for parameter IS_VARIANT

2. Die Struktur vom Typ DISVARIANT muß mindestens die Report-ID enthalten:

G_REPID = SY-REPID. GS_variant-REPORT = G_REPID.

3. Bestimmen Sie, welche Speicheroptionen der Benutzer haben soll:

X_SAVE = 'U'.

"layouts can only be saved as user specific ones

4. Übergeben Sie die beiden Variablen mit dem Aufruf set_table_for_first_display:

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'SFLIGHT'

IS_VARIANT

= GS_variant

I_SAVE

= X_SAVE

CHANGING IT_OUTTAB

= GS_variant I_SAVE = X_SAVE CHANGING IT_OUTTAB = GT_SFLIGHT. Wenn Sie nur den Aktualparameter für

= GT_SFLIGHT.

Wenn Sie nur den Aktualparameter für IS_VARIANT übergeben, ist es zwar möglich, Layouts zu laden, aber nicht, neue zu speichern. Bei Verwendung des Parameters I_SAVE ist die Übergabe einer Struktur für das Layout mit IS_VARIANT obligatorisch.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Abspeichern eines Layouts

Ergebnis

In der Toolbar läßt sich nun neben dem Layout-Icon ein Menü aufklappen, das ein Speichern und Laden eines Layouts erlaubt. Je nach Belegung des Parameters I_SAVE hat der Benutzer beim Speichern folgende Möglichkeiten:

Speichermodi von Layouts

I_SAVE = SPACE

Kein Speichern von Layouts möglich.

I_SAVE = 'U'

Der Benutzer kann nur benutzerspezifische Layouts speichern.

I_SAVE = 'X'

Der Benutzer kann nur übergreifende Layouts speichern.

I_SAVE = 'A'

Der Benutzer kann sowohl benutzerspezifische als auch übergreifende Layouts speichern.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Integration eigener Funktionen

Integration eigener Funktionen

Das ALV Control stellt Ihnen Standard-Funktionen für die Bearbeitung von Listen zur Verfügung. Der Benutzer kann auf diese Funktionen über die Toolbar oder das Kontext-Menü zugreifen. Um eigene Funktionen zu integrieren, können Sie:

Bestehende Funktionen mit eigenen Funktionen belegen sowie

weitere Funktionen in der Toolbar und im Kontext-Menü einbinden.

Außerdem ist es möglich Funktionen auszublenden oder zu deaktivieren, die in einem speziellen Kontext nicht benötigt werden.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Ändern von Standardfunktionen

Ändern von Standardfunktionen

Einsatzmöglichkeiten

Die Standardfunktionen sind auf keinen speziellen Anwendungsfall zugeschnitten. Spezielles Wissen über die angezeigten Daten können also nicht berücksichtigt werden. Im Einzelfall ist es möglich, daß eine Standardfunktion - wie das Sortieren nach einer bestimmten Spalte - in einer Anwendung effizienter programmiert werden kann.

Ablauf

1. Definieren Sie eine Ereignisbehandlermethode zum Ereignis before_user_command [Seite 112]. Dieses Ereignis wird ausgelöst, wenn der Benutzer eine Funktion ausgewählt hat. Das ALV Control übergibt also die Kontrolle an die Anwendung bevor die Funktion ausgeführt wird. Über den Parameter I_UCOMM des Ereignisses können Sie den Funktionscode auf die Funktion, die Sie ändern möchten, eingrenzen.

2. Implementieren Sie Ihren eigenen Algorithmus für die Funktion innerhalb der Ereignisbehandlermethode. Sie können dabei Methoden des ALV Control aufrufen.

3. Setzen Sie abschließend den Funktionscode zurück, damit die Standardfunktion nicht mehr ausgeführt wird:

CALL METHOD <Instanz des ALV Control>->set_user_command exporting I_UCOMM = SPACE.

->set_user_command exporting I_UCOMM = SPACE. Wenn Sie bestimmte Funktionen der Toolbar überhaupt nicht

Wenn Sie bestimmte Funktionen der Toolbar überhaupt nicht brauchen, können Sie diese auch für die gesamte Lebensdauer des Control ausblenden. Übergeben Sie dazu mit Hilfe des Parameters IT_TOOLBAR_EXCLUDING der Methode set_table_for_first_display [Seite 103] eine Tabelle mit den auszublendenden Funktionskodes.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Definition von GUI-Elementen in der Toolbar

Definition von GUI-Elementen in der Toolbar

Ablauf

1. Definieren Sie eine Ereignisbehandlermethode zum Ereignis TOOLBAR.

2. Deklarieren Sie eine Struktur für die Definition eines Elements der Toolbar:

data: ls_toolbar TYPE stb_button.

3. Für eine Drucktaste füllen Sie zum Beispiel folgende Felder:

CLEAR ls_toolbar. MOVE 0 TO ls_toolbar-butn_type. MOVE 'BOOKINGS' TO ls_toolbar-function. MOVE icon_employee TO ls_toolbar-icon. MOVE 'Show Bookings'(111) TO ls_toolbar-quickinfo. MOVE SPACE TO ls_toolbar-disabled.

TO ls_toolbar-quickinfo. MOVE SPACE TO ls_toolbar-disabled. Mit dem Feld butn_type teilen Sie dem ALV Control den

Mit dem Feld butn_type teilen Sie dem ALV Control den Typ des GUI-Elements mit. Mögliche Werte entnehmen Sie bitte dem Wertebereich der Domäne TB_BTYPE.

4. Mit Hilfe des Ereignisparameters E_OBJECT hängen Sie die neue Definition an die Tabelle mt_toolbar:

APPEND ls_toolbar TO e_object->mt_toolbar.

5. Für die Definition weiterer Elemente gehen Sie zurück zu Schritt 3.

6. Rufen Sie die Methode set_toolbar_interactive [Seite 107] auf, wenn Sie die Toolbar neu aufbauen wollen.

Ergebnis

Den jeweiligen Funktionskode, den Sie im Feld function festgelegt haben, können Sie in der Ereignisbehandlermethode zum Ereignis USER_COMMAND abfragen und so die zugehörige Funktion implementieren.

abfragen und so die zugehörige Funktion implementieren. Siehe auch den Report BCALV_GRID_05 in der

Siehe auch den Report BCALV_GRID_05 in der Entwicklungsklasse SLIS.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Definition eines Kontext-Menüs

Definition eines Kontext-Menüs

Verwendung

Das ALV Grid Control benutzt das Kontext Menü [Extern] und belegt es mit Standardfunktionen. Sie können es kontextsensitiv um eigene Funktionen erweitern und gegebene Funktionen ausblenden oder deaktivieren.

Integration

Das Kontext-Menü ist eine Instanz der Klasse CL_CTMENU. Wird das Ereignis CONTEXT_MENU_REQUEST vom Benutzer ausgelöst, so enthält der Ereignisparameter E_OBJECT eine Referenz auf das Standard-Kontextmenü.

E_OBJECT eine Referenz auf das Standard-Kontextmenü. Siehe auch den Report BCALV_GRID_06 in der

Siehe auch den Report BCALV_GRID_06 in der Entwicklungsklasse SLIS.

Funktionsumfang

Sie können dieses Menü folgendermaßen verändern:

Um eine Zeile im Menü hinzuzufügen, rufen Sie die Methode add_function auf:

CALL METHOD E_OBJECT->ADD_FUNCTION

EXPORTING FCODE

TEXT

= 'DELE'

= TEXT-003. "Löschen

Um schon vorhandene Funktionen zu deaktivieren (Anzeige in Ghost-Schrift), übergeben Sie alle entsprechenden Funktionscodes der Methode disable_functions in einer Tabelle:

DATA: LT_FCODES CLEAR LT_FCODES.

APPEND CL_GUI_ALV_GRID=>MC_FC_COL_OPTIMIZE TO LT_FCODES. APPEND CL_GUI_ALV_GRID=>MC_FC_HELP TO LT_FCODES. CALL METHOD E_OBJECT->DISABLE_FUNCTIONS

TYPE UI_FUNCTIONS,

EXPORTING FCODES

= LT_FCODES.

Um schon vorhandene Funktionen auszublenden, gehen Sie genauso vor und rufen statt der Methode disable_functions die Methode hide_functions auf.

Mit den Methoden enable_functions und show_functions können Sie die jeweiligen Funktionen wieder aktivieren beziehungsweise anzeigen.

Funktionen wieder aktivieren beziehungsweise anzeigen. Die Funktionskodes zu eigenen Funktionen fragen Sie beim

Die Funktionskodes zu eigenen Funktionen fragen Sie beim Ereignis user_command [Seite 132] ab.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Definition eines Menüs in der Toolbar

Definition eines Menüs in der Toolbar

Einsatzmöglichkeiten

Ein Menü der Toolbar ist genau wie ein Kontext-Menü eine Instanz der Klasse CL_CTMENU. Sie können mehrere Menüs frei definieren und sie in der Toolbar aufhängen.

Ablauf

1. Definieren Sie in der Toolbar ein GUI-Element vom Typ 1 (Menü mit Defaultbutton) oder Typ 2 (Menü ohne Defaultbutton). Die Vorgehensweise hierzu ist in Definition von GUI- Elementen in der Toolbar [Seite 22] beschrieben.

Siehe auch: Besonderheiten bei Menüs mit Defaultbutton [Extern]

2. Fragen Sie den Funktionskode, den Sie im Schritt 1 für das Menü vergeben haben, in der Ereignisbehandlermethode zum Ereignis MENU_BUTTON ab (über den Ereignisparameter E_UCOMM). Auf diese Weise können Sie die verschiedenen Menüs der Toolbar unterscheiden.

3. Definieren Sie pro Funktionscode ein Menü, wie in Definition eines Kontext-Menüs [Seite 23] beschrieben.

Für die einzelnen Funktionen eines Menüs vergeben Sie im dritten Schritt weitere Funktionskodes, die Sie beim Ereignis user_command [Seite 132] abfragen können.

beim Ereignis user_command [Seite 132] abfragen können. Siehe auch den Report BCALV_GRID_07 in der

Siehe auch den Report BCALV_GRID_07 in der Entwicklungsklasse SLIS.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Drag&Drop mit dem ALV Control

Drag&Drop mit dem ALV Control

Das ALV Grid Control ermöglicht die Verwendung des Drag&Drop Controls. Für dieses Control müssen Sie zunächst ein Drag&Drop-Verhalten beschreiben und dieses Verhalten über ein Handle für Elemente der betroffenen Controls setzen. Das Drag&Drop Control erkennt anhand der Handles, welche Operationen der Benutzer durchführen darf und verändert beim Klicken den Mauszeiger.

Um mit dem gesetzten Drag&Drop Verhalten Aktionen zu verbinden stellt das ALV Control die Ereignisse OnDrag, OnDrop, OnDropComplete und OnDropGetFlavor zur Verfügung.

Dieser Abschnitt beschreibt, wie Sie die Handles für das Drag&Drop-Verhalten mit Elementen des ALV Grid Controls verknüpfen. Die Dokumentation zum Control Framework [Extern] erklärt die Programmierung von Drag&Drop [Extern] (Ablauf einer Drag&Drop Operation [Extern], Ereignisse bei Drag&Drop [Extern]).

Beispiele

Zu Drag&Drop mit dem ALV Grid Control gibt es Demoreports in der Entwicklungsklasse SLIS:

BCALV_DND_01 (Zeilen vom Grid Control in Knoten vom Tree Control ziehen)

BCALV_DND_02 (Funktionsikonen vom Tree Control auf Zeilen des Grid Controls ziehen)

BCALV_DND_03 (Definition eines Drag&Drop-Verhaltens auf Zellen des Grid Controls)

BCALV_DND_04 (Verschieben oder Kopieren von Zeilen innerhalb eines ALV Grid Controls)

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

D&D-Verhalten für alle Zeilen/Spalten

D&D-Verhalten für alle Zeilen/Spalten

Einsatzmöglichkeiten

Dieser Prozeß bietet sich an, wenn Sie ein einheitliches Drag&Drop-Verhalten für alle Zeilen oder Spalten definieren wollen. Ist im Verhalten zum Beispiel das Attribut dragsource gesetzt, lassen sich alle Zeilen bzw. Spalten mit Objekten verbinden, die das Attribut droptarget gesetzt haben und den gleichen Flavor benutzen.

droptarget gesetzt haben und den gleichen Flavor benutzen. Es macht keinen Unterschied, ob Sie ein Verhalten

Es macht keinen Unterschied, ob Sie ein Verhalten für alle Zeilen oder alle Spalten definieren.

Obwohl Sie mit dieser Methode für alle Zeilen das gleiche Verhalten beschreiben, können Sie in den Ereignissen OnDrop bzw. OnDropGetFlavor entscheiden, ob Sie die Drag&Drop- Operation abbrechen wollen. Sie treffen diese Entscheidung anhand des übergebenen Datenobjekts und des Flavors. Im Datenobjekt haben Sie üblicherweise die Daten der gezogenen Zeile gespeichert.

Ablauf

1. Definieren Sie die Layout-Struktur vom Typ LVC_S_LAYO.

2. Definieren Sie Ihr Drag&Drop-Verhalten und beschaffen Sie sich dessen Handle mit der Methode get_handle der Klasse cl_dragdrop.

3. Weisen Sie das Handle dem Feld s_dragdrop-row_ddid oder s_dragdrop-col_ddid der Layout-Struktur zu.

4. Übergeben Sie die Layout-Struktur mit der Methode set_table_for_first_display [Seite 103].

mit der Methode set_table_for_first_display [Seite 103] . Sie können die Layout-Struktur mit dem

Sie können die Layout-Struktur mit dem Drag&Drop-Verhalten auch nachträglich mit der Methode set_frontend_layout [Seite 95] übergeben.

Ergebnis

Jede Zeile bzw. Spalte läßt sich vom Benutzer ziehen bzw. erscheint als Ziel für eine Drag&Drop-Operation.

bzw. erscheint als Ziel für eine Drag&Drop-Operation. Die Definition eines Drag&Drop-Verhaltens läßt sich

Die Definition eines Drag&Drop-Verhaltens läßt sich erst dann am Bildschirm nachvollziehen, wenn es wenigstens eine Dragsource und ein Droptarget mit gleichem Flavor gibt.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

D&D-Verhalten für spezielle Spalten

D&D-Verhalten für spezielle Spalten

Einsatzmöglichkeiten

Sie können mit dieser Möglichkeit für spezielle Spalten des Grid Controls ein Drag&Drop- Verhalten definieren. Jede Spalte kann dabei ein anderes Drag&Drop-Verhalten haben.

Ablauf

5. Definieren Sie eine interne Tabelle vom Typ LVC_T_FCAT für den Feldkatalog.

6. Definieren Sie ein oder verschiedene Drag&Drop-Verhalten und beschaffen Sie sich deren Handles mit der Methode get_handle der Klasse cl_dragdrop.

7. Erstellen Sie den Feldkatalog manuell [Seite 137] oder halbautomatisch [Seite 139]. Weisen Sie dem Feld dragdropid für ausgewählte Spalten das entsprechende Handle zu (mit dem Feld fieldname können sie die gewünschte Spalte referenzieren).

8. Übergeben Sie den Feldkatalog mit der Methode set_table_for_first_display [Seite 103].

mit der Methode set_table_for_first_display [Seite 103] . Sie können den Feldkatalog mit dem Drag&Drop-Verhalten

Sie können den Feldkatalog mit dem Drag&Drop-Verhalten auch nachträglich mit der Methode set_frontend_fieldcatalog [Seite 94] übergeben.

Ergebnis

Die Spalten zeigen ein Drag&Drop-Verhalten gemäß dem übergebenen Handle.

ein Drag&Drop-Verhalten gemäß dem übergebenen Handle. Die Definition eines Drag&Drop-Verhaltens läßt sich

Die Definition eines Drag&Drop-Verhaltens läßt sich erst dann am Bildschirm nachvollziehen, wenn es wenigstens eine Dragsource und ein Droptarget mit gleichem Flavor gibt.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

D&D-Verhalten für spezielle Zeilen/Zellen

D&D-Verhalten für spezielle Zeilen/Zellen

Einsatzmöglichkeiten

Sie können mit dieser Möglichkeit für spezielle Zeilen oder Zellen des Grid Controls ein Drag&Drop-Verhalten definieren. Jede Zeile bzw. Zelle kann dabei ein anderes Drag&Drop- Verhalten haben.

Ablauf

1. Definieren Sie die Layout-Struktur vom Typ LVC_S_LAYO.

2. Erweitern Sie Ihre Ausgabetabelle um eine Drag&Drop-Tabelle vom Typ LVC_T_DRDR wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

DATA:

DATA: END OF GT_OUTTAB.

CT TYPE LVC_T_DRDR. "Table for d&d cell behaviour

3. Definieren Sie Ihr Drag&Drop-Verhalten und beschaffen Sie sich dessen Handle mit der Methode get_handle der Klasse cl_dragdrop.

4. Selektieren Sie Ihre Daten und kopieren Sie sie in die Ausgabetabelle.

5. Lesen Sie in einem Loop jeweils eine Zeile der Ausgabetabelle. Eine Zeile der Drag&Drop- Tabelle hat zwei Felder. Belegen Sie diese Felder folgendermaßen (siehe auch die Grafik im nächsten Abschnitt):

Wenn die ganze Zeile ein Drag&Drop-Verhalten haben soll, weisen Sie dem Feld dragdropid das entsprechende Handle zu. Das Feld fieldname bleibt in diesem Fall leer.

Wenn nur bestimmte Spalten der Zeile ein Drag&Drop-Verhalten haben sollen, müssen Sie für solche Spalten jeweils eine Zeile in der Drag&Drop-Tabelle anhängen. Dem Feld fieldname weisen Sie den Namen der gewünschten Spalte und dem Feld dragdropid das entsprechende Handle zu.

6. Weisen Sie den Namen der internen Tabelle dem Feld s_dragdrop-fieldname der Layout-Struktur zu (in unserem Fall 'CT', siehe Schritt 2).

7. Übergeben Sie die Layout-Struktur und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

mit der Methode set_table_for_first_display [Seite 103] . Sie können die Layout-Struktur mit dem

Sie können die Layout-Struktur mit dem Drag&Drop-Verhalten auch nachträglich mit der Methode set_frontend_layout [Seite 95] übergeben. Das ALV Grid Control frischt sie beim Aufruf der Methode refresh_table_display [Seite 88] auf. Die Instanz des ALV Grid Control und die zugehörige Ausgabetabelle müssen die gleiche Lebensdauer haben.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

D&D-Verhalten für spezielle Zeilen/Zellen

Beispiel

Die folgende Grafik zeigt eine Ausgabetabelle, bei denen die Zellen b 1 und c 1 zwei verschiedene und die gesamte zweite Zeile das gleiche Drag&Drop-Verhalten wie Zelle c 1 hat:

Interne Tabelle vom Typ LVC_T_DRDR Drag&Drop- A B C CT sensitive Zellen im Grid Control:
Interne Tabelle vom Typ
LVC_T_DRDR
Drag&Drop-
A
B
C
CT
sensitive Zellen
im Grid Control:
a
b
c
B 2
A
B C
1
1
1
C 1
a
b
c
1
1
1
b
c
1
a 2
2
2
a
b
c
2
2
2
dragdropid
a
b
c
b
c
3
3
3
a 3
3
3
fieldname

Ausgabetabelle

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Ausgabe von Exceptions

Ausgabe von Exceptions

Einsatzmöglichkeiten

Mit Exceptions kennzeichnen Sie grafisch, daß ein Schwellenwert in einer Zeile der Liste überschritten ist. Im Bezug auf das Flugmodell würde man zum Beispiel die rote Ampel benutzen, um zu signalisieren, daß ein Flug ausgebucht ist. Der Benutzer kann anhand der verwendeten Farbe die angezeigten Daten schneller interpretieren. Es lassen sich drei Zustände anzeigen:

Anzeige

Interner Wert

Signalisiert zum Beispiel

3 (Fast) volle Kapazität verfügbar
3 (Fast) volle Kapazität verfügbar
3 (Fast) volle Kapazität verfügbar

3

(Fast) volle Kapazität verfügbar

2 Mittlere bis volle Ausschöpfung der Kapazität
2 Mittlere bis volle Ausschöpfung der Kapazität
2 Mittlere bis volle Ausschöpfung der Kapazität

2

Mittlere bis volle Ausschöpfung der Kapazität

1 Keine Kapazität mehr vorhanden
1 Keine Kapazität mehr vorhanden
1 Keine Kapazität mehr vorhanden

1

Keine Kapazität mehr vorhanden

der Kapazität 1 Keine Kapazität mehr vorhanden Eine Exception kann auch als LED angezeigt werden (siehe

Eine Exception kann auch als LED angezeigt werden (siehe Exceptions [Seite 168]).

Der Anwendungs-Entwickler muß sowohl die Schwellenwerte festlegen, als auch den Wert einer Exception an diesen anpassen.

als auch den Wert einer Exception an diesen anpassen. Siehe auch: Beispielreport BCALV_GRID_04 der

Siehe auch: Beispielreport BCALV_GRID_04 der Entwicklungsklasse SLIS.

Ablauf

6. Definieren Sie die Layout-Struktur vom Typ LVC_S_LAYO:

DATA gs_layout TYPE LVC_S_LAYO.

7. Erweitern Sie Ihre Ausgabetabelle um eine Variable vom Typ C wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

DATA:

DATA: END OF GT_OUTTAB.

light TYPE C. "to display exceptions

8. Setzen Sie das Feld EXCP_FNAME der Layout-Struktur auf den Feldnamen für die Exception:

gs_layout-excp_fname = 'LIGHT'.

9. Wenn Sie die Exception als LED darstellen möchten, setzen Sie das Feld EXCP_LED der Layout-Struktur.

10. Lesen Sie in einem Loop jeweils eine Zeile der Ausgabetabelle und fragen Sie die Felder ab, die zu der Exception in Beziehung stehen. Setzen Sie Ihre Variable für die Exception-

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Ausgabe von Exceptions

Anzeige (in unserem Beispiel LIGHT) je nach dem von Ihnen gewählten Schwellenwert auf '1', '2' oder '3' (siehe oben).

8. Übergeben Sie die Layout-Struktur und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

mit der Methode set_table_for_first_display [Seite 103] . Wenn Sie die Werte für eine Exception in der

Wenn Sie die Werte für eine Exception in der Ausgabetabelle geändert haben, frischen Sie die Ausgabe mit der Methode refresh_table_display [Seite 88] auf.

Ergebnis

Das ALV Grid Control enthält am Beginn der Liste eine Spalte mit Exceptions:

[Seite 88] auf. Ergebnis Das ALV Grid Control enthält am Beginn der Liste eine Spalte mit

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Einfärben von Zeilen

Einfärben von Zeilen

Einsatzmöglichkeiten

Sie können Zeilen im Grid Control anders einfärben und auf diese Weise Daten der Liste hervorheben.

einfärben und auf diese Weise Daten der Liste hervorheben. Spalten lassen sich über das Feld EMPHASIZE

Spalten lassen sich über das Feld EMPHASIZE des Feldkatalogs einfärben (siehe:

Ausgabeoptionen einer Spalte [Seite 149]).

Ablauf

11.

Definieren Sie die Layout-Struktur [Seite 163] vom Typ LVC_S_LAYO.

12.

Erweitern Sie Ihre Ausgabetabelle um ein vierstelliges Character-Feld wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

DATA:

linecolor(4) type c. "Color for corresponding line

DATA: END OF GT_OUTTAB.

13.

Selektieren Sie Ihre Daten und kopieren Sie sie in die Ausgabetabelle.

14.

Lesen Sie in einem Loop jeweils eine Zeile der Ausgabetabelle. Um die Farbe einer Zeile zu ändern, weisen Sie dem Character-Feld eine vierstellige Farbkodierung zu.

 
 

Mehr über die Farbkodierung finden Sie beim Feld EMPHASIZE des Feldkatalogs (siehe Ausgabeoptionen einer Spalte [Seite 149]).

9.

Weisen Sie den Namen der internen Tabelle dem Feld INFO_FNAME der Layout-Struktur zu (in unserem Fall 'LINECOLOR', siehe Schritt 2).

10.

Übergeben Sie die Layout-Struktur und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

mit der Methode set_table_for_first_display [Seite 103] . Wenn Sie Zellen nicht bei der ersten Anzeige einfärben

Wenn Sie Zellen nicht bei der ersten Anzeige einfärben wollen, führen Sie Schritt 4 später aus und frischen die Ausgabetabelle mit der Methode refresh_table_display [Seite 88] auf.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Einfärben von Zellen

Einfärben von Zellen

Einsatzmöglichkeiten

Sie können Zellen im Grid Control anders einfärben und auf diese Weise Daten der Liste hervorheben. Es ist über diesen Prozeß zwar auch möglich, ganze Zeilen einzufärben, dies ist aber aufwendiger als unter Einfärben von Zeilen [Seite 32] beschrieben.

als unter Einfärben von Zeilen [Seite 32] beschrieben. Der Prozeß D&D-Verhalten für spezielle Zeilen/Zellen

Der Prozeß D&D-Verhalten für spezielle Zeilen/Zellen [Seite 28] ist analog im Bezug auf die Methode zur Auswahl der Zellen.

Ablauf

15.

Definieren Sie die Layout-Struktur [Seite 163] vom Typ LVC_S_LAYO.

16.

Erweitern Sie Ihre Ausgabetabelle um eine Farb-Tabelle vom Typ LVC_T_SCOL wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

DATA:

CT TYPE LVC_T_SCOL. "Table for colors

DATA: END OF GT_OUTTAB.

17.

Selektieren Sie Ihre Daten und kopieren Sie sie in die Ausgabetabelle.

18.

Lesen Sie in einem Loop jeweils eine Zeile der Ausgabetabelle. Eine Zeile der Farb-Tabelle hat drei Felder. Ist das Feld NOKEYCOL gesetzt, können Sie die Farbe von Schlüsselfeldern ändern. Belegen Sie die restlichen Felder folgendermaßen:

Wenn Sie die ganze Zeile einfärben wollen, weisen Sie den Feldern der Struktur COLOR die entsprechenden Werte zu. Das Feld fname bleibt in diesem Fall leer.

Wenn Sie nur bestimmte Spalten der Zeile einfärben wollen, müssen Sie für solche Spalten jeweils eine Zeile in der Farb-Tabelle anhängen. Dem Feld fname weisen Sie den Namen der gewünschten Spalte und den Feldern der Struktur COLOR die entsprechenden Werte zu.

 
 

Die Bedeutung der Farbeinstellungen finden Sie in der F1-Hilfe zum Format-Befehl. Die Klasse CL_GUI_RESOURCES enthält Konstantenattribute für die Felder INT und INV der Struktur COLOR.

11.

Weisen Sie den Namen der internen Tabelle dem Feld CTAB_FNAME der Layout-Struktur zu (in unserem Fall 'CT', siehe Schritt 2).

12.

Übergeben Sie die Layout-Struktur und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Einfärben von Zellen

ALV Grid Control (BC-SRV-ALV) SAP AG Einfärben von Zellen Wenn Sie Zellen nicht bei der ersten

Wenn Sie Zellen nicht bei der ersten Anzeige einfärben wollen, führen Sie Schritt 4 später aus und frischen die Ausgabetabelle mit der Methode refresh_table_display [Seite 88] auf.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Darstellung von Drucktasten

Darstellung von Drucktasten

Einsatzmöglichkeiten

Wenn Sie Zellen, Zeilen oder Spalten den Style mc_style_button zuweisen, stellt das ALV Grid Control die zugehörigen Zellen als Drucktaste dar. Der Benutzer sieht dann unmittelbar, daß er weiter Informationen zur Zelle erhält, indem er auf sie klickt. Das ALV Grid Control löst dann das Ereignis button_click [Seite 113] aus.

Ablauf

dann das Ereignis button_click [Seite 113] aus. Ablauf Um alle Zellen einer Spalte als Drucktaste darzustellen,

Um alle Zellen einer Spalte als Drucktaste darzustellen, verwenden Sie das Feld STYLE des Feldkatalogs [Seite 149].

Um Zeilen oder einzelne Zellen als Drucktaste darzustellen, gehen Sie folgendermaßen vor:

19.

Definieren Sie die Layout-Struktur [Seite 163] vom Typ LVC_S_LAYO.

20.

Erweitern Sie Ihre Ausgabetabelle um eine Zellentabelle vom Typ LVC_T_STYL wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

 

DATA:

CT TYPE LVC_T_DRDR. "Table buttons

 

DATA: END OF GT_OUTTAB.

21.

Selektieren Sie Ihre Daten und kopieren Sie sie in die Ausgabetabelle.

22.

Lesen Sie in einem Loop jeweils eine Zeile der Ausgabetabelle. Eine Zeile der Zellentabelle hat die Felder FIELDNAME und STYLE. Belegen Sie diese Felder folgendermaßen:

Wenn alle Zellen einer Zeile als Drucktaste dargestellt werden sollen, weisen Sie dem Feld style das Attribut cl_gui_alv_grid=>mc_style_button zu. Das Feld fieldname bleibt in diesem Fall leer.

Wenn nur bestimmte Spalten der Zeile wie eine Drucktaste aussehen sollen, hängen Sie pro Spalte eine Zeile an die Zellentabelle an. Dem Feld fieldname weisen Sie den Namen der gewünschten Spalte und dem Feld style das Attribut cl_gui_alv_grid=>mc_style_button zu.

13.

Weisen Sie den Namen der internen Tabelle dem Feld stylefname der Layout-Struktur zu (in unserem Fall 'CT', siehe Schritt 2).

14.

Übergeben Sie die Layout-Struktur und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

Ergebnis

Das ALV Grid Control gibt die mit dem Attribut gekennzeichneten Zellen als Drucktaste aus.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Darstellung von Drucktasten

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Einbinden von Hyperlinks

Einbinden von Hyperlinks

Einsatzmöglichkeiten

Mit dem Feld HREF_HNDL [Seite 149] des Feldkatalogs weisen Sie allen Zellen einer Spalte ein Handle für eine Hyperlink-Adresse zu.

In diesem Abschnitt ist beschrieben, wie Sie die Zellen einer Spalte mit unterschiedlichen Hyperlink-Adressen verknüpfen.

Ablauf

23. Definieren Sie eine interne Tabelle für den Feldkatalog vom Typ LVC_T_FCAT und eine Hyperlink-Tabelle vom Typ LVC_T_HYPE:

data: gt_fieldcat type lvc_t_fcat, gt_hypetab type lvc_t_hype.

24. Um nur in einer Zelle einer Spalte einen Hyperlink darzustellen, benötigen Sie ein zusätzliches Feld in der Ausgabetabelle. Erweitern Sie dazu Ihre Ausgabetabelle um ein Feld vom Typ INT4 wie im folgenden Beispiel:

DATA: BEGIN OF GT_OUTTAB OCCURS 0. INCLUDE STRUCTURE <DDIC-Struktur>.

DATA:

DATA: END OF GT_OUTTAB.

HL_FNAME TYPE INT4. "hyperlink handle for field FNAME

HL_FNAME TYPE INT4. "hyperlink handle for field FNAME Pro Spalte der Ausgabetabelle, die Hyperlinks auf

Pro Spalte der Ausgabetabelle, die Hyperlinks auf Zellenebene enthalten soll, muß ein zusätzliches Feld für das Handle definiert werden. In diesem Beispiel sollen nur in einer Spalte Hyperlinks dargestellt werden.

25. Bauen Sie den Feldkatalog für Ihre Ausgabetabelle manuell [Seite 137]oder halbautomatisch [Seite 139] auf. Im Feldkatalog weisen Sie dem Feld WEB_FIELD den Namen des Feldes für das Hyperlink-Handle zu (im Beispiel: HL_FNAME, s.o.). Das ALV Grid Control kann so das zusätzliche Feld richtig interpretieren.

26. Bauen Sie Ihre Hyperlink-Tabelle mit allen gewünschten Sprungzielen auf, zum Beispiel:

data: ls_hype type lvc_s_hype.

ls_hype-handle = '1'. ls_hype-href = 'http://www.sap.com'. append ls_hype to gt_hypetab.

ls_hype-handle = '2'. ls_hype-href = 'http://www.mysap.com'. append ls_hype to gt_hypetab.

27. Selektieren Sie Ihre Daten und kopieren Sie sie in die Ausgabetabelle.

28. Lesen Sie in einer Schleife jeweils eine Zeile der Ausgabetabelle. Weisen Sie nun dem Feld für das Hyperlink-Handle (im Beispiel: HL_FNAME), das gewünschte Handle zu. Bleibt das Handle für eine Zeile initial, wird kein Hyperlink dargestellt.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Einbinden von Hyperlinks

15. Übergeben Sie den Feldkatalog, die Hyperlink-Tabelle und die Ausgabetabelle mit der Methode set_table_for_first_display [Seite 103].

Ergebnis

Alle Zellen der Spalte, denen über das zusätzliche Feld ein Handle zugewiesen wurde, werden als Hyperlink dargestellt. Gibt es für das zugewiesene Handle keinen Eintrag in der Hyperlink- Tabelle, so wird der Inhalt der Zelle normal ausgegeben.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Gruppierung von Feldern zur Feldauswahl

Gruppierung von Feldern zur Feldauswahl

Einsatzmöglichkeiten

Bei einer großen Anzahl von Ausgabefeldern wird die Feldauswahl im Auswahlfenster für das aktuelle Layout unübersichtlich. Über eine Gruppierung der Ausgabefelder kann der Benutzer über ein Listenfeld die angezeigten Felder in dem Auswahlfenster einschränken.

die angezeigten Felder in dem Auswahlfenster einschränken. Das Listenfeld bezieht sich nur auf die ausgeblendeten

Das Listenfeld bezieht sich nur auf die ausgeblendeten Felder.

Ablauf

1. Definieren Sie eine interne Tabelle vom Typ LVC_T_SGRP für die Feldgruppentexte und eine interne Tabelle LVC_T_FCAT für den Feldkatalog.

2. Bauen Sie den Feldkatalog manuell [Seite 137] oder halbautomatisch [Seite 139] auf.

3. Vergeben Sie über das Feld sp_group des Feldkatalogs für jedes Feld der Ausgabetabelle einen Gruppenschlüssel.

4. Definieren Sie für jede Gruppe einen Gruppentext in Ihrer Feldgruppentabelle.

5. Übergeben Sie die Feldgruppentabelle und den Feldkatalog mit der Methode set_table_for_first_display [Seite 103] (über den Parameter IT_SPECIAL_GROUPS bzw. IT_FIELDCATALOG).

Ergebnis

Im Auswahlfenster für das aktuelle Layout wird ein Listenfeld angezeigt, über die man die jeweilige Gruppe auswählen kann:

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Gruppierung von Feldern zur Feldauswahl

ALV Grid Control (BC-SRV-ALV) SAP AG Gruppierung von Feldern zur Feldauswahl 40 April 2001
SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Verwendung des Konvertierungsexit

Verwendung des Konvertierungsexit

Einsatzmöglichkeiten

Über einen Konvertierungsexit definieren Sie einen Absprung in eine Konvertierungsroutine für eine Spalte Ihrer Ausgabetabelle. Als Exit geben Sie dabei den Teilstring <conv> eines Funktionsbausteins mit dem Namen CONVERSION_EXIT_<conv>_OUTPUT an. So können Sie zum Beispiel mit dem Konvertierungsexit ALPHA (siehe Funktionsbaustein CONVERSION_EXIT_ALPHA_OUTPUT) führende Nullen von Kontonummern eliminieren.

) führende Nullen von Kontonummern eliminieren. Der Konvertierungsexit wird über den WRITE-Zusatz USING

Der Konvertierungsexit wird über den WRITE-Zusatz USING EDIT MASK realisiert.

Voraussetzungen

Damit das ALV Grid Control die Konvertierung durchführen kann, muß die interne und die externe Länge des Feldes bekannt sein. Dies entspricht der Länge vor und nach der Konvertierung.

Dies entspricht der Länge vor und nach der Konvertierung. Zur Veranschaulichung dieser Längenangaben ein Beispiel zur

Zur Veranschaulichung dieser Längenangaben ein Beispiel zur Aufbereitungsschablone EDIT MASK beim WRITE-Befehl:

DATA TIME TYPE T VALUE '154633'. WRITE (8) TIME USING EDIT MASK '

In diesem Fall ist die interne Läge (des Typs T) sechs Zeichen lang und die Ausgabelänge acht.

:

:

'.

"Ausgabe: 15:46:33

Die Spaltenbreite (über das aktuelle Layout einzustellen) ist eine von diesen Größen unabhängige Größe und braucht nicht angepaßt zu werden.

Ablauf

1.

Machen Sie dem ALV Grid Control die interne und externe Länge des Feldes bekannt:

Bei Feldern mit DDIC-Bezug übernimmt das ALV Grid Control die interne und externe Länge automatisch.

Für Felder ohne DDIC-Bezug müssen Sie die interne Länge über das Feld INTLEN und die externe Länge über das Feld DD_OUTLEN des Feldkatalogs angeben (siehe Parameter für Felder ohne DDIC-Bezug [Seite 159]).

2.

Geben Sie den Konvertierungsexit über das Feld EDIT_MASK des Feldkatalogs an (siehe Formatierung von Spalteninhalten [Seite 153]).

3.

Übergeben Sie den Feldkatalog vor der ersten Anzeige der Liste mit der Methode set_table_for_first_display [Seite 103].

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Verwendung des Konvertierungsexit

Ergebnis

Die Werte der Spalte durchlaufen vor der Anzeige die Konvertierungsroutine.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Das ALV Grid Control bei WAN-Anmeldungen

Das ALV Grid Control bei WAN-Anmeldungen

Das ALV GridControl trägt innerhalb seines Kommunikationsprotokolls zwischen Applikationsserver und Frontend selbst dafür sorge, daß es im WAN eingesetzt werden kann. Dieses Protokoll regelt den Datentransport von Applikationsserver zum Frontend.

Es werden zunächst nur so viele Daten zum Control transportiert, wie zum Anzeigen der aktuell sichtbaren Zeilen notwendig sind. Nachfolgende Daten werden erst dann zum Control transportiert, wenn der Benutzer dort hin scrollt. Im WAN ist die Paketgröße entsprechend klein, so daß jedes einzelne Paket innerhalb kurzer Zeit übertragen werden kann.

Einschränkungen

Für den Programmierer, der das ALV - GridControl verwendet, gibt es im WAN dennoch einen Punkt zu beachten. Die Ereignisse DELAYED_CALLBACK und DELAYED_CHANGED_SEL_CALLBACK sollten im WAN nur in begründeten Ausnahmefällen eingesetzt werden. Der Grund hierfür ist nicht primär im Ereignis selbst zu sehen, als in dem Szenario, daß oft als Reaktion auf diese Ereignisse andere Controls mit Daten gefüllt werden. Da dies im WAN meist eine deutlich merkliche Verzögerung (>3 Sekunden) zur Folge hat, wird dies von den Anwender als extrem hinderlich empfunden.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Das ALV Grid Control im Web

Das ALV Grid Control im Web

Für die Darstellung von ALV-Listen im Web, wird Funktionalität des ALV Grid Control [Extern] am Backend verwendet. Grundsätzlich gibt es zwei Möglichkeiten der Darstellung:

Im SAPGUI for HTML [Seite 45]. Dies entspricht - mit Einschränkungen - einer 1:1 Abbildung der Transaktion im SAP-System.

Im Workplace [Seite 49]. Hier werden stark vereinfachte Versionen des ALV Grid Controls verwendet (Mini-ALV, Midi-ALV), um Listen in Anwendungen des Workplace einzubauen.

um Listen in Anwendungen des Workplace einzubauen. Es ist allerdings möglich, eine SAP-Transaktion mit einem

Es ist allerdings möglich, eine SAP-Transaktion mit einem ALV Grid Control im Workplace anzuzeigen. In dem Fall ist der SAPGUI for HTML im Workplace integriert.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Darstellung im SAP GUI for HTML

Darstellung im SAP GUI for HTML

Einsatzmöglichkeiten

Der SAP GUI for HTML ermöglicht es SAP-Transaktionen im Web-Browser darzustellen. Anwendungen, die die Klasse CL_GUI_ALV_GRID für die Darstellung von Tabellendaten nutzen, sind so automatisch über diesen SAP GUI im Web sichtbar.

Einführungshinweise

Die Darstellung des ALV Grid Controls im SAP GUI for HTML unterscheidet sich von der im SAP GUI for Windows. So stehen im SAP GUI for HTML zum Beispiel weniger Farben zur Verfügung. Außerdem ist die Interaktion durch den Benutzer teilweise anders gelöst oder eingeschränkt.

Funktionsumfang

In den meisten Fällen funktionieren Methoden, Ereignisse und Attribute der Klasse CL_GUI_ALV_GRID auch im SAP GUI for HTML.

Tastaturkommandos sind im SAP GUI for HTML nicht verfügbar. Der Zugriff auf Funktionen erfolgt meistens per Mausklick. Darum gibt es für die F1-Hilfe ein Fragezeichen-Icon in der Toolbar.

Der Benutzer muß Zeilen, Spalten oder Zellen einzeln markieren und wieder einzeln demarkieren. (Dies ist zudem abhängig vom Selektionsmodus [Seite 166]).

Einschränkungen

Um eine gute Performance zu gewährleisten sind bestimmte Funktionen nur eingeschränkt verfügbar. Im folgenden werden die wichtigsten Einschränkungen beschrieben:

Wichtigste Einschränkungen im SAP GUI for HTML

Einschränkung

Klassifizierung

(S: Schnittstelle

V: Visuell

I: Interaktion)

Das Kontext Menü ist nicht verfügbar. In der Toolbar definieren Sie die Menüs nicht mehr dynamisch, sondern statisch [Seite 47].

S/I

Die Position der Scrollbar kann nicht gesetzt werden (siehe set_scroll_info_via_id [Seite 96])

S

Symbole können auf Grund fehlender Schriften nicht dargestellt werden

S/V

Es kann jeweils nur ein Tabellenelement-Typ (Zeile, Spalte, Zelle) markiert werden. Kombinationen sind nicht möglich.

S/I

Die Ereignisse delayed_callback [Seite 115] und delayed_changed_sel_callback [Seite 116] können nicht verwendet werden (siehe auch: Das ALV Grid Control bei WAN-Anmeldungen [Seite

S/I

43])

Der Benutzer kann keine Spalten über Drag und Drop vertauschen

S/I

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Darstellung im SAP GUI for HTML

Es gibt keine Autoscroll-Funktion (das heißt kein automatisches Scrollen bei gedrückter Maustaste)

I

Zwischensummenzeilen lassen sich nicht komprimieren

I

Wenn die Anzahl der Funktionen in der Toolbar nicht in eine Zeile passen, wird die Toolbar nicht umgebrochen

V/I

Es werden nur 8 Hintergrundfarben verwendet. Andere Farbwerte (zum Beispiel Intensified) werden auf andere Farbwerte abgebildet.

V

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Definition eines statischen Menüs

Definition eines statischen Menüs

Verwendung

Im SAP GUI for Windows werden Menüs in der Toolbar über die Ereignisse toolbar [Seite 131], menu_button [Seite 119] und context_menu_request [Seite 114] dynamisch aufgebaut. Im SAP GUI for HTML ist diese Vorgehensweise aus Performance-Gründen nicht zu empfehlen. Statt dessen sollten Sie alle Menüs der Toolbar (Kontext-Menüs funktionieren generell nicht) wie hier beschrieben als statische Menüs definieren. Diese definieren Sie beim Ereignis toolbar vor der Anzeige des ALV Grid Controls.

Ablauf

7. Definieren Sie eine Ereignisbehandlermethode zum Ereignis TOOLBAR.

8. Deklarieren Sie eine Struktur für die Definition eines Elements der Toolbar, eine Menü- Struktur und eine Referenzvariable auf die Kontext-Menü-Klasse:

data: ls_toolbar TYPE stb_button,

ls_menu

TYPE stb_btnmnu,

lc_menu

TYPE REF TO cl_ctmenu.

9. Definieren Sie zuerst eine Drucktaste vom Typ Menü in der Toolbar an:

CLEAR ls_toolbar.

ls_toolbar-function = 'STATIC_MENU1'.

ls_toolbar-icon

ls_toolbar-butn_type = '2'.

ls_toolbar-text

= icon_led_interactive.

= 'first static menu'.

= icon_led_interactive. = 'first static menu'. Mit dem Feld butn_type teilen Sie dem ALV Grid Control

Mit dem Feld butn_type teilen Sie dem ALV Grid Control den Typ des GUI- Elements mit. Für Menüs mit einem Defaultbutton verwenden Sie Typ '1'.

10. Mit Hilfe des Ereignisparameters E_OBJECT hängen Sie die neue Definition an die Tabelle mt_toolbar:

APPEND ls_toolbar TO e_object->mt_toolbar.

11. Erzeugen Sie eine Instanz der Kontext-Menü-Klasse und fügen Sie dem Menü Funktionen mit der Methode ADD_FUNCTION hinzu (hier nur eine als Beispiel):

create object lc_menu.

call method lc_menu->add_function exporting fcode = 'STATIC_MENU1_FUNC1'

text

= 'first menu entry'.

12. Um den Menüeintrag mit dem Menü zu verknüpfen, füllen Sie die Menü-Struktur entsprechend:

ls_menu-ctmenu = lc_menu. ls_menu-function = 'STATIC_MENU1'.

13. Übergeben Sie dem Ereignisparameter E_OBJECT die Menü-Struktur:

append ls_menu to e_object->mt_btnmnu.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Definition eines statischen Menüs

14. Rufen Sie die statische Methode set_focus für Ihre Instanz auf:

call method cl_gui_control=>set_focus exporting control = sender.

Ergebnis

Den jeweiligen Funktionskode, den Sie im Feld function festgelegt haben, können Sie in der Ereignisbehandlermethode zum Ereignis USER_COMMAND abfragen und so die zugehörige Funktion implementieren.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Darstellung im Workplace

Darstellung im Workplace

Über die Technologie des Workplace ist es möglich, die Zusammenstellung von Anwendungen auf einen bestimmten Benutzertyp abzustimmen. Da diese Anwendungen im Web-Browser laufen, ist deren Bedienung einfacher gestaltet und auf andere Benutzer zugeschnitten als im SAP-System.

und auf andere Benutzer zugeschnitten als im SAP-System. Weitere Informationen zum Workplace finden Sie im SAPnet

Weitere Informationen zum Workplace finden Sie im SAPnet mit Hilfe des Alias workplace.

Für Web-Anwendungen, die Listen im Workplace darstellen, gibt es zwei Ausprägungen des ALV Grid Controls. Je nach Komplexität beziehungsweise Länge einer Liste setzt man entweder den MiniALV [Seite 51] oder den MidiALV [Seite 61] ein.

Integration

Sowohl Mini- als auch MidiALV bauen auf Funktionalität des ALV Grid Controls [Extern] am Backend auf. Um einen Report im Web darzustellen, brauchen Sie einen Report oder eine Query (die ja einen Report erzeugt) im SAP-System. Für das Web-Reporting werden die Ausgaben dieses Reports genommen und an den Web-Browser übermittelt.

dieses Reports genommen und an den Web-Browser übermittelt. Dieser Report wird im folgenden Proxy-Report genannt.

Dieser Report wird im folgenden Proxy-Report genannt.

Bevor ein Report über den Midi- oder MiniALV im Workplace angezeigt werden kann, muß er bestimmte Voraussetzungen [Seite 50] erfüllen.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Voraussetzungen

Voraussetzungen

Die hier beschriebenen Voraussetzungen gelten sowohl für Mini- als auch für MidiALV.

Voraussetzungen für den Report

Im Web-Reporting werden die Listen im Web-Browser angezeigt. Daher darf der Proxy-Report keine Frontend-Objekte erzeugen.

Gibt der Proxy-Report Listen über den Fullscreen-Modus aus (Anwendungsfunktionen befinden sich in der Anwendungsfunktionsleiste), muß die Anwendung das ABAP-Programm zum Proxy- Report nicht anpassen.

Benutzt der Proxy-Report die Klasse CL_GUI_ALV_GRID, muß der Report unterscheiden, ob er im SAP GUI läuft oder im Web. Dazu steht die statische Methode offline() [Seite 87] zur Verfügung, deren Aufruf Sie an Stelle von Abfragen des Systemfeldes SY-BATCH einsetzen. Läuft der Proxy-Report dann im Batch durch und schreibt das Ergebnis in die Spool, so ist dieser Report automatisch auch für die Ausgabe als Mini- beziehungsweise MidiALV geeignet. Falls er dennoch nicht im Web zur Anzeige kommt, prüfen Sie zunächst, ob der Report und gegebenfalls die angegebene Selektionsvarianten oder Layouts im System existieren (im Fall der Query muß die Benutzergruppe vorhanden sein).

Berechtigungen

Damit der Report beziehungsweise die Query im Web dargestellt werden kann, müssen Sie außerdem zwei Einstellungen vornehmen:

Der Report muß über das Web-Repository (Transaktion SMW0) freigegeben werden (Siehe Objekte für das Web Reporting freigeben [Extern])

Der Report muß einer Berechtigungsgruppe zugeordnet sein. Kunden verwenden den Report RSCSAUTH, um eigene Berechtigungsgruppen modifikationsfrei zu verwenden.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Der MiniALV

Der MiniALV

Verwendung

Der MiniALV ist für die Ausgabe von Listen auf einem kleinen Ausgabebereich des Bildschirms gedacht (zum Beispiel: Übersicht über Systemprozesse). Aus diesem Grund sollten in diesen Listen zum Beispiel keine Zwischensummen ausgegeben werden. Der MiniALV kann sowohl als eigenständige MiniApp, als auch als Teil einer MiniApp verwendet werden. Mögliche Interaktionen des Benutzers sind dabei auf die wesentlichsten Funktionen beschränkt:

sind dabei auf die wesentlichsten Funktionen beschränkt: Der Bildschirmabgriff zeigt den MiniALV in der

Der Bildschirmabgriff zeigt den MiniALV in der Seitendarstellung (weitere Seiten sind durch Blättern erreichbar). Es wird ein Report aus dem SAP-System im Web-Browser angezeigt, der zur Flugtabelle SFLIGHT die Felder Airline, Flight no., Pl.type, Capacity, Occupied und Total ausgibt. Wenn zu diesem Report Layouts oder Selektionsvarianten gespeichert sind, stellt der MiniALV zusätzlich eine Listbox über der Liste dar, mit der der Benutzer gespeicherte Varianten der Liste ausgeben kann.

Voraussetzungen

Der Funktionsbaustein FLOW_LOGIC_ALV_CALL muß im System vorhanden sein. Zur Darstellung im Browser werden diese Bausteine über WebRFC gerufen.

im Browser werden diese Bausteine über WebRFC gerufen. Siehe auch: Voraussetzungen [Seite 50] und Fehleranalyse

Siehe auch: Voraussetzungen [Seite 50]und Fehleranalyse [Seite 60].

Funktionsumfang

Der MiniALV wird mit Hilfe der Flow-Logik Technologie realisiert. Das Tutorial Internet- Anwendungen entwickeln mit Flow-Dateien [Extern] geht speziell darauf ein, wie Sie das SAP@Web Studio dazu verwenden, während die Dokumentation Integration von Internet- Services [Extern] behandelt, wie Sie ein MiniApp mit Hilfe des Web Application Builder implementieren.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Der MiniALV

Um den MiniALV in den Workplace zu integrieren, gibt es folgende Möglichkeiten:

Sie starten den MiniALV Service als eigenständige MiniApp [Seite 53] über eine parametrisierte URL

Sie binden den MiniALV Service in eine eigene MiniApp ein [Seite 54] und brauchen keine Flow-Datei

Sie nutzen den MiniALV als interaktives Web Control [Seite 55], brauchen also eine Flow- Datei, um auf Flow-Ereignisse reagieren zu können

Der Benutzer kann gespeicherte Selektionsvarianten oder Layouts über eine Listbox im MiniALV auswählen. Außerdem sind in der Liste eingebundene Hyperlinks [Seite 37] im MiniALV aktiv.

Über einen Service-Parameter [Seite 63] (ma_style=wap1) läßt sich die ALV-Tabelle für die Ausgabe auf kleinen Bildschirmen [Seite 58] serialisieren. Auf diese Weise können die Daten auf sehr kleinen Bildschirmen für mobile Geräte ausgegeben werden (Pervasive Computing).

Einschränkungen

Der ITS kann Flow-Ereignisse von inkludierten Services nicht verarbeiten. Wenn Sie eigene Flow-Ereignisse verarbeiten wollen, müssen Sie den MiniALV als interaktives Web-Control einbinden (s.o.).

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Als MiniApp

Als MiniApp

Verwendung

Sie wollen einen Report aus dem SAP-System im Web-Browser darstellen und einer Rolle zuordnen. Der Report soll also nicht in eine eigene MiniApp integriert, sondern direkt als MiniApp gestartet werden.

Vorgehensweise

1. Sie starten den MiniALV über eine URL für Ihren Report. Die URL hat die Form:

<WEBSERVER> [Seite 65]/minialv/!?report=<Reportname>&<p1>=<w1>&

Sie geben den Proxy-Report [Seite 51] und weitere Service-Parameter [Seite 56] (<p1> bis <pn>) in dieser URL an.

2. Die URL geben Sie bei der Beschreibung der Rolle in der Transaktion PFCG an. Näheres zum Anlegen einer Rolle finden Sie in der Dokumentation Benutzer und Rollen (BC-CCM- USR) [Extern].

&<pn>=<wn>

(BC-CCM- USR) [Extern] . & <pn> = <wn> Für den Pfad des Web-Servers muß ein Platzhalter

Für den Pfad des Web-Servers muß ein Platzhalter in der URL angegeben werden. Beachten Sie dazu den Abschnitt Die URL im Workplace in Aufruf des Internet- Service [Seite 65].

Ergebnis

Der der Rolle zugeordnete Benutzer kann den Report im Workplace aufrufen.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Als Erweiterung einer MiniApp

Als Erweiterung einer MiniApp

Verwendung

Sie zeigen einen Report über den MiniALV in einer eigenen MiniApp an. Auf diese Weise können Sie in der MiniApp weitere Funktionen implementieren und das Aussehen der MiniApp, in der der MiniALV angezeigt wird, beeinflussen.

Voraussetzungen

Sie dürfen keine eigene Flow-Datei verwenden.

Vorgehensweise

Sie inkludieren den MiniALV-Service in Ihr Template und setzen vorher globale variablen, um dem MiniALV den Namen des Proxy-Reports [Seite 51] und weitere Parameter [Seite 56] (<p1> bis <pn) zu übergeben:

`include(~service="system",~theme="dm",~name="templateLibraryDHTML.html")`

`report = "<Reportname>"` `<p1> = "<w1>"`

`<pn> = "<wn>"` `include(~service="minialv", "minialv")`

Ergebnis

Wenn die MiniApp gestartet wird, zeigt der MiniALV den Proxy-Report an.

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Als interaktives Web Control

Als interaktives Web Control

Verwendung

Sie zeigen einen Report über den MiniALV in einer eigenen MiniApp an. Auf diese Weise können Sie in der MiniApp weitere Funktionen implementieren und das Aussehen der MiniApp, in der der MiniALV angezeigt wird, beeinflussen. Bei der Verwendung des MiniALV als interaktives Web Control können Sie Flow-Ereignisse in der MiniApp verarbeiten.

Vorgehensweise

1. Sie inkludieren den MiniALV-Service in Ihr Template und setzen vorher globale variablen, um dem MiniALV den Namen des Proxy-Reports [Seite 51] und weitere Parameter [Seite 56] (<p1> bis <pn) zu übergeben:

`include(~service="system",~theme="dm",~name="templateLibraryDHTML.html")`

`report = "<Reportname>"` `<p1> = "<w1>"`

`<pn> = "<wn>"` `include(~service="minialv", "webcontrol")`

2. Um auf Flow-Ereignisse zu reagieren, definieren Sie in ihrer Flow-Datei, in welcher der MiniALV verwendet wird, einen Zustand, zum Beispiel loadList. Kopieren Sie den Modul- Aufruf des MiniALV aus dessen Flow-Datei in diesen Zustand. Die Flow-Datei des MiniALV finden Sie im MiniALV-Service im SAP-System.

des MiniALV finden Sie im MiniALV-Service im SAP-System. Sobald der ITS Flow-Ereignisse von Includes verarbeiten

Sobald der ITS Flow-Ereignisse von Includes verarbeiten kann, ist die hier beschriebene Vorgehensweise obsolet.

3. Beenden Sie die anderen Zustände Ihrer Rahmen-MiniApp durch folgende Anweisung:

<default next_state="loadList"/>

Dadurch wird der Zustand loadList zusätzlich ausgeführt, und der Tabelleninhalt neu geladen.

Ergebnis

Ihre MiniApp kann nun eigene Flow-Ereignisse definieren und mit dem MiniALV verarbeiten.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Service-Parameter

Service-Parameter

Inhalt

Parameter

Bedeutung

report

Name des Proxy-Reports [Seite 51]

query

Name einer Query (alternativ zum Proxy-Report)

usergroup

Bei Query: Benutzergruppe

workspace

Bei Query: Arbeitsbereich

Personalisierung

Parameter (Defaultwert)

Bedeutung

variant

 

Selektionsvariante, mit der der Report gestartet werden soll

emptyvariant (on|off)

 

Erlaubt es, den MiniALV mit leerer Selektionsvariante zu starten

layout

 

Den MiniALV mit einem vorhandenen Layout [Seite 17] starten

selectiontype (V|P)

Bestimmt, welche Auswahl in der Listbox erscheint:

V: In der Listbox werden gespeicherte Selektionsvarianten und/oder gespeicherte Layouts angezeigt (alle dem Report zugeordneten)

P: Die Anwendung ordnet der Listbox eigene Werte zu (über User-Exit, siehe userfb). Sehen Sie sich dazu den Service CCMS_ALVIEWER und den Funktionsbaustein SALWP_AL_VIEW_GET_SHUFF_INFO an.

userfb

Funktionsbaustein als User-Exit um:

MiniALV Parameter zu customizen

Einstellungen benutzerspezifisch zu sichern

Visuelle Eigenschaften

Parameter (Defaultwert)

Bedeutung

ma_title (on|off)

Titel ein-/abschalten

ma_header (short|medium|long|off)

Beeinflußt den Text der Spaltenüberschriften

ma_shuffler (on|off)

Anzeige der Listbox ein-/abschalten

ma_style (scroller|pages|text|wap1)

Stil des graphischen Designs in Web-Browser ändern

ma_lines (10)

Anzahl der Zeilen, die auf einmal sichtbar sind

ma_height (150)

Höhe der Scrollbartabelle

Eigenschaften für 'ma_style=wap1' (siehe Ausgabe auf kleinen Bildschirmen [Seite 58])

SAP AG ALV Grid Control (BC-SRV-ALV)

SAP AG

ALV Grid Control (BC-SRV-ALV)

Service-Parameter

Parameter (Defaultwert)

Bedeutung

maw_columns

Mit diesem Parameter kann ausgewählt werden, welche Spalten angezeigt werden sollen und welche Beschriftung für den jeweiligen Zellen verwendet werden

maw_sparse

Bewirkt eine Verdichtung der Tabelle. Sich wiederholende Spaltenwerte werden nicht nochmals ausgegeben.

ALV Grid Control (BC-SRV-ALV)

ALV Grid Control (BC-SRV-ALV) SAP AG

SAP AG

Ausgabe auf kleinen Bildschirmen

Ausgabe auf kleinen Bildschirmen

Eine Verwendung des MiniALV ist die Ausgabe von ALV-Listen auf sehr kleinen Bildschirmen. Dazu müssen die Spalten der Liste serialisiert werden, um sie auf der kleinen Ausgabefläche unterbringen zu können. Um den MiniALV zu diesem Zweck zu verwenden, müssen Sie den Service-Parameter ma_style auf wap1 setzen.

In der Regel wird der Benutzer nur an der Ausgabe bestimmter Spalten der ALV-Liste interessiert sein. Der MiniALV stellt dazu weitere Service-Parameter [Seite 56] zur Verfügung, die nur für den Ausgabestil wap1 gedacht sind. Sie beginnen mit dem Präfix maw

Aufbereitung der Anzeige

Mit dem Parameter maw_columns kann ausgewählt werden, welche Spalten angezeigt werden sollen und welche Beschriftung für den jeweiligen Zellen verwendet werden sollen. Der Parameterwert ist ein String mit einer komma-separierten Liste, in der jede Position einer Spalte entspricht. In einer Position steht die Beschriftung, die für den Wert gestellt wird. Zusätzlich stehen Steuerbefehle zur Verfügung, mit denen die Darstellung beeinflußt werden kann:</