Текущее время: Сб, май 04 2024, 15:26

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


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


ВНИМАНИЕ!

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



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

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

Натолкнулся на интересный случай с сабжем.
Преамбула - редактор инфотипной таблички, 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
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
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
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
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 часа


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

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


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

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