<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic First Project - BCS in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/first-project-bcs/m-p/3412786#M819632</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;&lt;CODE&gt;
*----------------------------------------------------------------------*
***INCLUDE LUCR_LSTF03 .
*----------------------------------------------------------------------*
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;       Form  display_detail_list
*&amp;amp;---------------------------------------------------------------------*
FORM display_detail_list_subscreen.

  IF g_display_detail_again IS INITIAL.

    IF g_display_detail_next IS INITIAL.

* Header text is displayed as dyn. document
      IF go_dydo IS INITIAL.
        CREATE OBJECT go_dydo.
      ELSE.
        FREE  go_dydo.
        CLEAR go_dydo.
        CREATE OBJECT go_dydo.
        PERFORM free_create_screen_objects.
      ENDIF.

    ELSE.

      IF NOT go_dydo-&amp;gt;html_control IS INITIAL.
        CALL METHOD go_splitter_container-&amp;gt;remove_control
          EXPORTING
            row    = 1
            column = 1.
      ENDIF.

    ENDIF.
  ENDIF.

* Initialize document
  CALL METHOD go_dydo-&amp;gt;initialize_document.

  IF  LINES( gt_header ) &amp;gt; 0.
* Build and display detail-header
    PERFORM build_header TABLES gt_header
                         USING  go_dydo
                                gs_header.

  ENDIF.


* Merge header-document
  CALL METHOD go_dydo-&amp;gt;merge_document.

* set toolbar-added functions for detailed list
  REFRESH gt_toolbar.

  IF go_model-&amp;gt;ds_tx_data_io_type-documents IS BOUND.       "mb210303

    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_ENTRIES' '2',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '3',
                 gt_toolbar gs_toolbar 'UCR_PREV'    '4',
                 gt_toolbar gs_toolbar 'UCR_NEXT'    '5',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '6'.
  ELSE.                                                   "mb210202 beg.
    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_PREV'    '2',
                 gt_toolbar gs_toolbar 'UCR_NEXT'    '3',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '4'.
  ENDIF.                                                  "mb210202 end.

  SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.

* Display header
  CALL METHOD go_dydo-&amp;gt;display_document
    EXPORTING
      parent = go_container_head.

* Set header-control visible with user set or
* predefined height

  IF NOT go_splitter_container IS INITIAL.
    IF g_height IS INITIAL.
      g_height = 27.
    ENDIF.

    CALL METHOD go_splitter_container-&amp;gt;set_row_height
      EXPORTING
        id     = 1
        height = g_height.
  ENDIF.

* display detail-list

  CALL METHOD go_grid-&amp;gt;set_table_for_first_display
    EXPORTING
      i_bypassing_buffer   = 'X'
      is_layout            = gs_layout_save
      it_toolbar_excluding = gt_exclude_toolbar
    CHANGING
      it_fieldcatalog      = gt_fieldcat_d
      it_outtab            = &amp;lt;gt_outtab_detail&amp;gt;.

  IF NOT g_display_detail_next IS INITIAL.
    CALL METHOD go_grid-&amp;gt;refresh_table_display.
  ENDIF.

* Set cursor on selected row if necesary
  IF NOT gt_row_id_detail IS INITIAL.
    CALL METHOD go_grid-&amp;gt;set_selected_rows
      EXPORTING
        it_index_rows = gt_row_id_detail.

    REFRESH gt_row_id_detail.
  ENDIF.

  CLEAR: g_display_detail_next,
         g_display_detail_again.

ENDFORM.                    " display_detail_list_subscreen
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  display_main_list
*&amp;amp;---------------------------------------------------------------------*
FORM display_main_list_subscreen. "using i_reporting_logic type uc_flg.

  CLEAR g_detail.

* set toolbar-added functions
  REFRESH gt_toolbar.

  IF go_model-&amp;gt;ds_tx_data_io_type IS NOT INITIAL.

    IF go_model-&amp;gt;ds_tx_data_io_type-documents IS BOUND.     "mb210303
*        and i_reporting_logic is initial.
      PERFORM fill_tool_tab USING:
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                   gt_toolbar gs_toolbar 'UCR_ENTRIES' '2',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '3',
                   gt_toolbar gs_toolbar 'UCR_SEL_COND' '4',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '5'.
    ELSE.
      PERFORM fill_tool_tab USING:
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                   gt_toolbar gs_toolbar 'UCR_SEL_COND' '2',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '3'.

    ENDIF.                                                  "mb210303
    SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.
  ELSE    .
    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_SEL_COND' '2',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '3'.

    SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.

  ENDIF.

* Set header-control invisible while main-list is displayed
  IF NOT go_splitter_container IS INITIAL.
* Header container can be set visible by user on main-screen
    CALL METHOD go_splitter_container-&amp;gt;set_row_height
      EXPORTING
        id     = 1
        height = 0.
    IF NOT go_dydo IS INITIAL.
* Display last header if user wants to set it visible
      CALL METHOD go_dydo-&amp;gt;display_document
        EXPORTING
          parent = go_container_head.
    ENDIF.
  ENDIF.

* subscreen with main list simply is started once again
* prepared with current user settings
  IF ( LINES( gt_fieldcat_save ) &amp;gt; 0 ) AND
     NOT g_display_main_again IS INITIAL.

    REFRESH gt_fieldcat.
    gt_fieldcat[] = gt_fieldcat_save[].
*    clear g_display_main_again.

* is necessary, because current_frontend_fieldcat must be set
    CALL METHOD go_grid-&amp;gt;set_table_for_first_display
      EXPORTING
        i_bypassing_buffer   = 'X'
        i_save               = g_save
        is_layout            = gs_layout
        is_variant           = gs_variant
        it_special_groups    = gt_sgrp                      "mb110403
        it_toolbar_excluding = gt_exclude_toolbar
      CHANGING
        it_fieldcatalog      = gt_fieldcat
        it_outtab            = &amp;lt;gt_outtab&amp;gt;.

* set current fieldcat
    CALL METHOD go_grid-&amp;gt;set_frontend_fieldcatalog
      EXPORTING
        it_fieldcatalog = gt_fieldcat.

* now reset other current layout-infos if necessary
    PERFORM set_current_layout USING go_grid
                                     gt_filter_save
                                     gt_sort_save
                                     gs_layout_save.


* display current main-list
    CALL METHOD go_grid-&amp;gt;refresh_table_display.

    REFRESH: gt_fieldcat_save, gt_filter_save, gt_sort_save.
    CLEAR  : gs_layout_save.

  ELSE.

* Show ALV
    CALL METHOD go_grid-&amp;gt;set_table_for_first_display
      EXPORTING
        i_bypassing_buffer   = 'X'
        i_save               = g_save
        is_layout            = gs_layout
        is_variant           = gs_variant
        it_special_groups    = gt_sgrp                      "mb110403
        it_toolbar_excluding = gt_exclude_toolbar
      CHANGING
        it_sort              = gt_sort
        it_fieldcatalog      = gt_fieldcat
        it_outtab            = &amp;lt;gt_outtab&amp;gt;.

    CLEAR g_display_detail_again.
    g_display_main_again = 'X'.

  ENDIF.

* Set cursor on selected row if necesary
  IF NOT gt_row_id IS INITIAL.
    CALL METHOD go_grid-&amp;gt;set_selected_rows
      EXPORTING
        it_index_rows = gt_row_id.

  ENDIF.

ENDFORM.                    " display_main_list_subscreen

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  display_message
*&amp;amp;---------------------------------------------------------------------*
FORM display_message USING lo_grid_object TYPE REF TO cl_gui_alv_grid
                           lf_refresh_msg_table TYPE c.

  DATA: l_lines       TYPE i,
        ls_layout     TYPE lvc_s_layo.

* header_main is not used by Worbench
  IF g_subscreen IS INITIAL.
    PERFORM header_main.
  ENDIF.

  g_no_data = 'X'.

* if first data selection results no data gt_parameter_save must be
* filled  from lt_parameter to take care of further user changed
* parameters from list screen

  DESCRIBE TABLE gt_parameter_save LINES l_lines.
  IF l_lines =  0.
    gt_parameter_save[] = gt_parameter[].
  ENDIF.

  PERFORM no_data_selected IN PROGRAM (gc_progname)
                            USING      gt_fieldcat_mess
                                       gs_fieldcat_mess
                                       gt_message
                                       gs_message
                                       text-101
                                       text-102
                                       'TEXT'
                                       'LT_MESSAGE'
                                       lf_refresh_msg_table   " 'X'
                                       space.      "  'C610'. no color, accessibility

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***

* Set header-control invisible while main-list is displayed
*  IF NOT go_splitter_container IS INITIAL.

*    CALL METHOD go_splitter_container-&amp;gt;set_row_height
*      EXPORTING
*        id     = 1
*        height = 0.
*    CALL METHOD go_splitter_container-&amp;gt;set_row_sash
*      EXPORTING
*        id    = 1
*        type  = cl_gui_splitter_container=&amp;gt;type_sashvisible
*        value = cl_gui_splitter_container=&amp;gt;false.
*  ENDIF.

*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

* display messages
*  ls_layout-no_toolbar = 'X'.

  CALL METHOD lo_grid_object-&amp;gt;set_table_for_first_display
    EXPORTING
      i_bypassing_buffer   = 'X'
      it_toolbar_excluding = gt_exclude_toolbar_mess
      is_layout            = ls_layout
    CHANGING
      it_fieldcatalog      = gt_fieldcat_mess
      it_outtab            = gt_message.

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***

* Event-Handler for docking-container
*  IF go_event_dock IS INITIAL.
*    CREATE OBJECT go_event_dock.
*  ENDIF.

*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

  IF go_parameter IS INITIAL.
    CALL METHOD cl_uc_parameter=&amp;gt;get_instance
      IMPORTING
        eo_instance = go_parameter.
  ENDIF.

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***
*  SET HANDLER go_event_dock-&amp;gt;handle_new_parameters FOR go_parameter.
*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

ENDFORM.                    " display_message

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  sub_download_data
*&amp;amp;---------------------------------------------------------------------*
* Used for downloading BCS data to a TAB delimited file in Custom task *
*----------------------------------------------------------------------*
*      &amp;lt;--ct_data  HASHED TABLE
*----------------------------------------------------------------------*
FORM f_download_data  USING     ct_task     TYPE uc_task
                                ct_sel      TYPE uc0_ts_sel
                                gt_param    TYPE ucm_ts_parameter
                      CHANGING  ct_message  TYPE uc0_t_message
                                ct_data     TYPE HASHED TABLE..

*----------------------------------------------------------------------*
* SUBROUTINE DESCRIPION: Used for downloading BCS data to file in Custome Task
*
*           DEVELOPER: Ramesh Babu Nalla , IBM
*       CREATION DATE: 2007-10-11
*          DER NUMBER: None
* TRANSPORT NUMBER(S): C1DK900725
*----------------------------------------------------------------------*

* REVISION HISTORY-----------------------------------------------------*
*
*       REVISION NO: C1DK900725      REFERENCE NO:  None
*         DEVELOPER: Ramesh Babu N,IBM       DATE:  2007-10-11
*       DESCRIPTION: Copied from SAP FM UCR_LST_LOGIC *
*
*----------------------------------------------------------------------*

  CONSTANTS : c_task01 TYPE uc_task VALUE 'T2700',
              c_task02 TYPE uc_task VALUE 'T2490'.

  TYPES:  BEGIN OF ty_download,
**            /bic/zcs_comp   TYPE char08,      " Unilever-Company
**            /bic/zcs_item   TYPE char10,      " Unilever-Item
**            /1fb/move_type  TYPE char03,      " Unilever-Movement type
**            /bic/zcs_pcom   TYPE char08,      " Unilever-Partner Company
**            /bic/zcs_invc   TYPE char08,      " Unilever-Investee Company
**            /bic/zcs_cang   TYPE char03,      " Unilever-Cost Analysis Group
**            /bic/zcs_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
**            /bic/zcs_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
**            /bic/zcs_prgp   TYPE char08,      " Unilever-Product Category

            /bic/zfb_comp   TYPE char08,      " Unilever-Company
            /bic/zfb_item   TYPE char10,      " Unilever-Item
            /bic/zfb_move   TYPE char03,      " Unilever-Movement type
            /bic/zfb_pcom   TYPE char08,      " Unilever-Partner Company
            /bic/zfb_invc   TYPE char08,      " Unilever-Investee Company
            /bic/zfb_cang   TYPE char03,      " Unilever-Cost Analysis Group
            /bic/zfb_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
            /bic/zfb_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
            /bic/zfb_prgp   TYPE char08,      " Unilever-Product Category

            /1fb/cs_trn_lc  TYPE string,      " Unilever-Period value in Local currency
            /1fb/cs_trn_qty TYPE string,     " Unilever-Periodic quantity
            unit            type string,

          END OF ty_download.
* flag
  DATA flg_chk TYPE c.
*
  DATA: lr_s_data_out TYPE REF TO data,
        lr_t_data_out TYPE REF TO data,
        l_outtype     TYPE field_type VALUE 'UCR_SX_TX_DATA_LST',
        lr            TYPE REF TO data,
        lo_conv       TYPE REF TO lcl_convert_output,
        lt_char       TYPE lcl_convert_output=&amp;gt;th_comp,
        ls_comp       TYPE lcl_convert_output=&amp;gt;s_comp,
        lr_s_data     TYPE REF TO data,
        lr_t_data     TYPE REF TO data,
        l_filename    TYPE string,
        l_action      TYPE i,
        l_path        TYPE string,
        l_seperator   TYPE char01 VALUE 'X',
        l_fullpath    TYPE string,
        l_mmyy        TYPE string,
        lr_sel_data   TYPE REF TO data,
        lr_t_val      TYPE REF TO data,
        lr_t_final    TYPE REF TO data,
        lr_val        TYPE REF TO data,
        ls_download   TYPE REF TO data,
        lt_download   TYPE REF TO data,
        ls_sel        TYPE REF TO data,
        ls_msg        TYPE uc0_s_message.

** SOC by Dpak-------------------------------------------------------------------------------------------
** Changed by Deepak N Jain, IBM on 16/11/2006 as the corresponding field name assigned by Ramesh from
** the structure &amp;lt;LS_DATA_OUT&amp;gt; are not matching. This is because of the new cube from whch the Financial
** data is coming now. The new cube is ZFBCS_T1 which has replaced the old cube ZCS_T1.
** Hence, Short Dump on Execution.
**-------------------------------------------------------------------------------------------------------

**  DATA: l_comp        TYPE string VALUE '/BIC/ZCS_COMP',  " Unilever-Company
**        l_cgcomp      TYPE string VALUE '/1FB/SEM_CGCOMP'," Unilever-Consolidation Group
**        l_pcomp       TYPE string VALUE '/BIC/ZCS_PCOM',  " Unilever-Partner Company
**        l_doct        TYPE string VALUE '/BIC/ZCS_DOCT',  " Unilever-Document type
**        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
**        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
**        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
**        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
**        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
**        l_low         TYPE string VALUE 'LOW'.

  DATA: l_comp        TYPE string VALUE '/BIC/ZFB_COMP',  " Unilever-Company
        l_cgcomp      TYPE string VALUE '/BIC/ZFB_CG1',   " Unilever-Consolidation Group
        l_pcomp       TYPE string VALUE '/BIC/ZFB_PCOM',  " Unilever-Partner Company
        l_doct        TYPE string VALUE '/BIC/ZFB_DOCT',  " Unilever-Document type
        l_invc        TYPE string VALUE '/BIC/ZFB_INVC',  " Unilever-Investee Company
        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
        l_low         TYPE string VALUE 'LOW',
        l_unit        TYPE string  VALUE 'UNIT'.
** EOC by Dpak-----------------------------------------------------------------------------------------------

** future use **
**  FISCVARNT TYPE L0002FISCVARNT,
**  FISCPERIOD TYPE L0002FISCPERIOD,
**  /BIC/ZFB_VERS TYPE L0002/BIC/ZFB_VERS,
**  /BIC/ZFB_CG1 TYPE L0002/BIC/ZFB_CG1,
**  /BIC/ZFB_COMP TYPE L0002/BIC/ZFB_COMP,
**  /1FB/CS_CHART TYPE L0002/1FB/CS_CHART,
**  /BIC/ZFB_MOVE TYPE L0002/BIC/ZFB_MOVE,
**  /BIC/ZFB_PCOM TYPE L0002/BIC/ZFB_PCOM,
**  ACQ_YEAR TYPE L0002ACQ_YEAR,
**  ACQ_PER TYPE L0002ACQ_PER,
**  /BIC/ZFB_INVC TYPE L0002/BIC/ZFB_INVC,
**  /BIC/ZFB_ALCO TYPE L0002/BIC/ZFB_ALCO,
**  CS_PLEVEL TYPE L0002CS_PLEVEL,
**  /BIC/ZFB_DOCT TYPE L0002/BIC/ZFB_DOCT,
**  BCS_CTFLG TYPE L0002BCS_CTFLG,
**  UNIT TYPE L0002UNIT,
**  /1FB/CURKEY_TC TYPE L0002/1FB/CURKEY_TC,
**  /1FB/CURKEY_LC TYPE L0002/1FB/CURKEY_LC,
**  /1FB/CURKEY_GC TYPE L0002/1FB/CURKEY_GC,
**  /BIC/ZFB_PRGP TYPE L0002/BIC/ZFB_PRGP,
**  /BIC/ZFB_COUN TYPE L0002/BIC/ZFB_COUN,
**  /BIC/ZFB_CANG TYPE L0002/BIC/ZFB_CANG,
**  /1FB/FUNC_AREA TYPE L0002/1FB/FUNC_AREA,
**  /BIC/ZFB_CT TYPE L0002/BIC/ZFB_CT,
**  /BIC/ZFB_CD TYPE L0002/BIC/ZFB_CD,
**  /BIC/ZFB_AD TYPE L0002/BIC/ZFB_AD,
**  /BIC/ZFB_FR01 TYPE L0002/BIC/ZFB_FR01,
**  /BIC/ZFB_FR02 TYPE L0002/BIC/ZFB_FR02,
**  FISCYEAR TYPE L0002FISCYEAR,
**  /BIC/ZFB_ITEM TYPE L0002/BIC/ZFB_ITEM,
** future use **

  FIELD-SYMBOLS: &amp;lt;lt_data_out&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_out&amp;gt; TYPE ANY,
                 &amp;lt;ls_data&amp;gt;     TYPE ANY,
                 &amp;lt;ls_data_cop&amp;gt; TYPE ANY,
                 &amp;lt;lt_data_std&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_std&amp;gt; TYPE ANY,
                 &amp;lt;ls_download&amp;gt;  TYPE ANY,
                 &amp;lt;lt_download&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;comp&amp;gt;        TYPE ANY,
                 &amp;lt;cgcomp&amp;gt;      TYPE ANY,
                 &amp;lt;pcomp&amp;gt;       TYPE ANY,
                 &amp;lt;doct&amp;gt;        TYPE ANY,
                 &amp;lt;plevel&amp;gt;      TYPE ANY,
                 &amp;lt;tc&amp;gt;          TYPE ANY,
                 &amp;lt;invc&amp;gt;        TYPE ANY,
                 &amp;lt;qty&amp;gt;         TYPE ANY,
                 &amp;lt;unit&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc&amp;gt;      TYPE ANY,
                 &amp;lt;comp1&amp;gt;       TYPE ANY,
                 &amp;lt;cgcomp1&amp;gt;     TYPE ANY,
                 &amp;lt;pcomp1&amp;gt;      TYPE ANY,
                 &amp;lt;doct1&amp;gt;       TYPE ANY,
                 &amp;lt;plevel1&amp;gt;     TYPE ANY,
                 &amp;lt;tc1&amp;gt;         TYPE ANY,
                 &amp;lt;invc1&amp;gt;       TYPE ANY,
                 &amp;lt;qty1&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc1&amp;gt;     TYPE ANY,
                 &amp;lt;unit1&amp;gt;       TYPE ANY,
                 &amp;lt;bu&amp;gt;          TYPE ANY,
                 &amp;lt;bu1&amp;gt;         TYPE ANY,
                 &amp;lt;low&amp;gt;         TYPE ANY,
                 &amp;lt;l_year&amp;gt;      TYPE ANY ,
                 &amp;lt;l_period&amp;gt;    TYPE ANY ,
                 &amp;lt;l_mmyy&amp;gt;      TYPE ANY,
                 &amp;lt;ls_sel_data&amp;gt; TYPE ANY,
                 &amp;lt;ls_val&amp;gt;      TYPE zbcs_check_val,
                 &amp;lt;lt_t_val&amp;gt;    TYPE STANDARD TABLE,
                 &amp;lt;lt_t_final&amp;gt;  TYPE STANDARD TABLE.

**************** Begin Of Addtion - ASIF MAQBOOL ******************
  Data: BEGIN OF l_s_tab,
        values TYPE C LENGTH 400,
       end OF l_s_tab,
      gs_param LIKE LINE OF gt_param,
      l_temp_store LIKE gt_param.

  Field-SYMBOLS: &amp;lt;gt_param&amp;gt; TYPE ANY TABLE,
                 &amp;lt;final_gt&amp;gt; TYPE any ,
                 &amp;lt;gs_fieldname&amp;gt; TYPE any,
                 &amp;lt;gs_value&amp;gt; TYPE any.

  Data: l_t_tab TYPE TABLE OF string INITIAL SIZE 0,
       str TYPE string,
       str1 TYPE string.
**************** End Of Addtion - ASIF MAQBOOL ******************

* create Line-structure of data table
  CREATE DATA lr_s_data LIKE LINE OF ct_data.
  ASSIGN lr_s_data-&amp;gt;* TO &amp;lt;ls_data_std&amp;gt;.

