Dynamische Massnahmen
Aufbau
In der ersten Spalte steht der Infotype.
In der zweiten Spalte steht der Subtype.
In der dritten Spalte steht das Feld.
In der vierten Spalte steht der Funktionscharakter der Aktion
Steuert, bei welchen Bearbeitungsarten (Anlegen, Ändern und/oder Löscheneines Datensatzes) eine dynamische Maßnahme durchgeführt werden soll. Folgende Codes sind möglich:
- 00 für Unabhängig von der aktuell ausgeführten Funktion
- 02 für Ändern
- 04 für Anlegen
- 06 für Ändern und Anlegen
- 08 für Löschen
- 10 für Ändern und Löschen
- 12 für Anlegen und Löschen
In der fünften Spalte steht die Fortlaufende Nummer der Quellensteuerart.
In der sechsten Spalte steht das Kennzeichen für Aktionen.
- P - Prüfung von Bedingungen
- I - Pflegen eines Infotypsatzes
- W - Vorgabe von Werten beim Hinzufügen eines neuen Satzes
- V - Verweis auf eine andere Aktion
- F - Aufruf einer Routine
- M - Versenden eines Mails
Andere Einträge in dieser Spalte bedeuten "Kommentarzeile".
In der Spalte sieben steht der Variable Funktionsteil.
- Die Tabellenleisten T001P, T503 und PSPAR sind mit den zum Beginndatum des Satzes gültigen Werten gefüllt.
- Die alten Werte des Infotyps stehen in der Feldleiste PSAVE zur Verfügung. Diese hat die gleiche Struktur wie die Pnnnn-Struktur (nnnn=Infotyp). Die Struktur ist nur im Falle von Löschen, Ändern und Anlegen mit "sinnvollen" Werten gefüllt.
Details
Infotyp
Hier hinterlegt man den betroffenen Infotypen.
Art
Hier hinterlegt man den Subtypen, dies sind Untergliederungen von Infotypen. Die Subtypen eines Infotyps können unterschiedliche Zeitbindungen haben und daher auch eine eigene Historie bilden.
Feldname
Hier hinterlegt man das betroffene Feld, falls nur ein Feld betroffen ist.
FC
Der Funktionscharakter der Aktion steuert, bei welchen Bearbeitungsarten (Anlegen, Ändern und/oder Löscheneines Datensatzes) eine dynamische Maßnahme durchgeführt werden soll.
Sie können mehrere Bearbeitungsarten pro Infotyp, Subtyp bzw. Feld hinterlegen.
00 = Unabhängig von der aktuell ausgeführten Funktion
02 = Ändern
04 = Anlegen
06 = Ändern und Anlegen
08 = Löschen
10 = Ändern und Löschen
12 = Anlegen und Löschen
NR
Hier ist die fortlaufende Nummer der Quellensteuerart hinterlegt (Bestimmt die Reihenfolge).
A
Hier geben Sie das Kennzeichen für Aktion an
P = Prüfung von Bedingungen
I = Pflegen eines Infotypsatzes
W = Vorgabe von Werten beim Hinzufügen eines neuen Satzes
V = Verweis auf eine andere Aktion
F = Aufruf einer Routine
M = Versenden eines Mails
Falls andere Einträge in dieser Spalte sind, bedeuten das dies eine Kommentarzeile ist.
Variabler Funktionsteil
Abhängig vom Kennzeichen der Aktion hat der Inhalt des variablen Funktionsteils unterschiedliche Auswirkungen:
P - Plausibilitätsprüfungen
Hier werden Werte für bestimmte Felder des Infotyps hinterlegt. Es muss der volle Name für diese Felder hinterlegt werden ( z.B. P0038-KANTO ). Ein solcher Vergleichswerte sind Literale, also konstante Werte, diese muss man in Hochkommata eingeschlossen angeben z.B. P0038-KANTO = 'BE' ). Möglich sind auch Variablen zu hinterlegen (P0038-KANTO = P0006-STATE). Ein alter Wert eines Feldes kann zum Vergleich herangezogen werden, dem Feldnamen ist dabei ein Präfix PSAVE- voranzustellen (PSAVE-KANTO = P0006-STATE).
Wenn man Felder aus einem anderen Infotypen zum Vergleich braucht, so muss dieser im Modulpool des aktuellen Infotyps zur Verfügung gestellt werden.
Vergleichsoperatoren
= gleich,
< kleiner,
<= kleiner oder gleich,
> größer,
>= größer oder gleich und
<> ungleich.
Aufeinanderfolgende Prüfungen sind durch ein logisches Und verknüpft. Abweichend davon sind Verknüpfungen durch logisches Oder zusätzlich durch ein /X zu kennzeichnen.
Hinweis:
Bitte beachten Sie, daß alle Prüfungen, die mit ODER verknüpft sind, den Zusatz /X haben müssen!
Ist das Ergebnis der Vergleichsoperationen nicht "wahr", so werden die folgenden Anweisungen (I, F, W usw.) übersprungen, bis ein neues Feld erreicht ist oder neue Vergleichsoperationen folgen.
Beispiele:
Infotyp Feld ..... Kennz. Variabler Funktionsteil
0000 STAT3 P P0000-STAT3='0'
0000 STAT3 P PSAVE-STAT3='1'
Die Aktion wird durchgeführt, wenn sich der Wert des Feldes P0000-STAT3 von 1 auf 0 ändert.
0013 P P0013-KVKZ1<>'0'/X
0013 P P0013-AVKZ1<>'0'/X
0013 P P0013-RVKZ1<>'0'/X
0013 P P0013-RVNUM=SPACE
Die ersten drei Bedingungen sind durch Oder verknüpft, d.h. mindestens eine der drei Bedingungen muß erfüllt sein; die vierte Bedingung muß auf jeden Fall erfüllt sein.
Die Aktion wird also durchgeführt, wenn gilt:
P0013-KVKZ1 ungleich 0 oder P0013-AVKZ1 ungleich 0 oder P0013-RVKZ1 ungleich 0 - und P0013-RVNUM gleich leer.
I - Pflegen eines Infotypsatzes
Eingegeben werden Aktion, Infotyp, Subtyp, Objekt-Id, Gültigkeitsbeginn und -ende des zu selektierenden Infotyp-Satzes und ein Kennzeichen, ob die Aktion dunkel ablaufen soll. Die möglichen Aktionen sind INS, COP, MOD und DEL.
Die Selektionskriterien werden durch Kommata voneinander getrennt. Das Komma ist dabei wie das Trennzeichen bei der Matchcode-Eingabe zu verwenden, d.h. fehlt eine Angabe, so wird einfach das entsprechende Komma hinzugefügt.
Das Kennzeichen zur Unterdrückung des Dialogs wird durch einen Schrägstrich D (/D) von den übrigen Eingaben getrennt.
Konstanten, etwa für den Subtyp, werden nicht in Hochkommata eingeschlossen.
Es können auch variable Eingaben gemacht werden. Das Feld, das den Inhalt eines solchen Wertes trägt, ist dann in Klammern zu setzen.
Beispiele:
Infotyp Feld ..... Kennz. Variabler Funktionsteil
.... I INS,19,01/D
Aktion: Hinzufügen eines Terminsatzes, Subtyp 01, dunkel prozessiert.
.... I DEL,14,M559
Aktion: Löschen eines Wiederkehrenden Be-/Abzugs mit Subtyp (Lohnart) M559.
0007 .... I INS,8,,,(P0007-BEGDA),(P0007-ENDDA)
Aktion: Anlegen eines Infotyps Basisbezüge (0008), ohne Subtyp und Objekt-Id. Beginn- und Endedatum sind die des aktuellen Infotyps Sollarbeitszeit (0007); die Angabe der beiden Felder ist nur sinnvoll, wenn diese gefüllt sind, etwa weil die dynamische Maßnahme (wie hier) von diesem Infotyp angestoßen wird.
W - Vorgabe von Werten für den neuen Satz
Vorgegeben werden Literale oder Variablen.
Beachten Sie, daß Infotyp, Subtyp, Objekt-Id, Gültigkeitsbeginn und -ende ggf. durch die I-Aktion vorgegeben werden müssen, jedoch nicht durch die W-Aktion.
Das Vorbelegen von Q-Feldern eines Infotyps ist in der Regel nicht sinnvoll, da die Werte dieser Felder aus den korrespondierenden P-Feldern abgeleitet werden.
Beispiel:
Infotyp Subtyp ..... FC Kennz. Variabler Funktionsteil
0021 2 04 I INS,0015,M430
0021 2 04 W P0015-BETRG='10000'
Beim Anlegen eines Infotyps Familie (0021), Subtyp 2 (Kind) wird eine Ergänzende Zahlung (0015) angelegt, deren Betrag mit 100,00 vorbelegt ist.
V - Verweis auf eine andere Aktion
Hier können Felder zu Gruppen zusammengefaßt werden. Im variablen Funktionsteil steht das auf das in der Spalte "Feld" folgende Feld. Aktionen, die in nachfolgenden Zeilen nur für das folgende Feld angegeben sind, werden für jedes der Felder angestoßen.
Beispiel
Infotyp Feld ..... FC Kennz. Variabler Funktionsteil
0016 PRBZH 06 V PRBZT
0016 PRBZT 06 I DEL,0019,01/D
Das Löschen von Infotyp 19, Subtyp 01 wird bei Ändern oder Hinzufügen (Funktionscode 06) des Feldes PRBZT oder PRBZH des Infotyps 0016 "dunkel" durchgeführt.
Äquivalent wäre:
0016 PRBZH 06 I DEL,0019,01/D
0016 PRBZT 06 I DEL,0019,01/D
F - Aufruf einer Routine
Es ist der Aufruf von internen (im Modulpool vereinbarten) und externen Routinen möglich.
Bei einer externen Routine wird der Name des Programms in Klammern hinter dem Namen der Routine angegeben. Die Mitgabe von Using-Parametern ist nicht möglich. Beim Aufruf einer externen Routine müssen alle Daten in einem Common Part vereinbart sein. Zur Rückgabe von Werten aus der Routine stehen die Felder der Struktur RP50D zur Verfügung: diese werden im Standard nicht genutzt und können durch die Routine gefüllt werden und dann für Vorgaben von Werten (W-Anweisungen) später genutzt werden.
Auf diese Weise können kundeneigene Routinen mit allen oben aufgeführten Aktionen formuliert werden.
Beispiel 1:
Infotyp Feld ..... Kennz. Variabler Funktionsteil
0016 PRBZT F PROBATION
0016 PRBZT I INS,19,01
0016 PRBZT W P0019-VTRMN=PRBEND
Im Modulpool MP001600 existiert eine Routine PROBATION, die aus den Eingaben in den Feldern P0016-PRBZT und P0016-PRBEH das Ende der Probezeit ermittelt und in das Feld PRBEND stellt.
Es wird nun ein neuer Terminsatz mit Termindatum gleich PRBEND hinzugefügt.
Beispiel 2:
Infotyp ..... Kennz. Variabler Funktionsteil
0001 F GET_DATE(ZPUDYN01)
0001 I INS,19,01
0001 W P0019-VTRMN=RP50D-DATE1
Die Routine GET_DATE im Programm ZPUDYN01 berechnet ein Datum und stellt dies in das durch "TABLES RP50D" in ZPUDYN01 vereinbarte Feld RP50D-DATE1. Dieses Datum kann dabei in GET_DATE beliebig berechnet werden; nötigenfalls können beliebige Infotypen nachgelesen werden usw.
M - Versenden eines Mails
Es ist der Name eines Merkmals anzugeben, welches die Eigenschaften des Mails bestimmt.
Beispiel:
Infotyp Feld ..... Kennz. Variabler Funktionsteil
0001 SACHP M M0001
Damit wird bei Änderung des Feldes SACHP das Senden eines Mails ausgelöst. In dem Merkmal M0001 werden die Eigenschaften des Mails bestimmt.
Im Standard wird das Merkmal M0001 als Beispiel ausgeliefert. In der Dokumentation des Merkmals M0001 erfahren Sie, wie die Eigenschaften des Mails definiert werden können.
Weitere Hinweise
Wenn Sie ein Datum als Konstante verwenden, müssen Sie es in der Form JJJJMMTT (JJJJ = Jahr, MM = Monat, TT = Tag) angeben.
Die Tabellenleisten T001P, T503 und PSPAR sind mit den zum Beginndatum des Satzes gültigen Werten gefüllt.
Die alten Werte des Infotyps stehen in der Feldleiste PSAVE zur Verfügung. Diese hat die gleiche Struktur wie die Pnnnn-Struktur (nnnn=Infotyp). Die Struktur ist nur im Falle von Löschen, Ändern und Anlegen mit - sinnvollen - Werten gefüllt.
Lesen Sie auch das Kapitel im Einführungsleitfaden Dynamische Maßnahmen anlegen.
Beispiel
Hier ein kleines Beispiel:
Variabler Funktionsteil Beispiel
*&---------------------------------------------------------------------*
*& Subroutinenpool ZHR_DYN_MASSNAHME
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM zhr_dyn_massnahme.
TABLES: t5pv2, "hr-pt: classification of absence quota types
rp50d, "HR: Return Fields for Dynamic Actions
t5prm, "HR-PT: Reasons for actions - Mapping to legal reasons
pspar. "HR: Übergabeleiste für HR-Infotyp-Dialogbausteine
INCLUDE fp50ppsb. "COMMON PART SAPFP50P
DATA: lv_datum TYPE begda.
*---------------------------------------------------------------------*
* FORM CALC_DATE *
*---------------------------------------------------------------------*
* Austritt ermitteln
*---------------------------------------------------------------------*
FORM calc_date.
CLEAR: rp50d-date1, lv_datum.
* Ermitteln Ein- und Austrittsdatum
* Wenn Mitarbeitende kürzer als 3 Monate angestellt sind,
* würde sonst versucht, ein IT0655 vor dem Eintrittsdatum
* anzulegen.
CALL FUNCTION 'HR_LEAVING_DATE'
EXPORTING
persnr = pspar-pernr
IMPORTING
leavingdate = lv_datum
EXCEPTIONS
leaving_date_not_found = 1
pernr_not_assigned = 2
OTHERS = 3.
IF sy-subrc = 0.
rp50d-date1 = lv_datum.
ENDIF.
ENDFORM. "calc_date