Alv Hierarchy currency subtotals = 'X'.

Hi experts,
I have a problem with a summarization in a alv grid hierseq.
I already implemented the do_sum and subtotal in fieldcat and sort structure.
But if I have 2 currency (ex. USD & EUR) type for the same customer related to the open FI items, the alv is not able to do the subtotal for currency but it write at the and of the sort a X.
If, thru debug, I change the USD in EUR (or inverse) the sum goes to end correctly.
I don't know where is the problem.
Help me fast if u can because i'm in a post go live and for me this is an issue.
Thanks a lot.

For hierarchical sequential lists, it is not possible (for technical reasons) to total amounts with different currencies or units of measure. If you total using such a column, an 'X' appears instead of the total.
Within the ALV grid and the single-level list, the different currencies/measures are displayed separately in the totals formation.

Similar Messages

  • Top_of_page is not working in ALV hierarchy?

    Hi,
          I have written following code for top_of_page using event but which is not working...This report is developed for interactive report.
    Note: passed the it_events into ALV hierarchy functional module.
    FORM build_event_tab .
       CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           i_list_type = 1
         IMPORTING
           et_events   = it_events[].
       READ TABLE it_events INTO wa_events WITH KEY form = 'TOP_OF_PAGE'.
       IF sy-subrc = 0.
         wa_events-form = 'TOP_OF_PAGE'.
         APPEND wa_events TO it_events.
       ENDIF.
    ENDFORM. "Get_events
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
       DATA: dl_text(255) TYPE c,
             lv_cutime TYPE sy-uzeit,
             lv_cudt(20) TYPE c.
       lv_cudt = sy-datum.
    *--Passing Date----*
       WRITE  lv_cudt TO dl_text.
       CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                             lv_cudt+4(2) '-'
                             lv_cudt+0(4) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
       WRITE 'Company Name' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 150.
       lv_cutime = sy-uzeit.
       CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                             lv_cutime+2(2) ':'
                             lv_cutime+4(2) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 60.
       WRITE 'Title' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
    ENDFORM.                    "html_top_of_page
    Thanks
    Shree

    PERFORM build_fieldcat.
      PERFORM build_event_tab.
      PERFORM alv_display.
    *---Build fieldcat
    FORM build_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'LIFNR'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'SUPPLIER'.
      wa_fieldcat-outputlen = 20.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'NAME1'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'VENDOR NAME'.
      wa_fieldcat-outputlen = 40.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'WERKS'.
      wa_fieldcat-col_pos   = '1'.
      wa_fieldcat-seltext_l = 'Plant'.
      wa_fieldcat-outputlen = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'AWKEY'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = ' Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BELNR'.
      wa_fieldcat-col_pos   = '3'.
      wa_fieldcat-seltext_l = 'A/c Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BUDAT'.
      wa_fieldcat-col_pos   = '4'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'XBLNR'.
      wa_fieldcat-col_pos   = '5'.
      wa_fieldcat-seltext_l = 'Inv'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BLDAT'.
      wa_fieldcat-col_pos   = '6'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'DMBTR'.
      wa_fieldcat-col_pos   = '7'.
      wa_fieldcat-seltext_l = 'Bill.Amount'.
      wa_fieldcat-outputlen = 19.
      wa_fieldcat-do_sum   = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'HKONT'.
      wa_fieldcat-col_pos   = '8'.
      wa_fieldcat-seltext_l = 'Cost Ctr'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    "Build_fieldcat
    *----ALV Display-----*
    FORM alv_display.
      key-header01 = 'LIFNR'.
      key-item01   = 'LIFNR'.
      DELETE ADJACENT DUPLICATES FROM it_vendor.
      DELETE ADJACENT DUPLICATES FROM it_final.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_user_command  = 'USER_COMMAND'
          i_callback_pf_status_set = 'PFSTATUS'
          it_fieldcat              = it_fieldcat[]
          i_tabname_header         = 'IT_VENDOR'
          i_tabname_item           = 'IT_FINAL'
          it_events                = it_events[]
          is_keyinfo               = key
        TABLES
          t_outtab_header          = it_vendor[]
          t_outtab_item            = it_final[].
    ENDFORM.                    "alv_display
    *----interactive method--
    FORM user_command USING r_ucomm TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          READ TABLE it_final INTO wa_final INDEX rs_selfield-tabindex.
          IF sy-subrc = 0.
            IF rs_selfield-fieldname = 'BELNR'.
              SET PARAMETER ID 'BLN' FIELD wa_final-belnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'AWKEY'.
              SET PARAMETER ID 'RBN' FIELD wa_final-awkey.
              SET PARAMETER ID 'GJR' FIELD pa_gjahr.
              CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'LFBNR'.
              SET PARAMETER ID 'BLN' FIELD it_bsak-lfbnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'EBELN'.
              SELECT SINGLE
                     ebeln
                     INTO wk_ebeln
                     FROM ekko
                     WHERE ebeln = it_bsak-ebeln
                     AND bstyp = 'F'.
              IF sy-subrc EQ 0.
                SET PARAMETER ID 'BES' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
              ELSE.
                SET PARAMETER ID 'VRT' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
              ENDIF.
            ENDIF.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    FORM pfstatus USING ut_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.
    ENDFORM.                    "pfstatus
    *---Authorization check---
    FORM bukrs_check.
      SELECT SINGLE
             butxt "Name of the Company Code / Company
             ort01 "City
             INTO (wk_company, wk_city) FROM t001
             WHERE  bukrs = pa_bukrs.
      IF sy-subrc <> 0.
        MESSAGE 'create your own message' TYPE 'I'.
      ENDIF.
    ENDFORM.                    " BUKRS_CHECK
    FORM build_event_tab.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = it_events[].
      READ TABLE it_events INTO wa_events
         WITH KEY name = 'SLIS_EV_TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'TOP_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
      READ TABLE it_events INTO wa_events WITH KEY name =
                    'SLIS_EV_END_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'END_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
    ENDFORM. "Get_events
    FORM end_of_page.
      DATA: it_header TYPE slis_t_listheader,
            wa_header TYPE slis_listheader.
      wa_header-typ = 'S'.
      wa_header-key = 'MATERIAL'.
    *  wa_line-info = p1.
      APPEND wa_header TO it_header.
      CLEAR wa_header.
    *  READ TABLE it_maktx WITH KEY matnr = p1.
      wa_header-typ = 'S'.
      wa_header-key = 'DESCRIPTION'.
    *  wa_line-info = it_maktx-maktx.
      APPEND  wa_header TO it_header.
      CLEAR wa_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
    *      i_logo             = 'ENJOYSAP_LOGO'
           it_list_commentary = it_header.
    ENDFORM.                    "END_OF_PAGE
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
      DATA: dl_text(255) TYPE c,
            lv_cutime TYPE sy-uzeit,
            lv_cudt(20) TYPE c.
      lv_cudt = sy-datum.
    *--Passing Date----*
      WRITE  lv_cudt TO dl_text.
      CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                            lv_cudt+4(2) '-'
                            lv_cudt+0(4) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      WRITE 'INCAP CON MFG SER (P) LTD' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 150.
      lv_cutime = sy-uzeit.
      CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                            lv_cutime+2(2) ':'
                            lv_cutime+4(2) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 60.
      WRITE 'Purchase Journal' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
    ENDFORM.                    "html_top_of_page

  • Displaying ALV hierarchy at a certain level

    Hi all,
    I have an ALV report that shows a hierarchy. This ALV hierarchy is created using std class CL_GUI_ALV_TREE.
    The number of hierarchy levels is dynamic and only determined during run time. However I would like to be able to either display all nodes expanded or only the last node unexpanded. In other words I would like to control which hierarhcy level is expanded when the report is first displayed.
    Can anyone suggest a way to do this please?
    Thanks

    If you want to display the sum for a given hierarchy level, you should use CUBESET function.
     e.g.
    =IF(B2="all",CUBESET("mycube","[Location].[Location Hierarchy].[Department].&[DEPT 07]","all"),Cubemember("MyCube","[Location].[Location Hierarchy].[Department].&[DEPT 07].&["&B1&"]"))
    Hope it helps.

  • Setting the ALV Hierarchy tree with grid line between the columns and rows

    Hi Experts,
    I would like to ask if there is any suggestion on setting the ALV hierarchy tree to be separated by grid line between the columns and rows just like how it is display the same way in normal ALV grid.
    Thanks in advance.

    Hi Lin,
    The requirement which you have stated is not possible.
    Lin,
    Also i have a query regarding BADI ZME_PROCESS_REQ_CUST, which you had raised on SDN. You have marked the question as solved/answered.
    Changing the data of a customize field in purchase requisition
    Could you please let me know, the steps you did to update the screen fields through the BADI.
    I would really appreciate your reply, because i am facing exactly the same problem which you have mentioned.
    Thanks,
    Best regards,
    Prashant

  • Multiple levels in ALV Hierarchy

    Hi All
    How to display Multiple levels in ALV Hierarchy.
    I have header and Item Tables but Under Header Expansions I have to display one more Expansion.
    Means Multiple levels.

    Hi,
      I think you can check standard program BCALV_TEST_HIERSEQ_LIST
    Regards,
    Himanshu

  • ALV HIERARCHIAL REPORT

    Dear Experts,
    Can anyone tell me how to create a ALV Hierarchial report with one HEADER table and multiple ITEM(child) tables.
    thanks & regards,
    gautam

    Hi you can tray review this code for a example i found in the web and help me:
    REPORT Z_TEST_HIESEQ_REPORT.
    TABLES: ekko,ekpo.
    * selection option
    SELECT-OPTIONS s_ebeln FOR ekko-ebeln.
    TYPE-POOLS:slis.
        * define header table and item table
    DATA: BEGIN OF headertab OCCURS 0,
              ebeln LIKE ekko-ebeln,
              bstyp LIKE ekko-bstyp,
             bsart LIKE ekko-bsart,
             statu LIKE ekko-statu,
             END OF headertab.
        DATA: BEGIN OF itemtab OCCURS 0,
        ebeln LIKE ekpo-ebeln,
        ebelp LIKE ekpo-ebelp,
        matnr LIKE ekpo-matnr,
        werks LIKE ekpo-werks,
        menge LIKE ekpo-menge,
        netpr LIKE ekpo-netpr,
        peinh LIKE ekpo-peinh,
        netwr LIKE ekpo-netwr,
        END OF itemtab.
        DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
        DATA: v_repid LIKE sy-repid.u201Ccurrent program name
        DATA: g_tabname_header TYPE slis_tabname,
        g_tabname_item TYPE slis_tabname.
        * data connect header table and item table
        * we can set 5 field as foreign key at same time
        DATA: gs_keyinfo TYPE slis_keyinfo_alv.
        INITIALIZATION.
        v_repid = sy-repid.
        START-OF-SELECTION.
        PERFORM get_data.
        END-OF-SELECTION.
        * get field catalog of header table
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
        i_program_name = v_repid
        i_internal_tabname = 'HEADERTAB'
        i_inclname = v_repid
        i_bypassing_buffer = 'X'
        i_buffer_active = "
        CHANGING
        ct_fieldcat = i_fieldcat
        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.
        * get field catalog of item table
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
        i_program_name = sy-repid
        i_internal_tabname = 'ITEMTAB'
        i_inclname = v_repid
        i_bypassing_buffer = 'X'
        i_buffer_active = "
        CHANGING
        ct_fieldcat = i_fieldcat
        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.
        * set the header and item table are connected by pur doc number
        gs_keyinfo-header01 = 'EBELN'.
        gs_keyinfo-item01 = 'EBELN'.
        g_tabname_header = 'HEADERTAB'.
        g_tabname_item = 'ITEMTAB'.
        CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
        i_callback_program = v_repid
        it_fieldcat = i_fieldcat
        i_save = 'A'
        i_tabname_header = g_tabname_header
        i_tabname_item = g_tabname_item
        is_keyinfo = gs_keyinfo
        i_bypassing_buffer = 'X'
        i_buffer_active = ' '
        TABLES
        t_outtab_header = headertab
        t_outtab_item = itemtab
        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.
        FORM get_data.
        SELECT ebeln bstyp bsart statu
        INTO TABLE headertab
        FROM ekko
        UP TO 100 ROWS
        WHERE ebeln IN s_ebeln.
        IF NOT headertab[] IS INITIAL.
        SELECT ebeln ebelp matnr werks menge netpr peinh netwr
        INTO TABLE itemtab
        FROM ekpo
        FOR ALL ENTRIES IN headertab
        WHERE ebeln = headertab-ebeln.
        ENDIF.
        ENDFORM. "get_data
    Edited by: Juan Manuel Garcia on Aug 17, 2010 11:29 PM
    Edited by: Juan Manuel Garcia on Aug 17, 2010 11:36 PM

  • Alv hierarchy subtotal in 2 fields

    Hi gurus,
    First, thanks to all those who helped me with my first problem. I have a new question, still regarding subtotal.
    The client now wants to have a subtotal in alv hierarchy per vendor and purchase doc. My output displays a subtotal per purchase doc only. Client wants to have an output that would look like this:
    VENDOR     
    PURCH DOC        PO AMT.
    1
    410000001            1000
    410000001             2000
    410000001            3000   (subtotal  per purch doc)
    410000002            100
    410000002            100     (subtotal per purch doc)
    1                          3100   (subtotal per vendor)
    2
    420000001            500
    420000001            300
    420000001            800       (subtotal per purch doc)
    2                          800       (subtotal per vendor)
    TOTAL                  3900
    Here's an excerpt of my code:
    FORM build_fcat using p_type changing p_fcat.
    data lt_fcat type slis_t_fieldcat_alv.
    field-symbols <fs_fcat> like line of lt_fcat.
    lt_fcat = p_fcat.
    loop at lt_fcat assigning <fs_fcat>.
    <fs_fcat>-ddictxt = 'L'.
    case <fs_fcat>-fieldname.
    when 'LIFNR'.
    <fs_fcat>-seltext_l = 'VENDOR'.
    <fs_fcat>-tabname = 'I_HEADER'.
    <fs_fcat>-key = 'X'.
    <fs_fcat>-outputlen = 15.
    modify lt_fcat from <fs_fcat>.
    when 'EBELN'.
    <fs_fcat>-seltext_l = 'PURCH DOC'.
    <fs_fcat>-tabname = 'I_ITEM'.
    <fs_fcat>-key = 'X'.
    <fs_fcat>-outputlen = 12.
    modify lt_fcat from <fs_fcat>.
    when 'RLWRT'.
    <fs_fcat>-seltext_l = 'PO AMT.'.
    <fs_fcat>-tabname = 'I_ITEM'.
    <fs_fcat>-datatype = 'CURR'.
    <fs_fcat>-ref_fieldname = 'WAERS'.
    <fs_fcat>-ref_tabname = 'I_ITEM'.
    <fs_fcat>-do_sum = 'X'.
    <fs_fcat>-outputlen = 15.
    modify lt_fcat from <fs_fcat>.
    endcase.
    endloop.
    p_fcat = lt_fcat.
    ENDFORM.
    FORM build_fsort changing p_fsort.
    data lt_sort type slis_t_sortinfo_alv.
    data ls_sort like line of lt_sort.
    ls_sort-spos = 1.
    ls_sort-fieldname = 'EBELN'.
    ls_sort-tabname = 'I_HEADER'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    ls_sort-spos = 2.
    ls_sort-fieldname = 'LIFNR'.
    ls_sort-tabname = 'I_HEADER'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    p_fsort = lt_fsort.
    ENDFORM.
    FORM modify_key changing p_keyinfo type slis_keyinfo_alv.
    clear p_keyinfo.
    p_keyinfo-header01 = 'LIFNR'.
    p_keyinfo-item01 = 'LIFNR'.
    p_keyinfo-header02 = 'EBELN'.
    p_keyinfo-item02 = 'EBELN'.
    ENDFORM.
    Is there a way to meet the client's expected output?
    Thanks in advance for all the help and advises.
    Points will be rewarded.

    Sorry I didn't include that earlier. I'm using Citrix so copy-paste of codes outside Citrix is not allowed. I'll just type a shorter version of my it here.
    data: begin of i_item occurs 0,
               lifnr like ekko-lifnr,
               name1 like-lfa1-name1,
               ebeln like ekpo_ebeln,
               po_dat like ekko-bedat,
               rlwrt like ekko-rlwrt,
               waers like ekko-waers,
               dmbtr like ekko-dmbtr,
             end of i_item.
    data wa_item like line of i_item,
    data: begin of i_header occurs 0,
               lifnr like lfa1-lifnr,
               name1 like lfa1-name1,
               ebeln like ekpo-ebeln,
            end of i_header.
    data wa_header like line of i_header.

  • ALV hierarchy with Smartform

    How can I do a Smartform from an ALV hierarchy? Is this possible?
    Please give me any help...
    Regards.
    Hugo

    Hi, thank for your reply.
    Well... I've a hierarchy alv report with a status bar... It's working properly.
    Now, I want to print a smarform from this report...
    this show the alv ************
    call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        exporting
          i_callback_program = vl_repid
          is_layout                = st_layout
          it_fieldcat               = t_fieldcat[]
          i_tabname_header  = 'T_AUX'
          i_tabname_item     = 'T_OUTPUT'
          is_keyinfo              = st_key
        tables
          t_outtab_header    = t_aux[]
          t_outtab_item       = t_output[]
        exceptions
          program_error      = 1
          others                 = 2.
    My doubt is in the smartform... I can pass 2 tables as parameters???
    -->
      call function l_fm_name
        exporting
          p_gjahr   = p_gjahr
          p_form    = p_form
          p_date_d  = p_date_d
          p_date_h  = p_date_h
          p_nom     = p_nom
        tables
          gt_salida = gt_salida ????  "Table 1
        exceptions
          formatting_error           = 1
          internal_error             = 2
          send_error                 = 3
          user_canceled              = 4
          others                     = 5.
    I'm sorry for my poor english...

  • ALV hierarchy title

    Hi all,
    is it possible to print a different title for each page when you use ALV hierarchy?
    For example I need to print the PO number for each page as thet title.
    Thanks,
    Mel

    Try this..
    ip_confing type ref to CL_SALV_WD_CONFIG_TABLE.
    "set alv table header
    ip_config->if_salv_wd_table_settings~r_header->set_text( 'Test ALV Header functionality' ).
    or
    data: lr_table_settings type ref to if_salv_wd_table_settings.
    data: lr_header type ref to CL_SALV_WD_HEADER.
    lr_table_settings ?= l_value.
    lr_header = lr_table_settings->get_header( ).
    lr_header->set_text( 'FLIGHT LIST SEARCH' ).
    Cheers,
    Kris.

  • Abt alv hierarchy

    my output like this,
         -> india                          123       123
              -->ap                        12          12
                 --->hyd                     24        24
                       @ ampet             1000     1000
                       @ kp                  50         50
                       @ begumpet        1234         1234
    output tree like this.
    plz send me alv hierarchy program blongs to this output.
    giv me reply asap
    thanks n regards
    satya

    Hi Murty please find the following code.If it is useful reward me points.
    TYPE-POOLS: slis.
    TABLES : ekko, ekpo.
    DATA : BEGIN OF i_ekko OCCURS 0,
    ebeln LIKE ekko-ebeln,
    ernam LIKE ekko-ernam,
    bsart LIKE ekko-bsart,
    var1,
    END OF i_ekko.
    DATA : BEGIN OF i_ekpo OCCURS 0,
    ebeln LIKE ekpo-ebeln,
    ebelp LIKE ekpo-ebelp,
    matnr LIKE ekpo-matnr,
    aedat LIKE ekpo-aedat,
    var2,
    END OF i_ekpo.
    DATA : BEGIN OF i_final OCCURS 0,
    ebeln LIKE ekko-ebeln,
    ernam LIKE ekko-ernam,
    bsart LIKE ekko-bsart,
    ebelp LIKE ekpo-ebelp,
    matnr LIKE ekpo-matnr,
    aedat LIKE ekpo-aedat,
    END OF i_final.
    SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN.
    DATA : fcat TYPE slis_t_fieldcat_alv, "FIELDCATALOG(TABLE)
    fcat1 TYPE slis_t_fieldcat_alv, "FIELDCATALOG(TABLE)
    cat TYPE slis_fieldcat_alv. "FIELDCATALOG(WORK AREA)
    DATA : LAYOUT1 TYPE SLIS_LAYOUT_ALV, "LAYOUT 1
    LAYOUT2 TYPE SLIS_LAYOUT_ALV, "LAYOUT 2
    KEY TYPE SLIS_KEYINFO_ALV , "KEY INFORMATION
    GT_EVENT1 TYPE SLIS_T_EVENT.
    START-OF-SELECTION.
    PERFORM GETTING_DATA.
    PERFORM append_field.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = SY-CPROG
    IS_LAYOUT = LAYOUT1
    IT_FIELDCAT = FCAT
    IT_EVENTS = GT_EVENT1
    i_tabname_header = 'I_EKKO'
    i_tabname_item = 'I_EKPO'
    is_keyinfo = KEY
    tables
    t_outtab_header = I_EKKO
    t_outtab_item = I_EKPO.
    *& Form GETTING_DATA
    text
    --> p1 text
    <-- p2 text
    FORM GETTING_DATA .
    SELECT EBELN BSART ERNAM UP TO 100 ROWS
    INTO CORRESPONDING FIELDS OF TABLE I_EKKO
    FROM EKKO
    WHERE EBELN IN S_EBELN.
    SELECT EBELN EBELP MATNR AEDAT
    INTO CORRESPONDING FIELDS OF TABLE I_EKPO
    FROM EKPO
    FOR ALL ENTRIES IN I_EKKO
    WHERE EBELN = I_EKKO-EBELN .
    SORT I_EKKO BY EBELN.
    LOOP AT I_EKKO.
    READ TABLE I_EKPO WITH KEY EBELN = I_EKKO-EBELN.
    IF SY-SUBRC EQ 0.
    MOVE: I_EKKO-EBELN TO I_FINAL-EBELN,
    I_EKKO-BSART TO I_FINAL-BSART,
    I_EKKO-ERNAM TO I_FINAL-ERNAM,
    I_EKPO-EBELP TO I_FINAL-EBELP,
    I_EKPO-MATNR TO I_FINAL-MATNR,
    I_EKPO-AEDAT TO I_FINAL-AEDAT.
    APPEND I_FINAL.
    ENDIF.
    ENDLOOP.
    ENDFORM. " GETTING_DATA
    *& Form APPEND_FIELD
    text
    --> p1 text
    <-- p2 text
    FORM append_field .
    CLEAR cat.
    cat-col_pos = 1.
    cat-fieldname = 'EBELN'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'EBELN'.
    cat-ref_tabname = 'EKKO'.
    cat-key = 'X'. "define field as key
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 2.
    cat-fieldname = 'BSART'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'BSART'.
    cat-ref_tabname = 'EKKO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 3.
    cat-fieldname = 'ERNAM'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'ERNAM'.
    cat-ref_tabname = 'EKKO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 4.
    cat-fieldname = 'EBELP'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'EBELP'.
    cat-ref_tabname = 'EKPO'.
    cat-key = 'X'. "define field as key
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 5.
    cat-fieldname = 'MATNR'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'MATNR'.
    cat-ref_tabname = 'EKPO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 6.
    cat-fieldname = 'AEDAT'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'AEDAT'.
    cat-ref_tabname = 'EKPO'.
    APPEND cat TO fcat.
    CLEAR cat.
    layout1-expand_fieldname = 'VAR1'.
    layout1-lights_fieldname = '3'.
    layout1-lights_tabname = 'I_EKPO'.
    key-header01 = 'EBELN'.
    key-item01 = 'EBELN'.
    ENDFORM. " APPEND_FIELD

  • ALV Hierarchy

    Hi Experts,
    I have Hierarchy report, but i took 2 tables header and item tables, but in my output item table is dispalying but heading is not displaying, is there any setting problem
    and header table heading is gone right side, not displaying properly.
    Please help in this regards.
    Thanks
    Rams

    Hi
    Here i am pasting the code.
    EPORT  /scl/rdfiarr_cust_ageanalys NO STANDARD PAGE HEADING
            LINE-SIZE 255
            LINE-COUNT 100
            MESSAGE-ID /scl/tin_rtr.
    *&  Include           /SCL/RDFIARR_CUST_AGEIANA_TOP
    *TYPE-POOLS declaration
    TYPE-POOLS: slis.
    *TYPES DECLARATION
    TYPES: BEGIN OF ty_bsid,
           kunnr TYPE kunnr,       "Customer Number
           bukrs TYPE bukrs,       "Company code
           zterm TYPE dzterm,       "Payment terms
           gjahr TYPE gjahr,       "Fiscal Year
           dmbtr TYPE dmbtr,       "Amount in Local Currency
           shkzg TYPE shkzg,       "Debit/Credit Indicator
           budat TYPE budat,       "Posting Date in the Document
           augdt TYPE augdt,       "Clearing Date
           bldat TYPE bldat,       "Document Date in Document
           augbl TYPE augbl,       "Document Number of the Clearing Document
           belnr TYPE belnr_d,     "Accounting Document Number
           rebzg TYPE rebzg,       "No.of the Invoice the Transaction Belongs to
           rebzj TYPE rebzj,       "Fiscal Year of the Relevant Invoice
           rebzz TYPE rebzz,       "Line Item in the Relevant Invoice
           waers TYPE waers,       "Currency Key
           gsber TYPE gsber,       "Business area
           vkorg TYPE vkorg,       "Sales Organization
          END OF ty_bsid.
    TYPES: BEGIN OF ty_bsad,
           kunnr TYPE kunnr,       "Customer Number
           bukrs TYPE bukrs,       "Company code
           zterm TYPE dzterm,       "Payment terms
           gjahr TYPE gjahr,       "Fiscal Year
           dmbtr TYPE dmbtr,       "Amount in Local Currency
           shkzg TYPE shkzg,       "Debit/Credit Indicator
           budat TYPE budat,       "Posting Date in the Document
           augdt TYPE augdt,       "Clearing Date
           bldat TYPE bldat,       "Document Date in Document
           augbl TYPE augbl,       "Document Number of the Clearing Doc
           belnr TYPE belnr_d,     "Accounting Document Number
           rebzg TYPE rebzg,       "No. of the Invoice the Trans Belongs to
           waers TYPE waers,       "Currency Key
           gsber TYPE gsber,       "Business area
           vkorg TYPE vkorg,       "Sales Organisation
          END OF ty_bsad.
    TYPES: BEGIN OF ty_cust,
           kunnr TYPE kunnr,        "Customer Number
           vkorg TYPE vkorg,        "Sales Organisaton
           name1 TYPE name1_gp,     "Customer Name
           zterm TYPE dzterm,       "Payment terms
           vwerk TYPE dwerk_ext,    "Delivery Plant
           sal_r TYPE pernr_d,      "Personnel Number (Sales)
           crd_r TYPE pernr_d,      "Personnel Number (Credit)
           ctlpc TYPE ctlpc_cm,     "Credit management: Risk category
           katr1 TYPE katr1,        "Customer Activity Cluster
           klimk TYPE klimk,        "Credit limit
           gsber TYPE gsber,        "Business Area
          END OF ty_cust.
    TYPES: BEGIN OF ty_data,
           bukrs TYPE bukrs,          "Company code
           gjahr TYPE gjahr,          "Fisacal year
           gsber TYPE gsber,          "Business area
           vwerk TYPE dwerk_ext,      "Delivery plant
           zterm TYPE dzterm,         "Payment terms
           bldat TYPE bldat,          "Document Date in Document
           kunnr TYPE kunnr,          "Customer Number
           dmbtr TYPE dmbtr,          "Amount in Local Currency
           name1 TYPE name1_gp,       "Customer name
           sal_r TYPE pernr_d,        "Salres representative
           crd_r TYPE pernr_d,        "Credit representative
           ctlpc TYPE ctlpc_cm,       "Credit management: Risk category
           katr1 TYPE katr1,          "Customer Activity Cluster
           waers TYPE waers,          "Currency Key
           vkorg TYPE vkorg,          "Sales organisation
          END OF ty_data.
    TYPES: BEGIN OF ty_knvv,
           kunnr TYPE kunnr,          "Customer number
           vwerk TYPE vwerk,          "Palnt
           vkorg TYPE vkorg,          "Sales organisation
           zterm TYPE dzterm,         "Payment terms
           END OF ty_knvv.
    TYPES: BEGIN OF ty_knvp,
           parvw  TYPE parvw,        "Partner Function
           pernr  TYPE pernr_d,      "Personnel Number
          END OF ty_knvp.
    TYPES: BEGIN OF ty_knb1,
           kunnr TYPE kunnr,          "Customer number
           bukrs TYPE bukrs,          "Company Code
           zterm TYPE dzterm,         "Payment terms
           END OF ty_knb1.
    TYPES: BEGIN OF ty_kna1,
           kunnr TYPE kunnr,          "Customer number
           name1 TYPE name1_gp,       "Customer name
           katr1 TYPE katr1,          "Customer Activity Cluster
           END OF ty_kna1.
    TYPES : BEGIN OF ty_klimk,
            kunnr TYPE kunnr,        "Customer number
            kkber TYPE kkber,        "Credit control area
            ctlpc TYPE ctlpc_cm,     "Credit management: Risk category
            klimk TYPE klimk,        "Customer's credit
            END OF ty_klimk.
    TYPES: BEGIN OF ty_zterm,
             zterm TYPE dzterm,   "Terms of Payment Key
             zfael TYPE dzfael,   "Calendar Day for the Baseline Date
                                            "for Payment
             zmona TYPE dzmona,   "Additional Months
             zstg1 TYPE dzstg1_052,
             ztag1 TYPE dztage,   "Days from Baseline Date for Payment
             ztag2 TYPE dztage,   "Days from Baseline Date for Payment
             ztag3 TYPE dztage,   "Days from Baseline Date for Payment
             ztag4 TYPE dztage,   "Days from Baseline Date for Payment
            END OF ty_zterm.
    TYPES: BEGIN OF ty_analyhead,
           kunnr   TYPE kunnr,    "customer number
           bukrs   TYPE bukrs,    "Company code
           zterm   TYPE dzterm,   "Payment terms
           total   TYPE dmbtr,    "Total
           expand(1) TYPE c,                "Expand
           END OF  ty_analyhead.
    TYPES: BEGIN OF ty_analysis,
           bukrs   TYPE bukrs,    "Company code
           vwerk   TYPE vwerk,    "Delivery Plant
           sal_r   TYPE pernr_d,  "Sales Representative
           crd_r   TYPE pernr_d,  "Credit Representative
           gsber   TYPE gsber,    "business area
           zterm   TYPE dzterm,   "Payment terms
           kunnr   TYPE kunnr,    "customer number
           name1   TYPE name1_gp, "Customer name
           total   TYPE dmbtr,    "Total
           dmbtr1  TYPE dmbtr,                                  "Bucket 1
           dmbtr2  TYPE dmbtr,                                  "Bucket 2
           dmbtr3  TYPE dmbtr,                                  "Bucket 3
           dmbtr4  TYPE dmbtr,                                  "Bucket 4
           dmbtr5  TYPE dmbtr,    "Bucket
           crlimit TYPE dmbtr,    "Credit limit
           waers   TYPE waers,    "Currency
           END OF   ty_analysis.
    *variable declaration
    DATA: v_bukrs TYPE bukrs,       "Company Code
          v_kunnr TYPE kunnr,       "Customer Number
          v_pernr TYPE pernr_d,     "Personnel Number
          v_zterm TYPE dzterm,      "Payment Terms
          v_ctlpc TYPE ctlpc_cm,    "Credit management: Risk category
          v_budat TYPE budat,       "Posting Date in the Document
          v_gjahr TYPE gjahr,       "Fiscal Year
          v_bldat TYPE bldat.       "Document Date in Document
    DATA: v_m1(2) TYPE c VALUE '-1',
          v_m2(2) TYPE c VALUE '-2',
          v_m3(2) TYPE c VALUE '-3',
          v_m4(2) TYPE c VALUE '-4'.
    DATA: v_current TYPE sy-datum,
          v_month1  TYPE sy-datum,
          v_month2  TYPE sy-datum,
          v_month3  TYPE sy-datum,
          v_month4  TYPE sy-datum.
    DATA: w_akont TYPE akont,
          cc_waers TYPE waers,
          cc_kkber TYPE kkber.
    DATA: wa_bsid1  TYPE ty_bsid,
          found TYPE c,
          idx TYPE sy-tabix.
    DATA: v_field(10) TYPE c,
          v_days(4)   TYPE c VALUE 'days',
          v_days2(3) TYPE c,
          v_days3(3) TYPE c,
          v_days4(3) TYPE c,
          v_days5(3) TYPE c.
    DATA: v_budat1 TYPE bsad-budat,
          v_bldat1 TYPE bsad-bldat,
          wa_bsad1 TYPE ty_bsad,
          idx1 TYPE sy-tabix,
          found1 TYPE c.
    CONSTANTS  DECLARATION
    CONSTANTS:  c_0       TYPE   c VALUE '0',
                c_1       TYPE   c VALUE '1',
                c_2       TYPE   c VALUE '2',
                c_3       TYPE   c VALUE '3',
                c_4       TYPE   c VALUE '4',
                c_5       TYPE   c VALUE '5',
                c_6       TYPE   c VALUE '6',
                c_7       TYPE   c VALUE '7',
                c_8       TYPE   c VALUE '8',
                c_9       TYPE   c VALUE '9',
                c_11(2)   TYPE   c VALUE '11',
                c_13(2)   TYPE   c VALUE '13',
                c_14(2)   TYPE   c VALUE '14',
                c_15(2)   TYPE   c VALUE '15',
                c_16(2)   TYPE   c VALUE '16',
                c_17(2)   TYPE   c VALUE '17',
                c_19(2)   TYPE   c VALUE '19',
                c_31(2)   TYPE   c VALUE '31',
                c_40(2)   TYPE   c VALUE '40',
                c_45(2)   TYPE   c VALUE '45',
                c_60(2)   TYPE   c VALUE '60',
                c_75(2)   TYPE   c VALUE '75',
                c_164(3)  TYPE   c VALUE '164',
                c_191(3)  TYPE   c VALUE '191',
                c_x       TYPE   c VALUE 'X',
                c_spc     TYPE   c VALUE ' ',
                c_hyp     TYPE   c VALUE '-',
                c_dot     TYPE   c VALUE '.',
                c_td      TYPE   c VALUE ':',
                c_h       TYPE   c VALUE 'H',
                c_zr(2)   TYPE   c VALUE 'ZR',
                c_kb(2)   TYPE   c VALUE 'KB',
                c_ic1(4) TYPE   c VALUE '&IC1'.
    *Internal table declaration
    DATA : i_bsid      TYPE STANDARD TABLE OF ty_bsid,
           i_bsad      TYPE STANDARD TABLE OF ty_bsad,
           i_cust      TYPE STANDARD TABLE OF ty_cust,
           i_data      TYPE STANDARD TABLE OF ty_data,
           i_knvp      TYPE STANDARD TABLE OF ty_knvp,
           i_zterm     TYPE STANDARD TABLE OF ty_zterm,
           i_analysis  TYPE STANDARD TABLE OF ty_analysis,
           i_analysis2  TYPE STANDARD TABLE OF ty_analysis,
           i_analyhead  TYPE STANDARD TABLE OF ty_analyhead,
           i_analytot  TYPE STANDARD TABLE OF ty_analysis,
           i_knvv      TYPE STANDARD TABLE OF ty_knvv,
           i_klimk     TYPE STANDARD TABLE OF ty_klimk,
           i_knb1      TYPE STANDARD TABLE OF ty_knb1,
           i_kna1      TYPE STANDARD TABLE OF ty_kna1.
    Work Area declaration
    DATA:
          wa_bsid     TYPE ty_bsid,
          wa_bsad     TYPE ty_bsad,
          wa_cust     TYPE ty_cust,
          wa_data     TYPE ty_data,
          wa_knvp     TYPE ty_knvp,
          wa_zterm    TYPE ty_zterm,
          wa_analysis TYPE ty_analysis,
          wa_analyhead TYPE ty_analyhead,
          wa_analysis2 TYPE ty_analysis,
          wa_analytot TYPE ty_analysis,
          wa_knvv     TYPE ty_knvv,
          wa_kna1     TYPE ty_kna1,
          wa_knb1     TYPE ty_knb1,
          wa_klimk    TYPE ty_klimk.
    *ALV declaration
    DATA:  i_fldcat    TYPE slis_t_fieldcat_alv,     "Field catalog for ALV
           wa_fldcat   TYPE slis_fieldcat_alv,       "Field catalog for ALV
           i_sort      TYPE slis_t_sortinfo_alv,     "SLIS
           wa_sort     TYPE slis_sortinfo_alv,   "Globale Typen für generische
           g_repid     TYPE sy-repid,
           rs_selfield TYPE slis_selfield.            "Cursor position
    DATA : wa_event    TYPE slis_alv_event, "Globale Typen für generische Listbausteine
          i_keyinfo   TYPE slis_keyinfo_alv,    "Globale Typen für generische Listbausteine
          i_layout    TYPE slis_layout_alv, "Globale Typen für generische Listbausteine
          v_repid TYPE sy-repid,
          i_event     TYPE slis_t_event,         "SLIS
          i_listhead  TYPE slis_t_listheader,    "SLIS
          wa_listhead TYPE slis_listheader.      "Globale Typen für generische Listbausteine
    SELECTION-SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK bl11 WITH FRAME TITLE text-001 .
    SELECT-OPTIONS: s_bukrs FOR  v_bukrs OBLIGATORY,
                    s_akont FOR w_akont.
    SELECTION-SCREEN END OF BLOCK bl11.
    SELECTION-SCREEN BEGIN OF BLOCK bl12 WITH FRAME TITLE text-002 .
    SELECT-OPTIONS: s_kunnr FOR  v_kunnr,
                    s_sal_r FOR  v_pernr MATCHCODE OBJECT prem,
                    s_crd_r FOR  v_pernr MATCHCODE OBJECT prem,
                    s_zterm FOR  v_zterm,
                    s_ctlpc FOR  v_ctlpc.
    SELECTION-SCREEN END OF BLOCK bl12.
    SELECTION-SCREEN BEGIN OF BLOCK bl13 WITH FRAME TITLE text-003 .
    SELECT-OPTIONS:
                    s_budat FOR v_budat,             "Posting date
                    s_gjahr FOR v_gjahr.             "Fiscal year
    PARAMETERS      p_bldat LIKE v_bldat OBLIGATORY. "Document date
    SELECTION-SCREEN END OF BLOCK bl13.
    SELECTION-SCREEN BEGIN OF BLOCK bl14 WITH FRAME TITLE text-004 .
    PARAMETERS: pt_def RADIOBUTTON GROUP pmt,   "Default
                pt_man RADIOBUTTON GROUP pmt.   "Manual Override
    PARAMETERS: val1(3) TYPE n.                                 "Bucket1
    SELECTION-SCREEN COMMENT 60(10) text-006 FOR FIELD val1.
    PARAMETERS: val2(3) TYPE n,                                 "Bucket 2
                val3(3) TYPE n,                                 "Bucket 3
                val4(3) TYPE n.                                 "Bucket 4
    SELECTION-SCREEN END OF BLOCK bl14.
    SELECTION-SCREEN BEGIN OF BLOCK bl15 WITH FRAME TITLE text-005 .
    PARAMETERS: age_cc  AS CHECKBOX DEFAULT  'X',  "Compamy Code
                age_ccc AS CHECKBOX DEFAULT  'X',  "Companycode&Customer
                age_sp  AS CHECKBOX DEFAULT  'X',  "Sales Rep
                age_cr  AS CHECKBOX DEFAULT  'X',  "Credit Rep
                age_cu  AS CHECKBOX DEFAULT  'X'.  "Customer
    SELECTION-SCREEN END OF BLOCK bl15.
    *&   INITIALIZATION                                                    *
    INITIALIZATION.
      PERFORM initialization.
    *&   AT SELECTION-SCREEN OUTPUT.                                       *
    AT SELECTION-SCREEN.
    *&   PERFORM FOR FIELD VALIDATION.                                     *
    *****Validation for Compnay code
      PERFORM validate_company_code.
    *****Validation for Customer
      PERFORM validate_customer.
    *****Validation for check boxes
      PERFORM validate_options.
    EVENT  TOP-OF-PAGE                                                               *
    TOP-OF-PAGE.
    ***PERFORM TOPOFPAGE FROM BUILD_EVENT_TAB.
      PERFORM topofpage.
    *START-OF-SELECTION
    START-OF-SELECTION.
    ****Read data from t001,
      PERFORM read_t001.
    ****Get data from BSID
      PERFORM read_bsid.
    ****Get the vkorg from knvv knb1  into BSID(open items)
      IF NOT i_bsid[] IS INITIAL.
    Get data into Payment terms in I_BSID
        PERFORM get_data_payment_bsid.
      ENDIF.
    ****Data data from BSAD (cleared items)
      PERFORM read_bsad.
      IF NOT i_bsad[] IS INITIAL.
    Get data into Payment terms in I_BSAD
        PERFORM get_data_payment_bsad.
      ENDIF.
    *****Consolidation of data
      PERFORM consolidate_data.
    *****Buckets caliculations
      PERFORM print_age_analysis.
    Get the subtotals only
    PERFORM get_data_totals_KNB1.
      PERFORM get_data_totals.
    END-OF-SELECTION                                                  *
    *END-OF-SELECTION.
      IF NOT i_analysis IS INITIAL.
    ***PERFORM FOR FIELD CATALOG.
    ***PERFORM FOR BUILD KEYINFO.
          PERFORM build_keyinfo.
    ***PERFORM FOR BUILD EVENT
          PERFORM build_event_tab.
    ***PERFORM FOR BUILD LAYOUT
          PERFORM build_layout.
    ***PERFORM TO DISPLAY THE OUTPUT
        IF pt_def = c_x.
          PERFORM build_field_catlog_header.
          PERFORM build_field_catlog_item.
        ELSE.
          PERFORM build_field_catlog_header.
          PERFORM build_field_catlog_item2.
        ENDIF.
          PERFORM display_data.
      ELSE.
        MESSAGE i001.
       LEAVE LIST-PROCESSING.
      ENDIF.
    *&  Include           /SCL/RDFIARR_CUST_AGEIANA_FORM
    *&      Form  read_t001
    FORM read_t001.
      CLEAR cc_waers.
      READ TABLE s_bukrs INDEX 1 TRANSPORTING NO FIELDS.
      CLEAR cc_kkber.
      SELECT SINGLE waers kkber INTO (cc_waers, cc_kkber)
                                FROM t001 WHERE bukrs = s_bukrs-low.
    ENDFORM.                                                    "read_t001
    *&      Form  read_bsid - Read the data into I_BSID
    FORM read_bsid.
      SELECT kunnr
             name1
             katr1
             FROM kna1
             INTO TABLE i_kna1
             WHERE kunnr IN s_kunnr.
      IF sy-subrc = c_0.
        SORT i_kna1 BY kunnr.
        IF s_zterm IS INITIAL.
    **Get Payment term from KNB1
          SELECT kunnr
                 bukrs
                 zterm
                 FROM
                 knb1
                 INTO TABLE i_knb1
                 FOR ALL ENTRIES IN i_kna1
                 WHERE kunnr = i_kna1-kunnr
                   AND zterm  IN s_zterm
                   AND bukrs IN s_bukrs.
          IF sy-subrc = c_0.
            SELECT kunnr
                  bukrs
                  zterm
                  gjahr
                  dmbtr
                  shkzg
                  augdt
                  budat
                  bldat
                  augbl
                  belnr
                  rebzg
                  rebzz
                  rebzj
                  gsber
                  waers
                  INTO TABLE i_bsid FROM bsid
                  FOR ALL ENTRIES IN i_knb1
                   WHERE kunnr = i_knb1-kunnr
                     AND zterm = i_knb1-zterm
                     AND bukrs IN s_bukrs
                     AND gjahr IN s_gjahr
                     AND budat IN s_budat
                     AND hkont IN s_akont.
            IF sy-subrc = c_0.
              SORT i_bsid BY kunnr.
            ENDIF.
          ENDIF.
        ELSE.
    *Get the payment term from BSID
          SELECT kunnr
               bukrs
               zterm
               gjahr
               dmbtr
               shkzg
               augdt
               budat
               bldat
               augbl
               belnr
               rebzg
               rebzz
               rebzj
               gsber
               waers
               INTO TABLE i_bsid FROM bsid
               FOR ALL ENTRIES IN i_kna1
                WHERE kunnr = i_kna1-kunnr
                  AND zterm IN s_zterm
                  AND bukrs IN s_bukrs
                  AND gjahr IN s_gjahr
                  AND budat IN s_budat
                  AND hkont IN s_akont.
          IF sy-subrc = c_0.
            SORT i_bsid BY kunnr.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " read_bsid
    *&      Form  Get_data_payment_BSID
          text
    -->  p1        text
    <--  p2        text
    FORM get_data_payment_bsid .
    ***get vkor from knvv
      SELECT   kunnr
               vwerk
               vkorg
               zterm
               FROM knvv INTO TABLE i_knvv
               FOR ALL ENTRIES IN i_bsid
               WHERE kunnr = i_bsid-kunnr
               AND   zterm IN s_zterm.
      SORT i_knvv BY kunnr zterm.
    *********15.1.2008.....
       IF s_zterm IS INITIAL.
         SORT i_knb1 BY kunnr zterm bukrs.
         READ TABLE i_knb1 INTO wa_knb1 WITH KEY
                                  kunnr = wa_bsid-kunnr
                                  zterm = wa_bsid-zterm
                                  bukrs = wa_bsid-bukrs
                                  BINARY SEARCH.
         IF sy-subrc = c_0.
           wa_bsid-zterm = wa_knb1-zterm.
           MODIFY i_bsid FROM wa_bsid INDEX sy-tabix.
    *else.
    ******end 15.1.2008
      LOOP AT i_bsid INTO wa_bsid.
        READ TABLE i_knvv INTO wa_knvv WITH KEY
                                   kunnr = wa_bsid-kunnr
                                   zterm = wa_bsid-zterm
                                   BINARY SEARCH.
        IF sy-subrc = c_0.
          wa_bsid-vkorg = wa_knvv-vkorg.
          MODIFY i_bsid FROM wa_bsid.
          CLEAR wa_knvv.
        ENDIF.
        CLEAR: wa_bsid, wa_knvv.
      ENDLOOP.
    endif.
    endif.
    ENDFORM.                    " Get_data_payment_BSID
    *&      Form  read_bsad  - Read the data into I_BSAD
    FORM read_bsad.
    **Get the customer from KNB1.
      IF s_zterm IS INITIAL.
        SELECT kunnr
               bukrs
               zterm
               FROM
               knb1
               INTO TABLE i_knb1
               FOR ALL ENTRIES IN i_kna1
               WHERE kunnr = i_kna1-kunnr
                 AND zterm  IN s_zterm
                 AND bukrs IN s_bukrs.
        IF sy-subrc =  c_0.
          SELECT kunnr
              bukrs
              zterm
              gjahr
              dmbtr
              shkzg
              budat
              bldat
              augdt
              augbl
              belnr
              rebzg
              waers
              gsber
              INTO TABLE i_bsad FROM bsad
              FOR ALL ENTRIES IN i_knb1
               WHERE kunnr = i_knb1-kunnr
                      AND zterm  = i_knb1-zterm
                      AND bukrs = i_knb1-bukrs.
        ENDIF.
      ELSE.
    *Get the payment term from BSID
        SELECT kunnr
               bukrs
               zterm
               gjahr
               dmbtr
               shkzg
               budat
               bldat
               augdt
               augbl
               belnr
               rebzg
               waers
               gsber
               INTO TABLE i_bsad FROM bsad
              FOR ALL ENTRIES IN i_knb1
              WHERE kunnr = i_knb1-kunnr
                 WHERE bukrs  IN s_bukrs
                AND zterm IN s_zterm
                  AND kunnr  IN s_kunnr
                  AND gjahr  IN s_gjahr
                  AND budat  IN s_budat
                  AND augdt  LE p_bldat
                  AND hkont  IN s_akont.
      ENDIF.
    *endif.
    ENDFORM.                    " read_bsad
    *&      Form  get_data_payment_bsad
          text
    -->  p1        text
    <--  p2        text
    FORM get_data_payment_bsad .
      SORT i_knvv BY kunnr zterm.
    ***********15.1.2008
    LOOP AT i_bsad INTO wa_bsad.
       IF s_zterm IS INITIAL.
         SORT i_knb1 BY kunnr zterm bukrs.
         READ TABLE i_knb1 INTO wa_knb1 WITH KEY
                                  kunnr = wa_bsad-kunnr
                                  zterm = wa_bsad-zterm
                                  bukrs = wa_bsad-bukrs
                                  BINARY SEARCH.
         IF sy-subrc = c_0.
           wa_bsad-zterm = wa_knb1-zterm.
           MODIFY i_bsad FROM wa_bsad INDEX sy-tabix.
    end 15.1.2008
    *else.
      LOOP AT i_bsad INTO wa_bsad.
        SORT i_knb1 BY kunnr zterm bukrs.
        READ TABLE i_knvv INTO wa_knvv WITH KEY
                   kunnr = wa_bsad-kunnr
                   zterm = wa_bsad-zterm
                   BINARY SEARCH.
        IF sy-subrc = c_0.
          wa_bsad-vkorg = wa_knvv-vkorg.
          MODIFY i_bsad FROM wa_bsad.
          CLEAR wa_knvv.
        ENDIF.
    *endif.
    *endif.
      ENDLOOP.
    ENDFORM.                    " get_data_payment_bsad
    *&      Form  consolidate_data
    FORM consolidate_data.
      REFRESH i_cust.
      LOOP AT i_bsid INTO wa_bsid.
        CLEAR wa_cust.
        wa_cust-kunnr = wa_bsid-kunnr.
        wa_cust-vkorg = wa_bsid-vkorg.
        COLLECT  wa_cust INTO i_cust.
      ENDLOOP.
      LOOP AT i_bsad INTO wa_bsad.
        CLEAR wa_cust.
        wa_cust-kunnr = wa_bsad-kunnr.
        wa_cust-vkorg = wa_bsad-vkorg.
        COLLECT wa_cust INTO i_cust.
      ENDLOOP.
      PERFORM customer_information.
      PERFORM customer_payment_terms.
      PERFORM change_payment_ageing_date.
      PERFORM collect_bsid.
      PERFORM collect_bsad.
      PERFORM exclude_from_data.
      PERFORM age_analysis.
    ENDFORM.                    " consolidate_data
    *&      Form  customer_payment_terms
    FORM customer_payment_terms.
      CLEAR wa_zterm.
      IF pt_man = c_x.
        wa_zterm-zterm = s_zterm-low.
        wa_zterm-ztag1 = val1.
        wa_zterm-ztag2 = val2.
        wa_zterm-ztag3 = val3.
        wa_zterm-ztag4 = val4.
        APPEND wa_zterm TO i_zterm.
      ELSE.
        SELECT zterm
               zfael
               zmona
               zstg1
               ztag1
               ztag2
               ztag3
               FROM t052 INTO TABLE i_zterm
               WHERE zterm IN s_zterm.
      ENDIF.
    ENDFORM.                    " customer_payment_terms
    *&      Form  customer_information
    FORM customer_information.
      SELECT kunnr ctlpc kkber klimk  INTO TABLE i_klimk
                                      FROM knkk
                                      WHERE kunnr IN s_kunnr
                                        AND kkber =  cc_kkber.
      REFRESH i_zterm.
      IF sy-subrc = c_0.
        SORT i_kna1 BY kunnr
                       name1
                       katr1.
        LOOP AT i_cust INTO wa_cust.
          CLEAR : wa_knvv, wa_kna1.
          READ TABLE i_kna1 INTO wa_kna1 WITH KEY
                              kunnr   = wa_cust-kunnr BINARY SEARCH.
          IF sy-subrc = c_0.
            wa_cust-name1 = wa_kna1-name1.
            wa_cust-katr1 = wa_kna1-katr1.
            MODIFY i_cust FROM wa_cust.
          ENDIF.
    **Get the payment term into i_cust into
          SORT i_bsid BY kunnr
                       zterm.
          CLEAR wa_bsid.
          READ TABLE i_bsid INTO wa_bsid WITH KEY
                                  kunnr = wa_cust-kunnr BINARY SEARCH.
          IF sy-subrc = c_0.
            wa_cust-zterm = wa_bsid-zterm.
            MODIFY i_cust FROM wa_cust.
          ENDIF.
          SORT i_knvv BY kunnr
                         vkorg
                         vwerk.
          READ TABLE i_knvv INTO wa_knvv WITH KEY
                                          vkorg   = wa_cust-vkorg
                                          kunnr   = wa_cust-kunnr
                                          zterm   = wa_cust-zterm
                                  BINARY SEARCH.
          IF sy-subrc = c_0.
            wa_cust-vwerk = wa_knvv-vwerk.
            MODIFY i_cust FROM wa_cust.
          ENDIF.
          SORT i_klimk BY kunnr
                          klimk.
          READ TABLE i_klimk INTO wa_klimk WITH KEY
                                                kunnr   = wa_cust-kunnr
                                        BINARY SEARCH.
          wa_cust-klimk = wa_klimk-klimk.
          MODIFY i_cust FROM wa_cust.
        ENDLOOP.
      ENDIF.
    ***get partner details
      SELECT parvw pernr INTO TABLE i_knvp
               FROM knvp FOR ALL ENTRIES IN i_cust
               WHERE  kunnr  = i_cust-kunnr
                 AND vkorg   = i_cust-vkorg
                 AND ( parvw = c_zr OR parvw = c_kb ).
      IF sy-subrc = c_0.
        LOOP AT i_knvp INTO wa_knvp.
          CASE wa_knvp-parvw.
            WHEN c_zr.
              wa_cust-sal_r = wa_knvp-pernr.
            WHEN c_kb.
              wa_cust-crd_r = wa_knvp-pernr.
          ENDCASE.
          APPEND wa_cust TO i_cust.
        ENDLOOP.
      ENDIF.
      REFRESH i_knvp.
    ENDFORM.                    " customer_information
    *&      Form  collect_bsid
    FORM collect_bsid.
      SORT i_cust BY kunnr
                     vkorg.
      LOOP AT i_bsid INTO wa_bsid.
        MOVE-CORRESPONDING wa_bsid TO wa_data.
        CLEAR wa_cust.
        READ TABLE i_cust INTO wa_cust WITH KEY kunnr = wa_bsid-kunnr
                                                zterm = wa_bsid-zterm
                                                vkorg = wa_bsid-vkorg
                                        BINARY SEARCH.
        "gsber = wa_bsid-gsber.
        IF sy-subrc = c_0.
          MOVE-CORRESPONDING wa_cust TO wa_data.
        ENDIF.
        IF wa_bsid-shkzg = c_h.
          wa_data-dmbtr = wa_data-dmbtr * - c_1.
        ENDIF.
       APPEND wa_data TO i_data.
        COLLECT wa_data INTO i_data.
        CLEAR: wa_bsid, wa_data.
      ENDLOOP.
    ENDFORM.                    " collect_bsid
    *&      Form  collect_bsad
    FORM collect_bsad.
      SORT i_cust BY kunnr
                     vkorg.
      LOOP AT i_bsad INTO wa_bsad.
        MOVE-CORRESPONDING wa_bsad TO wa_data.
        CLEAR wa_cust.
        READ TABLE i_cust INTO wa_cust WITH KEY  kunnr  = wa_bsad-kunnr
                                                 zterm  = wa_bsad-zterm
                                                 vkorg  = wa_bsad-vkorg
                                         BINARY SEARCH .
        IF sy-subrc = c_0.
          MOVE-CORRESPONDING wa_cust TO wa_data.
        ENDIF.
        IF wa_bsad-shkzg = c_h.
          wa_data-dmbtr = wa_data-dmbtr * - c_1.
        ENDIF.
       APPEND wa_data TO i_data.
        COLLECT wa_data INTO i_data.
        CLEAR: wa_bsad, wa_data.
      ENDLOOP.
    ENDFORM.                    " collect_bsad
    *&      Form  exclude_from_data
    FORM exclude_from_data.
      LOOP AT i_data INTO wa_data.
        IF NOT wa_data-zterm IN s_zterm.
          DELETE i_data INDEX sy-tabix.
          CONTINUE.
        ENDIF.
        IF wa_data-dmbtr = c_0.
          DELETE i_data INDEX sy-tabix.
          CONTINUE.
        ENDIF.
        IF NOT wa_data-sal_r IN s_sal_r.
          DELETE i_data INDEX sy-tabix.
          CONTINUE.
        ENDIF.
        IF NOT wa_data-crd_r IN s_crd_r.
          DELETE i_data INDEX sy-tabix.
          CONTINUE.
        ENDIF.
        IF NOT wa_data-ctlpc IN s_ctlpc.
          DELETE i_data INDEX sy-tabix.
          CONTINUE.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " exclude_from_data
    **&      Form  age_analysis
    FORM age_analysis.
      DATA: ztag(5) TYPE n.
      DATA: v_date LIKE sy-datum.
      PERFORM determine_bucket_dates.
      REFRESH i_analysis.
      LOOP AT i_data INTO wa_data.
        wa_data-waers = cc_waers.
        MODIFY i_data FROM wa_data.
        CLEAR wa_analysis.
        wa_analysis-zterm = wa_data-zterm.
        IF age_cc = c_x.
          wa_analysis-bukrs = wa_data-bukrs.
        ENDIF.
        IF age_sp = c_x.
          wa_analysis-sal_r = wa_data-sal_r.
        ENDIF.
        IF age_cr  = c_x.
          wa_analysis-crd_r = wa_data-crd_r.
        ENDIF.
        SORT i_kna1 BY kunnr.
        READ TABLE i_kna1 INTO wa_kna1 WITH KEY kunnr = wa_data-kunnr.
        IF sy-subrc = c_0.
          IF age_cu = c_x.
            wa_analysis-kunnr =  wa_data-kunnr.
            wa_analysis-name1 =  wa_kna1-name1.
          ENDIF.
          IF age_ccc = c_x.
            wa_analysis-kunnr =  wa_data-kunnr.
            wa_analysis-bukrs =  wa_data-bukrs.
            wa_analysis-name1 =  wa_kna1-name1.
          ENDIF.
        ENDIF.
    Age
        SORT i_zterm BY zterm.
        READ TABLE i_zterm INTO wa_zterm WITH KEY zterm = wa_data-zterm
                                         BINARY SEARCH.
    if the customer has a payment terms that is based on the end of the
    month, determine the "new" document date and then the new intervals.
        IF wa_zterm-zfael = c_31.
          CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
            EXPORTING
              day_in            = wa_data-bldat
            IMPORTING
              last_day_of_month = v_date.
          wa_zterm-ztag1 = v_date+6(2).
          v_date = wa_data-bldat + v_date+6(2).
          CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
            EXPORTING
              day_in            = v_date
            IMPORTING
              last_day_of_month = v_date.
          wa_zterm-ztag2 = v_date+6(2) + wa_zterm-ztag1.
          v_date = v_date + 1.
          CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
            EXPORTING
              day_in            = v_date
            IMPORTING
              last_day_of_month = v_date.
          wa_zterm-ztag3 = v_date+6(2) + wa_zterm-ztag2.
          v_date = v_date + 1.
          CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
            EXPORTING
              day_in            = v_date
            IMPORTING
              last_day_of_month = v_date.
          wa_zterm-ztag4 = v_date+6(2) + wa_zterm-ztag3.
        ENDIF.
        ztag = p_bldat - wa_data-bldat.
        IF wa_zterm-zfael <> c_31.
          IF ztag LE wa_zterm-ztag1.
            wa_analysis-dmbtr1 = wa_data-dmbtr.
          ELSEIF  ztag LE wa_zterm-ztag2.
            wa_analysis-dmbtr2 = wa_data-dmbtr.
          ELSEIF  ztag LE wa_zterm-ztag3.
            wa_analysis-dmbtr3 = wa_data-dmbtr.
          ELSEIF  ztag LE wa_zterm-ztag4.
            wa_analysis-dmbtr4 = wa_data-dmbtr.
          ELSE.
            wa_analysis-dmbtr5 = wa_data-dmbtr.
          ENDIF.
        ELSE.
        ZFAEL value 31 identifies the calendar month ageing
        for Y30/Y31 compare document dates to bucket dates
          IF wa_data-bldat GE v_current.
            wa_analysis-dmbtr1 = wa_data-dmbtr.
          ELSEIF  wa_data-bldat GE v_month1.
            wa_analysis-dmbtr2 = wa_data-dmbtr.
          ELSEIF  wa_data-bldat GE v_month2.
            wa_analysis-dmbtr3 = wa_data-dmbtr.
          ELSEIF  wa_data-bldat GE v_month3.
            wa_analysis-dmbtr4 = wa_data-dmbtr.
          ELSE.
            wa_analysis-dmbtr5 = wa_data-dmbtr.
          ENDIF.
        ENDIF.
        wa_analysis-total = wa_analysis-total + wa_data-dmbtr.
        wa_analysis-waers = wa_data-waers.
        APPEND wa_analysis TO i_analysis.
      ENDLOOP.
    ENDFORM.                    " age_analysis
    *&      Form  print_age_analysis
    FORM print_age_analysis.
      SORT i_analysis BY
             bukrs
             vwerk
             zterm
             kunnr.
    ***15.1.08
    IF NOT s_zterm IS INITIAL.
      LOOP AT i_analysis INTO wa_analysis.
        IF wa_analysis-dmbtr1 = c_0 AND
             wa_analysis-dmbtr2 = c_0 AND
             wa_analysis-dmbtr3 = c_0 AND
             wa_analysis-dmbtr4 = c_0 AND
             wa_analysis-dmbtr5 = c_0.
          DELETE i_analysis INDEX sy-tabix.
        ENDIF.
        CLEAR wa_cust.
        READ TABLE i_cust INTO wa_cust WITH KEY
                                       kunnr = wa_analysis-kunnr
                                       BINARY SEARCH.
        IF sy-subrc = c_0.
          wa_analysis-crlimit = wa_cust-klimk.
          MODIFY i_analysis FROM wa_analysis .
          DELETE i_cust INDEX sy-tabix.
        ELSE.
          wa_analysis-crlimit = c_0.
        ENDIF.
      ENDLOOP.
    *******15.1.08.
       DATA : v_sum TYPE dmbtr.
       DATA : v_zterm TYPE dzterm.
       SELECT SINGLE zterm table knb1 upto 1 row INTO v_zterm.
    ELSE.
       i_analysis2[] = i_analysis[].
       LOOP AT i_analysis2 INTO wa_analysis2.
         v_sum = v_sum + wa_analysis2-total.
       ENDLOOP.
       READ TABLE i_analysis2 INTO wa_analysis2
        endif.
    ENDFORM.                    " print_age_analysis
    *******FORM determine_bucket_dates.
    FORM determine_bucket_dates.
    determine 1st day of current period
      v_current = p_bldat.
      PERFORM get_last_day_of_month CHANGING v_current.
      ADD  1 TO v_current.
      PERFORM go_back_months CHANGING v_current v_m1.
    determine 1st day of month 1 (30)
      v_month1 = v_current.
      PERFORM go_back_months CHANGING v_month1 v_m1.
    determine 1st day of month 2 (60)
      v_month2 = v_current.
      PERFORM go_back_months CHANGING v_month2 v_m2.
    determine 1st day of month 3 (90)
      v_month3 = v_current.
      PERFORM go_back_months CHANGING v_month3 v_m3.
    determine 1st day of month 4 (120)
      v_month4 = v_current.
      PERFORM go_back_months CHANGING v_month4 v_m4.
    ENDFORM.                    "determine_bucket_dates
          FORM get_last_day_of_month                                    *
    FORM get_last_day_of_month CHANGING p_date TYPE any.
      CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
        EXPORTING
          day_in            = p_date
        IMPORTING
          last_day_of_month = p_date.
    ENDFORM.                    "get_last_day_of_month
          FORM go_back_months                                           *
    FORM go_back_months CHANGING p_date TYPE any
                                 months TYPE any.
      DATA: olddate TYPE sy-datum,
            newdate TYPE sy-datum.
      olddate = p_date.
      DATA:       BEGIN OF dat,
                  jjjj(4) TYPE c ,
                  mm(2) TYPE c,
                  tt(2) TYPE c ,
                  END OF dat,
                  BEGIN OF hdat,
                  jjjj(4) TYPE c ,
                  mm(2) TYPE c,
                  tt(2) TYPE c,
                  END OF hdat,
                  newmm TYPE p,
                  diffjjjj TYPE p.
      WRITE:  olddate+0(4) TO dat-jjjj,
              olddate+4(2) TO  dat-mm,
              olddate+6(2) TO  dat-tt.
      diffjjjj =   ( dat-mm + months - 1 ) DIV 12.
      newmm    =   ( dat-mm + months - 1 ) MOD 12 + 1.
      dat-jjjj = dat-jjjj +  diffjjjj.
      IF newmm < 10.
        WRITE '0' TO  dat-mm+0(1).
        WRITE newmm TO  dat-mm+1(1).
      ELSE.
        WRITE newmm TO  dat-mm.
      ENDIF.
      IF dat-tt > '28'.
        hdat-tt = '01'.
        newmm   = ( dat-mm  )  MOD 12 + 1.
        hdat-jjjj = dat-jjjj + ( (  dat-mm ) DIV 12 ).
        IF newmm < 10.
          WRITE '0' TO hdat-mm+0(1).
          WRITE newmm TO hdat-mm+1(1).
        ELSE.
          WRITE newmm TO hdat-mm.
        ENDIF.
        IF dat-tt = '31'.
          newdate = hdat.
          newdate = newdate - 1.
        ELSE.
          IF dat-mm = '02'.
            newdate = hdat.
            newdate = newdate - 1.
          ELSE.
            newdate = dat.
          ENDIF.
        ENDIF.
      ELSE.
        newdate = dat.
      ENDIF.
      p_date = newdate.
    ENDFORM.                    "go_back_months
    **********************************

  • 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.

  • ALV - Sort on Subtotals

    Hi,
    Does anyone know how to sort on the subtotals of a numeric column in an ALV.
    Murali.

    Hi Santosh,
    Wouldnt this just sort a column and then show the subtotals ?
    a     X     1
    b     X     2
    c     X     3
    X subtotal     6     
    d     Y     4
    e     Y     5
    f     Y     6
    g     Y     7
    Y subtotal     22     
    Grand total     28
    I am looking to sort 22 and 6 in descending order with subtotal 22 at the top.
    Thanks
    Edited by: Muralidaran Shanmugam on Feb 10, 2010 7:11 AM

  • ALV Hierarchy display: How to get rid of the bullets ?

    Hi All,
    I am using Web dypro ALV to display my data, and I use ALV display type hierarchy.  When I expand the parent node in my hierarchy column, I get bullets in my lower level rows in the hierarchy column( this is the standard hierarchical ALV display). Is it possible to override these bullets ? I want to have a link to action element instead of the bullets in that column(for the lower level rows). If this is not possible, then atleast I would like to have an empty column with no text instead of the bullets. Could any one of you please help me ?
    Thanks and Best Regards,
    Viqar Ali.

    Hi jagruti,
    It is very simple to display a Hierarchical ALV. Just do the following:
        lr_column = l_value->if_salv_wd_column_settings~get_column( 'COLUMN_NAME' ).
    For hierarchical column display: Set column as hierarchy column
        lr_column->if_salv_wd_column_hierarchy~set_hierarchy_column( abap_true ).
    Use display type hierarchical for the table.
        l_value->if_salv_wd_table_settings~set_display_type( if_salv_wd_c_table_settings=>display_type_hierarchy ).
    This is sufficient coding to display the ALV as a hierarchy.
    However, my problem is that when I display the ALV as a hierarchy, I get bullets in the hierarchy column in my lower level rows on expanding the parent node. I wanted to know if it is possible to get rid of the bullets.
    Thanks and Best Regards,
    Viqar Ali.

  • Expanding Web DynPro ALV Hierarchy

    Good day experts,
    Is it possible to default the hierarchy display on a web dynpro ALV to EXPANDED?
    Regards,
    Johan Kriek.

    Hi,
    Check out this link -
    http://help.sap.com/saphelp_nw70ehp1/helpdata/en/3e/904b2624534e0db707c7314a5e1e9d/frameset.htm
    Use this method of the CL_SALV_WD_CONFIG_TABLE IF_SALV_WD_TABLE_HIERARCHYSET_EXPANDED to show them in expanded mode.
    Regards,
    Lekha.

Maybe you are looking for

  • How do I add a second Kobo to my Digital Editions?

    My wife already uses Digital Editions for her kobo, and now I have a kobo too, but our computer doesn't recognize mine and so I can't download books from the library, except onto HER kobo. Help!

  • Table not getting updated

    Hi I'm having a problem with updating an item which is not a database item. I have about 8 fields , Items 1-7 belong to table A and item 8 belongs to table B I have block level triggers like post-insert, pre-update and pre-delete to take care of the

  • Change of language?

    HI guys, i've recently installed the web photo gallery plug in for CS4 on mac. But there seems to be a problem with the language, for example when i try to type my email i get some weird "signs" instead of english (i've just tried to copy/paste the "

  • Flash Video Playback problem in CS4/CS5

    I need to put a Flash Video on my website, embedded in one of the existing html pages. When my developer puts together a Flash Video in Flash CS4 or CS5 using ActionScript 3, the video does not play - t just keeps buffering (showing a striped appeara

  • Zen Touch - Unable to scroll

    I know this topic was addressed in an earlier thread, but I was unable to read the entire thread (see "Zen Touch- Can't Scroll Up!?!?). Hoping somebody can help me out My Zen Touch will not allow to scroll up. It even scrolls down when I want to go u