发现有两个HR的后台定时任务出现dump,日志表示,是PYXX_READ_PAYROLL_RESULT产生了类型冲突的异常CX_SY_DYN_CALL_ILLEGAL_TYPE。

日志标题部分:

类别                  ABAP 编程错误                
运行时错误             PERFORM_CONFLICT_TYPE       
异常                  CX_SY_DYN_CALL_ILLEGAL_TYPE 
ABAP 程序             SAPLHRPAY99_IMPEXP          
应用程序组件            PY-XX

错误分析文本:

An exception has occurred which is explained in more detail below. The exception is assigned to class 'CX_SY_DYN_CALL_ILLEGAL_TYPE' and was no caught in procedure "PYXX_READ_PAYROLL_RESULT" "(FUNCTION)", nor was it propagated by a RAISING clause. Since the caller of the procedure could not have anticipated this exception, the current program was terminated. The reason for the exception is: The FORM call "IMPORT_RESULT" is incorrect: The actual parameter (number 2) has a different data type in the PERFORM than requested by FORM "IMPORT_RESULT" in program "%_T000VU".

代码行:

      PERFORM import_result IN PROGRAM (subroutine_pool-name)
USING key
payroll_result "第二个参数
import_subrc
pcl2_version_number
typepool_version_number
IF FOUND.

函数PYXX_READ_PAYROLL_RESULT是一个用于获取工资的函数。在Google搜索了半天,不得解法。查阅函数文档,可以得知:

You can use this module to generically read a complete payroll result, that is for all country versions, from file PCL2 or from the puffer. In doing so, the payroll result is transferred to the PAYROLL_RESULT parameter. In the calling system, this must be classified as a complex structure according to the 'PAYxx_RESULT' dictionary structure. xx is the ISO code for the country in question (Exception: for the international part only, use PAY99_RESULT).

原来,PAYROLL_RESULT参数是动态类型的。问题发生在,最初的开发者只考虑了clusterid为"CN"即中国时的情况,把它定义为PAYCN_RESULT类型。而当系统推广到海外的时候,CN的结构类型已经不再使用,程序应当使用不同的结构来接收输出结果。

比如,当输入参数中的clusterid = 'RG'(英国)时,就应当定义参数payroll_result参数的类型为PAYGB_RESULT,这样就不会产生类型冲突的错误了。

看来有时候文档比Google更加直接有效。我们不应该因为文档的阅读难度而放弃查阅...如果有搜索到本文的读者,请和我一起记住这个教训:)

2018.06.27补充:对于有多个国家的工资核算结果的情况,可以从表t52relid获得相应的PAYROLL_RESULT参数类型,通过定义通用类型的方式解决问题,参考该问答:Is there any suitable function module to retrive cluster TCRT and CRT data

函数PYXX_READ_PAYROLL_RESULT的dump问题的更多相关文章

  1. python函数理解 json.dump()

    信息来自python说明文档(https://docs.python.org/3/library/json.html) 函数功能 输出一个python对象到文件 函数声明 json.dump(obj, ...

  2. dump调试函数

    //dump调试函数if (!function_exists('dump')) { /* * dump调试函数 */ function dump($var) { $traces = debug_bac ...

  3. PHP--封装干净利落的输出dump()函数

    /** * 打印函数 * */ if (! function_exists ( 'dump' )) { function dump($var, $exit = true) { echo '<pr ...

  4. 移植thinkPHP的dump()函数

    由于公司的开发机没有开xdebug拓展,导致var_dump()在浏览器上看很不方便. 因此,加入从thinkphp搬过来的dump()函数. function dump($var, $echo=tr ...

  5. 关于《加密与解密》的读后感----对dump脱壳的一点思考

    偶然翻了一下手机日历,原来今天是夏至啊,时间过的真快.ISCC的比赛已经持续了2个多月了,我也跟着比赛的那些题目学了2个月.......虽然过程很辛苦,但感觉还是很幸运的,能在大三的时候遇到ISCC, ...

  6. Windows下利用Windbg 分析dump

    概述: 注册生成dump文件的函数. 当程序收到没有捕获的异常时,调用上述函数,生成dump文件. 利用Windbg结合编译程序时生成的pdb和代码来分析dump文件,定位问题. 如下代码生成dump ...

  7. C 函数指针数组

    名字有点绕口,其实更应该翻译为指针函数数组. 记录下对Head-First C这一节的理解,几乎每天班车上都会咪两眼,几乎每次都是看不懂,敲一敲的时候才有些明白. 通俗点讲,这功能解决的是,具有同种签 ...

  8. [转]让程序在崩溃时体面的退出之SEH+Dump文件

    原文地址:http://blog.csdn.net/starlee/article/details/6649605 在我上篇文章<让程序在崩溃时体面的退出之SEH>中讲解了SEH中try/ ...

  9. [转]让程序在崩溃时体面的退出之Dump文件

    原文地址:http://blog.csdn.net/starlee/article/details/6630816 在我的那篇<让程序在崩溃时体面的退出之CallStack>中提供了一个在 ...

随机推荐

  1. TestLink使用

  2. redis—操作基础

    内存数据库: 1.双击redis-server.exe =>启动2.双击redis-cli.exe =>打开管理控制台3.查看所有key keys *4.查看key类型 type myKe ...

  3. SpringCloud学习笔记(1)——Eureka

    Spring Cloud Spring Cloud为开发者快速构建通用的分布式系统(例如:配置管理.服务发现.断路器.智能路由.微代理.控制总线.一次性的Token.全局锁.领导者选举.分布式会话.集 ...

  4. null与undefined的比较

    null在JavaScript中是关键字,它属于一个特殊的值,即空值. 而undefined它不是关键字,它表示未定义,属于预定义的全局变量. null == undefined 返回的是 true  ...

  5. 翻译连载 | 附录 B: 谦虚的 Monad-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  6. Centos7.0 安装 oracle 11g 以及相关问题解决

    参考其他的资源和自己实践内容总结出来的流程

  7. 企业级自动化运维工具应用实战-ansible

    背景 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运 ...

  8. Qname

    Qname的全称是qualified name. Qname由三部分组成: 1.Namespace prefix 2.A colon character(":") 3.A loca ...

  9. zzuli 1815: easy problem 打表

    1815: easy problem Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 243  Solved: 108 SubmitStatusWeb ...

  10. Hexo + github 打造个人博客

    前两年开始用 wordpress 搭了一个网站,但服务器是在 Linode 上,之所以要放在 Linode 上,要从买的域名说起,因为我买的域名是 fengzheng.pub ,.pub 是不允许备案 ...