c 如何刷新html,ALV事件中刷新HTML_TOP_OF_PAGE中的内容

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

ALV事件双击刷新ALV头部输出的CL_DD_DOCUMENT文档。之所以写这个贴子,是因为发现网上给出的一个博客文档是错误的。它能输出内容,但是双击ALV行项目的时候并没有同步刷新抬头HTML_TOP_OF_PAGE里输出的CL_DD_DOCUMENT的内容。此程序的解释可以参考百度经验。

*&---------------------------------------------------------------------*

*& Report ZTESTXUE505 ALV事件更新HTML_TOP_OF_PAGE的内容

*&---------------------------------------------------------------------*

*& 薛现军创建于 2020-12-25

*&---------------------------------------------------------------------*

REPORT ztestxue505 NO STANDARD PAGE HEADING.

************************************************************************

** 声明数据库表 Declaration of database **

************************************************************************

TABLES:mara.

************************************************************************

** 定义结构类型 Define the structure's type **

************************************************************************

TYPES:BEGIN OF typ_result,

vbeln TYPE lips-vbeln,

posnr TYPE lips-posnr,

matnr TYPE lips-matnr,

maktx TYPE makt-maktx,

matkl TYPE lips-matkl,

wgbez TYPE t023t-wgbez,

lfimg TYPE lips-lfimg,

meins TYPE lips-meins,

mseht TYPE t006a-mseht,

kbetr TYPE konv-kbetr,

netwr TYPE lips-netwr,

waers TYPE likp-waerk,

END OF typ_result.

************************************************************************

** 定义变量与内表 Define the variants and Internal tables **

************************************************************************

DATA:gt_result TYPE TABLE OF typ_result WITH HEADER LINE.

FIELD-SYMBOLS: TYPE typ_result.

DATA cl_document TYPE REF TO cl_dd_document.

*@---------------------------------------------------------------------*

*@ ALV相关的变量与内表

TYPE-POOLS:slis.

DATA: go_grid TYPE REF TO cl_gui_alv_grid, "ALV对象名称

gv_repid LIKE sy-repid, "程序名称

gv_tabkname TYPE tabname, "表名 数据类型

gv_title TYPE lvc_title, "ALV的标题

gs_layout TYPE lvc_s_layo, "格式设置

gs_variant TYPE disvariant,

gt_fieldcat TYPE lvc_t_fcat, "字段目录

gs_fieldcat TYPE lvc_s_fcat,

gv_field TYPE char30, "字段名称

gv_save TYPE c,

gv_length TYPE i,

gv_col TYPE i,

gv_row TYPE i,

gs_color TYPE lvc_s_scol, "字段级的颜色

gv_color TYPE lvc_s_colo,

gs_lvc_style TYPE lvc_s_styl, "字段级的类型设置

gt_lvc_style TYPE lvc_t_styl,

gt_lvc_f4 TYPE lvc_t_f4 , "F4帮助设置

gs_lvc_f4 TYPE lvc_s_f4,

gt_lvc_hype TYPE lvc_t_hype, "超链接内表

gs_lvc_hype TYPE lvc_s_hype,

gv_tabix TYPE sy-tabix,

gs_ddval TYPE lvc_s_drop, "工作区:下拉菜单

gt_ddval TYPE lvc_t_drop. "内表:下拉菜单

FIELD-SYMBOLS: TYPE lvc_s_fcat. "字段目录

************************************************************************

** 宏定义 Define the macro **

************************************************************************

DEFINE mcr_range.

CLEAR &1.

&1-sign = 'I'.

&1-option = &2.

&1-low = &3.

&1-high = &4.

APPEND &1.

END-OF-DEFINITION.

DEFINE mcr_html_field.

g_text = &3.

CALL METHOD document->add_text

EXPORTING

text = g_text

sap_emphasis = &2.

CALL METHOD document->add_gap

EXPORTING

width = &1.

END-OF-DEFINITION.

************************************************************************

** 选择屏幕 Customize the selection-screen **

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK xavery WITH FRAME TITLE TEXT-001.

PARAMETERS:p_matkl TYPE ekpo-matkl OBLIGATORY DEFAULT 'A00001'.

SELECTION-SCREEN END OF BLOCK xavery.

************************************************************************

** 执行程序事件 Executing the program's events **

************************************************************************

START-OF-SELECTION.

PERFORM sub_report_data IN PROGRAM ztestxue501

TABLES gt_result IF FOUND.

DELETE gt_result WHERE matkl NE p_matkl.

CHECK gt_result[] IS NOT INITIAL.

READ TABLE gt_result ASSIGNING INDEX 1.

END-OF-SELECTION.

PERFORM sub_create_fieldcat.

PERFORM sub_init_layout.

PERFORM sub_display_as_alv.

*&---------------------------------------------------------------------*

*& Form SUB_CREATE_FIELDCAT

*&---------------------------------------------------------------------*

* 给输出的结果内表指定输出字段

*----------------------------------------------------------------------*

FORM sub_create_fieldcat .

DEFINE mcr_field.

CLEAR gs_fieldcat.

gs_fieldcat-fieldname = &1.

gs_fieldcat-inttype = &2.

gs_fieldcat-outputlen = &3.

gs_fieldcat-coltext = &4.

gs_fieldcat-seltext = &4.

APPEND gs_fieldcat TO gt_fieldcat.

END-OF-DEFINITION.

REFRESH gt_fieldcat.

mcr_field 'VBELN' 'C' '10' '交货单'.

mcr_field 'POSNR' 'C' '6' '行项目'.

mcr_field 'MATNR' 'C' '' '物料编号' .

mcr_field 'MAKTX' 'C' '' '物料描述' .

mcr_field 'MATKL' 'C' '' '物料组' .

mcr_field 'WGBEZ' 'C' '' '物料组描述'.

mcr_field 'LFIMG' 'C' '' '交货数量'.

mcr_field 'MEINS' 'C' '' '计量单位' .

mcr_field 'MSEHT' 'C' '' '计量单位' .

mcr_field 'KBETR' 'P' '' '单价' .

mcr_field 'NETWR' 'P' '' '总金额' .

mcr_field 'WAERS' 'P' '' '货币' .

ENDFORM. " SUB_CREATE_FIELDCAT

*&---------------------------------------------------------------------*

*& Form SUB_INIT_LAYOUT

*&---------------------------------------------------------------------*

* 设置常用的输出布局参数

*----------------------------------------------------------------------*

FORM sub_init_layout .

gs_layout-zebra = 'X'.

gs_layout-cwidth_opt = 'X'.

gs_layout-sel_mode = 'X'.

CLEAR gs_variant.

gs_variant-report = sy-repid.

gv_repid = sy-repid.

ENDFORM. " SUB_INIT_LAYOUT

*&---------------------------------------------------------------------*

*& Form SUB_DISPLAY_AS_ALV

*&---------------------------------------------------------------------*

* 使用 OO ALV 对象输出结果内表

*----------------------------------------------------------------------*

FORM sub_display_as_alv .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

EXPORTING

i_callback_program = gv_repid

i_callback_user_command = 'SUB_USER_COMMAND'

i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'

i_save = gv_save

is_layout_lvc = gs_layout

it_fieldcat_lvc = gt_fieldcat

TABLES

t_outtab = gt_result

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc = '1'.

ELSEIF sy-subrc = '2'.

ENDIF.

ENDFORM. " SUB_DISPLAY_AS_ALV

*&---------------------------------------------------------------------*

*& Form SUB_SET_PF_STATUS

*&---------------------------------------------------------------------*

* 给结果屏幕设置工具栏

*----------------------------------------------------------------------*

FORM sub_set_pf_status USING lt_extab TYPE slis_t_extab..

SET PF-STATUS 'XAVERY_HSUEH'.

ENDFORM. " SUB_SET_PF_STATUS

*&---------------------------------------------------------------------*

*& Form SUB_USER_COMMAND

*&---------------------------------------------------------------------*

* ALV事件执行:##

*----------------------------------------------------------------------*

* -->L_UCOMM 功能码

* >--LS_SELFIELD 执行带地来的数据

*----------------------------------------------------------------------*

FORM sub_user_command USING l_ucomm

ls_selfield TYPE slis_selfield.

CASE l_ucomm.

WHEN '&IC1'. "

READ TABLE gt_result ASSIGNING INDEX ls_selfield-tabindex.

PERFORM html_top_of_page USING cl_document.

WHEN OTHERS.

ENDCASE.

ls_selfield-refresh = 'X'.

ENDFORM. "sub_user_command

*&---------------------------------------------------------------------*

*& Form html_top_of_page

*&---------------------------------------------------------------------*

FORM html_top_of_page USING document TYPE REF TO cl_dd_document.

DATA: g_text TYPE sdydo_text_element.

CALL METHOD document->initialize_document.

SEARCH document->html_table FOR document->cursor.

IF sy-subrc = 0.

mcr_html_field 20 'Strong' '测试ALV Header响应刷新 HTML'.

CALL METHOD document->new_line.

mcr_html_field 2 'Strong' '物料编号: '.

mcr_html_field 10 'Key' -matnr.

mcr_html_field 2 'Strong' '物料描述 '.

mcr_html_field 10 'Key' -maktx.

ENDIF.

CHECK cl_document IS INITIAL.

cl_document = document.

ENDFORM. "HTML_TOP_OF_PAGE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值