** create cumulation table
  CREATE DATA lr_t_data LIKE STANDARD TABLE OF &amp;lt;ls_data_std&amp;gt;.
  ASSIGN lr_t_data-&amp;gt;* TO &amp;lt;lt_data_std&amp;gt;.

  LOOP AT ct_data INTO &amp;lt;ls_data_std&amp;gt;.
    COLLECT &amp;lt;ls_data_std&amp;gt; INTO &amp;lt;lt_data_std&amp;gt;.
  ENDLOOP.

  FREE ct_data.

* get reference for outtab / create outtab
  CALL METHOD go_model-&amp;gt;create_data_reference
    EXPORTING
      io_tx_data_io_type = go_model-&amp;gt;ds_tx_data_io_type-totals
      i_type             = l_outtype "'UCR_SX_TX_DATA_LST'
    IMPORTING
      er_data            = lr_s_data_out.

  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_cop&amp;gt;.

  CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_t_data_out-&amp;gt;* TO &amp;lt;lt_data_out&amp;gt;.

  CREATE DATA lr LIKE LINE OF &amp;lt;lt_data_std&amp;gt;.

  ASSIGN lr-&amp;gt;* TO &amp;lt;ls_data&amp;gt;.

  CALL METHOD lcl_convert_output=&amp;gt;get_instance
    EXPORTING
      io_model    = go_model
      it_char     = lt_char
    IMPORTING
      eo_instance = lo_conv
    CHANGING
      cs_data     = &amp;lt;ls_data&amp;gt;.

  ASSIGN: l_comp   TO &amp;lt;comp&amp;gt;,
          l_cgcomp TO &amp;lt;cgcomp&amp;gt;,
          l_pcomp  TO &amp;lt;pcomp&amp;gt;,
          l_invc   TO &amp;lt;invc&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_plevel TO &amp;lt;plevel&amp;gt;,
          l_tc     TO &amp;lt;tc&amp;gt;,
          l_qty    TO &amp;lt;qty&amp;gt;,
          l_trn_lc TO &amp;lt;trn_lc&amp;gt;,
          l_bu     TO &amp;lt;bu&amp;gt;,
          l_mmyy   TO &amp;lt;l_mmyy&amp;gt;,
          l_low    TO &amp;lt;low&amp;gt;,
          l_unit   TO &amp;lt;unit&amp;gt;.


  LOOP AT &amp;lt;lt_data_std&amp;gt; INTO &amp;lt;ls_data&amp;gt;.    "  loop

    CALL METHOD lo_conv-&amp;gt;convert_output.      "end of "wis240605

*     fill outtab
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_char
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_kfig
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.


    IF ct_task = c_task01 OR ct_task = space . "'it can be T2700 or blank

*************************************************************
*****  aggregate the transactionaldata for given Rules  *****
*************************************************************

      ASSIGN COMPONENT : &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;,
                         &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                         &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                         &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;,
                         &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;invc1&amp;gt;, "added by Asif M.
                         &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                         &amp;lt;tc&amp;gt;     OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;tc1&amp;gt;,
                         &amp;lt;qty&amp;gt;    OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;qty1&amp;gt;,
                         &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.

**** 1st Rule ****
* dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
      IF &amp;lt;trn_lc1&amp;gt; = 0 AND &amp;lt;qty1&amp;gt; = 0.
        CONTINUE.
      ENDIF.

**** 2nd Rule ****
* delete the Posting levels if it is &amp;gt; 1 and clear to blank  CS_PLEVEL
      CHECK &amp;lt;plevel1&amp;gt; LE 1.
      CLEAR &amp;lt;plevel1&amp;gt;.

**** 3rd Rule ****
* replace the Unilever Company with CG without prefix G and compare with Partner comp for deletion
* /BIC/ZCS_COMP with   /1FB/SEM_CGCOMP and check with /BIC/ZCS_PCOM

      IF ct_task &amp;lt;&amp;gt; space.
***  code added by Ramesh for the removal GBRNCH  records while downloading the file.
**********************************************************************
**** code for removal of GBRNCH records only - Hardcode - sample code
*        IF &amp;lt;cgcomp1&amp;gt; &amp;lt;&amp;gt; 'GBRNCH'.   " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
*          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
*        ELSE.
*          CONTINUE.
*        ENDIF.
**** code for removal of GBRNCH records only - Hardcode - sample code
**********************************************************************

***  the assumption here,is consider only records with Legal entity as numeric excepting the first character
        IF &amp;lt;cgcomp1&amp;gt;+1 CN sy-abcde.   " to avoid BRNCH records
* replace Company with CG without prefix G when task name is not blank
          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
        ELSE.
          CONTINUE.
        ENDIF.


      ENDIF.

* removing leading zero's as SAP sometimes adding them to &amp;lt;pcomp1&amp;gt;.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*        EXPORTING
*          input  = &amp;lt;pcomp1&amp;gt;
*        IMPORTING
*          output = &amp;lt;pcomp1&amp;gt;.
      PERFORM f_alpha_conversion USING &amp;lt;comp1&amp;gt;
                                      CHANGING &amp;lt;comp1&amp;gt;.

      PERFORM f_alpha_conversion USING &amp;lt;pcomp1&amp;gt;
                                 CHANGING &amp;lt;pcomp1&amp;gt;.

      " removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.

      PERFORM f_alpha_conversion USING &amp;lt;invc1&amp;gt;
                                 CHANGING &amp;lt;invc1&amp;gt;.

      CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;pcomp1&amp;gt;.

**** 4rth Rule ****
* initialise Document type &amp;amp; PV TC to blank   /BIC/ZCS_DOCT &amp;amp; /1FB/CS_TRN_TC
      CLEAR: &amp;lt;doct1&amp;gt;,&amp;lt;tc1&amp;gt;.




    ENDIF.

    COLLECT: &amp;lt;ls_data_out&amp;gt; INTO &amp;lt;lt_data_out&amp;gt;.

  ENDLOOP.          " end loop


  IF &amp;lt;lt_data_out&amp;gt; IS INITIAL.
    PERFORM f_build_msgs USING 'UCM0'
                               'W'
                               '053'
                               text-102
                               space "ct_task
                               space
                               space
                      CHANGING ct_message.
    RETURN.
    MESSAGE e208(00) WITH text-102.
    EXIT.
  ENDIF.


* perform various steps based on task name
  CASE ct_task.

    WHEN c_task01 OR space.              " 'T2700' or blank


* download the data into a tab delimited file
*****************************************************
****             start of Task 0001              ****
*****************************************************
* create Line-structure of download table
      CREATE DATA ls_download TYPE ty_download.
      ASSIGN ls_download-&amp;gt;* TO &amp;lt;ls_download&amp;gt;.

** create Download data internal table for task T2700
      CREATE DATA lt_download LIKE STANDARD TABLE OF &amp;lt;ls_download&amp;gt;.
      ASSIGN lt_download-&amp;gt;* TO &amp;lt;lt_download&amp;gt;.

      LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

        MOVE-CORRESPONDING &amp;lt;ls_data_out&amp;gt; TO &amp;lt;ls_download&amp;gt;.

        ASSIGN COMPONENT &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.

*** 6th Rule **********************

        " Check for values, if present remove decimals, if not present clear it of (blank).
        UNASSIGN &amp;lt;qty1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;qty&amp;gt; of STRUCTURE &amp;lt;ls_download&amp;gt; to &amp;lt;qty1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;unit&amp;gt; of STRUCTURE &amp;lt;ls_download&amp;gt; to &amp;lt;unit1&amp;gt;.

        if &amp;lt;unit1&amp;gt; = '' OR &amp;lt;unit1&amp;gt; &amp;lt;&amp;gt; '%'.
          REPLACE ALL OCCURRENCES OF '.' in &amp;lt;qty1&amp;gt; WITH '' RESPECTING CASE.
          &amp;lt;qty1&amp;gt; = ''.

        endif.

        if &amp;lt;unit1&amp;gt; &amp;lt;&amp;gt; '' And &amp;lt;qty1&amp;gt; &amp;lt;&amp;gt; ''.
          &amp;lt;unit1&amp;gt; = ''. " We dont need unit downloaded.
          REPLACE ALL OCCURRENCES OF '.' in &amp;lt;qty1&amp;gt; WITH '' RESPECTING CASE.
          &amp;lt;qty1&amp;gt; = &amp;lt;qty1&amp;gt;+0(2).
        endif.

*************************************
**** 5th Rule ****
* Move the Negative sign to front

        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_lc1&amp;gt;.
        INSERT &amp;lt;ls_download&amp;gt;  INTO TABLE &amp;lt;lt_download&amp;gt;.

      ENDLOOP.






* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

      CLEAR: l_path,l_filename,l_fullpath,l_action.

      CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
       EXPORTING
         window_title            = 'Download aggregated BCS data to Tab Delimited file'
         default_extension       = 'txt'
*   DEFAULT_FILE_NAME       = dynamic file name as like ALE settings
         file_filter             = 'Text files (*.txt)'
       IMPORTING
         filename                = l_filename
         path                    = l_path
         fullpath                = l_fullpath
         user_action             = l_action .

      CALL METHOD cl_gui_cfw=&amp;gt;flush.

      " *************************** START OF CHANGE - ASIF MAQBOOL ************************
      IF l_action = 0 OR l_action = 1.


        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.
        APPEND '100' to l_t_tab.
        READ TABLE gt_param INDEX 6 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
        Clear gs_param.
        READ TABLE gt_param INDEX 4 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*        LOOP AT &amp;lt;gt_param&amp;gt; INTO gs_param.
*
*          ASSIGN COMPONENT 1 OF STRUCTURE gs_param to &amp;lt;gs_fieldname&amp;gt;.
*
*          CASE &amp;lt;gs_fieldname&amp;gt;.
*             WHEN '/BIC/ZFB_VERS'.
*
*              APPEND '100' to l_t_tab.
*
*             WHEN 'FISCPERIOD'.
*                ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*                APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*             WHEN 'FISCYEAR'.
*                ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*                APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*
*              WHEN OTHERS.
*                ENDCASE.
*
*
*        ENDLOOP.

        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
        CLEAR l_t_tab.
        INSERT str1 INTO TABLE l_t_tab.
        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.



        "  To Start by adding the Header Data.
        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
          EXPORTING
            filename              = l_fullpath
            write_field_separator = l_seperator "SPACE
          CHANGING
            data_tab              = &amp;lt;final_gt&amp;gt;
          EXCEPTIONS
            file_write_error      = 1.

        " Now append the Data after the header data insertion.
        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
          EXPORTING
            filename                = l_fullpath
            write_field_separator   = l_seperator "SPACE
            append                  = 'X'
          CHANGING
            data_tab                = &amp;lt;lt_download&amp;gt;
          EXCEPTIONS
            file_write_error        = 1
            no_batch                = 2
            gui_refuse_filetransfer = 3
            invalid_type            = 4
            no_authority            = 5
            unknown_error           = 6
            header_not_allowed      = 7
            separator_not_allowed   = 8
            filesize_not_allowed    = 9
            header_too_long         = 10
            dp_error_create         = 11
            dp_error_send           = 12
            dp_error_write          = 13
            unknown_dp_error        = 14
            access_denied           = 15
            dp_out_of_memory        = 16
            disk_full               = 17
            dp_timeout              = 18
            file_not_found          = 19
            dataprovider_exception  = 20
            control_flush_error     = 21
            not_supported_by_gui    = 22
            error_no_gui            = 23
            OTHERS                  = 24.


        " *************************** END OF CHANGE - ASIF MAQBOOL ************************

        IF sy-subrc &amp;lt;&amp;gt; 0.
*          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          PERFORM f_build_msgs USING sy-msgid
                                     sy-msgty
                                     sy-msgno
                                     sy-msgv1
                                     sy-msgv2
                                     sy-msgv3
                                     sy-msgv4
                            CHANGING ct_message.
          RETURN.

        ENDIF.

      ENDIF.

*****************************************************
****               End of Task 0001              ****
*****************************************************

    WHEN c_task02.                                          "'T2490'.

* switch to validations on aggregated transactional data
*****************************************************
**** Start of Task 0002 validations ****
*****************************************************

* create Line-structure of gt_sel(selection) data table
      CREATE DATA lr_sel_data LIKE LINE OF ct_sel." zbcs_check_val
      ASSIGN lr_sel_data-&amp;gt;* TO &amp;lt;ls_sel_data&amp;gt;.

* create validation table
      CREATE DATA lr_t_val TYPE STANDARD TABLE OF  zbcs_check_val.
      ASSIGN lr_t_val-&amp;gt;* TO &amp;lt;lt_t_val&amp;gt;.


* create data table that does not fulfill rules after validation
      CREATE DATA lr_t_final LIKE STANDARD TABLE OF  &amp;lt;ls_data_out&amp;gt;.
      ASSIGN lr_t_final-&amp;gt;* TO &amp;lt;lt_t_final&amp;gt;.


* concatenate year &amp;amp; month to query custom table
      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCYEAR'.  "YYYY
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_year&amp;gt;.

      &amp;lt;l_mmyy&amp;gt; = &amp;lt;l_year&amp;gt;.

      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCPERIOD'."MM
      CHECK sy-subrc = 0.
      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;. " via BADI
**      ASSIGN COMPONENT 5 OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;.  " via report

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = &amp;lt;l_period&amp;gt;
        IMPORTING
          output = &amp;lt;l_period&amp;gt;.

      CONCATENATE &amp;lt;l_mmyy&amp;gt; &amp;lt;l_period&amp;gt;  INTO &amp;lt;l_mmyy&amp;gt;.

** get data for given criteria
      SELECT * INTO TABLE &amp;lt;lt_t_val&amp;gt; FROM zbcs_check_val
      WHERE valid_from LE &amp;lt;l_mmyy&amp;gt; AND
            valid_to   GE &amp;lt;l_mmyy&amp;gt;.
      IF sy-subrc &amp;lt;&amp;gt; 0.
*   error message
        PERFORM f_build_msgs USING 'UCM0'
                                   'E'
                                   '053'
                                   text-103
                                   space
                                   space
                                   space
                          CHANGING ct_message.
        RETURN.

      ENDIF.

      LOOP AT &amp;lt;lt_t_val&amp;gt; ASSIGNING &amp;lt;ls_val&amp;gt;.

        CASE &amp;lt;ls_val&amp;gt;-valid_rules.

          WHEN 'VAL_001'.
* meant for parallal cursor
*            READ TABLE &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; WITH KEY (l_comp) = &amp;lt;ls_val&amp;gt;-company
*                                                                 (l_bu)   = &amp;lt;ls_val&amp;gt;-bus_cost_unit.
*            CHECK sy-subrc = 0.
*            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; FROM sy-tabix.

            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

              ASSIGN COMPONENT: &amp;lt;bu&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;bu1&amp;gt;,
                                &amp;lt;comp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;.

*** inserting all error records which does not match 'VAL_001'
              CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-company AND &amp;lt;bu1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-bus_cost_unit.
              flg_chk = abap_true.
              COLLECT &amp;lt;ls_data_out&amp;gt;  INTO &amp;lt;lt_t_final&amp;gt;.
              PERFORM f_build_msgs USING 'UCM0'
                                         'E'
                                         '053'
                                         &amp;lt;ls_val&amp;gt;-valid_rules
                                         text-104
                                         &amp;lt;ls_val&amp;gt;-company
                                         &amp;lt;ls_val&amp;gt;-bus_cost_unit
                                CHANGING ct_message.

            ENDLOOP.
*** future use of further validation
***            CHECK flg_chk = abap_true.
***            flg_chk = abap_false.
***            PERFORM f_build_msgs USING 'UCM0'
***                           'E'
***                           '053'
***                           &amp;lt;ls_val&amp;gt;-valid_rules
***                           text-104
***                           &amp;lt;ls_val&amp;gt;-company
***                           &amp;lt;ls_val&amp;gt;-bus_cost_unit
***                  CHANGING ct_message.

***          WHEN 'VAL_002'.
*** Etc
*** future use of further validation

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_t_final&amp;gt;.

*****************************************************
**** End of Task  0002 validations ****
*****************************************************

    WHEN OTHERS.

** move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

  ENDCASE.


ENDFORM.                    " sub_download_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_put_sign_in_front
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      &amp;lt;--P_value  text
*----------------------------------------------------------------------*
FORM f_put_sign_in_front  CHANGING p_value TYPE string.

  DATA: text1(1) TYPE c.

  SEARCH p_value FOR '-'.
  IF sy-subrc = 0 AND sy-fdpos &amp;lt;&amp;gt; 0.
    SPLIT p_value AT '-' INTO p_value text1.
    CONDENSE p_value.
    CONCATENATE '-' p_value INTO p_value.
  ELSE.
    CONDENSE p_value.
  ENDIF.

ENDFORM.                    " f_put_sign_in_front


*----------------------------------------------------------------------*
* PROGRAM DESCRIPTION: Resuable Aplha Conversion routine
*
*           DEVELOPER: Asif Maqbool ,IBM/Unilever *
*       CREATION DATE: 2008-01-25
*          DER NUMBER: None
* TRANSPORT NUMBER(S): C1DK901293
*----------------------------------------------------------------------*



FORM f_alpha_conversion USING l_import_comp TYPE ANY
                        CHANGING l_export_comp TYPE ANY.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = l_import_comp
    IMPORTING
      output = l_export_comp.




ENDFORM.                    "f_alpha_conversion



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_build_msgs
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_SY_MSGID  text
*      --&amp;gt;P_SY_MSGTY  text
*      --&amp;gt;P_SY_MSGNO  text
*      --&amp;gt;P_SY_MSGV1  text
*      --&amp;gt;P_SY_MSGV2  text
*      --&amp;gt;P_SY_MSGV3  text
*      --&amp;gt;P_SY_MSGV4  text
*      &amp;lt;--P_CT_MESSAGE  text
*----------------------------------------------------------------------*
FORM f_build_msgs  USING     p_msgid   TYPE symsgid
                             p_msgty   TYPE symsgty
                             p_msgno   TYPE symsgno
                             p_msgv1   TYPE any
                             p_msgv2   TYPE any
                             p_msgv3   TYPE any
                             p_msgv4   TYPE any
                   CHANGING pt_message TYPE uc0_t_message.

  DATA  ls_msg TYPE uc0_s_message.

  ls_msg-msgid = p_msgid.
  ls_msg-msgty = p_msgty.
  ls_msg-msgno = p_msgno.
  ls_msg-msgv1 = p_msgv1.
  ls_msg-msgv2 = p_msgv2.
  ls_msg-msgv3 = p_msgv3.
  ls_msg-msgv4 = p_msgv4.
  INSERT ls_msg INTO TABLE pt_message.

ENDFORM.                    "f_build_msgs


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_download_data_YBBCSDOWNLOAD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM f_download_data_YBBCSDOWNLOAD
                         USING
                                ct_task     TYPE uc_task
                                ct_sel      TYPE uc0_ts_sel
                                gt_param    TYPE ucm_ts_parameter
                                chk_params  TYPE ANY
                                Aggr_swt    TYPE STRING

                      CHANGING  ct_message  TYPE uc0_t_message
                                ct_data     TYPE HASHED TABLE
                                lo_dataref  TYPE ref to data


                       .



*----------------------------------------------------------------------*
* SUBROUTINE DESCRIPION: Used for downloading BCS data to file in Custome Task
*
*           DEVELOPER: Asif Maqbool , IBM/Unilever
*       CREATION DATE: 2007-10-11
*          DER NUMBER: None
* TRANSPORT NUMBER(S):  C1DK901380
*----------------------------------------------------------------------*

  " 1) 5 Rules of validation has to be removed.
  " 2) Global Currency Key  was requried in download
  " 3) Extra Header column required in the Download file.


  CONSTANTS : c_task01 TYPE uc_task VALUE 'T2700',
              c_task02 TYPE uc_task VALUE 'T2490'.

  TYPES:  BEGIN OF ty_download,
**            /bic/zcs_comp   TYPE char08,      " Unilever-Company
**            /bic/zcs_item   TYPE char10,      " Unilever-Item
**            /1fb/move_type  TYPE char03,      " Unilever-Movement type
**            /bic/zcs_pcom   TYPE char08,      " Unilever-Partner Company
**            /bic/zcs_invc   TYPE char08,      " Unilever-Investee Company
**            /bic/zcs_cang   TYPE char03,      " Unilever-Cost Analysis Group
**            /bic/zcs_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
**            /bic/zcs_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
**            /bic/zcs_prgp   TYPE char08,      " Unilever-Product Category

            /bic/zfb_comp   TYPE char08,      " Unilever-Company
            /bic/zfb_item   TYPE char10,      " Unilever-Item
            /bic/zfb_move   TYPE char03,      " Unilever-Movement type
            /bic/zfb_pcom   TYPE char08,      " Unilever-Partner Company
            /bic/zfb_invc   TYPE char08,      " Unilever-Investee Company
            /bic/zfb_cang   TYPE char03,      " Unilever-Cost Analysis Group
            /bic/zfb_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
            /bic/zfb_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
            /bic/zfb_prgp   TYPE char08,      " Unilever-Product Category

            /1fb/cs_trn_lc  TYPE string,      " Unilever-Period value in Local currency
            /1fb/cs_trn_gc type string,       "Unilever -Period Value in Global Currency
            /1fb/cs_trn_qty TYPE p DECIMALS 3," Unilever-Periodic quantity
            /bic/zfb_doct   TYPE CHAR03,
            /bic/zfb_ALCO   TYPE CHAR08,
            /1fb/curkey_lc  type CHAR05,
            /bic/zfb_ct     TYPE N LENGTH 2,
          END OF ty_download.


