ABAP refresh_table_display刷新ALV网格并保持位置(单元格行列位置不变)

1.方法一

FORM USER_COMMAND USING IW_UCOMM    TYPE SY-UCOMM
                        IS_SELFIELD TYPE SLIS_SELFIELD.
                        
  IS_SELFIELD-COL_STABLE = 'X'.		"列保持
  IS_SELFIELD-ROW_STABLE = 'X'.		"行保持
  IS_SELFIELD-REFRESH    = 'X'.			"是否刷新
ENDFORM.


1.方法二

FORM FRM_WHEN_CHANGED .
  DATA: IS_STABLE TYPE LVC_S_STBL.
  IS_STABLE-ROW = 'X'.	"保持行
  IS_STABLE-COL = 'X'.		"保持列

  CALL METHOD GV_GRID->REFRESH_TABLE_DISPLAY( EXPORTING IS_STABLE = IS_STABLE ).						"刷新
ENDFORM.

【ABAP系列】SAP ABAP 刷新SCREEN的方法 - 走看看

1:

* 显示ALV
CALL METHOD gr_alvgrid->set_table_for_first_display
* 刷新ALV
CALL METHOD gr_alvgrid->refresh_table_display

有2个参数,一个是行,一个是列.如果设置了相应的值,
那么对应的行,或者列,在刷新的时候,将会保持稳定,就是滚动条保持不动.

有些时候需要再调用 CL_GUI_CFW=>FLUSH方法,才能看到刷新后的结果。

2:

设置 selfield-refresh = 'X'

用的太多,不赘述。
--------------------- 

cl_gui_cfw=>flush._闫艺宸的博客-优快云博客

 CL_GUI_CFW=>FLUSH把更新后的数据同步到SAP GUI

用法一:
REFRESH_TABLE_DISPLAY虽然刷新的界面,但是SAP GUI并不是实时更 新,而是将更新的结果放在缓存中,手动调用CL_GUI_CFW=>FLUSH才能触发SAP GUI更新界面,看到刷新的结果。
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
用法二:
在OO的ALV方法中,使程序重新走PBO
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = ‘REFRESH’
CALL METHOD cl_gui_cfw=>flush.
用法三:
FORM frm_refresh_dlysk_display USING pv_p_refresh.
IF g_grid_dlysk IS INITIAL.
EXIT.
ENDIF.

Refresh grid
CALL METHOD g_grid_dlysk->refresh_table_display
EXPORTING
i_soft_refresh = pv_p_refresh.

CALL METHOD cl_gui_cfw=>flush.
ENDFORM. " FRM_REFRESH_DLYSK_DISPLAY
————————————————
版权声明:本文为优快云博主「闫艺宸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_42921800/article/details/98776432

cl_gui_cfw=>flush

  用法一:

     REFRESH_TABLE_DISPLAY虽然刷新的界面,但是SAP GUI并不是实时更新,而是将更新的结果放在缓存中,手动调用CL_GUI_CFW=>FLUSH才能触发SAP GUI更新界面,看到刷新的结果。

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error = 1
      cntl_error        = 2.

   用法二:

例如下面让用户选择文件夹的代码:

CALL METHOD cl_gui_frontend_services=>directory_browse
        CHANGING selected_folder = folder.
      CALL METHOD cl_gui_cfw=>flush.

why should we call the flush method?

here is some notes about this mehtod, from About cl_gui_cfw=>flush_xyfchris的博客-优快云博客

"In OO approach, calling a Control-method does not imply that the method is automatically executed at runtime. Initially, the system buffers methods in a queue, referred to as the Automation Queue, when they are called in the ABAP program. The execution sequence of the methods therefore remains unchanged. However, the methods are only executed if they are transferred to the frontend via Remote Function Call (RFC) using method FLUSH. This means that the Automation Queue is used to reduce the number of RFC calls required."

用法三:

在OO的ALV方法中,使程序重新走PBO

  CALL METHOD cl_gui_cfw=>set_new_ok_code
    EXPORTING
      new_code = 'REFRESH'.

  CALL METHOD cl_gui_cfw=>flush.

### ABAP ALV 保存后设置光标位置的方法 在ABAP中处理ALV网格显示的数据时,通常会遇到需要在特定操作完成后重新定位光标的场景。对于保存后的光标重置,在完成数据更新至内表的操作之后,可以通过调用`cl_gui_alv_grid`类的相关方法实现这一功能。 为了确保光标能够被正确放置到指定的位置,首先应当获取当前使用的ALV实例对象引用: ```abap DATA: lr_grid TYPE REF TO cl_gui_alv_grid. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lr_grid. ``` 接着确认已有的更改已经被提交应用到了内存中的表格里[^5]: ```abap lr_grid->check_changed_data( ). selfield-refresh = 'X'. ``` 最后一步则是设定新的焦点所在行与列的信息。这涉及到创建一个包含目标行列索引的对象,将其传递给相应的接口函数用于实际执行聚焦动作。下面是一个简单的例子展示如何具体实施此过程: ```abap DATA: ls_pos TYPE lvc_s_pos, lt_sel TYPE slis_t_line. ls_pos-row = sy-tabix. " 假设要回到刚修改的那一行 ls_pos-col = 'COLUMN_NAME'. " 替换成具体的列名称 APPEND ls_pos TO lt_sel. lr_grid->set_cursor( EXPORTING i_row = ls_pos-row i_column = ls_pos-col ). lr_grid->refresh_table_display( ). " 刷新界面使改变生效 ``` 上述代码片段展示了怎样在一个典型的ABAP环境中配置和调整ALV控件的行为模式,从而达到预期的效果——即让用户界面上的活动单元格自动跳转回最近一次交互发生的地点附近。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值