Текущее время: Пт, июл 18 2025, 20:00

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


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

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


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

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