`

alv表报模版

    博客分类:
  • abap
 
阅读更多
abap开发报表模版,虽然接触SAP这么多年了但是一直在做java,以及java与sap集成,
只停留在abap边缘,没有真正的去学习这强大的SAP,现在开始必须慢慢深入了,加油吧。
**&---------------------------------------------------------------------*
**& Report  ZZHZALV
* *&
* *&---------------------------------------------------------------------*
* *&ALV模板代码
* *&create by 2010.12.29
* *&author zhanghz
* *&---------------------------------------------------------------------*

REPORT  zzhzalv.
 TYPE-POOLS: slis.
*************************************************************************
* *TABLES
* ************************************************************************
 TABLES:mara.

*************************************************************************
* *internal table
* ************************************************************************
 DATA:BEGIN OF i_list OCCURS 0,
       matnr LIKE mara-matnr,
       vpsta LIKE mara-vpsta,
       laeng LIKE mara-laeng,
      END OF i_list.

*************************************************************************
* *ALV data type
* ************************************************************************
 DATA: l_repid LIKE sy-repid.
 DATA: wa_fieldcat TYPE slis_fieldcat_alv,
       gt_fieldcat TYPE slis_t_fieldcat_alv.
 DATA: g_list_top_of_page TYPE slis_t_listheader.
 CONSTANTS:c_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
 l_repid = sy-repid.


*************************************************************************
* *SELECT-SRECCN
* ************************************************************************
 SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1."选择屏幕块

SELECT-OPTIONS: zmatnr FOR mara-matnr."范围的定义
 selection-screen skip 1."跳过一行
 parameters: werks like marc-werks obligatory."单值的定义
 parameters: pp(10) matchcode object ZBMBZ."收索帮助,zbmbz为收索帮助的名称
 parameters: a1 as checkbox."单选框
 parameters: b1 radiobutton group g1,"复选框
             b2 radiobutton group g1.

SELECTION-SCREEN END OF BLOCK bl1.
 selection-screen comment 2(20) txt."选择屏幕的注释
 at selection-screen on help-request for werks.
 message 'ssss' type 'I'.
* ************************************************************************
* *SELECT-OF-SELECTION
* ************************************************************************
 START-OF-SELECTION.
   PERFORM sub_get_data.
   IF sy-subrc <> 0 .
     MESSAGE '您查找的数据未在数据库中找到,请重新输入!' TYPE 'I' .
   ELSE.
* *    PERFORM sub_process_data .
     PERFORM sub_display_data .
   ENDIF.
* *************************************************************************
* **END-OF-SELECTION
* *************************************************************************
 END-OF-SELECTION .
* **&--------------------------------------------------------------------*
* **&      Form  top_of_page 显示标题用的
* **&--------------------------------------------------------------------*
 FORM top_of_page. "显示标题用的

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
     EXPORTING
       it_list_commentary = g_list_top_of_page.

ENDFORM.                    " top_of_page

**&---------------------------------------------------------------------*
* *&      Form  sub_get_data 取得数据
* *&---------------------------------------------------------------------*
* *       text
* *----------------------------------------------------------------------*
 FORM sub_get_data.

  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE i_list
  FROM mara WHERE matnr IN zmatnr.

ENDFORM.                    "sub_get_data

**&---------------------------------------------------------------------*
* *&      Form  sub_process_data 处理数据
* *&---------------------------------------------------------------------*
* *       text
* *----------------------------------------------------------------------*
 FORM sub_process_data.

ENDFORM.                    "sub_process_data

**&---------------------------------------------------------------------*
* *&      Form  sub_display_data 显示数据
* *&---------------------------------------------------------------------*
* *       text
* *----------------------------------------------------------------------*
 FORM sub_display_data.
* ******initial datatab
   DATA: l_i_output LIKE i_list OCCURS 0 WITH HEADER LINE.  "i_list读取数据表

*****initial title
   PERFORM build_comment_summary TABLES l_i_output
     USING g_list_top_of_page[].

****initial field category
   DATA: l_i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
   PERFORM init_alv_summary TABLES l_i_fieldcat.
* ****initial others
   DATA: l_s_layout TYPE slis_layout_alv.
   l_s_layout-colwidth_optimize = 'X'."字符适合宽度
* *  l_s_layout-zebra = 'XXX'."行的颜色

****initial event
   DATA:l_events TYPE slis_t_event.
   PERFORM build_eventtab USING l_events[].

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program = l_repid
       i_default          = 'X'
       i_save             = 'X'
* *     i_layout-f2code    = ' '
       i_callback_user_command  =  'USER_COMMAND'
       it_events          = l_events[]
       is_layout          = l_s_layout
       it_fieldcat        = l_i_fieldcat[]
     TABLES
       t_outtab           = i_list"读取数据的内表,显示在alv中
     EXCEPTIONS
       program_error = 1
       other = 2 .

ENDFORM.                    "sub_display_data
* *&---------------------------------------------------------------------*
* *&      Form  build_eventtab
* *&---------------------------------------------------------------------*
 FORM build_eventtab USING v_events TYPE slis_t_event.

  DATA: l_event TYPE slis_alv_event.
   "Returns table of possible events for a list type

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
     EXPORTING
       i_list_type = 0
     IMPORTING
       et_events   = v_events.            "List type (0,1,2,3)

  DATA: l_tabix LIKE sy-tabix.
   CLEAR l_event-form.
   READ TABLE v_events WITH KEY name = slis_ev_top_of_page
         INTO l_event.

  l_tabix = sy-tabix.
   IF sy-subrc = 0.
     MOVE c_formname_top_of_page TO l_event-form.
     MODIFY v_events FROM l_event INDEX l_tabix.
   ENDIF.

ENDFORM.                    " build_eventtab

**&---------------------------------------------------------------------*
* *&      Form  build_comment_summary
* *&---------------------------------------------------------------------*
 FORM build_comment_summary TABLES v_i_output STRUCTURE i_list   "读取数据的内表
                      USING v_list_top_of_page TYPE slis_t_listheader.

  DATA: l_line TYPE slis_listheader.
   CLEAR l_line.
   l_line-typ  = 'H'.
   l_line-key  = ''.
   l_line-info = '我的测试表'.
   APPEND l_line TO v_list_top_of_page.
 ENDFORM.                    " build_comment_summary

**&---------------------------------------------------------------------*
* *&      Form  init_alv_summary
* *&---------------------------------------------------------------------*
 FORM init_alv_summary TABLES v_i_fieldcat TYPE slis_t_fieldcat_alv.

  REFRESH v_i_fieldcat.
   CLEAR v_i_fieldcat.
   v_i_fieldcat-fieldname     = 'MATNR'.
   v_i_fieldcat-tabname       = 'I_LIST'.
   v_i_fieldcat-seltext_m     = '物料号123'.
   v_i_fieldcat-key           = 'X'.
* *  v_i_fieldcat-ref_fieldname = 'MATNR'. "收索帮助
* *  v_i_fieldcat-ref_tabname   = 'MAKT'.
   APPEND v_i_fieldcat.

  CLEAR v_i_fieldcat.
   v_i_fieldcat-fieldname     = 'VPSTA'.
   v_i_fieldcat-tabname       = 'I_LIST'.
   v_i_fieldcat-seltext_m     = '维护全部物料状态'.
* *    v_i_fieldcat-outputlen     = '20'."列的字符宽度
* *    v_i_fieldcat-edit          = 'X'."可编辑的属性
   APPEND v_i_fieldcat.

  CLEAR v_i_fieldcat.
* *  v_i_fieldcat-decimals_out = '0'.  "去掉该字段小数点后的0
* *  v_i_fieldcat-EMPHASIZE  = 'C700'. "给该字段加上颜色
* *  v_i_fieldcat-just = 'L'.  "对齐方式

  v_i_fieldcat-fieldname     = 'LAENG'.
   v_i_fieldcat-tabname       = 'I_LIST'.
   v_i_fieldcat-seltext_m     = '长度'.

*  v_i_fieldcat-do_sum = 'X'.  "总计该列的值
   APPEND v_i_fieldcat.
 ENDFORM.                    " init_alv_summary
* *&--------------------------------------------------------------------*
* *&      Form  USER_COMMAND
* *&--------------------------------------------------------------------*
* *       text
** *---------------------------------------------------------------------*
* *      -->UCOMM      text
* *     -->SELFIELD   text
* *---------------------------------------------------------------------*
 FORM user_command USING ucomm LIKE sy-ucomm               "接收用户的命令
   selfield TYPE slis_selfield.
   READ TABLE i_list INDEX selfield-tabindex.
   CHECK sy-subrc = 0.
   CASE ucomm.
     WHEN '&IC1'.  "&DATA_SAVE响应保存键
       CASE selfield-sel_tab_field.
         WHEN  'I_LIST-MATNR'. "这里必须大写
           SET PARAMETER ID 'BES' FIELD i_list-matnr .          "参数id为aun,根据id给屏幕传参数
           CALL TRANSACTION  'ME23N' AND  SKIP  FIRST  SCREEN."调用事务位va03的事务且跳过第一个屏幕
* **************************************显示第二层ALV********************************
         WHEN 'I_LIST-VPSTA'.
           LOOP AT I_LIST INTO I_LIST WHERE VPSTA = I_LIST-VPSTA.
           ENDLOOP.
          PERFORM frm_buildfieldcat_lips.
          PERFORM frm_display_lips.
       ENDCASE.
   ENDCASE.
 ENDFORM.                    "USER_COMMAND

**&---------------------------------------------------------------------*
* *&      Form  frm_buildfieldcat_lips
* *&---------------------------------------------------------------------*
* *       text
* *----------------------------------------------------------------------*
* *  -->  p1        text
* *  <--  p2        text
* *----------------------------------------------------------------------*
 FORM frm_buildfieldcat_lips .
   CLEAR wa_fieldcat.
   REFRESH gt_fieldcat[].
   DEFINE add_field.  "定义宏
     wa_fieldcat-fieldname = &1.
     wa_fieldcat-reptext_ddic = &2.
     wa_fieldcat-hotspot = &3.
     append wa_fieldcat to gt_fieldcat.
   END-OF-DEFINITION.

  add_field 'MATNR' '物料号tc  ' 'X'.
   add_field 'VPSTA' '描述' ' ' .
   add_field 'LAENG' '长度' ' ' .
 ENDFORM.                    " frm_buildfieldcat_ekpo
* **&---------------------------------------------------------------------*
* **&      Form  frm_display_lips
* **&---------------------------------------------------------------------*
* **       text
* **----------------------------------------------------------------------*
* **  -->  p1        text
* **  <--  p2        text
* **----------------------------------------------------------------------*
 FORM frm_display_lips .
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program    = l_repid
       it_fieldcat           = gt_fieldcat
       i_screen_start_column = 20
       i_screen_start_line   = 30
       i_screen_end_column   = 80
       i_screen_end_line     = 40
     TABLES
       t_outtab              = i_list."第二层alv显示数据的内表

ENDFORM.                    " frm_display_lips

 

分享到:
评论

相关推荐

    ABAP ALV 报表基础模板(两种)

    ### ABAP ALV 报表基础模板(两种) #### 第一种:普通模板 在 SAP 的 ABAP 开发环境中,ALV(Application List Viewer)是一种常用的技术来展示数据列表。本篇文档将详细介绍一种用于创建 ABAP ALV 报表的基础...

    ALV OO 模板

    ### ALV OO模板详解 #### 一、ALV OO(Object-Oriented)概述 ALV(Application List Viewer)是SAP系统中用于显示列表数据的一种标准工具,它提供了丰富的功能,如排序、筛选、分组等。在ABAP语言中,ALV有两种...

    ALV程序模板

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

    ALV开发基本模板.txt

    SAP ABAP开发,ALV开发标准模板:程序开发中用到的表和变量声明,ALV数据组,类型池,定义ALV显示的字段列及其描述等属性,选择屏幕,获取数据,ALV 输出(设置 ALV 输出格式、设置 ALV 输出字段和ALV 显示)

    ALV报表 abap报表

    ALV报表.abap报表 ALV(Application List Viewer)是一种常用的ABAP报表工具,通过它可以快速生成报表,具有良好的可读性和交互性。本文将通过一个实际的ALV报表示例,详细介绍ALV报表的编写过程和相关技术要点。 ...

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,这表明我们将重点关注ALV的基本概念、数据格式以及如何通过REUSE_ALV_GRID_DISPLAY_LVC函数来实现ALV的显示。 ALV格式通常涉及如何组织...

    ABAP OOALV报表开发

    ABAP OOALV报表开发,定义变量,选择屏幕定义,创建类,调用函数

    [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...

    ABAP-ALV进阶

    "ABAP-ALV进阶知识点详解" ABAP-ALV进阶是指在SAP系统中使用ABAP语言开发的高级列表查看器(ALV)。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ...

    alv使用 alv使用

    ALV,全称ABAP List Viewer,是一种在SAP系统中用于展示数据的标准组件。它允许开发者创建用户友好的表格界面,以统一的形式展示数据,同时提供了丰富的交互功能。ALV分为两种主要类型:简单列表(SIMPLE LIST)和...

    ABAP OOALV学习文档

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

    在ALV里编写回车事件

    ### 在ALV里编写回车事件 #### 一、引言 在开发基于ABAP的业务应用程序时,经常需要处理用户界面(UI)中的各种事件,以实现与用户的交互。其中,ALV(Application List Viewer)是SAP ABAP平台上一个强大的列表...

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

    在ABAP(Advanced Business Application Programming)中,ALV(ABAP List Viewer)是SAP提供的一种用于显示数据表的标准化接口。本篇我们将深入探讨如何使用Function来实现ALV Table的弹出窗口形式,这对于创建用户...

    ALV.rar_SAP_abaP ALV_abap_alv_sap alv

    在SAP系统中,ALV(Accelerated List Viewer)是一种用于数据展示的工具,它提供了标准的表格形式来显示数据库查询结果。ALV是ABAP编程的重要组成部分,它简化了复杂数据的可视化处理。本篇将深入探讨如何通过ABAP...

    OOALV常用功能完整简例

    标题中提及的“OOALV常用功能完整简例”,描述中说明了该简例包含的内容:热键单击、双击、帮助、编辑和自定义工具条等。OOALV是指面向对象的ALV,它是在SAP系统中常用的报表输出组件,用于将数据以表格形式展示。在...

    SAP ALV Grid资料整理 (很全面)

    SAP ALV Grid 资料整理(很全面) SAP ALV Grid 是一种灵活的工具,用于显示列表,并提供了常见的列表操作通用函数,可以通过自定义选项来增强其功能。ALV Grid 控件可以创建非层次的友好交互式报表,是一个基于...

    OO ALV 开发 实例 SAP

    面向对象的ALV开发在SAP ABAP环境中是一种先进的数据展示技术,相比于传统的函数模块`REUSE_ALV_GRID_DISPLAY`,面向对象的方式提供了更灵活、更可扩展的解决方案。通过利用`CL_SALV_TABLE`类,开发者可以构建更加...

    sap alv 去掉多余按钮

    在SAP系统中,ALV(Application List Viewer)是一种用于展示和处理大量数据的强大工具,它不仅能够以列表形式展示数据,还提供了多种交互功能,如排序、筛选、分组等。然而,在某些应用场景下,ALV界面中预设的一些...

    ABAP开发ALV中自定义按钮实现

    在ABAP开发中,ALV(Accelerated List Viewer)是一种常用的数据展示工具,它提供了灵活的表格布局和交互性。用户通常需要对ALV进行定制,以满足特定的需求,例如添加自定义按钮来实现数据的打印或导出到Excel。本篇...

    SAP ABAP ALV分页显示

    ### SAP ABAP ALV 分页显示技术解析 #### 核心知识点:SAP ABAP ALV 分页显示 本篇文章将深入分析一个基于SAP ABAP的ALV(Application List Viewer)分页显示的实现方法。ALV是SAP GUI中用于展示表格数据的一种...

Global site tag (gtag.js) - Google Analytics