*&---------------------------------------------------------------------*
*& Include Z_MMCUST101_CN_F01
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* CLASS lcl_event_alv DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_alv DEFINITION.
PUBLIC SECTION.
METHODS:
h_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row "#EC NEEDED
e_column. "#EC NEEDED
ENDCLASS. " LCL_EVENT_ALV DEFINITION
*---------------------------------------------------------------------*
* Class (Implementation) lcl_event_alv
*---------------------------------------------------------------------*
CLASS lcl_event_alv IMPLEMENTATION.
METHOD h_double_click.
* READ TABLE gt_user INDEX e_row-index INTO gs_user.
IF sy-subrc EQ 0.
PERFORM f_user_command USING '&IC1'.
ENDIF.
ENDMETHOD. " H_double_click
ENDCLASS. " LCL_EVENT_ALV
*&---------------------------------------------------------------------*
*& Form f_user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->U_UCOMM text
*----------------------------------------------------------------------*
FORM f_user_command USING u_ucomm TYPE sy-ucomm.
Data : lv_valid TYPE char1. "#EC NEEDED
Data : lw_data type ZTMMCUST101_CN .
CASE u_ucomm.
*RC - 2008.04.07 -->
* WHEN '&IC1'.
WHEN c_save.
* Verification of Changes
CALL METHOD go_alv_grid->check_changed_data
IMPORTING
e_valid = lv_valid.
* Delete table
loop at gt_data assigning <fs_data>.
delete table gt_grid1 from <fs_data>.
endloop.
loop at gt_grid1 assigning <fs_data>.
MOVE-CORRESPONDING <fs_data> to lw_data.
delete ZTMMCUST101_CN from lw_data.
free lw_data.
endloop.
* Update Modify table
LOOP AT gt_data assigning <fs_data>.
MOVE-CORRESPONDING <fs_data> to lw_data.
modify ZTMMCUST101_CN from lw_data.
free lw_data.
ENDLOOP.
message i009(z_dev_custom_cn).
ENDCASE.
endform. "f_user_command
*&---------------------------------------------------------------------*
*& Form select_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_data .
select ztmmcust101_cn~msehi
t006a~msehl
ztmmcust101_cn~zcusuomcode
ztmmcust101_cn~zconvfactor
ztmmcust101_cn~zcusdesc
appending corresponding fields of table gt_data
From ZTMMCUST101_CN JOIN T006A
ON T006A~MSEHI = ZTMMCUST101_CN~MSEHI
and t006a~SPRAS = C_SPAR
Where ZTMMCUST101_CN~MSEHI in so_uom.
*the first display if no any entries. by purter xie
* IF sy-subrc NE 0.
* MESSAGE s021.
* SUBMIT (sy-repid) VIA SELECTION-SCREEN.
* ENDIF.
loop at gt_data assigning <fs_data>.
if <fs_data>-ZCONVFACTOR = space.
<fs_data>-ZCONVFACTOR = '1'.
endif.
endloop.
ENDFORM. " select_data
*&---------------------------------------------------------------------*
*& Form download_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_data .
data: lv_scnt type i. "#EC NEEDED
perform create_excel.
CALL METHOD OF gv_EXCEL 'WORKSHEETS' = gv_SHEET EXPORTING #1 = 1 .
call method of gv_SHEET 'ACTIVATE'.
SET PROPERTY OF gv_SHEET 'NAME' = text-t02.
free object gv_SHEET.
perform fill_in_sheet1.
lv_scnt = sy-index.
call method of gv_EXCEL 'WORKSHEETS' = gv_SHEET.
call method of gv_SHEET 'ADD'.
free object gv_SHEET. "OK
perform fill_header_sheet2.
perform fill_detail_sheet2.
Perform save_workbook.
ENDFORM. " download_data
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
*FORM user_command USING u_ucomm TYPE syucomm
* us_selfield TYPE slis_selfield. "#EC NEEDED
*
* CASE u_ucomm.
*
* when others.
*
* ENDCASE.
*
*ENDFORM. " USER_COMMAND
*&---------------------------------------------------------------------*
*& Form create_excel
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_excel .
CREATE OBJECT gv_EXCEL 'EXCEL.APPLICATION'.
if sy-subrc ne 0.
*RC - 2008.04.07 -->
* write: / 'No EXCEL creation possible'.
* stop.
WRITE: / text-m01.
EXIT.
endif.
set property of gv_EXCEL 'DisplayAlerts' = 0.
CALL METHOD OF gv_EXCEL 'WORKBOOKS' = gv_WORKBOOK.
SET PROPERTY OF gv_EXCEL 'VISIBLE' = 0.
* Create worksheet
set property of gv_EXCEL 'SheetsInNewWorkbook' = 1.
call method of gv_WORKBOOK 'ADD'.
ENDFORM. " create_excel
*&---------------------------------------------------------------------*
*& Form fill_header_sheet2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_header_sheet2 .
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H01.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H02.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H03.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H04.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H05.
free object gv_CELL.
ENDFORM. " fill_header_sheet2
*&---------------------------------------------------------------------*
*& Form fill_detail_sheet2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_detail_sheet2 .
data: lc_row type i.
field-symbols : <fs_grid> type ty_alv_structure.
loop at gt_data assigning <fs_grid> .
lc_row = SY-TABIX + 1.
* unpack lc_row to val+12(4).
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 1.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-MSEHI.
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 2.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-MSEHL .
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 3.
SET PROPERTY OF gv_CELL1 'NumberFormat' = '@'.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCUSUOMCODE .
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 4.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCONVFACTOR.
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 5.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCUSDESC.
free object gv_CELL1.
endloop.
CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
CALL METHOD OF gv_COLUMN 'Autofit'.
free object gv_COLUMN.
free object gv_int.
free object gv_CELL.
free object: gv_CELL1.
free object gv_RANGE.
free object: gv_COLUMN, gv_ROW.
ENDFORM. " fill_detail_sheet2
*&---------------------------------------------------------------------*
*& Form fill_in_sheet1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_in_sheet1 .
*ROW1
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r01.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r02.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r03.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r04.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r05.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'F1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r06.
free object gv_CELL.
*ROW 2
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'A2'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r21.
free object gv_CELL.
CONCATENATE sy-datum(4) '/' sy-datum+4(2) '/' sy-datum+6(2) into gv_date .
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'B2'.
SET PROPERTY OF gv_CELL 'NumberFormat' = 'yyyy/mm/dd'.
SET PROPERTY OF gv_CELL 'VALUE' = gv_date.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'C2'.
SET PROPERTY OF gv_CELL 'VALUE' = sy-timlo.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'D2'.
SET PROPERTY OF gv_CELL 'VALUE' = '4'.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
CALL METHOD OF gv_COLUMN 'Autofit'.
free object gv_COLUMN.
free object gv_int.
free object gv_CELL.
free object: gv_CELL1.
free object gv_RANGE.
free object: gv_COLUMN, gv_ROW.
ENDFORM. " fill_in_sheet1
*&---------------------------------------------------------------------*
*& Form save_workbook
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM save_workbook .
get property of gv_EXCEL 'ActiveSheet' = gv_SHEET.
free object gv_SHEET.
free object gv_WORKBOOK.
GET PROPERTY OF gv_EXCEL 'ActiveWorkbook' = gv_WORKBOOK.
call method of gv_WORKBOOK 'SAVEAS'
EXPORTING
#1 = P_FILE1
#2 = 1.
call method of gv_WORKBOOK 'CLOSE'.
call method of gv_EXCEL 'QUIT'.
free object gv_SHEET.
free object gv_WORKBOOK.
free object gv_EXCEL.
ENDFORM. " save_workbook
*&---------------------------------------------------------------------*
*& Form create_and_init_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_and_init_alv .
* Macro definition
* DEFINE l_m_fieldcat.
* add 1 to ls_alv_cat-col_pos.
* ls_alv_cat-fieldname = &1.
* ls_alv_cat-ref_table = &2.
* ls_alv_cat-edit = &3.
* ls_alv_cat-COLTEXT = &4.
* ls_alv_cat-selddictxt = 'M'.
* append ls_alv_cat to lt_alv_cat.
* END-OF-DEFINITION.
* replace the macros by Purter xie 15-April-2008
Data: lw_alv_cat type LVC_S_FCAT.
DATA:
ls_variant TYPE disvariant,
lt_sort TYPE lvc_t_sort,
* ls_sort TYPE lvc_s_sort,
lt_alv_cat TYPE lvc_t_fcat,
* ls_alv_cat TYPE lvc_s_fcat,
ls_alv_lay TYPE lvc_s_layo,
ls_print TYPE lvc_s_prnt,
lv_offline TYPE char1,
lt_toolbar_excl TYPE ui_functions.
CALL METHOD cl_gui_alv_grid=>offline
RECEIVING
e_offline = lv_offline.
IF lv_offline EQ 0.
CREATE OBJECT go_container
EXPORTING
extension = 2000
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc NE 0.
* RC - 2008.04.07 -->
* MESSAGE e208(00) WITH 'The control could not be created'.
MESSAGE e208(00) WITH text-m02.
ENDIF.
ENDIF.
* Create an instance of alv control
CREATE OBJECT go_alv_grid
EXPORTING
i_parent = go_container.
** Build field catalog and sort table
if p_langu = 'E'.
* l_m_fieldcat 'MSEHI' 'T006A' 'X' text-E01.
* l_m_fieldcat 'MSEHL' '' '' text-E02.
* l_m_fieldcat 'ZCUSUOMCODE' '' 'X' text-E03.
* l_m_fieldcat 'ZCONVFACTOR' 'ZTMMCUST101_CN' 'X' text-E04.
* l_m_fieldcat 'ZCUSDESC' '' 'X' text-E05.
* replace the macros by Purter xie 15-April-2008
lw_alv_cat-col_pos = 1.
lw_alv_cat-fieldname = 'MSEHI'.
lw_alv_cat-ref_table = 'T006A'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E01.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 2.
lw_alv_cat-fieldname = 'MSEHL'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = ''.
lw_alv_cat-COLTEXT = text-E02.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 3.
lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E03.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 4.
lw_alv_cat-fieldname = 'ZCONVFACTOR'.
lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E04.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 5.
lw_alv_cat-fieldname = 'ZCUSDESC'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E05.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
else.
* l_m_fieldcat 'MSEHI' 'T006A' 'X' text-H01..
* l_m_fieldcat 'MSEHL' '' '' text-H02.
* l_m_fieldcat 'ZCUSUOMCODE' '' 'X' text-H03.
* l_m_fieldcat 'ZCONVFACTOR' 'ZTMMCUST101_CN' 'X' text-H04.
* l_m_fieldcat 'ZCUSDESC' '' 'X' text-H05.
* replace the macros by Purter xie 15-April-2008
lw_alv_cat-col_pos = 1.
lw_alv_cat-fieldname = 'MSEHI'.
lw_alv_cat-ref_table = 'T006A'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H01.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 2.
lw_alv_cat-fieldname = 'MSEHL'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = ''.
lw_alv_cat-COLTEXT = text-H02.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 3.
lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H03.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 4.
lw_alv_cat-fieldname = 'ZCONVFACTOR'.
lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H04.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 5.
lw_alv_cat-fieldname = 'ZCUSDESC'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H05.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
endif.
* Layout
CLEAR ls_alv_lay.
* ls_alv_lay-zebra = c_x.
ls_alv_lay-cwidth_opt = c_x.
IF lv_offline EQ 0.
* Exclude toolbar functions
APPEND cl_gui_alv_grid=>mc_fc_detail TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_info TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_graph TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_view_crystal TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_check TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_refresh TO lt_toolbar_excl.
CREATE OBJECT go_event_alv.
SET HANDLER go_event_alv->h_double_click
FOR go_alv_grid.
ENDIF.
ls_variant-report = sy-cprog.
* Display
CALL METHOD go_alv_grid->set_table_for_first_display
EXPORTING
is_variant = ls_variant
is_layout = ls_alv_lay
is_print = ls_print
i_save = 'A'
it_toolbar_excluding = lt_toolbar_excl
CHANGING
it_sort = lt_sort
it_outtab = gt_data[]
it_fieldcatalog = lt_alv_cat.
* set edit enabled cells ready for input
CALL METHOD go_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ENDFORM. " create_and_init_alv
*& Include Z_MMCUST101_CN_F01
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* CLASS lcl_event_alv DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_alv DEFINITION.
PUBLIC SECTION.
METHODS:
h_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row "#EC NEEDED
e_column. "#EC NEEDED
ENDCLASS. " LCL_EVENT_ALV DEFINITION
*---------------------------------------------------------------------*
* Class (Implementation) lcl_event_alv
*---------------------------------------------------------------------*
CLASS lcl_event_alv IMPLEMENTATION.
METHOD h_double_click.
* READ TABLE gt_user INDEX e_row-index INTO gs_user.
IF sy-subrc EQ 0.
PERFORM f_user_command USING '&IC1'.
ENDIF.
ENDMETHOD. " H_double_click
ENDCLASS. " LCL_EVENT_ALV
*&---------------------------------------------------------------------*
*& Form f_user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->U_UCOMM text
*----------------------------------------------------------------------*
FORM f_user_command USING u_ucomm TYPE sy-ucomm.
Data : lv_valid TYPE char1. "#EC NEEDED
Data : lw_data type ZTMMCUST101_CN .
CASE u_ucomm.
*RC - 2008.04.07 -->
* WHEN '&IC1'.
WHEN c_save.
* Verification of Changes
CALL METHOD go_alv_grid->check_changed_data
IMPORTING
e_valid = lv_valid.
* Delete table
loop at gt_data assigning <fs_data>.
delete table gt_grid1 from <fs_data>.
endloop.
loop at gt_grid1 assigning <fs_data>.
MOVE-CORRESPONDING <fs_data> to lw_data.
delete ZTMMCUST101_CN from lw_data.
free lw_data.
endloop.
* Update Modify table
LOOP AT gt_data assigning <fs_data>.
MOVE-CORRESPONDING <fs_data> to lw_data.
modify ZTMMCUST101_CN from lw_data.
free lw_data.
ENDLOOP.
message i009(z_dev_custom_cn).
ENDCASE.
endform. "f_user_command
*&---------------------------------------------------------------------*
*& Form select_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_data .
select ztmmcust101_cn~msehi
t006a~msehl
ztmmcust101_cn~zcusuomcode
ztmmcust101_cn~zconvfactor
ztmmcust101_cn~zcusdesc
appending corresponding fields of table gt_data
From ZTMMCUST101_CN JOIN T006A
ON T006A~MSEHI = ZTMMCUST101_CN~MSEHI
and t006a~SPRAS = C_SPAR
Where ZTMMCUST101_CN~MSEHI in so_uom.
*the first display if no any entries. by purter xie
* IF sy-subrc NE 0.
* MESSAGE s021.
* SUBMIT (sy-repid) VIA SELECTION-SCREEN.
* ENDIF.
loop at gt_data assigning <fs_data>.
if <fs_data>-ZCONVFACTOR = space.
<fs_data>-ZCONVFACTOR = '1'.
endif.
endloop.
ENDFORM. " select_data
*&---------------------------------------------------------------------*
*& Form download_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_data .
data: lv_scnt type i. "#EC NEEDED
perform create_excel.
CALL METHOD OF gv_EXCEL 'WORKSHEETS' = gv_SHEET EXPORTING #1 = 1 .
call method of gv_SHEET 'ACTIVATE'.
SET PROPERTY OF gv_SHEET 'NAME' = text-t02.
free object gv_SHEET.
perform fill_in_sheet1.
lv_scnt = sy-index.
call method of gv_EXCEL 'WORKSHEETS' = gv_SHEET.
call method of gv_SHEET 'ADD'.
free object gv_SHEET. "OK
perform fill_header_sheet2.
perform fill_detail_sheet2.
Perform save_workbook.
ENDFORM. " download_data
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
*FORM user_command USING u_ucomm TYPE syucomm
* us_selfield TYPE slis_selfield. "#EC NEEDED
*
* CASE u_ucomm.
*
* when others.
*
* ENDCASE.
*
*ENDFORM. " USER_COMMAND
*&---------------------------------------------------------------------*
*& Form create_excel
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_excel .
CREATE OBJECT gv_EXCEL 'EXCEL.APPLICATION'.
if sy-subrc ne 0.
*RC - 2008.04.07 -->
* write: / 'No EXCEL creation possible'.
* stop.
WRITE: / text-m01.
EXIT.
endif.
set property of gv_EXCEL 'DisplayAlerts' = 0.
CALL METHOD OF gv_EXCEL 'WORKBOOKS' = gv_WORKBOOK.
SET PROPERTY OF gv_EXCEL 'VISIBLE' = 0.
* Create worksheet
set property of gv_EXCEL 'SheetsInNewWorkbook' = 1.
call method of gv_WORKBOOK 'ADD'.
ENDFORM. " create_excel
*&---------------------------------------------------------------------*
*& Form fill_header_sheet2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_header_sheet2 .
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H01.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H02.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H03.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H04.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-H05.
free object gv_CELL.
ENDFORM. " fill_header_sheet2
*&---------------------------------------------------------------------*
*& Form fill_detail_sheet2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_detail_sheet2 .
data: lc_row type i.
field-symbols : <fs_grid> type ty_alv_structure.
loop at gt_data assigning <fs_grid> .
lc_row = SY-TABIX + 1.
* unpack lc_row to val+12(4).
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 1.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-MSEHI.
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 2.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-MSEHL .
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 3.
SET PROPERTY OF gv_CELL1 'NumberFormat' = '@'.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCUSUOMCODE .
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 4.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCONVFACTOR.
free object gv_CELL1.
CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 5.
SET PROPERTY OF gv_CELL1 'VALUE' = <fs_grid>-ZCUSDESC.
free object gv_CELL1.
endloop.
CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
CALL METHOD OF gv_COLUMN 'Autofit'.
free object gv_COLUMN.
free object gv_int.
free object gv_CELL.
free object: gv_CELL1.
free object gv_RANGE.
free object: gv_COLUMN, gv_ROW.
ENDFORM. " fill_detail_sheet2
*&---------------------------------------------------------------------*
*& Form fill_in_sheet1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_in_sheet1 .
*ROW1
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r01.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r02.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r03.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r04.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r05.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'F1'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r06.
free object gv_CELL.
*ROW 2
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'A2'.
SET PROPERTY OF gv_CELL 'VALUE' = text-r21.
free object gv_CELL.
CONCATENATE sy-datum(4) '/' sy-datum+4(2) '/' sy-datum+6(2) into gv_date .
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'B2'.
SET PROPERTY OF gv_CELL 'NumberFormat' = 'yyyy/mm/dd'.
SET PROPERTY OF gv_CELL 'VALUE' = gv_date.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'C2'.
SET PROPERTY OF gv_CELL 'VALUE' = sy-timlo.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'D2'.
SET PROPERTY OF gv_CELL 'VALUE' = '4'.
free object gv_CELL.
CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
CALL METHOD OF gv_COLUMN 'Autofit'.
free object gv_COLUMN.
free object gv_int.
free object gv_CELL.
free object: gv_CELL1.
free object gv_RANGE.
free object: gv_COLUMN, gv_ROW.
ENDFORM. " fill_in_sheet1
*&---------------------------------------------------------------------*
*& Form save_workbook
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM save_workbook .
get property of gv_EXCEL 'ActiveSheet' = gv_SHEET.
free object gv_SHEET.
free object gv_WORKBOOK.
GET PROPERTY OF gv_EXCEL 'ActiveWorkbook' = gv_WORKBOOK.
call method of gv_WORKBOOK 'SAVEAS'
EXPORTING
#1 = P_FILE1
#2 = 1.
call method of gv_WORKBOOK 'CLOSE'.
call method of gv_EXCEL 'QUIT'.
free object gv_SHEET.
free object gv_WORKBOOK.
free object gv_EXCEL.
ENDFORM. " save_workbook
*&---------------------------------------------------------------------*
*& Form create_and_init_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_and_init_alv .
* Macro definition
* DEFINE l_m_fieldcat.
* add 1 to ls_alv_cat-col_pos.
* ls_alv_cat-fieldname = &1.
* ls_alv_cat-ref_table = &2.
* ls_alv_cat-edit = &3.
* ls_alv_cat-COLTEXT = &4.
* ls_alv_cat-selddictxt = 'M'.
* append ls_alv_cat to lt_alv_cat.
* END-OF-DEFINITION.
* replace the macros by Purter xie 15-April-2008
Data: lw_alv_cat type LVC_S_FCAT.
DATA:
ls_variant TYPE disvariant,
lt_sort TYPE lvc_t_sort,
* ls_sort TYPE lvc_s_sort,
lt_alv_cat TYPE lvc_t_fcat,
* ls_alv_cat TYPE lvc_s_fcat,
ls_alv_lay TYPE lvc_s_layo,
ls_print TYPE lvc_s_prnt,
lv_offline TYPE char1,
lt_toolbar_excl TYPE ui_functions.
CALL METHOD cl_gui_alv_grid=>offline
RECEIVING
e_offline = lv_offline.
IF lv_offline EQ 0.
CREATE OBJECT go_container
EXPORTING
extension = 2000
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc NE 0.
* RC - 2008.04.07 -->
* MESSAGE e208(00) WITH 'The control could not be created'.
MESSAGE e208(00) WITH text-m02.
ENDIF.
ENDIF.
* Create an instance of alv control
CREATE OBJECT go_alv_grid
EXPORTING
i_parent = go_container.
** Build field catalog and sort table
if p_langu = 'E'.
* l_m_fieldcat 'MSEHI' 'T006A' 'X' text-E01.
* l_m_fieldcat 'MSEHL' '' '' text-E02.
* l_m_fieldcat 'ZCUSUOMCODE' '' 'X' text-E03.
* l_m_fieldcat 'ZCONVFACTOR' 'ZTMMCUST101_CN' 'X' text-E04.
* l_m_fieldcat 'ZCUSDESC' '' 'X' text-E05.
* replace the macros by Purter xie 15-April-2008
lw_alv_cat-col_pos = 1.
lw_alv_cat-fieldname = 'MSEHI'.
lw_alv_cat-ref_table = 'T006A'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E01.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 2.
lw_alv_cat-fieldname = 'MSEHL'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = ''.
lw_alv_cat-COLTEXT = text-E02.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 3.
lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E03.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 4.
lw_alv_cat-fieldname = 'ZCONVFACTOR'.
lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E04.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 5.
lw_alv_cat-fieldname = 'ZCUSDESC'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-E05.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
else.
* l_m_fieldcat 'MSEHI' 'T006A' 'X' text-H01..
* l_m_fieldcat 'MSEHL' '' '' text-H02.
* l_m_fieldcat 'ZCUSUOMCODE' '' 'X' text-H03.
* l_m_fieldcat 'ZCONVFACTOR' 'ZTMMCUST101_CN' 'X' text-H04.
* l_m_fieldcat 'ZCUSDESC' '' 'X' text-H05.
* replace the macros by Purter xie 15-April-2008
lw_alv_cat-col_pos = 1.
lw_alv_cat-fieldname = 'MSEHI'.
lw_alv_cat-ref_table = 'T006A'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H01.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 2.
lw_alv_cat-fieldname = 'MSEHL'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = ''.
lw_alv_cat-COLTEXT = text-H02.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 3.
lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H03.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 4.
lw_alv_cat-fieldname = 'ZCONVFACTOR'.
lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H04.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
lw_alv_cat-col_pos = 5.
lw_alv_cat-fieldname = 'ZCUSDESC'.
lw_alv_cat-ref_table = ''.
lw_alv_cat-edit = 'X'.
lw_alv_cat-COLTEXT = text-H05.
lw_alv_cat-selddictxt = 'M'.
append lw_alv_cat to lt_alv_cat.
clear lw_alv_cat.
endif.
* Layout
CLEAR ls_alv_lay.
* ls_alv_lay-zebra = c_x.
ls_alv_lay-cwidth_opt = c_x.
IF lv_offline EQ 0.
* Exclude toolbar functions
APPEND cl_gui_alv_grid=>mc_fc_detail TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_info TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_graph TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_view_crystal TO lt_toolbar_excl.
APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_check TO lt_toolbar_excl.
* APPEND cl_gui_alv_grid=>mc_fc_refresh TO lt_toolbar_excl.
CREATE OBJECT go_event_alv.
SET HANDLER go_event_alv->h_double_click
FOR go_alv_grid.
ENDIF.
ls_variant-report = sy-cprog.
* Display
CALL METHOD go_alv_grid->set_table_for_first_display
EXPORTING
is_variant = ls_variant
is_layout = ls_alv_lay
is_print = ls_print
i_save = 'A'
it_toolbar_excluding = lt_toolbar_excl
CHANGING
it_sort = lt_sort
it_outtab = gt_data[]
it_fieldcatalog = lt_alv_cat.
* set edit enabled cells ready for input
CALL METHOD go_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ENDFORM. " create_and_init_alv