Thursday, December 22, 2011

Get work week begin and end dates for a given date

Report zget_wweek_dates.

*Get work week begin and end dates for a given date

tables : pernr , t559a.
infotypes : 0007.

DATA: posid(2).
DATA: pack TYPE p.
DATA: p_wweek LIKE p0007-wweek.
DATA: edatum TYPE d.
DATA: ldatum TYPE d.

PARAMETERS : p_date TYPE sy-datum.

start-of-selection.
rp-lowdate-highdate.
rp-def-time-period.
rp-def-boolean.

GET pernr.

*-----getting current workweek
CLEAR p_wweek.
LOOP AT p0007 WHERE begda <= p_date AND endda >= p_date.
p_wweek = p0007-wweek.
EXIT.
ENDLOOP.

IF p_wweek IS NOT INITIAL.
SELECT SINGLE * FROM t559a WHERE wweek EQ p_wweek.

IF t559a-wleng IS INITIAL.
posid = '00'.
ELSE.
pack = ( p_date - t559a-wdate ) MOD t559a-wleng + 1.
UNPACK pack TO posid.
ENDIF.
ELSE.
posid = '00'.
ENDIF.

IF posid = '00'.
ldatum = edatum = high-date.
ELSE.
ldatum = p_date - posid + 1. " Begin date
edatum = p_date - posid + t559a-wleng. " End date
ENDIF.

end-of-selection.

No comments:

Post a Comment