Advertisement
Sauron3

GLUE - EVICO SAP control table end routine

Jul 6th, 2021
2,530
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 5.13 KB | None | 0 0
  1. TYPES:
  2.   BEGIN OF ts_object,
  3.     process  TYPE /dvd/gl_ext2_id,
  4.     ext2_obj TYPE /dvd/gl_ext2_id,
  5.   END OF ts_object,
  6.  
  7.   BEGIN OF ts_gtab,
  8.     consumer TYPE /dvd/gl_ext2_id,
  9.     gltab    TYPE tabname,
  10.   END OF ts_gtab,
  11.  
  12.   BEGIN OF ts_storid,
  13.     gltab      TYPE tabname,
  14.     storid     TYPE /dvd/sm_storid,
  15.     ms_tabname TYPE /dvd/sm_hive_tabname,
  16.   END OF ts_storid,
  17.  
  18.   tt_object TYPE STANDARD TABLE OF ts_object,
  19.   tt_gtab   TYPE STANDARD TABLE OF ts_gtab,
  20.   tt_storid TYPE STANDARD TABLE OF ts_storid.
  21.  
  22. DATA:
  23.   ls_ext2_obj      TYPE /dvd/gl_ext2_obj,
  24.   ls_obj_params    TYPE /dvd/gl_ext2_obp,
  25.   ls_fetcher       TYPE ts_object,
  26.   ls_consumer      TYPE ts_object,
  27.   ls_gltab         TYPE ts_gtab,
  28.   ls_storid        TYPE ts_storid,
  29.  
  30.   lt_fetchers      TYPE tt_object,
  31.   lt_consumers     TYPE tt_object,
  32.   lt_gltab         TYPE tt_gtab,
  33.   lt_storid        TYPE tt_storid,
  34.   lt_ext2_obj      TYPE STANDARD TABLE OF /dvd/gl_ext2_obj,
  35.   lt_source_tables TYPE STANDARD TABLE OF /dvd/gl_ext2_obp,
  36.   lt_trnc_target   TYPE STANDARD TABLE OF /dvd/gl_ext2_obp.
  37.  
  38. FIELD-SYMBOLS:
  39. <ls_data>     LIKE LINE OF ct_data.
  40.  
  41. "first select is going for descriptions
  42. SELECT *
  43.   FROM /dvd/gl_ext2_obj
  44.   INTO TABLE lt_ext2_obj
  45.   FOR ALL ENTRIES IN ct_data
  46.   WHERE name   = ct_data-ext_name
  47.     AND status = /dvd/gl_if_constants=>co_obj_status-active.
  48.  
  49. SORT lt_ext2_obj ASCENDING BY name.
  50.  
  51. "now lets get all consumers and fetchers
  52. "fetchers
  53. SELECT name low
  54.   FROM /dvd/gl_ext2_obp
  55.   INTO TABLE lt_fetchers
  56.   FOR ALL ENTRIES IN ct_data
  57.   WHERE name       = ct_data-ext_name
  58.     AND param_name = /dvd/gl_ext2_if_constants=>co_param_process-fetcher_id.
  59.  
  60. SORT lt_fetchers ASCENDING BY process.
  61.  
  62. "consumers
  63. SELECT name low
  64.   FROM /dvd/gl_ext2_obp
  65.   INTO TABLE lt_consumers
  66.   FOR ALL ENTRIES IN ct_data
  67.   WHERE name       = ct_data-ext_name
  68.     AND param_name = /dvd/gl_ext2_if_constants=>co_param_process-consumer_id.
  69.  
  70. SORT lt_consumers ASCENDING BY process.
  71.  
  72. "get parameters for fetcher - source table
  73. "sap, adso, listcube
  74. SELECT *
  75.   FROM /dvd/gl_ext2_obp
  76.   INTO TABLE lt_source_tables
  77.   FOR ALL ENTRIES IN lt_fetchers
  78.   WHERE name          = lt_fetchers-ext2_obj
  79.     AND ( param_name  = /dvd/gl_ext2_if_constants=>co_param_fetcher_sap-tabname
  80.     OR  param_name    = /dvd/gl_ext2_if_constants=>co_param_fetcher_adso-adso
  81.     OR  param_name    = /dvd/gl_ext2_if_constants=>co_param_fetcher_listcube-infoprovider ).
  82.  
  83. SORT lt_source_tables ASCENDING BY name.
  84.  
  85. "get parameters for consumer - truncate target
  86. SELECT *
  87.   FROM /dvd/gl_ext2_obp
  88.   INTO TABLE lt_trnc_target
  89.   FOR ALL ENTRIES IN lt_consumers
  90.   WHERE name       = lt_consumers-ext2_obj
  91.     AND param_name = /dvd/gl_ext2_if_constants=>co_param_consumer-truncate_target.
  92.  
  93. SORT lt_trnc_target ASCENDING BY name.
  94.  
  95. "get glue table
  96. SELECT name low
  97.   FROM /dvd/gl_ext2_obp
  98.   INTO TABLE lt_gltab
  99.   FOR ALL ENTRIES IN lt_consumers
  100.   WHERE name       = lt_consumers-ext2_obj
  101.     AND param_name = /dvd/gl_ext2_if_constants=>co_param_consumer_glue-tabname.
  102.  
  103. SORT lt_gltab ASCENDING BY consumer.
  104.  
  105. "get storage id and external storage table name for glue table
  106. SELECT a~tabname a~storid ms_tabname
  107.   FROM /dvd/gl_dd_th AS a
  108.   JOIN /dvd/sm_hive_tab AS b
  109.     ON  a~tabname = b~tabname
  110.     AND a~storid = b~storid
  111.   INTO TABLE lt_storid
  112.   FOR ALL ENTRIES IN lt_gltab
  113.     WHERE a~tabname = lt_gltab-gltab
  114.       AND status    = /dvd/gl_if_constants=>co_obj_status-active.
  115.  
  116. SORT lt_storid ASCENDING BY gltab.
  117.  
  118. LOOP AT ct_data ASSIGNING <ls_data>.
  119.  
  120.   "get description
  121.   READ TABLE lt_ext2_obj INTO ls_ext2_obj
  122.   WITH KEY name = <ls_data>-ext_name BINARY SEARCH.
  123.   IF sy-subrc EQ 0.
  124.     <ls_data>-description = ls_ext2_obj-ddtext.
  125.   ENDIF.
  126.  
  127.   "lest get fetcher as we need source table from him
  128.   "selection based on extraction process name
  129.   READ TABLE lt_fetchers INTO ls_fetcher
  130.   WITH KEY process = <ls_data>-ext_name BINARY SEARCH.
  131.   IF sy-subrc EQ 0.
  132.     "now get source table for SAP table fecther
  133.     READ TABLE lt_source_tables INTO ls_obj_params
  134.     WITH KEY name = ls_fetcher-ext2_obj BINARY SEARCH.
  135.     IF sy-subrc EQ 0.
  136.       <ls_data>-source_table = ls_obj_params-low.
  137.     ENDIF.
  138.   ENDIF.
  139.  
  140.   "get consumer from which we need glue table and
  141.   "truncate target parameters
  142.   READ TABLE lt_consumers INTO ls_consumer
  143.   WITH KEY process = <ls_data>-ext_name BINARY SEARCH.
  144.   IF sy-subrc EQ 0.
  145.     "get truncate target parameter from consumer
  146.     READ TABLE lt_trnc_target INTO ls_obj_params
  147.     WITH KEY name = ls_consumer-ext2_obj BINARY SEARCH.
  148.     IF sy-subrc EQ 0.
  149.       <ls_data>-trnc_target = ls_obj_params-low.
  150.     ENDIF.
  151.  
  152.     "now get glue table for that consumer
  153.     READ TABLE lt_gltab INTO ls_gltab
  154.     WITH KEY consumer = ls_consumer-ext2_obj BINARY SEARCH.
  155.     IF sy-subrc EQ 0.
  156.       <ls_data>-target_table = ls_gltab-gltab.
  157.  
  158.       "for glue table get storage ID and table name on storage
  159.       READ TABLE lt_storid INTO ls_storid
  160.       WITH KEY gltab = ls_gltab-gltab BINARY SEARCH.
  161.       IF sy-subrc EQ 0.
  162.         <ls_data>-storid     = ls_storid-storid.
  163.         <ls_data>-ms_tabname = ls_storid-ms_tabname.
  164.       ENDIF.
  165.  
  166.     ENDIF.
  167.  
  168.   ENDIF.
  169.  
  170. ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement