>

이 코드를 사용하여 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에서 보고서가 시작될 때 문제없이 작동합니다. 그러나 SE93에서 작성한 T 코드를 사용하여 보고서를 열면 그리드가 새로 고쳐 지지만 is_stabale 매개 변수는 어떻게 든 무시됩니다. 결과적으로 스크롤 위치가 재설정됩니다.

TCODE에서 GUI 옵션을 가지고 놀았지만 작동하지 않았습니다.


  • 답변 # 1

    보고서 나 트랜잭션 코드를 통해 시작된 것과 동일하게 동작합니다.

    이 작은 프로그램으로 직접 확인한 다음이 프로그램을 실행하는 트랜잭션 코드를 작성하고 문제가 여전히 발생하는지 확인할 수 있습니다. 그렇지 않은 경우 코드의 차이점을 확인하십시오. 차이점을 찾지 못하면 코드를 단순화하거나 문제를 해결하는 데 도움이되는 별도의 프로그램 및 트랜잭션 코드 등을 다시 만드십시오.

    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.
    
    

  • 이전 c++ - c ++ 17 - 임시 객체는 절대 파괴되지 않습니다
  • 다음 logic - 프롤로그의 순차적 미적분