Hello All,
I created an ABAP program to select information about country(table: T005) with the country names (Table: T005T). I tried to create a sql query with a sql subquery to select everything but for some reason that I don't know it doesn't work. Please find the query below.
DATA:
resu TYPE REF TO cl_sql_result_set ,
stmt TYPE REF TO cl_sql_statement ,
qury TYPE string .
qury = `SELECT land1, spras, `
&& `(SELECT landx `
&& `FROM SAPNSP.T005T `
&& `WHERE mandt = '` && sy-mandt && `' `
&& `AND spras = 'EN' `
&& `AND land1 = ? ), `
&& `(SELECT natio `
&& `FROM SAPNSP.T005T `
&& `WHERE mandt = '` && sy-mandt && `' `
&& `AND spras = 'EN' `
&& `AND land1 = ? ) `
&& `FROM SAPNSP.T005 `
&& `WHERE mandt = '` && sy-mandt && `' `
&& `AND land1 = ? `
&& `GROUP BY land1, spras` .
resu = stmt->execute_query( qury ) .
Well, the query above works but the fields LANDX and NATIO are in blank in ALL THE CASES, even with information registred in table T005T. So, exploring the SDN forum and after read some documents regarding ADBC, I create a function to handle this sql select and get the correctly the missing informations, but, still don't work. Please find the function below:
CREATE FUNCTION select_landx (land1 CHAR(3)) RETURNS CHAR(15)
AS
VAR landx CHAR(15);
DECLARE functionresult CURSOR FOR
SELECT spras, land1, landx
FROM SAPNSP.t005t
WHERE spras = 'EN'
AND land1 = :land1;
IF $count IS NULL THEN <- | $count is always 0, my SELECT
BEGIN it's not work but I don't know why
CLOSE functionresult;
RETURN NULL;
END
ELSE
SET $rc = 0;
WHILE $rc = 0 DO
BEGIN
FETCH functionresult INTO :landx;
END;
CLOSE functionresult;
RETURN landx;
Calling the function in a SQL statement:
DATA:
resu TYPE REF TO cl_sql_result_set ,
stmt TYPE REF TO cl_sql_statement ,
qury TYPE string .
qury = `SELECT land1, spras, select_landx(?) landx `
&& `FROM SAPNSP.T005 `
&& `WHERE mandt = '` && sy-mandt && `' `
&& `AND land1 = ? `
&& `GROUP BY land1, spras` .
resu = stmt->execute_query( qury ) .
Any comments ?
Best regards,
Arthur Silva