ALV total and subtotaling problem

Hi,
I am unable to proceed in total and subtotal using ALV List Display.
Fico Scenario
For each change of Asset Location within same Asset Class:        
Column Logic
Location Total   Location wise do the Sum of the columns u201CAcquired Valueu201D, u201CSalv/168 Allow Sec 179u201D, Depreciable Basisu201D, u201CPrior Accum Depreciationu201D, u201CDepreciation This Runu201D, Current YTD Depreciationu201D, Current Accum Depreciationu201D and u201CNet Book Valueu201D
Code Done :
FORM summation .
  DEFINE m_fieldcat.
    add 1 to gs_fieldcat-col_pos.
    gs_fieldcat-fieldname   = &1.
    gs_fieldcat-ref_tabname = 'gt_fieldcat1'.
    gs_fieldcat-do_sum      = &2.
    gs_fieldcat-cfieldname  = &3.
    append gs_fieldcat to gt_fieldcat1.
  END-OF-DEFINITION.
  DEFINE m_sort.
    add 1 to wa_sort-spos.
    wa_sort-fieldname = &1.
    wa_sort-up        = 'X'.
    wa_sort-subtot    = &2.
    append wa_sort to i_sort.
  END-OF-DEFINITION.
  m_fieldcat 'ANBTR' 'X'  ''.
  m_fieldcat 'SALV' 'X'  ''.
  m_fieldcat 'DEP_BASIC' 'X'  ''.
  m_fieldcat 'DEP_LAST' 'X' ''.
  m_fieldcat 'DEP_CURRUN' 'X'  ''.
  m_fieldcat 'DEP_CURYTD' 'X'  ''.
  m_fieldcat 'DEP_ACC' 'X' ''.
  m_fieldcat 'NET_BOOK' 'X'  ''.
  m_sort 'ANLKL' 'X'.
m_sort 'SALV' 'X'.
m_sort 'DEP_BASIC' 'X'.
m_sort 'DEP_LAST' 'X'.
m_sort 'DEP_CURRUN' 'X'.
m_sort 'DEP_CURYTD' 'X'.
m_sort 'DEP_ACC' 'X'.
m_sort 'NET_BOOK' 'X'.
gs_layout-cell_merge = 'X'.
ENDFORM.                    " SUMMATION
FORM alv_display .
  PERFORM build_catlog.
  PERFORM eventtab_field USING gs_event.
  PERFORM comment_build USING gt_list_top_of_page[].
perform html_top_of_page using top. "TYPE REF TO cl_dd_document.
  gv_repid          = sy-repid.
  gs_variant-report = gv_repid.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-info_fieldname =   'LINE_COLOR'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          = gv_repid
     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      is_layout                   = gs_layout
      is_variant                  = gs_variant
      it_events                   = gs_event[]
      it_fieldcat                 = gt_fieldcat1[]
      i_save                      = 'A'
    TABLES
      t_outtab                    = gt_output[]
    EXCEPTIONS
      program_error               = 1
      OTHERS                      = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " ALV_DISPLAY
Any Help or Suggestions needed.
Better if guided with the code as m new to ALV Reports.

Hi,
I am unable to proceed in total and subtotal using ALV List Display.
Fico Scenario
For each change of Asset Location within same Asset Class:        
Column Logic
Location Total   Location wise do the Sum of the columns u201CAcquired Valueu201D, u201CSalv/168 Allow Sec 179u201D, Depreciable Basisu201D, u201CPrior Accum Depreciationu201D, u201CDepreciation This Runu201D, Current YTD Depreciationu201D, Current Accum Depreciationu201D and u201CNet Book Valueu201D
Code Done :
FORM summation .
  DEFINE m_fieldcat.
    add 1 to gs_fieldcat-col_pos.
    gs_fieldcat-fieldname   = &1.
    gs_fieldcat-ref_tabname = 'gt_fieldcat1'.
    gs_fieldcat-do_sum      = &2.
    gs_fieldcat-cfieldname  = &3.
    append gs_fieldcat to gt_fieldcat1.
  END-OF-DEFINITION.
  DEFINE m_sort.
    add 1 to wa_sort-spos.
    wa_sort-fieldname = &1.
    wa_sort-up        = 'X'.
    wa_sort-subtot    = &2.
    append wa_sort to i_sort.
  END-OF-DEFINITION.
  m_fieldcat 'ANBTR' 'X'  ''.
  m_fieldcat 'SALV' 'X'  ''.
  m_fieldcat 'DEP_BASIC' 'X'  ''.
  m_fieldcat 'DEP_LAST' 'X' ''.
  m_fieldcat 'DEP_CURRUN' 'X'  ''.
  m_fieldcat 'DEP_CURYTD' 'X'  ''.
  m_fieldcat 'DEP_ACC' 'X' ''.
  m_fieldcat 'NET_BOOK' 'X'  ''.
  m_sort 'ANLKL' 'X'.
m_sort 'SALV' 'X'.
m_sort 'DEP_BASIC' 'X'.
m_sort 'DEP_LAST' 'X'.
m_sort 'DEP_CURRUN' 'X'.
m_sort 'DEP_CURYTD' 'X'.
m_sort 'DEP_ACC' 'X'.
m_sort 'NET_BOOK' 'X'.
gs_layout-cell_merge = 'X'.
ENDFORM.                    " SUMMATION
FORM alv_display .
  PERFORM build_catlog.
  PERFORM eventtab_field USING gs_event.
  PERFORM comment_build USING gt_list_top_of_page[].
perform html_top_of_page using top. "TYPE REF TO cl_dd_document.
  gv_repid          = sy-repid.
  gs_variant-report = gv_repid.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-info_fieldname =   'LINE_COLOR'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          = gv_repid
     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      is_layout                   = gs_layout
      is_variant                  = gs_variant
      it_events                   = gs_event[]
      it_fieldcat                 = gt_fieldcat1[]
      i_save                      = 'A'
    TABLES
      t_outtab                    = gt_output[]
    EXCEPTIONS
      program_error               = 1
      OTHERS                      = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " ALV_DISPLAY
Any Help or Suggestions needed.
Better if guided with the code as m new to ALV Reports.

