在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返回给调用它的代码,我认为它在其他记录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)?在函数声明下面的计算语句中,函数的返回值是否以任何方式用于计算指令?看起来,SQLExec语句(PYCYCL_STATRPT.OUTDEST)中的第二个绑定变量是什么设置了OUTDEST字段?
从这里开始,我希望能够在特定的打印机目标路径中默认设置,这取决于薪资周期管理器所处的步骤(状态),因为它需要转到不同的位置进行检查打印,然后用于打印通知。
发布于 2019-07-19 08:47:57
如果声明函数的地方(上面)是什么调用在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.
在函数声明下面的计算语句中,函数的返回值是否以任何方式用于计算指令?看起来,SQLExec语句(PYCYCL_STATRPT.OUTDEST)中的第二个绑定变量是什么设置了OUTDEST字段?
这个函数实际上从未被调用过。它被声明在评估语句之上,但它没有被使用。它将在下面使用,但在这里作了评论:
/* PYCYCL_STATRPT.OUTDEST = GHS_Set_OutDest(PYCYCL_STATRPT.PAY_RUN_AP_STATUS); */从这里开始,我希望能够在特定的打印机目标路径中默认设置,这取决于薪资周期管理器所处的步骤(状态),因为它需要转到不同的位置进行检查打印,然后用于打印通知。
该函数将目标类型设置为2 (PYCYCL_STATRPT.OUTDESTTYPE = "2";),输出到文件。函数的其余部分基于&STATUS参数获取某些内容。不太清楚,因为它是自定义代码:在PS_STRINGS_TBL中没有默认的OUTDEST_%条目。打印机的OUTDESTTYPE是3。
https://stackoverflow.com/questions/57099275
复制相似问题