Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TYPES:
- BEGIN OF ts_object,
- process TYPE /dvd/gl_ext2_id,
- ext2_obj TYPE /dvd/gl_ext2_id,
- END OF ts_object,
- BEGIN OF ts_gtab,
- consumer TYPE /dvd/gl_ext2_id,
- gltab TYPE tabname,
- END OF ts_gtab,
- BEGIN OF ts_storid,
- gltab TYPE tabname,
- storid TYPE /dvd/sm_storid,
- ms_tabname TYPE /dvd/sm_hive_tabname,
- END OF ts_storid,
- tt_object TYPE STANDARD TABLE OF ts_object,
- tt_gtab TYPE STANDARD TABLE OF ts_gtab,
- tt_storid TYPE STANDARD TABLE OF ts_storid.
- DATA:
- ls_ext2_obj TYPE /dvd/gl_ext2_obj,
- ls_obj_params TYPE /dvd/gl_ext2_obp,
- ls_fetcher TYPE ts_object,
- ls_consumer TYPE ts_object,
- ls_gltab TYPE ts_gtab,
- ls_storid TYPE ts_storid,
- lt_fetchers TYPE tt_object,
- lt_consumers TYPE tt_object,
- lt_gltab TYPE tt_gtab,
- lt_storid TYPE tt_storid,
- lt_ext2_obj TYPE STANDARD TABLE OF /dvd/gl_ext2_obj,
- lt_source_tables TYPE STANDARD TABLE OF /dvd/gl_ext2_obp,
- lt_trnc_target TYPE STANDARD TABLE OF /dvd/gl_ext2_obp.
- FIELD-SYMBOLS:
- <ls_data> LIKE LINE OF ct_data.
- "first select is going for descriptions
- SELECT *
- FROM /dvd/gl_ext2_obj
- INTO TABLE lt_ext2_obj
- FOR ALL ENTRIES IN ct_data
- WHERE name = ct_data-ext_name
- AND status = /dvd/gl_if_constants=>co_obj_status-active.
- SORT lt_ext2_obj ASCENDING BY name.
- "now lets get all consumers and fetchers
- "fetchers
- SELECT name low
- FROM /dvd/gl_ext2_obp
- INTO TABLE lt_fetchers
- FOR ALL ENTRIES IN ct_data
- WHERE name = ct_data-ext_name
- AND param_name = /dvd/gl_ext2_if_constants=>co_param_process-fetcher_id.
- SORT lt_fetchers ASCENDING BY process.
- "consumers
- SELECT name low
- FROM /dvd/gl_ext2_obp
- INTO TABLE lt_consumers
- FOR ALL ENTRIES IN ct_data
- WHERE name = ct_data-ext_name
- AND param_name = /dvd/gl_ext2_if_constants=>co_param_process-consumer_id.
- SORT lt_consumers ASCENDING BY process.
- "get parameters for fetcher - source table
- "sap, adso, listcube
- SELECT *
- FROM /dvd/gl_ext2_obp
- INTO TABLE lt_source_tables
- FOR ALL ENTRIES IN lt_fetchers
- WHERE name = lt_fetchers-ext2_obj
- AND ( param_name = /dvd/gl_ext2_if_constants=>co_param_fetcher_sap-tabname
- OR param_name = /dvd/gl_ext2_if_constants=>co_param_fetcher_adso-adso
- OR param_name = /dvd/gl_ext2_if_constants=>co_param_fetcher_listcube-infoprovider ).
- SORT lt_source_tables ASCENDING BY name.
- "get parameters for consumer - truncate target
- SELECT *
- FROM /dvd/gl_ext2_obp
- INTO TABLE lt_trnc_target
- FOR ALL ENTRIES IN lt_consumers
- WHERE name = lt_consumers-ext2_obj
- AND param_name = /dvd/gl_ext2_if_constants=>co_param_consumer-truncate_target.
- SORT lt_trnc_target ASCENDING BY name.
- "get glue table
- SELECT name low
- FROM /dvd/gl_ext2_obp
- INTO TABLE lt_gltab
- FOR ALL ENTRIES IN lt_consumers
- WHERE name = lt_consumers-ext2_obj
- AND param_name = /dvd/gl_ext2_if_constants=>co_param_consumer_glue-tabname.
- SORT lt_gltab ASCENDING BY consumer.
- "get storage id and external storage table name for glue table
- SELECT a~tabname a~storid ms_tabname
- FROM /dvd/gl_dd_th AS a
- JOIN /dvd/sm_hive_tab AS b
- ON a~tabname = b~tabname
- AND a~storid = b~storid
- INTO TABLE lt_storid
- FOR ALL ENTRIES IN lt_gltab
- WHERE a~tabname = lt_gltab-gltab
- AND status = /dvd/gl_if_constants=>co_obj_status-active.
- SORT lt_storid ASCENDING BY gltab.
- LOOP AT ct_data ASSIGNING <ls_data>.
- "get description
- READ TABLE lt_ext2_obj INTO ls_ext2_obj
- WITH KEY name = <ls_data>-ext_name BINARY SEARCH.
- IF sy-subrc EQ 0.
- <ls_data>-description = ls_ext2_obj-ddtext.
- ENDIF.
- "lest get fetcher as we need source table from him
- "selection based on extraction process name
- READ TABLE lt_fetchers INTO ls_fetcher
- WITH KEY process = <ls_data>-ext_name BINARY SEARCH.
- IF sy-subrc EQ 0.
- "now get source table for SAP table fecther
- READ TABLE lt_source_tables INTO ls_obj_params
- WITH KEY name = ls_fetcher-ext2_obj BINARY SEARCH.
- IF sy-subrc EQ 0.
- <ls_data>-source_table = ls_obj_params-low.
- ENDIF.
- ENDIF.
- "get consumer from which we need glue table and
- "truncate target parameters
- READ TABLE lt_consumers INTO ls_consumer
- WITH KEY process = <ls_data>-ext_name BINARY SEARCH.
- IF sy-subrc EQ 0.
- "get truncate target parameter from consumer
- READ TABLE lt_trnc_target INTO ls_obj_params
- WITH KEY name = ls_consumer-ext2_obj BINARY SEARCH.
- IF sy-subrc EQ 0.
- <ls_data>-trnc_target = ls_obj_params-low.
- ENDIF.
- "now get glue table for that consumer
- READ TABLE lt_gltab INTO ls_gltab
- WITH KEY consumer = ls_consumer-ext2_obj BINARY SEARCH.
- IF sy-subrc EQ 0.
- <ls_data>-target_table = ls_gltab-gltab.
- "for glue table get storage ID and table name on storage
- READ TABLE lt_storid INTO ls_storid
- WITH KEY gltab = ls_gltab-gltab BINARY SEARCH.
- IF sy-subrc EQ 0.
- <ls_data>-storid = ls_storid-storid.
- <ls_data>-ms_tabname = ls_storid-ms_tabname.
- ENDIF.
- ENDIF.
- ENDIF.
- ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement