SAP为不同的用户在使用程序时,根据自己的喜好来自定义想要输入的内容。开发了程序变式。用于优化输入内容,提升用户体验。
SAP 程序变式(Program Variant) 是用于保存、复用 ABAP 程序(主要是报表)选择屏幕参数的核心功能,是作为一种“参数预设集”,用于保存和快速复用程序(如报表)的选择屏幕条件,从而提升操作效率与数据准确性,是日常操作、后台自动化、权限控制与数据一致性的基础工具。
核心作用如下:
1、提升效率,避免重复输入
保存常用筛选条件(公司代码、日期、物料、工厂等),下次运行直接调用,无需重复填写。
2、后台作业(Background Job)必备
后台运行程序(SM36)必须通过变式传递参数,实现程序按指定时间指定条件自动调用功能。
3、保证数据一致性与标准化
统一团队参数口径,防止因手动输入不同导致报表结果不一致。
4、简化界面、优化体验
可隐藏无关字段、设为只显示 / 只输入 / 保护,减少干扰、降低误操作。
5、权限与安全控制
-
设为私有变式(仅自己可见)
-
设为公共变式(全局共享)
-
设为仅显示 / 保护变式(禁止他人修改)
6、支持动态变量(Dynamic Date)
内置动态变量(如当前月、上月、当年、去年),自动计算,无需每月改日期。
一、普通用户设置变式
找到需要设置变式的程序,输入自己想要设置的条件,点击保存按钮。

转到变式属性屏幕,

1、变式属性设置
1.1、变式名称:给自己的变式一个称呼,有效长度为14位,可以是英文、数字、下划线等字符。
1.2、描述:对变式做一个简短描述。
1.3、仅用于后台处理:变式只能被SM36后台程序调用,无法在前台使用
1.4、保护变式:勾选后,其他用户无法对该变式进行修改
1.5、仅在目录中显示:勾选后无法在前台变式中查看,也无法使用SE38的变式进行查看,只能在变式目录中找到该变式,如下图所示:

2、变式字段设置
2.1、保护字段:勾选后,字段会显示在界面上,但是无法输入任何值

2.2、隐藏字段:勾选后,字段不会显示在界面上。

2.3、隐藏字段‘to’:勾选后,变成单值输入框

2.4、要求的字段:勾选后,字段变成必输
2.5、选择变量类型:根据字段的属性不同,会分别显示不同的变量类型,
字符变量:
T:TVARV 中的表变量
B:用户定义的变量

日期和时间格式:
T:TVARV 中的表变量
D:动态日期计算(本地日期)
X:动态日期计算(系统日期)
Z:动态时间计算(本地时间)
Y:动态时间计算(系统时间)


T:TVARV中的表变量:从系统表:TVARVC中获取值来填充到变式中,通过事务码:STVARV来维护表TVARVC中的值。 其作用是通过一个表的数值来维护所有字段的值,
D和X变量类型都是自动计算日期,D取的是本地计算机的日期和时间,X取的是服务器上的日期和时间。在同一个时区两者没有任何区别,两者在两个时区就会有差异。比如服务器在欧洲,人在中国上班,两者就会有时间差。
Z和Y变量类型与日期变量类型的引用是一致的。不再赘述
2.6、选项:由变量名称来决定选项是包含还是排除
2.7、变量名称(仅用F4输入):最常用的是给日期、时间设置动态变量。给B和T来指定变量。
设置动态范围:
I/E:日期和时间是否包含(I)和排除(E)
选择:即进行运算符的选:EQ 等于、BT 介于、LE 小于等于、GE 大于等于、CP 包含样式
变量名称:指定变量的范围,用于指定日期和时间的落脚点。
I/E = I; 选项= EQ; 变量名称:当前日期
当使用变量时:每次的日期值都是当天,

显示效果如下:

I/E = I; 选项= EQ; 变量名称:当前日期 +/- ??? 天
当使用变量时:每次的日期值都是当天+天数,加1表示到明天,加2白后台,-1则表示昨天。

效果如下:

想要到一个期限内,可以通过设置选择:当前日期 – xxx,当前日期 + yyy而实现

效果如下:

二、业务顾问+开发顾问设置变量
相较于普通用户,业务顾问还需要与开发顾问一同来实现更为深入的变式。
熟悉几个ABAP专业术语及作用:
1、PARAMETERS :是 ABAP 中用于在选择屏幕(Selection Screen)上定义单个输入域的核心语句,它为报表和程序提供了最基础的用户交互界面
2、SELECTION-OPTIONS:是 ABAP 中用于在选择屏幕上定义复杂选择条件的核心语句。它为用户提供了一个功能强大的输入界面,允许输入范围、多值、排除项等高级查询逻辑,而不仅仅是单个值。
3、MEMORY ID :是 ABAP 中用于内存数据共享的关键标识,配合 EXPORT/IMPORT(ABAP 内存)或 SET/GET PARAMETER ID(SAP 内存)使用,核心作用是按名称读写内存、跨程序 / 会话传值。
4、SAP MEMORY :SAP 内存。是 SAP 系统为当前登录用户提供的一块全局临时存储区域,用于在同一个用户会话内、跨多个程序 / 事务码 / 窗口之间传递少量数据。
5、SPA/GPA参数:是系统存储在用户专属全局内存(即SAP内存)中的值,用于在程序间传递数据,并且同一个用户的所有会话窗口都能访问这些值.即通过SU3给SAP MEMORY先赋一个默认值,程序通过 MEMORY ID 获取默认值。
我们已工厂字段为例,找到工厂字段,按F1,跳出字段说明,然后点击工厂的MEMORY ID = WRK ,给它分配一个默认值2001

通过事务码SU3给用户的参数中分配WRK ,定值值2001

当用户登录后,不对工厂字段做任何操作,此时SAP MEMORY 中 WRK = 2001,程序通MEMORY ID = WRK默认带出2001

用户在操作过程中修改了工厂的值并回车,如2001修改为2002,SAP MEMORY 中 WRK = 2002
使用其实事务码时,工厂的默认值变为2002

剩余的字段解释如下:
1、类型:字段类型分为两种P和S, P是PARAMETERS的缩写,表示单一输入框,S是SELECTION-OPTIONS的缩写,表示区间输入框。

2、切勿保存的值:勾选后,会忽略变式中的值。
3、GPA关:此选项只对MEMORY ID定义的屏幕字段有效,勾选后,会忽略SU3中参数值
4、B:用户定义的变量:SAP MEMORY中值的影响,一旦默认之后,只会选择用户中的变量。
4.1、点击转到–>用户变量

4.2、选择需要设置的用户变量,此处以公司代码BUKRS为例

4.3、点击变量

输入需要设置的值2003

点击是

点击删除

设置选择变量类型为B后,点击保存

每次调用该变量 工厂的值的为2003

三、设置默认变量启动:
普通用户设置好变式之后,点击保存。每次都需要点击变式按钮,然后选择变式,才会带出来。

如果想要直接使用已设定好的变式,变式名称必须使用CUS&开头,如下图

使用SE93,在使用变式启动中填入CUS&ZPPB010,此处会产生请求号。切记与用户进行沟通是否已该配置作为默认配置启用。

运行结果如下:
