如何解决使用VBRK和VBRP时如何解决ABAP中的数据类型转换SQL错误
我想获取固定时间段和定义的组织内开票的数量总和,但它显示为0或出现SQL错误,如屏幕截图所示。
我将表VBRK用于组织和数据,将表VBRP用于数量和货币。
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.
解决方法
这并不复杂。 您正在使用 VBRP-NETWR 和 VBRK-WAERK 在两个表之间进行联接,这没有意义(它们是不同的数据类型)。
VBRK 通过 VBELN 字段与 VBRP 链接(一个是帐单标题和一个帐单项目),因此正确的JOIN为:
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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。