ABAP 编写第一个报表程序

0.前言

米娜桑大家好,2024年的9月,我开始了SAP之旅。

你被暂时分配至负责MM模块的开发,但此时的你对于SAP、ABAP程序一无所知。。。

刨去了解相关背景知识的过程,我们先来创建一下自己的第一个ABAP程序吧。

1.第一个ABAP程序

一般公司会有四个不同环境的SAP:测试系统、独立系统、开发系统、生产系统。进行开发的时候需要特定的开发账号和权限。

开发的步骤一般是:编写代码->检查代码->激活代码->测试代码->代码上线

编写代码:初学者一般会进行报表开发和接口开发。

报表开发的事务代码(T-CODE):SE38。接口开发的事务代码:SE37。

让我们登录SAP,进去界面看看

点击独立系统,这种是完全独立于公司的一个系统,就算玩坏了也没有什么影响,一般是进入这个环境开发。

输入用户名和密码就能进入系统了,一般公司会为你分配的,第一次进入一般会让你修改密码。

首页就这么水灵灵地出现了:

左上角是输入事务代码的地方,输入事务代码敲击回车后就会进入相应的开发功能模块。

一些常用的事务代码:

SE37

ABAP/4函数编辑器

SE38

ABAP编辑器

SE91

消息维护

SE16

数据浏览器与维护

SE16N

常规表维护

SE80

资源管理器

XK01 

创建供应商代码

ME11

创建采购信息记录

ME21N

创建采购订单

ME29N 

审核采购订单

MB01

购订单收货

MIRO

采购订单发票校验

输入事务代码如果系统提示没有该权限,说明账号没有配好,不要慌,联系mentor帮忙添加权限就好了。

让我们输入事务代码SE38,创建ABAP程序

这里的你可以直接输入程序名,如果你输入已经存在的程序,点击显示就能看到程序的源代码了,点击修改就可以进行编程,不过有时候你没有权限去修改其他人的程序,只能够看它们的源代码。

如果你想创建一个新程序,输入程序名看它是否存在,如果已存在的话就需要修改名称,如果不存在的话点击创建就能进入编辑页面了:

检查代码:代码写完后需要检查,这里我们要用到界面上方的按钮们:点击框中第一个按钮,系统就会检查程序中的代码的语法是否正确,但是逻辑问题不会帮你检查是否符合,需要自己后续debug,如果语法没有错误的话,点击第二个按钮进行激活,代码激活后,我们的代码才能被系统识别,之后才能运行。

如果是开发环境和测试环境一体的情况,直接运行即可测试,如果是分开的情况,可以登录测试环境进行测试。

我们可以先用事务代码SE93创建事务代码,因为用户不能够进入我们的开发程序,而是通过事务代码进入我们的报表页面。创建一个和程序名相同的事务代码后,用户就能通过此事务代码进入报表了。

记得一定要选择第二项,不然主界面输入事务代码后,不能够正确运行程序。

然后输入我们程序的代码名称就好了。

关于代码的上线,我在我的另一篇帖子中有详细介绍,这里就不多说了。上传之后,用户就能在正式机使用我们上传的代码了!

2.hello world

让我们再次输入事务代码SE38,创建ABAP程序,LET'S 编程:

程序中的第一个非注释行以REPORT开头,后面是程序名称,以句点结尾:

语法:REPORT [Program_Name].

WRITE的作用类似于C语言中的printf,用来打印

语法:WRITE 'Hello World!'.

      WRITE: 'Hello',

       'World'.

代码注释:选中代码块,按下ctrl + ,

取消注释:选中代码块,按下ctrl + .

*:行注释代码

“:选择注释代码

基本的语法大概就是这些,点击检查按钮,确认没有语法错误:

点击激活按钮:

点击运行按钮,helloworld就这么水灵灵地出现了:

这就是我们的第一个ABAP程序了,接下来试着做一些简单的开发报表吧。

3.开发报表

恭喜你已经会创建ABAP程序了,让我们自己开发一个自己的报表界面吧。

