Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Form get_data_solution
  3. *&---------------------------------------------------------------------*
  4. FORM get_data_solution CHANGING ct_customers TYPE ty_t_customers.
  5.  
  6.  
  7.  
  8. * ADBC Objects and Variables
  9.  
  10. * DATA:
  11. * lv_sql TYPE string.
  12.  
  13. * Processing
  14. ****************************
  15.  
  16. * 1. Get DB Connection (optional for accessing primary database)
  17. TRY.
  18. cl_sql_connection=>get_connection(
  19. EXPORTING
  20. con_name = c_primdb
  21. sharable = space " allgemeines flag
  22. RECEIVING
  23. con_ref = DATA(lo_conn)
  24. ).
  25. CATCH cx_sql_exception. "
  26. ENDTRY.
  27.  
  28. * 2. Create statement object
  29. DATA(lo_statement) = NEW cl_sql_statement(
  30. con_ref = lo_conn
  31. * tab_name_for_trace =
  32. ).
  33.  
  34. * 3. assemble SQL statement
  35.  
  36. CONCATENATE `SELECT `
  37. `C.ID, `
  38. `C.NAME, `
  39. `C.POSTCODE, `
  40. `C.CITY, `
  41. `C.COUNTRY, `
  42. `AVG( DAYS_BETWEEN( B.ORDER_DATE, B.FLDATE ) ) AS days_ahead `
  43. `FROM SBOOK AS B INNER JOIN SCUSTOM AS C `
  44. `ON B.MANDT = C.MANDT `
  45. `AND B.CUSTOMID = C.ID `
  46. `WHERE B.CANCELLED <> 'X' `
  47. `AND C.MANDT = `
  48. `'`
  49. sy-mandt
  50. `'`
  51. `GROUP BY C.ID, C.NAME, C.POSTCODE, C.CITY, C.COUNTRY `
  52. `ORDER BY C.ID `
  53. INTO DATA(lv_sql).
  54.  
  55. * alternative use string templates and string expressions
  56. * lv_sql = |SELECT | &&
  57. * |C.ID, | &&
  58. * |C.NAME, | &&
  59. * |C.POSTCODE,| &&
  60. * |C.CITY, | &&
  61. * |C.COUNTRY, | &&
  62. * |AVG( DAYS_BETWEEN( B.ORDER_DATE, B.FLDATE ) ) AS days_ahead | &&
  63. * |FROM SBOOK AS B INNER JOIN SCUSTOM AS C | &&
  64. * |ON B.MANDT = C.MANDT | &&
  65. * |AND B.CUSTOMID = C.ID | &&
  66. * |WHERE C.MANDT = '{ sy-mandt }' | &&
  67. * |AND B.CANCELLED <> 'X' | &&
  68. * |GROUP BY C.ID, C.NAME, C.POSTCODE, C.CITY, C.COUNTRY | &&
  69. * |ORDER BY C.ID |.
  70.  
  71. * 4. Execute Query
  72. TRY.
  73. DATA(lo_result) = lo_statement->execute_query( lv_sql ).
  74.  
  75.  
  76. * 5. Assign target variable
  77. DATA: lr_data TYPE REF TO data.
  78. GET REFERENCE OF ct_customers INTO lr_data.
  79. lo_result->set_param_table( lr_data ).
  80.  
  81. * 6. Read result into internal Table
  82. lo_result->next_package( ).
  83.  
  84. * 7. Close connection
  85. lo_result->close( ).
  86. CATCH cx_sql_exception.
  87. ENDTRY.
  88. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement