【转载】SAP ALV(LVC)的抬头标题设定(html_top_of_page)

本文介绍两种在ABAP中设置ALV网格显示抬头标题的方法:一是使用cl_dd_document类添加文本元素;二是直接编写HTML代码插入到ALV网格的头部,展示项目基本信息。

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

对alv的抬头标题设置方法
 
方法1:通过class:cl_dd_document设定
call alv
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program          = sy-repid
      i_callback_pf_status_set    = 'FRM_PF_STATUS_SET'
      i_callback_user_command     = 'FRM_USER_COMMAND'
      i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      is_layout_lvc               = gwa_lay
      it_fieldcat_lvc             = gt_fcat
    TABLES
      t_outtab                    = gt_list.
 
 
定义子程序(form)
*&---------------------------------------------------------------------*
*&      Form  html_top_of_page
*&---------------------------------------------------------------------*
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.

  DATA: text TYPE sdydo_text_element.
  LOOP AT gt_proj INTO gwa_proj.
    text = text-010.                  "项目编号
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text = gwa_proj-pspid.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.  "加粗还是斜体  STRONG是加粗

    CALL METHOD document->add_gap
      EXPORTING
        width = 40.

    text = text-011.                   "项目名称
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text = gwa_proj-post1.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->new_line.
    CALL METHOD document->underline.   "Draw  an underLine


    text = text-012.                   "SOP时间
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text = gwa_proj-zsopsj.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 40.

    text = text-013.                   "客户名称
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text =  gwa_proj-zzjkh.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 40.
    text = text-014.                   "厂房模式
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text =  gwa_proj-zcfms.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.

    CALL METHOD document->new_line.
    CALL METHOD document->underline.   "Draw  an underLine

    text = text-015.                   "公司性质
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text = gwa_proj-zgsxz.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 40.

    text = text-016.                   "客户产能
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text =  gwa_proj-zkhcn.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 40.
    text = text-017.                   "客户启动会议日期
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    text =  gwa_proj-zqdhysj.
    CALL METHOD document->add_text
      EXPORTING
        text         = text
        sap_emphasis = text-052.
    CALL METHOD document->add_gap
      EXPORTING
        width = 2.
    CALL METHOD document->new_line.
    CALL METHOD document->underline.   "Draw  an underLine

  ENDLOOP.
ENDFORM.                    "HTML_TOP_OF_PAGE
 
效果图如下:
 
 
 
方法2:通过编写html代码实现
*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
*       top_of_page
*----------------------------------------------------------------------*
FORM top_of_page USING w_doc TYPE REF TO cl_dd_document.
  DATA: lt_html_table    TYPE sdydo_html_line OCCURS 0.
  DATA: ls_htmltab       LIKE LINE OF lt_html_table.

  REFRESH w_doc->html_table.

  ls_htmltab-line =
   '<HTML><BODY bottommargin="0" background=" ">' &
  '<SPAN Style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Arial; ">'
  & '<br /><B>'
  && '工厂 :'  && p_werks  && '</B> <BR>'.
  APPEND ls_htmltab TO w_doc->html_table.

  CLEAR ls_htmltab.
  ls_htmltab-line =
  '<br /><B>'
  && '未维护比例:'  && gv_perct && '</B> </<BR></SPAN>'.
  APPEND ls_htmltab TO w_doc->html_table.

  CLEAR ls_htmltab.
  ls_htmltab-line = '</BODY></HTML>'.
  APPEND ls_htmltab TO w_doc->html_table.

ENDFORM.                    "top_of_page
 
效果图如下:
--------------------- 
作者:forever_crazy 
来源:优快云 
原文:https://blog.youkuaiyun.com/forever_crazy/article/details/19802199 
版权声明:本文为博主原创文章,转载请附上博文链接!

### 使用 `REUSE_ALV_GRID_DISPLAY_LVC` 实现 TOPPAGE 设置及文本对齐 在 SAP ABAP 中,函数模块 `REUSE_ALV_GRID_DISPLAY_LVC` 提供了丰富的参数来定制 ALV 表格显示效果。为了实现顶部页面(TOP PAGE)的设置以及文本的左对齐和右对齐功能,可以通过以下方式完成。 #### 1. **设置 Top of Page** 要定义表格上方的内容(即 Top of Page),可以使用回调方法 `i_callback_top_of_page` 参数指定一个自定义形式名称。此形式将在 ALV 渲染之前被调用[^1]。 下面是一个简单的例子展示如何创建并关联该回调: ```abap FORM frm_top_of_page USING r_serial TYPE string. WRITE: / 'This is the top part of your page.'. ENDFORM. ``` 随后,在调用 `REUSE_ALV_GRID_DISPLAY_LVC` 的时候传递如下参数: ```abap CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_top_of_page = 'FRM_TOP_OF_PAGE' " 自定义Top Of Page 形式名 ... ``` 这样就实现了在 ALV 显示区域之上打印特定内容的功能。 #### 2. **调整列属性以支持不同方向对齐** 对于每一列表项的具体样式控制,则需借助字段目录 (`it_fieldcat`) 和布局结构体(`is_layout_lvc`) 来配置。具体来说, - 字段目录中的 `seltext_m` 或其他描述性文字可通过修改其对应的长度、位置等影响最终呈现; - 更重要的是利用 `col_pos`, `outputlen`, 及最重要的 `align` 成员变量决定数据单元格内的水平排列倾向——其中, - 值为0表示默认居中, - 值为1代表向左侧靠拢, - 而值设成2则意味着右侧贴边放置[^2]. 例如: ```abap LOOP AT lt_fieldcat INTO ls_fieldcat WHERE fieldname EQ 'YOUR_FIELD'. ls_fieldcat-align = 1. " 左对齐 MODIFY lt_fieldcat FROM ls_fieldcat. ENDLOOP. LOOP AT lt_fieldcat INTO ls_fieldcat WHERE fieldname EQ 'ANOTHER_FIELD'. ls_fieldcat-align = 2. " 右对齐 MODIFY lt_fieldcat FROM ls_fieldcat. ENDLOOP. ``` 最后记得将更新后的字段目录传入到ALV函数里去应用这些变化。 #### 完整示例代码片段 以下是综合上述要点的一个完整实例: ```abap DATA: go_container TYPE REF TO cl_gui_custom_container, gt_outtab TYPE TABLE OF zyour_table_type, gs_layout TYPE lvc_s_layo, gt_fldcat TYPE lvc_t_fcat. gs_layout-cwidth_opt = abap_true. " 列宽优化选项 gs_layout-box_fname = 'SEL'. " 如果需要选择框的话启用它 PERFORM build_fieldcatalog CHANGING gt_fldcat. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid i_callback_top_of_page = 'FRM_TOP_OF_PAGE' is_layout_lvc = gs_layout it_fieldcat_lvc = gt_fldcat[] i_save = 'X' TABLES t_outtab = gt_outtab 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 frm_top_of_page USING r_serial TYPE string. WRITE: / 'Custom Header Text Here'. ENDFORM. ``` ### 注意事项 确保所有必要的全局变量已正确定义,并且实际业务逻辑与这里给出的例子相匹配;另外还要注意权限管理等问题可能带来的额外挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值