ALV resfresh работает нормально в SE80, но не с Z tcode - PullRequest
0 голосов
/ 05 марта 2019

Я использую этот код для обновления моей ALV-Grid:

CALL METHOD go_alv->refresh_table_display
EXPORTING
  is_stable = is_stable.

go_alv is TYPE REF TO cl_gui_alv_grid.
is_stable is TYPE lvc_s_stbl and set like this:

is_stable-row = 'X'.
is_stable-col = 'X'.

Это работает без проблем, когда отчет запускается в SE80.Но когда я открываю отчет, используя T-код, созданный для него в SE93, Grid обновляется, но параметр is_stabale каким-то образом игнорируется.В результате положение прокрутки сбрасывается.

Я попытался поиграться с параметрами графического интерфейса в TCODE, но это не сработало.

1 Ответ

3 голосов
/ 05 марта 2019

Он ведет себя одинаково независимо от того, запущен ли он через отчет или код транзакции.

Вы можете самостоятельно проверить с помощью этой маленькой программы, а затем создать код транзакции, выполняющий эту программу, и проверить, возникает ли проблема по-прежнему. Если нет, то проверьте, что отличается в вашем коде. Если вы не найдете никакой разницы, упростите свой код или воссоздаете отдельную программу, код транзакции и т. Д., Все, что может помочь вам решить проблему.

TABLES sscrfields.
DATA go_alv TYPE REF TO cl_gui_alv_grid.
DATA gt_sflight TYPE TABLE OF sflight.
PARAMETERS dummy.
SELECTION-SCREEN FUNCTION KEY 1.

AT SELECTION-SCREEN OUTPUT.
  sscrfields-functxt_01 = 'Refresh'.
  IF go_alv IS INITIAL.
    CREATE OBJECT go_alv
      EXPORTING
        i_parent = cl_gui_container=>screen0.
    SELECT * FROM sflight INTO TABLE gt_sflight.
    go_alv->set_table_for_first_display(
        EXPORTING i_structure_name = 'SFLIGHT'
        CHANGING it_outtab = gt_sflight ).
  ENDIF.

AT SELECTION-SCREEN.
  IF sscrfields-ucomm = 'FC01'.
    DATA gs_sflight TYPE sflight.
    MODIFY gt_sflight FROM gs_sflight TRANSPORTING price currency WHERE price <> 0.
    DATA: ls_stbl TYPE lvc_s_stbl.
    ls_stbl-col = abap_true.
    ls_stbl-row = abap_true.
    DATA: l_soft  TYPE char01.
    l_soft = abap_true. " do not recalculate totals
    go_alv->refresh_table_display(
          EXPORTING
            is_stable       = ls_stbl
            i_soft_refresh  = l_soft  " default = false
          EXCEPTIONS
            finished = 1 ).
  ENDIF.

AT SELECTION-SCREEN ON EXIT-COMMAND.
  go_alv->free( ).
  FREE go_alv.
...