SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Обновления полей экрана из обработчика событий ALV



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed Jan 23, 2013 9:46 am    Post subject: Обновления полей экрана из обработчика событий ALV Reply with quote

Всем привет. Алв расположен на одной из закладок экрана. На этой же закладке есть различные поля.
На АЛВ собственные кнопки. По нажатию на одну из них, попадаем в хендлер, там происходит расчет, обновляются данные таблицы АЛВ, и должны обновиться поля на той же закладке. Через DYNP_VALUES_UPDATE не обновляется(кто знает механизм, как работает этот ФМ, отпишитесь). Можно вызвать SAPGUI_SET_FUNCTIONCODE, тогда попадем в PAI подэкрана с АЛВ, где я "обновил" поля, но тут же с редактируемых полей "старые" значения с экрана перетрут то что я рассчитал.

Можно конечно сделать обновление через этот фм с использованием промежуточной глобальной струкруры, но мне бы хотелось найти более элегантный способ решение данной проблемы.

Спасибо.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
alezhu
Специалист
Специалист



Joined: 29 Apr 2012
Posts: 86
Location: Spb

PostPosted: Wed Jan 23, 2013 10:17 am    Post subject: Reply with quote

Я бы делал через SAPGUI_SET_FUNCTIONCODE, а поля рассчитывал в PBO на основе данных ALV.
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed Jan 23, 2013 10:24 am    Post subject: Reply with quote

Можно конечно. Только ставить флаг для расчета по кнопке, потом в PAI считывать этот флаг, делать расчет, и стирать флаг.

Некоторые поля открыты для ввода открыты не просто так. Пользователь может руками вбить цифры, отличные от расчета.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Jan 23, 2013 11:03 am    Post subject: Reply with quote

http://www.sapnet.ru/viewtopic.php?t=4702&postdays=0&postorder=asc&start=0

Предлагают использовать DYNP_UPDATE_FIELDS

_________________
FunCoding.ru
KicksCollector.ru
Back to top
View user's profile Send private message Blog
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed Jan 23, 2013 2:36 pm    Post subject: Reply with quote

Спасибо, помогло. Правда появился смешной побочный эффект. По разбираюсь с ним, если это не мой "косяк" то напишу что именно произошло )).
_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Thu Jan 24, 2013 6:03 pm    Post subject: Reply with quote

Теперь про побочный эффект. Когда обновляю с помощью этого ФМ-а метки(поле только для вывода кажется это называется) все буквы становятся БОЛЬШИМИ. Интересно это фича такая, или можно как нибудь побороть нормально. Могу конечно обновить такие поля другим способом, но может кто нибудь знает подробности, или встречал такое поведение.
Строка передаваемая в ФМ
Code:
GS_TEXT_0200-CALC_STAT_TEXT   0   Рассчитано
На экран попадает
Code:
РАССЧИТАНО

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
bimit
Специалист
Специалист



Joined: 11 Jul 2011
Posts: 56

PostPosted: Fri Jan 25, 2013 11:01 am    Post subject: Reply with quote

XXX_:) wrote:
Теперь про побочный эффект. Когда обновляю с помощью этого ФМ-а метки(поле только для вывода кажется это называется) все буквы становятся БОЛЬШИМИ. Интересно это фича такая, или можно как нибудь побороть нормально. Могу конечно обновить такие поля другим способом, но может кто нибудь знает подробности, или встречал такое поведение.
Строка передаваемая в ФМ
Code:
GS_TEXT_0200-CALC_STAT_TEXT   0   Рассчитано
На экран попадает
Code:
РАССЧИТАНО


Возможно из-за того, что домен не поддерживает строчные буквы Wink
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Fri Jan 25, 2013 11:24 am    Post subject: Reply with quote

Sad да если бы все было так просто....
На экране точно поддерживает, при обновлении другим механизмом все корректно.

Хотя сейчас проведу тест, вы натолкнули меня на одну мыслишку...

Не знаю что делать. выгружал в различные поля с различными свойствами результат всюду один и тот же все тексты большими буквами.

