显示后,修改字段目录和布局
在运行期间,可以在首次显示列表后设置新的布局或新字段目录。 这些组件具有 get/set 方法来完成此操作。
- Field Catalog
- GET_FRONTEND_FIELDCATALOG
- SET_FRONTEND_FIELDCATALOG
- Layout
- GET_FRONTEND_LAYOUT
- SET_FRONTEND_LAYOUT
代码示例
DATA ls_fcat TYPE lvc_s_fcat .
DATA lt_fcat TYPE lvc_t_fcat .
DATA ls_layout TYPE lvc_s_layo .
"Field Cattalog"
CALL METHOD go_grid->get_frontend_fieldcatalog
IMPORTING
et_fieldcatalog = lt_fcat[] .
LOOP AT lt_fcat INTO ls_fcat .
IF ls_fcat-fieldname = 'Field_name' .
ls_fcat-no_out = space .
MODIFY lt_fcat FROM ls_fcat .
ENDIF .
CLEAR ls_fcat .
ENDLOOP .
CALL METHOD go_grid->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = lt_fcat[] .
"Layout"
CALL METHOD obj_alv->get_frontend_layout
IMPORTING
es_layout = ls_layout .
ls_layout-grid_title = 'Title name' .
CALL METHOD obj_alv->set_frontend_layout
EXPORTING
is_layout = ls_layout .
将字段作为下拉菜单
有时候我们可以把一些字段设置为下拉,比如一些类型,一些字段的值是比较固定的一些值;也可以通过搜索帮助来做。
使用一个内表存放了句柄和对应的值,该表类型为 LVC_T_DROP;下拉的内表传递需要使用方法 SET_DROP_DOWN_TABLE。
设置整列为下拉
在字段目录中,把控制字段 DRDN_HNDL 指向对应的下拉内表的句柄就可以了。
gs_fieldcat-drdn_hndl = 1.
设置单元格下拉
需要在数据显示的内表中增加一个句柄字段(如果是有多个不同的字段需要设置下拉,可以增加多个字段),同时需要在字段目录里设置 DRDN_FIELD。
gs_fieldcat-drdn_field = 'DROP_HNDL'.
示例代码
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat.
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .
DATA drop_hndl TYPE int4 .
DATA END OF gt_list .
gs_fieldcat-drdn_hndl = 1.`
gs_fieldcat-drdn_field = 'DROP_HNDL'.
"定义下拉的句柄内表"
FORM prepare_drop_down_values.
DATA lt_ddval TYPE lvc_t_drop .
DATA ls_ddval TYPE lvc_s_drop .
CLEAR lt_ddval.
ls_ddval-handle = '1' .
ls_ddval-value = 'JFK-12' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'JSF-44' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'KMDA-53' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'SS3O-N' .
APPEND ls_ddval TO lt_ddval .
"准备好内表以后,使用方法 set_drop_down_table 来传递给ALV"
CALL METHOD go_grid->set_drop_down_table
EXPORTING
it_drop_down = lt_ddval .
ENDFORM. " prepare_drilldown_values "