* flag
  DATA flg_chk TYPE c.
*
  DATA: lr_s_data_out TYPE REF TO data,
        lr_t_data_out TYPE REF TO data,
        l_outtype     TYPE field_type VALUE 'UCR_SX_TX_DATA_LST',
        lr            TYPE REF TO data,
        lo_conv       TYPE REF TO lcl_convert_output,
        lt_char       TYPE lcl_convert_output=&amp;gt;th_comp,
        ls_comp       TYPE lcl_convert_output=&amp;gt;s_comp,
        lr_s_data     TYPE REF TO data,
        lr_t_data     TYPE REF TO data,
        l_filename    TYPE string,
        l_action      TYPE i,
        l_path        TYPE string,
        l_seperator   TYPE char01 VALUE 'X',
        l_fullpath    TYPE string,
        l_mmyy        TYPE string,
        lr_sel_data   TYPE REF TO data,
        lr_t_val      TYPE REF TO data,
        lr_t_final    TYPE REF TO data,
        lr_val        TYPE REF TO data,
        ls_download   TYPE REF TO data,
        lt_download   TYPE REF TO data,
        ls_sel        TYPE REF TO data,
        ls_msg        TYPE uc0_s_message.

** SOC by Dpak-------------------------------------------------------------------------------------------
** Changed by Deepak N Jain, IBM on 16/11/2006 as the corresponding field name assigned by Ramesh from
** the structure &amp;lt;LS_DATA_OUT&amp;gt; are not matching. This is because of the new cube from whch the Financial
** data is coming now. The new cube is ZFBCS_T1 which has replaced the old cube ZCS_T1.
** Hence, Short Dump on Execution.
**-------------------------------------------------------------------------------------------------------

**  DATA: l_comp        TYPE string VALUE '/BIC/ZCS_COMP',  " Unilever-Company
**        l_cgcomp      TYPE string VALUE '/1FB/SEM_CGCOMP'," Unilever-Consolidation Group
**        l_pcomp       TYPE string VALUE '/BIC/ZCS_PCOM',  " Unilever-Partner Company
**        l_doct        TYPE string VALUE '/BIC/ZCS_DOCT',  " Unilever-Document type
**        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
**        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
**        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
**        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
**        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
**        l_low         TYPE string VALUE 'LOW'.

  DATA: l_comp        TYPE string VALUE '/BIC/ZFB_COMP',  " Unilever-Company
        l_cgcomp      TYPE string VALUE '/BIC/ZFB_CG1',   " Unilever-Consolidation Group
        l_pcomp       TYPE string VALUE '/BIC/ZFB_PCOM',  " Unilever-Partner Company
        l_doct        TYPE string VALUE '/BIC/ZFB_DOCT',  " Unilever-Document type
        l_invc        TYPE string VALUE '/BIC/ZFB_INVC',  " Unilever-Investee Company
        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
        l_trn_gc      TYPE string VALUE '/1FB/CS_TRN_GC', "Unilever -Period Vallue in Global Currency
        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
        l_low         TYPE string VALUE 'LOW',
        l_alco        TYPE string VALUE '/bic/zfb_ALCO',
        l_curkey      TYPE string VALUE '/1fb/curkey_lc',
        l_zfb_ct      TYPE string VALUE '/bic/zfb_ct',
        l_move        TYPE string VALUE '/BIC/ZFB_MOVE',
        l_cang        TYPE string VALUE '/BIC/ZFB_CANG',
        l_ad          TYPE string VALUE '/BIC/ZFB_AD',
        l_cd          TYPE string VALUE '/BIC/ZFB_CD',
        l_csplevel    TYPE string VALUE 'CS_PLEVEL',
        l_prgp        TYPE string VALUE '/BIC/ZFB_PRGP'.



  FIELD-SYMBOLS: &amp;lt;lth_data&amp;gt; TYPE HASHED TABLE,
                 &amp;lt;lts_data&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_wa&amp;gt;   TYPE ANY.

  DATA: lp_data TYPE REF TO DATA.

** EOC by Dpak-----------------------------------------------------------------------------------------------

** future use **
**  FISCVARNT TYPE L0002FISCVARNT,
**  FISCPERIOD TYPE L0002FISCPERIOD,
**  /BIC/ZFB_VERS TYPE L0002/BIC/ZFB_VERS,
**  /BIC/ZFB_CG1 TYPE L0002/BIC/ZFB_CG1,
**  /BIC/ZFB_COMP TYPE L0002/BIC/ZFB_COMP,
**  /1FB/CS_CHART TYPE L0002/1FB/CS_CHART,
**  /BIC/ZFB_MOVE TYPE L0002/BIC/ZFB_MOVE,
**  /BIC/ZFB_PCOM TYPE L0002/BIC/ZFB_PCOM,
**  ACQ_YEAR TYPE L0002ACQ_YEAR,
**  ACQ_PER TYPE L0002ACQ_PER,
**  /BIC/ZFB_INVC TYPE L0002/BIC/ZFB_INVC,
**  /BIC/ZFB_ALCO TYPE L0002/BIC/ZFB_ALCO,
**  CS_PLEVEL TYPE L0002CS_PLEVEL,
**  /BIC/ZFB_DOCT TYPE L0002/BIC/ZFB_DOCT,
**  BCS_CTFLG TYPE L0002BCS_CTFLG,
**  UNIT TYPE L0002UNIT,
**  /1FB/CURKEY_TC TYPE L0002/1FB/CURKEY_TC,
**  /1FB/CURKEY_LC TYPE L0002/1FB/CURKEY_LC,
**  /1FB/CURKEY_GC TYPE L0002/1FB/CURKEY_GC,
**  /BIC/ZFB_PRGP TYPE L0002/BIC/ZFB_PRGP,
**  /BIC/ZFB_COUN TYPE L0002/BIC/ZFB_COUN,
**  /BIC/ZFB_CANG TYPE L0002/BIC/ZFB_CANG,
**  /1FB/FUNC_AREA TYPE L0002/1FB/FUNC_AREA,
**  /BIC/ZFB_CT TYPE L0002/BIC/ZFB_CT,
**  /BIC/ZFB_CD TYPE L0002/BIC/ZFB_CD,
**  /BIC/ZFB_AD TYPE L0002/BIC/ZFB_AD,
**  /BIC/ZFB_FR01 TYPE L0002/BIC/ZFB_FR01,
**  /BIC/ZFB_FR02 TYPE L0002/BIC/ZFB_FR02,
**  FISCYEAR TYPE L0002FISCYEAR,
**  /BIC/ZFB_ITEM TYPE L0002/BIC/ZFB_ITEM,
** future use **

  TYPES: BEGIN OF screen_params,
    ZCONGRP_CHK type string,
    ZCOMP_CHK type string,
    ZFSITEM_CHK type string,
    ZMOV_CHK type string,
    ZFUNC_CHK type string,
    ZACTDISP_CHK type string,
    ZCOSTANAL_CHK type string,
    ZCONTDIS_CHK type string,
    ZPROCAT_CHK type string,
    ZPARTCOMP_CHK type string,
    ZINV_CHK type string,
    ZDOCTYPE_CHK type string,
    ZPOST_CHK type string,
    ZCURKEY4T_CHK type string,
    ZCURKEY_I_CHK type string,
    END OF screen_params.

  Data: param_struct type screen_params.

  FIELD-SYMBOLS: &amp;lt;lt_data_out&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_out&amp;gt; TYPE ANY,
                 &amp;lt;ls_data&amp;gt;     TYPE ANY,
                 &amp;lt;ls_data_cop&amp;gt; TYPE ANY,
                 &amp;lt;lt_data_std&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_std&amp;gt; TYPE ANY,
                 &amp;lt;ls_download&amp;gt;  TYPE ANY,
                 &amp;lt;lt_download&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;comp&amp;gt;        TYPE ANY,
                 &amp;lt;cgcomp&amp;gt;      TYPE ANY,
                 &amp;lt;pcomp&amp;gt;       TYPE ANY,
                 &amp;lt;doct&amp;gt;        TYPE ANY,
                 &amp;lt;plevel&amp;gt;      TYPE ANY,
                 &amp;lt;tc&amp;gt;          TYPE ANY,
                 &amp;lt;invc&amp;gt;        TYPE ANY,
                 &amp;lt;alco&amp;gt;        TYPE ANY,
                 &amp;lt;ct&amp;gt;          TYPE ANY,
                 &amp;lt;CURKEY&amp;gt;      TYPE ANY,
                 &amp;lt;qty&amp;gt;         TYPE ANY,
                 &amp;lt;prgp&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc&amp;gt;      TYPE ANY,
                 &amp;lt;trn_gc&amp;gt;      TYPE ANY,
                 &amp;lt;comp1&amp;gt;       TYPE ANY,
                 &amp;lt;mov&amp;gt;         TYPE ANY,
                 &amp;lt;cang&amp;gt;        TYPE ANY,
                 &amp;lt;ad&amp;gt;          TYPE ANY,
                 &amp;lt;cd&amp;gt;          TYPE ANY,
                 &amp;lt;csplevel&amp;gt;    TYPE ANY,
                 &amp;lt;mov1&amp;gt;         TYPE ANY,
                 &amp;lt;cang1&amp;gt;        TYPE ANY,
                 &amp;lt;ad1&amp;gt;          TYPE ANY,
                 &amp;lt;cd1&amp;gt;          TYPE ANY,
                 &amp;lt;csplevel1&amp;gt;    TYPE ANY,
                 &amp;lt;cgcomp1&amp;gt;     TYPE ANY,
                 &amp;lt;pcomp1&amp;gt;      TYPE ANY,
                 &amp;lt;doct1&amp;gt;       TYPE ANY,
                 &amp;lt;plevel1&amp;gt;     TYPE ANY,
                 &amp;lt;tc1&amp;gt;         TYPE ANY,
                 &amp;lt;invc1&amp;gt;       TYPE ANY,
                 &amp;lt;alco1&amp;gt;        TYPE ANY,
                 &amp;lt;prgp1&amp;gt;         TYPE ANY,
                 &amp;lt;ct1&amp;gt;          TYPE ANY,
                 &amp;lt;CURKEY1&amp;gt;      TYPE ANY,
                 &amp;lt;qty1&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc1&amp;gt;     TYPE ANY,
                 &amp;lt;trn_gc1&amp;gt;      TYPE ANY,
                  &amp;lt;Rcomp&amp;gt;       TYPE ANY,
                 &amp;lt;Rcgcomp&amp;gt;     TYPE ANY,
                 &amp;lt;Rpcomp&amp;gt;      TYPE ANY,
                 &amp;lt;Rdoct&amp;gt;       TYPE ANY,
                 &amp;lt;Rplevel&amp;gt;     TYPE ANY,
                 &amp;lt;Rtc&amp;gt;         TYPE ANY,
                 &amp;lt;Rinvc&amp;gt;       TYPE ANY,
                 &amp;lt;Rqty&amp;gt;        TYPE ANY,
                 &amp;lt;Rtrn_lc&amp;gt;     TYPE ANY,
                 &amp;lt;Rtrn_gc&amp;gt;      TYPE ANY,
                 &amp;lt;RCURKEY&amp;gt;      TYPE ANY,
                 &amp;lt;Ralco&amp;gt;        TYPE ANY,
                 &amp;lt;Rmov&amp;gt;         TYPE ANY,
                 &amp;lt;Rcang&amp;gt;        TYPE ANY,
                 &amp;lt;Rad&amp;gt;          TYPE ANY,
                 &amp;lt;Rcd&amp;gt;          TYPE ANY,
                 &amp;lt;Rcsplevel&amp;gt;    TYPE ANY,
                 &amp;lt;Rprgp&amp;gt;        TYPE ANY,
                 &amp;lt;Rct&amp;gt;          TYPE ANY,
                 &amp;lt;bu&amp;gt;          TYPE ANY,
                 &amp;lt;bu1&amp;gt;         TYPE ANY,
                 &amp;lt;low&amp;gt;         TYPE ANY,
                 &amp;lt;l_year&amp;gt;      TYPE ANY ,
                 &amp;lt;l_period&amp;gt;    TYPE ANY ,
                 &amp;lt;l_mmyy&amp;gt;      TYPE ANY,
                 &amp;lt;ls_sel_data&amp;gt; TYPE ANY,
                 &amp;lt;ls_val&amp;gt;      TYPE zbcs_check_val,
                 &amp;lt;lt_t_val&amp;gt;    TYPE STANDARD TABLE,
                 &amp;lt;lt_t_final&amp;gt;  TYPE STANDARD TABLE.
**************** Begin Of Addtion - ASIF MAQBOOL ******************
  Data: BEGIN OF l_s_tab,
        values TYPE C LENGTH 400,
       end OF l_s_tab,
      gs_param LIKE LINE OF gt_param,
      l_temp_store LIKE gt_param.

  Field-SYMBOLS: &amp;lt;gt_param&amp;gt; TYPE ANY TABLE,
                 &amp;lt;final_gt&amp;gt; TYPE any ,
                 &amp;lt;gs_fieldname&amp;gt; TYPE any,
                 &amp;lt;gs_value&amp;gt; TYPE any.

  Data: l_t_tab TYPE TABLE OF string INITIAL SIZE 0,
       str TYPE string,
       str1 TYPE string.
**************** End Of Addtion - ASIF MAQBOOL ******************
* create Line-structure of data table
  CREATE DATA lr_s_data LIKE LINE OF ct_data.
  ASSIGN lr_s_data-&amp;gt;* TO &amp;lt;ls_data_std&amp;gt;.

** create cumulation table
  CREATE DATA lr_t_data LIKE STANDARD TABLE OF &amp;lt;ls_data_std&amp;gt;.
  ASSIGN lr_t_data-&amp;gt;* TO &amp;lt;lt_data_std&amp;gt;.

  LOOP AT ct_data INTO &amp;lt;ls_data_std&amp;gt;.
    COLLECT &amp;lt;ls_data_std&amp;gt; INTO &amp;lt;lt_data_std&amp;gt;.
  ENDLOOP.

  FREE ct_data.

* get reference for outtab / create outtab
  CALL METHOD go_model-&amp;gt;create_data_reference
    EXPORTING
      io_tx_data_io_type = go_model-&amp;gt;ds_tx_data_io_type-totals
      i_type             = l_outtype "'UCR_SX_TX_DATA_LST'
    IMPORTING
      er_data            = lr_s_data_out.

  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_cop&amp;gt;.

  CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_t_data_out-&amp;gt;* TO &amp;lt;lt_data_out&amp;gt;.

  CREATE DATA lr LIKE LINE OF &amp;lt;lt_data_std&amp;gt;.

  ASSIGN lr-&amp;gt;* TO &amp;lt;ls_data&amp;gt;.

  CALL METHOD lcl_convert_output=&amp;gt;get_instance
    EXPORTING
      io_model    = go_model
      it_char     = lt_char
    IMPORTING
      eo_instance = lo_conv
    CHANGING
      cs_data     = &amp;lt;ls_data&amp;gt;.

  ASSIGN: l_comp   TO &amp;lt;comp&amp;gt;,
          l_cgcomp TO &amp;lt;cgcomp&amp;gt;,
          l_pcomp  TO &amp;lt;pcomp&amp;gt;,
          l_invc   TO &amp;lt;invc&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_plevel TO &amp;lt;plevel&amp;gt;,
          l_tc     TO &amp;lt;tc&amp;gt;,
          l_qty    TO &amp;lt;qty&amp;gt;,
          l_trn_lc TO &amp;lt;trn_lc&amp;gt;,
          l_trn_gc TO &amp;lt;trn_gc&amp;gt;,
          l_alco   TO &amp;lt;alco&amp;gt;,
          l_curkey TO &amp;lt;CURKEY&amp;gt;,
          l_zfb_ct TO &amp;lt;CT&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_bu     TO &amp;lt;bu&amp;gt;,
          l_mmyy   TO &amp;lt;l_mmyy&amp;gt;,
          l_low    TO &amp;lt;low&amp;gt;,
          l_move   TO &amp;lt;mov&amp;gt;,
          l_cang   TO &amp;lt;cang&amp;gt;,
          l_ad     TO &amp;lt;ad&amp;gt;,
          l_cd     TO &amp;lt;cd&amp;gt;,
          l_csplevel TO &amp;lt;csplevel&amp;gt;,
          l_prgp     TO &amp;lt;prgp&amp;gt;    .


  LOOP AT &amp;lt;lt_data_std&amp;gt; INTO &amp;lt;ls_data&amp;gt;.    "  loop

    CALL METHOD lo_conv-&amp;gt;convert_output.      "end of "wis240605

*     fill outtab
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_char
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_kfig
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.

    " --------------------- START OF COMMENT BY ASIF MAQBOOL --------------------------------------------
    " REASON :  WE DONT NEED 4 RULE VALIDATION for aggregated data FOR ONLY YBBCSDOWNLOAD Transaction. --------------

*    IF ct_task = c_task01 OR ct_task = space . "'it can be T2700 or blank
*
**************************************************************
******  aggregate the transactionaldata for given Rules  *****
**************************************************************
*
    ASSIGN COMPONENT : &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;,
                       &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                       &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                       &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;,
                       &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;invc1&amp;gt;, "added by Asif M.
                       &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                       &amp;lt;tc&amp;gt;     OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;tc1&amp;gt;,
                       &amp;lt;qty&amp;gt;    OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;qty1&amp;gt;,
                       &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_lc1&amp;gt;,
                       &amp;lt;trn_gc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_gc1&amp;gt;,
                       &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;alco1&amp;gt;,
                       &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;CURKEY1&amp;gt;,
                       &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;CT1&amp;gt;,
                       &amp;lt;DOCT&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;.

***** 1st Rule ****
** dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
*      IF &amp;lt;trn_lc1&amp;gt; = 0 AND &amp;lt;qty1&amp;gt; = 0.
*        CONTINUE.
*      ENDIF.
*
***** 2nd Rule ****
** delete the Posting levels if it is &amp;gt; 1 and clear to blank  CS_PLEVEL
*      CHECK &amp;lt;plevel1&amp;gt; LE 1.
*      CLEAR &amp;lt;plevel1&amp;gt;.
*
***** 3rd Rule ****
** replace the Unilever Company with CG without prefix G and compare with Partner comp for deletion
** /BIC/ZCS_COMP with   /1FB/SEM_CGCOMP and check with /BIC/ZCS_PCOM
*
*      IF ct_task &amp;lt;&amp;gt; space.
****  code added by Ramesh for the removal GBRNCH  records while downloading the file.
***********************************************************************
***** code for removal of GBRNCH records only - Hardcode - sample code
**        IF &amp;lt;cgcomp1&amp;gt; &amp;lt;&amp;gt; 'GBRNCH'.   " to avoid BRNCH records
*** replace Company with CG without prefix G when task name is not blank
**          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
**        ELSE.
**          CONTINUE.
**        ENDIF.
***** code for removal of GBRNCH records only - Hardcode - sample code
***********************************************************************
*
****  the assumption here,is consider only records with Legal entity as numeric excepting the first character
*        IF &amp;lt;cgcomp1&amp;gt;+1 CN sy-abcde.   " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
*          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
*        ELSE.
*          CONTINUE.
*        ENDIF.
*
*
*      ENDIF.
*
** removing leading zero's as SAP sometimes adding them to &amp;lt;pcomp1&amp;gt;.
**      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
**        EXPORTING
**          input  = &amp;lt;pcomp1&amp;gt;
**        IMPORTING
**          output = &amp;lt;pcomp1&amp;gt;.

    PERFORM f_alpha_conversion USING &amp;lt;comp1&amp;gt;
                                CHANGING &amp;lt;comp1&amp;gt;.

    PERFORM f_alpha_conversion USING &amp;lt;pcomp1&amp;gt;
                               CHANGING &amp;lt;pcomp1&amp;gt;.

    " removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.

    PERFORM f_alpha_conversion USING &amp;lt;invc1&amp;gt;
                               CHANGING &amp;lt;invc1&amp;gt;.



*      CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;pcomp1&amp;gt;.
*
***** 4rth Rule ****
** initialise Document type &amp;amp; PV TC to blank   /BIC/ZCS_DOCT &amp;amp; /1FB/CS_TRN_TC
*      CLEAR: &amp;lt;doct1&amp;gt;,&amp;lt;tc1&amp;gt;.
*
*    ENDIF.


    " ----------- END OF COMMENT BY ASIF MAQBOOL -----------------------------------------------------------------------
    COLLECT: &amp;lt;ls_data_out&amp;gt; INTO &amp;lt;lt_data_out&amp;gt;.

  ENDLOOP.          " end loop


  IF &amp;lt;lt_data_out&amp;gt; IS INITIAL.
    PERFORM f_build_msgs USING 'UCM0'
                               'W'
                               '053'
                               text-102
                               space "ct_task
                               space
                               space
                      CHANGING ct_message.
    RETURN.
    MESSAGE e208(00) WITH text-102.
    EXIT.
  ENDIF.


* perform various steps based on task name
  CASE ct_task.

    WHEN c_task01 OR space.              " 'T2700' or blank


* download the data into a tab delimited file
*****************************************************
****             start of Task 0001              ****
*****************************************************
* create Line-structure of download table
      CREATE DATA ls_download TYPE ty_download.
      ASSIGN ls_download-&amp;gt;* TO &amp;lt;ls_download&amp;gt;.

** create Download data internal table for task T2700
      CREATE DATA lt_download LIKE STANDARD TABLE OF &amp;lt;ls_download&amp;gt;.
      ASSIGN lt_download-&amp;gt;* TO &amp;lt;lt_download&amp;gt;.

      LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

        MOVE-CORRESPONDING &amp;lt;ls_data_out&amp;gt; TO &amp;lt;ls_download&amp;gt;.

        ASSIGN COMPONENT &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;trn_gc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_gc1&amp;gt;.
**** 5th Rule ****
* Move the Negative sign to front

        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_lc1&amp;gt;.
        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_gc1&amp;gt;.
        INSERT &amp;lt;ls_download&amp;gt;  INTO TABLE &amp;lt;lt_download&amp;gt;.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.




      FIELD-SYMBOLS: &amp;lt;fs1&amp;gt; type ANY TABLE,
                     &amp;lt;fs_Struct&amp;gt; type any.



      Data: fs_Struct type ref to data,
            fs_table TYPE REF TO data.



      CREATE DATA fs_Struct like &amp;lt;ls_data_out&amp;gt;.
      ASSIGN fs_Struct-&amp;gt;* to &amp;lt;fs_Struct&amp;gt;.

      CREATE DATA fs_table like TABLE OF &amp;lt;fs_Struct&amp;gt;.
      ASSIGN fs_table-&amp;gt;* TO &amp;lt;fs1&amp;gt;.

      CLEAR: l_path,l_filename,l_fullpath,l_action.
*
*      CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
*       EXPORTING
*         window_title            = 'Download aggregated BCS data to Tab Delimited file'
*         default_extension       = 'txt'
**   DEFAULT_FILE_NAME       = dynamic file name as like ALE settings
*         file_filter             = 'Text files (*.txt)'
*       IMPORTING
*         filename                = l_filename
*         path                    = l_path
*         fullpath                = l_fullpath
*         user_action             = l_action .

      CALL METHOD cl_gui_cfw=&amp;gt;flush.



      " *************************** START OF CHANGE - ASIF MAQBOOL ************************
      IF l_action = 0 OR l_action = 1.

        " Create Header Data for Download
        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.

        APPEND '100' to l_t_tab.
        READ TABLE gt_param INDEX 6 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
        Clear gs_param.
        READ TABLE gt_param INDEX 4 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.



        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
        CLEAR l_t_tab.
        INSERT str1 INTO TABLE l_t_tab.
        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.
        "If atleast one of the aggregation checkoxes are on.
        IF Aggr_swt = 'X'.
******************************** TEST *******************************
          DATA: l_s_download type REF TO DATA.
          FIELD-SYMBOLS: &amp;lt;ls&amp;gt; type any.

          CREATE DATA l_s_download TYPE ty_download.
          ASSIGN l_s_download-&amp;gt;* TO &amp;lt;LS&amp;gt;.

          DATA: R_s_download type REF TO DATA.
          FIELD-SYMBOLS: &amp;lt;Rs&amp;gt; type any,
                         &amp;lt;Wa&amp;gt; type any.

          CREATE DATA R_s_download TYPE ty_download.
          ASSIGN R_s_download-&amp;gt;* TO &amp;lt;RS&amp;gt;.

          DATA: TOTALLINES TYPE I,
                Initial TYPE I VALUE 1.

          FIELD-SYMBOLS: &amp;lt;t_Hashed&amp;gt; type any.
          DATA: g_struct type REF TO cl_abap_structdescr,
                g_table type ref to CL_ABAP_TABLEDESCR,
                tkeys type ABAP_KEYDESCR_TAB.



          move-CORRESPONDING chk_params to param_struct.

          CALL FUNCTION 'Z_RTTI_STRUCTURE'
            EXPORTING
              I_ZCONGRP_CHK   = param_struct-ZCONGRP_CHK
              I_ZCOMP_CHK     = param_struct-ZCOMP_CHK
              I_ZFSITEM_CHK   = param_struct-ZFSITEM_CHK
              I_ZMOV_CHK      = param_struct-ZMOV_CHK
              I_ZFUNC_CHK     = param_struct-ZFUNC_CHK
              I_ZACTDISP_CHK  = param_struct-ZACTDISP_CHK
              I_ZCOSTANAL_CHK = param_struct-ZCOSTANAL_CHK
              I_ZCONTDIS_CHK  = param_struct-ZCONTDIS_CHK
              I_ZPROCAT_CHK   = param_struct-ZPROCAT_CHK
              I_ZPARTCOMP_CHK = param_struct-ZPARTCOMP_CHK
              I_ZINV_CHK      = param_struct-ZINV_CHK
              I_ZDOCTYPE_CHK  = param_struct-ZDOCTYPE_CHK
              I_ZPOST_CHK     = param_struct-ZPOST_CHK
              I_ZCURKEY4T_CHK = param_struct-ZCURKEY4T_CHK
              I_ZCURKEY_I_CHK = param_struct-ZCURKEY_I_CHK
            IMPORTING
              E_T_STRUCT      = g_struct
              T_KEYS          = tkeys.

          DATA : WA TYPE REF TO DATA.
          CREATE DATA WA TYPE HANDLE g_struct.
          ASSIGN WA-&amp;gt;* TO &amp;lt;WA&amp;gt;.

          CALL FUNCTION 'Z_RTTI_HASHEDTABLE'
            EXPORTING
              G_STRUCT    = g_struct
              G_T_KEYS    = tkeys
              I_TempTable = &amp;lt;fs1&amp;gt;
            IMPORTING
              G_T_TYPE    = g_table.


          FIELD-SYMBOLS: &amp;lt;t_wa&amp;gt; type ANY TABLE.

          DATA gr_itab TYPE REF TO DATA.
          CREATE DATA gr_itab TYPE HANDLE g_table.
          ASSIGN gr_itab-&amp;gt;* TO &amp;lt;T_WA&amp;gt;.

          DATA: OBJ1 type REF TO data.
          FIELD-SYMBOLS: &amp;lt;fs_temp&amp;gt; type ANY.
          CREATE DATA obj1 LIKE LINE OF &amp;lt;T_Wa&amp;gt;.
          ASSIGN OBJ1-&amp;gt;* TO &amp;lt;fs_temp&amp;gt;.

          " ASSIGN FIELD SYMBOLS TO EACH COMP OF LS.
          ASSIGN COMPONENT :     &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;lS&amp;gt; TO &amp;lt;comp1&amp;gt;,
                                 &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                                 &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                                 &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;doct1&amp;gt;,
                                 &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;invc1&amp;gt;,
                                 &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                                 &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;alco1&amp;gt;,
                                 &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;CURKEY1&amp;gt;,
                                 &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;lS&amp;gt; TO &amp;lt;CT1&amp;gt;,
                                 &amp;lt;mov&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;mov1&amp;gt;,
                                 &amp;lt;ad&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;ad1&amp;gt;,
                                 &amp;lt;cd&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cd1&amp;gt;,
                                 &amp;lt;cang&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cang1&amp;gt;,
                                 &amp;lt;csplevel&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;csplevel1&amp;gt;,
                                 &amp;lt;prgp&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;prgp1&amp;gt;

                                .
          " ASSIGN FIELD SYMBOLS TO EACH COMP OF RS.

          ASSIGN COMPONENT :     &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;RS&amp;gt; TO &amp;lt;Rcomp&amp;gt;,
                                 &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcgcomp&amp;gt;, "
                                 &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rpcomp&amp;gt;,
                                 &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rdoct&amp;gt;,
                                 &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rinvc&amp;gt;,
                                 &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rplevel&amp;gt;, "
                                 &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Ralco&amp;gt;,
                                 &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;RCURKEY&amp;gt;,
                                 &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;RS&amp;gt; TO &amp;lt;RCT&amp;gt;,
                                 &amp;lt;mov&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rmov&amp;gt;,
                                 &amp;lt;ad&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rad&amp;gt;,
                                 &amp;lt;cd&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcd&amp;gt;,
                                 &amp;lt;cang&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcang&amp;gt;,
                                 &amp;lt;csplevel&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcsplevel&amp;gt;,
                                 &amp;lt;prgp&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rprgp&amp;gt;
                                 .

          DESCRIBE TABLE &amp;lt;lt_download&amp;gt; LINES TOTALLINES.

          LOOP AT &amp;lt;LT_DOWNLOAD&amp;gt; INTO &amp;lt;LS&amp;gt;.

            Initial = 1. " Initialize to 1 cuz

            WHILE Initial &amp;lt;&amp;gt; TOTALLINES. " Do it until end of ltdownload lines

              READ TABLE &amp;lt;LT_DOWNLOAD&amp;gt; INDEX Initial INTO &amp;lt;rs&amp;gt;.


              IF ( &amp;lt;comp1&amp;gt; = &amp;lt;Rcomp&amp;gt; AND  &amp;lt;mov1&amp;gt; = &amp;lt;Rmov&amp;gt; AND &amp;lt;pcomP1&amp;gt; = &amp;lt;Rpcomp&amp;gt; AND
                   &amp;lt;invc1&amp;gt; = &amp;lt;Rinvc&amp;gt; AND &amp;lt;cang1&amp;gt; = &amp;lt;Rcang&amp;gt; AND &amp;lt;ad1&amp;gt; = &amp;lt;Rad&amp;gt; AND &amp;lt;cd1&amp;gt; = &amp;lt;Rcd&amp;gt; AND
                   &amp;lt;prgp1&amp;gt; = &amp;lt;Rprgp&amp;gt; AND &amp;lt;DOCT1&amp;gt; = &amp;lt;RDOCT&amp;gt;
                  ).

                MOVE-CORRESPONDING &amp;lt;RS&amp;gt; TO &amp;lt;WA&amp;gt;.
                MOVE-CORRESPONDING &amp;lt;RS&amp;gt; TO &amp;lt;fs_temp&amp;gt;.
                COLLECT &amp;lt;fs_temp&amp;gt; inTO &amp;lt;T_wA&amp;gt;.
                " COLLECT &amp;lt;fs_Struct&amp;gt; into &amp;lt;fs1&amp;gt;.
                " COLLECT &amp;lt;fs_Struct&amp;gt; into &amp;lt;t_Wa&amp;gt;.


              endif.


              Initial = Initial + 1.

            ENDWHILE.



          ENDLOOP.

          get REFERENCE OF &amp;lt;t_wa&amp;gt; INTO lo_dataref.

          FREE ct_Data.
          "ct_data = &amp;lt;T_wa&amp;gt;.

*" THis is needed to convert the hashed table to
          " standard table as Gui_download only accepts standard table
*CREATE DATA lp_data LIKE LINE OF &amp;lt;t_wa&amp;gt;.
*ASSIGN lp_data-&amp;gt;* TO &amp;lt;ls_wa&amp;gt;.
*
*CREATE DATA lp_data LIKE STANDARD TABLE OF &amp;lt;ls_Wa&amp;gt;.
*ASSIGN lp_data-&amp;gt;* TO &amp;lt;lts_data&amp;gt;.
*
*&amp;lt;lts_data&amp;gt; = &amp;lt;t_wa&amp;gt;.
          FIELD-SYMBOLS: &amp;lt;fs&amp;gt; type any,
                         &amp;lt;fs2&amp;gt; type any.

          DATA: fs type REF TO data.
          DATA: fs2 type REF TO data.
          CREATE DATA fs like LINE OF &amp;lt;lt_data_out&amp;gt;.
          ASSIGN fs-&amp;gt;* to &amp;lt;fs&amp;gt;.

          CREATE DATA fs2 like LINE OF &amp;lt;t_Wa&amp;gt;.
          ASSIGN fs2-&amp;gt;* to &amp;lt;fs2&amp;gt;.


          clear &amp;lt;lt_data_out&amp;gt;.
          loop at &amp;lt;t_Wa&amp;gt; into &amp;lt;fs2&amp;gt;.

            move-CORRESPONDING &amp;lt;fs2&amp;gt; to &amp;lt;fs&amp;gt;.
            insert &amp;lt;fs&amp;gt; into  TABLE &amp;lt;lt_data_out&amp;gt;.

          endloop.


          ct_data = &amp;lt;lt_data_out&amp;gt;.



*
*" Get the header data downloaded
*CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.

          " Now the checkboxes aggregated Data.
*CALL FUNCTION 'Z_DOWNLOAD_DATA'
*          EXPORTING
*               I_FULLPATH = l_fullpath
*               I_SEPERATOR = l_seperator
*               I_DATA = &amp;lt;lts_data&amp;gt;.


*********************** TEST *****************************

        ELSEIF Aggr_swt &amp;lt;&amp;gt; 'X'.
*
*CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.
          " NON-Checkbox Data Download
*CALL FUNCTION 'Z_DOWNLOAD_DATA'
*          EXPORTING
*               I_FULLPATH = l_fullpath
*               I_SEPERATOR = l_seperator
*               I_DATA = &amp;lt;lt_download&amp;gt;.


        endif.

*" Create Header Data for Download
*        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.
*
*        APPEND '100' to l_t_tab.
*          READ TABLE gt_param INDEX 6 INTO gs_param.
*          ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*        Clear gs_param.
*          READ TABLE gt_param INDEX 4 INTO gs_param.
*          ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*
*
*        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
*        CLEAR l_t_tab.
*        INSERT str1 INTO TABLE l_t_tab.
*        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.

        "  To Start by adding the Header Data.
*        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.
*



        " Now append the Data after the header data insertion.
*        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename                = l_fullpath
*            write_field_separator   = l_seperator "SPACE
*            append                  = 'X'
*          CHANGING
*            data_tab                = &amp;lt;lt_download&amp;gt;
*          EXCEPTIONS
*            file_write_error        = 1
*            no_batch                = 2
*            gui_refuse_filetransfer = 3
*            invalid_type            = 4
*            no_authority            = 5
*            unknown_error           = 6
*            header_not_allowed      = 7
*            separator_not_allowed   = 8
*            filesize_not_allowed    = 9
*            header_too_long         = 10
*            dp_error_create         = 11
*            dp_error_send           = 12
*            dp_error_write          = 13
*            unknown_dp_error        = 14
*            access_denied           = 15
*            dp_out_of_memory        = 16
*            disk_full               = 17
*            dp_timeout              = 18
*            file_not_found          = 19
*            dataprovider_exception  = 20
*            control_flush_error     = 21
*            not_supported_by_gui    = 22
*            error_no_gui            = 23
*            OTHERS                  = 24.


        " *************************** END OF CHANGE - ASIF MAQBOOL ************************






        IF sy-subrc &amp;lt;&amp;gt; 0.
*          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          PERFORM f_build_msgs USING sy-msgid
                                     sy-msgty
                                     sy-msgno
                                     sy-msgv1
                                     sy-msgv2
                                     sy-msgv3
                                     sy-msgv4
                            CHANGING ct_message.
          RETURN.

        ENDIF.

      ENDIF.

*****************************************************
****               End of Task 0001              ****
*****************************************************

    WHEN c_task02.                                          "'T2490'.

* switch to validations on aggregated transactional data
*****************************************************
**** Start of Task 0002 validations ****
*****************************************************

* create Line-structure of gt_sel(selection) data table
      CREATE DATA lr_sel_data LIKE LINE OF ct_sel." zbcs_check_val
      ASSIGN lr_sel_data-&amp;gt;* TO &amp;lt;ls_sel_data&amp;gt;.

* create validation table
      CREATE DATA lr_t_val TYPE STANDARD TABLE OF  zbcs_check_val.
      ASSIGN lr_t_val-&amp;gt;* TO &amp;lt;lt_t_val&amp;gt;.


* create data table that does not fulfill rules after validation
      CREATE DATA lr_t_final LIKE STANDARD TABLE OF  &amp;lt;ls_data_out&amp;gt;.
      ASSIGN lr_t_final-&amp;gt;* TO &amp;lt;lt_t_final&amp;gt;.


* concatenate year &amp;amp; month to query custom table
      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCYEAR'.  "YYYY
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_year&amp;gt;.

      &amp;lt;l_mmyy&amp;gt; = &amp;lt;l_year&amp;gt;.

      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCPERIOD'."MM
      CHECK sy-subrc = 0.
      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;. " via BADI
**      ASSIGN COMPONENT 5 OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;.  " via report

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = &amp;lt;l_period&amp;gt;
        IMPORTING
          output = &amp;lt;l_period&amp;gt;.

      CONCATENATE &amp;lt;l_mmyy&amp;gt; &amp;lt;l_period&amp;gt;  INTO &amp;lt;l_mmyy&amp;gt;.

** get data for given criteria
      SELECT * INTO TABLE &amp;lt;lt_t_val&amp;gt; FROM zbcs_check_val
      WHERE valid_from LE &amp;lt;l_mmyy&amp;gt; AND
            valid_to   GE &amp;lt;l_mmyy&amp;gt;.
      IF sy-subrc &amp;lt;&amp;gt; 0.
*   error message
        PERFORM f_build_msgs USING 'UCM0'
                                   'E'
                                   '053'
                                   text-103
                                   space
                                   space
                                   space
                          CHANGING ct_message.
        RETURN.

      ENDIF.

      LOOP AT &amp;lt;lt_t_val&amp;gt; ASSIGNING &amp;lt;ls_val&amp;gt;.

        CASE &amp;lt;ls_val&amp;gt;-valid_rules.

          WHEN 'VAL_001'.
* meant for parallal cursor
*            READ TABLE &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; WITH KEY (l_comp) = &amp;lt;ls_val&amp;gt;-company
*                                                                 (l_bu)   = &amp;lt;ls_val&amp;gt;-bus_cost_unit.
*            CHECK sy-subrc = 0.
*            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; FROM sy-tabix.

            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

              ASSIGN COMPONENT: &amp;lt;bu&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;bu1&amp;gt;,
                                &amp;lt;comp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;.

*** inserting all error records which does not match 'VAL_001'
              CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-company AND &amp;lt;bu1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-bus_cost_unit.
              flg_chk = abap_true.
              COLLECT &amp;lt;ls_data_out&amp;gt;  INTO &amp;lt;lt_t_final&amp;gt;.
              PERFORM f_build_msgs USING 'UCM0'
                                         'E'
                                         '053'
                                         &amp;lt;ls_val&amp;gt;-valid_rules
                                         text-104
                                         &amp;lt;ls_val&amp;gt;-company
                                         &amp;lt;ls_val&amp;gt;-bus_cost_unit
                                CHANGING ct_message.

            ENDLOOP.
*** future use of further validation
***            CHECK flg_chk = abap_true.
***            flg_chk = abap_false.
***            PERFORM f_build_msgs USING 'UCM0'
***                           'E'
***                           '053'
***                           &amp;lt;ls_val&amp;gt;-valid_rules
***                           text-104
***                           &amp;lt;ls_val&amp;gt;-company
***                           &amp;lt;ls_val&amp;gt;-bus_cost_unit
***                  CHANGING ct_message.

***          WHEN 'VAL_002'.
*** Etc
*** future use of further validation

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_t_final&amp;gt;.

*****************************************************
**** End of Task  0002 validations ****
*****************************************************

    WHEN OTHERS.

** move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

  ENDCASE.

ENDFORM.                    " f_download_data_YBBCSDOWNLOAD
&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 12 Feb 2008 16:09:49 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-02-12T16:09:49Z</dc:date>
    <item>
      <title>First Project - BCS</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/first-project-bcs/m-p/3412786#M819632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;&lt;CODE&gt;
*----------------------------------------------------------------------*
***INCLUDE LUCR_LSTF03 .
*----------------------------------------------------------------------*
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;       Form  display_detail_list
*&amp;amp;---------------------------------------------------------------------*
FORM display_detail_list_subscreen.

  IF g_display_detail_again IS INITIAL.

    IF g_display_detail_next IS INITIAL.

* Header text is displayed as dyn. document
      IF go_dydo IS INITIAL.
        CREATE OBJECT go_dydo.
      ELSE.
        FREE  go_dydo.
        CLEAR go_dydo.
        CREATE OBJECT go_dydo.
        PERFORM free_create_screen_objects.
      ENDIF.

    ELSE.

      IF NOT go_dydo-&amp;gt;html_control IS INITIAL.
        CALL METHOD go_splitter_container-&amp;gt;remove_control
          EXPORTING
            row    = 1
            column = 1.
      ENDIF.

    ENDIF.
  ENDIF.

* Initialize document
  CALL METHOD go_dydo-&amp;gt;initialize_document.

  IF  LINES( gt_header ) &amp;gt; 0.
* Build and display detail-header
    PERFORM build_header TABLES gt_header
                         USING  go_dydo
                                gs_header.

  ENDIF.


* Merge header-document
  CALL METHOD go_dydo-&amp;gt;merge_document.

* set toolbar-added functions for detailed list
  REFRESH gt_toolbar.

  IF go_model-&amp;gt;ds_tx_data_io_type-documents IS BOUND.       "mb210303

    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_ENTRIES' '2',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '3',
                 gt_toolbar gs_toolbar 'UCR_PREV'    '4',
                 gt_toolbar gs_toolbar 'UCR_NEXT'    '5',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '6'.
  ELSE.                                                   "mb210202 beg.
    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_PREV'    '2',
                 gt_toolbar gs_toolbar 'UCR_NEXT'    '3',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '4'.
  ENDIF.                                                  "mb210202 end.

  SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.

* Display header
  CALL METHOD go_dydo-&amp;gt;display_document
    EXPORTING
      parent = go_container_head.

* Set header-control visible with user set or
* predefined height

  IF NOT go_splitter_container IS INITIAL.
    IF g_height IS INITIAL.
      g_height = 27.
    ENDIF.

    CALL METHOD go_splitter_container-&amp;gt;set_row_height
      EXPORTING
        id     = 1
        height = g_height.
  ENDIF.

* display detail-list

  CALL METHOD go_grid-&amp;gt;set_table_for_first_display
    EXPORTING
      i_bypassing_buffer   = 'X'
      is_layout            = gs_layout_save
      it_toolbar_excluding = gt_exclude_toolbar
    CHANGING
      it_fieldcatalog      = gt_fieldcat_d
      it_outtab            = &amp;lt;gt_outtab_detail&amp;gt;.

  IF NOT g_display_detail_next IS INITIAL.
    CALL METHOD go_grid-&amp;gt;refresh_table_display.
  ENDIF.

