ALV OO中右击显示列进行隐藏列处理,但是右击后发现无效,该如何处理?
其实问题出在创建“ALV grid container” 这里。
问题代码:
"Create ALV grid container
PERFORM CREATE_GRID_CONTAINER USING GV_CONT_BODY GV_GRID ABAP_TRUE.
*&---------------------------------------------------------------------*
*& Form create_grid_container
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PARENT text
* -->PO_GRID text
* -->P_APPL text
*----------------------------------------------------------------------*
FORM CREATE_GRID_CONTAINER USING P_PARENT
PO_GRID_BODY TYPE REF TO LCL_ALV_GRID
P_APPL.
CHECK PO_GRID_BODY IS INITIAL.
CREATE OBJECT PO_GRID_BODY
EXPORTING
I_PARENT = P_PARENT
I_APPL_EVENTS = P_APPL.
ENDFORM. " CREATE_GRID_CONTAINER
在生成CL_GUI_ALV_GRID实例时,构造器参数I_PARENT是必需的,这一点毋庸置疑的,但这里对I_APPL_EVENTS赋值为X,则不会按照系统的标准来执行,即要对ALV 的功能进行扩展。
- 'X' -> APP EVENT
- ' ' -> SYSTEM EVENT
修正代码:
"Create ALV grid container
PERFORM CREATE_GRID_CONTAINER USING GV_CONT_BODY GV_GRID ABAP_TRUE.
*&---------------------------------------------------------------------*
*& Form create_grid_container
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PARENT text
* -->PO_GRID text
* -->P_APPL text
*----------------------------------------------------------------------*
FORM CREATE_GRID_CONTAINER USING P_PARENT
PO_GRID_BODY TYPE REF TO LCL_ALV_GRID
P_APPL.
CHECK PO_GRID_BODY IS INITIAL.
CREATE OBJECT PO_GRID_BODY
EXPORTING
I_PARENT = P_PARENT
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
ENDFORM. " CREATE_GRID_CONTAINER