Текущее время: Сб, сен 06 2025, 23:08

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Блокировка ИТ в динамике
СообщениеДобавлено: Чт, сен 01 2011, 07:52 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 24 2009, 11:55
Сообщения: 31
Откуда: Сургут
Пол: Мужской
Здравствуйте, уважаемые коллеги!
Прошу помочь разобраться в проблеме, над которой уже ломаю голову не один день.
Ситуация: завели новое мероприятие, настроили инфо-группу типа MOD 2001, INS 0298, INS 9201. На ИТ 9201 нужно прицепить динамику: при его создании нужно установить индикатор блокировки для приказа, относящегося к другому мероприятию. Прямое применение оператора EDQ в динамике не помогает - система пытается заблокировать приказ, созданный в данной инфо-группе для данного мероприятия. Синтаксис использования:
Code:
EDQ,0298,9001,,(RP50D-DATE1),(RP50D-DATE2)
В поля дат структуры RP50D подставляю даты приказа, который нужно заблокировать, в запущенной перед этим подпрограмме (использую ФМ для поиска HR_READ_INFOTYPE). Так же пробовал использовать ФМ'ники HR_INFOTYPE_OPERATION и HR_MAINTAIN_MASTERDATA в подпрограмме. Вне динамики, эти ФМ'ы работают и всё корректно блокируют, но в динамике не получается. Приведу код использования.
HR_MAINTAIN_MASTERDATA:
Code:
   
    add_to_prop '0298' 'SPRPS' 'X' 0.

    CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'
      EXPORTING
        pernr                    = lt_p0298-pernr
        actio                    = 'EDQ'
        begda                    = lt_p0298-begda
        endda                    = lt_p0298-endda
      IMPORTING
        return                   = ls_ret
        return1                  = ls_ret1
        hr_return                = ls_hrret
      TABLES
        proposed_values          = lt_prop[]
        MODIFIED_KEYS            = lt_pskey.

Пытался экспериметировать с переменными subty, no_enqueue и luw_mode - не помогло

HR_INFOTYPE_OPERATION:
Code:
    CALL FUNCTION 'HR_INFOTYPE_OPERATION'
      EXPORTING
        infty                  = '0298'
        number                 = lt_p0298-pernr
        SUBTYPE                = lt_p0298-subty
        LOCKINDICATOR          = lt_p0298-sprps
        VALIDITYEND            = lt_p0298-endda
        VALIDITYBEGIN          = lt_p0298-begda
        record                 = lt_p0298
        operation              = 'EDQ'
      IMPORTING
        RETURN                 = ls_ret1.

У меня предположение, что в динамике они не выполняются из-за блокировок табельника, уже даже ноту накатили 1487481, не помогло.
Если у кого-нибудь есть соображения по этому поводу, прошу высказаться. Может будут предложения, как по-другому произвести блокировку. Прямое изменение в БД не рассматриваю.
Заранее благодарю всех откликнувшихся!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка ИТ в динамике
СообщениеДобавлено: Чт, сен 01 2011, 09:56 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 30 2007, 15:49
Сообщения: 214
Пол: Мужской
попробуйте обновить ИТ таким образом
Code:
  data: insert_check,
        error_flag(1),
        msgtp type msgtp,
        no   value '0',
        yes value '1',
        ls_0298 type p0298.
*****************************
perform modify_infotyp in program sapfp50p using ls_0298 insert_check no msgtp error_flag.
perform put_infotyp_buffer in program sapfp50p.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка ИТ в динамике
СообщениеДобавлено: Чт, сен 01 2011, 11:17 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 24 2009, 11:55
Сообщения: 31
Откуда: Сургут
Пол: Мужской
Ничего не изменилось


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Блокировка ИТ в динамике
СообщениеДобавлено: Чт, сен 01 2011, 13:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 09:40
Сообщения: 536
Откуда: Belgorod
Пол: Мужской
есть еще немного извращенный способ :).
в динамике подключаете include mppdat00.
Code:
 
   LOOP AT dynmeas.
   ENDLOOP.
   lin = dynmeas-seqnr + 1. 
  CLEAR dynmeas.
  dynmeas-actio = 'INS'.
  dynmeas-supdg = 'X'.     " suppress dialog
  dynmeas-infty = '0007'.
  dynmeas-begda = p0000-begda.
  dynmeas-endda = p0007_endda.
  dynmeas-seqnr = lin.
  APPEND dynmeas.

  CLEAR:   initial_values.

  initial_values-field_name  = 'P0007-BEGDA'.
  initial_values-field_value = p0000-begda.
  initial_values-seqnr = lin.
  APPEND initial_values.

  initial_values-field_name  = 'P0007-ENDDA'.
  initial_values-field_value = p0007_endda.
  initial_values-seqnr = lin.
  APPEND initial_values.
  ...

_________________
Новый этап на проекте - устранение доработок :).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка ИТ в динамике
СообщениеДобавлено: Пт, сен 02 2011, 15:35 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 24 2009, 10:35
Сообщения: 51
PERFORM rp_infotyp(sapfp50g) USING ls_0290-pernr 'INS'
ls_0290-infty ls_0290-subty space ls_0290-begda ls_0290-endda rcode.

перед вызовом не блокируйте табельный, т.к. он уже заблокирован


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

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


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

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


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

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