选择模棱两可/无效列运行时错误



当我运行ABAP程序时,我在SELECT...行中获得了一个错误文本的运行时错误DBIF_DSQL2_SQL_ERROR

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.

代码中可能有什么问题以及如何解决?

您需要使用。而不是 - 作为分离器。您正在编写本机SQL,因此您必须应用DB特定规则。

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.

您不应将本机SQL用于如此简单的查询。当您写道您当时实际上正在学习ABAP,然后立即切换到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.

相关内容

  • 没有找到相关文章

最新更新