*&---------------------------------------------------------------------* *& Report /EUTIN/ADBC_DEMO_FULL *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT /eutin/adbc_demo_full. CLASS lcl_main DEFINITION FINAL. PUBLIC SECTION. METHODS: get_data IMPORTING iv_arbgb TYPE t100-arbgb, generate_output. PROTECTED SECTION. DATA mt_t100 TYPE STANDARD TABLE OF t100. ENDCLASS. PARAMETERS p_arbgb TYPE t100-arbgb OBLIGATORY DEFAULT '00'. INITIALIZATION. *--- default description of selection screen parameter %_p_arbgb_%_app_%-text = 'Message Class'. START-OF-SELECTION. CALL FUNCTION 'AUTHORITY_CHECK_TCODE' EXPORTING tcode = 'SA38' EXCEPTIONS ok = 1 not_ok = 2 OTHERS = 3. IF sy-subrc GT 1. *--- You are not authorized to use transaction & MESSAGE e077(s#) WITH 'SA38'. ENDIF. DATA(o_main) = NEW lcl_main( ). o_main->get_data( EXPORTING iv_arbgb = p_arbgb ). o_main->generate_output( ). CLASS lcl_main IMPLEMENTATION. METHOD get_data. *--- Fill up the columns which you want to select from the DB *--- The order should match with the output table DATA lt_cols TYPE adbc_column_tab. APPEND 'SPRSL' TO lt_cols. APPEND 'ARBGB' TO lt_cols. APPEND 'MSGNR' TO lt_cols. APPEND 'TEXT' TO lt_cols. DATA(lv_query) = |SELECT sprsl, arbgb, msgnr, text FROM t100 WHERE SPRSL = '{ sy-langu }' AND ARBGB = '{ iv_arbgb }' |. TRY. DATA(lo_sql) = NEW cl_sql_statement( ). GET REFERENCE OF mt_t100 INTO DATA(lo_output). DATA(lo_result) = lo_sql->execute_query( lv_query ). lo_result->set_param_table( itab_ref = lo_output corresponding_fields = lt_cols ). IF lo_result->next_package( ) > 0. EXIT. ENDIF. CATCH cx_sql_exception INTO DATA(lx_sql_exception). MESSAGE lx_sql_exception->get_text( ) TYPE 'I' DISPLAY LIKE 'E'. RETURN. CATCH cx_root INTO DATA(lx_root). MESSAGE lx_root->get_text( ) TYPE 'I' DISPLAY LIKE 'E'. RETURN. ENDTRY. ENDMETHOD. METHOD generate_output. IF mt_t100[] IS INITIAL. MESSAGE s094(s#). "No data exists RETURN. ENDIF. DATA lo_salv_table TYPE REF TO cl_salv_table. TRY. cl_salv_table=>factory( * EXPORTING * list_display = IF_SALV_C_BOOL_SAP=>FALSE * r_container = * container_name = IMPORTING r_salv_table = lo_salv_table CHANGING t_table = mt_t100 ). CATCH cx_salv_msg INTO DATA(lx_salv_msg). MESSAGE lx_salv_msg->get_text( ) TYPE 'I' DISPLAY LIKE 'E'. RETURN. CATCH cx_root INTO DATA(lx_root). MESSAGE lx_root->get_text( ) TYPE 'I' DISPLAY LIKE 'E'. RETURN. ENDTRY. lo_salv_table->display( ). ENDMETHOD. ENDCLASS. *--- The End!