* Set cursor on selected row if necesary
  IF NOT gt_row_id_detail IS INITIAL.
    CALL METHOD go_grid-&amp;gt;set_selected_rows
      EXPORTING
        it_index_rows = gt_row_id_detail.

    REFRESH gt_row_id_detail.
  ENDIF.

  CLEAR: g_display_detail_next,
         g_display_detail_again.

ENDFORM.                    " display_detail_list_subscreen
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  display_main_list
*&amp;amp;---------------------------------------------------------------------*
FORM display_main_list_subscreen. "using i_reporting_logic type uc_flg.

  CLEAR g_detail.

* set toolbar-added functions
  REFRESH gt_toolbar.

  IF go_model-&amp;gt;ds_tx_data_io_type IS NOT INITIAL.

    IF go_model-&amp;gt;ds_tx_data_io_type-documents IS BOUND.     "mb210303
*        and i_reporting_logic is initial.
      PERFORM fill_tool_tab USING:
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                   gt_toolbar gs_toolbar 'UCR_ENTRIES' '2',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '3',
                   gt_toolbar gs_toolbar 'UCR_SEL_COND' '4',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '5'.
    ELSE.
      PERFORM fill_tool_tab USING:
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                   gt_toolbar gs_toolbar 'UCR_SEL_COND' '2',
                   gt_toolbar gs_toolbar 'UCR_DUMMY'   '3'.

    ENDIF.                                                  "mb210303
    SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.
  ELSE    .
    PERFORM fill_tool_tab USING:
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '1',
                 gt_toolbar gs_toolbar 'UCR_SEL_COND' '2',
                 gt_toolbar gs_toolbar 'UCR_DUMMY'   '3'.

    SET HANDLER go_event_grid-&amp;gt;handle_toolbar_comp   FOR go_grid.

  ENDIF.

* Set header-control invisible while main-list is displayed
  IF NOT go_splitter_container IS INITIAL.
* Header container can be set visible by user on main-screen
    CALL METHOD go_splitter_container-&amp;gt;set_row_height
      EXPORTING
        id     = 1
        height = 0.
    IF NOT go_dydo IS INITIAL.
* Display last header if user wants to set it visible
      CALL METHOD go_dydo-&amp;gt;display_document
        EXPORTING
          parent = go_container_head.
    ENDIF.
  ENDIF.

* subscreen with main list simply is started once again
* prepared with current user settings
  IF ( LINES( gt_fieldcat_save ) &amp;gt; 0 ) AND
     NOT g_display_main_again IS INITIAL.

    REFRESH gt_fieldcat.
    gt_fieldcat[] = gt_fieldcat_save[].
*    clear g_display_main_again.

* is necessary, because current_frontend_fieldcat must be set
    CALL METHOD go_grid-&amp;gt;set_table_for_first_display
      EXPORTING
        i_bypassing_buffer   = 'X'
        i_save               = g_save
        is_layout            = gs_layout
        is_variant           = gs_variant
        it_special_groups    = gt_sgrp                      "mb110403
        it_toolbar_excluding = gt_exclude_toolbar
      CHANGING
        it_fieldcatalog      = gt_fieldcat
        it_outtab            = &amp;lt;gt_outtab&amp;gt;.

* set current fieldcat
    CALL METHOD go_grid-&amp;gt;set_frontend_fieldcatalog
      EXPORTING
        it_fieldcatalog = gt_fieldcat.

* now reset other current layout-infos if necessary
    PERFORM set_current_layout USING go_grid
                                     gt_filter_save
                                     gt_sort_save
                                     gs_layout_save.


* display current main-list
    CALL METHOD go_grid-&amp;gt;refresh_table_display.

    REFRESH: gt_fieldcat_save, gt_filter_save, gt_sort_save.
    CLEAR  : gs_layout_save.

  ELSE.

* Show ALV
    CALL METHOD go_grid-&amp;gt;set_table_for_first_display
      EXPORTING
        i_bypassing_buffer   = 'X'
        i_save               = g_save
        is_layout            = gs_layout
        is_variant           = gs_variant
        it_special_groups    = gt_sgrp                      "mb110403
        it_toolbar_excluding = gt_exclude_toolbar
      CHANGING
        it_sort              = gt_sort
        it_fieldcatalog      = gt_fieldcat
        it_outtab            = &amp;lt;gt_outtab&amp;gt;.

    CLEAR g_display_detail_again.
    g_display_main_again = 'X'.

  ENDIF.

* Set cursor on selected row if necesary
  IF NOT gt_row_id IS INITIAL.
    CALL METHOD go_grid-&amp;gt;set_selected_rows
      EXPORTING
        it_index_rows = gt_row_id.

  ENDIF.

ENDFORM.                    " display_main_list_subscreen

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  display_message
*&amp;amp;---------------------------------------------------------------------*
FORM display_message USING lo_grid_object TYPE REF TO cl_gui_alv_grid
                           lf_refresh_msg_table TYPE c.

  DATA: l_lines       TYPE i,
        ls_layout     TYPE lvc_s_layo.

* header_main is not used by Worbench
  IF g_subscreen IS INITIAL.
    PERFORM header_main.
  ENDIF.

  g_no_data = 'X'.

* if first data selection results no data gt_parameter_save must be
* filled  from lt_parameter to take care of further user changed
* parameters from list screen

  DESCRIBE TABLE gt_parameter_save LINES l_lines.
  IF l_lines =  0.
    gt_parameter_save[] = gt_parameter[].
  ENDIF.

  PERFORM no_data_selected IN PROGRAM (gc_progname)
                            USING      gt_fieldcat_mess
                                       gs_fieldcat_mess
                                       gt_message
                                       gs_message
                                       text-101
                                       text-102
                                       'TEXT'
                                       'LT_MESSAGE'
                                       lf_refresh_msg_table   " 'X'
                                       space.      "  'C610'. no color, accessibility

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***

* Set header-control invisible while main-list is displayed
*  IF NOT go_splitter_container IS INITIAL.

*    CALL METHOD go_splitter_container-&amp;gt;set_row_height
*      EXPORTING
*        id     = 1
*        height = 0.
*    CALL METHOD go_splitter_container-&amp;gt;set_row_sash
*      EXPORTING
*        id    = 1
*        type  = cl_gui_splitter_container=&amp;gt;type_sashvisible
*        value = cl_gui_splitter_container=&amp;gt;false.
*  ENDIF.

*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

* display messages
*  ls_layout-no_toolbar = 'X'.

  CALL METHOD lo_grid_object-&amp;gt;set_table_for_first_display
    EXPORTING
      i_bypassing_buffer   = 'X'
      it_toolbar_excluding = gt_exclude_toolbar_mess
      is_layout            = ls_layout
    CHANGING
      it_fieldcatalog      = gt_fieldcat_mess
      it_outtab            = gt_message.

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***

* Event-Handler for docking-container
*  IF go_event_dock IS INITIAL.
*    CREATE OBJECT go_event_dock.
*  ENDIF.

*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

  IF go_parameter IS INITIAL.
    CALL METHOD cl_uc_parameter=&amp;gt;get_instance
      IMPORTING
        eo_instance = go_parameter.
  ENDIF.

*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***
*  SET HANDLER go_event_dock-&amp;gt;handle_new_parameters FOR go_parameter.
*** End of Comment By Ramesh Babu N,IBM - C1DK900725  ***

ENDFORM.                    " display_message

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  sub_download_data
*&amp;amp;---------------------------------------------------------------------*
* Used for downloading BCS data to a TAB delimited file in Custom task *
*----------------------------------------------------------------------*
*      &amp;lt;--ct_data  HASHED TABLE
*----------------------------------------------------------------------*
FORM f_download_data  USING     ct_task     TYPE uc_task
                                ct_sel      TYPE uc0_ts_sel
                                gt_param    TYPE ucm_ts_parameter
                      CHANGING  ct_message  TYPE uc0_t_message
                                ct_data     TYPE HASHED TABLE..

*----------------------------------------------------------------------*
* SUBROUTINE DESCRIPION: Used for downloading BCS data to file in Custome Task
*
*           DEVELOPER: Ramesh Babu Nalla , IBM
*       CREATION DATE: 2007-10-11
*          DER NUMBER: None
* TRANSPORT NUMBER(S): C1DK900725
*----------------------------------------------------------------------*

* REVISION HISTORY-----------------------------------------------------*
*
*       REVISION NO: C1DK900725      REFERENCE NO:  None
*         DEVELOPER: Ramesh Babu N,IBM       DATE:  2007-10-11
*       DESCRIPTION: Copied from SAP FM UCR_LST_LOGIC *
*
*----------------------------------------------------------------------*

  CONSTANTS : c_task01 TYPE uc_task VALUE 'T2700',
              c_task02 TYPE uc_task VALUE 'T2490'.

  TYPES:  BEGIN OF ty_download,
**            /bic/zcs_comp   TYPE char08,      " Unilever-Company
**            /bic/zcs_item   TYPE char10,      " Unilever-Item
**            /1fb/move_type  TYPE char03,      " Unilever-Movement type
**            /bic/zcs_pcom   TYPE char08,      " Unilever-Partner Company
**            /bic/zcs_invc   TYPE char08,      " Unilever-Investee Company
**            /bic/zcs_cang   TYPE char03,      " Unilever-Cost Analysis Group
**            /bic/zcs_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
**            /bic/zcs_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
**            /bic/zcs_prgp   TYPE char08,      " Unilever-Product Category

            /bic/zfb_comp   TYPE char08,      " Unilever-Company
            /bic/zfb_item   TYPE char10,      " Unilever-Item
            /bic/zfb_move   TYPE char03,      " Unilever-Movement type
            /bic/zfb_pcom   TYPE char08,      " Unilever-Partner Company
            /bic/zfb_invc   TYPE char08,      " Unilever-Investee Company
            /bic/zfb_cang   TYPE char03,      " Unilever-Cost Analysis Group
            /bic/zfb_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
            /bic/zfb_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
            /bic/zfb_prgp   TYPE char08,      " Unilever-Product Category

            /1fb/cs_trn_lc  TYPE string,      " Unilever-Period value in Local currency
            /1fb/cs_trn_qty TYPE string,     " Unilever-Periodic quantity
            unit            type string,

          END OF ty_download.
* flag
  DATA flg_chk TYPE c.
*
  DATA: lr_s_data_out TYPE REF TO data,
        lr_t_data_out TYPE REF TO data,
        l_outtype     TYPE field_type VALUE 'UCR_SX_TX_DATA_LST',
        lr            TYPE REF TO data,
        lo_conv       TYPE REF TO lcl_convert_output,
        lt_char       TYPE lcl_convert_output=&amp;gt;th_comp,
        ls_comp       TYPE lcl_convert_output=&amp;gt;s_comp,
        lr_s_data     TYPE REF TO data,
        lr_t_data     TYPE REF TO data,
        l_filename    TYPE string,
        l_action      TYPE i,
        l_path        TYPE string,
        l_seperator   TYPE char01 VALUE 'X',
        l_fullpath    TYPE string,
        l_mmyy        TYPE string,
        lr_sel_data   TYPE REF TO data,
        lr_t_val      TYPE REF TO data,
        lr_t_final    TYPE REF TO data,
        lr_val        TYPE REF TO data,
        ls_download   TYPE REF TO data,
        lt_download   TYPE REF TO data,
        ls_sel        TYPE REF TO data,
        ls_msg        TYPE uc0_s_message.

** SOC by Dpak-------------------------------------------------------------------------------------------
** Changed by Deepak N Jain, IBM on 16/11/2006 as the corresponding field name assigned by Ramesh from
** the structure &amp;lt;LS_DATA_OUT&amp;gt; are not matching. This is because of the new cube from whch the Financial
** data is coming now. The new cube is ZFBCS_T1 which has replaced the old cube ZCS_T1.
** Hence, Short Dump on Execution.
**-------------------------------------------------------------------------------------------------------

**  DATA: l_comp        TYPE string VALUE '/BIC/ZCS_COMP',  " Unilever-Company
**        l_cgcomp      TYPE string VALUE '/1FB/SEM_CGCOMP'," Unilever-Consolidation Group
**        l_pcomp       TYPE string VALUE '/BIC/ZCS_PCOM',  " Unilever-Partner Company
**        l_doct        TYPE string VALUE '/BIC/ZCS_DOCT',  " Unilever-Document type
**        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
**        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
**        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
**        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
**        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
**        l_low         TYPE string VALUE 'LOW'.

  DATA: l_comp        TYPE string VALUE '/BIC/ZFB_COMP',  " Unilever-Company
        l_cgcomp      TYPE string VALUE '/BIC/ZFB_CG1',   " Unilever-Consolidation Group
        l_pcomp       TYPE string VALUE '/BIC/ZFB_PCOM',  " Unilever-Partner Company
        l_doct        TYPE string VALUE '/BIC/ZFB_DOCT',  " Unilever-Document type
        l_invc        TYPE string VALUE '/BIC/ZFB_INVC',  " Unilever-Investee Company
        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
        l_low         TYPE string VALUE 'LOW',
        l_unit        TYPE string  VALUE 'UNIT'.
** EOC by Dpak-----------------------------------------------------------------------------------------------

** future use **
**  FISCVARNT TYPE L0002FISCVARNT,
**  FISCPERIOD TYPE L0002FISCPERIOD,
**  /BIC/ZFB_VERS TYPE L0002/BIC/ZFB_VERS,
**  /BIC/ZFB_CG1 TYPE L0002/BIC/ZFB_CG1,
**  /BIC/ZFB_COMP TYPE L0002/BIC/ZFB_COMP,
**  /1FB/CS_CHART TYPE L0002/1FB/CS_CHART,
**  /BIC/ZFB_MOVE TYPE L0002/BIC/ZFB_MOVE,
**  /BIC/ZFB_PCOM TYPE L0002/BIC/ZFB_PCOM,
**  ACQ_YEAR TYPE L0002ACQ_YEAR,
**  ACQ_PER TYPE L0002ACQ_PER,
**  /BIC/ZFB_INVC TYPE L0002/BIC/ZFB_INVC,
**  /BIC/ZFB_ALCO TYPE L0002/BIC/ZFB_ALCO,
**  CS_PLEVEL TYPE L0002CS_PLEVEL,
**  /BIC/ZFB_DOCT TYPE L0002/BIC/ZFB_DOCT,
**  BCS_CTFLG TYPE L0002BCS_CTFLG,
**  UNIT TYPE L0002UNIT,
**  /1FB/CURKEY_TC TYPE L0002/1FB/CURKEY_TC,
**  /1FB/CURKEY_LC TYPE L0002/1FB/CURKEY_LC,
**  /1FB/CURKEY_GC TYPE L0002/1FB/CURKEY_GC,
**  /BIC/ZFB_PRGP TYPE L0002/BIC/ZFB_PRGP,
**  /BIC/ZFB_COUN TYPE L0002/BIC/ZFB_COUN,
**  /BIC/ZFB_CANG TYPE L0002/BIC/ZFB_CANG,
**  /1FB/FUNC_AREA TYPE L0002/1FB/FUNC_AREA,
**  /BIC/ZFB_CT TYPE L0002/BIC/ZFB_CT,
**  /BIC/ZFB_CD TYPE L0002/BIC/ZFB_CD,
**  /BIC/ZFB_AD TYPE L0002/BIC/ZFB_AD,
**  /BIC/ZFB_FR01 TYPE L0002/BIC/ZFB_FR01,
**  /BIC/ZFB_FR02 TYPE L0002/BIC/ZFB_FR02,
**  FISCYEAR TYPE L0002FISCYEAR,
**  /BIC/ZFB_ITEM TYPE L0002/BIC/ZFB_ITEM,
** future use **

  FIELD-SYMBOLS: &amp;lt;lt_data_out&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_out&amp;gt; TYPE ANY,
                 &amp;lt;ls_data&amp;gt;     TYPE ANY,
                 &amp;lt;ls_data_cop&amp;gt; TYPE ANY,
                 &amp;lt;lt_data_std&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_std&amp;gt; TYPE ANY,
                 &amp;lt;ls_download&amp;gt;  TYPE ANY,
                 &amp;lt;lt_download&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;comp&amp;gt;        TYPE ANY,
                 &amp;lt;cgcomp&amp;gt;      TYPE ANY,
                 &amp;lt;pcomp&amp;gt;       TYPE ANY,
                 &amp;lt;doct&amp;gt;        TYPE ANY,
                 &amp;lt;plevel&amp;gt;      TYPE ANY,
                 &amp;lt;tc&amp;gt;          TYPE ANY,
                 &amp;lt;invc&amp;gt;        TYPE ANY,
                 &amp;lt;qty&amp;gt;         TYPE ANY,
                 &amp;lt;unit&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc&amp;gt;      TYPE ANY,
                 &amp;lt;comp1&amp;gt;       TYPE ANY,
                 &amp;lt;cgcomp1&amp;gt;     TYPE ANY,
                 &amp;lt;pcomp1&amp;gt;      TYPE ANY,
                 &amp;lt;doct1&amp;gt;       TYPE ANY,
                 &amp;lt;plevel1&amp;gt;     TYPE ANY,
                 &amp;lt;tc1&amp;gt;         TYPE ANY,
                 &amp;lt;invc1&amp;gt;       TYPE ANY,
                 &amp;lt;qty1&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc1&amp;gt;     TYPE ANY,
                 &amp;lt;unit1&amp;gt;       TYPE ANY,
                 &amp;lt;bu&amp;gt;          TYPE ANY,
                 &amp;lt;bu1&amp;gt;         TYPE ANY,
                 &amp;lt;low&amp;gt;         TYPE ANY,
                 &amp;lt;l_year&amp;gt;      TYPE ANY ,
                 &amp;lt;l_period&amp;gt;    TYPE ANY ,
                 &amp;lt;l_mmyy&amp;gt;      TYPE ANY,
                 &amp;lt;ls_sel_data&amp;gt; TYPE ANY,
                 &amp;lt;ls_val&amp;gt;      TYPE zbcs_check_val,
                 &amp;lt;lt_t_val&amp;gt;    TYPE STANDARD TABLE,
                 &amp;lt;lt_t_final&amp;gt;  TYPE STANDARD TABLE.

**************** Begin Of Addtion - ASIF MAQBOOL ******************
  Data: BEGIN OF l_s_tab,
        values TYPE C LENGTH 400,
       end OF l_s_tab,
      gs_param LIKE LINE OF gt_param,
      l_temp_store LIKE gt_param.

  Field-SYMBOLS: &amp;lt;gt_param&amp;gt; TYPE ANY TABLE,
                 &amp;lt;final_gt&amp;gt; TYPE any ,
                 &amp;lt;gs_fieldname&amp;gt; TYPE any,
                 &amp;lt;gs_value&amp;gt; TYPE any.

  Data: l_t_tab TYPE TABLE OF string INITIAL SIZE 0,
       str TYPE string,
       str1 TYPE string.
**************** End Of Addtion - ASIF MAQBOOL ******************

* create Line-structure of data table
  CREATE DATA lr_s_data LIKE LINE OF ct_data.
  ASSIGN lr_s_data-&amp;gt;* TO &amp;lt;ls_data_std&amp;gt;.

** create cumulation table
  CREATE DATA lr_t_data LIKE STANDARD TABLE OF &amp;lt;ls_data_std&amp;gt;.
  ASSIGN lr_t_data-&amp;gt;* TO &amp;lt;lt_data_std&amp;gt;.

  LOOP AT ct_data INTO &amp;lt;ls_data_std&amp;gt;.
    COLLECT &amp;lt;ls_data_std&amp;gt; INTO &amp;lt;lt_data_std&amp;gt;.
  ENDLOOP.

  FREE ct_data.

* get reference for outtab / create outtab
  CALL METHOD go_model-&amp;gt;create_data_reference
    EXPORTING
      io_tx_data_io_type = go_model-&amp;gt;ds_tx_data_io_type-totals
      i_type             = l_outtype "'UCR_SX_TX_DATA_LST'
    IMPORTING
      er_data            = lr_s_data_out.

  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_cop&amp;gt;.

  CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_t_data_out-&amp;gt;* TO &amp;lt;lt_data_out&amp;gt;.

  CREATE DATA lr LIKE LINE OF &amp;lt;lt_data_std&amp;gt;.

  ASSIGN lr-&amp;gt;* TO &amp;lt;ls_data&amp;gt;.

  CALL METHOD lcl_convert_output=&amp;gt;get_instance
    EXPORTING
      io_model    = go_model
      it_char     = lt_char
    IMPORTING
      eo_instance = lo_conv
    CHANGING
      cs_data     = &amp;lt;ls_data&amp;gt;.

  ASSIGN: l_comp   TO &amp;lt;comp&amp;gt;,
          l_cgcomp TO &amp;lt;cgcomp&amp;gt;,
          l_pcomp  TO &amp;lt;pcomp&amp;gt;,
          l_invc   TO &amp;lt;invc&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_plevel TO &amp;lt;plevel&amp;gt;,
          l_tc     TO &amp;lt;tc&amp;gt;,
          l_qty    TO &amp;lt;qty&amp;gt;,
          l_trn_lc TO &amp;lt;trn_lc&amp;gt;,
          l_bu     TO &amp;lt;bu&amp;gt;,
          l_mmyy   TO &amp;lt;l_mmyy&amp;gt;,
          l_low    TO &amp;lt;low&amp;gt;,
          l_unit   TO &amp;lt;unit&amp;gt;.


  LOOP AT &amp;lt;lt_data_std&amp;gt; INTO &amp;lt;ls_data&amp;gt;.    "  loop

    CALL METHOD lo_conv-&amp;gt;convert_output.      "end of "wis240605

