Code: Alles auswählen.
rp-provide-from-last p0000 space pnpbegda pnpendda " p0000 ist die interne Tabelle für den Infotyp 0000 space der subtyp pnpbegda und pnpendda das selektierte Datum
Ich möchte die Tatsächlichen Urlaubstage (welche abgetragen werden) ausgegeben haben. Der Infotyp 2001 zeigt mir die Tage ja auch super an, das Problem ist nur wenn ich eine Abfrage für Januar durchführe, gibt er mir die kompletten 22 Urlaubstage aus und für Februar 0 Tage. Ziel ist das die Ausgabe im Januar 12 Tage und im Februar 10 Tage sind. Hier mal der Code nur auf Januar & Februar bezogen.DeathAndPain hat geschrieben: ↑10.01.2020 11:47Serh hilfreich wäre es gewesen, wenn Du Deinen (nicht funktionierenden) Code zum besten gegeben hättest (bitte stets vollständig mit allen Felddeklarationen), damit wir sehen können, was Du da machst und woran es hapert.
Ansonsten ist das eine Frage dessen, was Du brauchst. Willst Du die Kalendertage, die innerhalb des Urlaubs liegen, oder nur diejenigen Tage, die tatsächlich vom Urlaubskontingent abzutragen sind, also die Arbeitstage des Mitarbeiters?
An dieser Frage orientiert sich das gesamte Programmdesign, so dass das zuerst beantwortet werden muss. Aber wenn wir Dein derzeitiges Programm sähen, könnten wir vielleicht schon was dazu sagen.
Code: Alles auswählen.
infotypes: 2001.
data: begin of itab occurs 100,
tage_jan like p2001-tage,
tage_feb like p2001-tage,
...
end of itab.
start-of-selection.
get pernr.
provide * from p2001 between '20200101' and '20200131'.
move-corresponding p2001 to itab.
itab-tage_jan = p2001-tage.
collect itab.
clear itab.
endprovide.
provide * from p2001 between '20200102' and '20200228'.
move-corresponding p2001 to itab.
itab-tage_feb = p2001-tage.
collect itab.
clear itab.
endprovide.
end-of-selection.
loop at itab.
write:/ itab-tage_jan, itab-tage_feb.
endloop.
Code: Alles auswählen.
REPORT ZTEST6.
DATA: BEGIN OF ERGEBNIS,
ABRTG_JAN LIKE P2001-ABRTG,
ABRTG_FEB LIKE P2001-ABRTG,
END OF ERGEBNIS.
PARAMETERS: PERNR TYPE PERSNO,
JAHR(4) TYPE C DEFAULT '2020'.
START-OF-SELECTION.
SELECT SUM( ABRTG ) INTO ERGEBNIS-ABRTG_JAN FROM PA2001
WHERE PERNR = PERNR
AND SPRPS = SPACE
AND ENDDA >= '20200101'
AND BEGDA <= '20200131'.
SELECT SUM( ABRTG ) INTO ERGEBNIS-ABRTG_FEB FROM PA2001
WHERE PERNR = PERNR
AND SPRPS = SPACE
AND ENDDA >= '20200201'
AND BEGDA <= '20200229'.
Hallo,DeathAndPain hat geschrieben: ↑10.01.2020 19:09
Warum machste nicht einfach Folgendes:
Code: Alles auswählen.
REPORT ZTEST6. DATA: BEGIN OF ERGEBNIS, ABRTG_JAN LIKE P2001-ABRTG, ABRTG_FEB LIKE P2001-ABRTG, END OF ERGEBNIS. PARAMETERS: PERNR TYPE PERSNO, JAHR(4) TYPE C DEFAULT '2020'. START-OF-SELECTION. SELECT SUM( ABRTG ) INTO ERGEBNIS-ABRTG_JAN FROM PA2001 WHERE PERNR = PERNR AND SPRPS = SPACE AND ENDDA >= '20200101' AND BEGDA <= '20200131'. SELECT SUM( ABRTG ) INTO ERGEBNIS-ABRTG_FEB FROM PA2001 WHERE PERNR = PERNR AND SPRPS = SPACE AND ENDDA >= '20200201' AND BEGDA <= '20200229'.
Code: Alles auswählen.
WHERE BEGDA <= '20200430'
AND ENDDA >= '20200401'
Code: Alles auswählen.
WHERE BEGDA <= '20200531'
AND ENDDA >= '20200501'
Ja genau soweit kann ich das jetzt auch nachvollziehen. Leider hab ich immer noch keine Lösung für die monatliche Ausgabe.
Code: Alles auswählen.
DATA: PERWS TYPE STANDARD TABLE OF PTPSP. " Arbeitszeitkalender
CALL FUNCTION 'HR_PERSONAL_WORK_SCHEDULE'
EXPORTING
PERNR = PERNR
BEGDA = '20200427'
ENDDA = '20200430'
WORKING_HOURS = SPACE
TABLES
PERWS = PERWS.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag (Insgesamt 2):
Legxis • ArjenR