Текущее время: Пт, авг 22 2025, 17:35

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




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Хитрый ФМ для BPS
СообщениеДобавлено: Чт, янв 11 2007, 19:10 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Привет всем!

Встала задача повесить вплывающее окно с предупреждением о возможном исправлении данных. С двумя кнопками "да", "нет", "ещё подумаю". На кнпоку выполняющую преобразование данных на Fox.
Возможное решение было сделать на ФМ необходимое окошко, а ответ пользователя записать в BPS переменную. Которую в дальнейшем и учитывать при расчетах, т.е. считать дальше или нет.

Собственно вопорс как записать значение "1" и "2" в числовую переменную BPS, если сам ФМ будет вызывать непосредственно из последовательности планирования первым в очереди. Тем самым разрешая или предотвращая исполнения всех остальных преобразований на Fox.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 06:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Как вариант: попробуйте ФМ-ом своим писать нужное значение либо в табличину какую-нибудь, либо в память, либо export to database. А сама переменная - вид замены "программа пользователя", и читайте там в ФМе оттуда, куда записали...

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 11:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Ок, в память не плохой выход, но вот ещё одим небольшой нюанс, как это окно с кнопками убрать после нажатия ДА/НЕТ.

Как убрать подэкран в экране?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 11:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Гм... Странный вопрос. Если экран модальный - он сам уберется.

А вообще зачем свой экран рисовать и показывать? Есть же ФМы стандартные с выводом вопросов типа "Спасти мир?: Да/Нет/Отмена" и т.п.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 12:53 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Вот тут как раз и затычка, это стандартное окно само не убирается.
Были испробованы:
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
CALL FUNCTION 'POPUP_TO_CONFIRM'
Ну и собственного приготовление модального окна с GUI статусом.
Во всех случаях окно не закрывается.
Комбинация:
SET SCREEN 0.
LEAVE SCREEN.
Выдает ошибку SET SCREEN недопустимо в подэкранах(экран SAPLUPB_PM_XL2002) и вываливается в SAP GUI.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
Для наглядности сам ФМ

Code:
FUNCTION ZMES_BN.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"----------------------------------------------------------------------

  DATA: ans TYPE c.
  DATA:
  parameter TYPE spar,
  parameters TYPE TABLE OF spar.

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      text_question  = 'Внимание! Данные будут изменены автоматически. Продолжить?'
    IMPORTING
      answer         = ans
    TABLES
      parameter      = parameters
    EXCEPTIONS
      text_not_found = 1
      OTHERS         = 2.

  if sy-subrc <> 0.
    message i000(000) with 'Ошибка в ФМ'.
    stop.
  endif.
  if ans ne '1'.
  set parameter id 'ans' field ans.
  endif.
  if ans eq '1'.
  set parameter id 'ans' field ans.
  endif.
ENDFUNCTION.


Может я его не верно пишу, или заканчиваю обработку.
Т


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Сорри, затупил маленько :oops:
Экранчик по идее и не пропадет, пока не закончится LUW, в данном случае вся ваша цепочка. До этого управление вообще гую не передается.
Ну и пусть себе висит, это что, сильно напрягает? :)

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Последний раз редактировалось EVK Пт, янв 12 2007, 13:18, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
В том то и дело пока никакой обработки нет.
ФМ повешен на кнопку и по нажатию окно появляется,
только вот из обработки его не выходит.
т.е. ФМ не завершается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
HIman написал(а):
В том то и дело пока никакой обработки нет.
ФМ повешен на кнопку и по нажатию окно появляется,
только вот из обработки его не выходит.
т.е. ФМ не завершается.


Скорее всего не так.
ФМ то завершается, и дальше идет выполняться вся ваша цепочка. А экранчик в это время висит. Поставьте брейкпоинт и проверьте.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:20 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
В обработчике экрана стоит,
Code:
MODULE USER_COMMAND_0100 INPUT.
*              SET SCREEN 0.
              SET SCREEN sy-dynnr.
              LEAVE SCREEN.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

Даже после отработки кода экран не закрывается.

Добавлено...
Этот код в случае если в вызываемом ФМ стоит не выше приведенный код а:
Code:
CALL SCREEN 0100 STARTING AT 10 10 ENDING AT 50 20.
IF sy-ucomm = 'SET'. ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Он закроется, когда к гую вернется управление :)
В общем, сюда пофтыкайте:
http://help.sap.com/saphelp_nw04/helpda ... ontent.htm

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:35 
Специалист
Специалист

Зарегистрирован:
Ср, дек 22 2004, 09:55
Сообщения: 210
Только что попробовал этот код - все закрывается :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:39 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 15:04
Сообщения: 215
Откуда: Москва (Старый Оскол)
В общем, помагает только LEAVE PROGRAM. С закрытием папки планирования.
Причем ладно бы на кнопку ок не отрабатывало, так оно не отрабатывает и на кнопку отмена и на закрыть окно и на выход из транзакции через контекстное меню в углу окошка.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Crimson написал(а):
Только что попробовал этот код - все закрывается :shock:


Вот шайтан :lol: :lol:
Это все потому, что вы запускали просто один ФМ. А у хаймена этот ФМ вызывается из последовательности, после него, как я подозреваю, еще куча формул на фоксе вовсю колбасятся. Вот поэтому у него и управление к SAPgui возвращается позже.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, янв 12 2007, 13:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
HIman написал(а):
В общем, помагает только LEAVE PROGRAM. С закрытием папки планирования.
Причем ладно бы на кнопку ок не отрабатывало, так оно не отрабатывает и на кнопку отмена и на закрыть окно и на выход из транзакции через контекстное меню в углу окошка.


Ну зайдите же в отладку наконец :-) И рисуночек в моей ссылке посмотрите внимательно, и текст под ним:

The screen display is prepared in the PBO event. The flow logic calls the corresponding ABAP dialog modules. Then, the screen is displayed. When this happens, control passes from the application server to the SAPgui. The screen accepts user input until the user triggers the PAI event. The control then returns to the application server. The program processes user input by calling the corresponding ABAP dialog modules. After the PAI processing is complete, the PBO processing of the next screen starts. The PAI processing and the PBO processing of the next screen form a single dialog step on the application server. The current screen remains visible until the PBO of the next screen is complete, but is not ready for input.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Последний раз редактировалось EVK Пт, янв 12 2007, 13:45, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

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


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

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


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

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