Samstag, 18. Mai 2013

PA - Vorschlagswerte für Infotypen

Wenn man Infotypen Vorschlagswerte mitgeben möchte stößt man auf ganz unterschiedliche Methoden in SAP wie man das umsetzen kann.

Vorschlagswerte für Infotypen übernehmen
Dieser Punkt im IMG verweist auf das Merkmal DFINF über das man für bestimmte Infotypen einstellen kann ob beim Kopieren Werte vom Vorgängersatz übernommen werden

Infotypspezifische Merkmale
Einzelne Infotypen haben spezielle Merkmale für Vorschlagswerte wie zum Beispiel:
IT0000
NUMKR - Nummernkreis Personalnummern

IT0001:
ABKRS - Vorschlagswert für Abrechnungskreis
PINCH - Sachbearbeitergruppen

IT0007:
SCHKZ - Vorschlagswert für Schichtkennzeichen
TMSTA - VORSCHLAGSWERT FÜR STATUS ZEITWIRTSCHAFT
WWEEK - Vorschlagswert für Arbeitswoche

IT0008:
TARIF - Vorschlag Tarifart -gebiet in den Basisbezügen
LGMST - Sollbezahlungsvorgabe
 
IT0009:
ZLSCH - Vorschlagswert für Zahlweg

IT0010:
DVB10 - Vorschlagswerte für Vermögensbildung (D)

IT0012:
DST12 - Vorschlagswerte für Steuer (D)

IT0013:
DSVVU - Vorschlagswerte für Sozialversicherung
DSVVW - Mitarbeiterkasse

IT0041:
DATAR - Vorschlagswert für Datumsangaben

IT0699:
DAVMV - AVmG: Vorschlag Vertragsmodell

IT0029:
DBGVW - Vorschlag für Berufsgenossenschaft und Gefahrtarif

Dynamische Maßnahmen Tabelle T588Z - hier kann beispielsweise nach Eingabe eines Infotypsatzes ein anderer angelegt werden, auch mit Vorschlagswerten. Hierbei ist allerdings zu beachten dass die dynamischen Maßnahmen erst nach der Eingabe zum Zeitpunkt PAI angesprochen werden. Diese Methode eignet sich also nicht um beim Anlegen Werte vorzugeben.

Erweiterung PBAS0001 - Transaktion SMOD (bzw. Implementierung über CMOD)
Wichtig - im Unterschied zu dynamischen Maßnahmen kann man die Vorschlagswerte vor Ausgabe des Dynpros zum Zeitpunkt PBO ausgeben - und zwar beim Anlegen und Kopieren!
 
Im Funktionsexit EXIT_SAPFP50M_001 kann man Vorschlagswerte für einzelne Infotypen vorgeben. Wichtig zu wissen ist dass die Erweiterung - einmal implementiert - für alle Infotypen durchlaufen wird. Deshalb ist es sehr wichtig den Infotypen mit einer CASE-Anweisung abzufragen.
Im Include LXPADF01 ist Beispielcoding hinterlegt - im Endeffekt muss diese Abfrage so aussehen
CASE INNNN-INFTY.
  WHEN '0022'.
* mach etwas...
  WHEN OTHERS.
* mach nichts...
ENDCASE.
Was kann die Erweiterung? Es stehen diese Daten zur Verfügung:
TCLAS    die Transaktionsklasse (A = Mitarbeiter, B = Bewerber)
INNNN    der erfaßte Infotyp,
IPSYST   Arbeitsfelder zur Dialogsteuerung und ausgewählte Felder der organisatorischen Zuordnung (IT 0001), die zum Beginndatum des aktuellen Satzes (INNNN-BEGDA) gültig ist,
I001P    Tabelle T001P (Personalteilbereiche), ermittelt mit der aktuellen organisatorischen Zuordnung (IPSYST-WERKS, IPSYST-BTRTL),
I503     Tabelle T503 (Mitarbeiterkreise), ermittelt mit der aktuellen organisatorischen Zuordnung (IPSYST-PERSG, IPSYST-PERSK).
IPREF Zuordnungsgrößen für HR-Objekte

Dabei kann der Übergabeparameter INNNN der die Struktur des jeweiligen Infotypen hat mit Vorschlagswerten versorgt werden. Dabei sind folgende Schritte zu erledigen:

Deklaration einer Feldleiste mit der gewünschten Infotypstruktur (I0008 LIKE P0008)
DATA: I0008 LIKE P0008.

Zwischenspeichern des Übergabeparameters INNNN in der Infotyp- Feldleiste

I0008 = INNNN.

Ermitteln des Vorschlagswertes
I0008-BSGRD = '100'. "Beschäftigungsgrad auf 100 setzen als Beispiel

Rückgabe der Infotyp-Feldleiste in den Übergabeparameter INNNN
INNNN = I0008.
 

Kommentare:

  1. Kommentar von Mathias Gloß:

    Hallo Armin,
    Glückwunsch zu dem Artikel, der den ganzen Kuddelmuddel zusammenfasst - insbesondere für Neueinsteiger eine wertvolle Quelle.
    Kleiner Tipp noch:
    > Zwischenspeichern des Übergabeparameters INNNN in der Infotyp- Feldleiste
    > I0008 = INNNN
    damit hatten wir nach dem Upgrade zu ECC 6 Schwierigkeiten, das gab einen Dump.

    Lösung waren die beiden Statischen Methoden (um im Beispiel mit dem IT0008 zu bleiben):

    *
    CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
    EXPORTING
    prelp = innnn
    IMPORTING
    pnnnn = i0008.
    * ... jetzt irgend etwas mit i0008 machen, z.B. das:
    I0008-BSGRD = '100'. "Beschäftigungsgrad auf 100 setzen als Beispiel
    CALL METHOD cl_hr_pnnnn_type_cast=>pnnnn_to_prelp
    EXPORTING
    pnnnn = i0008
    IMPORTING
    prelp = innnn.


    Viele Grüße, Mathias

    AntwortenLöschen
  2. Hallo Mathias,

    Vielen Dank für Deinen Kommentar und das Lob - das ist eine sehr gute Ergänzung.

    Viele Grüße

    Armin

    AntwortenLöschen
  3. Interessant wäre jetzt noch gewesen, wie bzw. ob man eine Chance hat, auf die alten Werte des Infotyps (also die, die zum Aufrufzeitpunkt dringestanden haben) zuzugreifen, etwa wenn man feststellen möchte, ob sich solch Wert verändert hat.

    AntwortenLöschen
  4. Hallo,

    also bei einer dynamischen Maßnahme geht das schon, hier hat man die Struktur PSAVE zur Verfügung.

    Viele Grüße

    Armin Bittner

    AntwortenLöschen
  5. Hallo,
    Wie kann ich bei IT0021 Felder, die auf IT0288 verweisen, als Musseingabe definieren?
    Weil mit dem User-Exit EXIT_SAPFP50M_002 kann ich nur die IT0021-eigenen Felder abfragen.

    Z.B:
    P0288-ERADR (Arbeitgeber des Partners) soll ein Pflichtfeld sein.
    Die Daten werden aber erst nach dem Speichern des IT0021 in den IT0288 geschrieben und sind daher erst danach auswertbar.
    Das Speichern soll jedoch (da Pflichtfeld) nur möglich sein, wenn in P0288-ERADR ein Wert eingetragen wurde.
    Wie komme ich aus dieser Lage heraus???

    Vielen Dank!

    AntwortenLöschen
  6. Hallo, ich würde das so machen dass ich a) in der Bildsteuerung des Infotypen 0288 das Feld als Pflichtfeld definieren würde und dann b) den Infotypen 0288 über eine dynamische Maßnahme aufrufen würde im Dialog.

    Viele Grüße

    Armin Bittner

    AntwortenLöschen