【问题标题】:ALV is not refreshed after edit. Why?编辑后不刷新 ALV。为什么?
【发布时间】:2015-05-06 07:16:13
【问题描述】:

我知道我的问题已经被问过一百次了。 但我仍然找不到适合我的解决方案

  1. 我有一个下拉列表,每次我更改下拉列表中的数据时,它都会根据下拉列表数据加载新数据
  2. 从第一步开始,我刷新可编辑的 ALV
  3. 将保存可编辑 ALV 中的任何更改(另一种保存操作)

我的问题是,保存后,我无法刷新我的 ALV。

但如果我没有按保存按钮也没有问题

注意:SAP forum,他们告诉我把刷新功能移到PBO,我试过了,但还是失败了。

附加代码是第1步是这个代码中的“当SET_P”

公益组织

    MODULE pbo_1000 OUTPUT.
       IF flag = 0.
         SET PF-STATUS '1000'.
         SET TITLEBAR  '1000'.
         PERFORM create_toolbar.
         PERFORM create_catalog.
         PERFORM select_data.
     
         CREATE OBJECT ob_custom
           EXPORTING
             container_name = 'CCTRL'.
         CREATE OBJECT ob_grid
           EXPORTING
             i_parent      = ob_custom
             i_appl_events = 'X'.
     
         PERFORM create_dropbox.
         CALL METHOD ob_grid->set_table_for_first_display
           EXPORTING
             i_structure_name     = 'TYPE'
             it_toolbar_excluding = lt_toolbar
             is_layout            = lyt
           CHANGING
             it_fieldcatalog      = fld[]
             it_outtab            = itab[].
     
         CALL METHOD ob_grid->set_ready_for_input
           EXPORTING
             i_ready_for_input = 1.
         CALL METHOD ob_grid->register_edit_event
           EXPORTING
             i_event_id = cl_gui_alv_grid=>mc_evt_enter.
       ENDIF.
    ENDMODULE.   

PAI

    MODULE user_command_1000 INPUT .
       DATA: v_perio(6) TYPE c.

       CASE sy-ucomm.
         WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
           LEAVE TO SCREEN 0.
         WHEN 'SAVE'.
           PERFORM save_data.
           PERFORM send_email.
     
         WHEN 'SET_S'.
           flag = 1.
           PERFORM set_status.
           CALL METHOD ob_grid->refresh_table_display
             EXPORTING
               is_stable = stbl.
    
         WHEN 'SET_P'.
           flag = 1.
           PERFORM select_data.
           CALL METHOD ob_grid->refresh_table_display
             EXPORTING
               is_stable      = stbl.
       ENDCASE.
    ENDMODULE. 

【问题讨论】:

    标签: abap alv dynpro


    【解决方案1】:

    我猜您将需要在 PAI 中作为第一件事调用的 CHECK_CHANGED_DATA 方法,它会触发事件 DATA_CHANGEDDATA_CHANGED_FINISHED

    但最重要的是,它将 OLE 对象与实例后端同步,然后当您调用 REFRESH_TABLE_DISPLAY 时,它会正确刷新您的 ALV。目前我没有任何示例,但我可以在下周访问系统时尝试。

    顺便说一句,在 PBO 中,您不需要变量 flag,您可以使用检查 ALV 对象是否已经初始化,并据此创建/刷新 alv。像这样的:

    if alvGridRef is NOT bound .
      data(container) = new cl_gui_custom_container( ) .
      data(alvGridRef) = new cl_gui_alv_grid( ) .
    else .
      alvGridRef->refresh_table_display( ) .
    endif .
    

    【讨论】:

      【解决方案2】:

      我在应用程序中做了类似的事情,在保存时需要刷新,因为某些计算必须在屏幕中更改。我在'REUSE_ALV_GRID_DISPLAY'功能模块的命令表单中设置了以下部分代码。

      form user_command using r_ucomm     like sy-ucomm
                              rs_selfield type slis_selfield.
        data: ref_grid type ref to cl_gui_alv_grid, l_valid type c.
      
        if ref_grid is initial.
          call function 'GET_GLOBALS_FROM_SLVC_FULLSCR'
            importing
              e_grid = ref_grid.
        endif.
      
        if not ref_grid is initial.
          call method ref_grid->check_changed_data
            importing
              e_valid = l_valid.
        endif.
        rs_selfield-refresh = 'X'.
      
        ...
      
        if not ref_grid is initial.
          call method ref_grid->refresh_table_display( ) .
        endif.
      
      endform.
      

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        您可以通过手动触发 PBO 来实现此目的。您说编辑已保存,因此您可以再次在 PBO 中显示 ALV:

        CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
                   EXPORTING
                     functioncode           = 'REFRESH'
                   EXCEPTIONS
                     function_not_supported = 1 
                     OTHERS                 = 2.
        

        执行此操作后,PBO 中的sy-ucomm 的值为REFRESH

        【讨论】:

          猜你喜欢
          • 2015-07-12
          • 2020-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-14
          • 1970-01-01
          • 2011-07-25
          相关资源
          最近更新 更多