ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示

本文介绍如何使用SAP REUSE_ALV_GRID_DISPLAY实现标题居中,并提供代码示例,展示了通过cl_dd_document类的html_insert方法插入特殊HTML代码以达到目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个网友的用户需要将REUSE_ALV_GRID_DISPLAY的题头居中显示,我看看了SAP的代码,发现时可以实现的。

REUSE_ALV_GRID_DISPLAY的题头原理和机制

SAP的REUSE_ALV_GRID_DISPLAY的题头实际上一个简易的HTML浏览控件的封装调用,你在服务器用cl_dd_document类的add_text方法增加的文本,SAP都会翻译成HTML语言,再发送给客户端解释展现。

cl_dd_document类的add_text方法都会先进行HTML翻译,再调用cl_dd_document类的html_insert将真正的HTML元素添加到内表。因此,我们就何以通过cl_dd_document类的html_insert将特殊的HTML写到对应内表,实现特殊的现实效果。我想原理分到到这大家都清楚,REUSE_ALV_GRID_DISPLAY的题头不但可以实现居中,还可以实现HTML的各种效果。

备注:REUSE_ALV_GRID_DISPLAY的脚注标题也一样可以实现各种样式

代码样例:(注意红色部分代码)

REPORT ZTEST4.

TABLES : t001.
TYPE-POOLS: slis.

DATA : w_repid LIKE sy-repid.
TYPES : BEGIN OF ty_comp.
INCLUDE STRUCTURE t001.
TYPES : END OF ty_comp.

DATA: wa_layout TYPE slis_layout_alv.

DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.

DATA : it_comp TYPE TABLE OF ty_comp.

INITIALIZATION.
w_repid = sy-repid.

START-OF-SELECTION.

SELECT * FROM t001 INTO TABLE it_comp.

END-OF-SELECTION.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
i_internal_tabname = 'IT_COMP'
I_STRUCTURE_NAME = 'T001'
i_inclname = w_repid

CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat
i_html_height_top = 10
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 1
OTHERS = 2.


*&---------------------------------------------------------------------*
*& Form html_top_of_page
*&---------------------------------------------------------------------*

FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
DATA: text TYPE sdydo_text_element.
DATA: position TYPE i.

SEARCH document->html_table FOR document->cursor.
IF sy-subrc eq 0.
position = sy-tabix.
CALL METHOD document->html_insert
EXPORTING
contents = '<div class=MsoNormal align=center style="text-align:center"> '
CHANGING
position = position.
CALL METHOD document->html_insert
EXPORTING
contents = '<span align="center" style=" font-weight:bold;">Test Company Code Data</span> </DIV>'
CHANGING
position = position.
ENDIF.

CALL METHOD document->new_line.
CALL METHOD document->new_line.

text = 'User Name : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.

CALL METHOD document->add_gap
EXPORTING
width = 2.

text = sy-uname.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.

CALL METHOD document->add_gap
EXPORTING
width = 10.

CALL METHOD document->add_icon
exporting
sap_icon = 'ICON_DATE'.

text = 'Date : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.

CALL METHOD document->add_gap
EXPORTING
width = 2.

text = sy-datum.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.

CALL METHOD document->add_gap
EXPORTING
width = 10.

text = 'Time : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.

CALL METHOD document->add_gap
EXPORTING
width = 2.

text = sy-uzeit.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.

CALL METHOD document->new_line.

CALL METHOD document->underline. "Draw an underLine
ENDFORM. "HTML_TOP_OF_PAGE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值