SAP报表开发

本文详细介绍了在SAP中开发ALV报表的步骤,包括需求分析、表的熟悉、报表开发流程、数据获取、数据处理以及ALV的展示。通过实例展示了如何创建程序、自定义输出表结构、声明所需表、选择屏幕设置、获取数据和处理数据,并最终通过ALV展示报表。
摘要由CSDN通过智能技术生成

一切开发都来自于需求,需求并不决定开发。当接到需求的时候,一定要进行可行性分析,是否可以进行开发,否则将会严重影响工作效率

1.SAP报表

  • List:原始技术,直接输出数据
  • ALV:简单到复杂,也可以面向对象
  • MS Office Excel:调用excel输出数据

SAP提供多种方式开发报表,这里只介绍常用的ALV报表,其他的大家有兴趣也可以去网上找资料研究一下

2.需求

1)假设有一个客户提出需求开发一个销售订单报表,报表应该包含的字段有:销售订单(so)、行项目、工厂、物料号、库存地点、需求数量、订单数量、创建日期、交货日期等等

2)接到需求进行可行性分析,如果SAP存在可满足需求的报表则不用进行开发或则进行修改;如果不存在则考虑报表开发是否可行,如果能做就准备开发,否则再和客户进行讨论。

3)假设可行性分析OK!

3、如何下手开发

1)从需求入手,分析需求

该报表主要是关于SO,这就是我们需要重点关注的地方

2)熟悉表

报表中的数据是怎么来的?当然并不是凭空产生的,需求中的销售订单、物料号等数据都将取自于数据库。所以得分析需要哪些表。当然你有可能不熟悉SAP中的表,你可以向有经验的同事请教。通过积累,让这些也成为你的东西

T-CODE:se16n可以查询透明表

这里写图片描述

以下是需要用到的一些表和一些重点关注字段,当然在实际中可能会涉及到更多的表和字段

1.【VBAK:销售凭证】
      字段:vbeln(销售凭证)、erdat(创建日期)、ername(创建者)、auart(销售类型)、bstnk(采购订单)、bsark(采购订单类型)、bstdk(采购日期)
2.【VBAP:销售凭证行项目】
       字段:vbeln(销售凭证)、posnr(项目)、matnr(物料)、werks(工厂)、lgort(库存地点)、erdat(销售订单创建日期)、PRCTR(利润中心)、aufnr(订单)
3.【VBPA:销售凭证合作伙伴】
          字段: vbeln(销售凭证)、posnr(项目)、kunnr(客户)、lifnr(供应商)
3.【MAKT:物料描述】
          字段:matnr(物料号)、spras(语言)、maktx(描述)
4.【LIPS:SD凭证交货项目数据】
          字段:vbeln(交货)、posnr(项目)、werks(工厂)、lgort(地点)、lfimg(交货数量)
5.【VBKD:销售凭证业务数据】
          字段: vbeln(销售凭证)、posnr(项目)、bstkd(PO)、inco1(国际贸易条件)、
6.【VBEP:销售凭证计划行数据】
          字段: vbeln(销售凭证)、posnr(项目)、ETENR(计划行)、edatu(交货日期)、ezit(到达时间)、wmeng(订单数量)、lmeng(需求数量)、bmeng(确认的数量)

4、报表开发

1)se38创建程序,创建完会有一行代码

2)自定义输出表结构

REPORT  zbsdr_025.
TABLES:vbak,mara,t001w,vbap,vbep.

*--------------类型池定义
TYPE-POOLS: slis.

DATA:t_fieldcat TYPE slis_t_fieldcat_alv,
     w_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
     t_layout TYPE slis_layout_alv.

*------------------定义输出表结构
TYPES:BEGIN OF ty_result,
     vbeln TYPE vbak-vbeln,   "so
     auart TYPE vbak-auart,   "销售类 型
     posnr TYPE vbap-posnr,   "项目
     bstkd TYPE vbkd-bstkd,   "po
     aufnr TYPE vbap-aufnr,
     werks TYPE vbap-werks,    "工厂
     lgort TYPE vbap-lgort,     "库存地点
     matnr TYPE vbap-matnr,    "物料
     maktx TYPE makt-maktx,
     kunnr TYPE vbpa-kunnr,    "客户
     lifnr  TYPE vbpa-lifnr,   "供应商
*    lfimg TYPE lips-lfimg,     "交货数量
     edatu  TYPE vbep-edatu,   "计划交货日期
     erdat  TYPE vbap-erdat,    "创建日期
     lmeng  TYPE vbep-lmeng,    "需求数量
     wmeng  TYPE vbep-wmeng,    "订单数量

 END OF ty_result.

*-----------------------------定义输出表和工作区域
DATA:t_result TYPE TABLE OF ty_result.
DATA:w_result TYPE ty_result.
(1)类型池:slis 。类型池顾名思义就是个池子,池子里面有很多的类型。开发ALV报表得用到slis里面的类型,所以要引用slis这个类型池
(2)DATA:主要用于声明变量,【TYPE】表示改变量参考的类型。在报表里一般都定义两个东西:内表和工作区。
(3)内表和工作区。内表可以理解为临时表,对内表操作不影响数据库中的表。如果频繁地从数据库中取数会导致效率降低,所以可以用内表临时存放数据;工作区只能存放一条数据,对数据进行处理,一般用于循环中。
DATA:t_fieldcat TYPE slis_t_fieldcat_alv,
     w_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
     t_layout TYPE slis_layout_alv.
(4) se11查看类型池,如果不知道变量参考的类型可以在这里查找,比如ALV报表字段(我们取名t_fieldcat)

这里写图片描述
这里写图片描述

(5)TYPES自定义结构,可以的字段可以来自于不同的表,一般先定义输出表结构(把报表需要展示的字段都放在一个结构里),当然为了后面的操作也要定义内表和工作区,参考的类型就是该结构
DATA:t_result TYPE TABLE OF ty_result.
DATA:w_result TYPE ty_result.

2)声明所需表


                
  • 47
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值