ALV刷新可以在SE80中正常工作,但不能使用Z tcode

时间:2019-03-05 13:11:34

标签: sap abap alv

我正在使用以下代码刷新我的ALV网格:

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中启动报告时,此方法没有问题。但是,当我使用在SE93中为其创建的T代码打开报表时,网格的确刷新了,但是以某种方式忽略了is_stabale参数。结果,滚动位置被重置。

我尝试在TCODE中使用GUI选项,但是没有用。

1 个答案:

答案 0 :(得分:3)

无论是通过报表还是通过交易代码启动,其行为都相同。

您可以自己检查这个小程序,然后创建一个运行该程序的交易代码,并检查问题是否仍然存在。如果没有,请检查代码中的不同之处。如果您没有发现任何区别,简化代码或重新创建单独的程序和事务代码等,那么可以帮助您解决问题的任何事情。

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.