‎2008 Feb 12 4:09 PM
*----------------------------------------------------------------------*
***INCLUDE LUCR_LSTF03 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form display_detail_list
*&---------------------------------------------------------------------*
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->html_control IS INITIAL.
CALL METHOD go_splitter_container->remove_control
EXPORTING
row = 1
column = 1.
ENDIF.
ENDIF.
ENDIF.
* Initialize document
CALL METHOD go_dydo->initialize_document.
IF LINES( gt_header ) > 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->merge_document.
* set toolbar-added functions for detailed list
REFRESH gt_toolbar.
IF go_model->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->handle_toolbar_comp FOR go_grid.
* Display header
CALL METHOD go_dydo->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->set_row_height
EXPORTING
id = 1
height = g_height.
ENDIF.
* display detail-list
CALL METHOD go_grid->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 = <gt_outtab_detail>.
IF NOT g_display_detail_next IS INITIAL.
CALL METHOD go_grid->refresh_table_display.
ENDIF.
* Set cursor on selected row if necesary
IF NOT gt_row_id_detail IS INITIAL.
CALL METHOD go_grid->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
*&---------------------------------------------------------------------*
*& Form display_main_list
*&---------------------------------------------------------------------*
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->ds_tx_data_io_type IS NOT INITIAL.
IF go_model->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->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->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->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->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 ) > 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->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 = <gt_outtab>.
* set current fieldcat
CALL METHOD go_grid->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->refresh_table_display.
REFRESH: gt_fieldcat_save, gt_filter_save, gt_sort_save.
CLEAR : gs_layout_save.
ELSE.
* Show ALV
CALL METHOD go_grid->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 = <gt_outtab>.
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->set_selected_rows
EXPORTING
it_index_rows = gt_row_id.
ENDIF.
ENDFORM. " display_main_list_subscreen
*&---------------------------------------------------------------------*
*& Form display_message
*&---------------------------------------------------------------------*
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->set_row_height
* EXPORTING
* id = 1
* height = 0.
* CALL METHOD go_splitter_container->set_row_sash
* EXPORTING
* id = 1
* type = cl_gui_splitter_container=>type_sashvisible
* value = cl_gui_splitter_container=>false.
* ENDIF.
*** End of Comment By Ramesh Babu N,IBM - C1DK900725 ***
* display messages
* ls_layout-no_toolbar = 'X'.
CALL METHOD lo_grid_object->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=>get_instance
IMPORTING
eo_instance = go_parameter.
ENDIF.
*** Start of Comment By Ramesh Babu N,IBM - C1DK900725 ***
* SET HANDLER go_event_dock->handle_new_parameters FOR go_parameter.
*** End of Comment By Ramesh Babu N,IBM - C1DK900725 ***
ENDFORM. " display_message
*&---------------------------------------------------------------------*
*& Form sub_download_data
*&---------------------------------------------------------------------*
* Used for downloading BCS data to a TAB delimited file in Custom task *
*----------------------------------------------------------------------*
* <--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=>th_comp,
ls_comp TYPE lcl_convert_output=>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 <LS_DATA_OUT> 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: <lt_data_out> TYPE STANDARD TABLE,
<ls_data_out> TYPE ANY,
<ls_data> TYPE ANY,
<ls_data_cop> TYPE ANY,
<lt_data_std> TYPE STANDARD TABLE,
<ls_data_std> TYPE ANY,
<ls_download> TYPE ANY,
<lt_download> TYPE STANDARD TABLE,
<comp> TYPE ANY,
<cgcomp> TYPE ANY,
<pcomp> TYPE ANY,
<doct> TYPE ANY,
<plevel> TYPE ANY,
<tc> TYPE ANY,
<invc> TYPE ANY,
<qty> TYPE ANY,
<unit> TYPE ANY,
<trn_lc> TYPE ANY,
<comp1> TYPE ANY,
<cgcomp1> TYPE ANY,
<pcomp1> TYPE ANY,
<doct1> TYPE ANY,
<plevel1> TYPE ANY,
<tc1> TYPE ANY,
<invc1> TYPE ANY,
<qty1> TYPE ANY,
<trn_lc1> TYPE ANY,
<unit1> TYPE ANY,
<bu> TYPE ANY,
<bu1> TYPE ANY,
<low> TYPE ANY,
<l_year> TYPE ANY ,
<l_period> TYPE ANY ,
<l_mmyy> TYPE ANY,
<ls_sel_data> TYPE ANY,
<ls_val> TYPE zbcs_check_val,
<lt_t_val> TYPE STANDARD TABLE,
<lt_t_final> 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: <gt_param> TYPE ANY TABLE,
<final_gt> TYPE any ,
<gs_fieldname> TYPE any,
<gs_value> 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->* TO <ls_data_std>.
** create cumulation table
CREATE DATA lr_t_data LIKE STANDARD TABLE OF <ls_data_std>.
ASSIGN lr_t_data->* TO <lt_data_std>.
LOOP AT ct_data INTO <ls_data_std>.
COLLECT <ls_data_std> INTO <lt_data_std>.
ENDLOOP.
FREE ct_data.
* get reference for outtab / create outtab
CALL METHOD go_model->create_data_reference
EXPORTING
io_tx_data_io_type = go_model->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->* TO <ls_data_out>.
ASSIGN lr_s_data_out->* TO <ls_data_cop>.
CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF <ls_data_out>.
ASSIGN lr_t_data_out->* TO <lt_data_out>.
CREATE DATA lr LIKE LINE OF <lt_data_std>.
ASSIGN lr->* TO <ls_data>.
CALL METHOD lcl_convert_output=>get_instance
EXPORTING
io_model = go_model
it_char = lt_char
IMPORTING
eo_instance = lo_conv
CHANGING
cs_data = <ls_data>.
ASSIGN: l_comp TO <comp>,
l_cgcomp TO <cgcomp>,
l_pcomp TO <pcomp>,
l_invc TO <invc>,
l_doct TO <doct>,
l_plevel TO <plevel>,
l_tc TO <tc>,
l_qty TO <qty>,
l_trn_lc TO <trn_lc>,
l_bu TO <bu>,
l_mmyy TO <l_mmyy>,
l_low TO <low>,
l_unit TO <unit>.
LOOP AT <lt_data_std> INTO <ls_data>. " loop
CALL METHOD lo_conv->convert_output. "end of "wis240605
* fill outtab
ASSIGN COMPONENT if_uc_model=>gc_type_comp_s_char
OF STRUCTURE <ls_data> TO <ls_data_cop>.
MOVE-CORRESPONDING <ls_data_cop> TO <ls_data_out>.
ASSIGN COMPONENT if_uc_model=>gc_type_comp_s_kfig
OF STRUCTURE <ls_data> TO <ls_data_cop>.
MOVE-CORRESPONDING <ls_data_cop> TO <ls_data_out>.
IF ct_task = c_task01 OR ct_task = space . "'it can be T2700 or blank
*************************************************************
***** aggregate the transactionaldata for given Rules *****
*************************************************************
ASSIGN COMPONENT : <comp> OF STRUCTURE <ls_data_out> TO <comp1>,
<cgcomp> OF STRUCTURE <ls_data_out> TO <cgcomp1>,
<pcomp> OF STRUCTURE <ls_data_out> TO <pcomp1>,
<doct> OF STRUCTURE <ls_data_out> TO <doct1>,
<invc> OF STRUCTURE <ls_data_out> TO <invc1>, "added by Asif M.
<plevel> OF STRUCTURE <ls_data_out> TO <plevel1>,
<tc> OF STRUCTURE <ls_data_out> TO <tc1>,
<qty> OF STRUCTURE <ls_data_out> TO <qty1>,
<trn_lc> OF STRUCTURE <ls_data_out> TO <trn_lc1>.
**** 1st Rule ****
* dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
IF <trn_lc1> = 0 AND <qty1> = 0.
CONTINUE.
ENDIF.
**** 2nd Rule ****
* delete the Posting levels if it is > 1 and clear to blank CS_PLEVEL
CHECK <plevel1> LE 1.
CLEAR <plevel1>.
**** 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 <> 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 <cgcomp1> <> 'GBRNCH'. " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
* <comp1> = <cgcomp1>+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 <cgcomp1>+1 CN sy-abcde. " to avoid BRNCH records
* replace Company with CG without prefix G when task name is not blank
<comp1> = <cgcomp1>+1.
ELSE.
CONTINUE.
ENDIF.
ENDIF.
* removing leading zero's as SAP sometimes adding them to <pcomp1>.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
* EXPORTING
* input = <pcomp1>
* IMPORTING
* output = <pcomp1>.
PERFORM f_alpha_conversion USING <comp1>
CHANGING <comp1>.
PERFORM f_alpha_conversion USING <pcomp1>
CHANGING <pcomp1>.
" removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.
PERFORM f_alpha_conversion USING <invc1>
CHANGING <invc1>.
CHECK <comp1> <> <pcomp1>.
**** 4rth Rule ****
* initialise Document type & PV TC to blank /BIC/ZCS_DOCT & /1FB/CS_TRN_TC
CLEAR: <doct1>,<tc1>.
ENDIF.
COLLECT: <ls_data_out> INTO <lt_data_out>.
ENDLOOP. " end loop
IF <lt_data_out> 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->* TO <ls_download>.
** create Download data internal table for task T2700
CREATE DATA lt_download LIKE STANDARD TABLE OF <ls_download>.
ASSIGN lt_download->* TO <lt_download>.
LOOP AT <lt_data_out> INTO <ls_data_out>.
MOVE-CORRESPONDING <ls_data_out> TO <ls_download>.
ASSIGN COMPONENT <trn_lc> OF STRUCTURE <ls_download> TO <trn_lc1>.
*** 6th Rule **********************
" Check for values, if present remove decimals, if not present clear it of (blank).
UNASSIGN <qty1>.
ASSIGN COMPONENT <qty> of STRUCTURE <ls_download> to <qty1>.
ASSIGN COMPONENT <unit> of STRUCTURE <ls_download> to <unit1>.
if <unit1> = '' OR <unit1> <> '%'.
REPLACE ALL OCCURRENCES OF '.' in <qty1> WITH '' RESPECTING CASE.
<qty1> = ''.
endif.
if <unit1> <> '' And <qty1> <> ''.
<unit1> = ''. " We dont need unit downloaded.
REPLACE ALL OCCURRENCES OF '.' in <qty1> WITH '' RESPECTING CASE.
<qty1> = <qty1>+0(2).
endif.
*************************************
**** 5th Rule ****
* Move the Negative sign to front
PERFORM f_put_sign_in_front CHANGING <trn_lc1>.
INSERT <ls_download> INTO TABLE <lt_download>.
ENDLOOP.
* move the aggregated data to final table for display
FREE ct_data.
ct_data = <lt_data_out>.
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=>flush.
" *************************** START OF CHANGE - ASIF MAQBOOL ************************
IF l_action = 0 OR l_action = 1.
ASSIGN gt_param TO <gt_param>.
APPEND '100' to l_t_tab.
READ TABLE gt_param INDEX 6 INTO gs_param.
ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
APPEND <gs_value> to l_t_tab.
Clear gs_param.
READ TABLE gt_param INDEX 4 INTO gs_param.
ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
APPEND <gs_value> to l_t_tab.
* LOOP AT <gt_param> INTO gs_param.
*
* ASSIGN COMPONENT 1 OF STRUCTURE gs_param to <gs_fieldname>.
*
* CASE <gs_fieldname>.
* WHEN '/BIC/ZFB_VERS'.
*
* APPEND '100' to l_t_tab.
*
* WHEN 'FISCPERIOD'.
* ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
* APPEND <gs_value> to l_t_tab.
*
* WHEN 'FISCYEAR'.
* ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
* APPEND <gs_value> to l_t_tab.
*
*
* WHEN OTHERS.
* ENDCASE.
*
*
* ENDLOOP.
CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
CLEAR l_t_tab.
INSERT str1 INTO TABLE l_t_tab.
ASSIGN l_t_tab TO <final_gt>.
" To Start by adding the Header Data.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = l_fullpath
write_field_separator = l_seperator "SPACE
CHANGING
data_tab = <final_gt>
EXCEPTIONS
file_write_error = 1.
" Now append the Data after the header data insertion.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = l_fullpath
write_field_separator = l_seperator "SPACE
append = 'X'
CHANGING
data_tab = <lt_download>
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 <> 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->* TO <ls_sel_data>.
* create validation table
CREATE DATA lr_t_val TYPE STANDARD TABLE OF zbcs_check_val.
ASSIGN lr_t_val->* TO <lt_t_val>.
* create data table that does not fulfill rules after validation
CREATE DATA lr_t_final LIKE STANDARD TABLE OF <ls_data_out>.
ASSIGN lr_t_final->* TO <lt_t_final>.
* concatenate year & month to query custom table
READ TABLE ct_sel INTO <ls_sel_data> WITH KEY fieldname = 'FISCYEAR'. "YYYY
CHECK sy-subrc = 0.
ASSIGN COMPONENT <low> OF STRUCTURE <ls_sel_data> TO <l_year>.
<l_mmyy> = <l_year>.
READ TABLE ct_sel INTO <ls_sel_data> WITH KEY fieldname = 'FISCPERIOD'."MM
CHECK sy-subrc = 0.
ASSIGN COMPONENT <low> OF STRUCTURE <ls_sel_data> TO <l_period>. " via BADI
** ASSIGN COMPONENT 5 OF STRUCTURE <ls_sel_data> TO <l_period>. " via report
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = <l_period>
IMPORTING
output = <l_period>.
CONCATENATE <l_mmyy> <l_period> INTO <l_mmyy>.
** get data for given criteria
SELECT * INTO TABLE <lt_t_val> FROM zbcs_check_val
WHERE valid_from LE <l_mmyy> AND
valid_to GE <l_mmyy>.
IF sy-subrc <> 0.
* error message
PERFORM f_build_msgs USING 'UCM0'
'E'
'053'
text-103
space
space
space
CHANGING ct_message.
RETURN.
ENDIF.
LOOP AT <lt_t_val> ASSIGNING <ls_val>.
CASE <ls_val>-valid_rules.
WHEN 'VAL_001'.
* meant for parallal cursor
* READ TABLE <lt_data_out> INTO <ls_data_out> WITH KEY (l_comp) = <ls_val>-company
* (l_bu) = <ls_val>-bus_cost_unit.
* CHECK sy-subrc = 0.
* LOOP AT <lt_data_out> INTO <ls_data_out> FROM sy-tabix.
LOOP AT <lt_data_out> INTO <ls_data_out>.
ASSIGN COMPONENT: <bu> OF STRUCTURE <ls_data_out> TO <bu1>,
<comp> OF STRUCTURE <ls_data_out> TO <comp1>.
*** inserting all error records which does not match 'VAL_001'
CHECK <comp1> <> <ls_val>-company AND <bu1> <> <ls_val>-bus_cost_unit.
flg_chk = abap_true.
COLLECT <ls_data_out> INTO <lt_t_final>.
PERFORM f_build_msgs USING 'UCM0'
'E'
'053'
<ls_val>-valid_rules
text-104
<ls_val>-company
<ls_val>-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'
*** <ls_val>-valid_rules
*** text-104
*** <ls_val>-company
*** <ls_val>-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 = <lt_t_final>.
*****************************************************
**** End of Task 0002 validations ****
*****************************************************
WHEN OTHERS.
** move the aggregated data to final table for display
FREE ct_data.
ct_data = <lt_data_out>.
ENDCASE.
ENDFORM. " sub_download_data
*&---------------------------------------------------------------------*
*& Form f_put_sign_in_front
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--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 <> 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
*&---------------------------------------------------------------------*
*& Form f_build_msgs
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SY_MSGID text
* -->P_SY_MSGTY text
* -->P_SY_MSGNO text
* -->P_SY_MSGV1 text
* -->P_SY_MSGV2 text
* -->P_SY_MSGV3 text
* -->P_SY_MSGV4 text
* <--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
*&---------------------------------------------------------------------*
*& Form f_download_data_YBBCSDOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- 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=>th_comp,
ls_comp TYPE lcl_convert_output=>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 <LS_DATA_OUT> 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: <lth_data> TYPE HASHED TABLE,
<lts_data> TYPE STANDARD TABLE,
<ls_wa> 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: <lt_data_out> TYPE STANDARD TABLE,
<ls_data_out> TYPE ANY,
<ls_data> TYPE ANY,
<ls_data_cop> TYPE ANY,
<lt_data_std> TYPE STANDARD TABLE,
<ls_data_std> TYPE ANY,
<ls_download> TYPE ANY,
<lt_download> TYPE STANDARD TABLE,
<comp> TYPE ANY,
<cgcomp> TYPE ANY,
<pcomp> TYPE ANY,
<doct> TYPE ANY,
<plevel> TYPE ANY,
<tc> TYPE ANY,
<invc> TYPE ANY,
<alco> TYPE ANY,
<ct> TYPE ANY,
<CURKEY> TYPE ANY,
<qty> TYPE ANY,
<prgp> TYPE ANY,
<trn_lc> TYPE ANY,
<trn_gc> TYPE ANY,
<comp1> TYPE ANY,
<mov> TYPE ANY,
<cang> TYPE ANY,
<ad> TYPE ANY,
<cd> TYPE ANY,
<csplevel> TYPE ANY,
<mov1> TYPE ANY,
<cang1> TYPE ANY,
<ad1> TYPE ANY,
<cd1> TYPE ANY,
<csplevel1> TYPE ANY,
<cgcomp1> TYPE ANY,
<pcomp1> TYPE ANY,
<doct1> TYPE ANY,
<plevel1> TYPE ANY,
<tc1> TYPE ANY,
<invc1> TYPE ANY,
<alco1> TYPE ANY,
<prgp1> TYPE ANY,
<ct1> TYPE ANY,
<CURKEY1> TYPE ANY,
<qty1> TYPE ANY,
<trn_lc1> TYPE ANY,
<trn_gc1> TYPE ANY,
<Rcomp> TYPE ANY,
<Rcgcomp> TYPE ANY,
<Rpcomp> TYPE ANY,
<Rdoct> TYPE ANY,
<Rplevel> TYPE ANY,
<Rtc> TYPE ANY,
<Rinvc> TYPE ANY,
<Rqty> TYPE ANY,
<Rtrn_lc> TYPE ANY,
<Rtrn_gc> TYPE ANY,
<RCURKEY> TYPE ANY,
<Ralco> TYPE ANY,
<Rmov> TYPE ANY,
<Rcang> TYPE ANY,
<Rad> TYPE ANY,
<Rcd> TYPE ANY,
<Rcsplevel> TYPE ANY,
<Rprgp> TYPE ANY,
<Rct> TYPE ANY,
<bu> TYPE ANY,
<bu1> TYPE ANY,
<low> TYPE ANY,
<l_year> TYPE ANY ,
<l_period> TYPE ANY ,
<l_mmyy> TYPE ANY,
<ls_sel_data> TYPE ANY,
<ls_val> TYPE zbcs_check_val,
<lt_t_val> TYPE STANDARD TABLE,
<lt_t_final> 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: <gt_param> TYPE ANY TABLE,
<final_gt> TYPE any ,
<gs_fieldname> TYPE any,
<gs_value> 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->* TO <ls_data_std>.
** create cumulation table
CREATE DATA lr_t_data LIKE STANDARD TABLE OF <ls_data_std>.
ASSIGN lr_t_data->* TO <lt_data_std>.
LOOP AT ct_data INTO <ls_data_std>.
COLLECT <ls_data_std> INTO <lt_data_std>.
ENDLOOP.
FREE ct_data.
* get reference for outtab / create outtab
CALL METHOD go_model->create_data_reference
EXPORTING
io_tx_data_io_type = go_model->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->* TO <ls_data_out>.
ASSIGN lr_s_data_out->* TO <ls_data_cop>.
CREATE DATA lr_t_data_out LIKE STANDARD TABLE OF <ls_data_out>.
ASSIGN lr_t_data_out->* TO <lt_data_out>.
CREATE DATA lr LIKE LINE OF <lt_data_std>.
ASSIGN lr->* TO <ls_data>.
CALL METHOD lcl_convert_output=>get_instance
EXPORTING
io_model = go_model
it_char = lt_char
IMPORTING
eo_instance = lo_conv
CHANGING
cs_data = <ls_data>.
ASSIGN: l_comp TO <comp>,
l_cgcomp TO <cgcomp>,
l_pcomp TO <pcomp>,
l_invc TO <invc>,
l_doct TO <doct>,
l_plevel TO <plevel>,
l_tc TO <tc>,
l_qty TO <qty>,
l_trn_lc TO <trn_lc>,
l_trn_gc TO <trn_gc>,
l_alco TO <alco>,
l_curkey TO <CURKEY>,
l_zfb_ct TO <CT>,
l_doct TO <doct>,
l_bu TO <bu>,
l_mmyy TO <l_mmyy>,
l_low TO <low>,
l_move TO <mov>,
l_cang TO <cang>,
l_ad TO <ad>,
l_cd TO <cd>,
l_csplevel TO <csplevel>,
l_prgp TO <prgp> .
LOOP AT <lt_data_std> INTO <ls_data>. " loop
CALL METHOD lo_conv->convert_output. "end of "wis240605
* fill outtab
ASSIGN COMPONENT if_uc_model=>gc_type_comp_s_char
OF STRUCTURE <ls_data> TO <ls_data_cop>.
MOVE-CORRESPONDING <ls_data_cop> TO <ls_data_out>.
ASSIGN COMPONENT if_uc_model=>gc_type_comp_s_kfig
OF STRUCTURE <ls_data> TO <ls_data_cop>.
MOVE-CORRESPONDING <ls_data_cop> TO <ls_data_out>.
" --------------------- 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 : <comp> OF STRUCTURE <ls_data_out> TO <comp1>,
<cgcomp> OF STRUCTURE <ls_data_out> TO <cgcomp1>,
<pcomp> OF STRUCTURE <ls_data_out> TO <pcomp1>,
<doct> OF STRUCTURE <ls_data_out> TO <doct1>,
<invc> OF STRUCTURE <ls_data_out> TO <invc1>, "added by Asif M.
<plevel> OF STRUCTURE <ls_data_out> TO <plevel1>,
<tc> OF STRUCTURE <ls_data_out> TO <tc1>,
<qty> OF STRUCTURE <ls_data_out> TO <qty1>,
<trn_lc> OF STRUCTURE <ls_data_out> TO <trn_lc1>,
<trn_gc> OF STRUCTURE <ls_data_out> TO <trn_gc1>,
<alco> OF STRUCTURE <ls_data_out> TO <alco1>,
<CURKEY> OF STRUCTURE <ls_data_out> TO <CURKEY1>,
<CT> OF STRUCTURE <ls_data_out> TO <CT1>,
<DOCT> OF STRUCTURE <ls_data_out> TO <doct1>.
***** 1st Rule ****
** dont include records where '/1FB/CS_TRN_QTY' and '/1FB/CS_TRN_LC' are blank
* IF <trn_lc1> = 0 AND <qty1> = 0.
* CONTINUE.
* ENDIF.
*
***** 2nd Rule ****
** delete the Posting levels if it is > 1 and clear to blank CS_PLEVEL
* CHECK <plevel1> LE 1.
* CLEAR <plevel1>.
*
***** 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 <> 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 <cgcomp1> <> 'GBRNCH'. " to avoid BRNCH records
*** replace Company with CG without prefix G when task name is not blank
** <comp1> = <cgcomp1>+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 <cgcomp1>+1 CN sy-abcde. " to avoid BRNCH records
** replace Company with CG without prefix G when task name is not blank
* <comp1> = <cgcomp1>+1.
* ELSE.
* CONTINUE.
* ENDIF.
*
*
* ENDIF.
*
** removing leading zero's as SAP sometimes adding them to <pcomp1>.
** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
** EXPORTING
** input = <pcomp1>
** IMPORTING
** output = <pcomp1>.
PERFORM f_alpha_conversion USING <comp1>
CHANGING <comp1>.
PERFORM f_alpha_conversion USING <pcomp1>
CHANGING <pcomp1>.
" removing leading zero's from Investee Unit company - Added By Asif Maqbool, IBM/Unilever, 25/01/2008.
PERFORM f_alpha_conversion USING <invc1>
CHANGING <invc1>.
* CHECK <comp1> <> <pcomp1>.
*
***** 4rth Rule ****
** initialise Document type & PV TC to blank /BIC/ZCS_DOCT & /1FB/CS_TRN_TC
* CLEAR: <doct1>,<tc1>.
*
* ENDIF.
" ----------- END OF COMMENT BY ASIF MAQBOOL -----------------------------------------------------------------------
COLLECT: <ls_data_out> INTO <lt_data_out>.
ENDLOOP. " end loop
IF <lt_data_out> 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->* TO <ls_download>.
** create Download data internal table for task T2700
CREATE DATA lt_download LIKE STANDARD TABLE OF <ls_download>.
ASSIGN lt_download->* TO <lt_download>.
LOOP AT <lt_data_out> INTO <ls_data_out>.
MOVE-CORRESPONDING <ls_data_out> TO <ls_download>.
ASSIGN COMPONENT <trn_lc> OF STRUCTURE <ls_download> TO <trn_lc1>.
ASSIGN COMPONENT <trn_gc> OF STRUCTURE <ls_download> TO <trn_gc1>.
**** 5th Rule ****
* Move the Negative sign to front
PERFORM f_put_sign_in_front CHANGING <trn_lc1>.
PERFORM f_put_sign_in_front CHANGING <trn_gc1>.
INSERT <ls_download> INTO TABLE <lt_download>.
ENDLOOP.
* move the aggregated data to final table for display
FREE ct_data.
ct_data = <lt_data_out>.
FIELD-SYMBOLS: <fs1> type ANY TABLE,
<fs_Struct> type any.
Data: fs_Struct type ref to data,
fs_table TYPE REF TO data.
CREATE DATA fs_Struct like <ls_data_out>.
ASSIGN fs_Struct->* to <fs_Struct>.
CREATE DATA fs_table like TABLE OF <fs_Struct>.
ASSIGN fs_table->* TO <fs1>.
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=>flush.
" *************************** START OF CHANGE - ASIF MAQBOOL ************************
IF l_action = 0 OR l_action = 1.
" Create Header Data for Download
ASSIGN gt_param TO <gt_param>.
APPEND '100' to l_t_tab.
READ TABLE gt_param INDEX 6 INTO gs_param.
ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
APPEND <gs_value> to l_t_tab.
Clear gs_param.
READ TABLE gt_param INDEX 4 INTO gs_param.
ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
APPEND <gs_value> to l_t_tab.
CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
CLEAR l_t_tab.
INSERT str1 INTO TABLE l_t_tab.
ASSIGN l_t_tab TO <final_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: <ls> type any.
CREATE DATA l_s_download TYPE ty_download.
ASSIGN l_s_download->* TO <LS>.
DATA: R_s_download type REF TO DATA.
FIELD-SYMBOLS: <Rs> type any,
<Wa> type any.
CREATE DATA R_s_download TYPE ty_download.
ASSIGN R_s_download->* TO <RS>.
DATA: TOTALLINES TYPE I,
Initial TYPE I VALUE 1.
FIELD-SYMBOLS: <t_Hashed> 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->* TO <WA>.
CALL FUNCTION 'Z_RTTI_HASHEDTABLE'
EXPORTING
G_STRUCT = g_struct
G_T_KEYS = tkeys
I_TempTable = <fs1>
IMPORTING
G_T_TYPE = g_table.
FIELD-SYMBOLS: <t_wa> type ANY TABLE.
DATA gr_itab TYPE REF TO DATA.
CREATE DATA gr_itab TYPE HANDLE g_table.
ASSIGN gr_itab->* TO <T_WA>.
DATA: OBJ1 type REF TO data.
FIELD-SYMBOLS: <fs_temp> type ANY.
CREATE DATA obj1 LIKE LINE OF <T_Wa>.
ASSIGN OBJ1->* TO <fs_temp>.
" ASSIGN FIELD SYMBOLS TO EACH COMP OF LS.
ASSIGN COMPONENT : <comp> OF STRUCTURE <lS> TO <comp1>,
<cgcomp> OF STRUCTURE <ls> TO <cgcomp1>,
<pcomp> OF STRUCTURE <ls> TO <pcomp1>,
<doct> OF STRUCTURE <ls> TO <doct1>,
<invc> OF STRUCTURE <ls> TO <invc1>,
<plevel> OF STRUCTURE <ls> TO <plevel1>,
<alco> OF STRUCTURE <ls> TO <alco1>,
<CURKEY> OF STRUCTURE <ls> TO <CURKEY1>,
<CT> OF STRUCTURE <lS> TO <CT1>,
<mov> OF STRUCTURE <ls> TO <mov1>,
<ad> OF STRUCTURE <ls> TO <ad1>,
<cd> OF STRUCTURE <ls> TO <cd1>,
<cang> OF STRUCTURE <ls> TO <cang1>,
<csplevel> OF STRUCTURE <ls> TO <csplevel1>,
<prgp> OF STRUCTURE <ls> TO <prgp1>
.
" ASSIGN FIELD SYMBOLS TO EACH COMP OF RS.
ASSIGN COMPONENT : <comp> OF STRUCTURE <RS> TO <Rcomp>,
<cgcomp> OF STRUCTURE <Rs> TO <Rcgcomp>, "
<pcomp> OF STRUCTURE <Rs> TO <Rpcomp>,
<doct> OF STRUCTURE <Rs> TO <Rdoct>,
<invc> OF STRUCTURE <Rs> TO <Rinvc>,
<plevel> OF STRUCTURE <Rs> TO <Rplevel>, "
<alco> OF STRUCTURE <Rs> TO <Ralco>,
<CURKEY> OF STRUCTURE <Rs> TO <RCURKEY>,
<CT> OF STRUCTURE <RS> TO <RCT>,
<mov> OF STRUCTURE <Rs> TO <Rmov>,
<ad> OF STRUCTURE <Rs> TO <Rad>,
<cd> OF STRUCTURE <Rs> TO <Rcd>,
<cang> OF STRUCTURE <Rs> TO <Rcang>,
<csplevel> OF STRUCTURE <Rs> TO <Rcsplevel>,
<prgp> OF STRUCTURE <Rs> TO <Rprgp>
.
DESCRIBE TABLE <lt_download> LINES TOTALLINES.
LOOP AT <LT_DOWNLOAD> INTO <LS>.
Initial = 1. " Initialize to 1 cuz
WHILE Initial <> TOTALLINES. " Do it until end of ltdownload lines
READ TABLE <LT_DOWNLOAD> INDEX Initial INTO <rs>.
IF ( <comp1> = <Rcomp> AND <mov1> = <Rmov> AND <pcomP1> = <Rpcomp> AND
<invc1> = <Rinvc> AND <cang1> = <Rcang> AND <ad1> = <Rad> AND <cd1> = <Rcd> AND
<prgp1> = <Rprgp> AND <DOCT1> = <RDOCT>
).
MOVE-CORRESPONDING <RS> TO <WA>.
MOVE-CORRESPONDING <RS> TO <fs_temp>.
COLLECT <fs_temp> inTO <T_wA>.
" COLLECT <fs_Struct> into <fs1>.
" COLLECT <fs_Struct> into <t_Wa>.
endif.
Initial = Initial + 1.
ENDWHILE.
ENDLOOP.
get REFERENCE OF <t_wa> INTO lo_dataref.
FREE ct_Data.
"ct_data = <T_wa>.
*" 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 <t_wa>.
*ASSIGN lp_data->* TO <ls_wa>.
*
*CREATE DATA lp_data LIKE STANDARD TABLE OF <ls_Wa>.
*ASSIGN lp_data->* TO <lts_data>.
*
*<lts_data> = <t_wa>.
FIELD-SYMBOLS: <fs> type any,
<fs2> type any.
DATA: fs type REF TO data.
DATA: fs2 type REF TO data.
CREATE DATA fs like LINE OF <lt_data_out>.
ASSIGN fs->* to <fs>.
CREATE DATA fs2 like LINE OF <t_Wa>.
ASSIGN fs2->* to <fs2>.
clear <lt_data_out>.
loop at <t_Wa> into <fs2>.
move-CORRESPONDING <fs2> to <fs>.
insert <fs> into TABLE <lt_data_out>.
endloop.
ct_data = <lt_data_out>.
*
*" Get the header data downloaded
*CALL METHOD cl_gui_frontend_services=>gui_download
* EXPORTING
* filename = l_fullpath
* write_field_separator = l_seperator "SPACE
* CHANGING
* data_tab = <final_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 = <lts_data>.
*********************** TEST *****************************
ELSEIF Aggr_swt <> 'X'.
*
*CALL METHOD cl_gui_frontend_services=>gui_download
* EXPORTING
* filename = l_fullpath
* write_field_separator = l_seperator "SPACE
* CHANGING
* data_tab = <final_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 = <lt_download>.
endif.
*" Create Header Data for Download
* ASSIGN gt_param TO <gt_param>.
*
* APPEND '100' to l_t_tab.
* READ TABLE gt_param INDEX 6 INTO gs_param.
* ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
* APPEND <gs_value> to l_t_tab.
* Clear gs_param.
* READ TABLE gt_param INDEX 4 INTO gs_param.
* ASSIGN COMPONENT 2 OF STRUCTURE gs_param to <gs_value>.
* APPEND <gs_value> to l_t_tab.
*
*
*
* CONCATENATE LINES OF l_t_tab INTO str1 SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
* CLEAR l_t_tab.
* INSERT str1 INTO TABLE l_t_tab.
* ASSIGN l_t_tab TO <final_gt>.
" To Start by adding the Header Data.
* CALL METHOD cl_gui_frontend_services=>gui_download
* EXPORTING
* filename = l_fullpath
* write_field_separator = l_seperator "SPACE
* CHANGING
* data_tab = <final_gt>
* EXCEPTIONS
* file_write_error = 1.
*
" Now append the Data after the header data insertion.
* CALL METHOD cl_gui_frontend_services=>gui_download
* EXPORTING
* filename = l_fullpath
* write_field_separator = l_seperator "SPACE
* append = 'X'
* CHANGING
* data_tab = <lt_download>
* 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 <> 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->* TO <ls_sel_data>.
* create validation table
CREATE DATA lr_t_val TYPE STANDARD TABLE OF zbcs_check_val.
ASSIGN lr_t_val->* TO <lt_t_val>.
* create data table that does not fulfill rules after validation
CREATE DATA lr_t_final LIKE STANDARD TABLE OF <ls_data_out>.
ASSIGN lr_t_final->* TO <lt_t_final>.
* concatenate year & month to query custom table
READ TABLE ct_sel INTO <ls_sel_data> WITH KEY fieldname = 'FISCYEAR'. "YYYY
CHECK sy-subrc = 0.
ASSIGN COMPONENT <low> OF STRUCTURE <ls_sel_data> TO <l_year>.
<l_mmyy> = <l_year>.
READ TABLE ct_sel INTO <ls_sel_data> WITH KEY fieldname = 'FISCPERIOD'."MM
CHECK sy-subrc = 0.
ASSIGN COMPONENT <low> OF STRUCTURE <ls_sel_data> TO <l_period>. " via BADI
** ASSIGN COMPONENT 5 OF STRUCTURE <ls_sel_data> TO <l_period>. " via report
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = <l_period>
IMPORTING
output = <l_period>.
CONCATENATE <l_mmyy> <l_period> INTO <l_mmyy>.
** get data for given criteria
SELECT * INTO TABLE <lt_t_val> FROM zbcs_check_val
WHERE valid_from LE <l_mmyy> AND
valid_to GE <l_mmyy>.
IF sy-subrc <> 0.
* error message
PERFORM f_build_msgs USING 'UCM0'
'E'
'053'
text-103
space
space
space
CHANGING ct_message.
RETURN.
ENDIF.
LOOP AT <lt_t_val> ASSIGNING <ls_val>.
CASE <ls_val>-valid_rules.
WHEN 'VAL_001'.
* meant for parallal cursor
* READ TABLE <lt_data_out> INTO <ls_data_out> WITH KEY (l_comp) = <ls_val>-company
* (l_bu) = <ls_val>-bus_cost_unit.
* CHECK sy-subrc = 0.
* LOOP AT <lt_data_out> INTO <ls_data_out> FROM sy-tabix.
LOOP AT <lt_data_out> INTO <ls_data_out>.
ASSIGN COMPONENT: <bu> OF STRUCTURE <ls_data_out> TO <bu1>,
<comp> OF STRUCTURE <ls_data_out> TO <comp1>.
*** inserting all error records which does not match 'VAL_001'
CHECK <comp1> <> <ls_val>-company AND <bu1> <> <ls_val>-bus_cost_unit.
flg_chk = abap_true.
COLLECT <ls_data_out> INTO <lt_t_final>.
PERFORM f_build_msgs USING 'UCM0'
'E'
'053'
<ls_val>-valid_rules
text-104
<ls_val>-company
<ls_val>-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'
*** <ls_val>-valid_rules
*** text-104
*** <ls_val>-company
*** <ls_val>-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 = <lt_t_final>.
*****************************************************
**** End of Task 0002 validations ****
*****************************************************
WHEN OTHERS.
** move the aggregated data to final table for display
FREE ct_data.
ct_data = <lt_data_out>.
ENDCASE.
ENDFORM. " f_download_data_YBBCSDOWNLOAD
‎2008 Jul 09 12:16 PM
Hi,
I am also from same project.
We are facing a problem with this code.
How can I increase the length of the field obtained by this method.
CALL METHOD go_model->create_data_reference
EXPORTING
io_tx_data_io_type = go_model->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->* TO <ls_data_out>.
We are getting data overflow error when we try to move some large value to one of the field in <ls_data_out>.
we can avoid this if the field length is increased.
Waiting for your reply.
Regards
Madhu G S