Текущее время: Вт, июл 22 2025, 23:11

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 10:03 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Есть отчёт, написанный давно, где данные выводятся через REUSE_ALV_GRID.
Есть обработка события doubleclick с "проваливанием" в карточку ОС.

Проблема: Если пользователь отсортировал ALV по какому-то другому полю, то при проваливании rs_selfield-tabindex не соответствует индексу внутренней таблицы.

Как "синхронизировать" таблицу на экране и внутренню таблицу? Работу по полю rs_selfied-tabindex не предлагать - есть и другие поля с даблкликом - там не прокатит.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 10:38 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
переделать под класс cl_salv_table работы на пару часов. Зато синхронизация работает

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 10:56 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
LinevskiySV написал:
переделать под класс cl_salv_table работы на пару часов. Зато синхронизация работает


Вы бука :D

Такой способ и я знаю:-). Я ищу так, чтобы без передлки. В крайнем случае буду переписывать. Но часок ещё подожду ответов.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
внешним assign получить ссылку на гридовый объект и потом вызвать для него CHECK_CHANGED_DATA, по идее таблицы должны после этого синхронизироваться нужным образом.

Вроде еще можно в events при вызове ФМ добавить какое-то событие, которое обеспечит синхронизацию, посмотрите пакет SLIS, наверняка там это как-то решается

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:04 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
Приведите кусок кода, где вы вызываете фм REUSE_ALV_GRID_DISPLAY


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:10 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
lestat написал:
Приведите кусок кода, где вы вызываете фм REUSE_ALV_GRID_DISPLAY


???

Code:

*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM preview.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*       I_INTERFACE_CHECK                 = ' '
*       I_BYPASSING_BUFFER                =
*       I_BUFFER_ACTIVE                   = ' '
        i_callback_program                = g_repid
        i_callback_pf_status_set          = 'SET_PF_STATUS'
        i_callback_user_command           = 'USER_COMMAND'
*       I_CALLBACK_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_fieldcat                       = gt_fieldcat2[]
*       IT_EXCLUDING                      =
*       IT_SPECIAL_GROUPS                 =
*       IT_SORT                           =
*       IT_FILTER                         =
*       IS_SEL_HIDE                       =
*       I_DEFAULT                         = 'X'
      i_save                            = 'A'
      is_variant                        = gs_variant
*       IT_EVENTS                         =
*       IT_EVENT_EXIT                     =
*       IS_PRINT                          =
*       IS_REPREP_ID                      =
*       I_SCREEN_START_COLUMN             = 0
*       I_SCREEN_START_LINE               = 0
*       I_SCREEN_END_COLUMN               = 0
*       I_SCREEN_END_LINE                 = 0
*       IT_ALV_GRAPHICS                   =
*       IT_ADD_FIELDCAT                   =
*       IT_HYPERLINK                      =
*       I_HTML_HEIGHT_TOP                 =
*       I_HTML_HEIGHT_END                 =
*       IT_EXCEPT_QINFO                   =
*     IMPORTING
*       E_EXIT_CAUSED_BY_CALLER           =
*       ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = gt_outtab2[] "<gt_itab> "
   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.


ENDFORM.                    " preview



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:11 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
superbizon написала:
внешним assign получить ссылку на гридовый объект и потом вызвать для него CHECK_CHANGED_DATA, по идее таблицы должны после этого синхронизироваться нужным образом.

Вроде еще можно в events при вызове ФМ добавить какое-то событие, которое обеспечит синхронизацию, посмотрите пакет SLIS, наверняка там это как-то решается



