ALV Tree Icons in Spalten

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

ALV Tree Icons in Spalten

Postby Joscha3759 » Fri Sep 26, 2014 12:47 pm

Hallo allerseits,
bin noch recht neu in SAP und ABAP und sitze gerade vor einem Problem, bei dem ich nicht weiter komme. Ich soll einen ALV Tree anzeigen, der 3 Hierarchie-Ebenen hat und bei dem jedes Blatt 2 Zahlen enthält. Diese 2 Zahlen sollen verglichen werden und in einer zusätzlichen Spalte soll per Ampel Icon angezeigt werden, ob sie übereinstimmen(grün für ja, rot für nein).

Habe mich dann mit dem Beispiel BCALV_TREE_SIMPLE_DEMO beschäftigt, dieses kopiert und meinen Anforderungen angepasst. Bin nun soweit, dass mir fast alles richtig angezeigt wird. Das einzige Problem ist, dass in den 2 oberen Hierarchie-Ebenen die Ampeln nicht angezeigt werden, an den Blättern aber schon. Es soll wie die Summen auf diesen Ebenen angezeigt werden, so dass eine rote Ampel da steht, wenn eine der Ampeln unter dem Knoten rot ist und eine grüne wenn alle Knoten darunter grün sind. Habe schon fast alle Felder vom Feldkatalog ausprobiert aber noch keinen Erfolg gehabt. Hat vielleicht jemand einen Tip was ich hier übersehe?

Ich hoffe ich habe es verständlich ausgedrückt.

