SAPфорум.RU
https://www.sapboard.ru/forum/

Проверка отсутсвия на дату
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=96663
Страница 1 из 1

Автор:  exotik [ Вт, июл 31 2018, 09:33 ]
Заголовок сообщения:  Проверка отсутсвия на дату

Добрый день.
Есть таблица с датами в формате:
20180701
20180702
20180703
20180704
и т.д
Как можно проверить отсутствие в 2001 не считывая каждый раз ит на эту дату?

Автор:  Kuranov.Dmitry [ Пн, авг 13 2018, 14:36 ]
Заголовок сообщения:  Re: Проверка отсутсвия на дату

считать все записи модулем HR_READ_INFOTYPE во внутреннюю таблицу и работать с ней

Code:
DATA lp2001 type SORTED TABLE OF p2001 WITH NON-UNIQUE KEY pernr begda endda subty seqnr.
data ls2001 like LINE OF lp2001.
data: BEGIN OF t_dates OCCURS 0,
      begda type begda,
     END OF t_dates.
     

CLEAR lp2001[].
CALL FUNCTION 'HR_READ_INFOTYPE'
  EXPORTING
    pernr                 = pernr-pernr
    infty                 = '2001'
  tables
    infty_tab             = lp2001
EXCEPTIONS
   INFTY_NOT_FOUND       = 1
   OTHERS                = 2
          .
IF sy-subrc <> 0 or lp2001[] is INITIAL.
  MESSAGE 'Нет 2001 ИТ' TYPE 'I'.
  exit.
ENDIF.


LOOP AT t_dates.
  LOOP AT lp2001 INTO ls2001 WHERE begda <= t_dates-begda AND endda >= t_dates-endda.
    exit.
  ENDLOOP.
  CHECK sy-subrc = 0.
  WRITE: / 'Есть отстуствие ',ls2001-subty ,' на дату ', t_dates-begda.
ENDLOOP.



ну или по хардкору:


Code:

data: BEGIN OF t_dates OCCURS 0,
      begda type begda,
     END OF t_dates.
     

LOOP AT t_dates.
  SELECT SINGLE mandt INTO sy-mandt FROM pa2001 WHERE pernr = pernr-pernr AND begda <= t_dates-begda AND endda >= t_dates-endda.
  CHECK sy-subrc = 0.
  WRITE: / 'Есть отстуствие  на дату ', t_dates-begda.
ENDLOOP.


Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/