*&---------------------------------------------------------------------* *& Include ZINC_ANALYTIC_VIEW *&---------------------------------------------------------------------* FORM analytic_view. DATA lt_header TYPE TABLE OF zan_ord_agg. DATA lv_net_soldto TYPE crmt_net_value. DATA lv_net TYPE crmt_net_value. DATA t_aggregated TYPE TABLE OF ty_aggregated. DATA ls_aggregated TYPE ty_aggregated. DATA lt_partner TYPE TABLE OF zat_bp. *--- Retrieve the header, item, partner and net price information from SELECT * FROM zan_ord_agg INTO TABLE lt_header WHERE posting_date IN p_date. IF sy-subrc EQ 0. *--- Retrieve the concatenated sold-to party name SELECT * FROM zat_bp INTO TABLE lt_partner FOR ALL ENTRIES IN lt_header WHERE partner_guid = lt_header-bp_guid. ENDIF. SORT lt_partner BY partner_guid. *--- Build the output table LOOP AT lt_header ASSIGNING FIELD-SYMBOL(). CLEAR ls_output. READ TABLE lt_partner INTO DATA(ls_partner) WITH KEY partner_guid = -bp_guid BINARY SEARCH. IF sy-subrc EQ 0. ls_output-name = ls_partner-name. ENDIF. ls_output-short_text = -description. ls_output-net_value = -net_value_man. IF -net_value_man > 0. APPEND ls_output TO t_output_tmp. ENDIF. ENDLOOP. *--- Do the aggregation of net sales by Product and by Sold-To party SORT t_output_tmp BY name short_text. LOOP AT t_output_tmp INTO ls_output_tmp. MOVE ls_output_tmp TO ls_output. lv_net = ls_output-net_value + lv_net. *--- Aggregate net sales by product AT END OF short_text. ls_output-net_value = lv_net. APPEND ls_output TO t_output. lv_net_soldto = lv_net_soldto + lv_net. CLEAR : lv_net. ENDAT. *--- Aggregate net sales by Sold-To party AT END OF name. ls_aggregated-net_value_man = lv_net_soldto. ls_aggregated-name = ls_output-name. APPEND ls_aggregated TO t_aggregated. CLEAR : lv_net_soldto. ENDAT. ENDLOOP. *--- Sort and read the Sold-To with highest sales SORT t_aggregated BY net_value_man DESCENDING. READ TABLE t_aggregated INTO gs_aggregated INDEX 1. ASSIGN t_output TO . ENDFORM.