Пробовало я CHECK_CHANGED_DATA - не синхронизуется:-((((


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Copperhead написал(а):
Как "синхронизировать" таблицу на экране и внутренню таблицу?
Code:
REPORT  zww .
*
TYPE-POOLS : slis.
*
*-----------------------------------------------------------------------
DATA : itab LIKE t001 OCCURS 0 WITH HEADER LINE.

DATA : alvfc TYPE slis_t_fieldcat_alv.

DATA : stab LIKE t001 OCCURS 0 WITH HEADER LINE.
*------------------------------------------------------------------------
SELECT * FROM t001 INTO TABLE itab.
*------------------------------------------------------------------------
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name         = sy-repid
    i_structure_name       = 'T001'
    i_inclname             = sy-repid
  CHANGING
    ct_fieldcat            = alvfc
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2
    OTHERS                 = 3.
*-------------------------------------------------------------------------
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    it_fieldcat             = alvfc
    i_callback_program      = sy-repid
    i_callback_user_command = 'ITAB_USER_COMMAND'
  TABLES
    t_outtab                = itab
  EXCEPTIONS
    program_error           = 1
    OTHERS                  = 2.
*--------------------------------------------------------------------------
FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE
slis_selfield.
  READ TABLE itab INDEX whatrow-tabindex.
*
  CLEAR stab.
  SELECT * FROM t001
  INTO TABLE stab
   WHERE bukrs = itab-bukrs.
  CLEAR alvfc.
*----------------------------------------------------------------------------
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = sy-repid
      i_structure_name       = 'T001'
      i_inclname             = sy-repid
    CHANGING
      ct_fieldcat            = alvfc
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
*-----------------------------------------------------------------------------
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat        = alvfc
      i_callback_program = sy-repid
    TABLES
      t_outtab           = stab
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
ENDFORM. "ITAB_user_command


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 11:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
ROKO написал:

READ TABLE itab INDEX whatrow-tabindex.



Вот здесь и засада - если перед этим сортировку в ALV сделать - не те данные выберутся.
Так сейчас и есть - проваливается не в те документы, что на экране.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 12:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Copperhead написал(а):
ROKO написал:

READ TABLE itab INDEX whatrow-tabindex.



Вот здесь и засада - если перед этим сортировку в ALV сделать - не те данные выберутся.
Так сейчас и есть - проваливается не в те документы, что на экране.
Быть такого не может! :shock: После сортировки в ALV, внутрення таблица тоже сортируется.
Может внутрення таблица где-то раньше изменяется? Или вообще разные таблицы используются.

_________________
В SAPе есть всё, просто вы чего-то не нашли.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 12:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Подпрограмму USER_COMMAND покажите пожалуйста.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 12:48 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Code:
form user_command using r_ucomm like sy-ucomm
                        rs_selfield type slis_selfield.
  break-point.
  case r_ucomm.
    when '&TO_EXCEL'.
      perform export_to_excel.
    when '&IC1'.
      perform drill_down using rs_selfield.
    when '&OUP'.
      perform sort_up using rs_selfield.
    when '&ODN'.
      perform sort_down using rs_selfield.
  endcase.

endform.


Самое интересное, что при нажатии кнопок сортировки (&OUP &ODN) в эту подпрограмму не попадает, при нажатии "TO_EXCEL" или двойном клике - попадает...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 12:55 
Специалист
Специалист

Зарегистрирован:
Пт, авг 24 2012, 11:48
Сообщения: 200
&OUP &ODN - это внутренние коды функции, для них внутренний обработчик вызывается.
А так согласен с SYS , при сортировке ALV , если корректная связь с глобальной таблицей , внутренняя таблица так же должна быть отсортирована.


Последний раз редактировалось Shvetz Пт, окт 12 2012, 13:35, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пт, окт 12 2012, 13:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Copperhead написал(а):
Code:
form user_command using r_ucomm like sy-ucomm
                        rs_selfield type slis_selfield.
  break-point.
  case r_ucomm.
    when '&TO_EXCEL'.
      perform export_to_excel.
    when '&IC1'.
      perform drill_down using rs_selfield.
....................
endform.


Этого мало. Покажите подпрограмму drill_down. А с той программой, что я Вам предоставил та же Беда ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV <-> внутренняя таблица
СообщениеДобавлено: Пн, окт 15 2012, 14:48 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Ах тыж блин!

Code:
  READ TABLE gt_outtab INTO ls_outtab INDEX rs_selfield-tabindex.


а выводится gt_outtab2 :-((((((...

чужой отчёт... чуть голову не сломал. Всем спасибо и прошу прощения за беспокойство.


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

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


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

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


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

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