Advertisement
Sauron3

APPD custom instrumentation

May 22nd, 2019
1,135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 4.22 KB | None | 0 0
  1. report z_appd_instrument_demo.
  2.  
  3. parameters:
  4.   p_app             type /dvd/appd_app_name obligatory default 'SAP QA',
  5.   p_tran            type /dvd/appd_tran_name obligatory default 'EQ1 - ABAP Test instrumentation',
  6.   p_be              type /dvd/appd_backend_name obligatory default 'HTTPTestBackend',
  7.   p_count           type i default 10,
  8.   p_bterr           type string lower case,
  9.   p_ecerr           type string lower case.
  10.  
  11. data:
  12.   go_sdk            type ref to /dvd/appd_if_sdk,
  13.   go_bt             type ref to /dvd/appd_if_bt,
  14.   go_ec             type ref to /dvd/appd_if_exitcall,
  15.   gv_backend_type   type /dvd/appd_backend_type,
  16.   gv_backend_name   type /dvd/appd_backend_name,
  17.   gt_prop           type /dvd/appd_t_backend_property,
  18.   gs_prop           like line of gt_prop,
  19.   gx_root           type ref to cx_root,
  20.   gv_text           type string,
  21.   gv_corr_header    type /dvd/appd_corr_header,
  22.   gt_data           type /dvd/appd_t_key_value,
  23.   gs_data           like line of gt_data,
  24.   gt_dd02l          type table of dd02l.
  25.  
  26. * Get SDK reference
  27. try.
  28.     go_sdk = /dvd/appd_cl_sdk=>init_sdk( iv_app_name = p_app ).
  29.  
  30.   catch cx_root into gx_root.
  31.     gv_text = gx_root->get_text( ).
  32.     write: / gv_text.
  33.     exit.
  34. endtry.
  35.  
  36.  
  37. *If you do have backend created you don’t need to do this
  38. * Declare HTTP test backend
  39. gs_prop-property_key = 'HOST'.
  40. gs_prop-property_value = 'test.nuvasive.com'.
  41. append gs_prop to gt_prop.
  42.  
  43. try.
  44.  
  45. *   Declare new backend
  46.     call method go_sdk->backend_declare
  47.       exporting
  48.         iv_backend_type = 'HTTP'
  49.         iv_backend_name = p_be
  50.         it_property     = gt_prop.
  51.  
  52.   catch cx_root into gx_root.
  53.     gv_text = gx_root->get_text( ).
  54.     write: / gv_text.
  55.     exit.
  56. endtry.
  57.  
  58.  
  59. do p_count times.
  60.  
  61.   try.
  62.  
  63.       write: / 'Begin new transaction', p_tran.
  64.       go_bt = go_sdk->bt_begin( iv_transaction_name = p_tran ).
  65.  
  66. *go_bt->add_error( iv_level = 'ERROR'
  67. *                  iv_message = 'Something went wrong :)' ).
  68.  
  69.       select * from dd02l up to 5000 rows
  70.         into table gt_dd02l.
  71.  
  72.       write: / 'Begin new exit call to backend', p_be.
  73.  
  74. *     Perform exitcall
  75.       go_ec = go_bt->exitcall_begin( iv_backend_name = p_be ).
  76.  
  77.       gv_corr_header = go_ec->get_correlation_header( ).
  78.  
  79.       write: / 'Correlation header:', gv_corr_header.
  80.  
  81.       wait up to 1 seconds.
  82.  
  83.  
  84.       write: / 'End exit call'.
  85.  
  86.       if p_ecerr is not initial.
  87.         go_ec->add_error( iv_level = 'E'
  88.                           iv_message = p_ecerr ).
  89.       endif.
  90.  
  91. *     End exit call
  92.       go_ec->end( ).
  93.  
  94.       write: / 'End transaction'.
  95.  
  96.       if p_bterr is not initial.
  97.         go_bt->add_error( iv_level = 'E'
  98.                           iv_message = p_bterr ).
  99.       endif.
  100.  
  101. *     If BT is snapshotting, add some user data
  102.       if go_bt->is_snapshotting( ) = 'X'.
  103.         write: / 'Transaction is SNAPSHOTTING! --> Adding user data'.
  104.         clear gt_data.
  105.         gs_data-key = 'DB Time'.
  106.         gs_data-value = '123'.
  107.         append gs_data to gt_data.
  108.  
  109.         gs_data-key = 'Enqueu Time'.
  110.         gs_data-value = '77'.
  111.         append gs_data to gt_data.
  112.  
  113.         go_bt->add_user_data( it_data = gt_data ).
  114.       endif.
  115.  
  116. *     End the transaction
  117.       go_bt->end( ).
  118.  
  119.     catch cx_root into gx_root.
  120.       gv_text = gx_root->get_text( ).
  121.       write: / gv_text.
  122.       exit.
  123.  
  124.   endtry.
  125.  
  126.  
  127. enddo.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement