`
blueoxygen
  • 浏览: 1193582 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

更改ALV subtotal text sample程序

    博客分类:
  • SAP
阅读更多
By Joyjit Ghosh, IBM India

Code:*&---------------------------------------------------------------------*
*& Report  Z_ALV_SUBTOTAL
*&
*&---------------------------------------------------------------------
REPORT z_alv_subtotal.*&---------------------------------------------------------------------*
*& Table declaration
*&---------------------------------------------------------------------*TABLES: ekko.*&---------------------------------------------------------------------*
*& Type pool declaration
*&---------------------------------------------------------------------*
TYPE-POOLS: slis. " Type pool for ALV*&---------------------------------------------------------------------*
*& Selection screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.*&---------------------------------------------------------------------*
*& Type declaration
*&---------------------------------------------------------------------** Type declaration for internal table to store EKPO data
TYPES: BEGIN OF x_data,
       ebeln  TYPE char30,  " Document no.
       ebelp  TYPE ebelp,   " Item no
       matnr  TYPE matnr,   " Material no
       matnr1 TYPE matnr,   " Material no
       werks  TYPE werks_d, " Plant
       werks1 TYPE werks_d, " Plant
       ntgew  TYPE entge,   " Net weight
       gewe   TYPE egewe,   " Unit of weight                    
       END OF x_data.*&---------------------------------------------------------------------*
*& Internal table declaration
*&---------------------------------------------------------------------*
DATA:* Internal table to store EKPO data
  i_ekpo TYPE STANDARD TABLE OF x_data INITIAL SIZE 0,
* Internal table for storing field catalog information
  i_fieldcat TYPE slis_t_fieldcat_alv,
* Internal table for Top of Page info. in ALV Display
  i_alv_top_of_page TYPE slis_t_listheader,
* Internal table for ALV Display events
  i_events TYPE slis_t_event,
* Internal table for storing ALV sort information
  i_sort TYPE  slis_t_sortinfo_alv,
  i_event TYPE slis_t_event.*&---------------------------------------------------------------------*
*& Work area declaration
*&---------------------------------------------------------------------*DATA:
  wa_ekko TYPE x_data,
  wa_layout     TYPE slis_layout_alv,
  wa_events         TYPE slis_alv_event,
  wa_sort TYPE slis_sortinfo_alv.*&---------------------------------------------------------------------*
*& Constant declaration
*&---------------------------------------------------------------------*CONSTANTS:
   c_header   TYPE char1
              VALUE 'H',                    "Header in ALV
   c_item     TYPE char1
              VALUE 'S'.*&---------------------------------------------------------------------*
*& Start-of-selection event
*&---------------------------------------------------------------------*START-OF-SELECTION.* Select data from ekpo
  SELECT ebeln " Doc no
         ebelp " Item
         matnr " Material
         matnr " Material
         werks " Plant
         werks " Plant
         ntgew " Quantity
         gewei " Unit
         FROM ekpo
         INTO TABLE i_ekpo
         WHERE ebeln IN s_ebeln
         AND ntgew NE '0.00'.  IF sy-subrc = 0.
    SORT i_ekpo BY ebeln ebelp matnr .
  ENDIF.* To build the Page header
  PERFORM sub_build_header.* To prepare field catalog
  PERFORM sub_field_catalog.* Perform to populate the layout structure
  PERFORM sub_populate_layout.* Perform to populate the sort table.
  PERFORM sub_populate_sort.* Perform to populate ALV event
  PERFORM sub_get_event.END-OF-SELECTION.* Perform to display ALV report
  PERFORM sub_alv_report_display.
*&---------------------------------------------------------------------*
*&      Form  sub_build_header
*&---------------------------------------------------------------------*
*       To build the header
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_build_header .* Local data declaration
  DATA: l_system     TYPE char10 ,          "System id
        l_r_line     TYPE slis_listheader,  "Hold list header
        l_date       TYPE char10,           "Date
        l_time       TYPE char10,           "Time
        l_success_records TYPE i,           "No of success records
        l_title(300) TYPE c.                " Title
* Title  Display
  l_r_line-typ = c_header.               " header
  l_title = 'Test report'(001).
  l_r_line-info = l_title.
  APPEND l_r_line TO i_alv_top_of_page.
  CLEAR l_r_line.* Run date Display
  CLEAR l_date.
  l_r_line-typ  = c_item.                " Item
  WRITE: sy-datum  TO l_date MM/DD/YYYY.
  l_r_line-key = 'Run Date :'(002).
  l_r_line-info = l_date.
  APPEND l_r_line TO i_alv_top_of_page.
  CLEAR: l_r_line,
         l_date.ENDFORM.                    " sub_build_header
*&---------------------------------------------------------------------*
*&      Form  sub_field_catalog
*&---------------------------------------------------------------------*
*       Build Field Catalog
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_field_catalog .*  Build Field Catalog
  PERFORM sub_fill_alv_field_catalog USING:     '01' '01' 'EBELN' 'I_EKPO' 'L'
     'Doc No'(003) ' ' ' ' ' ' ' ',     '01' '02' 'EBELP' 'I_EKPO' 'L'
     'Item No'(004) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR' 'I_EKPO' 'L'
     'Material No'(005) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR1' 'I_EKPO' 'L'
     'Material No'(005) ' ' ' ' ' ' ' ',
     '01' '04' 'WERKS' 'I_EKPO' 'L'
     'Plant'(006) 'X' 'X' ' ' ' ',     '01' '04' 'WERKS1' 'I_EKPO' 'L'
     'Plant'(006) ' ' ' ' ' ' ' ',     '01' '05' 'NTGEW' 'I_EKPO' 'R'
     'Net Weight'(007) ' ' ' ' 'GEWE' 'I_EKPO'.ENDFORM.                    " sub_field_catalog*&---------------------------------------------------------------------*
*&     Form  sub_fill_alv_field_catalog
*&---------------------------------------------------------------------*
*&     For building Field Catalog
*&---------------------------------------------------------------------*
*&     p_rowpos   Row position
*&     p_colpos   Col position
*&     p_fldnam   Fldname
*&     p_tabnam   Tabname
*&     p_justif   Justification
*&     p_seltext  Seltext
*&     p_out      no out
*&     p_tech     Technical field
*&     p_qfield   Quantity field
*&     p_qtab     Quantity table
*&---------------------------------------------------------------------*
FORM sub_fill_alv_field_catalog  USING  p_rowpos    TYPE sycurow
                                        p_colpos    TYPE sycucol
                                        p_fldnam    TYPE fieldname
                                        p_tabnam    TYPE tabname
                                        p_justif    TYPE char1
                                        p_seltext   TYPE dd03p-scrtext_l
                                        p_out       TYPE char1
                                        p_tech      TYPE char1
                                        p_qfield    TYPE slis_fieldname
                                        p_qtab      TYPE slis_tabname.* Local declaration for field catalog
  DATA: wa_lfl_fcat    TYPE  slis_fieldcat_alv.  wa_lfl_fcat-row_pos        =  p_rowpos.     "Row
  wa_lfl_fcat-col_pos        =  p_colpos.     "Column
  wa_lfl_fcat-fieldname      =  p_fldnam.     "Field Name
  wa_lfl_fcat-tabname        =  p_tabnam.     "Internal Table Name
  wa_lfl_fcat-just           =  p_justif.     "Screen Justified
  wa_lfl_fcat-seltext_l      =  p_seltext.    "Field Text
  wa_lfl_fcat-no_out         =  p_out.        "No output
  wa_lfl_fcat-tech           =  p_tech.       "Technical field
  wa_lfl_fcat-qfieldname     =  p_qfield.     "Quantity unit
  wa_lfl_fcat-qtabname       =  p_qtab .      "Quantity table  IF p_fldnam = 'NTGEW'.
    wa_lfl_fcat-do_sum  = 'X'.
  ENDIF.
  APPEND wa_lfl_fcat TO i_fieldcat.
  CLEAR wa_lfl_fcat.
ENDFORM.                    " sub_fill_alv_field_catalog*&---------------------------------------------------------------------*
*&      Form  sub_populate_layout
*&---------------------------------------------------------------------*
*       Populate ALV layout
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_populate_layout .  CLEAR wa_layout.
  wa_layout-colwidth_optimize = 'X'." Optimization of Col widthENDFORM.                    " sub_populate_layout*&---------------------------------------------------------------------*
*&      Form  sub_populate_sort
*&---------------------------------------------------------------------*
*       Populate ALV sort table
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_populate_sort .* Sort on material
  wa_sort-spos = '01' .
  wa_sort-fieldname = 'MATNR'.
  wa_sort-tabname = 'I_EKPO'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO i_sort .
  CLEAR wa_sort.* Sort on plant
  wa_sort-spos = '02'.
  wa_sort-fieldname = 'WERKS'.
  wa_sort-tabname = 'I_EKPO'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO i_sort .
  CLEAR wa_sort.
ENDFORM.                    " sub_populate_sort*&---------------------------------------------------------------------*
*&      Form  sub_get_event
*&---------------------------------------------------------------------*
*       Get ALV grid event and pass the form name to subtotal_text
*       event
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_get_event .
  CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE
'SUBTOTAL_TEXT'.  DATA: l_s_event TYPE slis_alv_event.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 4
    IMPORTING
      et_events       = i_event
    EXCEPTIONS
      list_type_wrong = 0
      OTHERS          = 0.* Subtotal
  READ TABLE i_event  INTO l_s_event
                    WITH KEY name = slis_ev_subtotal_text.
  IF sy-subrc = 0.
    MOVE c_formname_subtotal_text TO l_s_event-form.
    MODIFY i_event FROM l_s_event INDEX sy-tabix.
  ENDIF.ENDFORM.                    " sub_get_event*&---------------------------------------------------------------------*
*&      Form  sub_alv_report_display
*&---------------------------------------------------------------------*
*       For ALV Report Display
*----------------------------------------------------------------------*
*       No Parameter
*----------------------------------------------------------------------*
FORM sub_alv_report_display .
  DATA: l_repid TYPE syrepid .
  l_repid = sy-repid .* This function module for displaying the ALV report
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = l_repid
      i_callback_top_of_page   = 'SUB_ALV_TOP_OF_PAGE'
      is_layout                = wa_layout
      it_fieldcat              = i_fieldcat
      it_sort = i_sort
      it_events                = i_event
      i_default                = 'X'
      i_save                   = 'A'
    TABLES
      t_outtab                 = i_ekpo
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
*    MESSAGE i000 WITH 'Error in ALV report display'(055).
  ENDIF.ENDFORM.                    " sub_alv_report_display*&---------------------------------------------------------------------*
*       FORM sub_alv_top_of_page
*---------------------------------------------------------------------*
*       Call ALV top of page
*---------------------------------------------------------------------*
*       No parameter
*---------------------------------------------------------------------*FORM sub_alv_top_of_page.                                   "#EC CALLED* To write header for the ALV
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_alv_top_of_page.
ENDFORM.                    "alv_top_of_page*&---------------------------------------------------------------------*
*&      Form  subtotal_text
*&---------------------------------------------------------------------*
*       Build subtotal text
*----------------------------------------------------------------------*
*       P_total  Total
*       p_subtot_text Subtotal text info
*----------------------------------------------------------------------*
FORM subtotal_text CHANGING
               p_total TYPE any
               p_subtot_text TYPE slis_subtot_text.
* Material level sub total
  IF p_subtot_text-criteria = 'MATNR'.
    p_subtot_text-display_text_for_subtotal
    = 'Material level total'(009).
  ENDIF.* Plant level sub total
  IF p_subtot_text-criteria = 'WERKS'.
    p_subtot_text-display_text_for_subtotal = 'Plant level total'(010).
  ENDIF.
ENDFORM.                    "subtotal_text
分享到:
评论
1 楼 jgtang82 2008-05-04  
过来踩一下

相关推荐

    alv表头合并样本程序

    ALV表头合并样本程序 ALV表头合并样本程序是指将多个ALV表头合并成一个表头的样本程序。这种程序通常用于大型企业的报表系统中,用于生成复杂的报表。 在这个样本程序中,我们可以看到,程序员使用了ABAP语言编写...

    sap ALV源程序

    【SAP ALV源程序】是SAP系统中用于生成和操作ALV(ABAP List Viewer)报表的示例代码。ALV是一个强大的表格显示工具,允许用户在ABAP环境中以表格形式展示数据,支持排序、过滤、导出等功能。在SAP系统中,ALV经常...

    定义ALV数据对象_程序相关

    文档主要呈现了ALV数据对象的实现与定义,实例代码,包括ALV打印格式,ALV 显示格式,ALV 排序内表,ALV 事件,ALV 表头等~~~

    abap_alv工具栏修改

    通过对ABAP_ALV工具栏的修改,开发者能够更好地定制应用程序的界面,提供更加直观和友好的用户体验。上述步骤不仅适用于初学者,也适用于有经验的开发者来优化现有项目或构建新功能。通过灵活运用这些技巧,可以显著...

    sample_tree alv

    ALV(Application List Viewer)是SAP提供的一种用于在ABAP应用程序中展示数据的通用框架。它为开发人员提供了创建列表、表格或树状结构等多种显示格式的能力。ALV具有高度的灵活性和可定制性,使得开发者能够轻松地...

    ALV程序模板

    根据提供的文件信息,本文将详细解析“ALV程序模板”的相关内容。ALV(Application List Viewer)是SAP系统中一种非常强大的列表展示工具,广泛应用于报告、查询等场景。接下来,我们将从类型池(Type Pools)、表...

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    - 自定义功能:可以通过添加增强或覆盖标准函数来扩展ALV功能,如添加自定义按钮、修改列样式等。 - 输出格式:ALV可以导出为多种格式,如CSV、Excel等,需要配置相应的输出选项。 - 性能优化:处理大量数据时,需...

    ABAP-ALV进阶

    ALV 菜单栏提供了多种功能,包括细节按钮、升序排列、降序排列、设置过滤器、打印预览、Microsoft Excel、字处理、本地文件、邮件收件人、图形和更改布局等。 2. ALV 标题栏 ALV 标题栏主要是用来显示一些抬头信息...

    WDA ALV程序创建显示自己做的记录步骤

    WDA ALV程序创建显示自己做的记录步骤 WDA(Web Dynpro ABAP)是一种基于ABAP语言的Web开发框架,ALV(Advanced List Viewer)是一种高级列表查看器,常用于数据展示和处理。下面将详细介绍WDA ALV程序创建显示自己...

    alv使用 alv使用

    编写ALV程序时,需要使用特定的类型池SLIS,其中包含了各种ALV所需的自定义数据类型和结构。例如,`slis_t_fieldcat_alv`用于定义字段特性,`slis_layout_alv`定义表格布局,`slis_fieldcat_alv`定义列属性。在SAP ...

    ABAP Code Sample for ALV Grid from Dynamically Created Internal Table

    在ABAP编程中,ALV Grid(List Viewer)是一种常用的数据展示工具,它可以将数据以表格形式呈现,具有良好的用户界面和交互性。本示例代码展示了如何动态创建内部表,并将其数据填充到ALV Grid中,适用于处理各种...

    [ABAP]Function实现ALV Table 二:ALV的弹出窗口形式

    在回调函数中,我们可以处理各种ALV事件,例如行选择、字段更改等。通过注册这些回调函数,我们可以扩展ALV的功能,比如添加按钮、修改列属性或者处理用户输入。 在创建弹出窗口形式的ALV时,我们还需要考虑窗口的...

    ALV.rar_SAP_abaP ALV_abap_alv_sap alv

    4. **设置事件处理**:你可以定义各种ALV事件的处理程序,如行选择、双击等。这使得ALV具有交互性,允许用户与数据进行交互。例如,添加行选择事件处理器: ```abap lo_salv_table-&gt;add_event_handler( EXPORTING...

    sap abap oo实现alv框可编辑

    handle_data_changed方法用于处理数据更改事件,例如用户修改了ALV框中的数据时的操作。 在定义了事件接收器类后,我们需要实例化这个类,并将其与ALV框对象关联起来。这样,ALV框对象就可以将事件传递给事件接收器...

    alv显示更改,删除,保存,批导入.docx

    标题中的“alv显示更改,删除,保存,批导入.docx”表明这是一个关于如何在SAP ABAP中实现ALV报告(ABAP List Viewer)的功能,包括显示、修改、删除和保存数据,以及批量导入的文档。描述中的代码片段展示了创建ALV...

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV)

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV) 图文并茂,详细介绍了Fuction ALV 和OO ALV的相关开发 [SAP ABAP开发技术总结]ALV详解:Function ALV(一) [SAP ABAP开发技术总结]ALV详解:Function ALV...

    SAP ALV标准范例

    * BALVSD01:简单的报表示例程序,使用了REUSE_ALV_VARIANT_DEFAULT_GET、REUSE_ALV_EVENTS_GET、REUSE_ALV_VARIANT_F4等FM。 * BALVSD11:使用了REUSE_ALV_FIELDCATALOG_MERGE和REUSE_ALV_LIST_DISPLAY等FM。 * ...

    ABAP OOALV学习文档

    ### ABAP OOALV 学习文档详析 #### 一、ABAP OOALV 概述 **ABAP OOALV**(Object-Oriented Application List Viewer)是一种用于SAP系统的高级列表显示技术,主要用于生成复杂的报表和列表视图。自R/3 4.6C版本起...

    ALV For WebDynpro

    "ALV for Web Dynpro"是将ALV的功能集成到Web Dynpro应用程序中,使得在Web环境中也能实现丰富的数据列格式化、排序、过滤和交互操作。本文将详细介绍如何在Web Dynpro中使用ALV,以及相关的设置步骤和技巧。 首先...

Global site tag (gtag.js) - Google Analytics