重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、输入希望显示行项目的科目和公司代码。可指定多个科目或公司代码。
站在用户的角度思考问题,与客户深入沟通,找到万山网站设计与万山网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网络空间、企业邮箱。业务覆盖万山地区。
2、对要显示的行项目数量进行限制。
3、可以仅显示具有特定状态的行项目。
4、可通过指定日期对项目数进行进一步限制。
5、可以显示特定类型的行项目,暂存项、预制项或正常项。指定行项目的显示方式,可以选择格式,以在清单中显示行项目。
6、SAP标准系统包含不同的格式。这些格式的技术名称以1SAP开始,在标准变式中,行项目将根据科目和公司代码进行排序和汇总。
变式,英文variant。用一个报表为例,每次运行一个报表都要输入一些选择的参数,例如工厂代码,时间范围,凭证类型等等。variant就是包含一组这些参数,以减少重复性工作。
文 | SAP油瓶哥
前言
说起SAP中的变式(Variant),SAP从业者肯定不会陌生,对于选择屏幕复杂的程序界面,我们可以使用变式来简化界面(比如隐藏不相关字段),对于经常使用的并且每次都需要输入相同筛选条件的程序(比如每月都要执行的报表),可以设定和调用变式来简化操作,此外当我们需要需要设定后台JOB时,我们也需要为后台程序指定相应的变式。
本文尝试为变式相关概念做些总结,并再简单说下变式中的选择变量(Selection variables)的用法。
维护变式
当我们新定义一个变式时,我们需要:
进入程序界面,在选择屏幕输入选择条件
点击保存按钮进入变式属性界面
填上变式名字和描述
保存
或者我们也可以通过SE38,填上程序名,选择子对象变式,点击显示或修改按钮进入变式维护界面。
当我们需要从前台调用时变式时,只要点击变式按钮双击想调用的变式即可。
需要注意的是当一个程序的变式数大于10个时,点击变式按钮会弹出额外的选择界面:
这些常规操作,大家应该都非常熟悉,这里我们来看下变式属性的其他选项,看看他们都有什么作用。
变式属性
使用屏幕分配 (Use screen assignment)
如果一个程序包含多个选择屏幕(例如:COOIS),当我们只想编辑某一个选择屏幕的变式属性时,可以先在右侧勾选选择屏幕号,然后再点击使用屏幕分配按钮,这时下方的窗格就会只显示对应的选择屏幕字段,当然SAP中大多数程序还是只有一个选择屏幕界面,所以这个按钮用到的情况并不多。
仅用于后台处理 (Only for Background Processing)
如果勾上了此项,那么变式就不能在前台被调用了,只能用于后台JOB。
保护变式 (Protect Variant)
勾选后,该变式其他用户无法修改。
仅在目录中显示 (Only Display in Catalog)
勾选后,点击变式按钮不会看见此变式,变式也不会出现在SE38的变式子界面的搜索帮助中,只能在变式目录中找到此变式。
变式目录可以在SE38的变式子界面,通过如下菜单位置找到:
仅出现在变式目录中的变式依然可以被用于定义后台JOB:
系统变式 (System Variant)
该选项无法手工勾选,当定义新的系统变式或查看系统变式时会自动勾上。
关于系统变式可以分享的几点如下:
A. 系统变式命名以SAP或CUS开头,SAP表示SAP原生定义的系统变式,CUS表示客户自定义的系统变式
B. 无法为本地程序定义系统变式,否则系统会给出DB248报错
C. 系统变式不会被覆盖并且只能由创建者或最后修改者修改
D. 系统变式保存时会触发自动传输(Workbench类型,传输对象是 LIMU VARI)
E. 当传输程序时,对应的系统变式会一起被传输
F. 系统变式不区分Client (not client-specific),系统变式只能从Client 000中调用T类型选择变量(静态变量),这个下面会谈到。
屏幕字段类型 (Type)
屏幕字段一共有两种类型,P和S , P表示参数(PARAMETERS),S表示选择选项(SELECTION-OPTIONS),从前台界面上来看就会一下子明白。(这里需要说明的是,并不是屏幕上看到单个空格的就一定是P类型,用SELECTION-OPTIONS定义的选择屏幕也是可以实现单个空格效果的)。
不同类型的屏幕字段也只能调用相应类型的选择变量,这个下面会谈到。
保护字段 (Protect field)
勾选后,当程序调用此变式执行时,字段在前台选择屏幕上可见,但不接受用户输入,只能在维护变式时录入。
隐藏字段 (Hide field / Hide field 'TO')
勾选后,当程序调用此变式执行时,字段在前台选择屏幕上将不可见,但在维护变式时录入的值依然有效。
保存无值的字段 (Save field without values)
使用后,系统在保存变式时会不考虑录入的字段值。
如果该字段与MEMORY ID无关,那么对该字段系统将以空值保存在变式中。
如果该字段与MEMORY ID有关,那么系统在调用变式时该字段值会受到SAP memory中的值和用户变量的影响,具体三者间的关系,后面会谈到。关于MEMORY ID下面也会聊到。
GPA关闭 (Switch GPA off)
这里的GPA指的是SPA/GPA, 即SELECT/GET Parameter ID,也就是用户参数文件中的SET/GET 参数标识(可以用SU3或SU01维护),Parameter ID(pid)存在表TPARA中。
要讨论这个选项,我们需要先说下SAP memory。我们在日常操作中肯定注意过这种现象,就是有时我们进入到一些程序时(注意:不是用变式启动),会发现有些字段的值已经自动填写上了,这里其实用到了SAP memory机制。在这种机制下,当一个屏幕被调用时,那些用MEMORY ID语法定义的屏幕字段会去SAP memory中搜寻当前值,并自动填充到屏幕上。SAP memory是与用户ID绑定的,这种机制提高了用户的操作体验。
下面我们先看一个例子,理解下这个自动填充的逻辑:
登录SAP, 我们在SU3中维护PID WRK = 8000
进入MB51, 会发现工厂字段是自动填写上8000的
我们手工改为6000 (注意:要按下回车才会进入SAP memory),退出MB51
再次进入MB51,会发现工厂字段默认带出了6000 (其实进入MB52也会发现工厂字段自动会带出6000)
我们手工改为空,退出MB51
再次进入MB51,会发现工厂字段默认为空
登出SAP,再次登录SAP,进入MB51,会发现工厂字段自动带出了8000
退出MB51,进入SU3修改WRK = 6010
再次进入MB51,会发现工厂字段默认带出了6010
这里我们就可以明白这个SAP memory的工作原理了,当我们以无变式方式进入一个程序屏幕时,假如A字段用到了MEMORY ID语句关联了PID,并且没有在语法中给出默认值,那么当SAP memory中有值时系统会优先调用(注意:包括其他屏幕操作写入的值、空值和新保存在用户参数文件中的值),当SAP memory中还没有值时(比如刚登录系统,未进行其他操作),系统会去检查用户参数文件中有无维护PID,如果有,就调用PID值(包括空值),如果没有,那么就以初始值显示(即空值)。
回到GPA关闭这个选项上来,首先这个选项只对使用了MEMORY ID定义的屏幕字段有效,对其他屏幕字段来说这个选项是不可编辑的。如果我们勾选了GPA关闭,那么当我们调用变式时,就不会触发SAP memory机制。
更详细的举例可以参加后面的组合测试部分。
要求的字段 (Required field)
使用后,当程序调用此变式执行时,该字段在选择屏幕上变为必输项。
选择变量 (Selection variable)
选择变量可以帮助我们更灵活去管理变式,目前SAP支持的选择变量一共有4种:
静态变量,即表TVARVC中的值 (类型T)
动态日期计算 (类型D、X)
动态时间计算 (类型Z、Y)
用户变量 (类型B)
下面我们依次来看下这几种变量的用法。
T类型选择变量:表TVARVC中的值
我们可以直接将表TVARVC中定义的值用在变式中,这样当选择条件发生小的变更时,就不用每次都去变更已有的变式,只要更新表TVARVC中的静态变量即可。
T类型选择变量也可以配合 保护字段 一起使用。
假如我们每月需要为所有的工厂执行一系列的报表或程序,我们为这些程序创建了变式,并设定了后台JOB,随着业务的增长,每当有新的工厂被创建后,我们需要为这一系列程序去修改变式。如果我们在表TVARVC中定义了一个ZPLANT的变量(类型:选择选项),并将这个变量应用在所有的变式中,这样当业务环境发生变化时,我们就仅需要去修改ZPLANT这个变量值,这将大大简化我们的工作量。
关于T类型的选择变量,其他需要说明的有:
A. T类型选择变量存储在表TVARV和TVARVC中,TVARV不区分Client,TVARVC区分Client
B. 自Release 610开始, TVARV 被TVARVC所替代,可以用程序RSTVARVCLIENTDEPENDENT来将 TVARV的值拷贝至TVARVC
C. 事务码STVARV可以用来维护当前Client的表TVARVC中的值,事务码STVARVC可以在任一Client维护Client 000的表TVARVC的值。也可以在变式属性定义界面通过菜单环境定义选择变量进行维护。
D. Client 000中的表TVARVC中的值是给系统变式用的。
E. P类型的屏幕字段可以调用表TVARVC中的参数值,S类型的屏幕字段可以调用表TVARVC中的选择选项值
F. 因为动态期间计算不能涵盖所有场景,我们可以根据需要在表TVARVC创建变量,并开发一个程序进行定期更新。
比如事务码IDCNACCTBLN中的年份和期间这两个字段不能使用动态计算,我们可以在表TVARVC创建变量ZCURRENT_YEAR(本年)和ZLAST_PERIOD(上月),通过一个自开发程序每月去更新ZCURRENT_PERIOD,每年去更新ZCURRENT_YEAR。
注意:T类型的选择变量会影响到所有调用它的变式
D、X类型选择变量:动态日期计算
只有数据类型为DATS的屏幕字段才能使用动态日期计算。D类型动态日期计算使用的是本地日期,X类型使用的是系统日期。
SAP支持的动态日期计算选择如下:
Z、Y类型选择变量:动态时间计算
只有数据类型为TIMS的的屏幕字段才能使用动态时间计算。Z类型动态日期计算使用的是本地时间,Y类型使用的是系统时间。
SAP支持的动态时间计算选择如下:
B类型选择变量:用户变量 (User-specific Selection Variables)
最后来看下用户变量,用户变量是与用户ID绑定的选择变量,如果我们要在变式中使用用户变量,需要满足3个条件:
No.1 该屏幕字段用到了MEMORY ID语法关联到了PID;
No.2 表TUVID 中有相应的PID值;
No.3 已经维护了相应的用户变量值 (用户变量存储在表TVARUVN中)。
当以上条件达到时,我们在维护变式时就可以选择类型B作为选择变量,并且系统会自动带出变量名称。
维护用户变量
维护用户变量的方法有两种:
一. 通过菜单
A. 在选择屏幕中,通过菜单转到用户变量进入维护界面
B. 单击要维护的PID
C. 眼镜按钮会显示当前的用户参数值,笔按钮会进入修改界面,如果点击获取,会读取当前的用户参数值并填到屏幕字段上
D. 点击笔后,选择变量,填上参数值保存即可。(注意: 需要点击删除才会保存成功,如果选择保存空,就会以空值保存 )
E. 点击笔后,如果点击选择屏幕,系统会读取当前屏幕上的值做出输入参照
F. 如果要删除用户变量值,需要进入修改界面然后将参数值改为空,最后选择 删除 即可
二. 调用功能
用户变量也可以通过SE37调用功能来修改,相关的功能如下:
VARI_USER_VARS_GET: 读取现有变量值
VARI_USER_VARS_SET: 修改现有变量值
VARI_USER_VARS_COPY:复制变量值
VARI_USER_VARS_DELETE:删除变量值
VARI_USER_VARS_RENAME:重命名变量值
VARI_USER_VARS_DIALOG:出现对话框输入变量值
组合测试
我们可以看到用户变量和SAP memory都关联到了PID,那么它们间的关系又是怎样的呢?我自己花了点时间测试了下保存无值字段,GPA关闭及用户变量这几个易混淆的选项,在此也把测试的结果分享给大家,希望大家看过后可以了然于胸。
测试对象:
测试场景:
测试结果:
从上面可以看出,如果不考虑保存无值字段的影响,系统取值时优先级最高的是用户变量,然后是创建变式时手工录入的字段值,最后是GPA(SAP memory)
文件链接:
密码: u9cu
后记
本篇缘起年前的一次用户培训上,在讲到如何设置变式中的动态计算变量时,用户提到为什么事务码IDCNACCTBLN中的年度和期间不能设置动态计算,一开始只是想弄清这个,没曾想写的过程中觉得,要不看看所有的变式属性都有什么用,哎,系统变式是啥,以前没注意过啊,GPA是什么东东?反正不会是大学成绩绩点,保存无值字段该怎么理解,怎么还有个B类型的选择变量。。
我觉得我某种程度是有强迫症的。
以上。
参考资料
1746893 - Dynamic date and time calculation in variant
1994216 - How to maintain variant variables in table TVARVC
557314 - As of Release 610: TVARV replaced with TVARVC
770084 - Maintaining TVARVC in transaction STVARV
372724 - Maintenance of report variants
Dynamic date selection in Variants
Dynamic Dates in Screen Variants
Create SAP Dynamic Variant using Date Calculation
SAP Documentation: Variant Maintenance
SAP Documentation: SPA/GPA Parameters as Default Values
总账快速输入变式中,标准科目长度有15位,与中国科目长度10位存在矛盾,为后期方便输入,故调整变式;
1.配置(老版本): 财务会计的全局设置-》凭证-》行项目-》维护总账科目项目的快速输入屏幕;
备注:F-02在菜单栏“编辑”-》“编辑选项”中,对变式进行是F1,使用小钥匙标签,进行配置位置查询(必须针对具体的参数对象进行F1查询);
2.确定总账快速输入变式格式
备注:调整变式中的选项类型,可通过向下翻页,获取到需要的字段;
总屏幕长度限制82位,当前列的偏移量=上个列的偏移量+上个列的长度+1;
3.显示总账快速输入变式样式(F-02/FB00)
备注:FB00调整总账快速输入样式,选择ZUF01;
4.设置用户默认使用变式总账快速输入变式(FB00默认参数ID设置)
备注:1)FB00调整总账快速输入样式,选择ZUF01,系统自动把人为默认参数填充到USR05表;
2)用户参数ID存储表为USR05(前端对应SU3参数),查看FB00设置的变式参数;
3)使用SU10进行批量更改FB00的参数ID,即可实现FB00所有用户下的默认参数;
在本章节中,参数ID FZ2 FI:总分类帐项目快速输入行的格式,需设置默认ID;
相关文档:
NOTE:2596
NOTE:25187