时间
比如 时间范围为 2023年 2月-6月
本年本期:2023年 2月-6月之间
本年累计:2023年 1月-6月金额之和
上年同期:2022年 2月-6月
上年累计:2022年 1月-6月
比如 当前时间为2023年 8月
本年本期:2023年 8月
本年累计:2023年 1月-8月金额之和
上年同期:2022年 8月
上年累计:2022年 1月-8月
表概念
1、数据字典:ABAP数据字典是定义和管理数据元素及数据库元素的中心工具,
域(Domain),数据元素(Data Element),结构(structure),透明表(Transparent Table),表类型等
2、域:优先声明,用户定义字段的技术属性,包括数据类型、格式、长度、初始化值等。
域在定义时刻使用SAP的预定义类型
域定义了数据元素的技术属性
其中预定义 数据类型 最常用的是CHAR(字符),DEC(金额),INT4(整型), NUMC(数字字符),CURR(货币), CUKY(货币单位), QUAN(数量), UNIT(数量单位)
3、数据元素 Date Element:数据元素以Domain作为参考对象,继承Domain的所有属性,也可以在Domain的基础上重新定义相关长度,小数位等属性。一个域可以被多个数据元素引用。
附带了搜索帮助、parameter ID 标签描述 类型是根据域来决定
4、结构:结构是字段的集合,可以嵌套其它结构,表类型。我们在系统中实际创建一个表示销售订单行项目的结构。
5、表类型:表类型的行引用一个结构,和透明表类似,但只是声明,不实际保存数据。我们在系统中实际创建一个包含销售订单行项目的表类型。
6、透明表:透明表存储实际数据,并且在数据库底层有对应的表。我们在系统中实际创建一个透明表。
7、视图:视图是一个或者多个数据库表的逻辑表现形式,它本身不存储数据。
Function Group的维护
T-CODE: se37
执行创建修改维护
:菜单-Goto-FunctionGroups-Create/Change/Display/Delete Group
查看FunctionGroups
1.se37
2.se80
Function维护
T-Code:SE37
执行创建修改维护
1.输入模块名称
2.选择所在Function Group,输入Function的描述
Function的属性
函数处理类型:
1.一般函数模块
一般的函数模块,只能用于当前系统(只能在本系统中使用,其他系统不行)
2.远程函数
可用于其他系统,SAP系统,或者非SAP系统,调用时候要指定目的地,目的地在SM59配置
3.更新函数
用于数据库数据更新
接口元素:
import:当Function 被调用时候,通过输入参数向Function传递变量或者数值,若一个输入参数是可选的(Optional),则该参数可以不传递。
export:当Function 被调用时候,通过输出参数接受从Function 输出的数据,输出参数始终是是可选的(Optional)。
changing:通过变更参数向Function传递变量,在Function中可以改变可更改参数的值,并且返回更改后的结果到程序中。
tables:是通过内表进行参数传递,处理方式与更改参数一样;
exceptions:处理Function 中可能发生错误的情况,调用程序检查是否发生了错误,然后采取相应的措施
可选参数:
1.可以将导入、更改和表参数标记为可选
调用Function时不必为这些参数提供值
可以为可选的导入和更改参数定义缺省值,当调用程序不传输任何值时,可使用这些缺省值
2.导出参数始终是可选的
子例程
1.概述
子例程是源代码里具有一定独立功能的模块单元
2.类型
* 内部子例程:内部子例程的源代码与调用程序位于同一个ABAP程序中
* 外部子例程:外部子例程的源代码位于另外的ABAP程序中,而不是位于调用程序内部。
3.定义方式
以FORM开头、以 ENDFORM 结尾的ABAP代码块。
语法:FORM <subroutine> [<pass>].
<statement block>
ENDFORM.
其中:
<subroutine> 用于定义子例程名,
<pass> 参数<pass>选项也可以没有
子例程可以访问其所在主程序中声明的所有数据对象。
一般都将同一程序中定义的所有内部子例程都集中定义在程序的末尾。
子例程的定义不能互相嵌套。
4.形参和实参
形参在form里使用
实参在perform里使用
5参数的传递方式
* 参数传递:将主程序变量传递给子例程形式参数
* 传递类型:
1.值传
子例程中参数变量的值的改变,不影响外部程序实际变量的值
2.引用传递
若子例程中的参数变量的值发生了改变,那么,外部程序的实际变量的值也发生改变
3.值传并返回结果
传递参数的方式同值传递相同,但在子例程执行过程中,变量值不改变,而结束执行后,把变量的最终值返回.
形参的参数声明方式
1.通用类型与指定类型的形式参数的声明
通用类型可以不声明参数类型,但是会存在类型的冲突风险
2.对于结构体、内表类型的形式参数一定要指明其类型。
调用其他程序的子历程
1.调用指定程序中的子例程
PERFORM form IN PROGRAM prog.
2.通过TCODE调用
CALL TRANSACTION TCode.
3.使用SUBMIT方法调用另一个程序
在ABAP中可以直接调用具体程序来实现该程序的所有功能,并提供程序执行中所需要输入的字段及参数
SUBMIT <程序名>.
...USING SELECTION-SCREEN <SCR>. "调用子屏幕
...VIA SELECTION-SCREEN. "显示所调用程序的初始屏幕
...AND RETURN. "调用指定程序执行后可返回上一屏幕
宏
1.概念
宏(Macros)是一段独立的代码,能实现数据的运算与输出,功能与子例程类似,主要应用于同一程序中某些重复的运算,以简化代码
2.语法
DEFINE INCREMENT. "INCREMENT为宏的名称。
......
END-OF-DEFINITION.
⚠️: 与子例程不同的是,宏通过&N(N为索引)接收传入的参数,不需要定义接收参数的类型及格式。
宏参数最多可以包含九个(&1,&2,...,&9)
宏只能被本程序中定义于宏后面的语名所调用,宏一般定义于程序最开始
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!