g_custom_container1 TYPE REF TO cl_gui_custom_container,
grid TYPEREFTOcl_gui_alv_grid.
PBO里代码:
CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_save 举空拦 = ''
is_layout = sla
CHANGING
it_outtab = gt_spfli[]
it_fieldcatalog = gt_field_cat1[].
这种方式输正胡出alv基本上都亏仿是这个模式,这样三部曲
首先找到如下代码:CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program=g_repid
i_structure_name='TYP_RESULT'
i_grid_title=g_title
i_grid_settings=g_setting
i_callback_user_command='SUB_USER_COMMAND'
i_callback_pf_status_set='SUB_SET_PF_STATUS'
i_callback_top_of_page='SUB_TOP_OF_PAGE'i_save=g_saveis_layout=wa_layout
it_fieldcat=gt_fieldcat[]TABLESt_outtab=gt_resultEXCEPTIONS
program_error=1OTHERS=2.
程序中标红的部分是传递的一个子程序的名称,这个子程序用来处理你在ALV状态栏上新增的功能 *** 作。此子程序代码如下:
*@--------------------------------------------------------------------**@Form
sub_user_command
*@--------------------------------------------------------------------**--R_UCOMM事务功能码*
--RS_SELFIELD
ALV相关的数据
*---------------------------------------------------------------------*FORMsub_user_commandUSINGr_ucommLIKEsy-ucomm
rs_selfieldTYPEslis_selfield.CASEr_ucomm.WHEN'&IC1'.
"双击事件的功能码WHEN'CLEAR'.PERFORMsub_ucomm_clear."清空 *** 作ENDCASE.*刷新ALV报表*CALLFUNCTION'GET_GLOBALS_FROM_SLVC_FULLSCR'*IMPORTING*e_grid=g_grid.*CALLMETHODg_grid-check_changed_data.*CALLMETHODg_grid-refresh_table_display.
rs_selfield-refresh='X'.
ENDFORM.
以上子程序传递的参数是固定,不用理会。程辩森衡序中注释掉的部分是当输出的内表内容发生变化时,我们将变化的携做内容刷新显示。如果ALV是可编辑的,编辑相应的单元格后,只要有标红的那一句参数设置,就可春竖以实现内表内容的刷新。
ALV里面的no_zero可以控制列的笑卖帆前导零不显示,如果为0则不显示该列的值。但是ALV没有控制到具体单元格的功能,如果你要实现此需求,可以这样处理:在显示的内表中添加一个CHAR类型的列,如果数字不为0,则该列值为空;如果数字为0,则将该数值直接等过去。在ALV显示的时候显配辩示该列而不要显示对应的数字列碰雹
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)