top-of-page

REPORT  z_temp_demo8.

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'
      i_html_height_top           = 50     "控制表头栏目的初始高度
      is_layout                   = wa_layout
      it_fieldcat                 = it_fieldcat
    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.
  text =  'Company Code Data'.
  CALL METHOD document->add_text
    EXPORTING
      text      = text
      sap_style = 'HEADING'.
  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 = cl_dd_document=>SMALL.
**      sap_emphasis = cl_dd_document=>EMPHASIS.
  CALL METHOD document->add_text
    EXPORTING
      text          = text
*      TEXT_TABLE    =
*      FIX_LINES     =
*      SAP_STYLE     = cl_dd_document=>WARNING
       sap_color     = cl_dd_document=>list_total_int
      sap_fontsize  = cl_dd_document=>large
      sap_fontstyle = cl_dd_document=>serif
       sap_emphasis  = cl_dd_document=>emphasis  "加粗还是斜体  STRONG是加粗
*      STYLE_CLASS   =
*    CHANGING
*      DOCUMENT      =
      .

  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
  CALL METHOD document->add_link
    EXPORTING
*      NAME                   =
      url                    = 'http://www.baidu.com'
      tooltip                = '百度'
      text                   = 'Baidu'
*      DESTINATION_IN_DOC_SET =
*      DESTINATION_IN_DOC_POS =
*      TABINDEX               =
*      HOTKEY                 =
*    IMPORTING
*      LINK                   =
      .
ENDFORM.                    "HTML_TOP_OF_PAGE
<think>好的,我现在需要解释ABAP中的“TOP-OF-PAGE DURING LINE-SELECTION”这段代码的意思。首先,我得回忆一下ABAP的基本知识,特别是关于报表事件的部分。 用户可能是在处理ABAP的列表显示,特别是分页和行选择相关的功能。TOP-OF-PAGE是ABAP中常用的事件块,用于在页面顶部生成标题或页眉信息。通常,当用户执行报表时,系统会在每一页的顶部触发这个事件,执行其中的代码,比如打印列标题。 但问题中的“DURING LINE-SELECTION”部分让我有点困惑。LINE-SELECTION通常指的是行选择事件,也就是当用户在基础列表中选择一行时触发的事件,这会生成一个详细列表。这时候,可能需要在这个过程中显示页眉信息,所以TOP-OF-PAGE在这里的作用可能是在详细列表的顶部生成页眉。 不过,在ABAP中,TOP-OF-PAGE事件是否可以在行选择期间自动触发呢?我记得TOP-OF-PAGE通常是为主列表(基本列表)设计的,而详细列表可能有自己的页眉控制方式。可能需要使用不同的事件,比如TOP-OF-PAGE event for secondary lists,或者用户可能需要手动调用。 这时候需要确认ABAP文档中的说明。根据SAP的文档,TOP-OF-PAGE事件默认属于主列表,但可以通过指定事件组来为次级列表定义不同的页眉。例如,使用“AT TOP-OF-PAGE FOR LIST LEVEL 2”来定义次级列表的页眉。因此,单独使用TOP-OF-PAGE DURING LINE-SELECTION可能并不正确,或者需要特定的设置。 另外,可能用户看到的代码是旧版本的ABAP,或者存在某种特定的编程习惯。需要指出正确的语法和常见错误。例如,DURING LINE-SELECTION可能不是必须的,或者应该放在另一个事件块中。 总结起来,这段代码的意图可能是在行选择生成详细列表时,显示页眉信息。但正确的做法应该是为次级列表定义TOP-OF-PAGE事件,而不是直接使用DURING子句。需要解释TOP-OF-PAGE的标准用法,以及如何在详细列表中应用页眉,并指出可能的误解或错误用法。 接下来,我需要组织回答的结构,先解释每个部分的作用,再说明组合起来的含义,最后指出可能的问题或正确的使用方法。同时,根据用户的问题,生成相关的问题,帮助用户进一步了解相关主题。</think>在ABAP中,`TOP-OF-PAGE DURING LINE-SELECTION` 是一种特殊事件组合,其作用和实现需要注意以下几点: 1. **基本含义**: - `TOP-OF-PAGE`:定义列表的页眉区域,用于在每页顶部输出固定内容(如标题、列名等)。 - `DURING LINE-SELECTION`:表示此页眉逻辑在用户触发行选择(如点击基础列表某一行生成详细列表)时生效。 2. **实际行为**: - 此组合用于在**详细列表(Secondary List)**的每页顶部生成页眉内容。 - 当用户通过行选择进入下层列表时,系统会自动触发该事件块内的输出逻辑。 3. **代码示例**: ```abap AT TOP-OF-PAGE DURING LINE-SELECTION. WRITE: / '详细列表页眉 - 列名1', 20 '列名2'. END-OF-PAGE. ``` 4. **关键限制**: - 该事件仅对**次级列表**有效,主列表需使用单独的 `TOP-OF-PAGE` 事件。 - 需配合 `LINE-SELECTION` 事件(如 `AT USER-COMMAND`)实现行选择交互逻辑。 5. **常见误区**: - 错误认为 `DURING LINE-SELECTION` 是必须添加的修饰符,实际上它仅用于区分主/次级列表的页眉。 - 忽略次级列表的层级管理(如 `LIST LEVEL` 控制),导致页眉重复或错位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值