场景
外部系统通过接口调用IDCNAP 应付账款账龄报告(中国)报错 Exception condition “CNTL_SYSTEM_ERROR” triggered
SE37调用正常,外部系统调用报错,
导致问题原因,
通过类
cl_salv_bs_runtime_info=>set( display = ‘’
metadata = ‘’
data = ‘X’).
获取ALV执行结果内表数据,那么这个报表显示必须是常规的ALV标准函数才行,不然或者获取不到。
通过查看代码可知改事务码 IDCNAP 应付账款账龄报告不是通过常规的ALV显示
处理方法
复制一个标准程序到自开发程序,调整为标准的ALV函数显示即可
再次调用即可正常显示
源码如下
FUNCTION zfm_query_bzj.
*“----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*” VALUE(IV_BUKRS) TYPE BUKRS OPTIONAL
*" VALUE(IV_LIFNR) TYPE LIFNR OPTIONAL
*" VALUE(IV_HKONT) TYPE HKONT DEFAULT ‘2241020000’
*" VALUE(IV_DATE) TYPE DATE OPTIONAL
*" EXPORTING
*" VALUE(EV_STATUS) TYPE CHAR1
*" VALUE(EV_MESSAGE) TYPE CHAR100
*" VALUE(EV_AZBET) TYPE AZBET_F05A
*"----------------------------------------------------------------------
*(修改日志)--------------------------------------------------------
*
- 日志号 修改人 修改时间 修改说明 传输号码
-
- 001
TABLES bseg.
RANGES:sr_lifnr FOR bseg-lifnr,
sr_bukrs FOR bseg-bukrs,
sr_rclacc FOR bseg-hkont.
IF iv_bukrs IS INITIAL OR
iv_lifnr IS INITIAL
.
ev_status = 'E'.
ev_message = '公司代码,供应商编码必输'.
ELSE.
sr_lifnr-sign = 'I'. sr_lifnr-option = 'EQ'. sr_lifnr-low = iv_lifnr. APPEND sr_lifnr.
sr_bukrs-sign = 'I'. sr_bukrs-option = 'EQ'. sr_bukrs-low = iv_bukrs. APPEND sr_bukrs.
sr_rclacc-sign = 'I'. sr_rclacc-option = 'EQ'. sr_rclacc-low = iv_hkont.APPEND sr_rclacc.
"调用事务码:IDCNAP,程序名:RFIDCN_AP_AGING
DATA:ls_data TYPE REF TO data."通用表类型
FIELD-SYMBOLS : <lt_data> TYPE table, "通用表类型
<dyn_wa> TYPE any,
<fs> TYPE any.
cl_salv_bs_runtime_info=>set( display = ''
metadata = ''
data = 'X').
SUBMIT zrfidcn_ap_aging
WITH kd_lifnr IN sr_lifnr
WITH kd_bukrs IN sr_bukrs
WITH s_kdate = iv_date
WITH s_rclacc IN sr_rclacc
AND RETURN
.
TRY .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = ls_data ).
ASSIGN ls_data->* TO <lt_data> .
ev_status = 'S'.
ev_message = '查询成功'.
LOOP AT <lt_data> ASSIGNING <dyn_wa>.
ASSIGN COMPONENT 'SEGMENT' OF STRUCTURE <dyn_wa> TO <fs>.
ev_azbet = ev_azbet + <fs>.
ENDLOOP.
CATCH cx_salv_bs_sc_runtime_info .
ev_status = 'E'.
ev_message = '查询失败,无法检索数据,请稍后重试'.
ENDTRY .
cl_salv_bs_runtime_info=>clear_all( ).
ENDIF.
ENDFUNCTION.