OPEN DATASET FOR OUTPUT功能,例如附加而不是覆盖

2020-08-25 18:17发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

概述:

我们有一个Z报表存在问题,该报表已投入生产5年以上。 该作业成功执行了99.5%,但每年失败一次或两次。

报告的详细信息:报告创建两个文件。 第一个文件从数据库获取数据并写入输出文件。 此报告中有一个SUBMIT语句,可打开此书面文件(为什么要提交SUBMIT?-SUBMIT报告已重用。它执行多个任务!)并生成另一个文件。 很少有OPEN DATASET FOR OUTPUT用作追加而不是覆盖文件内容。

0 ****** ***** 1 ***** 1 *** 310000000 ***** 00000000 **** 0000 ******* 0

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

*********** ES ##

**还存在其他行***

最后一行*********** ES ##来自文件的先前内容,这导致作业失败。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

概述:

我们有一个Z报表存在问题,该报表已投入生产5年以上。 该作业成功执行了99.5%,但每年失败一次或两次。

报告的详细信息:报告创建两个文件。 第一个文件从数据库获取数据并写入输出文件。 此报告中有一个SUBMIT语句,可打开此书面文件(为什么要提交SUBMIT?-SUBMIT报告已重用。它执行多个任务!)并生成另一个文件。 很少有OPEN DATASET FOR OUTPUT用作追加而不是覆盖文件内容。

0 ****** ***** 1 ***** 1 *** 310000000 ***** 00000000 **** 0000 ******* 0

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

************** 01092 ***** 2 ** 000000 *** 005 *** 00201 ***** R ******** * * C ##

*********** ES ##

**还存在其他行***

最后一行*********** ES ##来自文件的先前内容,这导致作业失败。

付费偷看设置
发送
3条回答
渐行渐远_HoldOn
1楼-- · 2020-08-25 18:56

感谢Sandra和Quynh。

Sandra Rossi 这只是从DB中挑选数据并写入文件的正常工作 并且不涉及并行的流程/大规模活动。 我们确实提供了多种解决方案,但是我们有一个严格的规则,除非可以确定问题的根本原因,否则不要将新更改移至产品中:(

我已经尝试过在所有可能的情况下复制此问题。

1。 在多个会话中打开文件进行写入和读取模式,并对文件执行一些处理。

2。 在仍处于写入模式时手动创建运行时异常。

3。以写入模式等打开多个文件。

这就像游戏开发人员所面临的错误之一,即在玩同一游戏的百万系统中,有十分之一出现了问题:)

Quynh Doan Manh :不幸的是,当作业失败时,文件的状态已经 已更改,并且由于该文件已被覆盖或附加了一半,因此无法检索该文件。 我们没有这些文件的备份,集成团队(TIBCO)也没有。 一旦他们转移了它,它也从他们的文件夹中消失了。 自上次出现此问题以来,我们一直在备份文件,此后没有遇到任何问题。

路亽曱_Ryan
2楼-- · 2020-08-25 18:40

感谢您的反馈。

因此,如果严格遵守此规则,则所有无法重现的问题都将手动恢复。 如果某个问题一天发生100次,但无法重现,该怎么办...:)

非常罕见,因此手动恢复是一个合理的选择。

hengyuye
3楼-- · 2020-08-25 18:45

我刚与.NET开发人员进行了非常有趣的对话,幸运的是,他遇到了与问题中所述的问题完全相同的问题。 他们遇到了一个问题,即同一文件正在多个线程中使用(所有文件都用代码和某种分布式系统手动编写),并且他们假定默认情况下它们的代码是线程安全的(将近10年)。 不幸的是,有一个线程正在从文件中读取某些内容,而另一个线程正在向同一文件中写入数据。 他们应该覆盖整个文件,但是前一天的剩余内容仍然与新内容一起出现。 似乎他们实施了Singleton来解决此问题,并进行了其他一些小的更改。

这一切都始于开发人员认为线程和并发是自动处理的,而不是自动处理的。

这不能解决我们的问题,而只是想分享。 也许其中一个线程在执行时失败了? 我们甚至尝试从UNIX团队获取日志,但什么也没找到:)

一周热门 更多>