ich habe innerhalb meiner personalstammdatenein zusätzliches feld eingebaut. diese abfrage möchte ich nun innerhalb meiner abrechnung in das abrechnungsschema bzw. in eine regel aufnehmen. diese regel soll das feld auslesen und den gesetzten wert entsprechend der regel zurückliefern.
Definiere über die Transaktion PE04 bspw. eine neue Abrechnungsfunktion
-Test. Ein- und Ausgangstabelle der Funktion sollte die it sein.
Im User-Exit PCBURZDE0 (kannst du unter der genannten Transaktion direkt über die Symbolleiste aufrufen: s. blaues Symbol) codierst du, was die Funktion machen soll. Das könnte dann in etwa so aussehen:
*Die Funktion -Test liest das Zusatzfeld YYYY des IT XXXX ins Anzahlfeld der Lohnart 0004:
FORM fu-Test.
provide * from pXXXX between pn-begda and pn-endda.
it = it0.
if not PXXXX-YYYY is initial.
it-lgart = '0004'.
cdatum = pxxxx-endda.
Perform pos-wpbp.
it-abart = wpbp-abart.
it-apznr = wpbp-apznr.
it-anzhl = pxxxx-yyyy
collect it.
endif.
endprovide.
Die Funktion ins Abrechnungsschema einbauen und das war´s auch schon.
Du kannst aber das auch mit einer eigenen Operation (PE04) machen, dann Brauchst Du nicht die IT. Du gibst den WErte in der Rechenregel dann ins variable Argument.
Hier ein Beispiel zum Auslesen eines zusätzlichen Feldes bzw, eines bisher nicht im Schema auswertbaren Feldes im IT 0050.
Die Operation heisst %ZABA
Der Form ist im INCLUDE PCBURZDE0
*&---------------------------------------------------------------------*
*& Form op%ZABA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form op%zaba. "formerly ZABA=
data: begin of i0050 occurs 10.
include structure p0050.
data: end of i0050.
data: subrc like sy-subrc.
if op-modif eq hochkomma. "Direktwert wird mit "'" eingeleitet.
*-- den in der Operation angegebenen String ins variable Argument setzen
vargt = op-lgart.
else.
* IT0050 Zeitinfo
call function 'HR_READ_INFOTYPE'
exporting
pernr = pernr-pernr
infty = '0050'
begda = aper-begda
endda = aper-endda
importing
subrc = subrc
tables
infty_tab = i0050
exceptions
infty_not_found = 1
.
if subrc <> 0.
clear i0050.
i0050-zabar = '*'.
endif.
*
case op+5(5).
when 'ZABAR'. "--> das SAP-Standardfeld
* rp-provide-from-last p0050 space aper-begda aper-endda.
vargt = i0050-zabar.
when 'AUTOL'. !--> das Kundenfeld
perform pos-wpbpznr using ot-apznr.
loop at i0050
where begda le wpbp-endda
and endda ge wpbp-begda.
exit.
endloop.
if sy-subrc ne 0
or i0050-zz_autoloa is initial.
vargt = '****'.
else.
vargt = i0050-zz_autoloa.
endif.
endcase.
endif.
perform fillvargt.
endform. "END OF OPVARG.