ABAP中简单报表ALV实现

文章目录

  • 前言
  • 1、SAP报表组成简述
  • 2、创建SAP报表
  • 3.查询条件界面
  • 4.程序初始化
  • 5、程序的入口(START-OF-SELECTION)
  • 6、ALV展示
    • 6.1查询拼装数据
    • 6.2 ALV设置
    • 6.3 调用REUSE_ALV_GRID_DISPLAY_LVC
  • 总结


前言

SAP中会经常开发报表,那么一个简单的ALV报表是怎么实现的,话不多说了,这里直接演示了。


1、SAP报表组成简述

一个简单SAP报表一般是由,字典结构,字段,事件,子例程,屏幕,事务码

2、创建SAP报表

输入事务码:SE38,打开如下图所示的界面,报表程序命名一般是由规范约束的。例如开发SD模块,一般是以ZSD开头,开发财务模块的,就是以ZFI开头,RP代表意思是报表report的缩写,后面是按流水号。
ABAP中简单报表ALV实现_第1张图片
我一般先会点击显示,看当前命名的程序是否存在,和他人程序是否重名,如果不存在,再点击创建按钮。
ABAP中简单报表ALV实现_第2张图片

3.查询条件界面

SAP报表一般都是有查询条件界面,界面的查询字段是怎样布局的。
ABAP中简单报表ALV实现_第3张图片

ABAP中简单报表ALV实现_第4张图片

SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE title.

"SELECT-OPTIONS s_appo FOR ztpay-applyorgcode."申请组织代码
PARAMETERS: s_appo  LIKE ztats-orgcode.
SELECT-OPTIONS s_payma FOR ztpay-paymadedate."收款确认日期
SELECT-OPTIONS s_payda FOR ztpay-paydate."应收日期
SELECT-OPTIONS s_srco FOR ztpay-srcoutsystemcode."来源对接系统
"SELECT-OPTIONS s_ype FOR ztpay-paytypecode."交易类型
PARAMETERS: s_ype   LIKE ztfdt-paytypecode.
SELECT-OPTIONS s_opc FOR ztpay-oppobjectcode."收方对象代码
SELECT-OPTIONS s_bukrs FOR ztpay-bukrs."公司代码
SELECT-OPTIONS s_gjahr FOR ztpay-gjahr."会计年度

SELECTION-SCREEN END OF BLOCK rad1.

查询界面字段转化为中文,点击菜单栏的转到按钮,然后选择文本元素,选择文本
ABAP中简单报表ALV实现_第5张图片
ABAP中简单报表ALV实现_第6张图片

4.程序初始化

这个可有可无的。INITIALIZATION.事件,这个使用情况一般是在程序在开始前,进行一些初始化东西。例如通用帮助,界面的描述
在这里插入图片描述

5、程序的入口(START-OF-SELECTION)

很多初学者看SAP报表,不知道如何下手,先看哪里。一个SAP报表程序一般很长的,打开一看,好几千行的代码,就懵逼了。ABAP和Java一样,也有方法的入口,这里就是START-OF-SELECTION,这个是程序的开始事件。我个人习惯看一个程序,先点上面的工具栏的显示对象列表按钮,然后左侧就会出来整个程序目录结构
ABAP中简单报表ALV实现_第7张图片
ABAP中简单报表ALV实现_第8张图片

6、ALV展示

6.1查询拼装数据

先根据查询界面的查询条件,查询组装数,放到内表中。在这里,我放到了LT_ITAB中了

ABAP中简单报表ALV实现_第9张图片
ABAP中简单报表ALV实现_第10张图片

6.2 ALV设置

数据查询放到内表中后,在调用另一个子例程
ABAP中简单报表ALV实现_第11张图片
内表中英文字段名称和这里要保持一致,是一一对应的。create_fieladcat是另一个子例程(把子例程认为一个函数就行,比较好理解),这个作用是设置字段的样式。
ABAP中简单报表ALV实现_第12张图片
上代码

FORM display_alv .
  PERFORM create_fieldcat USING:
*        FIELDCAT 'CHECKBOX' '选择' '4' 'X' '' '' '' 'X' '' '' '',
        fieldcat 'NOTECODE' '资金系统单据号' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'APPLYORGCODE' '组织代码' '8' '' '' '' '' '' '' '' '' '',
        fieldcat 'SRCOUTSYSTEMCODE' '来源对接系统' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'SRCNOTECODE' '来源单据号' '12' '' '' '' '' '' '' '' '' '',
        fieldcat 'DEPTCODE' '部门代码' '4' '' '' '' '' '' '' '' '' '',
        fieldcat 'PAYDATE' '应付日期' '8' '' '' '' '' '' '' '' '' '',
        fieldcat 'PAYMADEDATE' '收款确认日期' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'PAYTYPECODE' '交易类型' '8' '' '' '' '' '' '' '' '' '',
        fieldcat 'V_TEXT' '交易类型描述' '4' '' '' '' '' '' '' '' '' '',
        fieldcat 'PURPOSE' '用途' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'OURBANKACCOUNTNUMBER' '付方账号' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'OURAMOUNT' '付方金额' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'OURCURCODE' '货币' '10' '' 'ALPHA' '' '' '' '' '' '' '',
        fieldcat 'OPPOBJECTCODE' '收方对象代码' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'OPPOBJECTNAME' '收方名称' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'BELNR' '凭证编号' '10' '' '' '' '' '' '' '' '' 'X',
        fieldcat 'BSTAT' '凭证状态' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'BSTATW' '凭证状态文本' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'PAYINFO' '付款状态描述' '10' '' '' '' '' '' '' '' '' '',
        fieldcat 'BUKRS' '公司代码' '40' '' 'ALPHA' '' '' '' '' '' '' '',
        fieldcat 'GJAHR' '会计年度' '10' '' '' '' '' '' '' '' '' ''.
  layout-cwidth_opt = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program      = sy-repid
      it_fieldcat_lvc         = fieldcat
      is_layout_lvc           = layout
*     I_GRID_SETTINGS         = I_GRID_SETTINGS
      i_save                  = 'A'
      i_callback_user_command = 'USER_COMMAND'
*     I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
    TABLES
      t_outtab                = lt_itab.

ENDFORM.

create_fieladcat,各个字段设置作用,这里做个简单介绍详细的看LVC_S_FCAT这个结构
第一个字段:fieldname是英文字段名称,
第二个字段:reptext是描述,
第三个字段:outputlen是输出长度,
第四个字段:edit是否编辑,如果先让此字段能修改,则标记为“X”,默认是空。
第八个字段:checkbox是否选择框,前面会多一个方框
第十二字段:hotspot,控制敏感,默认是空,如果标记敏感,则标记“X”,一般这个用于链接,链接到另一个界面上。
例如:销售订单字段可以标记敏感字段,点击一下,可以链接到销售订单界面上,当然只是设置敏感是不能链接过去的,要稍微写一下程序的。

ABAP中简单报表ALV实现_第13张图片

FORM create_fieldcat  USING p0 TYPE lvc_t_fcat p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12.
  DATA: l_alv_filed  TYPE lvc_s_fcat.
  l_alv_filed-fieldname     =  p1.
  l_alv_filed-reptext       =  p2.
  l_alv_filed-outputlen     =  p3.
  l_alv_filed-edit          =  p4.
  l_alv_filed-convexit      =  p5.
  l_alv_filed-key           =  p6.
  l_alv_filed-do_sum        =  p7.
  l_alv_filed-checkbox      =  p8.
  l_alv_filed-no_zero       =  p9.
  l_alv_filed-inttype       =  p10.
  l_alv_filed-intlen        =  p11.
  l_alv_filed-hotspot       =  p12.
  APPEND l_alv_filed TO p0.
  CLEAR l_alv_filed.
ENDFORM.

ABAP中简单报表ALV实现_第14张图片

6.3 调用REUSE_ALV_GRID_DISPLAY_LVC

ABAP中简单报表ALV实现_第15张图片


总结

以上就是今天要讲的内容,本文仅仅简单介绍了SAP的alv的使用,后续继续完善alv自定义按钮事件,点击事件,双击事件。

你可能感兴趣的:(ABAP,abap,sap)