BW问题合集.doc_第1页
BW问题合集.doc_第2页
BW问题合集.doc_第3页
BW问题合集.doc_第4页
BW问题合集.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 现在有一个 QUERY 运行十分慢 , 所以我想在 BW 里找到一个工具来分析这个 QUERY 是怎么运行的 . 想知道慢在什么地方 , 用了多少时间等一些具体信息 . 2.a. 在 BW 中使用交易代码 RSRT b. 填上需要测试的报表的技术名称 c. 单击执行 + 调试 d. 勾选弹出的调试选项对话框的其他中的显示统计数据和未使用高速缓存 e. 输入 Querry 的所需要的变量,运行 f. 结果回来之后, F3 返回 统计数据界面:将持续时间求和减去时间等待时间、用户的时间,得到的时间作为该报表的统计时间 g. 报表执行的速度一般都是 cache BIA Aggregate Cube 自身 .所以第二次执行,能从 cache 取数的话,自然就快 了 3. 我在激活一个 DSO 时,由于数据量比较大,差不多有 2 千多万条的数据,之前的传输进程都是绿灯,可在激活过程中,就变成了红灯,不管激活多少次也是红灯,请问这个是什么原因啊 ?这个 DSO 是主要做报表用,还是做数据存放及 delta 用,如果是后者的话,更改 DSO 的属性把 “SIDs Generation upon Activation” 的勾弃掉,如果是前者,可以通过事务 “RSODSO_SETTINGS” 调整相应参数来提高你的 active 的效率。Parameter for SID Generation 中, Maximum package Size 是 2 万, maximum wait time for process 是 600(10 分钟 ) ,这个数字是否是越大越好 ? Maximum package Size 是根据你的内存来设的, maximum wait time for process 可以长一点。1. 执行 “ 分配工作簿 ” 后,收到了邮件,可是 Excel 里的中文都是井号 “#” ,请问该怎么解决?谢谢! BW 是 3.5 的。 a) 退出 BW 系统,关闭所有 BW 系统的窗口和 EXCEL 的窗口;b) 右键点击 “ 我的电脑 ” ,选择 “ 属性 ”“ 高级 ”“ 环境变量 ”-“ 系统变量 ”-“ 新建 ” ,变量名: SAP_CODEPAGE 变量值: 8400c) 依次点击 “ 确定 ” ,保存新增的环境变量 .不行的话,重启下机器,另外注意用户名密码输入界面下的语言输入 ZH1. 我目前在做一个 供应商分析 的报表的时候碰到了一个过滤不出过滤条件的问题,望各位大侠能帮忙!谢谢! 报表是在信息提供者:设备主数据 上出的。供应商是 设备主数据 的一个 属性(导航)。在 query 里制作报表的时候行上是 供应商 ,列上是 设备数 。目的是分析该供应商都提供了多少设备。当然自由特性里有个设备号,可以追溯。 但当我用 rsrt 测试报表的时候, * 正常显示是没有问题的 * ,但想过滤出特定的供应商的时候总是过滤不出来。再追踪的时候出现如下提示: 在特性 ZZCZZS 的主数据表中不存在特性值 # 。因此,无法将此值传输到内部 SID 中。 另外 在 ecc 的时候 供应商就是中文,并不像其他的设备的属性一样有个编号,然后编号可以对应一个中文。 是不是和中文有关,因为在提示里的特性值是 # 。 有没有解决的办法? 谢谢了!还有在不论是设备主数据还是供应商主数据中中文显示都正常,我在过滤的时候是选择的,而不是输入问题。用 RSRC check 你的那二个特征,并修复。rsa1- 工具 - 应用层次结构 / 属性更改 - 信息对象清单,检查设备特性是否在列表里,选中执行属性更改1. SAP 后勤数据的抽取,使用的增量队列, 财务数据的抽取,使用的是时间戳, 这句话对不对? 财务数据使用时间戳,就是说不通过增量队列,数据由业务系统直接到达 BW 系统, 似乎与实际情况不符。 1 、使用 RSA7 查看增量队列时,确实可以看到财务数据源: 0FI_GL_4, 0FI_GL_6,2 、总账凭证过账后,立即进行数据抽取, 0FI_GL_4 并不能立刻抽取到数据,而 0FI_GL_6 立刻就可以抽取到最新数据, 这是怎么回事呢? 或者我哪里理解错了? 2. SAP 后勤数据的抽取,使用的增量队列, 财务数据的抽取,使用的是时间戳, 这句话是对的, 总账凭证过账后,立即进行数据抽取, 0FI_GL_4 并不能立刻抽取到数据,而 0FI_GL_6 立刻就可以抽取到最新数据, 这是怎么回事呢? 那是原因这二个的时间戳的粒度不一样,一个是到时分秒的,一个只是到 posting date 的。0FI_GL_10 和 0FI_GL_14 都是为 new GL 提供的 datasouce.0FI_GL_4 和 0FI_GL_6 在 BW 7.x 也都是可用的 。 3. BW 请求数据,在 R3 端执行对应的 FM 操作,获取数据,写入增量队列 。 4. 我现在有个问题,对于同一个 Transformation ,其中有个字段,需要针对不同的 DTP ,赋予不同的值,请问如果处理,谢谢! 1 可以在表 tvarvc 中建一个变量 2 然后在不同的 dtp 中的 transfert routine 里写 赋值给上面变量 的 code : 比如 dtp A 执行则赋变量的值 为 A 若 dtp B 则变量的 值为 B 。 3 然后在 transformation start routine 中 去读 变量的值 看是从哪个 dtp 过来的 ,然后更改处理规则 。1、 建立一个表;2、 在 DTP 的过滤条件中写代码给表插入一条记录;3、 在转换中去读取该表中的记录,并在结束例程中删除表中记录。1. DSO 用来存储明细数据,其结构比较简单 , 对于值的转换 , 既可以使用合计,也可以使用覆盖的方式。因在源端 , 如果存在相同的 customer 记录 , 需要合并 , 为了省事 , 并没有写 abap 代码 , 直接启用了合计的方式 , 如果使用合计的方式,可以用 delta 吗(最终的 DSO ) ? 如果可以 , 该用什么类型的 delta. 如果不可以 , 又不想写代码 , 如何能实现合计和 delta 的两种功能 . 确定你的情况必须要要用合计 ? 用合计的 kf 一般要谨慎的 确定你在的 kf 合计出的结果的正确性 ,不然整个 dso 里的数据都会错误。 delta 是 适用的 recordmode 用 after image 即可 .可以用 RSA2 查到每个数据源的 delta 属性,比如 2lis_03_bf 是 ABR, 这表示这个数据有 after image 、 before image 、 revise image.不是说 ods 用合计不能做 delta , 而是说 ods 一般用来记录的是合计每条数据的详细情况,如果 ods 里不做报表 你可以把 kf 当 charactestic 来理解 ,而在 cube 里面来合计 是相对于不同的 diemension 来合计你的 kf 这样是为报表多维分析服务的 。ods的 delta是把 change log表的变化记录往上更新 , 合计 是 key值相同下 ,keyfigure累加的 .你可以用 DSO, 但是得用两层 DSO, 第一层 DSO1 用 Overwrite 方式 , 用来正确获取 Delta 的 Change log 数据 , 第二层 DSO2 从 DSO1 更新 , 可以使用 Sum 方式 .1. 由于每隔一段时间需要对 PSA 进行清理, PSA 的数量多,而且每一个我只懂用右键 - 管理,然后一条一条地选择需要删除的记录(批量一个时间段的,如 1-3 个月的每日 Delta )。 请问各位高手,有没有更好的方法可以清理 PSA 的数据。 1、 仅成功登记 / 更新请求 = 就是指成功更新到 DSO 或者 CUBE 的数据请求 2 、仅那些未在数据目标中登记的带有错误的请求 = 就是出错了,没有更新到 DSO 或者 CUBE 的请求 3 、仅删除装载请求,不要删除激活请求( ODSR.)= 这个应该是说成功装载但是没有上传到 DSO 或者 CUBE 的请求吧。 一般来说,我们是删除前 30 天的请求,保留一个月的请求数据即可,这样做的好处是还能节省一下磁盘空间 。1. FI 怎么抽取当天的数据? FI-AP 、 AR 的设计就是抽取前面一天的数据,因此增量不能抽取到当天的数据。 如果数据量不大的话,建议进行全量抽取,然后在 BW 使用 DSO 进行增量的处理 。1. 安全上下限 BW 中,存在两种数据抽取方式,完全更新与增量更新,完全更新是每次把截至到某个时间的数据全部抽取,增量抽取则只抽取上次和本次抽取之间更新的数据,很显然,增量抽取能够提高系统效率,根据 SAP 帮助的说法,增量更新又分为时间戳和增量队列两种方法,其中财务数据的抽取为时间戳增量法,后勤数据的抽取为增强队列法。对于增量更新,都需要先对数据抽取进行初始化,然后再进行增量的抽取。对于时间戳增量法,系统存在一个延迟时间,即时间戳设置时间与记账时间的差异,比如时间戳是根据创建时间(或输入时间)来确定是否更新的依据,而在抽取开始时(时间戳已标记),此时凭证已创建而未记账(即未更新至数据库),则此次无法抽取到该凭证,但下次抽取时,由于已在时间戳范围之外,也不再进行抽取,从而导致抽取数据遗漏,避免此问题, SAP 帮助上给出了通过设置安全抽取时间的方法,设置视图为 BWOM2_V_SAFETY ,可根据不同的数据源设置不同的安全时间,两个小时为推荐设置 这个安全时间是对于已经创建但未保存在凭证而言,如果在这个安全时间内保存了,则此次抽取将包含在内 ,比如你 6小时抽取一次数据,假如你第一次在 12:00抽取,那么下次应该是 18:00抽取,那么应该来说 18:00抽取的数据是 12:00-18:00的数据才对,但是有种情况需要你考虑,比如我 11:55在做一个凭证,但是中间我去吃饭, 12:30才回来完成这个凭证,那么这个凭证就是 11:55创建的,在 12:00抽取的时候,由于凭证没有产生,因此无法抽取,但是下次 18:00抽取的时候,由于这个凭证是在 11:55创建的,所以也无法抽取到。做 BW数据仓库最重要的一条准则就是 “不重复、不遗漏 ”,那么这样你就遗漏了数据,那么 SAP就想了个办法,就是比如这次我抽取从 06:00-12:00,那么下次我抽取从 11:30-18:00,这样上面的凭证就能抽取出来了吧,这时候 11:30-12:00就有半个小时的重复,这个就叫做 Lower Limit。同上,比如我 12:00抽取的时候,不想抽取 06:00-12:00,而是想抽取 06:00-11:30,那么我就设置一个 Higher Limit 为 30分钟,则抽取的时候就不会到最新的时间,而是需要过账半小时前的凭证。比如我设置了 30分钟的 Lower Limit, 30分钟的 Higher Limit,那么我 12:00抽取的数据应该是 05:00-11:30的数据,下次抽取的数据时 11:00-17:30,在下次就是 17:00-23:30,在下次就是 23:00-05:30,在下次就是 05:00-11:30,如此循环。但是如果设置了 Lower Limit和 Higher Limit之后,请记得在 BW中使用 DSO来处理数据。1. 如何在 query 中把默认的转换汇率改成期末汇率 ? 在 query 中默认的汇率转换类型都是 “M” ,但现在我需要把一个报表的转换汇率改成期末汇率,即汇率类型为 “V”.该如何解决这个问题 ? 在 RSCUR 中创建新的货币转换类型就可以了,不过 3.5 版本中事务代码为 rrc1.1. 大家都知道从 dso 到 cube 进行增量抽取数据时 , 只有未被抽入 cube 的那部分增量数据才会进入 cube. 而系统具体是怎么从 change log 中判断出那部分增量数据的 ? 具体通过那些表 , 那位给讲解一下 . 一般来说,数据源都是先把数传递到DSO再到CUBE,每次删除重复请求感觉上也不是很安全,所以上述方法使用的不多。先到DSO再到CUBE,每一次用程序抽取最近N个月数据的这种假增量方法看似比较完美,其实背后隐藏了一个极大的问题,即用户在源系统物理删除的那部分记录如何在BW也每天自动删除掉。原系统物理删除掉的记录,BW在抽取过程中是无法自动识别的,在DSO的更改日志里当然也体现不出来,CUBE端肯定也不会自动删除掉,这个如何处理?放任不管是肯定不行的,在这次首钢项目的开始,项目组就提出了这个问题,要求给出合适的解决方案。1 让客户最偷懒的,解决物理删除问题的假增量方案解决方案经过研究,可以有以下两种主要思路。第一种,由开发源系统的客户方维护人员,在视图里增加一个删除标记,每一次数据删除了,都打上这个标记,BW抽取上来后,在报表里设置条件,凡是有这个标记的数据,就不显示出来。这种方案的问题在于客户必须要修改它那边源系统的代码,很多时候,客户想偷个懒,不太愿意改,这种方案需要客户配合,也不是标准的解决方案。第二种方法,在BW这边识别,并在抽取时自动进行处理,这样客户什么也不需要做,相当舒服,但是BW这边如何能尽量方便的处理,就得综合考虑一些问题了。每次 DSO 数据进行激活更新时,都会在 change log 表产生一个 request ,这个 request 对应这次请求发生改变的所有记录,如果是新记录, change log table 中的 recordmode = N, 如果是更改,那么会产生 2 条记录,一条 recordmode = X 代表修改前,另外一条 recordmode = 表示修改后。 往 cube 上 delta 更新的时候,就是靠这些来获取变化量的,新产生的 request 中的那些记录问题一: BW如何找出被物理删除的记录?可以在开始例程里统一判断,即把开始例程的SOURCE_PACKAGE和DSO中相关记录进行比对,DSO中有,而SOURCE_PACKAGE找不到的记录,即可认为是删除,例程如下: SELECT * FROM /bic/az3pp_o0900 INTO TABLE it_dso.LOOP AT it_dso INTO st_dso. READ TABLE SOURCE_PACKAGE INTO st_source WITH KEY STAT_DATE = st_dso-calday. IF sy-subrc 0. “ 确认删除,此处开始处理问题二 ENDIF. ENDLOOP.问题二: 找到被删除记录后,怎么能让DSO的更改日志知道这条记录被删除了?我们知道,DSO的更改日志会自动把这一次的数据和上一次的数据进行比对,把差异记录在日志表里,再传递到CUBE中,因此,我们可以考虑,手工把被删除数据的关键值统一设置为0,这样,假设原来关键值是15的话,DSO会被覆盖成0,DSO的更改日志表会变成-15,再传到CUBE中就是15 +(-15)= 0了。这样等于针对删除记录自动产生了反冲记录,可以同时保证DSO和CUBE数据的准确性了(DSO和CUBE该记录都为0了),例程如下: LOOP AT it_dso INTO st_dso. READ TABLE SOURCE_PACKAGE INTO st_source WITH KEY STAT_DATE = st_dso-calday. IF sy-subrc 0. st_source-STAT_DATE = st_dso-calday. st_source-L4_FACILITY_ID = st_dso-plant. st_source-L4_WORKCENTER_ID = st_dso-workcenter. st_source-EQPT_OUT = 0. st_source-EQPT_SCRAP = 0. st_source-SACRPT_HRM_INPUT = 0. st_source-SALE_OUT = 0. st_source-SALEMAT_HRM_INPU = 0. st_source-record = tmp_record. APPEND st_source TO SOURCE_PACKAGE. ENDIF.ENDLOOP.注意,上述例程中非关键值要设置成和原先一样,关键值都要设置成0. 完整例程如下:DATA it_dso TYPE TABLE OF /bic/az3pp_o0900. DATA st_dso TYPE /bic/az3pp_o0900. DATA st_source TYPE _ty_s_sc_1. DATA tmp_record TYPE rsarecord. SELECT * FROM /bic/az3pp_o0900 INTO TABLE it_dso. READ TABLE SOURCE_PACKAGE INTO st_source INDEX 1. tmp_record = st_source-record. CLEAR st_source. LOOP AT it_dso INTO st_dso. READ TABLE SOURCE_PACKAGE INTO st_source WITH KEY STAT_DATE = st_dso-calday. IF sy-subrc 0. st_source-STAT_DATE = st_dso-calday. st_source-L4_FACILITY_ID = st_dso-plant. st_source-L4_WORKCENTER_ID = st_dso-workcenter. st_source-EQPT_OUT = 0. st_source-EQPT_SCRAP = 0. st_source-SACRPT_HRM_INPUT = 0. st_source-SALE_OUT = 0. st_source-SALEMAT_HRM_INPU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论