Ansicht
Dokumentation

RNCZOUT0 - IS-HCM Vorlagen zur Ausgangs-Nachrichtensegmentmanipulation

RNCZOUT0 - IS-HCM Vorlagen zur Ausgangs-Nachrichtensegmentmanipulation

General Data in Customer Master   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Allgemein

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

Analog zu dieser Vorlage dient das Programm RNCZIN00 dem gleichen Zweck für eingehende Nachrichten.

Achtung: für eigene Routinen müssen Sie einen eigenen Pool benutzen. Kopieren Sie dieses Programm (einschließlich der Namensbereiche (Z*).

Die HCM-Nachrichtensegmentinhalte können bei kundeneigenen Segmenten durch FORM-Routinen unmittelbar nach der Datenbeschaffung aus der IS-H-Datenbank manipuliert werden.

Für die Realisierung dieser FORM muß man zwischen den Kommunikationsstandards differenzieren.

Im Folgenden wird das Vorgehen detailliert beschrieben.

Voraussetzungen

Zur Realisierung solcher Kunden-Routinen muß

  1. in der Nachrichtensegmentpflege bei dem entsprechenden Segment der Name der Ausgangs-Kundenformroutine angegeben werden (und der Name des Moduls, in welchem sie zu finden ist);
  2. das Autofill-Kennzeichen des Segments muß gesetzt sein/werden;
  3. die Neugenerierung der HCM-Kundenstrukturen muß angestoßen werden;
  4. die FORM muß realisiert werden.

Beschreibung

Eine ausgehende Nachricht im SAP-HCM-Format wird in Reihenfolge der Segmente gefüllt. Die Datenbeschaffung selbst geschieht segmentbezogen.

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 stets zuerst das SY-Segment der entsprechenden Nachrichtenversion versorgt. Bei kundeneigenen Segmenten wird unmittelbar danach auch die Kundenstruktur mittels dem ABAP/4-Befehl MOVE-CORRESPONDING aus der SY-Struktur heraus gefüllt. Dadurch sind nur namensgleiche Felder mit dem SY-Segment versorgt.

Exisitiert im Kundensegment ein zusätzliches Feld (oder auch mehrere), dann sind diese nach wie vor noch initial.

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

Jede FORM-Routine zur Manipulierung der Daten eines Kunden-Nachrichtensegments muß als einzigen Übergabeparameter das Segment selbst definieren. Bei einem normalen Segment geschieht diese Übergabe mittels USING, bei Wiederholsegmenten mittels TABLES.
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).

Für Nachrichtensegmente mit einer Segmentnummer kleiner als Zehn (10) gilt eine Ausnahmeregelung. Solche Segmente sind technisch bedingt. Möglicherweise ist es gar nicht möglich, hierzu eine kundeneigene Version anzulegen. Falls doch, dann beachten Sie bitte, daß alle technisch benötigten Felder in dem Kundensegment auch weiterhin enthalten sind.

