PeopleCode函数上下文

时间:2019-07-18 16:46:51

标签: peoplesoft peoplecode

我试图在FSCM 9.2的Pay Cycle Manager中的打印机输出目标中将以下功能修改为默认值,但是需要更好地了解当前的自定义功能。

我们在Record PeopleCode(PYCYCL_STATRPT.PAY_RUN_AP_STATUS)(RowInit事件)中有一个自定义函数,其定义如下:

Function GHS_Set_OutDest(&STATUS) Returns string;
   PYCYCL_STATRPT.SERVERNAME = "PSNT";
   PYCYCL_STATRPT.OUTDESTTYPE = "2";
   If &STATUS = "Z" Or
         &STATUS = "C" Then
      &GHS_STRING_ID = "OUTDEST_POSPAY";
   Else
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 3) = "AUX" Then
         &GHS_STRING_ID = "OUTDEST_AUX";
      End-If;

      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 3) = "CTS" Then
         &GHS_STRING_ID = "OUTDEST_CTS";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 4) = "MAIN" Then
         &GHS_STRING_ID = "OUTDEST_MAIN";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 5) = "POSPY" Then
         &GHS_STRING_ID = "";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 5) = "QUICK" Then
         &GHS_STRING_ID = "OUTDEST_QUICK";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 6) = "REFUND" Then
         &GHS_STRING_ID = "OUTDEST_REFUND";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 2) = "R_" Then
         &GHS_STRING_ID = "OUTDEST_REFUND";
      End-If;
      If Substring(PYCYCL_STATRPT.PAY_CYCLE, 1, 5) = "RSTRT" Then
         &GHS_STRING_ID = "OUTDEST_RSTRT";
      End-If;
   End-If;
   SQLExec("SELECT STRING_TEXT FROM PS_STRINGS_TBL WHERE PROGRAM_ID = 'APY2055' AND STRING_ID = :1", &GHS_STRING_ID, &GHSOUTDEST);
   /*WinMessage("GHS_Set_OutDest_1: " | PYCYCL_STATRPT.PAY_RUN_AP_STATUS | " " | &STATUS | " " | &GHSOUTDEST, 64);*/
   Return (&GHSOUTDEST);
End-Function;

据我所知,此函数将变量&GHSOUTDEST返回到调用它的代码中,我相信它低于在其他Record PeopleCode(PYCYCL_STATRPT.OUTDESTTYPE)(FieldChange事件)上声明的位置。 :

Declare Function GHS_Set_OutDest PeopleCode PYCYCL_STATRPT.PAY_RUN_AP_STATUS RowInit; /* GHS, declared in PYCYCL_STATRPT.OUTDESTTYPE.FieldChange */

&OPRID = %OperatorId;

Evaluate PYCYCL_STATRPT.OUTDESTTYPE
When = "2"
   SQLExec("select srvrdestfile from ps_opr_def_pycycl where oprid = :1", &OPRID, PYCYCL_STATRPT.OUTDEST);
   Break;
When = "3"
   SQLExec("select srvrdestprinter from ps_opr_def_pycycl where oprid = :1", &OPRID, PYCYCL_STATRPT.OUTDEST);
   Break;
When = "6"
   SetDefault(PYCYCL_STATRPT.OUTDEST);
   Break;
End-Evaluate;

/* PYCYCL_STATRPT.OUTDEST = GHS_Set_OutDest(PYCYCL_STATRPT.PAY_RUN_AP_STATUS); */

我的问题是,如果函数的声明位置(紧接在上方)是调用PAY_RUN_AP_STATUS字段中定义的主要函数,为什么我看不到在声明语句中使用输出(返回)变量(&GHSOUTDEST)?在函数声明下方的Evaluate语句中,是否以任何方式将函数的返回值用于Evaluate指令?看起来SQLExec语句中的第二个Bind变量(PYCYCL_STATRPT.OUTDEST)是设置OUTDEST字段的内容?

从这里开始,我希望能够默认设置特定的打印机目标路径,具体取决于支付周期管理器所处的步骤(状态),因为它需要转到其他位置进行支票打印,然后才可以用于打印建议。

1 个答案:

答案 0 :(得分:0)

  

如果函数的声明位置(紧接在上面)是什么   调用PAY_RUN_AP_STATUS字段中定义的主要函数,为什么   我没有看到正在使用的输出(返回)变量(&GHSOUTDEST)   在宣言声明中?

这就是声明的工作方式。函数可以具有参数和返回值,但它们是在定义中指定的,而不是在声明中指定的。您的人员代码说:I want to use the function GHS_Set_OutDest defined at PYCYCL_STATRPT.PAY_RUN_AP_STATUS RowInit. Go check the definition and what it needs(parameters) and returns, so that I can use it.

  

在函数声明下方的Evaluate语句中,是   从以任何方式用于评估的函数返回值   指令?看起来像SQLExec中的2nd Bind变量   语句(PYCYCL_STATRPT.OUTDEST)是设置OUTDEST的内容   场?

该函数实际上从未被调用。它在Evaluate语句上方声明,但未使用。它会在下面使用,但在此处进行注释:

/* PYCYCL_STATRPT.OUTDEST = GHS_Set_OutDest(PYCYCL_STATRPT.PAY_RUN_AP_STATUS); */
  

在这里,我希望能够在特定的打印机中默认设置   目标路径,取决于付款周期的哪一步(状态)   经理在,因为它需要去其他地方检查   打印,然后打印建议。

该功能将目的地类型设置为2(PYCYCL_STATRPT.OUTDESTTYPE = "2";),并输出到文件。函数的其余部分根据&STATUS参数获取内容。尚不清楚,因为它是自定义代码:在PS_STRINGS_TBL中没有默认的OUTDEST_%条目。 打印机的OUTDESTTYPE为3