Текущее время: Вс, авг 10 2025, 13:25

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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