2023 Jul 12 9:08 AM
Hello Expert,
I have written SQL queries in AMDP. I want to calculate the total amount by using a loop.
This is my approach.
CLASS zcl_b_project_amdp DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES:
BEGIN OF ty_bproj,
matnr TYPE matnr,
maabc TYPE maabc,
maktx TYPE maktx,
lgort TYPE lgort_d,
labst TYPE labst,
amount TYPE verpr,
END OF ty_bproj .
TYPES:
tt_bproj TYPE TABLE OF ty_bproj .
INTERFACES if_amdp_marker_hdb.
CLASS-METHODS: get_bproject_amdp
EXPORTING
VALUE(et_bproj) TYPE tt_bproj
VALUE(ev_total_price) TYPE NETWR
RAISING
cx_amdp_error.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_b_project_amdp IMPLEMENTATION.
METHOD get_bproject_amdp BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING marc makt mard mbew.
et_bproj = SELECT
marc.matnr,
marc.maabc,
makt.maktx,
mard.lgort,
mard.labst,
(mard.labst * mbew.verpr) AS amount
FROM
marc
INNER JOIN makt ON marc.matnr = makt.matnr
INNER JOIN mard ON marc.matnr = mard.matnr
INNER JOIN mbew ON marc.matnr = mbew.matnr
WHERE
mard.lgort != '600' AND
--> marc.maabc = 'B' AND
marc.werks = 'M14';
LOOP AT et_bproj ASSIGNING FIELD-SYMBOL(<fs_project>).
ev_total_price = ev_total_price + <fs_project>-Amount.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
Now I am getting an error as "SQLSCRIPT: SQL syntax error: incorrect syntax near "et_bproj""
KIndly help me to correct this syntax error.
2023 Jul 12 9:30 AM
Hi,
the coding within the AMDP should be SQLScript (as you defined), see SQLScript Reference.
You may use the SUM function.
However, looking at your coding I don't see the necessity for using SQLScript, AFAIK all this can be expressed using OpenSQL/CDS... might be worthwile to check this option as well.
Best,
Jasmin