*     fill outtab
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_char
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_kfig
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.


    IF ct_task = c_task01 OR ct_task = space . "'it can be T2700 or blank

*************************************************************
*****  aggregate the transactionaldata for given Rules  *****
*************************************************************

      ASSIGN COMPONENT : &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;,
                         &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                         &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                         &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;,
                         &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;invc1&amp;gt;, "added by Asif M.
                         &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                         &amp;lt;tc&amp;gt;     OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;tc1&amp;gt;,
                         &amp;lt;qty&amp;gt;    OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;qty1&amp;gt;,
                         &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.

**** 1st Rule ****
* dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
      IF &amp;lt;trn_lc1&amp;gt; = 0 AND &amp;lt;qty1&amp;gt; = 0.
        CONTINUE.
      ENDIF.

**** 2nd Rule ****
* delete the Posting levels if it is &amp;gt; 1 and clear to blank  CS_PLEVEL
      CHECK &amp;lt;plevel1&amp;gt; LE 1.
      CLEAR &amp;lt;plevel1&amp;gt;.

**** 3rd Rule ****
* replace the Unilever Company with CG without prefix G and compare with Partner comp for deletion
* /BIC/ZCS_COMP with   /1FB/SEM_CGCOMP and check with /BIC/ZCS_PCOM

      IF ct_task &amp;lt;&amp;gt; space.
***  code added by Ramesh for the removal GBRNCH  records while downloading the file.
**********************************************************************
**** code for removal of GBRNCH records only - Hardcode - sample code
*        IF &amp;lt;cgcomp1&amp;gt; &amp;lt;&amp;gt; 'GBRNCH'.   " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
*          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
*        ELSE.
*          CONTINUE.
*        ENDIF.
**** code for removal of GBRNCH records only - Hardcode - sample code
**********************************************************************

***  the assumption here,is consider only records with Legal entity as numeric excepting the first character
        IF &amp;lt;cgcomp1&amp;gt;+1 CN sy-abcde.   " to avoid BRNCH records
* replace Company with CG without prefix G when task name is not blank
          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
        ELSE.
          CONTINUE.
        ENDIF.


      ENDIF.

* removing leading zero's as SAP sometimes adding them to &amp;lt;pcomp1&amp;gt;.
*      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*        EXPORTING
*          input  = &amp;lt;pcomp1&amp;gt;
*        IMPORTING
*          output = &amp;lt;pcomp1&amp;gt;.
      PERFORM f_alpha_conversion USING &amp;lt;comp1&amp;gt;
                                      CHANGING &amp;lt;comp1&amp;gt;.

      PERFORM f_alpha_conversion USING &amp;lt;pcomp1&amp;gt;
                                 CHANGING &amp;lt;pcomp1&amp;gt;.

      " removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.

      PERFORM f_alpha_conversion USING &amp;lt;invc1&amp;gt;
                                 CHANGING &amp;lt;invc1&amp;gt;.

      CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;pcomp1&amp;gt;.

**** 4rth Rule ****
* initialise Document type &amp;amp; PV TC to blank   /BIC/ZCS_DOCT &amp;amp; /1FB/CS_TRN_TC
      CLEAR: &amp;lt;doct1&amp;gt;,&amp;lt;tc1&amp;gt;.




    ENDIF.

    COLLECT: &amp;lt;ls_data_out&amp;gt; INTO &amp;lt;lt_data_out&amp;gt;.

  ENDLOOP.          " end loop


  IF &amp;lt;lt_data_out&amp;gt; IS INITIAL.
    PERFORM f_build_msgs USING 'UCM0'
                               'W'
                               '053'
                               text-102
                               space "ct_task
                               space
                               space
                      CHANGING ct_message.
    RETURN.
    MESSAGE e208(00) WITH text-102.
    EXIT.
  ENDIF.


* perform various steps based on task name
  CASE ct_task.

    WHEN c_task01 OR space.              " 'T2700' or blank


* download the data into a tab delimited file
*****************************************************
****             start of Task 0001              ****
*****************************************************
* create Line-structure of download table
      CREATE DATA ls_download TYPE ty_download.
      ASSIGN ls_download-&amp;gt;* TO &amp;lt;ls_download&amp;gt;.

** create Download data internal table for task T2700
      CREATE DATA lt_download LIKE STANDARD TABLE OF &amp;lt;ls_download&amp;gt;.
      ASSIGN lt_download-&amp;gt;* TO &amp;lt;lt_download&amp;gt;.

      LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

        MOVE-CORRESPONDING &amp;lt;ls_data_out&amp;gt; TO &amp;lt;ls_download&amp;gt;.

        ASSIGN COMPONENT &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.

*** 6th Rule **********************

        " Check for values, if present remove decimals, if not present clear it of (blank).
        UNASSIGN &amp;lt;qty1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;qty&amp;gt; of STRUCTURE &amp;lt;ls_download&amp;gt; to &amp;lt;qty1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;unit&amp;gt; of STRUCTURE &amp;lt;ls_download&amp;gt; to &amp;lt;unit1&amp;gt;.

        if &amp;lt;unit1&amp;gt; = '' OR &amp;lt;unit1&amp;gt; &amp;lt;&amp;gt; '%'.
          REPLACE ALL OCCURRENCES OF '.' in &amp;lt;qty1&amp;gt; WITH '' RESPECTING CASE.
          &amp;lt;qty1&amp;gt; = ''.

        endif.

        if &amp;lt;unit1&amp;gt; &amp;lt;&amp;gt; '' And &amp;lt;qty1&amp;gt; &amp;lt;&amp;gt; ''.
          &amp;lt;unit1&amp;gt; = ''. " We dont need unit downloaded.
          REPLACE ALL OCCURRENCES OF '.' in &amp;lt;qty1&amp;gt; WITH '' RESPECTING CASE.
          &amp;lt;qty1&amp;gt; = &amp;lt;qty1&amp;gt;+0(2).
        endif.

*************************************
**** 5th Rule ****
* Move the Negative sign to front

        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_lc1&amp;gt;.
        INSERT &amp;lt;ls_download&amp;gt;  INTO TABLE &amp;lt;lt_download&amp;gt;.

      ENDLOOP.






* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

      CLEAR: l_path,l_filename,l_fullpath,l_action.

      CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
       EXPORTING
         window_title            = 'Download aggregated BCS data to Tab Delimited file'
         default_extension       = 'txt'
*   DEFAULT_FILE_NAME       = dynamic file name as like ALE settings
         file_filter             = 'Text files (*.txt)'
       IMPORTING
         filename                = l_filename
         path                    = l_path
         fullpath                = l_fullpath
         user_action             = l_action .

      CALL METHOD cl_gui_cfw=&amp;gt;flush.

      " *************************** START OF CHANGE - ASIF MAQBOOL ************************
      IF l_action = 0 OR l_action = 1.


        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.
        APPEND '100' to l_t_tab.
        READ TABLE gt_param INDEX 6 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
        Clear gs_param.
        READ TABLE gt_param INDEX 4 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*        LOOP AT &amp;lt;gt_param&amp;gt; INTO gs_param.
*
*          ASSIGN COMPONENT 1 OF STRUCTURE gs_param to &amp;lt;gs_fieldname&amp;gt;.
*
*          CASE &amp;lt;gs_fieldname&amp;gt;.
*             WHEN '/BIC/ZFB_VERS'.
*
*              APPEND '100' to l_t_tab.
*
*             WHEN 'FISCPERIOD'.
*                ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*                APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*             WHEN 'FISCYEAR'.
*                ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*                APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*
*              WHEN OTHERS.
*                ENDCASE.
*
*
*        ENDLOOP.

        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
        CLEAR l_t_tab.
        INSERT str1 INTO TABLE l_t_tab.
        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.



        "  To Start by adding the Header Data.
        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
          EXPORTING
            filename              = l_fullpath
            write_field_separator = l_seperator "SPACE
          CHANGING
            data_tab              = &amp;lt;final_gt&amp;gt;
          EXCEPTIONS
            file_write_error      = 1.

        " Now append the Data after the header data insertion.
        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
          EXPORTING
            filename                = l_fullpath
            write_field_separator   = l_seperator "SPACE
            append                  = 'X'
          CHANGING
            data_tab                = &amp;lt;lt_download&amp;gt;
          EXCEPTIONS
            file_write_error        = 1
            no_batch                = 2
            gui_refuse_filetransfer = 3
            invalid_type            = 4
            no_authority            = 5
            unknown_error           = 6
            header_not_allowed      = 7
            separator_not_allowed   = 8
            filesize_not_allowed    = 9
            header_too_long         = 10
            dp_error_create         = 11
            dp_error_send           = 12
            dp_error_write          = 13
            unknown_dp_error        = 14
            access_denied           = 15
            dp_out_of_memory        = 16
            disk_full               = 17
            dp_timeout              = 18
            file_not_found          = 19
            dataprovider_exception  = 20
            control_flush_error     = 21
            not_supported_by_gui    = 22
            error_no_gui            = 23
            OTHERS                  = 24.


        " *************************** END OF CHANGE - ASIF MAQBOOL ************************

        IF sy-subrc &amp;lt;&amp;gt; 0.
*          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          PERFORM f_build_msgs USING sy-msgid
                                     sy-msgty
                                     sy-msgno
                                     sy-msgv1
                                     sy-msgv2
                                     sy-msgv3
                                     sy-msgv4
                            CHANGING ct_message.
          RETURN.

        ENDIF.

      ENDIF.

*****************************************************
****               End of Task 0001              ****
*****************************************************

    WHEN c_task02.                                          "'T2490'.

* switch to validations on aggregated transactional data
*****************************************************
**** Start of Task 0002 validations ****
*****************************************************

* create Line-structure of gt_sel(selection) data table
      CREATE DATA lr_sel_data LIKE LINE OF ct_sel." zbcs_check_val
      ASSIGN lr_sel_data-&amp;gt;* TO &amp;lt;ls_sel_data&amp;gt;.

* create validation table
      CREATE DATA lr_t_val TYPE STANDARD TABLE OF  zbcs_check_val.
      ASSIGN lr_t_val-&amp;gt;* TO &amp;lt;lt_t_val&amp;gt;.


* create data table that does not fulfill rules after validation
      CREATE DATA lr_t_final LIKE STANDARD TABLE OF  &amp;lt;ls_data_out&amp;gt;.
      ASSIGN lr_t_final-&amp;gt;* TO &amp;lt;lt_t_final&amp;gt;.


* concatenate year &amp;amp; month to query custom table
      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCYEAR'.  "YYYY
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_year&amp;gt;.

      &amp;lt;l_mmyy&amp;gt; = &amp;lt;l_year&amp;gt;.

      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCPERIOD'."MM
      CHECK sy-subrc = 0.
      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;. " via BADI
**      ASSIGN COMPONENT 5 OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;.  " via report

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = &amp;lt;l_period&amp;gt;
        IMPORTING
          output = &amp;lt;l_period&amp;gt;.

      CONCATENATE &amp;lt;l_mmyy&amp;gt; &amp;lt;l_period&amp;gt;  INTO &amp;lt;l_mmyy&amp;gt;.

** get data for given criteria
      SELECT * INTO TABLE &amp;lt;lt_t_val&amp;gt; FROM zbcs_check_val
      WHERE valid_from LE &amp;lt;l_mmyy&amp;gt; AND
            valid_to   GE &amp;lt;l_mmyy&amp;gt;.
      IF sy-subrc &amp;lt;&amp;gt; 0.
*   error message
        PERFORM f_build_msgs USING 'UCM0'
                                   'E'
                                   '053'
                                   text-103
                                   space
                                   space
                                   space
                          CHANGING ct_message.
        RETURN.

      ENDIF.

      LOOP AT &amp;lt;lt_t_val&amp;gt; ASSIGNING &amp;lt;ls_val&amp;gt;.

        CASE &amp;lt;ls_val&amp;gt;-valid_rules.

          WHEN 'VAL_001'.
* meant for parallal cursor
*            READ TABLE &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; WITH KEY (l_comp) = &amp;lt;ls_val&amp;gt;-company
*                                                                 (l_bu)   = &amp;lt;ls_val&amp;gt;-bus_cost_unit.
*            CHECK sy-subrc = 0.
*            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; FROM sy-tabix.

            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

              ASSIGN COMPONENT: &amp;lt;bu&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;bu1&amp;gt;,
                                &amp;lt;comp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;.

*** inserting all error records which does not match 'VAL_001'
              CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-company AND &amp;lt;bu1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-bus_cost_unit.
              flg_chk = abap_true.
              COLLECT &amp;lt;ls_data_out&amp;gt;  INTO &amp;lt;lt_t_final&amp;gt;.
              PERFORM f_build_msgs USING 'UCM0'
                                         'E'
                                         '053'
                                         &amp;lt;ls_val&amp;gt;-valid_rules
                                         text-104
                                         &amp;lt;ls_val&amp;gt;-company
                                         &amp;lt;ls_val&amp;gt;-bus_cost_unit
                                CHANGING ct_message.

            ENDLOOP.
*** future use of further validation
***            CHECK flg_chk = abap_true.
***            flg_chk = abap_false.
***            PERFORM f_build_msgs USING 'UCM0'
***                           'E'
***                           '053'
***                           &amp;lt;ls_val&amp;gt;-valid_rules
***                           text-104
***                           &amp;lt;ls_val&amp;gt;-company
***                           &amp;lt;ls_val&amp;gt;-bus_cost_unit
***                  CHANGING ct_message.

***          WHEN 'VAL_002'.
*** Etc
*** future use of further validation

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_t_final&amp;gt;.

*****************************************************
**** End of Task  0002 validations ****
*****************************************************

    WHEN OTHERS.

** move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

  ENDCASE.


ENDFORM.                    " sub_download_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_put_sign_in_front
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      &amp;lt;--P_value  text
*----------------------------------------------------------------------*
FORM f_put_sign_in_front  CHANGING p_value TYPE string.

  DATA: text1(1) TYPE c.

  SEARCH p_value FOR '-'.
  IF sy-subrc = 0 AND sy-fdpos &amp;lt;&amp;gt; 0.
    SPLIT p_value AT '-' INTO p_value text1.
    CONDENSE p_value.
    CONCATENATE '-' p_value INTO p_value.
  ELSE.
    CONDENSE p_value.
  ENDIF.

ENDFORM.                    " f_put_sign_in_front


*----------------------------------------------------------------------*
* PROGRAM DESCRIPTION: Resuable Aplha Conversion routine
*
*           DEVELOPER: Asif Maqbool ,IBM/Unilever *
*       CREATION DATE: 2008-01-25
*          DER NUMBER: None
* TRANSPORT NUMBER(S): C1DK901293
*----------------------------------------------------------------------*



FORM f_alpha_conversion USING l_import_comp TYPE ANY
                        CHANGING l_export_comp TYPE ANY.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = l_import_comp
    IMPORTING
      output = l_export_comp.




ENDFORM.                    "f_alpha_conversion



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_build_msgs
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_SY_MSGID  text
*      --&amp;gt;P_SY_MSGTY  text
*      --&amp;gt;P_SY_MSGNO  text
*      --&amp;gt;P_SY_MSGV1  text
*      --&amp;gt;P_SY_MSGV2  text
*      --&amp;gt;P_SY_MSGV3  text
*      --&amp;gt;P_SY_MSGV4  text
*      &amp;lt;--P_CT_MESSAGE  text
*----------------------------------------------------------------------*
FORM f_build_msgs  USING     p_msgid   TYPE symsgid
                             p_msgty   TYPE symsgty
                             p_msgno   TYPE symsgno
                             p_msgv1   TYPE any
                             p_msgv2   TYPE any
                             p_msgv3   TYPE any
                             p_msgv4   TYPE any
                   CHANGING pt_message TYPE uc0_t_message.

  DATA  ls_msg TYPE uc0_s_message.

  ls_msg-msgid = p_msgid.
  ls_msg-msgty = p_msgty.
  ls_msg-msgno = p_msgno.
  ls_msg-msgv1 = p_msgv1.
  ls_msg-msgv2 = p_msgv2.
  ls_msg-msgv3 = p_msgv3.
  ls_msg-msgv4 = p_msgv4.
  INSERT ls_msg INTO TABLE pt_message.

ENDFORM.                    "f_build_msgs


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_download_data_YBBCSDOWNLOAD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM f_download_data_YBBCSDOWNLOAD
                         USING
                                ct_task     TYPE uc_task
                                ct_sel      TYPE uc0_ts_sel
                                gt_param    TYPE ucm_ts_parameter
                                chk_params  TYPE ANY
                                Aggr_swt    TYPE STRING

                      CHANGING  ct_message  TYPE uc0_t_message
                                ct_data     TYPE HASHED TABLE
                                lo_dataref  TYPE ref to data


                       .



*----------------------------------------------------------------------*
* SUBROUTINE DESCRIPION: Used for downloading BCS data to file in Custome Task
*
*           DEVELOPER: Asif Maqbool , IBM/Unilever
*       CREATION DATE: 2007-10-11
*          DER NUMBER: None
* TRANSPORT NUMBER(S):  C1DK901380
*----------------------------------------------------------------------*

  " 1) 5 Rules of validation has to be removed.
  " 2) Global Currency Key  was requried in download
  " 3) Extra Header column required in the Download file.


  CONSTANTS : c_task01 TYPE uc_task VALUE 'T2700',
              c_task02 TYPE uc_task VALUE 'T2490'.

  TYPES:  BEGIN OF ty_download,
**            /bic/zcs_comp   TYPE char08,      " Unilever-Company
**            /bic/zcs_item   TYPE char10,      " Unilever-Item
**            /1fb/move_type  TYPE char03,      " Unilever-Movement type
**            /bic/zcs_pcom   TYPE char08,      " Unilever-Partner Company
**            /bic/zcs_invc   TYPE char08,      " Unilever-Investee Company
**            /bic/zcs_cang   TYPE char03,      " Unilever-Cost Analysis Group
**            /bic/zcs_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
**            /bic/zcs_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
**            /bic/zcs_prgp   TYPE char08,      " Unilever-Product Category

            /bic/zfb_comp   TYPE char08,      " Unilever-Company
            /bic/zfb_item   TYPE char10,      " Unilever-Item
            /bic/zfb_move   TYPE char03,      " Unilever-Movement type
            /bic/zfb_pcom   TYPE char08,      " Unilever-Partner Company
            /bic/zfb_invc   TYPE char08,      " Unilever-Investee Company
            /bic/zfb_cang   TYPE char03,      " Unilever-Cost Analysis Group
            /bic/zfb_ad     TYPE char08,      " Unilever-Aquisitions/Disposals
            /bic/zfb_cd     TYPE char08,      " Unilever-Continued/Discontinued Ops.
            /bic/zfb_prgp   TYPE char08,      " Unilever-Product Category

            /1fb/cs_trn_lc  TYPE string,      " Unilever-Period value in Local currency
            /1fb/cs_trn_gc type string,       "Unilever -Period Value in Global Currency
            /1fb/cs_trn_qty TYPE p DECIMALS 3," Unilever-Periodic quantity
            /bic/zfb_doct   TYPE CHAR03,
            /bic/zfb_ALCO   TYPE CHAR08,
            /1fb/curkey_lc  type CHAR05,
            /bic/zfb_ct     TYPE N LENGTH 2,
          END OF ty_download.


* flag
  DATA flg_chk TYPE c.
*
  DATA: lr_s_data_out TYPE REF TO data,
        lr_t_data_out TYPE REF TO data,
        l_outtype     TYPE field_type VALUE 'UCR_SX_TX_DATA_LST',
        lr            TYPE REF TO data,
        lo_conv       TYPE REF TO lcl_convert_output,
        lt_char       TYPE lcl_convert_output=&amp;gt;th_comp,
        ls_comp       TYPE lcl_convert_output=&amp;gt;s_comp,
        lr_s_data     TYPE REF TO data,
        lr_t_data     TYPE REF TO data,
        l_filename    TYPE string,
        l_action      TYPE i,
        l_path        TYPE string,
        l_seperator   TYPE char01 VALUE 'X',
        l_fullpath    TYPE string,
        l_mmyy        TYPE string,
        lr_sel_data   TYPE REF TO data,
        lr_t_val      TYPE REF TO data,
        lr_t_final    TYPE REF TO data,
        lr_val        TYPE REF TO data,
        ls_download   TYPE REF TO data,
        lt_download   TYPE REF TO data,
        ls_sel        TYPE REF TO data,
        ls_msg        TYPE uc0_s_message.

** SOC by Dpak-------------------------------------------------------------------------------------------
** Changed by Deepak N Jain, IBM on 16/11/2006 as the corresponding field name assigned by Ramesh from
** the structure &amp;lt;LS_DATA_OUT&amp;gt; are not matching. This is because of the new cube from whch the Financial
** data is coming now. The new cube is ZFBCS_T1 which has replaced the old cube ZCS_T1.
** Hence, Short Dump on Execution.
**-------------------------------------------------------------------------------------------------------

