Текущее время: Вт, авг 05 2025, 14:52

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Проблемы с блокировкой при реализации собственной системы статусов
СообщениеДобавлено: Чт, июн 07 2012, 16:01 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 29 2012, 15:16
Сообщения: 13
Коллеги, добрый день!

Сейчас идёт работа над реализацией своей системы статусов (STS не подходит по причине того, что портал не продан заказчику).

Задача стандартна: Существует форма, которую редактирует 1 человек,затем 1 согласует и 1 утверждает. Каждый из них может вводить данные в форму только на своём уровне утверждения.

На данный момент реализация ведётся следующим образом: Текущие права пользователей и статусы записываются в отдельные Z-таблицу. Запись статуса происходит с помощью ФМ, вызываемым через функцию планирования, а проверка полномочий - через Exit-класс сделанный на кубе (Пример кода ниже). В итоге данные блокируются для пользователя на ввод, но при этом возникает проблема - блокировка среза данных для ввода остаётся!

Т.е. если пользователь, ввёл данные и отправил на согласование, а затем не вышел из формы (или просто вошёл в неё, чтобы просмотреть данные), То согласующие не может их редактировать (пишет, что провайдер заблокирован), т.к. формально нижний пользователь остаётся в форме ввода, а не в отчёте (!). Можно ли как-то обойти эту проблему (чтобы согласующий пользователь мог редактировать данные даже если пользователь более низкого уровня завершил ввод данных, но при этом просматривает их через заблокированную форму ввода) или реализовать систему статусов другим образом? Заранее спасибо, Гуру!


пример кода в классе проверки:
METHOD IF_RSPLS_DS_METHODS~IS_PROTECTED.

CLEAR e_t_mesg.

FIELD-SYMBOLS:
<lv_FORM> TYPE /BIC/OII_FORM,
<lv_DEP> TYPE /BIC/OII_DEP,
<lv_CALYEAR> TYPE /BI0/OICALYEAR.

ASSIGN COMPONENT '/BIC/I_FORM' OF STRUCTURE I_S_DATA
TO <lv_FORM>.
ASSIGN COMPONENT '/BIC/I_DEP' OF STRUCTURE I_S_DATA
TO <lv_DEP>.
ASSIGN COMPONENT 'CALYEAR' OF STRUCTURE I_S_DATA
TO <lv_CALYEAR>.

DATA l_stat_form type /BIC/OII_STATUS.
DATA l_cat type /BIC/OII_CATEG.
Data l_line_user type ZIUSER.
Data l_line_status type ZISTATUS.

* из таблицы вытаскиваем текущий статус формы.
select single STATUS from ZISTATUS into l_stat_form
where FORM = <lv_FORM> and DEPARTMENT = <lv_DEP> and CALYEAR = <lv_CALYEAR>.

* если в таблице ZISTATUS нет записей для этой формы, года и департамента, создаем запись с начальным статусом для текущих знач фильтра.
if sy-subrc <> 0.
l_line_status-FORM = <lv_FORM>.
l_line_status-DEPARTMENT = <lv_DEP>.
l_line_status-CALYEAR = <lv_CALYEAR>.
* выставляем начальный статус.
l_line_status-STATUS = '00'.
modify ZISTATUS from l_line_status.

l_stat_form = '00'.
endif.

* вытаскиваем категорию по статусу, из полномочий.
select single CATEGORY from ZIPOWERS into l_cat
where STATUS = l_stat_form.
if sy-subrc = 0.
select single * from ZIUSER into l_line_user
where USERNAME = sy-uname and CATEGORY = l_cat.
if sy-subrc <> 0.
E_NOINPUT = 'X'.
endif.
* не найдена категория для статуса
else.
E_NOINPUT = 'X'.
endif.
endmethod.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблемы с блокировкой при реализации собственной системы статусов  Тема решена
СообщениеДобавлено: Пт, июн 08 2012, 09:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 18 2008, 07:37
Сообщения: 256
А чем режим "просмотр" не устраивает? Добавьте к кнопке static parameters:
Code:
ACTIVE пусто
CMD  SET_INPUT_MODE
DATA_PROVIDER DATA_PROVIDER

и блокировка снимается.

_________________
The extent of reliability of the data affect on the quality of resource allocation.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с блокировкой при реализации собственной системы статусов
СообщениеДобавлено: Пт, июн 08 2012, 10:37 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 29 2012, 15:16
Сообщения: 13
Кен, спасибо! Блокировка снимается! Однако необходимо, чтобы при заходе в форму она снималась в случае, если пользователь не может редактировать данные. Её можно повесить на VBA а CallBack макросе, но как передать в него тот самый параметр, по которому можно определить, запускать ли кнопку, или нет. Должно же быть какое-то условие для этого дела!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Проблемы с блокировкой при реализации собственной системы статусов
СообщениеДобавлено: Сб, июн 09 2012, 11:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 18 2008, 07:37
Сообщения: 256
В таком случае можно при открытии формы, по умолчанию, переходить в режим просмотра, а далее повесить на кнопку сохранения переход в режим просмотра после сохранения. И добавить ещё одну кнопку - переход в режим планирования, если есть необходимость.
Если всёже хотите по трудному пути, то создать Exit переменную, в которую помещать текущий статус текущего пользователя из таблицы блокировок. Ну или если совсем никак, то выводить в отчёт вашу таблицу блокировок ZISTATUS и в VBA сравнивать, это для фанатов VBA =)

_________________
The extent of reliability of the data affect on the quality of resource allocation.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с блокировкой при реализации собственной системы статусов
СообщениеДобавлено: Чт, июн 14 2012, 10:30 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 29 2012, 15:16
Сообщения: 13
Кен, пошли примерно в том направлении, спасибо за помощь!


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

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


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

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


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

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