开发类型:创建库存数据汇总表

运行效果:

报表界面如下:

开发步骤:

该需求是将多个字段从各个表中查询出来,并且按照不同的方式进行汇总求和,同时ALV要自己定义按钮使之能够在不同的ALV界面进行切换。

事务代码se38进行开发

敲击回车进入界面,输入一个新的自建程序流水号码,注意:必须使用Z开头。如果程序命名重复,则会提示创建失败。

 填写完title后,选择程序的属性为可执行程序,点击保存:

在实际开发过程中,需要在属性-包中选择相应的模块,不同的公司的包可能有不同,然后点击保存按钮,程序开发完成之后可以进行上线到正式环境,如果是自测程序,则可以点击“”本地对象“”按钮,后面不能上线到正式环境。

接下来就进行我们的程序开发吧:

1)使用关键字 TABLES 声明本次开发设计到的表

在选择屏幕的字段参照、ALV的展示参照时会用到,按照需求我们需要用到表格MCHB、MCH1、MARA表。

使用关键字TYPES 创建ALV报表结构,怎么说呢,这个就相当于一个容器,装了所有需要展示的数据,同时规定了装这些数据的格式,确保他们展示出来的数据类型使我们需要的,不知道我这样形容是否够直白。

使用关键字DATA 创建内表工作区和结构,内表像是一个大容器,里面装了很多条数据,而工作区只能装一条数据,工作区类似于展示框,把每条数据装在工作区这个展示框里,进行判断和处理,等处理完数据符合要求了,再把数据拿出来,换下一条数据进行处理。

设计选择屏幕

选择屏幕是用于给用户前端输入数据,后台根据用户输入的数据进行数据筛选的依据。常用的有两种,单选和多选:SELECT-OPTIONS 是多选(是一个值范围); PARAMETERS 是单选,可以通过这样的方式在选择屏幕提前预设好要输入的数据,为用户使用提供方便。

设计事件的调用顺序(先取数,再赋值,最后展示)SELECTION

取数子程序form,这一子程序的编写主要是看用户的需求了,没有什么技术上的难度,主要是要判断好用到的事哪个表的哪个字段,关于表字段的查询,也可以查看我的另一篇帖子。下面简单介绍一下用到的相关语法:

collect:在非数值字段相同的情况下,汇总字段

append , modify , insert: 追加一条数据,更新一条数据,插入一条数据

clear:初始化内表

SORT:内表排序

删除重复的数据:

SORT ITAB(内表名) BY 重复字段名.

DELETE ADJACENT DUPLICATES FROM itab(内表名) COMPARING针对的字段.

展示ALV数据子程序form

按钮子程序form

这里要注意的是,按钮的创建,和文本元素的编辑

关于按钮的创建,也可以参考我的另一篇帖子

而文本元素则是这样编辑的:

文本元素的编辑则是在这个界面进行编辑的:

转到->文本元素->选择文本

然后运行无误后,代码就这么水灵灵地写完了。

4.战术总结

完成了这一个报表,总算能松一口气,虽然大部分代码都是网上缝缝补补修修改改以及mentor进行修改才最后能够正常运行的,很多地方写的非常冗余而且命名啥的很不规范。以后还有千千万万个报表等着我去开发,以及还有其他我目前没有见识过的工作内容。唉工作好难呀。

总结一下自己遇到的bug和疑问吧。

2)select语句中涉及表中的数据元素的时候要用~

3)alv界面显示不了

原因是因为那时候自己还没有编辑按键,而代码中有定义了按键,导致alv界面进入后无法退出。

4)运行的时候显示程序超时

可能是因为是公司的数据太多了,再加上自己的代码写的比较低效,所以可以筛选一下数据,把那些全都是0的数据清除掉

5)报错statement is not accessible

6)还有一些七七八八的取数逻辑的报错就不写了。

以上就是我的第一个报表程序开发的全过程了,作为一个刚入行三个月的小白,还有很多东西需要学习,有些东西写的不够详尽或者有误的话还请见谅,希望各位友友能够多多交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值