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

ABAP代码使用FOR ALL ENTRIES后无输出,请求技术协助

ABAP代码问题排查与修正

核心问题分析

  • 内表重复覆盖:所有SELECT语句都用INTO TABLE IT_FINAL,每次查询都会清空并覆盖之前的数据,导致VBAK的原始数据被VBAP、KNA1等表的数据完全替换,后续关联逻辑彻底失效。
  • FOR ALL ENTRIES使用错误:每次查询都以IT_FINAL作为关联基准,但此时IT_FINAL已经被上一次查询覆盖,关联的字段值完全不符合预期。
  • 循环逻辑混乱:循环内执行MOVE-CORRESPONDING WA_FINAL TO WA_FINAL属于无效操作;多次READ TABLE会覆盖工作区数据,最后还将工作区追加回原内表,导致数据无限循环且关联逻辑完全错误。
  • MAKT/TVAKT表缺少语言过滤:未指定SPRAS = SY-LANGU,会返回所有语言的物料描述和凭证类型文本,可能拿到非当前登录语言的内容。

修正后的代码

TYPES: BEGIN OF ty_vbak,
         vbeln TYPE vbeln_va,
         erdat TYPE erdat,
         auart TYPE auart,
         kunnr TYPE kunnr,
       END OF ty_vbak,
       BEGIN OF ty_vbap,
         vbeln TYPE vbeln_va,
         posnr TYPE posnr_va,
         matnr TYPE matnr,
         kwmeng TYPE kwmeng,
         netpr TYPE netpr,
       END OF ty_vbap,
       BEGIN OF ty_kna1,
         kunnr TYPE kunnr,
         name1 TYPE name1_gp,
       END OF ty_kna1,
       BEGIN OF ty_tvakt,
         auart TYPE auart,
         bezei TYPE bezei,
       END OF ty_tvakt,
       BEGIN OF ty_makt,
         matnr TYPE matnr,
         maktx TYPE maktx,
       END OF ty_makt,
       BEGIN OF ty_final,
         vbeln TYPE vbeln_va,
         erdat TYPE erdat,
         auart TYPE auart,
         bezei TYPE bezei,
         posnr TYPE posnr_va,
         matnr TYPE matnr,
         kwmeng TYPE kwmeng,
         netpr TYPE netpr,
         kunnr TYPE kunnr,
         name1 TYPE name1_gp,
         maktx TYPE maktx,
       END OF ty_final.

DATA: it_vbak    TYPE STANDARD TABLE OF ty_vbak,
      wa_vbak    TYPE ty_vbak,
      it_vbap    TYPE STANDARD TABLE OF ty_vbap,
      wa_vbap    TYPE ty_vbap,
      it_kna1    TYPE STANDARD TABLE OF ty_kna1,
      wa_kna1    TYPE ty_kna1,
      it_tvakt   TYPE STANDARD TABLE OF ty_tvakt,
      wa_tvakt   TYPE ty_tvakt,
      it_makt    TYPE STANDARD TABLE OF ty_makt,
      wa_makt    TYPE ty_makt,
      it_final   TYPE STANDARD TABLE OF ty_final,
      wa_final   TYPE ty_final.

PARAMETERS: p_kunnr TYPE kunnr.

* 1. 查询销售抬头数据
SELECT vbeln erdat auart kunnr
  FROM vbak
  INTO TABLE it_vbak
 WHERE kunnr = p_kunnr.

IF sy-subrc = 0.
  * 2. 查询销售行项目数据
  SELECT vbeln posnr matnr kwmeng netpr
    FROM vbap
    INTO TABLE it_vbap
   FOR ALL ENTRIES IN it_vbak
   WHERE vbeln = it_vbak-vbeln.

  * 3. 查询客户主数据
  SELECT kunnr name1
    FROM kna1
    INTO TABLE it_kna1
   FOR ALL ENTRIES IN it_vbak
   WHERE kunnr = it_vbak-kunnr.

  * 4. 查询销售凭证类型文本(过滤当前语言)
  SELECT auart bezei
    FROM tvakt
    INTO TABLE it_tvakt
   FOR ALL ENTRIES IN it_vbak
   WHERE auart = it_vbak-auart
     AND spras = sy-langu.

  * 5. 查询物料描述(过滤当前语言)
  SELECT matnr maktx
    FROM makt
    INTO TABLE it_makt
   FOR ALL ENTRIES IN it_vbap
   WHERE matnr = it_vbap-matnr
     AND spras = sy-langu.

  * 6. 关联所有数据到最终内表
  LOOP AT it_vbak INTO wa_vbak.
    * 填充抬头字段
    wa_final-vbeln = wa_vbak-vbeln.
    wa_final-erdat = wa_vbak-erdat.
    wa_final-auart = wa_vbak-auart.
    wa_final-kunnr = wa_vbak-kunnr.

    * 读取客户名称
    READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_vbak-kunnr.
    IF sy-subrc = 0.
      wa_final-name1 = wa_kna1-name1.
    ENDIF.

    * 读取凭证类型文本
    READ TABLE it_tvakt INTO wa_tvakt WITH KEY auart = wa_vbak-auart.
    IF sy-subrc = 0.
      wa_final-bezei = wa_tvakt-bezei.
    ENDIF.

    * 循环行项目,关联物料描述
    LOOP AT it_vbap INTO wa_vbap WHERE vbeln = wa_vbak-vbeln.
      wa_final-posnr = wa_vbap-posnr.
      wa_final-matnr = wa_vbap-matnr.
      wa_final-kwmeng = wa_vbap-kwmeng.
      wa_final-netpr = wa_vbap-netpr.

      * 读取物料描述
      READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_vbap-matnr.
      IF sy-subrc = 0.
        wa_final-maktx = wa_makt-maktx.
      ENDIF.

      APPEND wa_final TO it_final.
      CLEAR wa_final.
    ENDLOOP.
  ENDLOOP.
ENDIF.

* 输出结果
cl_demo_output=>display( it_final ).

修正说明

  • 为每个数据库表单独定义中间内表,避免数据覆盖问题。
  • 按逻辑顺序依次查询各表数据,确保FOR ALL ENTRIES的基准数据正确。
  • 循环关联抬头和行项目数据,通过READ TABLE匹配关联字段,填充最终内表。
  • 为MAKT和TVAKT表添加当前语言过滤,保证文本描述符合登录语言。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:35:14