Guest User

Untitled

a guest
Jul 23rd, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. report rtti.
  2. tables bkpf.
  3. select-options so_bukrs for bkpf-bukrs.
  4. select-options so_belnr for bkpf-belnr.
  5. select-options so_gjahr for bkpf-gjahr.
  6.  
  7. class rtti definition create private final.
  8. public section.
  9. types tt_fieldname type standard table of fieldname with non-unique default key.
  10.  
  11. class-methods get_fieldname
  12. importing ia_any type any
  13. returning value(rt) type tt_fieldname.
  14. private section.
  15. endclass.
  16.  
  17. class rtti implementation.
  18. method get_fieldname.
  19. data lo_typedescr type ref to cl_abap_typedescr.
  20. data lo_tabledescr type ref to cl_abap_tabledescr.
  21. data lo_structdescr type ref to cl_abap_structdescr.
  22. data lv_fieldname like line of rt.
  23. data lt_dfies type ddfields.
  24. data ls_dfies type dfies.
  25.  
  26. lo_typedescr = cl_abap_typedescr=>describe_by_data( ia_any ).
  27.  
  28. case lo_typedescr->kind.
  29. when cl_abap_typedescr=>kind_struct.
  30. lo_structdescr ?= lo_typedescr.
  31. when cl_abap_typedescr=>kind_table.
  32. lo_tabledescr ?= lo_typedescr.
  33. lo_structdescr ?= lo_tabledescr->get_table_line_type( ).
  34. when others. assert 1 = 2.
  35. endcase.
  36.  
  37. lt_dfies = cl_salv_data_descr=>read_structdescr( lo_structdescr ).
  38. loop at lt_dfies into ls_dfies.
  39. lv_fieldname = ls_dfies-fieldname.
  40. append lv_fieldname to rt.
  41. endloop.
  42. endmethod.
  43. endclass.
  44.  
  45. class lcl_app definition create private final.
  46. public section.
  47. class-methods new returning value(ro_instance) type ref to lcl_app.
  48. methods run.
  49. private section.
  50. endclass.
  51.  
  52. start-of-selection.
  53. lcl_app=>new( )->run( ).
  54.  
  55. class lcl_app implementation.
  56. method new.
  57. create object ro_instance.
  58. endmethod.
  59.  
  60. method run.
  61. types: begin of ts_example,
  62. bukrs type bkpf-bukrs,
  63. belnr type bkpf-belnr,
  64. gjahr type bkpf-gjahr,
  65. end of ts_example.
  66.  
  67. data lt_fieldname type rtti=>tt_fieldname.
  68. data lt_example type table of ts_example.
  69. data lo_grid type ref to cl_salv_table.
  70.  
  71. lt_fieldname = rtti=>get_fieldname( lt_example ).
  72. select (lt_fieldname)
  73. from bkpf into table lt_example
  74. where bukrs in so_bukrs
  75. and belnr in so_belnr
  76. and gjahr in so_gjahr.
  77.  
  78. call method cl_salv_table=>factory
  79. importing
  80. r_salv_table = lo_grid
  81. changing
  82. t_table = lt_example.
  83.  
  84. lo_grid->display( ).
  85. endmethod.
  86. endclass.
Add Comment
Please, Sign In to add comment