简体   繁体   中英

How to fix data type conversion SQL error in ABAP when using VBRK and VBRP

I want to get the sum of quantities billed in a fixed period and a defined organisation but It either prints 0 or I get an SQL error as in the screenshot. 错误

I used tables VBRK for Organisation and data and VBRP for quantity and currency.


   Tables: VBRK,
        lips,
        VBRP.


TYPES: Begin of itab5,

   VKORG TYPE VBRK-VKORG,
   FKDAT TYPE VBRK-FKDAT,
   ARKTX TYPE LIPS-ARKTX,
   FKIMG TYPE VBRP-FKIMG,
   VRKME TYPE VBRP-VRKME,

 End of itab5.

DATA: wa_ma5 TYPE itab5,
      it_ma5 TYPE STANDARD TABLE OF itab5,
      quan TYPE VBRP-FKIMG,
      curr TYPE vbrp-vrkme.
SELECT-OPTIONS: DATE FOR VBRK-FKDAT.
SELECT-OPTIONS: Organ FOR VBRK-VKORG.
APPEND date.
APPEND Organ.

START-OF-SELECTION.
  SELECT VKORG FKDAT FKIMG VRKME FROM VBRK
    inner JOIN VBRP ON VBRP~netwr = VBRK~WAERK
     INTO CORRESPONDING FIELDS OF TABLE it_ma5
     WHERE VBRK~FKDAT IN DATE AND VBRK~VKORG IN Organ.

END-OF-SELECTION.

  quan = 0.

  LOOP AT it_ma5 INTO wa_ma5.
*    if sy-subrc = 0.
    quan = quan + wa_ma5-fkimg.

*    endif.

  ENDLOOP.

  WRITE: 'the quantity', quan.

   

This is not that complicated. You are doing join between the two tables using VBRP-NETWR and VBRK-WAERK which doesn't make sense (and they are different data types).

VBRK is linked with VBRP by VBELN field (one is billing header and one billing items), so the correct JOIN is:

START-OF-SELECTION.
  SELECT vkorg fkdat fkimg vrkme
    FROM vbrk
   INNER JOIN vbrp
      ON vbrp~vbeln = vbrk~vbeln
    INTO CORRESPONDING FIELDS OF TABLE it_ma5
   WHERE vbrk~fkdat IN date
     AND vbrk~vkorg IN organ.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM