Update
This commit is contained in:
@@ -1458,6 +1458,8 @@ CLASS zcl_demo_abap_dynamic_prog IMPLEMENTATION.
|
||||
|
||||
"In the example, the SELECT list that is used in a SELECT statement is
|
||||
"determined at runtime.
|
||||
"Note: Check out the CL_ABAP_DYN_PRG class, which supports dynamic programming by
|
||||
"checking the validity of dynamic specifications. See an example below.
|
||||
|
||||
DATA(select_list) = lcl_det_at_runtime=>get_dyn_select_list( ).
|
||||
|
||||
@@ -1512,7 +1514,7 @@ CLASS zcl_demo_abap_dynamic_prog IMPLEMENTATION.
|
||||
|
||||
**********************************************************************
|
||||
|
||||
output->next_section( `37) Excursion: Multiple Dynamically Specified ` &&
|
||||
output->next_section( `37a) Excursion: Multiple Dynamically Specified ` &&
|
||||
`Clauses in an ABAP SQL SELECT Statement` ).
|
||||
|
||||
"In this example, multiple clauses in a SELECT statement are
|
||||
@@ -1548,6 +1550,46 @@ CLASS zcl_demo_abap_dynamic_prog IMPLEMENTATION.
|
||||
output->display( `There's an issue with syntax elements.` ).
|
||||
ENDIF.
|
||||
|
||||
**********************************************************************
|
||||
|
||||
output->next_section( `37b) Excursion: Checking the validity of dynamic specifications` ).
|
||||
"The following example uses the CL_ABAP_DYN_PRG class, which supports
|
||||
"dynamic programming by checking the validity of dynamic specifications.
|
||||
"Check out the class documentation for more information.
|
||||
"In the example, several table names are provided in a string table that
|
||||
"is looped over. Some wrong table names are intentionally included.
|
||||
"You can provide the "packages" formal parameter with a table that contains
|
||||
"the names of packages in which the tables should be included. The
|
||||
"assumption is that you imported the repository into the package
|
||||
"specified. If you imported it into a package with a different name,
|
||||
"change the value accordingly. Otherwise, none of the tables is found.
|
||||
|
||||
DATA(table_names) = VALUE string_table( ( `ZDEMO_ABAP_CARR` )
|
||||
( `ZDEMO_ABAP_FLI` )
|
||||
( `NO_DBTAB` )
|
||||
( `ZDEMO_ABAP_FLSCH` )
|
||||
( `ZDEMO_ABAP_FLI2` )
|
||||
( `WRONG_DBTAB` ) ).
|
||||
|
||||
DATA(check_packages) = VALUE string_hashed_table( ( `ZABAP_CHEAT_SHEETS` ) ).
|
||||
|
||||
DATA dbtab TYPE string.
|
||||
|
||||
LOOP AT table_names INTO DATA(wa_tab).
|
||||
TRY.
|
||||
dbtab = cl_abap_dyn_prg=>check_table_name_tab( val = to_upper( wa_tab )
|
||||
packages = check_packages ).
|
||||
|
||||
SELECT SINGLE * FROM (dbtab) INTO NEW @DATA(ref_wa).
|
||||
|
||||
output->display( |Result for { wa_tab }| ).
|
||||
output->display( ref_wa->* ).
|
||||
CATCH cx_abap_not_a_table cx_abap_not_in_package INTO DATA(err).
|
||||
output->display( |Result for { wa_tab }| ).
|
||||
output->display( err->get_text( ) ).
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
**********************************************************************
|
||||
|
||||
output->next_section( `38) Dynamic Invoke` ).
|
||||
@@ -2102,4 +2144,4 @@ CLASS zcl_demo_abap_dynamic_prog IMPLEMENTATION.
|
||||
output->display( input = ref_tab->* name = `ref_tab->*` ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user