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

本文介绍如何利用REUSE_ALV_GRID_DISPLAY的内部机制,通过插入特定的HTML代码,实现标题居中显示。通过在`html_top_of_page`回调函数中插入`<div>`和`<span>`标签,并设置样式,不仅可实现居中,还能实现更多HTML样式效果。

 最近有个网友的用户需要将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_CO

提供的引用内容未提及使用ABAPREUSE_ALV_GRID_DISPLAY_LVC实现ALV双层标题的方法。通常在ABAP里,要使用REUSE_ALV_GRID_DISPLAY_LVC实现ALV双层标题,可按以下步骤操作: ### 定义字段目录 要定义字段目录,并且为每个字段设定抬头信息。对于双层标题,需要使用 `LVC_S_FCAT` 结构里的 `GROUP1` 和 `GROUP2` 字段来定义不同层级的标题。 ### 设定布局 要对ALV的布局进行设定,确保双层标题能够正确显示。 ### 调用REUSE_ALV_GRID_DISPLAY_LVC 把定义好的字段目录和布局当作参数传递给 `REUSE_ALV_GRID_DISPLAY_LVC` 函数。 以下是示例代码: ```abap REPORT z_alv_double_header. TABLES: mara. DATA: gt_fieldcat TYPE lvc_t_fcat, gs_layout TYPE lvc_s_layo, gt_data TYPE STANDARD TABLE OF mara. START - OF - SELECTION. " 填充数据 SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE gt_data. " 定义字段目录 PERFORM fill_fieldcat. " 设置布局 gs_layout-zebra = 'X'. " 斑马线效果 " 调用REUSE_ALV_GRID_DISPLAY_LVC CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy - repid is_layout_lvc = gs_layout it_fieldcat_lvc = gt_fieldcat TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. IF sy - subrc <> 0. MESSAGE ID sy - msgid TYPE sy - msgty NUMBER sy - msgno WITH sy - msgv1 sy - msgv2 sy - msgv3 sy - msgv4. ENDIF. FORM fill_fieldcat. DATA: wa_fieldcat TYPE lvc_s_fcat. " 第一层标题 wa_fieldcat - fieldname = 'MATNR'. wa_fieldcat - coltext = '物料编号'. wa_fieldcat - group1 = '基本信息'. APPEND wa_fieldcat TO gt_fieldcat. CLEAR wa_fieldcat. wa_fieldcat - fieldname = 'MAKTX'. wa_fieldcat - coltext = '物料描述'. wa_fieldcat - group1 = '基本信息'. APPEND wa_fieldcat TO gt_fieldcat. CLEAR wa_fieldcat. " 第二层标题 wa_fieldcat - fieldname = 'BRGEW'. wa_fieldcat - coltext = '毛重'. wa_fieldcat - group1 = '重量信息'. wa_fieldcat - group2 = '详细重量'. APPEND wa_fieldcat TO gt_fieldcat. CLEAR wa_fieldcat. wa_fieldcat - fieldname = 'NTGEW'. wa_fieldcat - coltext = '净重'. wa_fieldcat - group1 = '重量信息'. wa_fieldcat - group2 = '详细重量'. APPEND wa_fieldcat TO gt_fieldcat. CLEAR wa_fieldcat. ENDFORM. ``` 在这个示例中,借助 `fill_fieldcat` 子例程定义了字段目录,利用 `GROUP1` 和 `GROUP2` 字段实现了双层标题。之后把定义好的字段目录和布局传递给 `REUSE_ALV_GRID_DISPLAY_LVC` 函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值