Текущее время: Вт, июл 22 2025, 17:56

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Дублирование ИТ 2001, 2002
СообщениеДобавлено: Пн, мар 16 2015, 13:21 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 28 2007, 08:08
Сообщения: 51
Добрый день.
Сделал проверку на ввод присутствий-отсутствий одного вида на одно время в экзите ZXPADU02 на операции ipsyst-ioper = 'INS' or 'COP' or 'MOD'. Для проверки на существование записей ИТ читаю с помощью ФМ HR_READ_INFOTYPE и сравниваю с записью innnn. Возникла проблема на случай модификации (ipsyst-ioper = 'MOD'): для пропуска модифицируемой записи использую проверку psave-pskey <> <wa_pnnnn>-pskey (<wa_pnnnn> - считано ФМ HR_READ_INFOTYPE). Проверка работает нормально при работе через PA30, а в случае запуска мероприятия через pa40 структура psave содержит уже измененные данные. Есть какие-нибудь идеи, как обойти? Через временные привязки не получается, т.к. есть подтипы 2001/2002, которые могут существовать одновременно, главное, чтобы подтип был разный.

Code:
if innnn-infty >= '2001' and
   innnn-infty <= '2002' and
   "innnn-infty <= '2003' and
   innnn-sprps <> 'X' and
   ( ipsyst-ioper = 'INS' or
     ipsyst-ioper = 'COP' or
     ipsyst-ioper = 'MOD' ).
    data:
          v_intersects type c,
          v_intersects2 type c,
          v_type(20) type c,
          it_pnnnn type table of prelp.
    field-symbols:
        <wa_pnnnn> type prelp,
        <wa> type any,
        <new> type any,
        <beguz1> type beguz,
        <enduz1> type enduz,
        <beguz2> type beguz,
        <enduz2> type enduz.

    CALL FUNCTION 'HR_READ_INFOTYPE'
      EXPORTING
*       TCLAS                 = 'A'
        PERNR                 = innnn-pernr
        INFTY                 = innnn-infty
        BEGDA                 = innnn-begda
        ENDDA                 = innnn-endda
*       BYPASS_BUFFER         = ' '
*       LEGACY_MODE           = ' '
*     IMPORTING
*       SUBRC                 =
      TABLES
        INFTY_TAB             = it_pnnnn
      EXCEPTIONS
        INFTY_NOT_FOUND       = 1
        OTHERS                = 2
              .

    v_type = 'P'.
    v_type+1(4) = innnn-infty.
    assign innnn to <new> casting type (v_type).
    assign component 'ENDUZ' of structure <new> to <enduz1>.
    " если новое присутствие не на весь день
    if <enduz1> cn ' 0'.
        assign component 'BEGUZ' of structure <new> to <beguz1>.
    endif.
    loop at it_pnnnn assigning <wa_pnnnn>
    where
        subty = innnn-subty and
        sprps <> 'X'.

        check ipsyst-ioper <> 'MOD' or psave-pskey <> <wa_pnnnn>-pskey.

        " если новое присутствие не на весь день
        if <enduz1> cn ' 0'.
            assign <wa_pnnnn> to <wa> casting type (v_type).
            assign component 'ENDUZ' of structure <wa> to <enduz2>.
            " если старая запись на весь день
            if <enduz2> co ' 0'.
                v_intersects = 'X'.
            else.
                assign component 'BEGUZ' of structure <wa> to <beguz2>.
                if <beguz1> >= <enduz2> or
                   <beguz2> >= <enduz1>.

                else.
                    v_intersects = 'X'.
                endif.
            endif.
        else.
            v_intersects = 'X'.
        endif.
       
        if v_intersects = 'X'.
            case innnn-infty.
              when '2001'.
                  v_type = 'отсутствие'.
              when '2002'.
                  v_type = 'присутствие'.
              when '2003'.
                  v_type = 'замещение'.
              when others.
                  v_type = 'запись инфотипа'.
            endcase.
            message e003(zhr00) with 'Уже существует' v_type 'подтипа' innnn-subty.
            exit.
        endif.
    endloop.

endif.



Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB