Unterminated String Literal,NotAFunctionException

2020-09-12 06:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,
我现在已经向IDM的几位专家展示了这一点,而且似乎没人能弄清楚这一点。 我在工作中有一个全局脚本及其链接。 当VDS将MX_HCM_EMPLOYEE记录送入登台区域时,将触发向IdS Main的副本,并且我们已自定义以查看来自HCM的某些属性并根据该信息分配一些特权。 所有PRIV MSKEYVALUE都存储在全局常量中。

任务执行时,出现以下错误:

似乎是说脚本中有一个字符串没有闭合的引号,因此,它无法加载脚本,然后给出NotAFunctionException。 To Identity Store通行证上的呼叫是这样的:

$ FUNCTION.aZ_sap_getPriviliges3(%P0001-ISMANAGER%!!%P0001-ISMANAGERCOMP%!!%P0001-WERKS%!!%P0000-STAT2%!!%P0001-PERSK%)$$

这是脚本本身:

//主要功能:aZ_sap_getPriviliges3
//$ FUNCTION.aZ_sap_getPriviliges3(%P0001-ISMANAGER%!!%P0001-ISMANAGERCOMP%!!%P0001-WERKS%!!%P0000-STAT2%!!%P0001-PERSK%)$$


 函数aZ_sap_getPriviliges3(Par){


 var result ="";
 var country ="";
 var temp = Par.split(" !!");
 var isManager = temp [0]; //P0001-ISMANAGER
 var isManagerComp = temp [1]; //P0001-ISMANAGERCOMP
 var personArea = temp [2]; //P0001-WERKS:2070人员区域
 var empStatus = parseInt(temp [3],10); //P0000-STAT2:3(0,1,2,3)就业状态
 var statusU0 = temp [4]; //P0001-PERSK
 var idStore ="%$ glb.SAP_MASTER_IDS_ID%";
 var chSites ="%$ glb.SAP_CH_SITES%"; //这样格式化:[1100],[1112],[1113]
 var frSites ="%$ glb.SAP_FR_SITES%";
 var usSites ="%$ glb.SAP_US_SITES%";
 var sgSites ="%$ glb.SAP_SG_SITES%";
 var amOthSites ="%$ glb.SAP_AM_OTH_SITES%";
 var upSites ="%$ glb.SAP_UP_SITES%";
 var seAsiaSites ="%$ glb.SAP_SE_ASIA_SITES%";
 var mgrFR ="%$ glb.MANAGER_FR%"; //这样格式化: | 
 var empFR ="%$ glb.EMPLOYEE_FR%";
 var mgrUP ="%$ glb.MANAGER_UP%";
 var empUP ="%$ glb.EMPLOYEE_UP%";
 var mgrSG ="%$ glb.MANAGER_SG%';
 var empSG ="%$ glb.EMPLOYEE_SG%";
 var mgrAMoth ="%$ glb.MANAGER_AM_OTH%";
 var empAMoth ="%$ glb.EMPLOYEE_AM_OTH%";
 var mgrCH ="%$ glb.MANAGER_CH%";
 var empCH ="%$ glb.EMPLOYEE_CH%";
 var mgrSEasia ="%$ glb.MANAGER_SE_ASIA%";
 var empSEasia ="%$ glb.EMPLOYEE_SE_ASIA%";
 var mgrUS ="%$ glb.MANAGER_US%";
 var mgrUS2030 ="%$ glb.MANAGER_US_2030%";
 var mgrUS2040 ="%$ glb.MANAGER_US_2040%";
 var mgrUS2050 ="%$ glb.MANAGER_US_2050%";
 var mgrUS2060 ="%$ glb.MANAGER_US_2060%";
 var mgrUS2070 ="%$ glb.MANAGER_US_2070%";
 var empUSnotU0all ="%$ glb.EMPLOYEE_US_NOTU0_ALL%";
 var empUSnotU02030 ="%$ glb.EMPLOYEE_US_NOTU0_2030%";
 var empUSnotU02040 ="%$ glb.EMPLOYEE_US_NOTU0_2040%";
 var empUSnotU02050 ="%$ glb.EMPLOYEE_US_NOTU0_2050%";
 var empUSnotU02060 ="%$ glb.EMPLOYEE_US_NOTU0_2060%";
 var empUSnotU02070 ="%$ glb.EMPLOYEE_US_NOTU0_2070%";
 var empUSU02030 ="%$ glb.EMPLOYEE_US_U0_2030%";
 var empUSU02040 ="%$ glb.EMPLOYEE_US_U0_2040%";
 var empUSU02050 ="%$ glb.EMPLOYEE_US_U0_2050%";
 var empUSU02060 ="%$ glb.EMPLOYEE_US_U0_2060%";
 var empUSU02070 ="%$ glb.EMPLOYEE_US_U0_2070%";
 var mgrComp ="%$ glb.MANAGER_COMPENSATION%";
 var mgrCompFR ="%$ glb.MANAGER_COMPENSATION_FR%";
 var mgrCompUS ="%$ glb.MANAGER_COMPENSATION_US%";
 var mgrCompOth ="%$ glb.MANAGER_COMPENSATION_OTH%";

 if(Par =="" || Par == null)返回Par;
 if(empStatus!= 3){
 结果=" {e}";
 返回结果;
 }

 if(chSites.indexOf(personnelArea)> = 0)country =" CH";
 if(frSites.indexOf(personnelArea)> = 0)country =" FR";
 if(usSites.indexOf(personnelArea)> = 0)country =" US";
 if(sgSites.indexOf(personnelArea)> = 0)country =" SG";
 if(amOthSites.indexOf(personnelArea)> = 0)country =" AM";
 if(upSites.indexOf(personnelArea)> = 0)country =" UP";
 if(seAsiaSites.indexOf(personnelArea)> = 0)country =" SA";
 if(country =="")country =" OTH";

 if(isManager ==" X" || isManager ==" 1"){
 开关(国家){
 情况" CH":结果= mgrCH; 打破;
 情况" FR":结果= mgrFR; 打破;
 情况" SG":结果= mgrSG; 打破;
 情况" AM":结果= mgrAMoth; 打破;
 情况" UP":结果= mgrUP; 打破;
 情况" SA":结果= mgrSEasia; 打破;
 案例"美国":{
 结果= mgrUS;
 switch(personnelArea){
 情况" 2030":结果+ =" |"  + mgrUS2030; 打破;
 情况" 2040":结果+ =" |"  + mgrUS2040; 打破;
 情况" 2050":结果+ =" |"  + mgrUS2050; 打破;
 情况" 2060":结果+ =" |"  + mgrUS2060; 打破;
 情况" 2070":结果+ =" |"  + mgrUS2070; 打破;
 }
 };
 }

 if(isManagerComp ==" X" || isManagerComp ==" 1"){
 结果+ =" |"  + mgrComp;
 开关(国家){
 情况" FR":结果+ =" |"  + mgrCompFR; 打破;
 情况"美国":结果+ =" |"  + mgrCompUS; 打破;
 默认值:结果+ =" |"  + mgrCompOth; 打破;
 }
 }
 }其他{
 开关(国家){
 情况" CH":结果= empCH; 打破;
 情况" FR":结果= empFR; 打破;
 情况" SG":结果= empSG; 打破;
 情况" AM":结果= empAMoth; 打破;
 情况" UP":结果= empUP; 打破;
 案例" SA":结果= empSEasia; 打破;
 案例"美国":{
 if(statusU0 ==" U0"){
 switch(personnelArea){
 案例" 2030":结果= empUSU02030; 打破;
 案例" 2040":结果= empUSU02040; 打破;
 案例" 2050":结果= empUSU02050; 打破;
 情况" 2060":结果= empUSU02060; 打破;
 案例" 2070":结果= empUSU02070; 打破;
 }
 }其他{
 结果= empUSnotU0all;
 switch(personnelArea){
 情况" 2030":结果+ =" |"  + empUSnotU02030; 打破;
 情况" 2040":结果+ =" |"  + empUSnotU02040; 打破;
 情况" 2050":结果+ =" |"  + empUSnotU02050; 打破;
 情况" 2060":结果+ =" |"  + empUSnotU02060; 打破;
 情况" 2070":结果+ =" |"  + empUSnotU02070; 打破;
 }
 }
 };
 }
 }

 返回结果;
 }
 

