`

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

 

分享到:
评论

相关推荐

    ALV程序模板

    ALV程序模板 

    ALV OO 模板

    ALV OO 模板

    ALV开发基本模板.txt

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

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

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

    ALV报表 abap报表

    详细介绍ALV的极好的例子 abapalv报表的极好的例子啊

    alv使用 alv使用

    alv使用alv使用 alv使用alv使用alv使用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总结 ALV总结

    SAP ALV总结ALV总结ALV总结ALV总结ALV总结

    在ALV里编写回车事件

    在ALV里编写回车事件,通过回车操作数据!

    sap alv 去掉多余按钮

    alv去掉多余按钮 alv去掉多余按钮 alv去掉多余按钮

    sap abap oo实现alv框可编辑

    "SAP ABAP OO实现ALV框可编辑" 在SAP ABAP中,实现ALV框的可编辑功能是非常重要的。本文将详细介绍如何使用面向对象编程(Object-Oriented Programming,OOP)在SAP ABAP中实现ALV框的可编辑功能。 首先,我们需要...

    ALV_GRID介绍

    ALV_GRID介绍, 不错的内容 一.ALV介绍 The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中...

    ABAP OOALV学习文档

    ABAP OOALV报表开发,定义变量,选择屏幕定义,创建类,调用函数,是学习OOALV很不错的学习资料

    SAP OO ALV技术介绍.pdf

    SAP OO ALV技术介绍 SAP OO ALV技术是SAP系统中的一种报表控件类,通过调用cl_gui_alv_grid类的方法可以实现ALV报表的显示。OO ALV技术可以满足大多数ALV需求,但有时需要与后续的屏幕开发等集中在一个屏幕中,或者...

    alv abap sap 总结

    alv abap sap 总结 alv abap sap 总结 alv abap sap 总结

    sap alv简单案例

    SAP搭建的简单的alv模式 DATA: BEGIN OF wa_alv, cheid LIKE zqm_zjjgitem-cheid, "产品检验ID batno LIKE zqm_zjhead-batno, "批号 werks LIKE zqm_zjhead-werks, "工厂 chcer LIKE zqm_zjhead-chcer, "检验员 ...

    SAP ABAP ALV 详解

    ALV 详解

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用

    ALV导出excel时窜行

    ALV 导出 Excel 时窜行问题解决方案 在 SAP 中,当我们使用 ALV 导出数据到 Excel 时,经常会遇到串行的问题。今天,我们将讨论导致串行的两个主要原因,并提供相应的解决方案。 原因一:特殊字符 在 SAP 中,...

    sap的alv开发应用

    sap的alv文档。里面有模板及一个事例。alv规范和入门到精通的必备。

Global site tag (gtag.js) - Google Analytics