*&---------------------------------------------------------------------*
*& Report ZTEST_HANA_QUERY1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZDEMO_HANA_QUERY.
type-POOLs:ADBC.
types : BEGIN OF ty_purchase_order,
PURCHASEORDERID type char30,
CreatedBy type char30,
GrossAmount type char30,
NetAmount type char30,
Currency type char30,
END OF ty_purchase_order.
data : lt_data type TABLE OF ty_purchase_order,
ls_data type ty_purchase_order.
data lv_sql type string.
data lv_from type string.
data lv_where type string.
data lv_where2 type string.
data lv_where3 type string.
data : v_rows type i.
data : lt_meta type ADBC_RS_METADATA_DESCR_TAB,
lt_column type ADBC_COLUMN_TAB,
ls_meta like LINE OF lt_meta,
ls_column like LINE OF lt_column.
*Define variables for the connection
data: lr_dbconn type ref to cl_sql_connection,
lv_con type dbcon_name value '<your hana db host added in dbcon view in sm30>',
lr_sql_env type ref to cl_sql_statement,
lr_sql_result type ref to cl_sql_result_set,
lr_sql_exc type ref to cx_sql_exception, "#EC NEEDED
lr_par_exc type ref to cx_parameter_invalid, "#EC NEEDED
dref TYPE REF TO data,
tab_ref type REF TO data,
gt_components type cl_abap_structdescr=>component_table,
gs_components like LINE OF gt_components.
FIELD-SYMBOLS : <table> TYPE ANY TABLE,
<str> type any,
<FIELDV> TYPE ANY.
*Get connection
lr_dbconn = cl_sql_connection=>get_connection( con_name = lv_con ).
CREATE OBJECT lr_sql_env
EXPORTING
con_ref = lr_dbconn.
*Define sql script
lv_sql = 'Select TOP 5 *'.
lv_from = 'FROM "SAP_HANA_EPM_DEMO"."sap.hana.democontent.epm.data::purchaseOrder"'.
concatenate lv_sql lv_from into lv_sql respecting blanks SEPARATED BY space.
lr_sql_result = lr_sql_env->execute_query( lv_sql ).
lt_meta = lr_sql_result->GET_METADATA( ).
LOOP AT lt_meta INTO ls_meta.
* IF SY-TABIX > 2.
* EXIT.
* ENDIF.
ls_column = ls_meta-COLUMN_NAME.
TRANSLATE ls_column to upper case.
append ls_column to lt_column.
gs_components-NAME = ls_meta-COLUMN_NAME.
gs_components-TYPE ?= cl_abap_datadescr=>DESCRIBE_BY_DATA( P_DATA = ls_meta-DATA_TYPE ).
REPLACE '.' INTO gs_components-NAME WITH ''.
CONDENSE gs_components-NAME.
append gs_components to gt_components.
ENDLOOP.
DATA lr_tabledescr TYPE REF TO cl_abap_tabledescr.
lr_tabledescr = cl_abap_tabledescr=>create(
p_line_type = CL_ABAP_STRUCTDESCR=>CREATE(
P_COMPONENTS = gt_components
) ).
CREATE DATA tab_ref TYPE HANDLE lr_tabledescr.
lr_sql_result->SET_PARAM_TABLE(
exporting
ITAB_REF = tab_ref " Reference to Output Variable
CORRESPONDING_FIELDS = lt_column
).
*
***Execute the query
lr_sql_result->NEXT_PACKAGE( ).
v_rows = lr_sql_result->Next( ).
*
ASSIGN tab_ref->* to <table>.
LOOP AT <table> ASSIGNING <str>.
MOVE-CORRESPONDING <str> to ls_data.
append ls_data to lt_data.
ENDLOOP.
BREAK-POINT.