0

我有以下功能,我试图在 FSCM 9.2 的支付周期管理器中的打印机输出目标中修改为默认值,但需要更好地了解当前自定义正在做什么。

我们在 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 语句 (PYCYCL_STATRPT.OUTDEST) 中的第二个 Bind 变量是什么设置了 OUTDEST 字段?

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

4

1 回答 1

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 语句中,函数的返回值是否以任何方式用于 Evaluate 指令?看起来 SQLExec 语句 (PYCYCL_STATRPT.OUTDEST) 中的第二个 Bind 变量是什么设置了 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

于 2019-07-19T08:47:57.150 回答