Erstellung eines SAP-Reports - Ulrich Leinhos

Werbung
Erstellung eines Reports
21.08.2009
Erstellung eines ABAP‐Programms zur Auswertung von statistischen Aufnah‐
mebewegungen im SAP‐Umfeld Manuel Martin
21.08.2009
Facharbeit
Berufsbildende Schule I Mainz – Gewerbe und Technik
Klasse FI07a
Servicecenter für Informationstechnologie
Universitätsmedizin der Johannes Gutenberg-Universität Mainz
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 1
Erstellung eines Reports
21.08.2009
Inhalt 1
Einleitung ..................................................................................................... 3
2
ABAP ........................................................................................................... 4
2.1
ABAP Erläuterung ................................................................................. 4
2.2
ABAP Editor........................................................................................... 4
2.3
Anlegen eines Reports .......................................................................... 5
3
Aufbau eine Reports .................................................................................... 6
3.1
Eingabe der Suchparameter ................................................................. 6
3.2
Selektionsanweisungen ......................................................................... 8
3.3
Ausgabemöglichkeiten .......................................................................... 9
3.3.1
Als Liste ........................................................................................... 9
3.3.2
als ALV Grid Control...................................................................... 10
4
Transport ................................................................................................... 11
5
Weitere Funktionen ................................................................................... 11
5.1
Bereitstellen einer Wertehilfe (F4-Hilfe) .............................................. 12
5.2
Einrichtung nicht fest verankern .......................................................... 12
6
Programmablauf ........................................................................................ 12
7
Zeitplan ...................................................................................................... 13
8
Kostenplan ................................................................................................. 13
9
Glossar ...................................................................................................... 13
10
Quellenverzeichnis ................................................................................. 14
11
Anlagen .................................................................................................. 15
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 2
Erstellung eines Reports
1
21.08.2009
Einleitung Ziel dieser Facharbeit ist das Erstellen von ABAP-Reports zu erleichtern und
anhand eines praktischen Beispiels mögliche Funktionen zu erläutern.
Diese Facharbeit beschreibt die Erstellung eines Reports, der für alle stationären Aufnahmen eine Zusammenfassung zu Auswertungen ausgibt. Auswahlkriterien zur Auswertung sind Zeitraum der Aufnahme, fachliche Organisationseinheit, pflegerische Organisationseinheit und das Stornokennzeichen.
Die Facharbeit ist an ABAP-Entwickler mit Grundkenntnissen gerichtet. Der
fertige Report über die stationären Aufnahmen soll zur Erstellung von internen
Statistiken der Patientenverwaltung dienen.
In dem Text wird zunächst die Programmiersprache ABAP kurz erläutert, dann
auf den Aufbau eines Reports eingegangen. Desweiteren wird noch eine kurze
Beschreibung über den Programmablauf folgen. Anschließend werden noch
Zusatzfunktionen, Transport, sowie Zeit- und Kostenplan aufgegriffen.
Entwickelt wird in der Universitätsmedizin Mainz im SAP auf der S01 im 25erMandanten, der 40er-Mandant dient hier als Schulungssystem.
Die K01 dient als Testmaschine mit einem älteren Datenabgleich der P01 im
10er Mandant.
Das Produktivsystem läuft auf der P01 ebenfalls im 10er-Mandant.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 3
Erstellung eines Reports
2
21.08.2009
ABAP 2.1 ABAP Erläuterung ABAP (früher Allgemeiner Berichtsaufbereitungsprozessor, heute Advanced
Business Application Programming) ist die Programmiersprache des SAPSystems und eine Weiterentwicklung von Cobol mit maschinennahen Elementen unter Einbeziehung von SQL (Structured Query Language – eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken).
SAP bietet eine vollständig integrierte Entwicklungsumgebung, die einem Entwickler das Schreiben und Pflegen von ABAP-Programmen ermöglicht. Die
sogenannte ABAP Development Workbench kann aus SAP heraus über die
Transaktion SE80 aufgerufen werden.
Um den Quelltext eines Programmes besser lesen zu können, werden ABAPBefehle immer großgeschrieben.
2.2 ABAP Editor „Der ABAP Editor ist ein Werkzeug, mit dem Sie ABAP-Programme, Klassenmethoden, Funktionsbausteine, Dynpro-Ablauflogik, Typgruppen und logische
Datenbanken entwickeln können.“1
Der Editor ist unter der Transaktion SE38 zu finden, eine erweiterte Version
mit weitaus mehr Funktionalität ist über die Transaktion SE80 in die ABAP Development Workbench eingebunden. Im Zuge dieser Facharbeit wird die Transaktion SE38 verwendet.
1
Überblick
über
den
ABAP
Editor
(SAP-Bibliothek)
http://help.sap.com/saphelp_470/helpdata/de/d1/801a06454211d189710000e8322d00/content.htm
2009-08-17 09:11
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 4
Erstellung eines Reports
21.08.2009
2.3 Anlegen eines Reports Zum Anlegen eines Reports der im ABAP Editor (Transaktion SE38) geöffnet
sein. Nach Eingabe des Namens für den Report und anschließendem Klicken
auf Anlegen muss man einen Titel eingeben sowie einen Typ und Status festlegen.
Der Name eines Reports muss mit Y oder Z beginnen, das sind die für SAP
Kunden zugelassenen Namen für Eigenentwicklungen, die restlichen Buchstaben sind für SAP-Anwendungen reserviert.
Der Titel ist frei wählbar und sollte das Programm beschreiben.
Typ und Status sind vordefinierte Werte und müssen entsprechend ausgewählt werden.
In diesem Fall ist:
• der Name : „ZNSTATAUF“
• der Titel: „Report zur Auswertung der Aufnahme bewegungen“
• der Typ: „1 Ausführbares Programm“
• der Status „K Produktives Kundenprogramm“
Nach dem Sichern der Eingaben muss der Report noch einem Paket zugeordnet und ein „verantwortlicher Mitarbeiter“ definiert werden. Dieser Report wird
dem Paket „ZISH“ zugeordnet. Im Feld „verantwortlicher“ ist das SAP-Kürzel
des Mitarbeiters einzutragen.
Mit Klick auf
werden die Eingaben gespeichert.
Zuletzt ist noch ein Transportauftrag anzulegen in dem alle Änderungen zusammengefasst werden, so dass der Report in einem Stück auf das nächst
höhere System transportiert werden kann.
Mit einem Klick auf
wird ein neuer Transportauftrag angelegt, zu dem eine
Kurzbeschreibung angegeben werden muss. Anschließend müssen die Änderungen mit
generiert.
abgespeichert werden. Der Transportauftrag wird automatisch
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 5
Erstellung eines Reports
3
21.08.2009
Aufbau eine Reports Ein Report ist einer der ABAP-Programmtypen. Er lässt sich in drei Teile aufteilen.
• Einlesen der Daten
• Verarbeitung der Daten
• Ausgabe der Daten
Der Programmcode besteht aus einem Deklarationsbereich, einer Eingabemaske, einem Selektionsbereich und einer Ausgabe.
Im Deklarationsbereich werden nötige Variablen, Tabellen, Feldsymbole und
Strukturen deklariert die für die Ausführung des Reports benötigt werden.
Die Eingabemaske ermöglicht die Eingabe der gewünschten Selektionskriterien.
Im Selektionsbereich werden die vorhandenen Daten mit den Suchkriterien
ausgewertet und die selektierten Datensätze werden in einer Tabelle zusammengefasst.
In der Ausgabe werden die in der Tabelle zusammengefassten Daten ausgegeben.
3.1 Eingabe der Suchparameter Die Eingabemaske der Suchkriterien (Abb. 1) kann aus Parametern, SelectOptions, Checkboxen oder Radio-Buttons bestehen. Parameter und SelectOptions können als Pflichtfelder deklariert werden.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 6
Erstellung eines Reports
21.08.2009
Abb. 1: Eingabemaske des Reports
Mit Hilfe eines Parameters ist es möglich im Selektionsbild ein Eingabefeld zu
erstellen. Dieses wird dann als globale Variable deklariert. Die Eingabe der
fachlichen und pflegerischen Organisationseinheit erfolgt über einen Parameter.
Select-Options nutzt man, wenn man z.B. in einem Wertebereich suchen
möchte oder die Eingabe von mehreren Werten ermöglichen will. Die Datumseingabe erfolgt in so einem Feld. Die Mehrfachselektion ist über
zwei Eingabefeldern möglich.
hinter den
Checkboxen werden mit einem Häkchen bestätigt oder bleiben leer, in unserem Beispiel Report wird hiermit die Möglichkeit gegeben sich alternativ die
stornierten Fälle anzeigen zu lassen.
Zur besseren inhaltlichen Gruppierung kann auch man Felder optisch zusammenfassen, wie in Abb. 1 als blauer Kasten zu sehen.
Eine weitere Funktion die sich hier nicht in Verwendung befindet, ist die Nutzung von Radiobuttons (Abb. 2). Diese dienen zur Auswahl eines von mehreren zur Wahl gestellten Suchkriterien.
Abb. 2: Beispiel für Radiobuttons zur Auswahl verschiedener Sortiermöglichkeiten
Pflichtfelder müssen angegeben werden um mit dem Programm fortzufahren,
diese werden durch den Zusatz OBLIGATORY festgelegt. In diesem Report
wird die Datumseingabe als ein Pflichtfeld deklariert.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 7
Erstellung eines Reports
21.08.2009
3.2 Selektionsanweisungen Der Bereich der Selektionsanweisungen beginnt mit START-OF-SELECTION.
Hier folgen dann die SQL Anweisungen zur Auswertung der Suchkriterien.
Die
Syntax
für
eine
Select
Anweisung
aus
meinem
Beispiel:
SELECT *
INTO TABLE lt_nbew
FROM nbew
WHERE einri = se_einri AND
bwidt IN bwidt AND
orgfa like pa_orgfa AND
orgpf LIKE pa_orgpf AND
storn = storn AND
bewty = '1'.
Diese Select Anweisung schreibt alle Inhalte der Tabelle NBEW in die lokale
Tabelle LT_NBEW, bei der die Einrichtung, der Aufnahmezeitpunkt, die fachliche Organisationseinheit, die pflegerische Organisationseinheit und das Stornokennzeichen den eingegebenen Selektionskriterien entspricht sowie der
Bewegungstyp eine Aufnahme ist. Geschlossen wird die Anweisung mit einem
Punkt am Ende.
Es folgt eine Sortierung der lokalen Tabelle NBEW nach der Fallnummer.
SORT lt_nbew BY falnr.
Mit Hilfe der folgenden Anweisung wird der Report, wenn keine Datensätze
gefunden wurden, mit einem Hinweis beendet.
IF sy-subrc <> 0.
WRITE: 'Keine Aufnahmebewegungen gefunden'.
RETURN.
ENDIF.
SY-SUBRC ist eine Systemvariable, die angibt ob die Select Anweisung erfolgreich war oder Fehler aufgetreten sind.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 8
Erstellung eines Reports
21.08.2009
z.B. bedeutet der Wert 0, dass die Selektion erfolgreich war, der Wert 4 hingegen gibt zurück, dass keine Tupel gefunden wurden
3.3 Ausgabemöglichkeiten Um sich die gewünschten Daten anzeigen zu lassen, gibt es zwei Möglichkeiten.
1. Die Darstellung über eine Liste, die die Daten mit einer einfachen WRITE Anweisung ausgibt (Abb. 3).
2. Mit Hilfe eines ALV Grid Controls die Ausgabe zu realisieren.
Die Realisierung der Ausgabe geschieht mittels eines ALV Grid (Abb. 4).
3.3.1 Als Liste Abb. 3: Screenshot einer Ausgabe als Liste mit einer Write Anweisung
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 9
Erstellung eines Reports
21.08.2009
Die Ausgabe als feste Liste erfolgt über eine WRITE Anweisung.
Der Vorteil dieser Liste ist, dass Spalten nicht versehentlich deaktiviert werden
können und die Ausgabe immer in einem einheitlichen Aussehen dargestellt
wird.
Der Nachteil einer einfachen Liste ist, dass diese Liste in der ausgegebenen
Version nicht mehr sortierbar ist und keine Zusatzfunktionen anbietet.
3.3.2 Als ALV Grid Control Vorteile durch ein ALV Grid Control sind unter anderem bei der Programmierung etwas Zeitersparnis, da es einen fertigen Baustein für ALV Grids gibt und
so die Anpassung und Formatierung der WRITE Ausgabe wegfällt.
Abb. 4: Ausschnitt aus einem Bsp. für einen Report mit Ausgabe als ALV Grid
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 10
Erstellung eines Reports
21.08.2009
Weitere Vorteile sind, dass die Spaltenbreite veränderbar ist und überflüssige
Spalten ein- bzw. ausgeblendet werden können. Weiterhin gibt es Funktionen
zum Sortieren der Spalten, zur Summenberechnung und die Ausgabe detaillierter Zeileninformationen.
Zusätzlich ist es möglich auf weitere Programme zu verweisen und diese
durch Doppelklicken zu aktivieren
Es
wird
der
'REUSE_ALV_GRID_DISPLAY'
und
'REU-
SE_ALV_FIELDCATALOG_MERGE' Baustein verwendet. Ein Baustein wird über
den Button
aufgerufen. Hier kann man jetzt nach Bausteinen suchen
und an den Report anpassen.
4
Transport Wenn der Report fertig ist und transportiert werden soll, muss der angelegte
Transportauftrag zunächst freigegeben werden.
Dies geschieht über die Transaktion SE10 (Transport Organizer). Nach dem
Anzeigen der Aufträge müssen erst die dem Transport untergeordneten Arbeitsaufträge freigegeben werden und anschließend erst der Transport. Ist
dies geschehen, so kann der Transport auf die K01 und die P01 erfolgen.
Nach dem Transport ist der Report unter der angelegten Transaktion in allen
Systemen aufrufbar.
5
Weitere Funktionen Weitere Funktionen die zur Verwendung bereitstehen, sind unter Anderem die
verwendete Include Funktion, diese ermöglicht die einfache Eingabe der Einrichtung im Selektionsbild.
Desweiteren möchte ich noch kurz auf die Möglichkeit zur Bereitstellung einer
Wertehilfe hinweisen.
Dies sind nur zwei Beispiele der vielen Funktionen die es im SAP gibt.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 11
Erstellung eines Reports
5.1 Bereitstellen einer Wertehilfe (F4‐Hilfe) 21.08.2009
Es besteht die Möglichkeit in der Eingabemaske der Suchkriterien für die Felder eine Wertehilfe mit zulässigen Eingabewerten zu hinterlegen. In unserem
Fall ist im SAP-System für jedes Feld eine Suchhilfe hinterlegt. Dies könnte
bei eigenen Feldern oder Feldern ohne Suchhilfe mit dem Zusatz MATCHCODE
OBJEKT und der Angabe einer Suchhilfe hinzugefügt werden.
Diese Wertehilfe ist über ein Symbol am Ende des Eingabefeldes
oder über die F4-Taste aufrufbar.
Die Vorschlagswerte können z.B. bei der fachlichen Organisationseinheit eine
Liste aller Organisationseinheiten oder für das Datum eine Kalenderfunktion
sein.
5.2 Einrichtung nicht fest verankern Mit Hilfe des „INCLUDE rnsseinr“ wird im Selektionsbildschirm die Einrichtung abgefragt. Die Variable dafür lautet se_einri und kann in die Select
Anweisungen mit aufgenommen werden.
Die Einrichtung dient als Schlüssel für eine rechtlich und organisatorisch
selbstständige Einheit im Krankenhaussystem. Die Einrichtung steht innerhalb
eines Mandanten an höchster Stufe der Organisation des Krankenhauses.
6 Programmablauf Wenn das Programm über die Transaktion gestartet wird, erscheint zuerst das
Selektionsbild. Es sind die gewünschten Selektionskriterien einzugeben, diese
sind mindestens das Datum.
Nach dem Ausführen des Programms werden zuerst alle zutreffenden Werte
aus den Tabellen ausgelesen und in einer neuen lokalen Tabelle miteinander
verknüpft.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 12
Erstellung eines Reports
21.08.2009
Nach erfolgreicher Selektion erfolgt die Ausgabe der Datensätze über das ALV
Grid.
7
Zeitplan Die unten stehende Tabelle (Tab.1) zeigt die geschätzte Zeit, die für die Umsetzung und die Konzeption nötig ist.
Tab. 1: Zeitplanung
Arbeitsschritt
Dauer
Konzeption
ca. 2 Stunden
Programmierung
ca. 6 Stunden
Test
ca. 2 Stunden
Gesamtdauer: ca. 10 Stunden
8 Kostenplan Als anfallende Kosten sind die bestehenden Personalkosten zu berücksichtigen.
Diese belaufen sich bei 10 Std Arbeitsaufwand, mit der Grundlage einer 38,5
Stunden Woche und einem Bruttogehalt im 2. Lehrjahr eines Auszubildenden
von 660,00 € im Monat, was einem Stundenlohn von 4,28 € entspricht, auf
42,80 €.
9 Glossar ABAP – Advanced Business Application Programming
ALV Grid – ABAP List Viewer.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 13
Erstellung eines Reports
21.08.2009
Feldsymbole – Symbolischer Name für ein Datenobjekt, dem zur Programmlaufzeit konkrete Speicherbereiche zugewiesen werden können 2
Report – ABAP-Programm, das Daten aus Datenbanktabellen liest, auswertet
und in manchen Fällen auch ändert.3
SAP – Systeme, Anwendungen und Produkte in der Datenverarbeitung
SE10 – Transaktion für Transport Organizer
SE38 – Transaktion für ABAP Editor
SE80 – Transaktion für die ABAP Development Workbench
Transaktion – Aus der Sicht der ABAP-Programmierung ist eine Transaktion
eine der zwei Möglichkeiten, wie ein Benutzer ein ABAPProgramm aufrufen kann.
Tupel – Entspricht einer Zeile einer Tabelle, auch Datensatz
10 Quellenverzeichnis Alle verwendete Abbildungen und Piktogramme sind selbst erstellte Screenshots, die aus dem SAP-System stammen.
Die zu sehenden Patientendaten sind keine echte Daten, sie stammen aus
dem Entwicklungssystem.
SAP Labs / Hochlehnert, Bernhard (Hg.): SAP R/3-Reporting. 1. Auflage,
Bonn: Galileo, Press 2004
2
Keller, Horst / Jacobitz Joachim / Hochlehnert, Bernhard (Hg.): ABAP Objects Referenz.
1. Auflage, Bonn: Galileo Press 2002
3
http://help.sap.com/saphelp_46c/helpdata/DE/35/26b1acafab52b9e10000009b38f974/cont
ent.htm 2009-08-21 09:20
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 14
Erstellung eines Reports
21.08.2009
Keller, Horst / Jacobitz Joachim / Hochlehnert, Bernhard (Hg.): ABAP Objects
Referenz. 1. Auflage, Bonn: Galileo Press 2002
[1] Überblick
über
den
ABAP
Editor
(SAP-Bibliothek)
http://help.sap.com/saphelp_470/helpdata/de/d1/801a06454211d189710000e
8322d00/content.htm 2009-08-17 09:11
SAP-Bibliothek
http://help.sap.com/saphelp_47x200/helpdata/de/e1/8e51341a06084de10000
009b38f83b/frameset.htm 2009-01-06 10:08
http://help.sap.com/saphelp_45b/helpdata/de/15/5184ab7b35d111950d0060b
03c6b76/content.htm 2009-08-21 9:10
http://help.sap.com/printdocu/core/print46b/de/data/de/pdf/BCDWBTOOREP.p
df 2009-08-21 09:13
http://help.sap.com/printdocu/core/Print46c/de/data/pdf/BCSRVALV/BCSRVAL
V.pdf 2009-08-21 09:15
http://help.sap.com/saphelp_46c/helpdata/DE/35/26b1acafab52b9e10000009b
38f974/content.htm 2009-08-21 09:20
http://sapwiki.iwoars.net/index.php 2009-08-20 08:49
11 Anlagen Programmcode:
REPORT
ZNSTATAUf.
***Deklarationsbereich***
TABLES: nbew.
DATA: wa_outtab TYPE zn2_znstatauf,
it_outtab TYPE TABLE OF zn2_znstatauf,
lt_nbew TYPE ish_t_nbew,
lt_nfal TYPE ish_t_nfal,
lt_ndia TYPE ish_t_ndia,
lt_ncir TYPE ish_yt_ncir,
lt_npat TYPE ishmed_t_npat,
lt_ngpa1 TYPE ishmed_t_ngpa,
lt_ngpa2 TYPE ishmed_t_ngpa.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 15
Erstellung eines Reports
21.08.2009
FIELD-SYMBOLS: <fs_npat> TYPE npat,
<fs_nbew> TYPE nbew,
<fs_ncir> TYPE ncir,
<fs_ndia> TYPE ndia,
<fs_nfal> TYPE nfal,
<fs_ngpa1> TYPE ngpa,
<fs_ngpa2> TYPE ngpa.
***Deklaration für ALV Grid***
TYPE-POOLS:
slis.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_layout TYPE slis_layout_alv.
DATA: ls_variant TYPE disvariant.
DATA: l_repid TYPE sy-repid.
***Include für Einrichtungs Überprüfung***
INCLUDE rnsseinr.
***Eingabemaske***
SELECTION-SCREEN: BEGIN OF BLOCK prog WITH FRAME TITLE text-001.
PARAMETERS pa_orgfa TYPE nbew-orgfa.
PARAMETERS pa_orgpf TYPE nbew-orgpf.
SELECT-OPTIONS: bwidt FOR nbew-bwidt OBLIGATORY.
PARAMETERS storn AS CHECKBOX.
SELECTION-SCREEN: END OF BLOCK prog.
* bleibt die Eingabe der Fach. OE und der Pflege. OE leer
* werden alle Daten angezeigt in zutreffenden Zeitraum
* hierfür werden Platzhalter in die Variablen geschrieben
IF pa_orgfa IS INITIAL.
pa_orgfa = '%'.
ENDIF.
IF pa_orgpf IS INITIAL.
pa_orgpf = '%'.
ENDIF.
***Selektionsbereich***
START-OF-SELECTION.
SELECT *
INTO TABLE lt_nbew
FROM nbew
WHERE einri = se_einri AND
bwidt IN bwidt AND
orgfa LIKE pa_orgfa AND
orgpf LIKE pa_orgpf AND
storn = storn AND
bewty = '1'.
SORT lt_nbew BY falnr.
***Prüfung ob Daten gefunden wurden***
IF sy-subrc <> 0.
WRITE: 'Keine Aufnahmebewegungen gefunden'.
RETURN.
ENDIF.
SELECT *
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 16
Erstellung eines Reports
21.08.2009
INTO TABLE lt_nfal
FROM nfal
FOR ALL ENTRIES IN lt_nbew
WHERE einri = se_einri AND
falnr = lt_nbew-falnr.
SORT lt_nfal BY falnr.
SELECT *
INTO TABLE lt_ndia
FROM ndia
FOR ALL ENTRIES IN lt_nfal
WHERE falnr = lt_nfal-falnr.
SORT lt_ndia BY falnr.
SELECT *
INTO TABLE lt_ncir
FROM ncir
FOR ALL ENTRIES IN lt_nfal
WHERE falnr = lt_nfal-falnr.
SORT lt_ncir BY falnr.
SELECT *
INTO TABLE lt_npat
FROM npat
FOR ALL ENTRIES IN lt_nfal
WHERE patnr = lt_nfal-patnr.
SORT lt_npat BY patnr.
SELECT *
INTO TABLE lt_ngpa1
FROM ngpa
FOR ALL ENTRIES IN lt_ncir
WHERE gpart = lt_ncir-kostr.
SORT lt_ngpa1 BY gpart.
SELECT *
INTO TABLE lt_ngpa2
FROM ngpa
FOR ALL ENTRIES IN lt_npat
WHERE gpart = lt_npat-earnr.
SORT lt_ngpa2 BY gpart.
REFRESH it_outtab.
LOOP AT lt_nfal ASSIGNING <fs_nfal>.
CLEAR: wa_outtab.
wa_outtab-falnr = <fs_nfal>-falnr.
wa_outtab-patnr = <fs_nfal>-patnr.
wa_outtab-bekat = <fs_nfal>-bekat.
READ TABLE lt_nbew ASSIGNING <fs_nbew> WITH KEY falnr = <fs_nfal
>-falnr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-orgfa = <fs_nbew>-orgfa.
wa_outtab-orgpf = <fs_nbew>-orgpf.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 17
Erstellung eines Reports
21.08.2009
wa_outtab-bwidt = <fs_nbew>-bwidt.
wa_outtab-bwizt = <fs_nbew>-bwizt.
wa_outtab-storn = <fs_nbew>-storn.
ENDIF.
READ TABLE lt_ndia ASSIGNING <fs_ndia> WITH KEY falnr = <fs_nfal
>-falnr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-ditxt = <fs_ndia>-ditxt.
ENDIF.
READ TABLE lt_ncir ASSIGNING <fs_ncir> WITH KEY falnr = <fs_nfal
>-falnr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-mgart = <fs_ncir>-mgart.
wa_outtab-kostr = <fs_ncir>-kostr.
READ TABLE lt_ngpa1 ASSIGNING <fs_ngpa2> WITH KEY gpart = <fs_
ncir>-kostr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-kotna = <fs_ngpa2>-name1.
ENDIF.
ENDIF.
READ TABLE lt_npat ASSIGNING <fs_npat> WITH KEY patnr = <fs_nfal
>-patnr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-nname = <fs_npat>-nname.
wa_outtab-vname = <fs_npat>-vname.
wa_outtab-gbdat = <fs_npat>-gbdat.
wa_outtab-earnr = <fs_npat>-earnr.
*
Änderung der geschlechtsanzeige von 1,2,3 in M,W,U
IF <fs_npat>-gschl = 1.
wa_outtab-gschl = 'M'. " Männlich
ELSEIF <fs_npat>-gschl = 2.
wa_outtab-gschl = 'W'. " Weiblich
ELSEIF <fs_npat>-gschl = 3.
wa_outtab-gschl = 'U'. " Unbekannt
ENDIF.
READ TABLE lt_ngpa2 ASSIGNING <fs_ngpa1> WITH KEY gpart = <fs
_npat>-earnr BINARY SEARCH.
IF sy-subrc = 0.
wa_outtab-einwa = <fs_ngpa1>-name1.
ENDIF.
ENDIF.
APPEND wa_outtab TO it_outtab.
ENDLOOP.
SORT it_outtab BY orgfa orgpf nname.
*Ausgabe ALV
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name
= 'ZN2_ZNSTATAUF'
CHANGING
ct_fieldcat
= lt_fieldcat
EXCEPTIONS
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 18
Erstellung eines Reports
21.08.2009
inconsistent_interface = 1
program_error
= 2
OTHERS
= 3.
*--->ALV-Ausgabe
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_grid_title
= 'Stationäre aufnahmen: '
is_layout
= ls_layout
it_fieldcat
= lt_fieldcat
i_save
= 'A' "speichern der Variante erl.
is_variant
= ls_variant
TABLES
t_outtab
= it_outtab
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
©Manuel Martin | Servicecenter Informationstechnologie | Universitätsmedizin Mainz
Seite 19
Herunterladen