【问题标题】:error finishes program instead of continuing错误完成程序而不是继续
【发布时间】:2011-11-29 16:13:01
【问题描述】:

我有一个包含三个步骤的应用程序引擎: 1)peoplecode(加载模型用户偏好) 2)做选择和人员代码(将模型用户偏好复制到用户列表的偏好中) 3) peoplecode(将最终结果附加到日志中)

第二步中的 peoplecode 操作在循环中为“do select”操作检索到的每个用户执行。

如果所有记录和值都正确,则程序正确运行。但是我正在尝试在遇到错误时测试案例,在这种情况下我遇到了问题:

当我尝试通过在第二步中的 peoplecode 中使用 &CompInt.Save() 来插入数据库中已经存在的值时,会出现此错误:

添加的数据与现有数据冲突。 (18,2)

保存组件接口时出错。 {Z09_CI_OPR_DEFN} (91,37)

过程 18256 在步骤 Z09_USERPREF.MAIN.Step02 (PeopleCode) 处异常 - RC = ? (108,524) 消息集编号:108 留言号码:524 消息原因:在步骤 Z09_USERPREF.MAIN.Step02 (PeopleCode) 处处理 18256 ABENDED - RC = ? (108,524)

问题是,在那之后,第二步中的人员代码完成了它的执行,但是对于“do select”操作检索到的以下值,不再执行该人员代码的迭代。 正确的行为应该显示错误,然后继续以下迭代。

有人知道会发生什么吗?第二步的 On error 参数设置为“Ignore”。

【问题讨论】:

  • 由于这是 CI 和 AE 的常见问题,我在 Github 上建立了一个仓库,其中包含在应用程序类中管理基于行集的 AE 到 CI 工作所需的所有逻辑,以及示例代码。 github.com/jpeyret/ae2ci

标签: peoplesoft


【解决方案1】:

CI 错误很可能破坏了您的 SQL 游标。而是一个单独的 do select 步骤,将数据加载到行集中并为第二步只使用一个 peoplecode 语句会更好。如果您可以发布代码示例,则更容易提供更好的建议。

【讨论】:

  • 是的,就是这样。由于我无法使用该方法使其工作,因此我将 do select 操作替换为 do while 并相应地进行了一些调整,现在它可以工作了。我仍然认为 do select 在这种情况下的行为没有意义,但这就是它的工作方式。 do while 不会发生同样的事情,因为每次执行 peoplecode 时,都会创建一个新游标。感谢您的洞察力!
猜你喜欢
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2012-04-05
相关资源
最近更新 更多