Ansicht
Dokumentation

RNAZIN00 - IS-HCM Vorlagen zur Eingangs-Nachrichtensegmentmanipulation

RNAZIN00 - IS-HCM Vorlagen zur Eingangs-Nachrichtensegmentmanipulation

PERFORM Short Reference   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Allgemein

Das Programm RNCZIN00 dient lediglich als Vorlage für kundeneigene User-Exits im Rahmen der IS-HCM-Nachrichtenformatgestaltung. Es enthält Beispiele, wie solche Exits für eingehende Nachrichten realisiert werden. Das Programm alleine ist nicht lauffähig. Es veranschaulicht lediglich die Vorgehensweise bei Eigenanpassungen.

Analog zu dieser Vorlage dient das Programm RNCZOUT0 dem gleichen Zweck für ausgehende Nachrichten.

Achtung: für eigene Routinen müssen Sie einen eigenen Pool benutzen. Kopieren Sie dieses Programm (einschließlich der Dokumentation). Beachten Sie dabei die für Ihre Zwecke reservierten Namensbereiche (Z*).

User-Exits bei der Datenübernahme werden nur bei dem SAP-HCM-Format unterstützt. Bei HL7-Nachrichten besteht z. Zt. keine Möglichkeit, nach der Datenübernahme die Inhalte zu überarbeiten.

Die HCM-Nachrichtensegmentinhalte können bei kundeneigenen Segmenten durch FORM-Routinen unmittelbar nach der Datenentgegennahme und -aufbereitung in die entsprechende HCM-Struktur manipuliert werden. Dieser User-Exit dient nur zur Formatbearbeitung.

Ein besonderes Problem bei Datenübernahmen stellt das Verbuchen neuer kundeneigener Datenfelder dar. Hierzu wird vom IS-HCM ein weiterer zusätzlicher User-Exit angeboten. Dieser wird bei der Aufbereitung der Daten in die SAP-Batch-Input-Struktur aufgerufen. Dadurch lassen sich auch kundeneigene zusätzliche Felder in den Transaktionen mit Daten aus entsprechenden Nachrichtenfeldern versorgen. Dieser User-Exit dient zur Versorgung kundeneigener Transaktionsfelder.

Im Folgenden werden beide Vorgehensweisen detailliert beschrieben.

Voraussetzungen

Zur Realisierung solcher Kunden-Routinen muß

  1. in der Nachrichtensegmentpflege bei dem entsprechenden Segment der Name der Eingangs-Kunden-FORM-Routine angegeben werden (und der Name des Moduls, in welchem sie zu finden ist);
  2. bei dem zugehörigen Segment das Kennzeichen für zusätzliche Felder gesetzt und der Eingangspool angegeben werden, wenn zusätzliche Felder an den Batch-Input übergeben werden sollen (natürlich muß der Batch-Input auch entsprechend erweitert worden sein);
  3. die Neugenerierung der HCM-Kundenstrukturen muß angestoßen werden;

Beschreibung

Eine eingehende Nachricht im SAP-HCM-Format wird in Reihenfolge der Segmente interpretiert.

Die Struktur der Segmente und insbesondere die Feldnamen sind in den Include-Moduln MNCDAT00 (SAP-S*-Strukturen) und MNCDAT90 (Kundenstrukturen) hinterlegt. Für Kundenstrukturen gilt dies natürlich erst mit erfolgreich durchgeführter Kundenstrukturgenerierung.

Handelt es sich bei einem Segment um ein Wiederholsegment, so wird das Segment als interne Tabelle angelegt. Ansonsten entspricht ein Segment einer Feldleiste. Es gilt die folgende Namenskonvention für die HCM-Strukturen:

eennnVvv mit
ee = Eignerkennung,
nnn = Segmentnummer und
vv = Versionskennzeichnung (z. B. bei 1.3 ist vv = 13).

