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