Текущее время: Вт, июл 29 2025, 05:52

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


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

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


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

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