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

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


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

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


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

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