Bsp. Zeitarten Auswertungsmöglichkeiten über Cluster B2 über FuBa und IMPORT
- HR_TIME_RESULTS_GET
- IMPORT
- TEVEN
*&---------------------------------------------------------------------*
*& Report ZTEST40
*&
*&---------------------------------------------------------------------*
*&
*& Extract Time Info ZES
*&---------------------------------------------------------------------*
REPORT ztest40.
"Nachweis
" für fehlerhaften FuBa bei verschobenen Periodenbeginn (Mitte Monat)
"HR_TIME_RESULTS_GET
"IMPORT pcl2(b2)
"
"14. Tag des Monats/Periode 02 ist damit folgender:
"
" 15.1 ist erster Tag
"+14
"----
" 29.1 ist damit der 14 Tag des FuBa
" Mit dem 15. Tag hört der FuBa dann auf.
"
" Zeitart 9320 ist Saldo Überstunden
" Zeitart 0050 und 9BM0 ist die gerundeten Ist-Stunden
" Zeitart 0001, 0010, 0051 sind die ungerundeten Ist-Stunden
" Zeitart 0099 verbleibende Urlaubstage Saldo
" Zeitart Z001, 0002, 9BAZ Soll-Stunden
" Zeitart 0500 ist die Pause
" Zeitart 9320 ist Anzahl der +/- Stunden Soll zu Ist-Stunden gerundet Saldo
" Zeitart 0005 ist Anzahl der +/- Stunden Soll zu Ist-Stunden gerundet
" Zeitart 0020 ist die Abwesenheit Arzt etc.
DATA:
gt_zes LIKE pc2b6 OCCURS 0 WITH HEADER LINE,
saldo LIKE pc2b5 OCCURS 0 WITH HEADER LINE,
zl LIKE pc2bf OCCURS 0 WITH HEADER LINE,
bezug LIKE pc2b2,
no_record_found(1) TYPE c.
PARAMETERS: p_pernr LIKE p0001-pernr DEFAULT '00003179',
p_datum LIKE sy-datum DEFAULT '20190213',
p_ztart LIKE gt_zes-ztart DEFAULT '9320'.
** Das Lesen der Kommen-GehenZeit kannst du wie folgt realisieren:
*select * from teven where pernr eq p_pernr
*and erdat eq p_datum.
*if teven-satza eq 'P10'.
*write:/ ' Kommen-Zeit:', teven-ertim.
*endif.
*if teven-satza eq 'P20'.
*write:/ 'Gehen-Zeit:', teven-ertim.
*endif.
*endselect.
***die Tageswerte und ein paar Saldowerte
*** erhältst du aus dem Cluster B2 der PCL2 über folgenden FUBA
*** Cluster muss über den RPTIME00 gefüllt sein.
"Imho werden der 1 Tag der Periode mit dem 1 Tag des Monats kumuliert.
CALL FUNCTION 'HR_TIME_RESULTS_GET'
EXPORTING
get_pernr = p_pernr
get_pabrj = p_datum(4) "PN-PABRJ Jahr des Datums
get_pabrp = p_datum+4(2) "PN-PABRP Monat des Datums
get_cltyp = '1'
IMPORTING
get_no_record_found = no_record_found
get_bezug = bezug
TABLES
get_zes = gt_zes
get_saldo = saldo
get_zl = zl
EXCEPTIONS
wrong_cluster_version = 1
no_read_authority = 2
cluster_archived = 3
technical_error = 4
OTHERS = 0.
***
** Hier eventuelle Fehlerbehandlung einbauen
***
WRITE: / 'Test1 - Lesen über FuBa'.
IF p_ztart IS INITIAL.
LOOP AT gt_zes.
"Hier muss die gewünschte Zeitart stehen
WRITE:/ gt_zes-reday, gt_zes-anzhl, gt_zes-ztart. "Hier sind die Stunden
ENDLOOP.
ELSE.
LOOP AT gt_zes WHERE "reday EQ p_datum+6(2) AND
ztart EQ p_ztart.
WRITE:/ gt_zes-reday, gt_zes-anzhl, gt_zes-ztart. "Hier sind die Stunden
ENDLOOP.
ENDIF.
DATA gs_bezug TYPE pc2b2.
DATA: BEGIN OF b2_key. "key für perg-zugriff
INCLUDE STRUCTURE pc2b0.
DATA: END OF b2_key.
CLEAR gt_zes.
CLEAR gs_bezug.
" Cluster laden
b2_key-pernr = p_pernr.
b2_key-pabrj = p_datum(4). "LS_T549Q-PABRJ.
b2_key-pabrp = p_datum+4(2). "LS_T549Q-PABRP.
b2_key-cltyp = '1'.
IMPORT
zes TO gt_zes
bezug TO gs_bezug
FROM DATABASE pcl2(b2)
ID b2_key.
" Unnötige Zeitarten entfernen
"DELETE gt_zes WHERE ztart NE p_ztart.
WRITE: / 'Test2 - Lesen über IMPORT'.
IF p_ztart IS INITIAL.
LOOP AT gt_zes. "reday EQ p_datum+6(2) AND
"Hier muss die gewünschte Zeitart stehen
WRITE:/ gt_zes-reday, gt_zes-anzhl, gt_zes-ztart. "Hier sind die Stunden
ENDLOOP.
ELSE.
LOOP AT gt_zes "reday EQ p_datum+6(2) AND
WHERE ztart EQ p_ztart.
"Hier muss die gewünschte Zeitart stehen
WRITE:/ gt_zes-reday, gt_zes-anzhl, gt_zes-ztart. "Hier sind die Stunden
ENDLOOP.
ENDIF.