abap dynpro : 不用table control 怎么实现DEMO_DYNPRO_TABCONT_LOOP样例程序的功能?

abap dynpro : 不用table control 怎么实现DEMO_DYNPRO_TABCONT_LOOP样例程序的功能?,第1张

DATA: g_container TYPEscrfname VALUE'TC1',

      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'EXPORTING

i_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显示的时候显配辩示该列而不要显示对应的数字列碰雹


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12403889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存