You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ABAP函数模块LOOP无匹配结果时ELSE分支未触发问题求助

解决ABAP LOOP无匹配记录时ELSE逻辑不触发的问题

你的核心问题是LOOP与ELSE的语法结构错误:ABAP中LOOP AT ... ELSE ... ENDLOOP是完整的控制结构,ELSE必须直接跟随循环体,不能被多余的IF/ENDIF打断。你的代码错误地将ELSE嵌套在无对应IF的ENDIF之后,导致循环无匹配时无法触发错误提示逻辑。

修正方案

  1. 移除循环体末尾多余的ENDIF(该语句无对应IF,属于语法冗余)
  2. 确保ELSE直接属于LOOP结构,与ENDLOOP正确配对

修正后的完整代码

LOOP AT it_p0015 INTO ls_p0015 WHERE
  subty = iv_sty      AND
  betrg = iv_amount   AND
  endda = iv_end_date AND
  begda = iv_start_date.

    CALL FUNCTION 'ENQUEUE_EPPRELE'
      EXPORTING
        pernr          = iv_employeepernr "is_request-employeepernr
        infty          = '0015'
        subty          = iv_sty
      EXCEPTIONS
        foreign_lock   = 1
        system_failure = 2
        OTHERS         = 3.
    IF sy-subrc <> 0.
      RETURN.
    ENDIF.

    CALL FUNCTION 'HR_INFOTYPE_OPERATION' " Delete IT0015
      EXPORTING
        infty         = ls_p0015-infty
        number        = ls_p0015-pernr
        subtype       = ls_p0015-subty
        validityend   = iv_end_date
        validitybegin = iv_start_date
        record        = ls_p0015
        operation     = 'DEL'
      IMPORTING
        return        = ls_return.

    IF ls_return IS NOT INITIAL.
      APPEND ls_return TO et_message.
    ELSE.
      ls_return-type = 'S'.
      ls_return-message = 'Infotype 0015 advance payment deduction deleted.'(010).
      APPEND ls_return TO et_message.
    ENDIF.

    CALL FUNCTION 'DEQUEUE_EPPRELE'
      EXPORTING
        pernr = iv_employeepernr
        infty = '0015'
        subty = iv_sty.

ELSE.
    ls_return-type = 'E'.
    ls_return-message = 'No records found in infotype 0015.'(036).
    APPEND ls_return TO et_message.
ENDLOOP.

ENDFUNCTION

关键说明

  • ABAP的LOOP AT ... ELSE逻辑:当循环未找到任何匹配记录时,自动执行ELSE块;只要循环执行过一次,就不会进入ELSE分支
  • 修正后,当it_p0015中无符合WHERE条件的记录时,会触发错误提示并写入et_message

内容的提问来源于stack exchange,提问作者allscode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:05:32