RFC SUBMIT 调用SAP程序IDCNAP 应付账款账龄报告 报错 Exception condition “CNTL_SYSTEM_ERROR“ triggered

场景
外部系统通过接口调用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.

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
调用 SAPRFC 接口,需要使用 SAP 提供的 Java Connector(SAP JCo)库。在使用 SAP JCo 调用 RFC 接口时,需要在 SAP JCo 的配置文件中设置系统 ID(System ID),以便正确地连接到 SAP 系统。 要配置 SAP JCo 的系统 ID,需要进行以下步骤: 1. 打开 SAP JCo 的配置文件 sapjco3.properties,该文件通常位于程序的 classpath 下。 2. 在 sapjco3.properties 文件中添加以下配置项: ``` jco.client.sysnr=<系统编号> jco.client.client=<客户端> jco.client.user=<用户名> jco.client.passwd=<密码> jco.client.lang=<语言> jco.client.ashost=<用服务器主机名> jco.client.saprouter=<SAP 路由器> ``` 其中,<系统编号> 是 SAP 系统的编号,<客户端> 是 SAP 客户端的编号,<用户名> 和 <密码> 是 SAP 用户的登录信息,<语言> 是登录时使用的语言代码,<用服务器主机名> 是 SAP 用服务器的主机名,<SAP 路由器> 是可选的 SAP 路由器配置。 3. 在 Java 代码中使用 SAP JCo 的 API 调用 RFC 接口时,可以使用以下代码获取 SAP JCo 的配置信息: ``` JCoDestination destination = JCoDestinationManager.getDestination("<destination>"); ``` 其中,<destination> 是 SAP JCo 的目标名称,可以在 sapjco3.properties 文件中配置。 4. 使用 SAP JCo 的 API 调用 RFC 接口时,需要使用 SAP JCo 的函数模块名称和函数模块的输入参数,例如: ``` JCoFunction function = destination.getRepository().getFunction("<function_module>"); if (function == null) { throw new RuntimeException("<function_module> not found in SAP system."); } function.getImportParameterList().setValue("<parameter_name>", "<parameter_value>"); function.execute(destination); ``` 其中,<function_module> 是 SAP RFC 函数模块的名称,<parameter_name> 和 <parameter_value> 是函数模块的输入参数名称和值。 以上是 Java 调用 SAP RFC 接口时配置系统 ID 的基本步骤。具体的配置和调用方法可能会因不同的 SAP 系统和 RFC 接口而有所不同,需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值