_ENDP Окончание учетного период для сумм. учета рабочего времени (СУРВ)

Маленькая операция для оценки времени на проверку окончания учетного периода при суммированном учете рабочего времени. Поводом для изменения является окончание календарного года или увольнение. А дальше в оценке времени уже анализируется баланс рабочего времени, формируются виды оплаты в своем правиле.

Программа SAPFP51T

*&———————————————————————*
*& Form OP_ENDP
*&———————————————————————*
* Проверяем окончание учетного период для сумм учета (СУРВ)
*———————————————————————-*

FORM op_endp.

DATA: lv_ndate LIKE sy-datum,
lt_p0000 LIKE p0000 OCCURS 1 WITH HEADER LINE.

lv_ndate = acdate + 1.

vargt = ‘N’.

” месяц
IF ( op+5(1) = ‘M’ ) AND ( lv_ndate+6(2) = ’01’ ).
vargt = ‘Y’.
ENDIF.

” год
IF ( op+5(1) = ‘Y’) AND ( acdate+4(4) = ‘1231’ ).
vargt = ‘Y’.
ENDIF.

IF vargt = ‘N’.
” проверяем на мероприятия (увольнение/перевод)
” читаем мероприятия на следующий день, так как изменение нужно отразить уже сегодня (а мероприятие будет только завтра)

CALL FUNCTION ‘HR_READ_INFOTYPE_AUTHC_DISABLE’ .
CALL FUNCTION ‘HR_READ_INFOTYPE’
EXPORTING
pernr = pernr-pernr
infty = ‘0000’
begda = lv_ndate
endda = lv_ndate
TABLES
infty_tab = lt_p0000.

READ TABLE lt_p0000 INDEX 1.
IF sy-subrc = 0.
” Проверяем на изменение статуса
IF ( wpbp-stat2 lt_p0000-stat2 ).
vargt = ‘Y’.
ENDIF.
ENDIF.
ENDIF.

PERFORM fillvargt.
ENDFORM. “OP_ENDP

_ENDP Окончание учетного период для сумм. учета рабочего времени (СУРВ): 2 комментария

  1. fall3n

    Так как в WPBP в оценке времени всегда лежат данные на следующий день, то можно сделать проще 🙄 :

    DATA: lv_next_day LIKE acdate,
    ls_wpbp_next_day TYPE pc205.

    lv_next_day = acdate + 1.
    vargt = 'N'.
    " месяц
    IF ( op+5(1) = 'M' ) AND ( lv_next_day+6(2) = '01' ).
    vargt = 'Y'.
    ENDIF.
    " год
    IF ( op+5(1) = 'Y') AND ( acdate+4(4) = '1231' ).
    vargt = 'Y'.
    ENDIF.

    IF vargt = 'N'.
    " проверяем на мероприятия (увольнение/перевод)
    " читаем мероприятия на следующий день, так как изменение нужно отразить уже сегодня (а мероприятие будет только завтра)
    LOOP AT wpbp INTO ls_wpbp_next_day WHERE begda = lv_next_day.
    " Проверяем на изменение статуса
    IF ( wpbp-stat2 ls_wpbp_next_day-stat2 ).

    vargt = 'Y'.
    ENDIF.
    EXIT.
    ENDLOOP.
    ENDIF.
    PERFORM fillvargt.
    ENDFORM. «OP_ENDP

  2. VirVit Автор записи

    Согласен. Но результатов может и не быть на следующий день 😉

Добавить комментарий