Similar Messages

  • ALV Total and Subtotal in ALV

    Hi,
          I want to display the Total and Subtotal in Alv in Webdynpro Abap, and i am getting this  Error( Access via 'NULL' object reference not possible) and also i have checked the Cardinality also. Please get me a Good Solution.

    I think your node( the node which is binded to data node of alv interface controller ) having collection cardinality of 1:1, if yes, then change it to 0:N,
    i hope this will solve the issue.
    If you still get the error, go to st22, open your error, go down that page (keep pressing pagedown button ), then you will find your code and there find this arrow >>>>> then let me know that code line.
    Regards
    Srinivas

  • ALV Grid Control -  Modifiy data in total and subtotal lines

    Hello all,
    I´am creating a report using ALV Grid Control. This report calculates (using delivered and returned materials) for each vendor/material-combination the return quote.
    Using the totals and subtotals function for different characteristics I want to calculate the return quote for the selected characteristic. Example:
    Material delivered returned quote
    ..4711 . . . 500 . . . 5 . . . . 1 (=returned*100/delivered)
    ..4711 . . . 400 . . . 10 . . . . 2,5
    . SUM . . . 900 . . . 15 . . . . 3,5 <-- 3,5 is the sum but I want display the calculated value 1,667
    Is there a possibility to modify data in the total and subtotal lines.
    Thank you for your answer
    Best regards
    Thomas

    you said instead of 3.5 you want to show 1,667 ..
    how is it possible...
    3,5 become 1,667
    i thought you are doing any conversions...
    vijay

  • Change the total and subtotal dynamically in ALV GRID

    Hi guys,
               I need to change the total and subtotal of field "AMOUNT" dynamically.I am using ALV GRID CONTROL(oops concept).I need to override the standard functionality.I need to show my own subtotal and total line instead of standard one .

    Hi
    I've understood it, I wanted to use OO Grid too, but I had to use the ALV list in order to write my total.
    If you need to use OO grid u can try to exclude all funcitonalities for the total, subtotal and sorting and insert in the output table the lines with your totals.
    Max

  • Total and subtotal in alv

    hi,
    i have an ALV REPORT,displaying the fields such as po item(ekpo-menge).the data type is qunt.
    but i am unable to perform total and sub total,it gives me a information message 'total cannot b performed'.
      even i tried with  X_FIELDCAT-DO_SUM = 'X',
    can any one help me, how to total and subtotal.

    HI
    GOOD
    CHECK WITH THIS EXAMPLES
    data: begin of output_tab occurs 0,
           total_field_hidden(1) type c,
           sortfield1(3) type c,
           sortfield1_hidden(3) type c,
           numerator type p,
           denominator type p,
           perc type p decimals 2,
           percentage type p decimals 2, "(7) type c,
         end of output_tab.
    data: abaplist type standard table of abaplist.
    type-pools: slis.
    data: g_repid like sy-repid.
    data: gt_events type slis_t_event.
    parameters: p_grid radiobutton group g1,
               p_list radiobutton group g1.
    initialization.
    *This is necessary so that the ALV_GRID knows where to
    find the form
    g_repid = sy-repid.
    start-of-selection.
    perform fill_output_tab.
    perform output_alv.
    *&      Form  FILL_OUTPUT_TAB
    form fill_output_tab.
    output_tab-total_field_hidden = '1'.
    output_tab-sortfield1 = output_tab-sortfield1_hidden
    = 'AAA'.
    output_tab-numerator  = 1.
    output_tab-denominator = 2.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 3.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 5.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 5.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-sortfield1 = output_tab-sortfield1_hidden
    = 'BBB'.
    output_tab-numerator  = 1.
    output_tab-denominator = 2.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 2.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 3.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    output_tab-numerator  = 1.
    output_tab-denominator = 5.
    output_tab-perc = output_tab-numerator /
    output_tab-denominator
    100.
    output_tab-percentage = output_tab-perc .
    write output_tab-perc to output_tab-percentage.
    append output_tab.
    endform.                    " FILL_OUTPUT_TAB
    *&      Form  output_alv
    output the list in an ALV Grid
    form output_alv.
    data: ls_layo    type slis_layout_alv,
           lt_fcat    type slis_t_fieldcat_alv,
           lt_sort    type slis_t_sortinfo_alv.
    perform f01_set_sort changing lt_sort.
    perform f01_set_layo changing ls_layo.
    perform f01_set_fcat changing lt_fcat.
    perform eventtab_build using gt_events[].
    g_repid = sy-repid.
    clear output_tab.
    case 'X'.
       when p_list.
         call function 'REUSE_ALV_LIST_DISPLAY'
              exporting
                   I_INTERFACE_CHECK = 'X'
                   i_callback_program = g_repid
                   is_layout          = ls_layo
                   it_fieldcat        = lt_fcat
                   it_events          = gt_events[]
                   it_sort            = lt_sort
              tables
                   t_outtab           = output_tab
              exceptions
                   program_error      = 1
                   others             = 2.
       when p_grid.
         call function 'REUSE_ALV_GRID_DISPLAY'
              exporting
                   i_callback_program = g_repid
                   is_layout          = ls_layo
                   it_fieldcat        = lt_fcat
                   it_events          = gt_events[]
                   it_sort            = lt_sort
              tables
                   t_outtab           = output_tab
              exceptions
                   program_error      = 1
                   others             = 2.
    endcase.
    endform.                    " output_alv
    Sets the Events the ALV Grid needs to react to for
    the Overall Output.
         -->RT_EVENTS[]  A table of events and the forms
    that must be
                         performed for each one.
    form eventtab_build using rt_events type slis_t_event.
    *"Registration of events to happen during list display
    data: ls_event type slis_alv_event.
    refresh rt_events.
    call function 'REUSE_ALV_EVENTS_GET'
          exporting
               i_list_type = 0
          importing
               et_events   = rt_events.
    Subtotal
    read table rt_events with key name =
    slis_ev_subtotal_text
                              into ls_event.
    if sy-subrc = 0.
       move 'SUBTOTAL_TEXT' to ls_event-form.
       append ls_event to rt_events.
    endif.
    endform.                    " EVENTTAB_BUILD2
    *&      Form  f01_set_sort
    form f01_set_sort changing p_lt_sort type
    slis_t_sortinfo_alv.
    data: ls_sort type slis_sortinfo_alv.
    clear ls_sort.
    ls_sort-spos = 1.
    ls_sort-fieldname = 'TOTAL_FIELD_HIDDEN'.
    ls_sort-subtot = 'X'.
    append ls_sort to p_lt_sort.
    clear ls_sort.
    ls_sort-spos = 2.
    ls_sort-fieldname = 'SORTFIELD1_HIDDEN'.
    ls_sort-subtot = 'X'.
    append ls_sort to p_lt_sort.
    endform.                    " f01_set_sort
    *&      Form  f01_set_layo
    Sets layout options
    form f01_set_layo changing p_ls_layo type
    slis_layout_alv.
    p_ls_layo-no_totalline = 'X'.
    endform.                    " f01_set_layo
    *&      Form  f01_set_fcat
          Sets the columns and texts for the ALV Grid
         <--P_LT_FCAT  text
    form f01_set_fcat changing ct_fcat type
    slis_t_fieldcat_alv.
    data: ls_fcat type slis_fieldcat_alv.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'TOTAL_FIELD_HIDDEN'.
    ls_fcat-no_out = 'X'.
    ls_fcat-col_pos       = 1.
    append ls_fcat to ct_fcat.
    clear ls_fcat.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'SORTFIELD1_HIDDEN'.
    ls_fcat-no_out = 'X'.
    ls_fcat-col_pos       = 2.
    append ls_fcat to ct_fcat.
    clear ls_fcat.
    ls_fcat-seltext_m = 'SORT'.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'SORTFIELD1'.
    ls_fcat-col_pos       = 3.
    append ls_fcat to ct_fcat.
    clear ls_fcat.
    ls_fcat-seltext_m = 'SALES'.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'NUMERATOR'.
    ls_fcat-col_pos       = 4.
    ls_fcat-datatype = 'CURR'.
    ls_fcat-do_sum = 'X'.
    append ls_fcat to ct_fcat.
    clear ls_fcat.
    ls_fcat-seltext_m = 'COST'.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'DENOMINATOR'.
    ls_fcat-datatype = 'CURR'.
    ls_fcat-col_pos       = 5.
    ls_fcat-do_sum = 'X'.
    append ls_fcat to ct_fcat.
    clear ls_fcat.
    ls_fcat-seltext_m = 'MARGIN'.
    ls_fcat-tabname = 'OUTPUT_TAB'.
    ls_fcat-fieldname    = 'PERCENTAGE'.
    ls_fcat-datatype = 'CHAR'.
    ls_fcat-do_sum = 'X'.
    ls_fcat-col_pos       = 6.
    append ls_fcat to ct_fcat.
    endform.
    *&      Form  subtotal_text
    Manipulate the subtotal line in the ALV to
    recalculate eficiency at
    total level.
    form subtotal_text using ep_subtot_line like
    output_tab
                            es_subtottxt type
    slis_subtot_text.
    if es_subtottxt-criteria = 'TOTAL_FIELD_HIDDEN'.
       es_subtottxt-display_text_for_subtotal = 'Final
    Total'.
    endif.
    ep_subtot_line-percentage = ep_subtot_line-numerator
                / ep_subtot_line-denominator
    100.
    ep_subtot_line-perc = ep_subtot_line-percentage.
    endform.
           total_field_hidden(1) type c,
    >        sortfield1(3) type c,
    >        sortfield1_hidden(3) type c,
    >        numerator type p,
    >        denominator type p,
    >        perc type p decimals 2,
    >        percentage type p decimals 2, "(7) type c, end of output_tab.
    >
    >data: abaplist type standard table of abaplist.
    >
    >type-pools: slis.
    >data: g_repid like sy-repid.
    >data: gt_events type slis_t_event.
    >*----
    >parameters: p_grid radiobutton group g1,
    >            p_list radiobutton group g1.
    >
    >initialization.
    >*This is necessary so that the ALV_GRID knows where to
    >find the form
    >  g_repid = sy-repid.
    >
    >start-of-selection.
    >  perform fill_output_tab.
    >
    >  perform output_alv. &---- *&      Form  FILL_OUTPUT_TAB &---- form fill_output_tab.
    >  output_tab-total_field_hidden = '1'.
    >  output_tab-sortfield1 = output_tab-sortfield1_hidden = 'AAA'.
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 2.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 3.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 5.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 5.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-sortfield1 = output_tab-sortfield1_hidden = 'BBB'.
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 2.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 2.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 3.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >  output_tab-numerator  = 1.
    >  output_tab-denominator = 5.
    >  output_tab-perc = output_tab-numerator / output_tab-denominator
    >                        * 100. output_tab-percentage = output_tab-perc . *  write output_tab-perc to output_tab-percentage. append output_tab.
    >
    >endform.                    " FILL_OUTPUT_TAB
    >&----
    >*&      Form  output_alv
    >&----
    >* output the list in an ALV Grid
    >----
    >form output_alv.
    >  data: ls_layo    type slis_layout_alv,
    >        lt_fcat    type slis_t_fieldcat_alv,
    >        lt_sort    type slis_t_sortinfo_alv.
    >
    >  perform f01_set_sort changing lt_sort.
    >  perform f01_set_layo changing ls_layo.
    >  perform f01_set_fcat changing lt_fcat.
    >  perform eventtab_build using gt_events[].
    >  g_repid = sy-repid.
    >  clear output_tab.
    >  case 'X'.
    >    when p_list.
    >      call function 'REUSE_ALV_LIST_DISPLAY'
    >           exporting *                I_INTERFACE_CHECK = 'X'
    >                i_callback_program = g_repid
    >                is_layout          = ls_layo
    >                it_fieldcat        = lt_fcat
    >                it_events          = gt_events[]
    >                it_sort            = lt_sort tables
    >                t_outtab           = output_tab exceptions
    >                program_error      = 1
    >                others             = 2. when p_grid. call function 'REUSE_ALV_GRID_DISPLAY' exporting
    >                i_callback_program = g_repid
    >                is_layout          = ls_layo
    >                it_fieldcat        = lt_fcat
    >                it_events          = gt_events[]
    >                it_sort            = lt_sort tables
    >                t_outtab           = output_tab exceptions
    >                program_error      = 1
    >                others             = 2. endcase.
    >
    >endform.                    " output_alv
    >
    >&----
    >* Sets the Events the ALV Grid needs to react to for
    >the Overall Output.
    >----
    >*      -->RT_EVENTS[]  A table of events and the forms
    >that must be
    >*                      performed for each one.
    >----
    >form eventtab_build using rt_events type slis_t_event.
    >*"Registration of events to happen during list display
    >  data: ls_event type slis_alv_event.
    >*
    >  refresh rt_events.
    >  call function 'REUSE_ALV_EVENTS_GET'
    >       exporting
    >            i_list_type = 0 importing
    >            et_events   = rt_events.
    >
    >* Subtotal
    >  read table rt_events with key name = slis_ev_subtotal_text
    >                           into ls_event. if sy-subrc = 0. move 'SUBTOTAL_TEXT' to ls_event-form. append ls_event to rt_events. endif.
    >
    >endform.                    " EVENTTAB_BUILD2
    >&----
    >*&      Form  f01_set_sort
    >&----
    >form f01_set_sort changing p_lt_sort type
    >slis_t_sortinfo_alv.
    >
    >  data: ls_sort type slis_sortinfo_alv.
    >
    >  clear ls_sort.
    >  ls_sort-spos = 1.
    >  ls_sort-fieldname = 'TOTAL_FIELD_HIDDEN'.
    >  ls_sort-subtot = 'X'.
    >  append ls_sort to p_lt_sort.
    >
    >  clear ls_sort.
    >  ls_sort-spos = 2.
    >  ls_sort-fieldname = 'SORTFIELD1_HIDDEN'.
    >  ls_sort-subtot = 'X'.
    >  append ls_sort to p_lt_sort.
    >
    >endform.                    " f01_set_sort
    >&----
    >*&      Form  f01_set_layo
    >&----
    >* Sets layout options
    >----
    >form f01_set_layo changing p_ls_layo type
    >slis_layout_alv.
    >
    >  p_ls_layo-no_totalline = 'X'.
    >
    >endform.                    " f01_set_layo
    >&----
    >*&      Form  f01_set_fcat
    >&----
    >*       Sets the columns and texts for the ALV Grid
    >----
    >*      <--P_LT_FCAT  text
    >----
    >form f01_set_fcat changing ct_fcat type
    >slis_t_fieldcat_alv.
    >
    >  data: ls_fcat type slis_fieldcat_alv.
    >
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'TOTAL_FIELD_HIDDEN'.
    >  ls_fcat-no_out = 'X'.
    >  ls_fcat-col_pos       = 1.
    >  append ls_fcat to ct_fcat.
    >
    >  clear ls_fcat.
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'SORTFIELD1_HIDDEN'.
    >  ls_fcat-no_out = 'X'.
    >  ls_fcat-col_pos       = 2.
    >  append ls_fcat to ct_fcat.
    >
    >  clear ls_fcat.
    >  ls_fcat-seltext_m = 'SORT'.
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'SORTFIELD1'.
    >  ls_fcat-col_pos       = 3.
    >  append ls_fcat to ct_fcat.
    >
    >  clear ls_fcat.
    >  ls_fcat-seltext_m = 'SALES'.
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'NUMERATOR'.
    >  ls_fcat-col_pos       = 4.
    >  ls_fcat-datatype = 'CURR'.
    >  ls_fcat-do_sum = 'X'.
    >  append ls_fcat to ct_fcat.
    >
    >  clear ls_fcat.
    >  ls_fcat-seltext_m = 'COST'.
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'DENOMINATOR'.
    >  ls_fcat-datatype = 'CURR'.
    >  ls_fcat-col_pos       = 5.
    >  ls_fcat-do_sum = 'X'.
    >  append ls_fcat to ct_fcat.
    >
    >  clear ls_fcat.
    >  ls_fcat-seltext_m = 'MARGIN'.
    >  ls_fcat-tabname = 'OUTPUT_TAB'.
    >  ls_fcat-fieldname    = 'PERCENTAGE'. *  ls_fcat-datatype = 'CHAR'.
    >  ls_fcat-do_sum = 'X'.
    >  ls_fcat-col_pos       = 6.
    >  append ls_fcat to ct_fcat.
    >
    >endform.
    >&----
    >*&      Form  subtotal_text
    >&----
    >* Manipulate the subtotal line in the ALV to
    >recalculate eficiency at
    >* total level.
    >----
    >form subtotal_text using ep_subtot_line like
    >output_tab
    >                         es_subtottxt type slis_subtot_text.
    >
    >  if es_subtottxt-criteria = 'TOTAL_FIELD_HIDDEN'.
    >    es_subtottxt-display_text_for_subtotal = 'Final Total'. endif.
    >
    >  ep_subtot_line-percentage = ep_subtot_line-numerator
    >             / ep_subtot_line-denominator
    >             * 100.
    >
    >  ep_subtot_line-perc = ep_subtot_line-percentage. endform.
    >
    THANKS
    MRUTYUN

  • Field over flow can not display the total and subtotal in ALV

    hi
    i am running a z report with huge data in quality system.
    in 2 columns and not able to show the total and subtotal in 2 columns
    it says field overflow and cannot be dispayed.
    value is around 20character integer.

    You can create a domains with 20 positions and 2 decimal, for example.
    Than, associate this domain a data element.
    To finish assign that data element to the column you wanna sum.
    I hope help.

  • ALV Totals and Subtotals line in the output

    Hi!
       I want to display an ALV report in which there should be totals and subtotals buttons are to be displayed without displaying the totals and subtotals line when the list is displayed. It should be displayed only when the user clicks the button. If i take do_sum in the fieldcat table it'll display the subtotal button and also the totlas line and that shouldn't happen. If i take no_totalline in the layout it'll not display the totals line even the user selects the totals button. So is there any possibility like this. Please help me.
    Thanks & Regards,
    Swathi

    Hi Swathi,
              Have a look at these good links-
    <b>Add subtotals</b>
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    You can also search for the same in the below links-
    www.sap-img.com
    www.sapfans.com
    www.sapgenie.com
    Reward points if you find the links useful.
    Regards,
    Tanuja.

  • Total and Subtotal for set_table_for_first_display

    Hello,
    I am displaying data in ALV by using set_table_for_first_display , i want to do_sum  for
    10-15 columns starting from the column index 11.. and i have also passed the value in internal table of type LVC_T_SORT and in the fieldcatlog this fields are checked for DO_SUM but sum is not coming in the final output even summation button is disabled and subtotal is also getting reflected.
    Is it i need to do extra to do this when i am displaying data by using the OOPS methos?
    Please sugggest what could be the reason..
    Thanks
    Prince

    Hi,
    Try the below code.
    TABLES: mara.
    SELECT-OPTIONS: s_matnr FOR mara-matnr.
    types: begin of ty_marc,
             matnr type marc-matnr,
             werks type marc-werks,
             count type i,
           end of ty_marc.
    data: it_marc type standard table of ty_marc with header line.
    START-OF-SELECTION.
      SELECT matnr werks FROM marc INTO TABLE it_marc WHERE matnr IN s_matnr and werks in ('0888', '0811').
      loop at it_marc.
        it_marc-count = 1.
        modify it_marc transporting count.
      endloop.
    "* Definition for Object Oriented ALV
      DATA: gr_table      TYPE REF TO cl_salv_table.
      DATA: gr_sorts      TYPE REF TO cl_salv_sorts.
      DATA: gr_agg        TYPE REF TO cl_salv_aggregations.
      DATA: gr_agg2       TYPE REF TO cl_salv_aggregation.
      DATA: gr_display    TYPE REF TO cl_salv_display_settings.
      DATA: gr_layout     TYPE REF TO cl_salv_layout.
      DATA: ls_key        TYPE salv_s_layout_key.
    "* Display ALV as a Grid
      TRY.
          cl_salv_table=>factory( IMPORTING r_salv_table = gr_table
                                  CHANGING  t_table      = it_marc[] ).
        CATCH cx_salv_msg.
      ENDTRY.
        TRY.
            gr_agg = gr_table->get_aggregations( ).
            CALL METHOD gr_agg->add_aggregation
              EXPORTING
                columnname  = 'COUNT'
                aggregation = if_salv_c_aggregation=>total
              RECEIVING
                value       = gr_agg2.
          CATCH cx_salv_data_error .
          CATCH cx_salv_not_found .
          CATCH cx_salv_existing .
        ENDTRY.
    "* Set up Sorts
        TRY.
            gr_sorts = gr_table->get_sorts( ).
            CALL METHOD gr_sorts->add_sort
              EXPORTING
                columnname = 'MATNR'
                position   = 1
                sequence   = if_salv_c_sort=>sort_up
                subtotal   = if_salv_c_bool_sap=>true
                group      = if_salv_c_sort=>group_none
                obligatory = if_salv_c_bool_sap=>false.
          CATCH cx_salv_data_error .
          CATCH cx_salv_not_found .
          CATCH cx_salv_existing .
        ENDTRY.
    "* Add layout variants in report
        TRY.
          gr_layout = gr_table->get_layout( ).
    "*... set the Layout Key
          ls_key-report = sy-repid.
          gr_layout->set_key( ls_key ).
    "*... set usage of default Layouts
          gr_layout->set_default( abap_true ).
    "*... set Layout save restriction
          gr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
        ENDTRY.
        TRY.
    "* Display ALV
          gr_table->display( ).
        ENDTRY.
    Hope it helps.
    Thanks,
    Balaji

  • Implementing Total and Subtotal in ADF tables

    Hi i use Jdeveloper 11.1.2.3.0...
    Please i just came across the ADF table subtotal and total function in oracle Docs but it didnt specify steps on how to accomplish that..... Im not a pro, so please if anyone has a link or link to a tutorial or can tell me the necessary steps to take so as to accomplish the subtotal and total in my ADF table, i will be very grateful.
    I await your reply.
    Thank you
    OBYYS

    Ok.. let me explain fully so you capture what in doing here....
    What i have is an SQL Query view (with a rollup) which has an input text, i highlight the input and in the properties Inspector --> Style --> contentStyle... i add the code "#{row.Course==null and row.Semester==null and row.Levell==null ? 'font-weight:bold;':''    But it shows thesame error, i also tried "inlineStyle" and it throws thesame error....
    (If you have skype you can add me [email protected] or mail me yours, i will be grateful)
    I appreciate your time, thank you...

  • ADDING TOTAL AND SUBTOTAL FROM TWO DATASETS

    Hi there!
    I working in this report with two dataset, I need to add a subtotal and total, the balance is coming from Dataset2, and I bring this Balance with a Lookup .... everything is working fine, but I can't bring the subtotals 
    Thank you

    Hi Ysabel1111,
    Based on my understanding, you are retrieving data from another dataset with Lookup() function within a tablix. Then you want to perform a subtotal and total, right?
    In your scenario, since you are using Lookup() function to retrieve the second dataset’s data, you should embed the Lookup() function within Sum() function to perform subtotal or total. Please refer to our test steps and results:
    1. We use Lookup() function to retrieve Balance field from DataSet2.
    2. Specify the subtotal and total expression like below, then preview the report.
    Besides, you can only create one dataset, then specify the query to join the two tables. So that you can specify data for a tablix without Lookup() function.
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • ALV Tree and set_table_for_first_display problem

    I am trying to create an alv tree.  I have some sample code that uses the sflight table and this works fine however when i replace sflight with my internal structure and table it crashes at set_table_for_first_display with a "Field symbol has not been assigned" error.
    This is part of the original code that works.  *This isn't all the code just the relevant parts.
    DATA: gt_sflight      TYPE sflight OCCURS 0,   " Output-Table
               gt_fieldcatalog TYPE lvc_t_fcat,            " Field Catalog
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'sflight'
        CHANGING
          ct_fieldcat      = gt_fieldcatalog.
    *  change fieldcatalog
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
        CASE ls_fieldcatalog-fieldname.
          WHEN 'CARRID' OR 'CONNID' OR 'FLDATE'.
            ls_fieldcatalog-no_out = 'X'.
            ls_fieldcatalog-key    = ''.
          WHEN 'PRICE' OR 'SEATSOCC' OR 'SEATSMAX' OR 'PAYMENTSUM'.
            ls_fieldcatalog-do_sum = 'X'.
        ENDCASE.
        MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
      ENDLOOP.
    SELECT * FROM sflight INTO TABLE gt_sflight.
    create hierarchy
      CALL METHOD tree1->set_table_for_first_display
        EXPORTING
          it_list_commentary = lt_list_commentary
          i_logo             = l_logo
          i_background_id    = 'ALV_BACKGROUND'
          i_save             = 'A'
          is_variant         = ls_variant
        CHANGING
          it_sort            = gt_sort
          it_outtab          = gt_sflight
          it_fieldcatalog    = gt_fieldcatalog.
    Here is the code when I replace gt_sflight with my internal table.
    DATA: gt_detailed      TYPE ZDT_REPORT1_DETAIL_STRUC occurs 0 ,   " Output-Table
               gt_fieldcatalog TYPE lvc_t_fcat,         " Field Catalog
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'ZDT_REPORT1_DETAIL_STRUC'
        CHANGING
          ct_fieldcat      = gt_fieldcatalog
        EXCEPTIONS
          inconsistent_interface = 1
          program_error = 2
          OTHERS = 3.
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
    "* change fieldcatalog
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
        CASE ls_fieldcatalog-fieldname.
          WHEN 'COMP_DESC' OR 'SUBC_DESC'.
            ls_fieldcatalog-no_out = 'X'.
            ls_fieldcatalog-key    = ''.
          WHEN 'DOWNTIME'.
            ls_fieldcatalog-do_sum = 'X'.
        ENDCASE.
        MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
      ENDLOOP.
    " Select statement to fill gt_detailed
    * create hierarchy
      CALL METHOD tree1->set_table_for_first_display
        EXPORTING
          it_list_commentary = lt_list_commentary
          i_logo             = l_logo
          i_background_id    = 'ALV_BACKGROUND'
          i_save             = 'A'
          is_variant         = ls_variant
        CHANGING
          it_sort            = gt_sort
          it_outtab          = gt_detailed
          it_fieldcatalog    = gt_fieldcatalog.
    When it runs like this it crashes at set_table_for_first_display

    The code I am using as an example is BCALV_TREE_SIMPLE_DEMO.  If I have no data in my table it doesn't error when I call set_table_for_first_display.
    But it looks like I might have to use that one instead because from what I understand you can use  cl_gui_alv_tree_simple when the input table has all the required columns such as sflight but you use cl_gui_alv_tree when you need an internal table.

  • ALV Total and Percentage

    Hi,
    In my ALV report,I have 4 fields
    matnr
    maktx
    menge1
    menge2
    In the end of report (column of menge1), i want only total
             end of menge2 i want the value in percentage as  = (Total of menge2 / total of menge1) * 100
    I am using Fm : Reuse_alv_grid_display.
    Can anybody suggest me how to do.
    Thanks
    Kumar

    Use the following code in a PBO module (after set for first display) or in an adequate event handler.
    data: total type ref to data,
          subtotal1 type ref to data.
    field-symbols: <total> like gt_sflight,
                   <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
      importing
        ep_collect00 = total
        ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    Then update the <total> internal tables.
    Look at [ALV Grid Control (BC-SRV-ALE)|http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf]
    NB: If you add a last row to the report, don't forget to disable sort options in the ALV menu.
    Regards

  • How to display both total and subtotal with condition on

    Hi Experts,
    We had a special requirements from our "Powerful" user for a top sales ranking report:
    say user runs for top 10 customers, query/view (It has to be built as query/views because they are going be exported to Portal) need to show
    1. sub total 10 customers
    2. total for all customers
    3. for each customer to show their sales percentage out of the overall total sales
    any recommendation welcomes
    Regards,
    Feng

    Create a condition on the Sales Key Figure as Top N and value as 10.
    So when you run the report for the Customer in Rows and Sales Key Figure in Coulmns you will get the report output for 10 customers and their respective Sales Figure. But if you see the overall result, it will be for all customers and not for only 10 customers. To get the total of only 10 customers, right click on Sales Key Figure and select Calculate result as Summation.
    Now below Sales Key Figure, create a Formula Key Figure (FKF) that will give the Total Sales for All customers. Use the formula as below
    FKF = SUMGT (SALES)
    Now create another Formula Key Figure (FKF1) that will give the % Sales with respect to total Sales. use teh Formula as below
    FKF1 = Sales %A FKF

  • Sub-total and Total for a column having checkboxes in WD ABAP ALV

    Hello Experts,
    I have used ALV in We bdynpro ABAP to display my output. There are 2 columns that are checkboxes in Output. I want a sub-total and total for those two columns. I know tht total and sub-total functionality is available only for numeric fields .
    Is there any other indirect way by which i can achieve the same ?

    Hi Ragini,
    Please refer this thread: [alv total and subtotal|How to display graphs;.
    I hope it helps.
    Regards
    Arjun

  • ALV Totals , Subtotals for a particular field in ALV Grid report

    Hi,
    I have an issue in ALV totals and subtotals.
    Scenario is like this.
    i have a vendor data to be pulled out of SAP and to be shown in the form of report.
    i am populating all the data and doing do_sum based on Vendor ( has expansin & collapse option ) and display the number of reports .
    Vendor -
    100
    Vendor1 -
    1
    Vendor2----
    2.
    Vendor100----
    100.
    but my problem is in the same report i have a date field .
    if i have a five vendors created on 03/03/2008. in the same report for the date field having ( expansion & collapse ) , when i expand based on that date can i be able to sum up all the vendors created on 03/03/2008 and display in the same report along with the vendor count.
    Let me know . Thank you in advance
    Regards,
    Ry

    Hi Roby,
    Have a look at this sample code
    It will help u,
    REPORT ZIN_FI_AGEING
           message-id zbdc
           no standard page heading.
    Title                   : For Ageing Details
    Author                  :
    Date                    : 22/11/2004
    Transport/Correction Id :
    Clarify case ID         :
    Application             : FI
    Program Type            :
    Frequency               :
    Purpose                 :
    Comments                :
    Request No              :
      TABLES DELCARATIONS
    Tables: zzgeinz9a,    "Actual line item table
            t001.         "Plants/Branches
      ALV TTPE DELCARATIONS
    type-pools: slis.
    *Type Declarations for Field Catalog
    data : i_fldcat_head type slis_t_fieldcat_alv,
           wa_fldcat_head type slis_fieldcat_alv.
    *Type Declarations for ALV Events
    data : i_events type slis_t_event,
           wa_event like line of i_events.
    *Type Declarations for Layout Design
    data : wa_layout type slis_layout_alv.
    *Type Declarations for Sorting Fields
    data:  it_sort type slis_sortinfo_alv occurs 0 with header line.
    *Type Declarations for Displaying Images on Grid
    data : i_comment type slis_t_listheader,
           wa_comment type slis_listheader.
    *Type Declarations for Grouping fields
    data : wa_group type slis_sp_group_alv,
           i_group type slis_t_sp_group_alv.
      DATA DELCARATIONS
    data: v_flag,                 "Status Flag
          v_repid like sy-repid,  "Program Name
          p_year(4) type c,       "Year
          v_due_days type i.      "To hold the due days
      CONSTANTS DELCARATIONS
    constants: c_x type c value 'X',
               c_bukrs(4) type c value '0373'.
      INTERNAL TABLES DELCARATIONS
    *--Internal table to hold the required data
    data: begin of it_final_vendor occurs 0,
            rzzlifnr    like zzgeinz9a-rzzlifnr,  "Vendor
            name1       like lfa1-name1,          "Vendor Name
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            belnr       like bkpf-belnr,          "FI Doc No
            doc_date    like bkpf-awkey,          "Document Date
            zbd1t       like bsik-zbd1t,          "Cash discount days 1
            bldat       like bkpf-bldat,          "Document Date
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            hsl         like zzgeinz9a-hsl,       "local currency
            found       type c,                   "Existance Flag
          end of it_final_vendor.
    data: begin of it_final_vendor_temp occurs 0,
            rzzlifnr    like zzgeinz9a-rzzlifnr,  "Vendor
            name1       like lfa1-name1,          "Vendor Name
            belnr       like bkpf-belnr,          "FI Doc No
            bldat       like bkpf-bldat,          "Document Date
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            hsl        like zzgeinz9a-hsl,        "local currency
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            buck_0_30   like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_31_60  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_61_90  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_91_180 like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_180    like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            doc_date    like bkpf-awkey,          "Document Date
            found       type c,                   "Existance Flag
          end of it_final_vendor_temp.
    data: begin of it_final_customer occurs 0,
            rzzkunnr    like zzgeinz9a-rzzkunnr,  "Customer
            name1       like kna1-name1,          "Customer Name
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            belnr       like bkpf-belnr,          "FI Doc No
            doc_date    like bkpf-awkey,          "Document Date
            zbd1t       like bsik-zbd1t,          "Cash discount days 1
            bldat       like bkpf-bldat,          "Document Date
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            hsl         like zzgeinz9a-hsl,       "local currency
            found       type c,                   "Existance Flag
          end of it_final_customer.
    data: begin of it_final_customer_temp occurs 0,
            rzzkunnr    like zzgeinz9a-rzzkunnr,  "Customer
            name1       like kna1-name1,          "Customer Name
            belnr       like bkpf-belnr,          "FI Doc No
            bldat       like bkpf-bldat,          "Document Date
            rzz_ebeln   like zzgeinz9a-rzz_ebeln, "P.O. Ref No
            hsl        like zzgeinz9a-hsl,        "local currency
            due_date    like bkpf-bldat,          "Due Date
            due_days    type i,                   "Due Days
            not_due     like zzgeinz9a-hsl,       "Not Yet Due
            buck_0_30   like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_31_60  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_61_90  like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_91_180 like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            buck_180    like zzgeinz9a-hsl,       "Invoiceamt in localcurr
            docnr       like zzgeinz9a-DOCNR,     "Accounting Doc No
            refdocnr    like zzgeinz9a-REFDOCNR,  "Reference document no
            doc_date    like bkpf-awkey,          "Document Date
            found       type c,                   "Existance Flag
          end of it_final_customer_temp.
    *--Internal Table to hold the Cash discount days 1 for Vendors
    data: begin of it_final_bsik occurs 0,
            belnr like bsik-belnr,
            zbd1t like bsik-zbd1t,
          end of it_final_bsik.
    *--Internal Table to hold the Cash discount days 1 for Customers
    data: begin of it_final_bsid occurs 0,
            belnr like bsid-belnr,
            zbd1t like bsid-zbd1t,
          end of it_final_bsid.
      INITIALIZATION
    v_repid = sy-repid.
      SELECTION SCREEN
    selection-screen: begin of block b1 with frame title text-h01.
    selection-screen skip.
    select-options: s_vendor for zzgeinz9a-rzzlifnr modif id ven.
    parameters: p_comp1 like t001-bukrs modif id ven.
    parameters: p_rundt1 like bkpf-bldat modif id ven.
    select-options: s_cust for zzgeinz9a-rzzkunnr modif id cst.
    parameters: p_comp2 like t001-bukrs modif id cst.
    parameters: p_rundt2 like bkpf-bldat modif id cst.
    selection-screen skip.
    selection-screen: begin of block b2 with frame title text-h02.
    parameters : p_vendor radiobutton group gr1 default 'X'
                                      user-command test,
                 p_cust  radiobutton group gr1.
    selection-screen: end of block b2.
    selection-screen: end of block b1.
    **************************AT Selection Screen OutPut ******************
    at selection-screen output.
      loop at screen.
        if p_cust = 'X'.
          if screen-group1 = 'VEN'.
            screen-active = '0'.
            screen-input = '0'.
            screen-output = '0'.
            screen-invisible = '0'.
          endif.
        elseif p_vendor = 'X'.
          if screen-group1 = 'CST'.
            screen-active = '0'.
            screen-input = '0'.
            screen-output = '0'.
            screen-invisible = '0'.
          endif.
        endif.
        modify screen.
      endloop.
      SELECTION SCREEN ON
    at selection-screen on s_vendor.
    *--Validating Vendor
      if not s_vendor[] is initial.
        perform validate_s_vendor.
      endif.
    at selection-screen on s_cust.
    *--Validating Customer
      if not s_cust[] is initial.
        perform validate_s_cust.
      endif.
    at selection-screen on p_comp1.
    *--Validating Company Code.
      if not p_comp1 is initial.
        perform validate_p_comp1.
      endif.
    at selection-screen on p_comp2.
    *--Validating Company Code.
      if not p_comp2 is initial.
        perform validate_p_comp2.
      endif.
      START OF SELECTION
    start-of-selection.
    if p_vendor = 'X'.
       perform get_vendor_data.
    elseif p_cust = 'X'.
       perform get_customer_data.
    endif.
      END OF SELECTION
    end-of-selection.
    if p_vendor = 'X'.
    *--Generating the output for vendor
      perform generate_field_catalog_vendor.
      perform get_events_vendor.
      perform generate_layout_vendor.
      perform generate_sort_vendor.
      perform generate_group_vendor.
      perform disp_alv_grid_vendor.
    elseif p_cust = 'X'.
    *--Generating the output for customer
      perform generate_field_catalog_cust.
      perform get_events_customer.
      perform generate_layout_customer.
      perform generate_sort_customer.
      perform generate_group_customer.
      perform disp_alv_grid_customer.
    endif.
    *&      Form  validate_s_vendor
          Validating the Vendor
    form validate_s_vendor.
      select rzzlifnr up to 1 rows
      into (zzgeinz9a-rzzlifnr)
      from zzgeinz9a
      where rzzlifnr in s_vendor.
      endselect.
      if sy-subrc ne 0.
        message e004 with 'Invalid Range of Vendor'(002)
    s_vendor-low 'To'(006) s_vendor-high.
      endif.
    endform.                    " validate_s_vendor
    *&      Form  validate_s_cust
          Validating the Customer
    form validate_s_cust.
       select rzzkunnr up to 1 rows
       into (zzgeinz9a-rzzkunnr)
       from zzgeinz9a
       where rzzkunnr in s_cust.
       endselect.
       if sy-subrc ne 0.
         message e004 with 'Invalid Range of Customer'(005)
    s_cust-low 'To'(006) s_cust-high.
      endif.
    endform.                    " validate_s_cust
    *&      Form  validate_p_comp1
          Validating the Company Code
    form validate_p_comp1.
      select single bukrs
             into   (t001-bukrs)
             from   t001
             where  bukrs eq p_comp1.
      if sy-subrc ne 0.
        message e004 with 'Company Code'(004) p_comp1 'Does not Exists'(003)
      endif.
    endform.                    " validate_p_comp1
    *&      Form  validate_p_comp2
          Validating the Company Code
    form validate_p_comp2.
      select single bukrs
             into   (t001-bukrs)
             from   t001
             where  bukrs eq p_comp2.
      if sy-subrc ne 0.
        message e004 with 'Company Code'(004) p_comp2 'Does not Exists'(003)
      endif.
    endform.                    " validate_p_comp2
    *&      Form  get_vendor_data
          Getting the Vendor Related Docs
    form get_vendor_data.
    select a~rzzlifnr
            b~name1
            a~docnr
            a~refdocnr
            a~rzz_ebeln
            a~hsl
        into corresponding fields of table it_final_vendor
        from zzgeinz9a as a
        inner join lfa1 as b
        on arzzlifnr = blifnr
        where rzzlifnr in s_vendor
        and   rbukrs   eq p_comp1.
        if sy-subrc eq 0.
          v_flag = 'X'.
          p_year = sy-datum+0(4).
          perform get_doc_date using p_comp1
                                     p_year.
          perform move_records.
          sort it_final_vendor by rzzlifnr.
          perform generate_data.
        else.
          v_flag = space.
        endif.
    endform.                    " get_vendor_data
    *&      Form  get_customer_data
          Getting the Customer Related Docs
    form get_customer_data.
    select a~rzzkunnr
            b~name1
            a~docnr
            a~refdocnr
            a~rzz_ebeln
            a~hsl
        into corresponding fields of table it_final_customer
        from zzgeinz9a as a
        inner join kna1 as b
        on arzzkunnr = bkunnr
        where rzzkunnr in s_cust
        and   rbukrs   eq p_comp2.
        if sy-subrc eq 0.
          v_flag = 'X'.
          p_year = sy-datum+0(4).
          perform get_doc_date_cust using p_comp2
                                          p_year.
          perform move_records_cust.
          sort it_final_customer by rzzkunnr.
          perform generate_data_cust.
        else.
          v_flag = space.
        endif.
    endform.                    " get_customer_data
    *&      Form  get_doc_date
          Getting the Document Date and FI Doc No
         -->P_P_COMP1 Company Code
         -->P_P_YEAR  Fiscal Year
    form get_doc_date using    p_p_comp1
                               p_p_year.
      loop at it_final_vendor.
        concatenate it_final_vendor-refdocnr '*' into
    it_final_vendor-doc_date.
        modify it_final_vendor index sy-tabix.
    endloop.
    clear it_final_vendor.
    data: v_doc_date(11) type c,
          v_belnr like bkpf-belnr,
          v_bldat like bkpf-bldat.
          loop at it_final_vendor.
           concatenate it_final_vendor-refdocnr '%' into v_doc_date.
            select single belnr
                          bldat
                   into corresponding fields of it_final_vendor
                   from bkpf
                   where bukrs eq p_p_comp1
                   and   gjahr eq p_p_year
                   and   awkey like v_doc_date.
                   modify it_final_vendor.
           endloop.
        clear:it_final_vendor.
    endform.                    " get_doc_date
    *&      Form  move_records
          Moving records to final internal table
    form move_records.
    *--Checking the existance of belnr in bsik
    clear it_final_vendor.
      select belnr
             zbd1t
             into table it_final_bsik
             from bsik
             for all entries in it_final_vendor
             where belnr eq it_final_vendor-belnr
             and   bukrs eq c_bukrs.
    clear it_final_bsik.
      loop at it_final_vendor.
        read table it_final_bsik with key belnr = it_final_vendor-belnr.
        if sy-subrc eq 0.
          it_final_vendor-zbd1t = it_final_bsik-zbd1t.
          it_final_vendor-due_date = it_final_vendor-bldat +
    it_final_bsik-zbd1t.
          it_final_vendor-found    = 'X'.
          modify it_final_vendor.
        endif.
      endloop.
    endform.                    " move_records
    *&      Form  generate_data
          Segregating the records based on due_date
    form generate_data.
      delete it_final_vendor[] where found ne 'X'.
      sort it_final_vendor by belnr.
      loop at it_final_vendor.
        if it_final_vendor-due_date > p_rundt1.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-not_due.
        elseif it_final_vendor-due_date < p_rundt1.
          it_final_vendor-due_days = p_rundt1 - it_final_vendor-DUE_DATE.
        endif.
    *--filling 0-30 bucket.
        if it_final_vendor-due_days ge 0 AND it_final_vendor-due_days le 30.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_0_30.
    *--filling 31-60 bucket.
    elseif it_final_vendor-due_days ge 31 AND it_final_vendor-due_days le 60
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_31_60.
    *--filling 61-90 bucket.
    elseif it_final_vendor-due_days ge 61 AND it_final_vendor-due_days le 90
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_61_90.
    *--filling 91-180 bucket.
        elseif it_final_vendor-due_days ge 91 AND it_final_vendor-due_days
    le 180.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_91_180.
    *--filling 180 bucket.
        elseif it_final_vendor-due_days gt 180.
          move-corresponding it_final_vendor to it_final_vendor_temp.
          move it_final_vendor-hsl to it_final_vendor_temp-buck_180.
        endif.
         append it_final_vendor_temp.
         clear it_final_vendor_temp.
      endloop.
    endform.                    " generate_data
    *&      Form  DISP_ALV_GRID_VENDOR
          Displaying the output in grid For Vendor
    form DISP_ALV_GRID_VENDOR.
    *--Generating the OUTPUT GRID FOR VENDOR
      call function 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
        I_INTERFACE_CHECK                 = ' '
        I_BYPASSING_BUFFER                =
        I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                = v_repid
        I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = ' '
        I_CALLBACK_TOP_OF_PAGE            = ' '
        I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
        I_CALLBACK_HTML_END_OF_LIST       = ' '
        I_STRUCTURE_NAME                  =
        I_BACKGROUND_ID                   = ' '
        I_GRID_TITLE                      =
        I_GRID_SETTINGS                   =
          IS_LAYOUT                         = wa_layout
          IT_FIELDCAT                       = i_fldcat_head
        IT_EXCLUDING                      =
          IT_SPECIAL_GROUPS                 = i_group
          IT_SORT                           = it_sort[]
        IT_FILTER                         =
        IS_SEL_HIDE                       =
        I_DEFAULT                         = 'X'
        I_SAVE                            = ' '
        IS_VARIANT                        =
          IT_EVENTS                         = i_events
        IT_EVENT_EXIT                     =
        IS_PRINT                          =
        IS_REPREP_ID                      =
        I_SCREEN_START_COLUMN             = 0
        I_SCREEN_START_LINE               = 0
        I_SCREEN_END_COLUMN               = 0
        I_SCREEN_END_LINE                 = 0
        IT_ALV_GRAPHICS                   =
        IT_ADD_FIELDCAT                   =
        IT_HYPERLINK                      =
        I_HTML_HEIGHT_TOP                 =
        I_HTML_HEIGHT_END                 =
        IT_EXCEPT_QINFO                   =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           =
        ES_EXIT_CAUSED_BY_USER            =
        tables
          t_outtab                          = it_final_vendor_temp
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISP_ALV_GRID
    *&      Form  get_doc_date_cust
          text
         -->P_P_COMP2 Company Code
         -->P_P_YEAR  Fiscal Year
    form get_doc_date_cust using    p_p_comp2
                                    p_p_year.
      loop at it_final_customer.
        concatenate it_final_customer-refdocnr '*' into
    it_final_customer-doc_date.
        modify it_final_customer index sy-tabix.
    endloop.
    clear it_final_customer.
    data: v_doc_date(11) type c,
          v_belnr like bkpf-belnr,
          v_bldat like bkpf-bldat.
          loop at it_final_customer.
           concatenate it_final_customer-refdocnr '%' into v_doc_date.
            select single belnr
                          bldat
                   into corresponding fields of it_final_customer
                   from bkpf
                   where bukrs eq p_p_comp2
                   and   gjahr eq p_p_year
                   and   awkey like v_doc_date.
                   modify it_final_customer.
           endloop.
        clear:it_final_customer.
    endform.                    " get_doc_date_cust
    *&      Form  move_records_cust
          Moving Customer Data to Final Internal Table
    form move_records_cust.
    *--Checking the existance of belnr in bsid
      select belnr
             zbd1t
             into table it_final_bsid
             from bsid
             for all entries in it_final_customer
             where belnr eq it_final_customer-belnr
             and   bukrs eq c_bukrs.
    clear it_final_bsid.
      loop at it_final_customer.
        read table it_final_bsid with key belnr = it_final_customer-belnr.
        if sy-subrc eq 0.
          it_final_customer-zbd1t    = it_final_bsid-zbd1t.
          it_final_customer-due_date = it_final_customer-bldat +
    it_final_bsid-zbd1t.
          it_final_customer-found    = 'X'.
          modify it_final_customer.
        endif.
      endloop.
    endform.                    " move_records_cust
    *&      Form  generate_data_cust
          Generating the Customer Output
    form generate_data_cust.
      delete it_final_customer[] where found ne 'X'.
      sort it_final_customer by belnr.
      loop at it_final_customer.
        if it_final_customer-due_date > p_rundt2.
         move-corresponding it_final_customer to it_final_customer_temp.
         move it_final_customer-hsl to it_final_customer_temp-not_due.
        elseif it_final_customer-due_date < p_rundt2.
         it_final_customer-due_days = p_rundt2 - it_final_customer-DUE_DATE.
        endif.
    *--filling 0-30 bucket.
    if it_final_customer-due_days ge 0 AND it_final_customer-due_days le 30
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_0_30.
    *--filling 31-60 bucket.
    elseif it_final_customer-due_days ge 31 AND it_final_customer-due_days
    le 60
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_31_60.
    *--filling 61-90 bucket.
    elseif it_final_customer-due_days ge 61 AND it_final_customer-due_days
    le 90
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_61_90.
    *--filling 91-180 bucket.
        elseif it_final_customer-due_days ge 91 AND
    it_final_customer-due_days
    le 180.
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_91_180.
    *--filling 180 bucket.
        elseif it_final_customer-due_days gt 180.
          move-corresponding it_final_customer to it_final_customer_temp.
          move it_final_customer-hsl to it_final_customer_temp-buck_180.
        endif.
         append it_final_customer_temp.
         clear it_final_customer_temp.
      endloop.
    endform.                    " generate_data_cust
    *&      Form  generate_field_catalog_vendor
          Generating the Field Catalog for Vendor
    form generate_field_catalog_vendor.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
          I_PROGRAM_NAME               = v_repid
          I_INTERNAL_TABNAME           = 'IT_FINAL_VENDOR_TEMP'
        I_STRUCTURE_NAME             =
        I_CLIENT_NEVER_DISPLAY       = 'X'
          I_INCLNAME                   = v_repid
        I_BYPASSING_BUFFER           =
        I_BUFFER_ACTIVE              =
        changing
          ct_fieldcat                  = i_fldcat_head
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_fldcat_head[] is initial.
        loop at i_fldcat_head into wa_fldcat_head.
        case wa_fldcat_head-fieldname.
         when 'RZZLIFNR'.
            wa_fldcat_head-col_pos = '1'.
            wa_fldcat_head-ref_tabname = ' '.
            wa_fldcat_head-seltext_m  = 'Vendor No'(001).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
         when 'NAME1'.
            wa_fldcat_head-col_pos = '2'.
            wa_fldcat_head-seltext_m  = 'Vendor Name'(007).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '35'.
         when 'BELNR'.
            wa_fldcat_head-col_pos = '3'.
            wa_fldcat_head-seltext_m  = 'Invoice No'(008).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-KEY       = ' '.
         when 'BLDAT'.
            wa_fldcat_head-col_pos = '4'.
            wa_fldcat_head-seltext_m  = 'Document Date'(009).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'RZZ_EBELN'.
            wa_fldcat_head-col_pos = '5'.
            wa_fldcat_head-seltext_m  = 'PO.Ref.No'(010).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'HSL'.
            wa_fldcat_head-col_pos = '6'.
            wa_fldcat_head-seltext_m  = 'Invoice Amount'(011).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'DUE_DATE'.
            wa_fldcat_head-col_pos = '7'.
            wa_fldcat_head-seltext_m  = 'Due Date'(012).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'DUE_DAYS'.
            wa_fldcat_head-col_pos = '8'.
            wa_fldcat_head-seltext_m  = 'Due Days'(013).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '9'.
         when 'NOT_DUE'.
            wa_fldcat_head-col_pos = '9'.
            wa_fldcat_head-seltext_m  = 'Not Due'(014).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_0_30'.
            wa_fldcat_head-col_pos = '10'.
            wa_fldcat_head-seltext_m  = '0 To 30'(015).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_31_60'.
            wa_fldcat_head-col_pos = '11'.
            wa_fldcat_head-seltext_m  = '31 To 60'(016).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_61_90'.
            wa_fldcat_head-col_pos = '12'.
            wa_fldcat_head-seltext_m  = '61 To 90'(017).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_91_180'.
            wa_fldcat_head-col_pos = '13'.
            wa_fldcat_head-seltext_m  = '91 To 180'(018).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_180'.
            wa_fldcat_head-col_pos = '14'.
            wa_fldcat_head-seltext_m  = 'Beyond 180'(019).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
        when 'DOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'REFDOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'DOC_DATE'.
            wa_fldcat_head-no_out = 'X'.
        when 'FOUND'.
            wa_fldcat_head-no_out = 'X'.
         endcase.
         modify i_fldcat_head from wa_fldcat_head index sy-tabix.
        endloop.
      endif.
    endform.                    " generate_field_catalog_vendor
    *&      Form  get_events_vendor
          Getting ALV Events
    form get_events_vendor.
        call function 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       importing
         et_events             = i_events
      exceptions
        list_type_wrong       = 1
        others                = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_events[] is initial.
       read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
       wa_event-form = 'GENERATE_USERCOMMAND'.
       modify i_events from wa_event index sy-tabix.
       read table i_events into wa_event with key name = 'END_OF_LIST'(025)
       wa_event-form = 'GENERATE_USERCOMMAND_FOOTER'.
       modify i_events from wa_event index sy-tabix.
      endif.
    endform.                    " get_events_vendor
    *&      Form  GENERATE_USERCOMMAND
          Displaying Header-Text and Logo on Grid
    form generate_usercommand .
      clear i_comment[].
      wa_comment-typ = 'H'.
      wa_comment-info = 'Vendor Ageing Report'(026).
      append wa_comment to i_comment.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
        exporting
          it_list_commentary = i_comment
          i_logo             = 'ENJOYSAP_LOGO'
        I_END_OF_LIST_GRID       = 'X'
    endform.                    " GENERATE_USERCOMMAND
    *&      Form  GENERATE_USERCOMMAND_FOOTER
          Displaying Footer-Text on Grid
    form generate_usercommand_footer.
      clear i_comment[].
      clear wa_comment.
      wa_comment-typ = 'S'.
      wa_comment-key = 'GE-Betz'(027).
      append wa_comment to i_comment.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
        exporting
          it_list_commentary       = i_comment
        I_LOGO                  = ''
          i_end_of_list_grid       = 'X'.
    endform.                    " GENERATE_USERCOMMAND_FOOTER
    *&      Form  generate_layout_vendor
          Generating the ALV Layout
    form generate_layout_vendor.
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.     "OPTIMIZING FIELD WIDTH
      wa_layout-zebra = 'X'.                  "PUTTING ZEBRA COLORS
      wa_layout-confirmation_prompt = 'X'.    "DISPLAYS CONFIRMATION DIALOG
      wa_layout-totals_text = 'Totals'(028).       "DISPLAYS TOTALS TEXT
      wa_layout-subtotals_text = 'Sub Totals'(029)."DISPLAYS SUBTOTALS TEXT
    endform.                    " generate_layout_vendor
    *&      Form  generate_sort_vendor
          Sorting the Internal Table by Vendor
    form generate_sort_vendor.
      it_sort-fieldname = 'RZZLIFNR'.
      it_sort-tabname = 'IT_FINAL_VENDOR_TEMP'.
      it_sort-up = 'X'.
      it_sort-subtot = 'X'.
      append it_sort.
    endform.                    " generate_sort_vendor
    *&      Form  generate_group_vendor
          Grouping the Data
    form generate_group_vendor.
      clear i_group.
      wa_group-sp_group = 'A'.
      wa_group-text  = 'RZZLIFNR'.
      append wa_group to i_group.
    endform.                    " generate_group_vendor
    *&      Form  GENERATE_FIELD_CATALOG_CUST
          Generating Field Catalog for Customer
    form GENERATE_FIELD_CATALOG_CUST.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
          I_PROGRAM_NAME               = v_repid
          I_INTERNAL_TABNAME           = 'IT_FINAL_CUSTOMER_TEMP'
        I_STRUCTURE_NAME             =
        I_CLIENT_NEVER_DISPLAY       = 'X'
          I_INCLNAME                   = v_repid
        I_BYPASSING_BUFFER           =
        I_BUFFER_ACTIVE              =
        changing
          ct_fieldcat                  = i_fldcat_head
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_fldcat_head[] is initial.
        loop at i_fldcat_head into wa_fldcat_head.
        case wa_fldcat_head-fieldname.
         when 'RZZKUNNR'.
            wa_fldcat_head-col_pos = '1'.
            wa_fldcat_head-ref_tabname = ' '.
            wa_fldcat_head-seltext_m  = 'Customer No'(020).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
         when 'NAME1'.
            wa_fldcat_head-col_pos = '2'.
            wa_fldcat_head-seltext_m  = 'Customer Name'(021).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '35'.
         when 'BELNR'.
            wa_fldcat_head-col_pos = '3'.
            wa_fldcat_head-seltext_m  = 'Invoice No'(008).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-KEY       = ' '.
         when 'BLDAT'.
            wa_fldcat_head-col_pos = '4'.
            wa_fldcat_head-seltext_m  = 'Document Date'(009).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'RZZ_EBELN'.
            wa_fldcat_head-col_pos = '5'.
            wa_fldcat_head-seltext_m  = 'PO.Ref.No'(010).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '13'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'HSL'.
            wa_fldcat_head-col_pos = '6'.
            wa_fldcat_head-seltext_m  = 'Invoice Amount'(011).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'DUE_DATE'.
            wa_fldcat_head-col_pos = '7'.
            wa_fldcat_head-seltext_m  = 'Due Date'(012).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '12'.
            wa_fldcat_head-ref_tabname = ' '.
         when 'DUE_DAYS'.
            wa_fldcat_head-col_pos = '8'.
            wa_fldcat_head-seltext_m  = 'Due Days'(013).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '9'.
         when 'NOT_DUE'.
            wa_fldcat_head-col_pos = '9'.
            wa_fldcat_head-seltext_m  = 'Not Due'(014).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_0_30'.
            wa_fldcat_head-col_pos = '10'.
            wa_fldcat_head-seltext_m  = '0 To 30'(015).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_31_60'.
            wa_fldcat_head-col_pos = '11'.
            wa_fldcat_head-seltext_m  = '31 To 60'(016).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_61_90'.
            wa_fldcat_head-col_pos = '12'.
            wa_fldcat_head-seltext_m  = '61 To 90'(017).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_91_180'.
            wa_fldcat_head-col_pos = '13'.
            wa_fldcat_head-seltext_m  = '91 To 180'(018).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
         when 'BUCK_180'.
            wa_fldcat_head-col_pos = '14'.
            wa_fldcat_head-seltext_m  = 'Beyond 180'(019).
            wa_fldcat_head-ddictxt = 'M'.
            wa_fldcat_head-outputlen = '16'.
            wa_fldcat_head-do_sum = 'X'.
        when 'DOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'REFDOCNR'.
            wa_fldcat_head-no_out = 'X'.
        when 'DOC_DATE'.
            wa_fldcat_head-no_out = 'X'.
        when 'FOUND'.
            wa_fldcat_head-no_out = 'X'.
         endcase.
         modify i_fldcat_head from wa_fldcat_head index sy-tabix.
        endloop.
      endif.
    endform.                    " GENERATE_FIELD_CATALOG_CUST
    *&      Form  get_events_customer
          Getting ALV Events
    form get_events_customer.
        call function 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       importing
         et_events             = i_events
      exceptions
        list_type_wrong       = 1
        others                = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      if not i_events[] is initial.
       read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
       wa_event-form = 'GENERATE_USERCOMMAND_CUST'.
       modify i_events from wa_event index sy-tabix.
       read table i_events into wa_event with key na

Maybe you are looking for

  • How to develop a report for display unused materials

    how to develop a report for display unused materials? where can i find them?

  • Notification center only in landscape mode

    On my Iphone 4S the notification only works in the landscape mode and not working in the portrait mode (e.g.on the home screen). I've done the "reset" thing - but its still the same. I use the latest iOS. Some help please!

  • Installing iPhone SDK on Tiger

    i have iMac with Tiger(upgraded to 10.4.11). i want to start development on iPhone.but when i am installing the iPhone SDK(http://developer.apple.com/iphone/program) it says "Mac OS X 10.5 was not found.".Can anyone tell me how can i upgrade my iMac

  • Tell me the perameter to set maximum gui auto logout time for limited users

    hi gurus... i want to know the perameter to set the maximum gui auto logout time for limited users... at present i have auto logout time as 30 minutes..but i need to set the value as 10 minutes for some group of user... if any one know any perameter

  • Google icon in iweb tab/numbers on iweb app

    Why does my iwebsite tab show up with a google icon on my homepage on Firefox? Also, why does my the iweb app have a red circle with a number inside it? The number was 3 and now it's 5. Anyone know what that is? Danka!