函数PYXX_READ_PAYROLL_RESULT的dump难点

 

开掘成多少个H奇骏的后台定期职分现身dump,日志表示,是PYXX_READ_PAYROLL_RESULT爆发了花色冲突的优秀CX_SY_DYN_CALL_ILLEGAL_TYPE。

日志标题部分:

类型                  ABAP
编制程序错误                
运行时不当            
PETucsonFORM_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 =
‘EnclaveG’(United Kingdom卡塔尔时,就应有定义参数payroll_result参数的门类为PAYGB_RESULT,那样就不会生出类型冲突的谬误了。

 

由此看来有的时候候文书档案比Google越发直接有效。我们不应有因为文书档案的读书难度而放任查阅…假若有追寻到本文的读者,请和本身联合记住这一个教诲:)

 

相关文章