объект класса re и языка en не существует? - PullRequest
2 голосов
/ 07 марта 2012

Это открытый отчет по заказу на продажу, над которым я работаю.я пытаюсь прочитать данные из таблицы VBUK и поля VBELN я пытаюсь получить данные из таблицы VAPMA, где произошла ошибка.Я получаю следующую ошибку после второго оператора выбора.

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.

1 Ответ

3 голосов
/ 07 марта 2012

Весьма вероятно, что полученное вами сообщение об ошибке не относится к проблеме:

Если SY-SUBRC <> 0 после этого оператора выбора, это означает, что не найдено данных по критериям, указанным в вашем SELECT. Однако SAP не заполняет переменные SY-MSG * при сбое SELECT. Таким образом, все, что осталось в памяти из последнего отображенного сообщения, будет отображено.

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.
...