В конце модуля происходит вызов системной функции
Code:
  call  'HELP_PUT_FIELD'   id 'DYNAME'    field dyname
                           id 'DYNUMB'    field dynumb
                           id 'REQUEST'   field request
                           id 'SSF'       field SEARCH_OWN_SUBSCREENS_FIRST
                           id 'PROOT'     field proot
                           id 'STACKPOS'  field start_search_on_scr_stackpos
                           id 'PATH'      field searchpath_of_subscreen_areas
                           id 'DYNPFLD'   field 'DYNP_UPDATE_FIELDS'
                           id 'ABAPFLD'   field 'DYNP_UPDATE_FIELDS'.  "#EC CI_CCALL


После нее даже в логику программы не возвращается, чтобы можно было что то подправить.

Видимо с этими ФМ-ом мне не попути.

Есть еще предложения? как можно обновить поля?

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
Nick_Papkov
Участник
Участник


Age: 46
Joined: 22 Aug 2013
Posts: 27
Location: г. Жлобин, Республика Беларусь

PostPosted: Wed Sep 25, 2013 1:41 am    Post subject: Reply with quote

XXX_:) wrote:
Sad да если бы все было так просто....
На экране точно поддерживает, при обновлении другим механизмом все корректно.

Хотя сейчас проведу тест, вы натолкнули меня на одну мыслишку...

Не знаю что делать. выгружал в различные поля с различными свойствами результат всюду один и тот же все тексты большими буквами.

В конце модуля происходит вызов системной функции
Code:
  call  'HELP_PUT_FIELD'   id 'DYNAME'    field dyname
                           id 'DYNUMB'    field dynumb
                           id 'REQUEST'   field request
                           id 'SSF'       field SEARCH_OWN_SUBSCREENS_FIRST
                           id 'PROOT'     field proot
                           id 'STACKPOS'  field start_search_on_scr_stackpos
                           id 'PATH'      field searchpath_of_subscreen_areas
                           id 'DYNPFLD'   field 'DYNP_UPDATE_FIELDS'
                           id 'ABAPFLD'   field 'DYNP_UPDATE_FIELDS'.  "#EC CI_CCALL


После нее даже в логику программы не возвращается, чтобы можно было что то подправить.

Видимо с этими ФМ-ом мне не попути.

Есть еще предложения? как можно обновить поля?


После того как сделали обновление таблицы в рамках handlerа, которую отображает ALV, вызовите метод alv, отвечающий за перерисовку, т. е. REFRESH_TABLE_DISPLAY c заполнением IS_STABLE на входе. Или же считайте где стоит курсор (GET_CURRENT_CELL), затем обновить содержимое (REFRESH_TABLE_DISPLAY) и установите курсор заново (SET_CURRENT_CELL_VIA_ID). Первый вариант вроде лучше.

_________________
Когда другие слепо следуют за истиной, помни - ничто не истина.
Back to top
View user's profile Send private message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1640

PostPosted: Tue Oct 08, 2024 9:26 pm    Post subject: Reply with quote

XXX_:) wrote:
Sad да если бы все было так просто....
На экране точно поддерживает, при обновлении другим механизмом все корректно.

Хотя сейчас проведу тест, вы натолкнули меня на одну мыслишку...

Не знаю что делать. выгружал в различные поля с различными свойствами результат всюду один и тот же все тексты большими буквами.

В конце модуля происходит вызов системной функции
Code:
  call  'HELP_PUT_FIELD'   id 'DYNAME'    field dyname
                           id 'DYNUMB'    field dynumb
                           id 'REQUEST'   field request
                           id 'SSF'       field SEARCH_OWN_SUBSCREENS_FIRST
                           id 'PROOT'     field proot
                           id 'STACKPOS'  field start_search_on_scr_stackpos
                           id 'PATH'      field searchpath_of_subscreen_areas
                           id 'DYNPFLD'   field 'DYNP_UPDATE_FIELDS'
                           id 'ABAPFLD'   field 'DYNP_UPDATE_FIELDS'.  "#EC CI_CCALL


После нее даже в логику программы не возвращается, чтобы можно было что то подправить.

Видимо с этими ФМ-ом мне не попути.

Есть еще предложения? как можно обновить поля?


DYNP_UPDATE_FIELDS
exporting
request = 'A'
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.