11CLASS cl_sql_statement DEFINITION PUBLIC .
22 PUBLIC SECTION .
33 METHODS constructor
4- IMPORTING con_ref TYPE REF TO object OPTIONAL .
4+ IMPORTING
5+ con_ref TYPE REF TO cl_sql_connection OPTIONAL .
56
67 METHODS execute_update
78 IMPORTING
@@ -22,13 +23,21 @@ CLASS cl_sql_statement DEFINITION PUBLIC.
2223 statement TYPE string
2324 RAISING
2425 cx_sql_exception.
26+
27+ PRIVATE SECTION .
28+ DATA mv_connection TYPE string .
2529ENDCLASS .
2630
2731CLASS cl_sql_statement IMPLEMENTATION .
2832
2933 METHOD constructor .
30- * todo,
31- ASSERT con_ref IS INITIAL .
34+ IF con_ref IS INITIAL .
35+ mv_connection = 'DEFAULT' .
36+ ELSE .
37+ mv_connection = con_ref->get_con_name( ).
38+ ENDIF .
39+
40+ ASSERT mv_connection IS NOT INITIAL .
3241 ENDMETHOD .
3342
3443 METHOD execute_ddl .
@@ -41,15 +50,15 @@ CLASS cl_sql_statement IMPLEMENTATION.
4150
4251 ASSERT statement IS NOT INITIAL .
4352
44- WRITE '@KERNEL if (abap.context.databaseConnections["DEFAULT" ] === undefined) {' .
53+ WRITE '@KERNEL if (abap.context.databaseConnections[this.mv_connection.get() ] === undefined) {' .
4554 lv_sql_message = 'not connected to db' .
4655 WRITE '@KERNEL }' .
4756 IF lv_sql_message IS NOT INITIAL .
4857 RAISE EXCEPTION TYPE cx_sql_exception.
4958 ENDIF .
5059
5160 WRITE '@KERNEL try {' .
52- WRITE '@KERNEL await abap.context.databaseConnections["DEFAULT" ].execute(statement.get());' .
61+ WRITE '@KERNEL await abap.context.databaseConnections[this.mv_connection.get() ].execute(statement.get());' .
5362 WRITE '@KERNEL } catch(e) {' .
5463 WRITE '@KERNEL lv_sql_message.set(e + "");' .
5564 WRITE '@KERNEL }' .
@@ -60,29 +69,28 @@ CLASS cl_sql_statement IMPLEMENTATION.
6069 ENDMETHOD .
6170
6271 METHOD execute_query .
72+ DATA lx_osql TYPE REF TO cx_sy_dynamic_osql_semantics.
6373 DATA lv_sql_message TYPE string .
6474
6575 ASSERT statement IS NOT INITIAL .
76+ ASSERT mv_connection IS NOT INITIAL .
6677
67- WRITE '@KERNEL if (abap.context.databaseConnections["DEFAULT" ] === undefined) {' .
78+ WRITE '@KERNEL if (abap.context.databaseConnections[this.mv_connection.get() ] === undefined) {' .
6879 lv_sql_message = 'not connected to db' .
6980 WRITE '@KERNEL }' .
7081 IF lv_sql_message IS NOT INITIAL .
71- RAISE EXCEPTION TYPE cx_sql_exception.
82+ RAISE EXCEPTION TYPE cx_sql_exception EXPORTING sql_message = lv_sql_message .
7283 ENDIF .
7384
7485 CREATE OBJECT result_set.
7586
76- WRITE '@KERNEL try {' .
77- WRITE '@KERNEL const res = await abap.context.databaseConnections["DEFAULT" ].select({select: statement.get()});' .
87+ TRY .
88+ WRITE '@KERNEL const res = await abap.context.databaseConnections[this.mv_connection.get() ].select({select: statement.get()});' .
7889* WRITE '@KERNEL console.dir(res.rows);'.
79- WRITE '@KERNEL result_set.get().mv_magic = res.rows;' .
80- WRITE '@KERNEL } catch(e) {' .
81- WRITE '@KERNEL lv_sql_message.set(e + "");' .
82- WRITE '@KERNEL }' .
83- IF lv_sql_message IS NOT INITIAL .
84- RAISE EXCEPTION TYPE cx_sql_exception.
85- ENDIF .
90+ WRITE '@KERNEL result_set.get().mv_magic = res.rows;' .
91+ CATCH cx_sy_dynamic_osql_semantics INTO lx_osql.
92+ RAISE EXCEPTION TYPE cx_sql_exception EXPORTING sql_message = lx_osql->sqlmsg.
93+ ENDTRY .
8694
8795 ENDMETHOD .
8896
0 commit comments