外面有没有人看到任何时髦的东西,这些东西会引起我所看到的? 预先感谢您的宝贵时间。

(51.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,
我现在已经向IDM的几位专家展示了这一点,而且似乎没人能弄清楚这一点。 我在工作中有一个全局脚本及其链接。 当VDS将MX_HCM_EMPLOYEE记录送入登台区域时,将触发向IdS Main的副本,并且我们已自定义以查看来自HCM的某些属性并根据该信息分配一些特权。 所有PRIV MSKEYVALUE都存储在全局常量中。

任务执行时,出现以下错误:

似乎是说脚本中有一个字符串没有闭合的引号,因此,它无法加载脚本,然后给出NotAFunctionException。 To Identity Store通行证上的呼叫是这样的:

$ FUNCTION.aZ_sap_getPriviliges3(%P0001-ISMANAGER%!!%P0001-ISMANAGERCOMP%!!%P0001-WERKS%!!%P0000-STAT2%!!%P0001-PERSK%)$$

这是脚本本身:

//主要功能:aZ_sap_getPriviliges3
//$ FUNCTION.aZ_sap_getPriviliges3(%P0001-ISMANAGER%!!%P0001-ISMANAGERCOMP%!!%P0001-WERKS%!!%P0000-STAT2%!!%P0001-PERSK%)$$


 函数aZ_sap_getPriviliges3(Par){


 var result ="";
 var country ="";
 var temp = Par.split(" !!");
 var isManager = temp [0]; //P0001-ISMANAGER
 var isManagerComp = temp [1]; //P0001-ISMANAGERCOMP
 var personArea = temp [2]; //P0001-WERKS:2070人员区域
 var empStatus = parseInt(temp [3],10); //P0000-STAT2:3(0,1,2,3)就业状态
 var statusU0 = temp [4]; //P0001-PERSK
 var idStore ="%$ glb.SAP_MASTER_IDS_ID%";
 var chSites ="%$ glb.SAP_CH_SITES%"; //这样格式化:[1100],[1112],[1113]
 var frSites ="%$ glb.SAP_FR_SITES%";
 var usSites ="%$ glb.SAP_US_SITES%";
 var sgSites ="%$ glb.SAP_SG_SITES%";
 var amOthSites ="%$ glb.SAP_AM_OTH_SITES%";
 var upSites ="%$ glb.SAP_UP_SITES%";
 var seAsiaSites ="%$ glb.SAP_SE_ASIA_SITES%";
 var mgrFR ="%$ glb.MANAGER_FR%"; //这样格式化: | 
 var empFR ="%$ glb.EMPLOYEE_FR%";
 var mgrUP ="%$ glb.MANAGER_UP%";
 var empUP ="%$ glb.EMPLOYEE_UP%";
 var mgrSG ="%$ glb.MANAGER_SG%';
 var empSG ="%$ glb.EMPLOYEE_SG%";
 var mgrAMoth ="%$ glb.MANAGER_AM_OTH%";
 var empAMoth ="%$ glb.EMPLOYEE_AM_OTH%";
 var mgrCH ="%$ glb.MANAGER_CH%";
 var empCH ="%$ glb.EMPLOYEE_CH%";
 var mgrSEasia ="%$ glb.MANAGER_SE_ASIA%";
 var empSEasia ="%$ glb.EMPLOYEE_SE_ASIA%";
 var mgrUS ="%$ glb.MANAGER_US%";
 var mgrUS2030 ="%$ glb.MANAGER_US_2030%";
 var mgrUS2040 ="%$ glb.MANAGER_US_2040%";
 var mgrUS2050 ="%$ glb.MANAGER_US_2050%";
 var mgrUS2060 ="%$ glb.MANAGER_US_2060%";
 var mgrUS2070 ="%$ glb.MANAGER_US_2070%";
 var empUSnotU0all ="%$ glb.EMPLOYEE_US_NOTU0_ALL%";
 var empUSnotU02030 ="%$ glb.EMPLOYEE_US_NOTU0_2030%";
 var empUSnotU02040 ="%$ glb.EMPLOYEE_US_NOTU0_2040%";
 var empUSnotU02050 ="%$ glb.EMPLOYEE_US_NOTU0_2050%";
 var empUSnotU02060 ="%$ glb.EMPLOYEE_US_NOTU0_2060%";
 var empUSnotU02070 ="%$ glb.EMPLOYEE_US_NOTU0_2070%";
 var empUSU02030 ="%$ glb.EMPLOYEE_US_U0_2030%";
 var empUSU02040 ="%$ glb.EMPLOYEE_US_U0_2040%";
 var empUSU02050 ="%$ glb.EMPLOYEE_US_U0_2050%";
 var empUSU02060 ="%$ glb.EMPLOYEE_US_U0_2060%";
 var empUSU02070 ="%$ glb.EMPLOYEE_US_U0_2070%";
 var mgrComp ="%$ glb.MANAGER_COMPENSATION%";
 var mgrCompFR ="%$ glb.MANAGER_COMPENSATION_FR%";
 var mgrCompUS ="%$ glb.MANAGER_COMPENSATION_US%";
 var mgrCompOth ="%$ glb.MANAGER_COMPENSATION_OTH%";

 if(Par =="" || Par == null)返回Par;
 if(empStatus!= 3){
 结果=" {e}";
 返回结果;
 }

 if(chSites.indexOf(personnelArea)> = 0)country =" CH";
 if(frSites.indexOf(personnelArea)> = 0)country =" FR";
 if(usSites.indexOf(personnelArea)> = 0)country =" US";
 if(sgSites.indexOf(personnelArea)> = 0)country =" SG";
 if(amOthSites.indexOf(personnelArea)> = 0)country =" AM";
 if(upSites.indexOf(personnelArea)> = 0)country =" UP";
 if(seAsiaSites.indexOf(personnelArea)> = 0)country =" SA";
 if(country =="")country =" OTH";

 if(isManager ==" X" || isManager ==" 1"){
 开关(国家){
 情况" CH":结果= mgrCH; 打破;
 情况" FR":结果= mgrFR; 打破;
 情况" SG":结果= mgrSG; 打破;
 情况" AM":结果= mgrAMoth; 打破;
 情况" UP":结果= mgrUP; 打破;
 情况" SA":结果= mgrSEasia; 打破;
 案例"美国":{
 结果= mgrUS;
 switch(personnelArea){
 情况" 2030":结果+ =" |"  + mgrUS2030; 打破;
 情况" 2040":结果+ =" |"  + mgrUS2040; 打破;
 情况" 2050":结果+ =" |"  + mgrUS2050; 打破;
 情况" 2060":结果+ =" |"  + mgrUS2060; 打破;
 情况" 2070":结果+ =" |"  + mgrUS2070; 打破;
 }
 };
 }

 if(isManagerComp ==" X" || isManagerComp ==" 1"){
 结果+ =" |"  + mgrComp;
 开关(国家){
 情况" FR":结果+ =" |"  + mgrCompFR; 打破;
 情况"美国":结果+ =" |"  + mgrCompUS; 打破;
 默认值:结果+ =" |"  + mgrCompOth; 打破;
 }
 }
 }其他{
 开关(国家){
 情况" CH":结果= empCH; 打破;
 情况" FR":结果= empFR; 打破;
 情况" SG":结果= empSG; 打破;
 情况" AM":结果= empAMoth; 打破;
 情况" UP":结果= empUP; 打破;
 案例" SA":结果= empSEasia; 打破;
 案例"美国":{
 if(statusU0 ==" U0"){
 switch(personnelArea){
 案例" 2030":结果= empUSU02030; 打破;
 案例" 2040":结果= empUSU02040; 打破;
 案例" 2050":结果= empUSU02050; 打破;
 情况" 2060":结果= empUSU02060; 打破;
 案例" 2070":结果= empUSU02070; 打破;
 }
 }其他{
 结果= empUSnotU0all;
 switch(personnelArea){
 情况" 2030":结果+ =" |"  + empUSnotU02030; 打破;
 情况" 2040":结果+ =" |"  + empUSnotU02040; 打破;
 情况" 2050":结果+ =" |"  + empUSnotU02050; 打破;
 情况" 2060":结果+ =" |"  + empUSnotU02060; 打破;
 情况" 2070":结果+ =" |"  + empUSnotU02070; 打破;
 }
 }
 };
 }
 }

 返回结果;
 }
 

外面有没有人看到任何时髦的东西,这些东西会引起我所看到的? 预先感谢您的宝贵时间。

(51.6 kB)
付费偷看设置
发送
6条回答
compass1988
1楼-- · 2020-09-12 07:46

嗨,布兰登,

我会尝试一个,但是这只是一个猜测:我一直在以各种方式在Javascript内部进行切换时遇到麻烦,并且在任何情况下都没有找到问题的原因。 因此,我只使用if和else if而不是切换多年。 您是否已经尝试过?

致谢

Norman

哎,真难
2楼-- · 2020-09-12 07:46

您好,我正在与Brandon合作解决此问题。 我们有这个case statement inn旧脚本,并且可以正常工作。 感谢您的投入,如果您在此问题上找到其他替代答案,请告诉我。 非常感谢!

此致

Ram

SAP砖家
3楼-- · 2020-09-12 07:38

嘿布兰登,

请检查第28行-var mgrSG ="%$ glb.MANAGER_SG%';

在全局常量末尾使用单引号而不是双引号

这可能是原因。

问候,

Deva

微wx笑
4楼-- · 2020-09-12 07:48

嗨Ramu

在这种情况下,我通常会遵循 Matt Pollicove提出的建议 。逐行或逐块执行代码以找出错误所在。

我建议您按如下所示调试脚本

  1. 按需创建作业并使用ToGeneric Pass测试脚本,如下所示。
  2. 分段执行脚本,然后 您可以找出错误。

还要检查正在传递给脚本的值以及常量值。

将第28行更改为var mgrSG之后 ="%$ glb.MANAGER_SG%"; 并尝试保存该脚本,如 Chenyang Xiong 所述,编译错误很少。 修复它们之后,执行了脚本,脚本执行得很好。

问候,

Deva

梦想连接
5楼-- · 2020-09-12 07:34

我将脚本保存到系统中,但无法通过编译。 您是否不应该首先更正编译问题?

应该去除红色的括号吗?

吹牛啤
6楼-- · 2020-09-12 07:43

我想我们可以尝试一下。 我不认为阻止代码标识符可能会导致问题,但是我们将看看是否可能导致错误。

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答