Beispiel: das Segment mit der Segmentnummer 123, Eignerkürzel 'Z7' in der SAP-HCM-Version 1.3 hat den internen Strukturnamen Z7123V13.

Grundsätzlich wird zuerst der Nachrichteninhalt in die entsprechenden Segmentstrukturen gebracht. Dies geschieht stets segmentweise, auch bei Wiederholsegmenten. In diesem Fall wird nur die Kopfzeile der internen Strukturtabelle genutzt.

Nach Füllen eines Kundensegments auf diese Art wird geprüft, ob zu dem Segment eine Eingangsformroutine als User-Exit hinterlegt ist. Sollte dies der Fall sein, dann wird an dieser Stelle diese FORM ausgeführt.

Jede Eingangs-FORM-Routine zur Bearbeitung der Daten eines Kundensegments muß als einzigen Übergabeparameter das Segment selbst definieren. Bei einem normalen Segment geschieht diese Übergabe wie bei Wiederholsegmenten auch mittels USING. In beiden Fällen wird "by reference" übergeben, wodurch alle Änderungen an den Inhalten bei Verlassen der Routine wirksam bleiben. Achten Sie auf den Zusatz '... STRUCTURE ...', damit Sie die Felder des Segments namentlich ansprechen können (siehe Beispiele unten).

In der FORM-Routine muß die kundenspezifische Funktionalität realisiert sein. Grundsätzlich haben Sie innerhalb dieser Routine alle Möglichkeiten, welche die Programmiersprache ABAP/4 bietet. Sie können Nachrichtenfeldinhalte Ihres Segments verändern (z. B. gemäß spezieller Formatvorschriften aufbereiten). Aber sie können auch von der Datenbank lesen und kundeneigene zusätzliche Segmentfelder so füllen.

Nicht möglich sind Dialoge oder ähnliches. Die gesamte Nachrichtenverarbeitung findet im Hintergrund statt (Batch-Jobs). Die Beschränkungen dieser Verarbeitungsart müssen natürlich berücksichtigt werden.

Alle Segmentstrukturen sind mittels COMMON PART global definiert. Dadurch stehen sie programmübergreifend jederzeit zur Verfügung.

Unabhängig von der im User-Exit hinterlegten Funktionalität wird unmittelbar nach Rückkehr aus der Routine (falls eine angegeben war) das (inzwischen manipulierte) Kundensegment weiter verarbeitet.

Mittels dem ABAP/4-Befehl MOVE-CORRESPONDING werden die Daten in die entsprechende SY-Struktur gefüllt. Dadurch sind nur namensgleiche Felder des SY-Segments versorgt. Aus dieser SY-Struktur werden dann die Batch-Input-Formate erstellt.

Exisitiert im Kundensegment ein zusätzliches Feld (oder auch mehrere), dann sind diese nach wie vor nur dort vorhanden. Um solche Felder mit verbuchen zu können, wird der User-Exit zur Versorgung kundeneigener Transaktionsfelder benötigt (siehe unten).

Beispiel

Bei dem Kunden-Fallsegment 'Z7104V13' (so lautet der interne Name des Fallsegments nnn = 104 mit der Eignerkennung des Kundensegments ee = 'Z7' im SAP-HCM-Standard Vers. 1.3) sei die Fallnummer 2 Zeichen länger als in der IS-H-Datenbank. Es wurde vereinbart, die ersten 2 Zeichen im IS-H nicht abzuspeichern.

Das Feld heiße CASENO (s. Include MNCDAT90). Die hier angegebene FORM CHANGE_CASENO_WITHOUT_2 formatiert sie um, indem sie diese linksbündig ohne die ersten 2 Zeichen einträgt:


* Beispiel für SAP-HCM-Nachrichtensegment-User-Exit:
* ... Formatbearbeitung bei der Datenübernahme
* ... mit normalem oder Wiederhol-Segment:
FORM CHANGE_CASENO_WITHOUT_2
USING Z7104V13 STRUCTURE Z7104V13.
SHIFT Z7104V13-CASENO BY 2 PLACES LEFT.
ENDFORM.

