Текущее время: Ср, апр 17 2024, 02:03

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5257
Откуда: Ростов невеликий
Пол: Мужской
Привет,

Натолкнулся на интересный случай с сабжем.
Преамбула - редактор инфотипной таблички, USER_COMMAND свой, статус меняю (выкидываю стандартные кнопки, добавляю свои). Так вот, впечатление, что код '&DATA_SAVE' (может и ещё какие) имеет какое-то сакральное значение для возвращаемой IT_OUTTAB. При его исполнении IT_OUTTAB появляется как выглядит на экране (т.е. с результатами редактирования), при других кодах IT_OUTTAB сохраняет значение первоначальной загрузки.
Сначала не понял - не верилось, что такое может быть! Но потом "сел" на P_COMM и прибалдел :).
Как заставить не ['&DATA_SAVE'] работать нормально?

_________________
Нет сегодняшних проблем -
есть вчерашние ошибки
(с)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чудны пути в REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пт, июл 07 2017, 12:00 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 475
а можно ли взглянуть на полный код программы? или ту часть, которая имеет дело с ALV?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Чудны пути в REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пт, июл 07 2017, 13:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5257
Откуда: Ростов невеликий
Пол: Мужской
olegbash написал(а):
а можно ли взглянуть на полный код программы? или ту часть, которая имеет дело с ALV?

всё вроде как обычно:
Code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*     I_INTERFACE_CHECK       = ' '
*     I_BYPASSING_BUFFER      = ' '
*     I_BUFFER_ACTIVE         = ' '
      I_CALLBACK_PROGRAM      = SY-REPID "program name
      I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
      I_CALLBACK_USER_COMMAND = FORM_CALLBACK "user command subroutine name
      I_CALLBACK_TOP_OF_PAGE  = FORM_TOP_OF_PAGE "sub routine for top of page
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME        =
*     I_BACKGROUND_ID         = ' '
*     I_GRID_TITLE            =
*     I_GRID_SETTINGS         =
      IS_LAYOUT               = IT_LAYOUT
      IT_FIELDCAT             = IT_FIELDCAT
      IT_EXCLUDING            = IT_EXCLUDE
*     IT_SPECIAL_GROUPS       =
*     IT_SORT                 =
*     IT_FILTER               =
*     IS_SEL_HIDE             =
*     I_DEFAULT               = 'X'
     I_SAVE                  = 'X'
*     IS_VARIANT              =
*     IT_EVENTS               = 'GT_XEVENTS'
*     IT_EVENT_EXIT           =
*     IS_PRINT                =
*     IS_REPREP_ID            =
*     I_SCREEN_START_COLUMN   = 0
*     I_SCREEN_STARlv_line    = 0
*     I_SCREEN_END_COLUMN     = 0
*     I_SCREEN_END_LINE       = 0
*     I_HTML_HEIGHT_TOP       = 0
*     I_HTML_HEIGHT_END       = 0
*     IT_ALV_GRAPHICS         =
*     IT_HYPERLINK            =
*     IT_ADD_FIELDCAT         =
*     IT_EXCEPT_QINFO         =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER =
*     ES_EXIT_CAUSED_BY_USER  =
    TABLES
      T_OUTTAB                = IT_AWARDS
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

FORM set_pf_status USING it_exclude TYPE slis_t_extab .


mngpernr = mypernr. " для теста

  if mypernr EQ mngpernr.
    SET PF-STATUS 'ZHRSTANDARD_MNG' EXCLUDING IT_EXCLUDE.
  else.
    WA_EXCLUDE-FCODE = '&APPROVE'.
    APPEND WA_EXCLUDE TO IT_EXCLUDE.
    CLEAR WA_EXCLUDE.
    SET PF-STATUS 'ZHRSTANDARD' EXCLUDING IT_EXCLUDE.
  endif.

ENDFORM.

******* FORM USER_COMMAND ******
FORM USER_COMMAND  USING P_UCOMM    LIKE SY-UCOMM
                         P_SELFIELD TYPE SLIS_SELFIELD.
  "p_ucomm will hold user action like double click, clicking a button ,etc
data:
....

  CASE P_UCOMM.

****** SAVE_SEND *****************

    WHEN '&SAVE_SEND'. "Refresh Function
            MESSAGE 'Save & sending data' TYPE 'S'.
......

   WHEN '&DATA_SAVE'. "Save Function
            MESSAGE 'Saving data...' TYPE 'S'.
....
   WHEN '&ADD_DATA'. "ADD Function
            MESSAGE 'Add data.' TYPE 'S'.
...
endcase.
endform.

собственно уже выкрутился - методом - "кто нам мешает, тот нам поможет" :)
Оставил сохранение только на &DATA_SAVE, а в &ADD_DATA вставил считывание из bdtab сохранённых данных (с целью сохранить суммарный результат через &DATA_SAVE). А было наоборот: дозаписывание в bdtab в &ADD_DATA и вот при этом ITAB почему-то не актуализировался с экраном - дозаписывал удалённые строки.

_________________
Нет сегодняшних проблем -
есть вчерашние ошибки
(с)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чудны пути в REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пн, июл 10 2017, 13:34 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
коды начинающиеся на & обрабатываются ALV до передачи в user_command - соответственно может быть какая-то спец. реакция на них
не стоит также делать свои коды начинающиеся на %

_________________
Изображение Попытка не пытка


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чудны пути в REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пн, июл 10 2017, 13:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5257
Откуда: Ростов невеликий
Пол: Мужской
DKiyanov написал:
коды начинающиеся на & обрабатываются ALV до передачи в user_command - соответственно может быть какая-то спец. реакция на них
не стоит также делать свои коды начинающиеся на %

додебажил до "точки расхождения" no_match_found = 1/0 :)
Code:
560     cl_gui_alv_grid=>transfer_fcode_lvc_to_slis(
561       exporting
562         i_fcode_lvc    = r_ucomm
563       importing
564         e_fcode_slis   = r_ucomm
565       exceptions
566         no_match_found = 1 ).                                 "#EC *

+++++++++++++++++++++++++++++++++++++++++
кажется нашёл:
вот это надо вставлять не "после" своей обработки в USER_COMMAND, а "до"
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data.
ENDIF.

p_selfield-refresh = 'X'.

_________________
Нет сегодняшних проблем -
есть вчерашние ошибки
(с)


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

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


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

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


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

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