**  DATA: l_comp        TYPE string VALUE '/BIC/ZCS_COMP',  " Unilever-Company
**        l_cgcomp      TYPE string VALUE '/1FB/SEM_CGCOMP'," Unilever-Consolidation Group
**        l_pcomp       TYPE string VALUE '/BIC/ZCS_PCOM',  " Unilever-Partner Company
**        l_doct        TYPE string VALUE '/BIC/ZCS_DOCT',  " Unilever-Document type
**        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
**        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
**        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
**        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
**        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
**        l_low         TYPE string VALUE 'LOW'.

  DATA: l_comp        TYPE string VALUE '/BIC/ZFB_COMP',  " Unilever-Company
        l_cgcomp      TYPE string VALUE '/BIC/ZFB_CG1',   " Unilever-Consolidation Group
        l_pcomp       TYPE string VALUE '/BIC/ZFB_PCOM',  " Unilever-Partner Company
        l_doct        TYPE string VALUE '/BIC/ZFB_DOCT',  " Unilever-Document type
        l_invc        TYPE string VALUE '/BIC/ZFB_INVC',  " Unilever-Investee Company
        l_plevel      TYPE string VALUE 'CS_PLEVEL',      " Unilever-Posting Level
        l_tc          TYPE string VALUE '/1FB/CS_TRN_TC', " Unilever-Period value in Transaction currency
        l_qty         TYPE string VALUE '/1FB/CS_TRN_QTY'," Unilever-Periodic quantity
        l_trn_lc      TYPE string VALUE '/1FB/CS_TRN_LC', " Unilever-Period value in Local currency
        l_trn_gc      TYPE string VALUE '/1FB/CS_TRN_GC', "Unilever -Period Vallue in Global Currency
        l_bu          TYPE string VALUE '/BIC/ZCS_PROF',  " Unilever-Business Unit/Cost Centre
        l_low         TYPE string VALUE 'LOW',
        l_alco        TYPE string VALUE '/bic/zfb_ALCO',
        l_curkey      TYPE string VALUE '/1fb/curkey_lc',
        l_zfb_ct      TYPE string VALUE '/bic/zfb_ct',
        l_move        TYPE string VALUE '/BIC/ZFB_MOVE',
        l_cang        TYPE string VALUE '/BIC/ZFB_CANG',
        l_ad          TYPE string VALUE '/BIC/ZFB_AD',
        l_cd          TYPE string VALUE '/BIC/ZFB_CD',
        l_csplevel    TYPE string VALUE 'CS_PLEVEL',
        l_prgp        TYPE string VALUE '/BIC/ZFB_PRGP'.



  FIELD-SYMBOLS: &amp;lt;lth_data&amp;gt; TYPE HASHED TABLE,
                 &amp;lt;lts_data&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_wa&amp;gt;   TYPE ANY.

  DATA: lp_data TYPE REF TO DATA.

** EOC by Dpak-----------------------------------------------------------------------------------------------

** future use **
**  FISCVARNT TYPE L0002FISCVARNT,
**  FISCPERIOD TYPE L0002FISCPERIOD,
**  /BIC/ZFB_VERS TYPE L0002/BIC/ZFB_VERS,
**  /BIC/ZFB_CG1 TYPE L0002/BIC/ZFB_CG1,
**  /BIC/ZFB_COMP TYPE L0002/BIC/ZFB_COMP,
**  /1FB/CS_CHART TYPE L0002/1FB/CS_CHART,
**  /BIC/ZFB_MOVE TYPE L0002/BIC/ZFB_MOVE,
**  /BIC/ZFB_PCOM TYPE L0002/BIC/ZFB_PCOM,
**  ACQ_YEAR TYPE L0002ACQ_YEAR,
**  ACQ_PER TYPE L0002ACQ_PER,
**  /BIC/ZFB_INVC TYPE L0002/BIC/ZFB_INVC,
**  /BIC/ZFB_ALCO TYPE L0002/BIC/ZFB_ALCO,
**  CS_PLEVEL TYPE L0002CS_PLEVEL,
**  /BIC/ZFB_DOCT TYPE L0002/BIC/ZFB_DOCT,
**  BCS_CTFLG TYPE L0002BCS_CTFLG,
**  UNIT TYPE L0002UNIT,
**  /1FB/CURKEY_TC TYPE L0002/1FB/CURKEY_TC,
**  /1FB/CURKEY_LC TYPE L0002/1FB/CURKEY_LC,
**  /1FB/CURKEY_GC TYPE L0002/1FB/CURKEY_GC,
**  /BIC/ZFB_PRGP TYPE L0002/BIC/ZFB_PRGP,
**  /BIC/ZFB_COUN TYPE L0002/BIC/ZFB_COUN,
**  /BIC/ZFB_CANG TYPE L0002/BIC/ZFB_CANG,
**  /1FB/FUNC_AREA TYPE L0002/1FB/FUNC_AREA,
**  /BIC/ZFB_CT TYPE L0002/BIC/ZFB_CT,
**  /BIC/ZFB_CD TYPE L0002/BIC/ZFB_CD,
**  /BIC/ZFB_AD TYPE L0002/BIC/ZFB_AD,
**  /BIC/ZFB_FR01 TYPE L0002/BIC/ZFB_FR01,
**  /BIC/ZFB_FR02 TYPE L0002/BIC/ZFB_FR02,
**  FISCYEAR TYPE L0002FISCYEAR,
**  /BIC/ZFB_ITEM TYPE L0002/BIC/ZFB_ITEM,
** future use **

  TYPES: BEGIN OF screen_params,
    ZCONGRP_CHK type string,
    ZCOMP_CHK type string,
    ZFSITEM_CHK type string,
    ZMOV_CHK type string,
    ZFUNC_CHK type string,
    ZACTDISP_CHK type string,
    ZCOSTANAL_CHK type string,
    ZCONTDIS_CHK type string,
    ZPROCAT_CHK type string,
    ZPARTCOMP_CHK type string,
    ZINV_CHK type string,
    ZDOCTYPE_CHK type string,
    ZPOST_CHK type string,
    ZCURKEY4T_CHK type string,
    ZCURKEY_I_CHK type string,
    END OF screen_params.

  Data: param_struct type screen_params.

  FIELD-SYMBOLS: &amp;lt;lt_data_out&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_out&amp;gt; TYPE ANY,
                 &amp;lt;ls_data&amp;gt;     TYPE ANY,
                 &amp;lt;ls_data_cop&amp;gt; TYPE ANY,
                 &amp;lt;lt_data_std&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;ls_data_std&amp;gt; TYPE ANY,
                 &amp;lt;ls_download&amp;gt;  TYPE ANY,
                 &amp;lt;lt_download&amp;gt; TYPE STANDARD TABLE,
                 &amp;lt;comp&amp;gt;        TYPE ANY,
                 &amp;lt;cgcomp&amp;gt;      TYPE ANY,
                 &amp;lt;pcomp&amp;gt;       TYPE ANY,
                 &amp;lt;doct&amp;gt;        TYPE ANY,
                 &amp;lt;plevel&amp;gt;      TYPE ANY,
                 &amp;lt;tc&amp;gt;          TYPE ANY,
                 &amp;lt;invc&amp;gt;        TYPE ANY,
                 &amp;lt;alco&amp;gt;        TYPE ANY,
                 &amp;lt;ct&amp;gt;          TYPE ANY,
                 &amp;lt;CURKEY&amp;gt;      TYPE ANY,
                 &amp;lt;qty&amp;gt;         TYPE ANY,
                 &amp;lt;prgp&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc&amp;gt;      TYPE ANY,
                 &amp;lt;trn_gc&amp;gt;      TYPE ANY,
                 &amp;lt;comp1&amp;gt;       TYPE ANY,
                 &amp;lt;mov&amp;gt;         TYPE ANY,
                 &amp;lt;cang&amp;gt;        TYPE ANY,
                 &amp;lt;ad&amp;gt;          TYPE ANY,
                 &amp;lt;cd&amp;gt;          TYPE ANY,
                 &amp;lt;csplevel&amp;gt;    TYPE ANY,
                 &amp;lt;mov1&amp;gt;         TYPE ANY,
                 &amp;lt;cang1&amp;gt;        TYPE ANY,
                 &amp;lt;ad1&amp;gt;          TYPE ANY,
                 &amp;lt;cd1&amp;gt;          TYPE ANY,
                 &amp;lt;csplevel1&amp;gt;    TYPE ANY,
                 &amp;lt;cgcomp1&amp;gt;     TYPE ANY,
                 &amp;lt;pcomp1&amp;gt;      TYPE ANY,
                 &amp;lt;doct1&amp;gt;       TYPE ANY,
                 &amp;lt;plevel1&amp;gt;     TYPE ANY,
                 &amp;lt;tc1&amp;gt;         TYPE ANY,
                 &amp;lt;invc1&amp;gt;       TYPE ANY,
                 &amp;lt;alco1&amp;gt;        TYPE ANY,
                 &amp;lt;prgp1&amp;gt;         TYPE ANY,
                 &amp;lt;ct1&amp;gt;          TYPE ANY,
                 &amp;lt;CURKEY1&amp;gt;      TYPE ANY,
                 &amp;lt;qty1&amp;gt;        TYPE ANY,
                 &amp;lt;trn_lc1&amp;gt;     TYPE ANY,
                 &amp;lt;trn_gc1&amp;gt;      TYPE ANY,
                  &amp;lt;Rcomp&amp;gt;       TYPE ANY,
                 &amp;lt;Rcgcomp&amp;gt;     TYPE ANY,
                 &amp;lt;Rpcomp&amp;gt;      TYPE ANY,
                 &amp;lt;Rdoct&amp;gt;       TYPE ANY,
                 &amp;lt;Rplevel&amp;gt;     TYPE ANY,
                 &amp;lt;Rtc&amp;gt;         TYPE ANY,
                 &amp;lt;Rinvc&amp;gt;       TYPE ANY,
                 &amp;lt;Rqty&amp;gt;        TYPE ANY,
                 &amp;lt;Rtrn_lc&amp;gt;     TYPE ANY,
                 &amp;lt;Rtrn_gc&amp;gt;      TYPE ANY,
                 &amp;lt;RCURKEY&amp;gt;      TYPE ANY,
                 &amp;lt;Ralco&amp;gt;        TYPE ANY,
                 &amp;lt;Rmov&amp;gt;         TYPE ANY,
                 &amp;lt;Rcang&amp;gt;        TYPE ANY,
                 &amp;lt;Rad&amp;gt;          TYPE ANY,
                 &amp;lt;Rcd&amp;gt;          TYPE ANY,
                 &amp;lt;Rcsplevel&amp;gt;    TYPE ANY,
                 &amp;lt;Rprgp&amp;gt;        TYPE ANY,
                 &amp;lt;Rct&amp;gt;          TYPE ANY,
                 &amp;lt;bu&amp;gt;          TYPE ANY,
                 &amp;lt;bu1&amp;gt;         TYPE ANY,
                 &amp;lt;low&amp;gt;         TYPE ANY,
                 &amp;lt;l_year&amp;gt;      TYPE ANY ,
                 &amp;lt;l_period&amp;gt;    TYPE ANY ,
                 &amp;lt;l_mmyy&amp;gt;      TYPE ANY,
                 &amp;lt;ls_sel_data&amp;gt; TYPE ANY,
                 &amp;lt;ls_val&amp;gt;      TYPE zbcs_check_val,
                 &amp;lt;lt_t_val&amp;gt;    TYPE STANDARD TABLE,
                 &amp;lt;lt_t_final&amp;gt;  TYPE STANDARD TABLE.
**************** Begin Of Addtion - ASIF MAQBOOL ******************
  Data: BEGIN OF l_s_tab,
        values TYPE C LENGTH 400,
       end OF l_s_tab,
      gs_param LIKE LINE OF gt_param,
      l_temp_store LIKE gt_param.

  Field-SYMBOLS: &amp;lt;gt_param&amp;gt; TYPE ANY TABLE,
                 &amp;lt;final_gt&amp;gt; TYPE any ,
                 &amp;lt;gs_fieldname&amp;gt; TYPE any,
                 &amp;lt;gs_value&amp;gt; TYPE any.

  Data: l_t_tab TYPE TABLE OF string INITIAL SIZE 0,
       str TYPE string,
       str1 TYPE string.
**************** End Of Addtion - ASIF MAQBOOL ******************
* create Line-structure of data table
  CREATE DATA lr_s_data LIKE LINE OF ct_data.
  ASSIGN lr_s_data-&amp;gt;* TO &amp;lt;ls_data_std&amp;gt;.

** create cumulation table
  CREATE DATA lr_t_data LIKE STANDARD TABLE OF &amp;lt;ls_data_std&amp;gt;.
  ASSIGN lr_t_data-&amp;gt;* TO &amp;lt;lt_data_std&amp;gt;.

  LOOP AT ct_data INTO &amp;lt;ls_data_std&amp;gt;.
    COLLECT &amp;lt;ls_data_std&amp;gt; INTO &amp;lt;lt_data_std&amp;gt;.
  ENDLOOP.

  FREE ct_data.

* get reference for outtab / create outtab
  CALL METHOD go_model-&amp;gt;create_data_reference
    EXPORTING
      io_tx_data_io_type = go_model-&amp;gt;ds_tx_data_io_type-totals
      i_type             = l_outtype "'UCR_SX_TX_DATA_LST'
    IMPORTING
      er_data            = lr_s_data_out.

  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_cop&amp;gt;.

  CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF &amp;lt;ls_data_out&amp;gt;.
  ASSIGN lr_t_data_out-&amp;gt;* TO &amp;lt;lt_data_out&amp;gt;.

  CREATE DATA lr LIKE LINE OF &amp;lt;lt_data_std&amp;gt;.

  ASSIGN lr-&amp;gt;* TO &amp;lt;ls_data&amp;gt;.

  CALL METHOD lcl_convert_output=&amp;gt;get_instance
    EXPORTING
      io_model    = go_model
      it_char     = lt_char
    IMPORTING
      eo_instance = lo_conv
    CHANGING
      cs_data     = &amp;lt;ls_data&amp;gt;.

  ASSIGN: l_comp   TO &amp;lt;comp&amp;gt;,
          l_cgcomp TO &amp;lt;cgcomp&amp;gt;,
          l_pcomp  TO &amp;lt;pcomp&amp;gt;,
          l_invc   TO &amp;lt;invc&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_plevel TO &amp;lt;plevel&amp;gt;,
          l_tc     TO &amp;lt;tc&amp;gt;,
          l_qty    TO &amp;lt;qty&amp;gt;,
          l_trn_lc TO &amp;lt;trn_lc&amp;gt;,
          l_trn_gc TO &amp;lt;trn_gc&amp;gt;,
          l_alco   TO &amp;lt;alco&amp;gt;,
          l_curkey TO &amp;lt;CURKEY&amp;gt;,
          l_zfb_ct TO &amp;lt;CT&amp;gt;,
          l_doct   TO &amp;lt;doct&amp;gt;,
          l_bu     TO &amp;lt;bu&amp;gt;,
          l_mmyy   TO &amp;lt;l_mmyy&amp;gt;,
          l_low    TO &amp;lt;low&amp;gt;,
          l_move   TO &amp;lt;mov&amp;gt;,
          l_cang   TO &amp;lt;cang&amp;gt;,
          l_ad     TO &amp;lt;ad&amp;gt;,
          l_cd     TO &amp;lt;cd&amp;gt;,
          l_csplevel TO &amp;lt;csplevel&amp;gt;,
          l_prgp     TO &amp;lt;prgp&amp;gt;    .


  LOOP AT &amp;lt;lt_data_std&amp;gt; INTO &amp;lt;ls_data&amp;gt;.    "  loop

    CALL METHOD lo_conv-&amp;gt;convert_output.      "end of "wis240605

*     fill outtab
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_char
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.
    ASSIGN COMPONENT if_uc_model=&amp;gt;gc_type_comp_s_kfig
    OF STRUCTURE &amp;lt;ls_data&amp;gt; TO &amp;lt;ls_data_cop&amp;gt;.
    MOVE-CORRESPONDING &amp;lt;ls_data_cop&amp;gt; TO &amp;lt;ls_data_out&amp;gt;.

    " --------------------- START OF COMMENT BY ASIF MAQBOOL --------------------------------------------
    " REASON :  WE DONT NEED 4 RULE VALIDATION for aggregated data FOR ONLY YBBCSDOWNLOAD Transaction. --------------

*    IF ct_task = c_task01 OR ct_task = space . "'it can be T2700 or blank
*
**************************************************************
******  aggregate the transactionaldata for given Rules  *****
**************************************************************
*
    ASSIGN COMPONENT : &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;,
                       &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                       &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                       &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;,
                       &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;invc1&amp;gt;, "added by Asif M.
                       &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                       &amp;lt;tc&amp;gt;     OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;tc1&amp;gt;,
                       &amp;lt;qty&amp;gt;    OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;qty1&amp;gt;,
                       &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_lc1&amp;gt;,
                       &amp;lt;trn_gc&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;trn_gc1&amp;gt;,
                       &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;alco1&amp;gt;,
                       &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;CURKEY1&amp;gt;,
                       &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;CT1&amp;gt;,
                       &amp;lt;DOCT&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;doct1&amp;gt;.

***** 1st Rule ****
** dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
*      IF &amp;lt;trn_lc1&amp;gt; = 0 AND &amp;lt;qty1&amp;gt; = 0.
*        CONTINUE.
*      ENDIF.
*
***** 2nd Rule ****
** delete the Posting levels if it is &amp;gt; 1 and clear to blank  CS_PLEVEL
*      CHECK &amp;lt;plevel1&amp;gt; LE 1.
*      CLEAR &amp;lt;plevel1&amp;gt;.
*
***** 3rd Rule ****
** replace the Unilever Company with CG without prefix G and compare with Partner comp for deletion
** /BIC/ZCS_COMP with   /1FB/SEM_CGCOMP and check with /BIC/ZCS_PCOM
*
*      IF ct_task &amp;lt;&amp;gt; space.
****  code added by Ramesh for the removal GBRNCH  records while downloading the file.
***********************************************************************
***** code for removal of GBRNCH records only - Hardcode - sample code
**        IF &amp;lt;cgcomp1&amp;gt; &amp;lt;&amp;gt; 'GBRNCH'.   " to avoid BRNCH records
*** replace Company with CG without prefix G when task name is not blank
**          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
**        ELSE.
**          CONTINUE.
**        ENDIF.
***** code for removal of GBRNCH records only - Hardcode - sample code
***********************************************************************
*
****  the assumption here,is consider only records with Legal entity as numeric excepting the first character
*        IF &amp;lt;cgcomp1&amp;gt;+1 CN sy-abcde.   " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
*          &amp;lt;comp1&amp;gt; = &amp;lt;cgcomp1&amp;gt;+1.
*        ELSE.
*          CONTINUE.
*        ENDIF.
*
*
*      ENDIF.
*
** removing leading zero's as SAP sometimes adding them to &amp;lt;pcomp1&amp;gt;.
**      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
**        EXPORTING
**          input  = &amp;lt;pcomp1&amp;gt;
**        IMPORTING
**          output = &amp;lt;pcomp1&amp;gt;.

    PERFORM f_alpha_conversion USING &amp;lt;comp1&amp;gt;
                                CHANGING &amp;lt;comp1&amp;gt;.

    PERFORM f_alpha_conversion USING &amp;lt;pcomp1&amp;gt;
                               CHANGING &amp;lt;pcomp1&amp;gt;.

    " removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.

    PERFORM f_alpha_conversion USING &amp;lt;invc1&amp;gt;
                               CHANGING &amp;lt;invc1&amp;gt;.



*      CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;pcomp1&amp;gt;.
*
***** 4rth Rule ****
** initialise Document type &amp;amp; PV TC to blank   /BIC/ZCS_DOCT &amp;amp; /1FB/CS_TRN_TC
*      CLEAR: &amp;lt;doct1&amp;gt;,&amp;lt;tc1&amp;gt;.
*
*    ENDIF.


    " ----------- END OF COMMENT BY ASIF MAQBOOL -----------------------------------------------------------------------
    COLLECT: &amp;lt;ls_data_out&amp;gt; INTO &amp;lt;lt_data_out&amp;gt;.

  ENDLOOP.          " end loop


  IF &amp;lt;lt_data_out&amp;gt; IS INITIAL.
    PERFORM f_build_msgs USING 'UCM0'
                               'W'
                               '053'
                               text-102
                               space "ct_task
                               space
                               space
                      CHANGING ct_message.
    RETURN.
    MESSAGE e208(00) WITH text-102.
    EXIT.
  ENDIF.


* perform various steps based on task name
  CASE ct_task.

    WHEN c_task01 OR space.              " 'T2700' or blank


* download the data into a tab delimited file
*****************************************************
****             start of Task 0001              ****
*****************************************************
* create Line-structure of download table
      CREATE DATA ls_download TYPE ty_download.
      ASSIGN ls_download-&amp;gt;* TO &amp;lt;ls_download&amp;gt;.

** create Download data internal table for task T2700
      CREATE DATA lt_download LIKE STANDARD TABLE OF &amp;lt;ls_download&amp;gt;.
      ASSIGN lt_download-&amp;gt;* TO &amp;lt;lt_download&amp;gt;.

      LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

        MOVE-CORRESPONDING &amp;lt;ls_data_out&amp;gt; TO &amp;lt;ls_download&amp;gt;.

        ASSIGN COMPONENT &amp;lt;trn_lc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_lc1&amp;gt;.
        ASSIGN COMPONENT &amp;lt;trn_gc&amp;gt; OF STRUCTURE &amp;lt;ls_download&amp;gt; TO &amp;lt;trn_gc1&amp;gt;.
