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