【问题标题】:Application engine message log action in peoplesoftpeoplesoft 中的应用程序引擎消息日志操作
【发布时间】:2022-11-23 16:25:24
【问题描述】:

我正在 PeopleSoft 中开发新的自定义应用程序引擎,必须在 PS_JRNL_LN 记录中更新 Bussiness_unit_pc。我已经完成了它并且工作正常。但是我的经理被要求更改应用程序引擎的消息日志。我必须打印更新的业务单位 pc Journal_id 的计数。我在消息日志参数中写了%AESECTION,%AESTEP,%SQLROWS,PS_JRNL_LN,%BIND(PROJECT_ID)这些Meta-SQL,消息集是18030,消息编号3。我附上了输出消息日志的图片。输出即将到来,好像为一个 journal_id 更新了 32 行, 它打印了 32 次 journal_id。但要求是我必须显示为特定 Journal_id 更新了多少行。过去 3 天我一直在处理此消息日志操作。有人可以帮忙吗?

谢谢, 巴鲁enter image description here

我必须在消息日志中显示特定 Journal_i 更新了多少行。我不想打印 32 次 journal_id。查看图片以获得更多说明

谢谢, 巴鲁

【问题讨论】:

  • 看起来你在记录中循环太多了。代码可能会有所帮助。您是在 PeopleCode 中循环还是在使用 select 和 SQL Application Engine?分享您的选择和更新。
  • 我正在使用选择和 SQL 应用程序引擎,这里是 DO SELECT SQL %SelectInit(JOURNAL_ID,PROJECT_ID,JOURNAL_DATE, BUSINESS_UNIT_PC ,LASTUPDOPRID ,DTTM_STAMP) SELECT A.JOURNAL_ID ,A.PROJECT_ID ,A.JOURNAL_DATE ,A.BUSINESS_UNIT_PC ,%OperatorId , %CurrentDateTimeIn FROM PS_JRNL_LN A WHERE A.PROJECT_ID<> ' ' AND A.BUSINESS_UNIT_PC=' ' AND A.JOURNAL_DATE BETWEEN %Bind(START_DATE) AND %Bind(END_DATE)
  • 此处更新 SQL UPDATE PS_JRNL_LN A SET A.BUSINESS_UNIT_PC = A.BUSINESS_UNIT, A.PROCESS_INSTANCE=%Bind(DCP_RUN_UPD_AET.PROCESS_INSTANCE) WHERE A.PROJECT_ID <> ' ' AND A.BUSINESS_UNIT_PC=' ' AND A.JOURNAL_ID = %Bind(DCP_ARETUN_UPD) .JOURNAL_ID) 和 A.JOURNAL_DATE =%Bind(DCP_RUN_UPD_AET.JOURNAL_DATE)
  • 您能否为该消息日志提出任何解决方案,这将对您有所帮助。

标签: oracle peoplesoft


【解决方案1】:

来自 cmets 的信息:

执行选择操作:

%SelectInit(JOURNAL_ID, PROJECT_ID, JOURNAL_DATE, BUSINESS_UNIT_PC,
 LASTUPDOPRID, DTTM_STAMP) 
SELECT A.JOURNAL_ID, A.PROJECT_ID, A.JOURNAL_DATE, A.BUSINESS_UNIT_PC,
 %OperatorId, %CurrentDateTimeIn 
FROM PS_JRNL_LN A 
WHERE A.PROJECT_ID<> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_DATE BETWEEN %Bind(START_DATE) AND %Bind(END_DATE)

动作

UPDATE PS_JRNL_LN A 
SET A.BUSINESS_UNIT_PC = A.BUSINESS_UNIT,
 A.PROCESS_INSTANCE=%Bind(DCP_RUN_UPD_AET.PROCESS_INSTANCE) 
WHERE A.PROJECT_ID <> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_ID = %Bind(DCP_RUN_UPD_AET.JOURNAL_ID)
 AND A.JOURNAL_DATE =%Bind(DCP_RUN_UPD_AET.JOURNAL_DATE)

问题是 Do Select Action 是一个循环,它为每一行执行后续的 SQL 操作,并且您的 select 语句不会返回不同的行,因为并非所有键都被使用。您可以更新 select 语句,指定所有键。

更简单的解决方案可能是完全删除 Do Select Action 并将您的 SQL 操作更新为以下内容:

UPDATE PS_JRNL_LN A 
SET A.BUSINESS_UNIT_PC = A.BUSINESS_UNIT,
 A.PROCESS_INSTANCE=%Bind(DCP_RUN_UPD_AET.PROCESS_INSTANCE) 
WHERE A.PROJECT_ID <> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_DATE BETWEEN %Bind(START_DATE) AND %Bind(END_DATE)

【讨论】:

    猜你喜欢
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2011-02-03
    • 2015-04-02
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多