Handelt es sich um ein Wiederholsegment, dann sieht die FORM identisch aus. Sie wird quasi "Zeile für Zeile" aufgerufen.

Nachdem eine kundeneigene Segmentzeile in die entsprechende SY-Segmentzeile gebracht worden ist, wird die Batch-Input-Übergabestruktur

RNBItttt (mit tttt = Transaktionscode)

gefüllt. Mit Übergabe dieser Struktur an das Batch-Input-Programm endet die eigentliche Nachrichtenaufbereitung.

Im IS-H wurden die Batch-Input-Programme (zumindest die HCM-relevanten) nach dem folgenden Standardschema erstellt:

Zu einer Transaktion (z. B. NEXA) wird eine solche Struktur ohne Datenbank im Repository hinterlegt, in welcher alle Input-relevanten Felder enthalten sind. Der Name dieser Struktur lautet wie oben angegeben.

Bei Aufruf des Batch-Input-Programmes (genauer: Funktionsbausteins ISH_BDC_tttt_*) muß eine Tabelle mit Daten in dieser Struktur übergeben werden. Die Aufbereitung in das endgültige SAP-Dynproformat erledigt das Programm.

Sollten Sie in einer entsprechenden Transaktion neue Felder als Kundenmodifikation aufgenommen haben, dann müssen Sie auch dieses Batch-Input-Programm sowie die zugehörige Übergabestruktur anpassen. Erst dann kann bzw. muß der User-Exit zur Versorgung kundeneigener Transaktionsfelder genutzt werden!

Für diesen Exit gelten folgende Vereinbarungen:

  • bei dem zugehörigen Segment muß das Kennzeichen für zusätzliche Felder gesetzt und der Eingangspool angegeben werden;
  • der Name der FORM-Routine ist segmentabhängig festgelegt.
    Namenskonvention: bei Segment eennnVvv heißt die Routine eennnVvv_ADDFIELDS (Bedeutung Kurzformen s. o.).
    Beispiel: bei Segment Z7104V13 heißt die Routine Z7104V13_ADDFIELDS.
  • übergeben wird ausschließlich die Batch-Input-Übergabestruktur RNBItttt (mit tttt = Transaktionscode). Die gefüllte Kundenstruktur steht aber als globale Datenstruktur zur Verfügung.

Beispiel

Im Kunden-Fallsegment 'Z7104V13' (so lautet der interne Name des Fallsegments nnn = 104 mit der Eignerkennung des Kundensegments ee = 'Z7' im SAP-HCM-Standard Vers. 1.3) sei ein Feld ZSHOESIZE eingefügt worden. Die Transaktion NSHO sei entsprechend modifiziert worden. Es wurde auch hier ein zusätzliches Feld "Schuhgröße" auf den Transaktionsdynpros eingabebereit eingebaut. Der Batch-Input wurde abgepaßt. In der modifizierten Batch-Input-Übergabestruktur RNBINSHO heißt das zugehörige Feld ZSSIZE.

Die hier angegebene FORM-Routine füllt das Übergabefeld entsprechend:


* Beispiel für SAP-HCM-Nachrichtensegment-User-Exit:
* ... Versorgung kundeneigener Transaktionsfelder
* bei der Datenübernahme
* ... mit normalem oder Wiederhol-Segment:
FORM Z7104V13_ADDFIELDS
USING RNBINSHO STRUCTURE RNBINSHO.
MOVE Z7104V13-ZSHOESIZE to RNBINSHO-ZSSIZE.
ENDFORM.

Handelt es sich um ein Wiederholsegment, dann sieht auch diese FORM identisch aus. Sie wird quasi "Zeile für Zeile" aufgerufen.






CPI1466 during Backup   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11337 Date: 20240520 Time: 083211     sap01-206 ( 192 ms )