【问题标题】:FM updating Installation type in EANL table returns SY-SUBRC = 0 even if it failsEANL 表中的 FM 更新安装类型即使失败也返回 SY-SUBRC = 0
【发布时间】:2016-03-20 14:28:20
【问题描述】:

我需要使用 ISU_DB_EANL_UPDATE 功能模块删除 EANL 表的安装类型字段中的空格。我写了一段代码。但是 ISU_DB_EANL_UPDATE 总是将 sy-subrc 返回为 0。如果表没有更新,那么 ISU_DB_EANL_UPDATE 也会将 sy-subrc 返回为 0 而不是不等于 0。我无法找出这背后的原因。这是我的一段代码。请在这件事上帮助我。

LOOP AT gt_eanl INTO gs_eanl.
    ls_eanl_new = gs_eanl.
    lv_temp = ls_eanl_new-anlart.
    if lv_temp ca ''.
    CONDENSE lv_temp.
    ls_eanl_new-anlart = lv_temp.
    endif.


    CALL FUNCTION 'ISU_DB_EANL_UPDATE'
      EXPORTING
        x_eanl     = ls_eanl_new
        x_eanl_old = gs_eanl
        x_upd_mode = 'U'.

    IF sy-subrc NE 0.
      write:'eanl not updated'.
      skip.

    ELSE.

      write:'eanl updated'.
      skip.

    ENDIF.
  ENDLOOP.

这里的输出总是随着 eanl 更新而来。我还用没有空间的 anlart 值进行了测试。但是,sy-subrc 也是 0。请帮帮我。

【问题讨论】:

  • EANL 表中有多少条目?

标签: abap sap-erp


【解决方案1】:

您在调用 ISU_DB_EANL_UPDATE 时没有指定任何例外,因此未设置 SY-SUBRC。添加 EXCEPTIONS OTHERS = 1 会将所有异常映射到 1,这意味着如果抛出任何异常,则调用后 SY-SUBRC 将为 1。这将告诉您某些事情发生了故障,但 FM 可能会抛出许多不同的异常,最好以不同的值捕获这些异常,以便您知道发生了什么。

【讨论】:

  • 在 FM ISU_DB_EANL_UPDATE 的异常选项卡中,没有指定异常。我现在要做什么?
  • 找到更好的方法来创建安装。 MDG 浮现在脑海中。或尝试 FM ISU_S_INSTLN_CREATE。
  • 实际上,我正在为给定安装更新 eanl 表的安装类型(anlart)。我没有创建任何新安装。这就是我使用 FM ISU_DB_EANL_UPDATE 的原因。请帮我解决这个问题。
  • @GertBeukema 函数模块ISU_DB_EANL_UPDATE是一个更新函数模块,也就是说它不能有任何异常指定,应该在IN UPDATE TASK中调用。
【解决方案2】:

查看 FM 返回的其他参数:ISU_DB_EANL_UPDATE。

【讨论】:

  • 我没听懂你在说什么。您能否更清楚地解释一下@Bhavesh?
  • 检查这个返回的其他参数,好像它返回任何你可以捕捉到的异常。
  • 我已经调试了程序。但调用函数 ISU_DB_EANL_UPDATE 执行后,sy-tabix 变为 1。
  • 这意味着FM已经读取了这么多记录,您也可以调试功能模块以更好地理解为什么它总是返回sy-subrc为0。
  • 无法获取。对于那段代码,Sy-subrc 总是为零。请帮忙。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多