另外关于Oracle 数据库的参数调整你可以参照一个Notes124361 Oracle Db parameters for r3 release above 4.x. SAP要求的参数和别的应用的数据是不一样的, 比如说LOG_buffer的大小,一般的DBA会把他调在3M 左右,但SAP要求是1M. 所以参数调整一般都是靠SAP 的Early watch check一年二次服务来作,你自己不用太多精力去想 这事.
创新互联-专业网站定制、快速模板网站建设、高性价比吴忠网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式吴忠网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖吴忠地区。费用合理售后完善,十余年实体公司更值得信赖。
SAP的内存参数有问题,正常情况下heap memory一行的值应该为0.双击红色块,进入下一页面, 点当前参数,记住参数名。RZ10打开子系统参数文件进行调整。调整时请参照NOTE。
文 | 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