*&---------------------------------------------------------------------**& Report ztest_adbc_demo*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*REPORT ztest_adbc_demo.TYPES:*”设定内表和工作区构造体的类型 BEGIN OF ty_airline, airline_id TYPE scarr-carrid, airline_name TYPE scarr-carrname, airline_currency TYPE scarr-currcode, url TYPE scarr-url, url2 TYPE string, END OF ty_airline.*”设定承载SQL语句的变量,返回后果变量、条件变量DATA: lv_statement TYPE string, lt_airline TYPE TABLE OF ty_airline, lr_result TYPE REF TO data, lv_currency TYPE scarr-currcode,**”设定ADBC相干类的连贯对象、SQL对象、后果对象、异样对象的变量 lo_conn TYPE REF TO cl_sql_connection, lo_statement TYPE REF TO cl_sql_statement, lo_result_set TYPE REF TO cl_sql_result_set, lx_sql TYPE REF TO cx_sql_exception.*”关联内表到后果对象变量中GET REFERENCE OF lt_airline INTO lr_result.*”设定条件变量的值lv_currency = 'EUR'.*”拼接HANA Native SQL,该语法是HANA的SQL Script所反对的语法*”也能够调用SQL Script的函数如SUBSTRINGlv_statement = | SELECT CARRID, CARRNAME, CURRCODE, URL, |&& | SUBSTRING (URL,8,LENGTH(URL)) AS URL2 |&& | FROM scarr WHERE currcode = '{ lv_currency }' and |&& | CARRID <> 'CA' | .TRY.**n调用SQL-Connection办法,连贯到数据库 lo_conn = cl_sql_connection=>get_connection( ).**n調用SQL-Statement办法,创立SQL对毎 lo_statement = lo_conn->create_statement( ).*"調用SQL-query方还,执行SQL语句 lo_result_set = lo_statement->execute_query( lv_statement ). "调用SQL-set_param_table办法,指定用哪个内表来记录返回后果 lo_result_set->set_param_table( lr_result ).*往取数据集的下一组薮龍到内表 lo_result_set->next_package( ).*”褥到后果后,敞开数据棄 lo_result_set->close( ).*”打印内表 cl_demo_output=>display_data( lt_airline ).*”错误处理,如SQL有误,则在此处报出log,而不会导致系统解体(short dump ) CATCH cx_sql_exception INTO lx_sql. WRITE: lx_sql->get_text( ).ENDTRY.