ВЫБЕРИТЕ двусмысленную / недопустимую ошибку времени выполнения столбца - PullRequest
0 голосов
/ 07 июля 2019

Когда я запускаю свою программу ABAP, я получаю ошибку времени выполнения DBIF_DSQL2_SQL_ERROR в строке SELECT... с таким текстом ошибки:

недопустимая ошибка столбца и неоднозначная ошибка столбца для таблиц VBAK и VBAPи столбец VBELN

ABAP-код:

*&---------------------------------------------------------------------*
*& Report  ZSAM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSAM.

DATA: BEGIN OF wa,
      vbeln TYPE VBAK-VBELN,
      vtweg TYPE VBAK-VTWEG,
      posnr TYPE VBAP-POSNR,
      matnr TYPE VBAP-MATNR,
      vrkme TYPE VBAP-VRKME,
      END OF wa.

WRITE: 'vbeln', 'vtweg', 'posnr', 'matnrr','vrkme'.


EXEC SQL PERFORMING loop_output.
   SELECT VBAK-VBELN, VBAK-VTWEG, VBAP-POSNR, VBAP-MATNR, VBAP-VRKME
   INTO :wa
   FROM VBAK INNER JOIN VBAP on VBAK-VBELN = VBAP-VBELN
ENDEXEC.

FORM loop_output.
   WRITE: / wa-vbeln, wa-vtweg, wa-posnr, wa-matnr, wa-vrkme.
ENDFORM.

В чем может быть проблема в коде и как ее решить?

Ответы [ 2 ]

3 голосов
/ 07 июля 2019

Вам нужно использовать.вместо - как разделитель.Вы пишете собственный SQL, поэтому вы должны применять специальные правила для БД.

EXEC SQL PERFORMING loop_output.
   SELECT VBAK.VBELN, VBAK.VTWEG, VBAP.POSNR, VBAP.MATNR, VBAP.VRKME
   INTO :wa
   FROM VBAK INNER JOIN VBAP on VBAK.VBELN = VBAP.VBELN
ENDEXEC.
2 голосов
/ 08 июля 2019

Вы не должны использовать собственный SQL для такого простого запроса. Когда вы написали, что на самом деле изучаете ABAP, немедленно переключитесь на Open SQL.

SELECT vbak~vbeln, vbak~vtweg, vbap~posnr, vbap~matnr, vbap~vrkme
  INTO @DATA(l_work_area)
  FROM vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln.
  WRITE: / l_work_area-vbeln, l_work_area-vtweg, l_work_area-posnr, l_work_area-matnr, l_work_area-vrkme.
ENDSELECT.
...