Skip to Content
0
Former Member
Aug 30, 2011 at 08:51 AM

Problems using EXEC SQL

952 Views

Hello everybody,

I have a problem using EXEC SQL. Not the command itself but a conflict with our naming conventions.

In Open SQL I can simply use a field called EKKO~/SOL/BESTNR_EX and get the result. Due to a runtime problem I tried to use Native SQL via EXEC SQL. But as soon as I try to use this field I get a dump.

Does anybody know how to use a field named like this in Native SQL?

  TYPES:
        BEGIN OF ls_test,
          lifnr TYPE elifn,
          matnr TYPE matnr,
          arktx TYPE arktx,
          werks TYPE werks_d,
          ean11 TYPE ean11,
          vgbel TYPE vgbel,
          posnr TYPE posnr_vl,
          pstyp type pstyp,
          bsart type esart,
          /sol/bestnr_ex TYPE /sol/mm_bestnr_ex,
          menge TYPE bstmg,
          elikz TYPE elikz,
          erekz TYPE erekz,
        END OF ls_test.

  DATA:
          ls_test TYPE ls_test.

    EXEC SQL.
      OPEN c1 FOR
SELECT EKKO.LIFNR, EKPO.MATNR, EKPO.TXZ01, EKPO.WERKS, EKPO.EAN11, EKKO.EBELN, EKPO.EBELP, EKPO.PSTYP, EKKO.BSART, EKKO./SOL/BESTNR_EX, EKPO.MENGE, EKPO.ELIKZ, EKPO.EREKZ
FROM EKKO
INNER JOIN EKPO ON EKKO.EBELN = EKPO.EBELN
    ENDEXEC.

    DO.
      EXEC SQL.
        FETCH NEXT c1 INTO :LS_TEST
      ENDEXEC.
      IF sy-subrc <> 0.
        EXIT.
      ELSE.
        WRITE LS_TEST-LIFNR.
      ENDIF.
    ENDDO.
    EXEC SQL.
      CLOSE c1
    ENDEXEC.

Before anyone asks the final SQL statement will be much bigger, but this sample shows the situation.

best regards

Stephan Knecht

Edited by: stknec on Aug 30, 2011 10:51 AM

Edited by: stknec on Aug 30, 2011 10:52 AM