点击此处---> 群内免费提供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)
嗨,布兰登,
我会尝试一个,但是这只是一个猜测:我一直在以各种方式在Javascript内部进行切换时遇到麻烦,并且在任何情况下都没有找到问题的原因。 因此,我只使用if和else if而不是切换多年。 您是否已经尝试过?
致谢
Norman
您好,我正在与Brandon合作解决此问题。 我们有这个case statement inn旧脚本,并且可以正常工作。 感谢您的投入,如果您在此问题上找到其他替代答案,请告诉我。 非常感谢!
此致
Ram
嘿布兰登,
请检查第28行-var mgrSG ="%$ glb.MANAGER_SG%';
在全局常量末尾使用单引号而不是双引号
这可能是原因。
问候,
Deva
嗨Ramu
在这种情况下,我通常会遵循 Matt Pollicove提出的建议 。逐行或逐块执行代码以找出错误所在。
我建议您按如下所示调试脚本
还要检查正在传递给脚本的值以及常量值。
将第28行更改为var mgrSG之后 ="%$ glb.MANAGER_SG%"; 并尝试保存该脚本,如 Chenyang Xiong 所述,编译错误很少。 修复它们之后,执行了脚本,脚本执行得很好。
问候,
Deva
嗨
我将脚本保存到系统中,但无法通过编译。 您是否不应该首先更正编译问题?
应该去除红色的括号吗?
我想我们可以尝试一下。 我不认为阻止代码标识符可能会导致问题,但是我们将看看是否可能导致错误。
一周热门 更多>