TYPES : gty_t_query TYPE TABLE OF string.
FORM execute_native USING pt_query TYPE gty_t_query
CHANGING pt_data TYPE STANDARD TABLE.
DATA: lo_conn TYPE REF TO cl_sql_connection.
DATA: lo_stmt TYPE REF TO cl_sql_statement.
DATA: lo_result TYPE REF TO cl_sql_result_set.
DATA: lo_except TYPE REF TO cx_sql_exception.
DATA: lv_rc TYPE i.
DATA: lv_rows TYPE i.
DATA: lv_text TYPE string.
DATA: lv_query TYPE string.
DATA: lt_ref TYPE REF TO data.
DATA: ls_query LIKE LINE OF pt_query.
TRY.
REFRESH pt_data.
CREATE OBJECT lo_conn.
lo_stmt = lo_conn->create_statement( ).
LOOP AT pt_query INTO ls_query.
CONCATENATE lv_query ls_query
INTO lv_query
SEPARATED BY space.
CONDENSE lv_query.
ENDLOOP.
lo_result = lo_stmt->execute_query( lv_query ).
GET REFERENCE OF pt_data INTO lt_ref.
lo_result->set_param_table( lt_ref ).
lv_rows = lo_result->next_package( ).
lo_result->close( ).
lo_conn->close( ).
CATCH cx_sql_exception INTO lo_except.
IF lo_except->db_error = 'X'.
lv_rc = lo_except->sql_code.
lv_text = lo_except->sql_message.
ELSE.
lv_rc = lo_except->internal_error.
lv_text = 'Unknown internal error'.
ENDIF.
ENDTRY.
ENDFORM.