Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: Sed0Y от Ноябрь 23, 2012, 06:22:35 pm
-
использую:
REUSE_ALV_GRID_DISPLAY
slis_layout_alv
Проблема:
при редактировании записи в гриде, после чего рефрешу грид используя:
data: rs_selfield type slis_selfield.
...
rs_selfield-refresh = 'X'.
...
и курсор прыгает в начало грида, как сделать что бы оно оставалось на месте?
-
Ну или посоветуйте способ вывода АЛВ грида, где есть такая возможность?
-
Эххх, Sed0Y... Плохо! Чем вы уже несколько лет там занимаетесь?
Во-первых, есть куча демонстрационных программ BCALV_* (BCALV_GRID_EDIT* - ваш случай). Также можете посмотреть пакет SLIS. Отгуглите "An Easy Reference For ALV Grid Control".
В объектном гриде для обновления используется метод:
DATA: go_grid TYPE REF TO cl_gui_alv_grid,
gs_stbl TYPE lvc_s_stbl VALUE 'XX'.
...
go_grid->refresh_table_display( is_stable = gs_stbl " хранение положения прокрутки
i_soft_refresh = abap_true ). " т.н. "мягкое обновление", хранение сортировки и т.д.
-
Так же можно получить ссылку на указанный выше объект используя ФМ (использование обсуждалось на этом форуме), после чего попробовать воспользоваться методом класса:
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = li_grid.
li_grid->refresh_table_display( is_stable = gs_stbl i_soft_refresh = 'X' ).
Но должно быть что-то для функции...
-
go_grid->refresh_table_display( is_stable = gs_stbl " хранение положения прокрутки
i_soft_refresh = abap_true ). " т.н. "мягкое обновление", хранение сортировки и т.д.
Вообще по факту REUSE_ALV_GRID_DISPLAY сейчас вызывает тот же самый объектный ALV, так что не думаю, что поможет, так как вот это вот rs_selfield-refresh = 'X', реализовано наверное, через тоже самое is_stable. Ну мне чего-то так кажется :-\
-
Вообще по факту REUSE_ALV_GRID_DISPLAY сейчас вызывает тот же самый объектный ALV, так что не думаю, что поможет, так как вот это вот rs_selfield-refresh = 'X', реализовано наверное, через тоже самое is_stable. Ну мне чего-то так кажется :-\
Да нашел (http://www.apentia-forum.de/viewtopic.php?t=9947) вроде в сети, пусть пробует.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.
Эххх, Sed0Y... :o
-
Вообще по факту REUSE_ALV_GRID_DISPLAY сейчас вызывает тот же самый объектный ALV
Да не знаю, я 6 лет уже этот ФМ не юзал, предпочитаю классику.
Ну и CL_SALV_TABLE для получения каталога полей таблицы, объявленной ч/з тип, без структуры в СД:
DATA: lo_table TYPE REF TO cl_salv_table,
lo_cols TYPE REF TO cl_salv_columns_table,
lo_aggr TYPE REF TO cl_salv_aggregations.
DATA: lt_fcat TYPE slis_t_fieldcat_alv. " это для ФМ 'REUSE_ALV_GRID_DISPLAY'
* Формируем филд-каталог
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_table
CHANGING
t_table = gt_data[] ). " Наша внутр. таблица, объявленная ч/з тип
CATCH cx_salv_msg .
EXIT.
ENDTRY.
lo_aggr = lo_table->get_aggregations( ).
lo_cols = lo_table->get_columns( ).
lt_fcat = cl_salv_controller_metadata=>get_slis_fieldcatalog( r_columns = lo_cols r_aggregations = lo_aggr ).
FREE: lo_aggr, lo_cols, lo_table.
* Можно также получить каталог LVC (если используется класс cl_gui_alv_grid) – метод get_lvc_fieldcatalog (тип таблицы каталога lvc_t_fcat)
Не помню, есть у тебя в параллельной теме это, или нет...
-
Да нашел (http://www.apentia-forum.de/viewtopic.php?t=9947) вроде в сети, пусть пробует.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.
Эххх, Sed0Y... :o
хе хе :) Сработало! Это оно!
Спасибо Вам Dmitriy, и Вам Uukrul.
Эххх, Sed0Y... Плохо! Чем вы уже несколько лет там занимаетесь?
А по поводу этого, ну я давно уже не пишу отчеты, занимался отчетами только первых года 1,5, как Вы понимаете за этот срок я все усвоить не мог и тем более запомнить
-
я давно уже не пишу отчеты, занимался отчетами только первых года 1,5, как Вы понимаете за этот срок я все усвоить не мог и тем более запомнить
Понятно. А то начали возникать уже мысли, что Вы Родину позорите! 8)
-
Да не знаю, я 6 лет уже этот ФМ не юзал, предпочитаю классику.
...
предпочитаю классику. - это с помощью cl_gui_alv_grid? или как?