Im Falle eines solchen kundeneigenen Segments wird das entsprechende SY-Segment sowie der zugehörige Versandauftrag aus der Auftragstabelle NC01 übergeben (siehe Beispiel 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 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 Nachrichtenaufbereitung 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. Dies bedeutet insbesondere, daß innerhalb eines User-Exits zum Kundensegment xy auf alle bereits vorher gefüllten Segmente des entsprechenden Nachrichtentyps zugegriffen werden kann. Dabei sind auch Datenfelder von SY-Segmenten aktuell gefüllt, welche in einem evtl. verwendeten Kundensegment gar nicht mehr auftauchen.

Unabhängig von der im User-Exit hinterlegten Funktionalität wird nach Rückkehr aus der Routine das (inzwischen manipulierte) Kundensegment normal weiterverarbeitet. D. h. es wird an den bereits erstellten Nachrichtenteil angehängt. Auch die Verarbeitung nachfolgender Segmente innerhalb des Nachrichtentyps wird unverändert weiter fortgeführt.

Beispiel

Bei dem Kunden-Fallsegment 'Z7104V13' sei die Fallnummer 2 Zeichen länger als in der IS-H-Datenbank. Es wurde vereinbart, die ersten 2 Zeichen mit '47' aufzufüllen.

Das Feld heiße CASENO (s. Include MNCDAT90). Die hier angegeben FORM CHANGE_CASENO_LEADING_2 formatiert sie um, indem sie diese rechtsbündig einträgt und links mit '47' auffüllt:


* Beispiel für SAP-HCM-Nachrichtensegment-User-Exit:
* ... Formatbearbeitung beim Nachrichtenversand
* ... mit normalem Segment:
FORM CHANGE_CASENO_LEADING_2
USING Z7104V13 STRUCTURE Z7104V13.
SHIFT Z7104V13-CASENO BY 2 PLACES RIGHT.
WRITE '47' TO Z7104V13-CASENO.
ENDFORM.

Handelt es sich um ein Wiederholsegment, in dem jede Zeile entsprechend manipuliert werden muß, so muß die FORM wie folgt aussehen:


* Beispiel für SAP-HCM-Nachrichtensegment-User-Exit:
* ... Formatbearbeitung beim Nachrichtenversand
* ... mit Wiederholsegment:
FORM CHANGE_CASENO_LEADING_2
TABLES Z7104V13 STRUCTURE Z7104V13.
LOOP AT Z7104V13.
WRITE '47' TO Z7104V13-CASENO.
MODIFY Z7104V13.
ENDLOOP.
ENDFORM.

Handelt es sich um ein technisch bedingtes Segment (Segmentnummer kleiner als 10), dann sieht die FORM-Deklaration so aus:


* Beispiel für SAP-HCM-Nachrichtensegment-User-Exit:
* ... Formatbearbeitung beim Nachrichtenversand
* ... bei technisch bedingten Segmenten (SGNR < 10):
FORM FILL_CUSTOMER_SEGMENT_ZS007V13
USING SY007V13 STRUCTURE SY007V13
NC01 STRUCTURE NC01.
MOVE-CORRESPONDING SY007V13 to ZS007V13.
...
(eigene Verarbeitung)
...
ENDFORM.

Die Segmente von HL7 werden bereits aufbereitet übergeben. Dies ist aus technischen Gründen (Wiederholfelder) nicht anders möglich. Folglich steht auch keine Struktur zur Verfügung. Felder können nicht direkt angesprochen werden.

Zur sinnvollen Manipulation von HL7-Segmenten muß daher das Segment entsprechend den HL7-Regeln interpretiert werden. Nur so kann gezielt auf Feldinhalte zugegriffen werden. Diese Möglichkeit ist sehr aufwendig in der Realisierung und sollte nur dann gewählt werden, wenn die Konvertierung mit der Tabelle TNHL7 nicht ausreicht.

Mit Hilfe des unten aufgeführten INCLUDES MNCCOM01 stehen die HL7-Sonderzeichen in den Variablen FIELDSEP, COMPOSEP, REPETSEP, ESCAPSEP und SUBCOSEP zur Verfügung.

Warnung: für die HL7-Syntaxkorrektheit zeichnen Sie natürlich selbst verantwortlich! Eine Prüfung nach solchen Manipulationen findet grundsätzlich nicht statt!

Jede FORM-Routine zur Manipulierung der Daten eines Kunden-Nachrichtensegments von HL7 muß 6 Übergabeparameter besitzen:

  • PARAM1 ist ein 4000-Zeichen-Characterfeld, in welchem das von SAP gefüllte HL7-Segment übergeben wird.
  • PARAM2 - PARAM6 sind die gleichen Parameter, wie sie das entsprechende SAP-SH-Segment benutzt (s. RNCHL700).

Beispiel

Bei dem Kunden-Fallsegment 'ZAPV1V21' (so lautet der interne Name des Fallsegments nnn = PV1 mit Eignerkennung des Kundensegments ee = 'ZA' im HL7-Standard Version 2.1) soll im zweiten Feld - unabhängig von dessen Inhalt - eine '1' an erster Stelle eingefügt werden:


* Beispiel für HL7-Nachrichtensegment-User-Exit:
* ... Formatbearbeitung beim Nachrichtenversand
FORM MODIFY_ZAPV1
USING STEXT EINRI FALLNUMMER
BEWEGUNG PARAM4 PARAM5.
FIELD-SYMBOLS: .
SHIFT STEXT RIGHT BY 1 PLACES.
IF STEXT CS FIELDSEP.
ADD 1 TO SY-FDPOS.
ASSIGN STEXT(SY-FDPOS) TO .
SHIFT .
SY-FDPOS = SY-FDPOS - 1.
WRITE '1' TO STEXT+SY-FDPOS(1).
ENDIF.
ENDFORM.






RFUMSV00 - Advance Return for Tax on Sales/Purchases   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11341 Date: 20240531 Time: 233930     sap01-206 ( 169 ms )