**** 5th Rule ****
* Move the Negative sign to front

        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_lc1&amp;gt;.
        PERFORM f_put_sign_in_front CHANGING &amp;lt;trn_gc1&amp;gt;.
        INSERT &amp;lt;ls_download&amp;gt;  INTO TABLE &amp;lt;lt_download&amp;gt;.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.




      FIELD-SYMBOLS: &amp;lt;fs1&amp;gt; type ANY TABLE,
                     &amp;lt;fs_Struct&amp;gt; type any.



      Data: fs_Struct type ref to data,
            fs_table TYPE REF TO data.



      CREATE DATA fs_Struct like &amp;lt;ls_data_out&amp;gt;.
      ASSIGN fs_Struct-&amp;gt;* to &amp;lt;fs_Struct&amp;gt;.

      CREATE DATA fs_table like TABLE OF &amp;lt;fs_Struct&amp;gt;.
      ASSIGN fs_table-&amp;gt;* TO &amp;lt;fs1&amp;gt;.

      CLEAR: l_path,l_filename,l_fullpath,l_action.
*
*      CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
*       EXPORTING
*         window_title            = 'Download aggregated BCS data to Tab Delimited file'
*         default_extension       = 'txt'
**   DEFAULT_FILE_NAME       = dynamic file name as like ALE settings
*         file_filter             = 'Text files (*.txt)'
*       IMPORTING
*         filename                = l_filename
*         path                    = l_path
*         fullpath                = l_fullpath
*         user_action             = l_action .

      CALL METHOD cl_gui_cfw=&amp;gt;flush.



      " *************************** START OF CHANGE - ASIF MAQBOOL ************************
      IF l_action = 0 OR l_action = 1.

        " Create Header Data for Download
        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.

        APPEND '100' to l_t_tab.
        READ TABLE gt_param INDEX 6 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
        Clear gs_param.
        READ TABLE gt_param INDEX 4 INTO gs_param.
        ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.



        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
        CLEAR l_t_tab.
        INSERT str1 INTO TABLE l_t_tab.
        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.
        "If atleast one of the aggregation checkoxes are on.
        IF Aggr_swt = 'X'.
******************************** TEST *******************************
          DATA: l_s_download type REF TO DATA.
          FIELD-SYMBOLS: &amp;lt;ls&amp;gt; type any.

          CREATE DATA l_s_download TYPE ty_download.
          ASSIGN l_s_download-&amp;gt;* TO &amp;lt;LS&amp;gt;.

          DATA: R_s_download type REF TO DATA.
          FIELD-SYMBOLS: &amp;lt;Rs&amp;gt; type any,
                         &amp;lt;Wa&amp;gt; type any.

          CREATE DATA R_s_download TYPE ty_download.
          ASSIGN R_s_download-&amp;gt;* TO &amp;lt;RS&amp;gt;.

          DATA: TOTALLINES TYPE I,
                Initial TYPE I VALUE 1.

          FIELD-SYMBOLS: &amp;lt;t_Hashed&amp;gt; type any.
          DATA: g_struct type REF TO cl_abap_structdescr,
                g_table type ref to CL_ABAP_TABLEDESCR,
                tkeys type ABAP_KEYDESCR_TAB.



          move-CORRESPONDING chk_params to param_struct.

          CALL FUNCTION 'Z_RTTI_STRUCTURE'
            EXPORTING
              I_ZCONGRP_CHK   = param_struct-ZCONGRP_CHK
              I_ZCOMP_CHK     = param_struct-ZCOMP_CHK
              I_ZFSITEM_CHK   = param_struct-ZFSITEM_CHK
              I_ZMOV_CHK      = param_struct-ZMOV_CHK
              I_ZFUNC_CHK     = param_struct-ZFUNC_CHK
              I_ZACTDISP_CHK  = param_struct-ZACTDISP_CHK
              I_ZCOSTANAL_CHK = param_struct-ZCOSTANAL_CHK
              I_ZCONTDIS_CHK  = param_struct-ZCONTDIS_CHK
              I_ZPROCAT_CHK   = param_struct-ZPROCAT_CHK
              I_ZPARTCOMP_CHK = param_struct-ZPARTCOMP_CHK
              I_ZINV_CHK      = param_struct-ZINV_CHK
              I_ZDOCTYPE_CHK  = param_struct-ZDOCTYPE_CHK
              I_ZPOST_CHK     = param_struct-ZPOST_CHK
              I_ZCURKEY4T_CHK = param_struct-ZCURKEY4T_CHK
              I_ZCURKEY_I_CHK = param_struct-ZCURKEY_I_CHK
            IMPORTING
              E_T_STRUCT      = g_struct
              T_KEYS          = tkeys.

          DATA : WA TYPE REF TO DATA.
          CREATE DATA WA TYPE HANDLE g_struct.
          ASSIGN WA-&amp;gt;* TO &amp;lt;WA&amp;gt;.

          CALL FUNCTION 'Z_RTTI_HASHEDTABLE'
            EXPORTING
              G_STRUCT    = g_struct
              G_T_KEYS    = tkeys
              I_TempTable = &amp;lt;fs1&amp;gt;
            IMPORTING
              G_T_TYPE    = g_table.


          FIELD-SYMBOLS: &amp;lt;t_wa&amp;gt; type ANY TABLE.

          DATA gr_itab TYPE REF TO DATA.
          CREATE DATA gr_itab TYPE HANDLE g_table.
          ASSIGN gr_itab-&amp;gt;* TO &amp;lt;T_WA&amp;gt;.

          DATA: OBJ1 type REF TO data.
          FIELD-SYMBOLS: &amp;lt;fs_temp&amp;gt; type ANY.
          CREATE DATA obj1 LIKE LINE OF &amp;lt;T_Wa&amp;gt;.
          ASSIGN OBJ1-&amp;gt;* TO &amp;lt;fs_temp&amp;gt;.

          " ASSIGN FIELD SYMBOLS TO EACH COMP OF LS.
          ASSIGN COMPONENT :     &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;lS&amp;gt; TO &amp;lt;comp1&amp;gt;,
                                 &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cgcomp1&amp;gt;,
                                 &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;pcomp1&amp;gt;,
                                 &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;doct1&amp;gt;,
                                 &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;invc1&amp;gt;,
                                 &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;plevel1&amp;gt;,
                                 &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;alco1&amp;gt;,
                                 &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;CURKEY1&amp;gt;,
                                 &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;lS&amp;gt; TO &amp;lt;CT1&amp;gt;,
                                 &amp;lt;mov&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;mov1&amp;gt;,
                                 &amp;lt;ad&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;ad1&amp;gt;,
                                 &amp;lt;cd&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cd1&amp;gt;,
                                 &amp;lt;cang&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;cang1&amp;gt;,
                                 &amp;lt;csplevel&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;csplevel1&amp;gt;,
                                 &amp;lt;prgp&amp;gt; OF STRUCTURE &amp;lt;ls&amp;gt; TO &amp;lt;prgp1&amp;gt;

                                .
          " ASSIGN FIELD SYMBOLS TO EACH COMP OF RS.

          ASSIGN COMPONENT :     &amp;lt;comp&amp;gt;   OF STRUCTURE &amp;lt;RS&amp;gt; TO &amp;lt;Rcomp&amp;gt;,
                                 &amp;lt;cgcomp&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcgcomp&amp;gt;, "
                                 &amp;lt;pcomp&amp;gt;  OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rpcomp&amp;gt;,
                                 &amp;lt;doct&amp;gt;   OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rdoct&amp;gt;,
                                 &amp;lt;invc&amp;gt;   OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rinvc&amp;gt;,
                                 &amp;lt;plevel&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rplevel&amp;gt;, "
                                 &amp;lt;alco&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Ralco&amp;gt;,
                                 &amp;lt;CURKEY&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;RCURKEY&amp;gt;,
                                 &amp;lt;CT&amp;gt; OF STRUCTURE &amp;lt;RS&amp;gt; TO &amp;lt;RCT&amp;gt;,
                                 &amp;lt;mov&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rmov&amp;gt;,
                                 &amp;lt;ad&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rad&amp;gt;,
                                 &amp;lt;cd&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcd&amp;gt;,
                                 &amp;lt;cang&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcang&amp;gt;,
                                 &amp;lt;csplevel&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rcsplevel&amp;gt;,
                                 &amp;lt;prgp&amp;gt; OF STRUCTURE &amp;lt;Rs&amp;gt; TO &amp;lt;Rprgp&amp;gt;
                                 .

          DESCRIBE TABLE &amp;lt;lt_download&amp;gt; LINES TOTALLINES.

          LOOP AT &amp;lt;LT_DOWNLOAD&amp;gt; INTO &amp;lt;LS&amp;gt;.

            Initial = 1. " Initialize to 1 cuz

            WHILE Initial &amp;lt;&amp;gt; TOTALLINES. " Do it until end of ltdownload lines

              READ TABLE &amp;lt;LT_DOWNLOAD&amp;gt; INDEX Initial INTO &amp;lt;rs&amp;gt;.


              IF ( &amp;lt;comp1&amp;gt; = &amp;lt;Rcomp&amp;gt; AND  &amp;lt;mov1&amp;gt; = &amp;lt;Rmov&amp;gt; AND &amp;lt;pcomP1&amp;gt; = &amp;lt;Rpcomp&amp;gt; AND
                   &amp;lt;invc1&amp;gt; = &amp;lt;Rinvc&amp;gt; AND &amp;lt;cang1&amp;gt; = &amp;lt;Rcang&amp;gt; AND &amp;lt;ad1&amp;gt; = &amp;lt;Rad&amp;gt; AND &amp;lt;cd1&amp;gt; = &amp;lt;Rcd&amp;gt; AND
                   &amp;lt;prgp1&amp;gt; = &amp;lt;Rprgp&amp;gt; AND &amp;lt;DOCT1&amp;gt; = &amp;lt;RDOCT&amp;gt;
                  ).

                MOVE-CORRESPONDING &amp;lt;RS&amp;gt; TO &amp;lt;WA&amp;gt;.
                MOVE-CORRESPONDING &amp;lt;RS&amp;gt; TO &amp;lt;fs_temp&amp;gt;.
                COLLECT &amp;lt;fs_temp&amp;gt; inTO &amp;lt;T_wA&amp;gt;.
                " COLLECT &amp;lt;fs_Struct&amp;gt; into &amp;lt;fs1&amp;gt;.
                " COLLECT &amp;lt;fs_Struct&amp;gt; into &amp;lt;t_Wa&amp;gt;.


              endif.


              Initial = Initial + 1.

            ENDWHILE.



          ENDLOOP.

          get REFERENCE OF &amp;lt;t_wa&amp;gt; INTO lo_dataref.

          FREE ct_Data.
          "ct_data = &amp;lt;T_wa&amp;gt;.

*" THis is needed to convert the hashed table to
          " standard table as Gui_download only accepts standard table
*CREATE DATA lp_data LIKE LINE OF &amp;lt;t_wa&amp;gt;.
*ASSIGN lp_data-&amp;gt;* TO &amp;lt;ls_wa&amp;gt;.
*
*CREATE DATA lp_data LIKE STANDARD TABLE OF &amp;lt;ls_Wa&amp;gt;.
*ASSIGN lp_data-&amp;gt;* TO &amp;lt;lts_data&amp;gt;.
*
*&amp;lt;lts_data&amp;gt; = &amp;lt;t_wa&amp;gt;.
          FIELD-SYMBOLS: &amp;lt;fs&amp;gt; type any,
                         &amp;lt;fs2&amp;gt; type any.

          DATA: fs type REF TO data.
          DATA: fs2 type REF TO data.
          CREATE DATA fs like LINE OF &amp;lt;lt_data_out&amp;gt;.
          ASSIGN fs-&amp;gt;* to &amp;lt;fs&amp;gt;.

          CREATE DATA fs2 like LINE OF &amp;lt;t_Wa&amp;gt;.
          ASSIGN fs2-&amp;gt;* to &amp;lt;fs2&amp;gt;.


          clear &amp;lt;lt_data_out&amp;gt;.
          loop at &amp;lt;t_Wa&amp;gt; into &amp;lt;fs2&amp;gt;.

            move-CORRESPONDING &amp;lt;fs2&amp;gt; to &amp;lt;fs&amp;gt;.
            insert &amp;lt;fs&amp;gt; into  TABLE &amp;lt;lt_data_out&amp;gt;.

          endloop.


          ct_data = &amp;lt;lt_data_out&amp;gt;.



*
*" Get the header data downloaded
*CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.

          " Now the checkboxes aggregated Data.
*CALL FUNCTION 'Z_DOWNLOAD_DATA'
*          EXPORTING
*               I_FULLPATH = l_fullpath
*               I_SEPERATOR = l_seperator
*               I_DATA = &amp;lt;lts_data&amp;gt;.


*********************** TEST *****************************

        ELSEIF Aggr_swt &amp;lt;&amp;gt; 'X'.
*
*CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.
          " NON-Checkbox Data Download
*CALL FUNCTION 'Z_DOWNLOAD_DATA'
*          EXPORTING
*               I_FULLPATH = l_fullpath
*               I_SEPERATOR = l_seperator
*               I_DATA = &amp;lt;lt_download&amp;gt;.


        endif.

*" Create Header Data for Download
*        ASSIGN gt_param TO &amp;lt;gt_param&amp;gt;.
*
*        APPEND '100' to l_t_tab.
*          READ TABLE gt_param INDEX 6 INTO gs_param.
*          ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*        Clear gs_param.
*          READ TABLE gt_param INDEX 4 INTO gs_param.
*          ASSIGN COMPONENT 2 OF STRUCTURE gs_param to &amp;lt;gs_value&amp;gt;.
*        APPEND &amp;lt;gs_value&amp;gt; to l_t_tab.
*
*
*
*        CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=&amp;gt;horizontal_tab.
*        CLEAR l_t_tab.
*        INSERT str1 INTO TABLE l_t_tab.
*        ASSIGN l_t_tab TO &amp;lt;final_gt&amp;gt;.

        "  To Start by adding the Header Data.
*        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename              = l_fullpath
*            write_field_separator = l_seperator "SPACE
*          CHANGING
*            data_tab              = &amp;lt;final_gt&amp;gt;
*          EXCEPTIONS
*            file_write_error      = 1.
*



        " Now append the Data after the header data insertion.
*        CALL METHOD cl_gui_frontend_services=&amp;gt;gui_download
*          EXPORTING
*            filename                = l_fullpath
*            write_field_separator   = l_seperator "SPACE
*            append                  = 'X'
*          CHANGING
*            data_tab                = &amp;lt;lt_download&amp;gt;
*          EXCEPTIONS
*            file_write_error        = 1
*            no_batch                = 2
*            gui_refuse_filetransfer = 3
*            invalid_type            = 4
*            no_authority            = 5
*            unknown_error           = 6
*            header_not_allowed      = 7
*            separator_not_allowed   = 8
*            filesize_not_allowed    = 9
*            header_too_long         = 10
*            dp_error_create         = 11
*            dp_error_send           = 12
*            dp_error_write          = 13
*            unknown_dp_error        = 14
*            access_denied           = 15
*            dp_out_of_memory        = 16
*            disk_full               = 17
*            dp_timeout              = 18
*            file_not_found          = 19
*            dataprovider_exception  = 20
*            control_flush_error     = 21
*            not_supported_by_gui    = 22
*            error_no_gui            = 23
*            OTHERS                  = 24.


        " *************************** END OF CHANGE - ASIF MAQBOOL ************************






        IF sy-subrc &amp;lt;&amp;gt; 0.
*          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          PERFORM f_build_msgs USING sy-msgid
                                     sy-msgty
                                     sy-msgno
                                     sy-msgv1
                                     sy-msgv2
                                     sy-msgv3
                                     sy-msgv4
                            CHANGING ct_message.
          RETURN.

        ENDIF.

      ENDIF.

*****************************************************
****               End of Task 0001              ****
*****************************************************

    WHEN c_task02.                                          "'T2490'.

* switch to validations on aggregated transactional data
*****************************************************
**** Start of Task 0002 validations ****
*****************************************************

* create Line-structure of gt_sel(selection) data table
      CREATE DATA lr_sel_data LIKE LINE OF ct_sel." zbcs_check_val
      ASSIGN lr_sel_data-&amp;gt;* TO &amp;lt;ls_sel_data&amp;gt;.

* create validation table
      CREATE DATA lr_t_val TYPE STANDARD TABLE OF  zbcs_check_val.
      ASSIGN lr_t_val-&amp;gt;* TO &amp;lt;lt_t_val&amp;gt;.


* create data table that does not fulfill rules after validation
      CREATE DATA lr_t_final LIKE STANDARD TABLE OF  &amp;lt;ls_data_out&amp;gt;.
      ASSIGN lr_t_final-&amp;gt;* TO &amp;lt;lt_t_final&amp;gt;.


* concatenate year &amp;amp; month to query custom table
      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCYEAR'.  "YYYY
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_year&amp;gt;.

      &amp;lt;l_mmyy&amp;gt; = &amp;lt;l_year&amp;gt;.

      READ TABLE ct_sel INTO &amp;lt;ls_sel_data&amp;gt; WITH KEY fieldname = 'FISCPERIOD'."MM
      CHECK sy-subrc = 0.
      ASSIGN COMPONENT &amp;lt;low&amp;gt; OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;. " via BADI
**      ASSIGN COMPONENT 5 OF STRUCTURE &amp;lt;ls_sel_data&amp;gt; TO &amp;lt;l_period&amp;gt;.  " via report

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = &amp;lt;l_period&amp;gt;
        IMPORTING
          output = &amp;lt;l_period&amp;gt;.

      CONCATENATE &amp;lt;l_mmyy&amp;gt; &amp;lt;l_period&amp;gt;  INTO &amp;lt;l_mmyy&amp;gt;.

** get data for given criteria
      SELECT * INTO TABLE &amp;lt;lt_t_val&amp;gt; FROM zbcs_check_val
      WHERE valid_from LE &amp;lt;l_mmyy&amp;gt; AND
            valid_to   GE &amp;lt;l_mmyy&amp;gt;.
      IF sy-subrc &amp;lt;&amp;gt; 0.
*   error message
        PERFORM f_build_msgs USING 'UCM0'
                                   'E'
                                   '053'
                                   text-103
                                   space
                                   space
                                   space
                          CHANGING ct_message.
        RETURN.

      ENDIF.

      LOOP AT &amp;lt;lt_t_val&amp;gt; ASSIGNING &amp;lt;ls_val&amp;gt;.

        CASE &amp;lt;ls_val&amp;gt;-valid_rules.

          WHEN 'VAL_001'.
* meant for parallal cursor
*            READ TABLE &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; WITH KEY (l_comp) = &amp;lt;ls_val&amp;gt;-company
*                                                                 (l_bu)   = &amp;lt;ls_val&amp;gt;-bus_cost_unit.
*            CHECK sy-subrc = 0.
*            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt; FROM sy-tabix.

            LOOP AT &amp;lt;lt_data_out&amp;gt; INTO &amp;lt;ls_data_out&amp;gt;.

              ASSIGN COMPONENT: &amp;lt;bu&amp;gt;   OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;bu1&amp;gt;,
                                &amp;lt;comp&amp;gt; OF STRUCTURE &amp;lt;ls_data_out&amp;gt; TO &amp;lt;comp1&amp;gt;.

*** inserting all error records which does not match 'VAL_001'
              CHECK &amp;lt;comp1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-company AND &amp;lt;bu1&amp;gt; &amp;lt;&amp;gt; &amp;lt;ls_val&amp;gt;-bus_cost_unit.
              flg_chk = abap_true.
              COLLECT &amp;lt;ls_data_out&amp;gt;  INTO &amp;lt;lt_t_final&amp;gt;.
              PERFORM f_build_msgs USING 'UCM0'
                                         'E'
                                         '053'
                                         &amp;lt;ls_val&amp;gt;-valid_rules
                                         text-104
                                         &amp;lt;ls_val&amp;gt;-company
                                         &amp;lt;ls_val&amp;gt;-bus_cost_unit
                                CHANGING ct_message.

            ENDLOOP.
*** future use of further validation
***            CHECK flg_chk = abap_true.
***            flg_chk = abap_false.
***            PERFORM f_build_msgs USING 'UCM0'
***                           'E'
***                           '053'
***                           &amp;lt;ls_val&amp;gt;-valid_rules
***                           text-104
***                           &amp;lt;ls_val&amp;gt;-company
***                           &amp;lt;ls_val&amp;gt;-bus_cost_unit
***                  CHANGING ct_message.

***          WHEN 'VAL_002'.
*** Etc
*** future use of further validation

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

* move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_t_final&amp;gt;.

*****************************************************
**** End of Task  0002 validations ****
*****************************************************

    WHEN OTHERS.

** move the aggregated data to final table for display
      FREE ct_data.
      ct_data = &amp;lt;lt_data_out&amp;gt;.

  ENDCASE.

ENDFORM.                    " f_download_data_YBBCSDOWNLOAD
&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 12 Feb 2008 16:09:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/first-project-bcs/m-p/3412786#M819632</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-12T16:09:49Z</dc:date>
    </item>
    <item>
      <title>Re: First Project - BCS</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/first-project-bcs/m-p/3412787#M819633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am also from same project.&lt;/P&gt;&lt;P&gt;We are facing a problem with this code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can I increase the length of the field obtained by this method.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD go_model-&amp;gt;create_data_reference&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      io_tx_data_io_type = go_model-&amp;gt;ds_tx_data_io_type-totals&lt;/P&gt;&lt;P&gt;      i_type             = l_outtype "'UCR_SX_TX_DATA_LST'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      er_data            = lr_s_data_out.&lt;/P&gt;&lt;P&gt;ASSIGN lr_s_data_out-&amp;gt;* TO &amp;lt;ls_data_out&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are getting data overflow error when we try to move some large value to one of the field in &amp;lt;ls_data_out&amp;gt;.&lt;/P&gt;&lt;P&gt;we can avoid this if the field length is increased.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Waiting for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Madhu G S&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Jul 2008 11:16:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/first-project-bcs/m-p/3412787#M819633</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-09T11:16:42Z</dc:date>
    </item>
  </channel>
</rss>

