2

这是我正在处理的未结销售订单报告。我试图从表 VBUK 和 VBELN 字段中读取数据,我试图从发生错误的表“VAPMA”中获取数据。在第二个 select 语句之后出现以下错误。

object of class re and language en does not exist

程序:

*&---------------------------------------------------------------------*
*& Report  ZRSD_DISPLAY_OPEN_SALESORDERS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZRSD_DISPLAY_OPEN_SALESORDERS.

TABLES: VAPMA,LIKP.

PARAMETERS: P_VKORG TYPE VAPMA-VKORG,
            P_VTWEG TYPE VAPMA-VTWEG,
            P_SPART TYPE VAPMA-SPART.


SELECT-OPTIONS:
            S_KUNNR FOR VAPMA-KUNNR,
            S_VBELN FOR VAPMA-VBELN,
            S_MATNR FOR VAPMA-MATNR,
            S_AUART FOR VAPMA-AUART,
            S_AUDAT FOR VAPMA-AUDAT,
            S_LFDAT FOR LIKP-LFDAT.


TYPES: BEGIN OF TY_VBELN,
       VBELN TYPE VBUK-VBELN,
       END OF TY_VBELN.


DATA : IT_VBELN TYPE STANDARD TABLE OF TY_VBELN,
       IT1_VBELN TYPE STANDARD TABLE OF TY_VBELN,
       IT2_VBELN TYPE STANDARD TABLE OF TY_VBELN,
       WA_VBELN TYPE TY_VBELN.


SELECT VBELN INTO TABLE IT_VBELN FROM VBUK WHERE GBSTK NE 'C'.

IF SY-SUBRC NE 0.
  message E000(ZMSG) WITH 'SEL1'.
ENDIF.    

SELECT VBELN INTO TABLE IT1_VBELN FROM VAPMA  
  FOR ALL ENTRIES IN IT_VBELN 
  WHERE VBELN = IT_VBELN-VBELN AND
        VKORG = P_VKORG AND
        VTWEG = P_VTWEG AND
        SPART = P_SPART AND
        KUNNR IN S_KUNNR AND
        VBELN IN S_VBELN AND
        MATNR IN S_MATNR AND
        AUART IN S_AUART AND
        AUDAT IN S_AUDAT.

IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

SELECT VBELN INTO TABLE IT2_VBELN FROM LIKP 
  FOR ALL ENTRIES IN IT1_VBELN 
  WHERE VBELN = IT1_VBELN-VBELN AND 
        LFDAT IN S_LFDAT.

IF SY-SUBRC NE 0.
  message E000(ZMSG) WITH 'SEL3'. 
ENDIF.

LOOP AT IT2_VBELN INTO WA_VBELN.
  WRITE:/1 WA_VBELN-VBELN.
ENDLOOP.
4

1 回答 1

4

您收到的错误消息很可能与问题无关:

如果SY-SUBRC <> 0在此 select 语句之后,则表示未找到您在SELECT. SELECT但是,当 a失败时,SAP 不会填充 SY-MSG* 变量。因此,将显示上次显示的消息中仍在内存中的任何内容。

SELECT VBELN INTO TABLE IT1_VBELN  
  FROM VAPMA  
  FOR ALL ENTRIES IN IT_VBELN 
  WHERE VBELN = IT_VBELN-VBELN AND
  VKORG = P_VKORG AND
  VTWEG = P_VTWEG AND
  SPART = P_SPART AND
  KUNNR IN S_KUNNR AND
  VBELN IN S_VBELN AND
  MATNR IN S_MATNR AND
  AUART IN S_AUART AND
  AUDAT IN AUDAT.

IF SY-SUBRC <> 0.
 "From what you describing it sounds like you're triggering this error message
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

反映你在其他两个选择上所做的事情我认为你会想要使用以下消息:

IF SY-SUBRC NE 0.
  message E000(ZMSG) WITH 'SEL2'. 
ENDIF.
于 2012-03-07T19:42:04.690 回答