#6
使用道具
发表于
2008-10-6 16:38
FORM F_ALV_USER_COMMAND USING R_UCOMM
LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA S_TEMP(100) TYPE C.
DATA L_TEMP LIKE LINE OF IT_PRINT_001.
DATA L_FID(30).
DATA L_LINE TYPE I.
G_SELECTED_FIELD_VALUE = RS_SELFIELD-VALUE.
G_TABINDEX = RS_SELFIELD-TABINDEX.
READ TABLE IT_PRINT_001 INTO L_TEMP INDEX G_TABINDEX.
CASE R_UCOMM.
WHEN '&IC1'. "NEED MODIFY
G_SELECTED_FIELD_VALUE = RS_SELFIELD-VALUE.
G_TABINDEX = RS_SELFIELD-TABINDEX.
IF RS_SELFIELD-FIELDNAME = 'MATNR'.
PERFORM F_BDC_EXECUTE_001.
**
自动刷新添加的代码段
IT_PRINT_001-VIEWED = 'X'.
MODIFY IT_PRINT_001 TRANSPORTING VIEWED WHERE PLNUM = L_TEMP-PLNUM.
RS_SELFIELD-COL_STABLE = 'X'.
RS_SELFIELD-ROW_STABLE = 'X'. "
自动刷新之前记住光标所在的行和列的位置
RS_SELFIELD-REFRESH = 'X'. "
自动刷新
这
是
我
之
前
实
现
的
双
击
料
号
跳
转
至
MD04
,
当
从
MD04
返
回
的
时
候
给
此
行
做
一
个
标
识
X
(
IT_PRINT_001-VIEWED
=
'X'.
)
,便于用户区别哪些行被双击到
MD04
了,那么要使这个标识显示
出来,
必须对
ALV
数据进行刷新才行。
所以实现自动刷新,
以及刷新之后光标位置不变,
只需要以下三行;
RS_SELFIELD-COL_STABLE = 'X'.
RS_SELFIELD-ROW_STABLE = 'X'. "
自动刷新之前记住光标所在的行和列的位置
RS_SELFIELD-REFRESH = 'X'. "
自动刷新
希望这次你能解决你的问题了,我想我说的已经够清楚了。
(另外,实现这个功能,我参考的是标准报表
QA33
)
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
DATA: LS_STABLE TYPE LVC_S_STBL.
LS_STABLE-ROW = 'X'.
"LS_STABLE-COL = 'X'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' "
得到当前屏幕上的
ALV
的