增强开发指南:使用SAP Ad Hoc Query输出信息类型重复记录的问题

问题描述: 当用户给员工在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、对信息集进行以上增强修改后,一定要记得重新生成信息集。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171220G0ZL2O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券