问题描述: 当用户给员工在IT0015中输入两条完全相同的记录(员工编号、工资项、起源日期和金额),想使用SAP Ad Hoc Query(Infoset Query)查询的时候,输出结果中只显示该员工的一条记录。
问题分析: SAP Ad Hoc Query对查询结果集中相同的记录只输出一条记录,所以造成上述情况。
解决方案:
1、对 Ad Hoc Query所使用的的nfoSet进行TCODE SQ02进行增强。运行SQ02,选择相应的信息集后,断则修改按钮,然后进入更新信息集(INFOSET)屏幕后,选择菜单:转到(Goto)->源代码(Source Code)->数据(Data),屏幕右侧出现以下编辑框:
然后在编辑框中输入以下代码段:
*$HR$ [COMMON]
*$HR$ BL_ALLOW_DUP_LINES = 'X'
2、该代码段用于设置通用开关BL_ALLOW_DUP_LINES,这样结果集的重复记录会一一列示,不会被过滤掉。
3、以上针对信息集代码数据段增强的程序开关有很多,可以分为两类,一类是通用开关,如上述BL_ALLOW_DUP_LINES,使用*$HR$ [COMMON]进行申明,包括:
1)BL_ALLOW_DUP_LINES:在基本列表(Basic List)中显示重复记录
2)REPORT_CLASS:设置报表类型(PNP和PNPCE逻辑数据库)
3)PROCESS_LOCKED_RECORDS:处理和输出锁定记录(PNP和PNPCE逻辑数据库)
4)PROC_PERNR_PARTIAL_AUT:处理和输出只有部分信息类型授权的员工(PNP和PNPCE逻辑数据库)
5)PERSON_ONLY_ONCE:一个员工只处理一次(PNPCE逻辑数据库)
另一类是信息类型特定的程序开关,包括:
1) LAST_RECORD_ONLY :只处理信息类型的最后一条记录
2)PROVIDE:合并相邻/覆盖的数据记录
3)PROVIDE_FIELD:合并数据记录的相关字段
4)PRIMARY_INFTY:和主信息类型的信息类型关系(信息类型视图)
5)TIME_DEPENDENCE:时间依赖
6)DATA_REQUIRED:要求存在数据记录,否则不输出该员工
7)SPLIT_DATA_REQUIRED:在分段的期间,要求存在数据记录,否则不输出该员工
8)NO_INDIRECT_EVALUATION:间接求值的工资项目不重新计算,如IT0008/IT0014/IT0015中定义为间接求值的工资项不触发间接求值计算过程
9)IGNORE_WAGE_TYPE_OPERA:对前台输入的扣减工资项,忽略操作指示符,也就是金额不再变负
10)NO_DUPLICATE_LANGU:只用一种语言输出数据记录
11)CASE_SENSITIVE_SEL:大小写敏感选择
12)ADD_FIELDS_SPLIT_DEP:HR附加字段是分段依赖的
13)SPLIT_DEPENDENT_AF:分段依赖的HR附加字段的技术名
14)SPLIT_INDEPENDENT_AF:分段不依赖的HR附加字段的技术名
信息类型特定的程序开关可以使用一下格式进行申明:
1) *$HR$ [Pnnnn],其中nnnn 是信息类型编号,下列的开关只对指定的信息类型有效;
2)*$HR$ [P0000, P0004, P0006],下列的开关对列举的几个信息类型有效;
3)使用模板和占位符,其中+是一位占位符,*是多位占位符,如:
*$HR$ [P00++]:对前两位编码是00的信息类型有效
*$HR$ [P*]:对所有的信息类型有效
*$HR$ [P0+1*]:只对信息类型编码第一位是0、第三位是1的信息类型有效;
4、对信息集进行以上增强修改后,一定要记得重新生成信息集。
领取专属 10元无门槛券
私享最新 技术干货