发现有两个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. 利用Angular实现多团队模块化SPA开发框架

    0.前言 当一个公司有多个开发团队时,我们可能会遇到这样一些问题: 技术选项杂乱,大家各玩各 业务重复度高,各种通用api,登录注销,权限管理都需要重复实现(甚至一个团队都需要重复实现) 业务壁垒,业 ...

  2. jquery.form.js+jquery.validation.js实现表单校验和提交

      一.jquery引用 主要用到3个js: jquery.js jquery.form.js jquery.validation.js 另外,为了校验结果提示本地化,还需要引入jquery.vali ...

  3. Python 运行效率为何低

    当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间:另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间.编码效率和运行效率往往是鱼与熊掌的 ...

  4. Mybatis(四)关联映射

    一. Mybatis关联映射 1 讲数据库中关联关系,主键表与外键表 一对多,多对一,主键表表示一 与外键表表示多 学生与学校的关系,工人与工厂,人员与部门的关系,.... 多        一    ...

  5. vue2.x利用脚手架快速构建项目并引入bootstrap、jquery

    要使用vue-cli脚手架搭建项目,首先需要安装node.js Node.js官网:https://nodejs.org/en/download/ 选择你对应的系统即可下载,下载完成后傻瓜式安装即可. ...

  6. Linux 链接详解(1)

    可执行文件的生成过程: hello.c ----预处理--->  hello.i ----编译----> hello.s -----汇编-----> hello.o -----链接- ...

  7. linux 安装 cenos7 和 jdk

    安装一个虚拟机安装cenos7 版本的 安装完虚拟机后必备工具 第一步. 配置网路 设置桥接网路设置静态网络参考 下面博文 http://www.cnblogs.com/Jerry1104/p/758 ...

  8. 原生Js实现拖拽(适用于pc和移动端)

    效果: HTML和CSS部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. C/C++筛选法算素数

    什么是求素数 )i在2到n-1之间任取一个数,如果n能被整除则不是素数,否则就是素数 普通枚举法: #include <iostream> #include <string> ...

  10. swiper3插件无缝滚动配置

    <html> <head> <link rel="stylesheet" href="https://cdn.bootcss.com/Swi ...