问题标签 [peoplecode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
235 浏览

peoplesoft - 人员代码:1 个变量

我试图了解如何定义和使用 : 变量。我已经看到它们主要用于 SQL (SQLExec) 命令,并且我尝试查看它们的定义位置。

下面是一个例子,我看到 :1 正在使用,但我不知道它是在哪里定义的:

:1、:2、:3、:4 和 :5 有 ':' 变量。任何专门用于了解更多信息的帮助/建议将不胜感激。

0 投票
1 回答
196 浏览

peoplesoft - Excel 到 CI 人员代码用法

我试图更好地理解 Excel 到组件接口定义如何使用 Component 和/或 Record PeopleCode 来执行业务逻辑/验证。

如果我打开一个组件定义(我的组件接口 (CI) 使用)并单击“结构”选项卡,我会看到组件中所有记录和字段的列表。我可以展开记录并右键单击特定字段,它会弹出一个“组件 PeopleCode”编辑器窗口。我注意到,对于记录上的特定字段,组件 PeopleCode 中没有任何代码,但实际的 Record PeopleCode 确实具有相同字段的 PeopleCode。我的问题是当 Excel 到 CI 运行时,它是否执行仅与组件关联的 PeopleCode 和/或 Record PeopleCode?这里有几个屏幕截图来说明上述情况:

记录字段 ITM_STATUS_FUTURE 的 PeopleCode(有代码):

在此处输入图像描述

相同记录/字段 ITM_STATUS_FUTURE 的组件 PeopleCode:

在此处输入图像描述

我想知道 CI 是否会同时执行上面的 Component 和 Record Peoplecode。提前致谢。

0 投票
2 回答
1044 浏览

peoplesoft - 应用程序引擎人员代码绑定变量

我在 Application Engine 程序中有以下 PeopleCode 步骤,该程序使用文件布局读取 CSV 文件,然后将数据插入表中,我只是想更好地了解代码行 ( &SQL1 = CreateSQL("%Insert(:1)");) 中的下面的脚本被生成。看起来 CreateSQL 在 Insert 语句中使用了绑定变量 (:1),但我正在努力寻找在程序中定义该变量的位置。

0 投票
1 回答
1304 浏览

peoplesoft - Peoplecode SQL 更新额外变量的设置值

&ItmField我修改了下面的应用程序引擎程序,我在程序读取的 CSV 文件布局中添加了一个附加字段 ( )。它正在正确更新(SQL UPDATE)字段 ITEM_FIELD_C10_B 但是我在 Trace 文件中注意到 SQL UPDATE 语句的脚本是为了更新SETIDINV_ITEM_IDITEM_FIELD_C10_B(而不仅仅是字段ITEM_FIELD_C10_B) WHEREINV_ITEM_ID等于&InvItemId并且SETID等于“SHARE”。SQL 更新应该只将ITEM_FIELD_C10_B字段设置为&ItmFieldWHEREINV_ITEM_ID等于&InvItemIdSETID等于“SHARE”。

更新的代码靠近底部,以“KDR - 10/11/18”开头 跟踪代码也在下方。

跟踪代码:

10/12/18 编辑:

如果我按如下方式添加 SelectByKey:

然后在我的跟踪文件中,我看到以下内容,它似乎正在设置要更新的表中的每个字段:

0 投票
0 回答
332 浏览

peoplesoft - 应用程序引擎程序 - 发生 NULL 插入错误

我有下面的应用程序引擎程序,我正在稍微修改,现在我得到一个 NULL 插入错误(无法将值 NULL 插入列 'EFFDT',表 'XXX.dbo.PS_ITM_VNDR_UOM_PR'。在While块中有一条SQLExec语句:

SQLExec("SELECT A.VENDOR_ID FROM PS_ITM_VENDOR A, PS_ITM_VNDR_UOM B WHERE A.SETID = B.SETID AND A.INV_ITEM_ID = B.INV_ITEM_ID AND A.VENDOR_SETID = B.VENDOR_SETID AND A.VENDOR_ID = B.VENDOR_ID AND A.VENDOR_ID = :1 AND A.INV_ITEM_ID = :2 AND A.ITM_ID_VNDR = :3 AND A.ITM_VNDR_PRIORITY = 1 AND B.UNIT_OF_MEASURE = :4 AND B.CONVERSION_RATE = :5", &VendorId, &InvItemId, &ItmIdVndr, &UOM, &ConvRate, &VendorId_check);

需要修改程序以允许在尚不存在 UOM (UNIT_OF_MEASURE) 的地方插入新记录,因此我删除了对 UNIT_OF_MEASURE 的引用,如下所示,以便程序评估为 Else 条件:

SQLExec("SELECT A.VENDOR_ID FROM PS_ITM_VENDOR A, PS_ITM_VNDR_UOM B WHERE A.SETID = B.SETID AND A.INV_ITEM_ID = B.INV_ITEM_ID AND A.VENDOR_SETID = B.VENDOR_SETID AND A.VENDOR_ID = B.VENDOR_ID AND A.VENDOR_ID = :1 AND A.INV_ITEM_ID = :2 AND A.ITM_ID_VNDR = :3 AND A.ITM_VNDR_PRIORITY = 1 AND B.CONVERSION_RATE = :4", &VendorId, &InvItemId, &ItmIdVndr, &ConvRate, &VendorId_check);

但是,当我从上述代码块中删除 UNIT_OF_MEASURE SQL 和变量时,我会在表 ITM_VNDR_UOM_PR 的 EFFDT 列上收到 NULL 插入错误。似乎 &SQL CreateSQL 中定义的 &UOM 变量没有延续到插入 SQL 代码中。为什么会发生这种情况?在插入新行时,我可以做些什么来纠正并仍然能够使用 &UOM 的原始实例/值?以下是整个程序步骤:

0 投票
2 回答
2507 浏览

peoplesoft - 如何在变量中存储多个 SQLExec 值

我想知道在应用程序引擎 PeopleCode 中是否可以运行 SQLExec 命令,如果返回多行,它们是如何存储在变量中的?

例如 - 我正在添加以下代码:

SQLExec("SELECT C.UNIT_OF_MEASURE FROM PS_ITM_VNDR_UOM_PR C WHERE C.INV_ITEM_ID = :1 AND C.VENDOR_ID = :2 AND C.EFFDT = (SELECT MAX(C1.EFFDT) FROM PS_ITM_VNDR_UOM_PR C1 WHERE C.SETID = C1.SETID AND C.INV_ITEM_ID = C1.INV_ITEM_ID AND C.VENDOR_SETID = C1.VENDOR_SETID AND C.VENDOR_ID = C1.VENDOR_ID AND C.VNDR_LOC = C1.VNDR_LOC AND C.UNIT_OF_MEASURE = C1.UNIT_OF_MEASURE AND C.CURRENCY_CD = C1.CURRENCY_CD AND C.QTY_MIN = C1.QTY_MIN)" , &InvItemId, &VendorID, &UOMResult

在某些情况下,可能会从 SQL 查询将不止一行(值)传递回 &UOMResult 变量,我不确定 PeopleCode 将如何处理此问题,但最终我想将 &UOMResult 变量中的值与另一个进行比较名为 &UOM 的变量,如果它们不同(没有匹配项),则执行某些“东西”,否则执行“其他东西”。

如果 SQL 返回的值超过 1 个,变量是否会转换为数组?只是想知道这会是什么样子......感谢您的任何反馈。

10/17/18 编辑:

0 投票
1 回答
1307 浏览

peoplesoft - 如果 SQL Fetch/Loop 的最后一行未找到匹配项,则执行逻辑

我有以下正在修改的应用程序引擎程序。我基本上是为在 CSV/文件布局中输入的项目的度量单位 (&UOMResult) 与为同一项目检索到的现有行的值不匹配的情况添加代码,然后我执行 REC .INSERT,否则如果找不到匹配项,那么我将通过不同的 REC1.INSERT 逻辑。

我的理解是 SQL Fetch 函数(&SQL2.Fetch)一次只能获取一行数据并将其存储到一个变量中(如果我错了,请纠正我),因此我必须包含一个 While 循环语句来继续获取所有行,一次一个(如果有 &SQL2.Fetch 的替代方法可以在同一迭代中处理多行,请告诉我)。基于此,我在代码中添加了循环 &SQL2.Fetch 并且如果有匹配的行(到变量 &UOM)然后我做一个 REC.INSERT 处理然后中断循环,否则它继续循环(使用继续功能-不知道是否有必要)通过比较下一行,直到找到匹配项并中断或-(我打算这样做)进入 REC2.Insert 逻辑。我不

现在它的编码方式恐怕在永远不匹配的情况下会是一个无限循环。我希望在整个循环迭代完成后(已读取最后一行)并且没有匹配项,然后转到 REC2.Insert 逻辑。有没有办法让代码知道最后一行已经循环通过,如果是这样,我该如何相应地更改它?

您将在上面的代码中看到对 &SQL2 和 While 语句的引用,以及我在比较最后一行后如何处理的“需要帮助”注释。也欢迎任何有关整体程序流程的建议。谢谢!

10/23/18 编辑:

0 投票
1 回答
3246 浏览

peoplesoft - PeopleCode中行、行集的功能

我试图更好地理解行和行集在 PeopleCode 中的用途?我已经阅读了 PeopleBooks,但仍然觉得我没有很好的理解。我希望更多地了解这些与应用程序引擎程序有关的内容。也许通过一个例子可能会有所帮助。以下是我的一些具体问题:

  1. 我了解 Rowsets、Row、Record 和 Field 用于访问组件缓冲区数据,但是对于通过 Process Scheduler 运行的独立应用程序引擎程序仍然是这种情况吗?

  2. CreateSQL与使用 SQL 对象/函数( 、、SQLExec等)相比,使用这些有什么需要或优势?我经常在 AE 程序中看到CreateRowset对象被实例化并使用.Fill带有 SQL WHERE 子句的方法,但我不太明白为什么不使用 SQL。

  3. 我在 PeopleBooks 中看到组件滚动中的 Row 对象是一行,组件滚动与行有何关系?我已经看到对具有不同滚动级别的行的引用,这只是分组和嵌套相关数据的一种方式吗?

  4. 实例化CreateRowset对象后,它在程序中的典型用途是什么?您将如何对行集检索到的数据执行逻辑(If、Then、Else 等),或使用它来更新数据?

我很感激你可以分享的任何见解。

0 投票
1 回答
72 浏览

peoplesoft - 变量的 PeopleCode 反射

PeopleCode 是否有类似于 C# 中的反射的东西,我可以使用存储在字符串中的变量名访问变量?我知道 @ 运算符,但我认为它仅适用于字段和记录(如果我错了,请纠正我。我试过但无法让它工作。)

基本上,我需要按名称访问组件变量,名称本身就是变量。

0 投票
1 回答
478 浏览

peoplesoft - 在 PeopleCode 中为提示表重用 SQL 语句

我在 PeopleSoft 中有一个页面,其中包含许多类似的字段。每个人都使用一个设置为动态视图的提示表。当一个字段被更改时,它会填充另外两个字段的 SQLText 属性,并结合刚刚选择的值。由于这个 SQL 语句每次基本上都是一样的,我希望我能做这样的事情:

不幸的是,SQL.Value 属性返回包含绑定变量 :1 和 :2 的字符串,而不是被绑定的值。有没有什么方法可以让那个字符串被替换为值,而不是做我试图离开这里的相同类型的字符串连接?谢谢。

编辑:嗯,这不是我想要的,但我选择了以下内容。它有效,如果比我希望的更冗长的话。

如果您有更清洁的解决方案,我很想听听。再次感谢!

再次编辑:下面彼得的评论让我清理了很多。谢谢!