Danke schonmal im Voraus.
Anbei noch meinen Code:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  BCALV_TREE_SIMPLE_DEMO                                      *
  3. *&                                                                     *
  4. *&---------------------------------------------------------------------*
  5. *&                                                                     *
  6. *&                                                                     *
  7. *&---------------------------------------------------------------------*
  8.  
  9. report  z_frontend.
  10.  
  11. class cl_gui_column_tree definition load.
  12. class cl_gui_cfw definition load.
  13.  
  14. data tree1  type ref to cl_gui_alv_tree_simple.
  15.  
  16.  
  17. INCLUDE Z_ICON.
  18. *include <icon>.
  19. INCLUDE Z_FRONTEND_EVENT_RECEIVER.
  20. *include bcalv_simple_event_receiver.
  21.  
  22.   BEGIN OF t_summen.
  23.     INCLUDE TYPE zta_vergleich AS summen.
  24.     TYPES: icon type ICON_D,
  25.   END OF t_summen.
  26.  
  27. data: gt_summendaten  type table of t_summen,      "Output-Table
  28.       gt_fieldcatalog type lvc_t_fcat, "Fieldcatalog
  29.       gt_sort         type lvc_t_sort, "Sortiertabelle
  30.       ok_code         like sy-ucomm.   "OK-Code
  31.  
  32.  
  33.  
  34.   call screen 100.
  35.  
  36. *&---------------------------------------------------------------------*
  37. *&      Form  BUILD_FIELDCATALOG
  38. *&---------------------------------------------------------------------*
  39. *       text
  40. *----------------------------------------------------------------------*
  41. form build_fieldcatalog.
  42. * get fieldcatalog
  43.   call function 'LVC_FIELDCATALOG_MERGE'
  44.        exporting
  45.             i_structure_name = 'ZTA_VERGLEICH'
  46.        changing
  47.             ct_fieldcat      = gt_fieldcatalog.
  48.  
  49. * change fieldcatalog
  50.   data: ls_fieldcatalog type lvc_s_fcat.
  51.   ls_fieldcatalog-fieldname = 'ICON'.
  52. *  ls_fieldcatalog-ref_table = 'ICON'.
  53. *  ls_fieldcatalog-ref_field = 'ICON_D'.
  54. *  ls_fieldcatalog-do_sum = 'X'.
  55.   ls_fieldcatalog-col_pos = 6.
  56.   ls_fieldcatalog-tabname = '1'.
  57.   ls_fieldcatalog-icon = 'X'.
  58.   ls_fieldcatalog-scrtext_l = 'gleich?'.
  59.   ls_fieldcatalog-scrtext_m = 'gleich?'.
  60.   ls_fieldcatalog-scrtext_s = 'gleich?'.
  61.   APPEND ls_fieldcatalog to gt_fieldcatalog.
  62.  
  63.   loop at gt_fieldcatalog into ls_fieldcatalog.
  64.     case ls_fieldcatalog-fieldname.
  65.       when 'DATUM' or 'FILIALE' or 'ZAHLUNGSART'.
  66.         ls_fieldcatalog-no_out = 'X'.
  67.         ls_fieldcatalog-key    = ''.
  68.       when 'SUMME_BONS' or 'SUMMENSATZ'.
  69.         ls_fieldcatalog-do_sum = 'X'.
  70.         IF ls_fieldcatalog-fieldname = 'SUMME_BONS'.
  71.           ls_fieldcatalog-scrtext_l = 'Bons'.
  72.           ls_fieldcatalog-scrtext_m = 'Bons'.
  73.           ls_fieldcatalog-scrtext_s = 'Bons'.
  74.         ELSE.
  75.           ls_fieldcatalog-scrtext_l = 'Summensatz'.
  76.           ls_fieldcatalog-scrtext_m = 'Summensatz'.
  77.           ls_fieldcatalog-scrtext_s = 'Summensatz'.
  78.         ENDIF.
  79.     endcase.
  80.     modify gt_fieldcatalog from ls_fieldcatalog.
  81.  
  82. endform.                               " BUILD_FIELDCATALOG
  83. *&---------------------------------------------------------------------*
  84. *&      Form  BUILD_OUTTAB
  85. *&---------------------------------------------------------------------*
  86. *       text
  87. *----------------------------------------------------------------------*
  88. *  -->  p1        text
  89. *  <--  p2        text
  90. *----------------------------------------------------------------------*
  91. form build_outtab.
  92.   data wa LIKE LINE OF gt_summendaten.
  93.   select * from zta_vergleich into CORRESPONDING FIELDS OF TABLE gt_summendaten.
  94.   LOOP AT gt_summendaten INTO wa.
  95.     IF wa-summen-summensatz NE wa-summen-summe_bons.
  96.       wa-icon = icon_red_light.
  97.     ELSE.
  98.       wa-icon = icon_green_light.
  99.     ENDIF.
  100.     MODIFY gt_summendaten FROM wa.
  101. endform.                               " BUILD_OUTTAB
  102.  
  103. *&---------------------------------------------------------------------*
  104. *&      Form  BUILD_SORT_TABLE
  105. *&---------------------------------------------------------------------*
  106. *       text
  107. *----------------------------------------------------------------------*
  108. *  -->  p1        text
  109. *  <--  p2        text
  110. *----------------------------------------------------------------------*
  111. form build_sort_table.
  112.  
  113.   data ls_sort_wa type lvc_s_sort.
  114.  
  115. * create sort-table
  116.   ls_sort_wa-spos = 1.
  117.   ls_sort_wa-fieldname = 'DATUM'.
  118.   ls_sort_wa-up = 'X'.
  119.   ls_sort_wa-subtot = 'X'.
  120.   append ls_sort_wa to gt_sort.
  121.  
  122.   ls_sort_wa-spos = 2.
  123.   ls_sort_wa-fieldname = 'FILIALE'.
  124.   ls_sort_wa-up = 'X'.
  125.   ls_sort_wa-subtot = 'X'.
  126.   append ls_sort_wa to gt_sort.
  127.  
  128.   ls_sort_wa-spos = 3.
  129.   ls_sort_wa-fieldname = 'ZAHLUNGSART'.
  130.   ls_sort_wa-up = 'X'.
  131.   append ls_sort_wa to gt_sort.
  132.  
  133. endform.                               " BUILD_SORT_TABLE
  134. *&---------------------------------------------------------------------*
  135. *&      Module  PBO  OUTPUT
  136. *&---------------------------------------------------------------------*
  137. *       text
  138. *----------------------------------------------------------------------*
  139. module pbo output.
  140.   if tree1 is initial.
  141.     perform init_tree.
  142.   endif.
  143.   set pf-status 'MAIN100'.
  144.  
  145. endmodule.                             " PBO  OUTPUT
  146. *&---------------------------------------------------------------------*
  147. *&      Module  PAI  INPUT
  148. *&---------------------------------------------------------------------*
  149. *       text
  150. *----------------------------------------------------------------------*
  151. module pai input.
  152.  
  153.   case ok_code.
  154.     when 'EXIT' or 'BACK' or 'CANC'.
  155.       perform exit_program.
  156.  
  157.     when others.
  158.       call method cl_gui_cfw=>dispatch.
  159.   clear ok_code.
  160. endmodule.                             " PAI  INPUT
  161. *&---------------------------------------------------------------------*
  162. *&      Form  exit_program
  163. *&---------------------------------------------------------------------*
  164. *       free object and leave program
  165. *----------------------------------------------------------------------*
  166. form exit_program.
  167.  
  168.   call method tree1->free.
  169.   leave program.
  170.  
  171. endform.                               " exit_program
  172. *&---------------------------------------------------------------------*
  173. *&      Form  register_events
  174. *&---------------------------------------------------------------------*
  175. *       text
  176. *----------------------------------------------------------------------*
  177. *  -->  p1        text
  178. *  <--  p2        text
  179. *----------------------------------------------------------------------*
  180. form register_events.
  181. * define the events which will be passed to the backend
  182.   data: lt_events type cntl_simple_events,
  183.         l_event type cntl_simple_event.
  184.  
  185. * define the events which will be passed to the backend
  186.   l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
  187.   append l_event to lt_events.
  188.   l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
  189.   append l_event to lt_events.
  190.   l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
  191.   append l_event to lt_events.
  192.   l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
  193.   append l_event to lt_events.
  194.   l_event-eventid = cl_gui_column_tree=>eventid_header_click.
  195.   append l_event to lt_events.
  196.   l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
  197.   append l_event to lt_events.
  198.  
  199.   call method tree1->set_registered_events
  200.     exporting
  201.       events = lt_events
  202.     exceptions
  203.       cntl_error                = 1
  204.       cntl_system_error         = 2
  205.       illegal_event_combination = 3.
  206.  
  207. * set Handler
  208.   data: l_event_receiver type ref to lcl_tree_event_receiver.
  209.   create object l_event_receiver.
  210.   set handler l_event_receiver->on_add_hierarchy_node
  211.                                                         for tree1.
  212. endform.                               " register_events
  213.  
  214. *&---------------------------------------------------------------------*
  215. *&      Form  init_tree
  216. *&---------------------------------------------------------------------*
  217. *       text
  218. *----------------------------------------------------------------------*
  219. *  -->  p1        text
  220. *  <--  p2        text
  221. *----------------------------------------------------------------------*
  222. FORM init_tree.
  223.   perform build_fieldcatalog.
  224.  
  225.   perform build_outtab.
  226.  
  227.   perform build_sort_table.
  228.  
  229. * create container for alv-tree
  230.   data: l_tree_container_name(30) type c,
  231.         l_custom_container type ref to cl_gui_custom_container.
  232.   l_tree_container_name = 'TREE1'.
  233.  
  234.   create object l_custom_container
  235.       exporting
  236.             container_name = l_tree_container_name
  237.       exceptions
  238.             cntl_error                  = 1
  239.             cntl_system_error           = 2
  240.             create_error                = 3
  241.             lifetime_error              = 4
  242.             lifetime_dynpro_dynpro_link = 5.
  243.  
  244. * create tree control
  245.   create object tree1
  246.     exporting
  247.         i_parent              = l_custom_container
  248.         i_node_selection_mode =
  249.                               cl_gui_column_tree=>node_sel_mode_multiple
  250.         i_item_selection      = 'X'
  251.         i_no_html_header      = 'X'
  252.         i_no_toolbar          = ''
  253.     exceptions
  254.         cntl_error                   = 1
  255.         cntl_system_error            = 2
  256.         create_error                 = 3
  257.         lifetime_error               = 4
  258.         illegal_node_selection_mode  = 5
  259.         failed                       = 6
  260.         illegal_column_name          = 7.
  261.  
  262.   data: ls_variant type disvariant.
  263.   ls_variant-report = sy-repid.
  264.  
  265. * register events
  266.   perform register_events.
  267.  
  268. * create hierarchy
  269.   call method tree1->set_table_for_first_display
  270. *          exporting
  271. *               i_background_id      = 'ALV_BACKGROUND'
  272. *               i_save               = 'A'
  273. *               is_variant            = ls_variant
  274.           changing
  275.                it_sort              = gt_sort
  276.                it_outtab            = gt_summendaten
  277.                it_fieldcatalog      = gt_fieldcatalog.
  278.  
  279. * expand first level
  280. *  call method tree1->expand_Tree
  281. *         exporting
  282. *             i_level = 1.
  283.  
  284. * optimize column-width
  285.   call method tree1->column_optimize.
  286. *           exporting
  287. *               i_start_column = tree1->c_hierarchy_column_name
  288. *               i_end_column   = tree1->c_hierarchy_column_name.
  289.  
  290.  
  291. ENDFORM.                    " init_tree
  292.  
GeSHi ©
Joscha3759
.
.
 
Posts: 1
Joined: Fri Sep 26, 2014 12:47 pm

Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 31 guests