Текущее время: Пт, июл 25 2025, 05:56

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Обновление экрана  Тема решена
СообщениеДобавлено: Пн, окт 03 2011, 11:40 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
Здравствуйте, господа коллеги.

Посоветуйте с решением задачки.
Есть у меня подэкран, на нем контейнер с cl_gui_alv_grid и поля (суммы к примеру). Хочу сделать так чтобы при изменении таблички в АЛВ менялось и поле на экране. В принципе получилось сделать таким образом, в событии data_changed_finished меняю глобальную переменную (поле) и вызываю
Code:
    CALL METHOD cl_gui_cfw=>set_new_ok_code
      EXPORTING
        new_code = 'DUMMY'.
.
1. Но столкнулся с проблемкой. К примеру данные надо сохранить. Тогда вызываю метод для проверки на корректность CHECK_CHANGED_DATA. Тогда программа после сохранения пытается сохранить все снова ).
2. Вношу изменения в таблице с ошибками, вношу в цифровые поля буквы (ошибка) и нажимаю на какую нибудь кнопку (в коде переход на другой скрин). Как сделать так чтобы запретить переход?
Возможно не все описал, но если что спрашивайте.


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

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
В принципе вы на верном пути, чтобы прога не зацикливалась на CHECK_CHANGED_DATA добавьте флажок


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
DarZ написал(а):
Хочу сделать так чтобы при изменении таблички в АЛВ менялось и поле на экране.

Чтобы не перерисовывать экран, для обновления полей на экране можно использовать ФМ DYNP_VALUES_UPDATE.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 13:21 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
Удав написал(а):
DarZ написал(а):
Хочу сделать так чтобы при изменении таблички в АЛВ менялось и поле на экране.

Чтобы не перерисовывать экран, для обновления полей на экране можно использовать ФМ DYNP_VALUES_UPDATE.

Пробую использовать фм при событии data_changed_finished примерно вот так, уточню все элементы расположены на подэкране (контейнер, поля). Пока что плохо получается:
Code:
   DATA: l_DYNAME      TYPE  D020S-PROG
      , l_DYNUMB      TYPE  D020S-DNUM VALUE '0104'
      , lt_DYNPFIELDS TYPE  STANDARD TABLE OF DYNPREAD
      , ls_DYNPFIELDS TYPE  DYNPREAD.

" ZTAB - структура словаря

l_DYNAME = sy-repid.
  ls_DYNPFIELDS-FIELDNAME = 'ZTAB-SUMMA'.
  ls_DYNPFIELDS-STEPL = ''.
  ls_DYNPFIELDS-FIELDVALUE = ZTAB-SUMMA.
  CONDENSE ls_DYNPFIELDS-FIELDVALUE.
  ls_DYNPFIELDS-FIELDINP = 'P'.
  APPEND ls_DYNPFIELDS TO lt_DYNPFIELDS.

  CALL FUNCTION 'DYNP_VALUES_UPDATE'
    EXPORTING
      dyname                     = l_DYNAME
      dynumb                     = l_DYNUMB
    TABLES
      dynpfields                 = lt_DYNPFIELDS
*   EXCEPTIONS
*     INVALID_ABAPWORKAREA       = 1
*     INVALID_DYNPROFIELD        = 2
*     INVALID_DYNPRONAME         = 3
*     INVALID_DYNPRONUMMER       = 4
*     INVALID_REQUEST            = 5
*     NO_FIELDDESCRIPTION        = 6
*     UNDEFIND_ERROR             = 7
*     OTHERS                     = 8
            .
  IF sy-subrc <> 0.
*   Implement suitable error handling here
  ENDIF.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Раскомментируйте EXCEPTIONS, посмотрите, какая ошибка.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 14:28 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
to DarZ,
Code:
ls_DYNPFIELDS-FIELDINP = 'P'.

Зачем это указываете?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 14:34 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
Удав написал(а):
Раскомментируйте EXCEPTIONS, посмотрите, какая ошибка.

sy-subrc = 0. (


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 15:23 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
Besa написал:
to DarZ,
Code:
ls_DYNPFIELDS-FIELDINP = 'P'.

Зачем это указываете?

Просто игрался с параметрами. Без тоже самое...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 16:50 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Боюсь что не получится такое провернуть, DYNP_VALUES_UPDATE для f4 событий.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пн, окт 03 2011, 17:36 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
Besa написал:
Боюсь что не получится такое провернуть, DYNP_VALUES_UPDATE для f4 событий.

Жаль конечно ( Но все равно спасибо за советы.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Besa написал:
Боюсь что не получится такое провернуть, DYNP_VALUES_UPDATE для f4 событий.

Мда, действительно не получается :(

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Ср, ноя 30 2011, 17:17 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
ФМ DYNP_UPDATE_FIELDS тоже не помогает?

_________________
Волю в кулак, мышцы в узду, работай себе и не ахай!


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

Зарегистрирован:
Ср, ноя 02 2011, 16:37
Сообщения: 33
У меня была анлогичная проблема с обновлением подэкрана, сначала решил её так же как и вы, но в саповском примере нашел следующее:

ЛОГИКА ОСНОВНОГО ЭКРАНА:

Code:
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  MODULE initial_grid.
  CALL SUBSCREEN area INCLUDING sy-repid gv_subscr_number.

PROCESS AFTER INPUT.
  MODULE USER_COMMAND_0100.
  CALL SUBSCREEN area. " Вот этот вызов решил проблему, ед. возможно что у вас другая проблема и после ввода в ALV вы в PAI не попадаете...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Пт, дек 02 2011, 12:33 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Я правильно понимаю - необходимо, чтобы изменения в ALV генерировали PAI и затем PBO для основного экрана?
Если так, то укажите appl_events = 'X' при создании грида и все.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление экрана
СообщениеДобавлено: Вс, дек 04 2011, 17:11 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
__Gennady написал(а):
Я правильно понимаю - необходимо, чтобы изменения в ALV генерировали PAI и затем PBO для основного экрана?
Если так, то укажите appl_events = 'X' при создании грида и все.

Спасибо большое, это то что нужно.


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

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


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

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


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

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