2006 Jun 16 9:19 AM
Hi,
Any help would be greatly appreciated.
I have a requirement of downloading customer statement (open line items) on the presentation server or application server (user specified). The format of data is as follows:
Company code & address
Customer code and address
Line items data
The user can select multiple customers and a page break is required between two customer statements.
Q1) If I have to download on the presentation server, how do I consolidate the header and item data into one internal table to be passed to GUI_Download?
Q2) To insert a page break, which format can be used? I doubt if excel and text file allow to do it? Also, what is the limit on the number of lines for MS word?
Thanks and Regards,
Shyam K
2006 Jun 16 10:24 AM
Hi,
<b>Q1 ..Download data twice...first header and then data in append mode ..find the Code</b>
FORM f9000_save_detail_report
TABLES xt_det_report STRUCTURE ls_det_report
USING xv_sum_fp TYPE char255
xv_det_fp TYPE char255.
CONSTANTS :
lc_file_type TYPE char10 VALUE 'DAT'.
DATA : lit_head_det TYPE TABLE OF ty_head_det,
wa_head_det LIKE LINE OF lit_head_det,
lit_head_sum TYPE TABLE OF ty_head_sum,
wa_head_sum LIKE LINE OF lit_head_sum,
lv_file_name TYPE string.
CLEAR: lit_head_det[],
wa_head_det,
lv_file_name.
*----------------Column Header for Detail Report----------------------*
* wa_head_det-create_date = text-023 .
wa_head_det-partner = text-046 .
* wa_head_det-bpext = text-047 .
wa_head_det-leg_sp_id = text-047 .
wa_head_det-nomship_ref = text-024 .
wa_head_det-offer = text-025 .
wa_head_det-conf_ref_no = text-026 .
wa_head_det-con_eff_date = text-027 .
wa_head_det-activity_date = text-028 .
wa_head_det-rej_text = text-029 .
wa_head_det-trf_date = text-030 .
wa_head_det-mprn = text-031 .
wa_head_det-mprn_status = text-032 .
wa_head_det-mam_app = text-036 .
wa_head_det-open_read = text-010 .
APPEND wa_head_det TO lit_head_det.
*----------------Column Header for Summary Report----------------------*
wa_head_sum-date = text-023 .
wa_head_sum-count = text-051 .
APPEND wa_head_sum TO lit_head_sum.
*----------------Progress Indicator For the User----------------------*
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 100
text = text-053
EXCEPTIONS
OTHERS = 1.
* SY-SUBRC Check Not Required
*----------------Download Detail Report to Excel----------------------*
*---Assign Detail File Path
lv_file_name = xv_det_fp.
*---Load Header Data of Detail Report
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = lc_file_type
write_field_separator = lc_true
codepage = '4103'
TABLES
data_tab = lit_head_det
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
OTHERS = 22.
IF sy-subrc = 0.
*----Load Detail Report Data to Excel File
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = lc_file_type
append = lc_true
write_field_separator = lc_true
codepage = '4103'
TABLES
data_tab = xt_det_report
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
OTHERS = 22.
ENDIF.
IF sy-subrc <> 0.
* 202 : Error Occurred while writing data to the file.
MESSAGE e202(zusm_gen) .
EXIT.
ELSE.
WRITE 😕 text-042 , lv_file_name.
ENDIF.
Regards
Mark Helpful Answers
2006 Jun 16 9:45 AM
Why don´t you use the 'MS_EXCEL_OLE_STANDARD_DAT' function? It helps you to bring the results into excel format with headers. Instead of using the GUI_DOWNLOAD function you can use it.
I Hope this helps you.
An example would be;
CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'
EXPORTING
FILE_NAME = fich
DATA_SHEET_NAME = 'Title'
PASSWORD_OPTION = 0
TABLES
DATA_TAB = t_data_table
FIELDNAMES = t_headers
EXCEPTIONS
FILE_NOT_EXIST = 1
FILENAME_EXPECTED = 2
COMMUNICATION_ERROR = 3
OLE_OBJECT_METHOD_ERROR = 4
OLE_OBJECT_PROPERTY_ERROR = 5
INVALID_PIVOT_FIELDS = 6
DOWNLOAD_PROBLEM = 7
OTHERS = 8.
endif.
2006 Jun 16 9:53 AM
I hope this could help you too.
REPORT zdownempdata .
INFOTYPES: 0000, 0001, 0007, 0008, 0121, 0615.
NODES: pernr.
TABLES: t001p.
TYPES: BEGIN OF t_employee,
INCLUDE STRUCTURE hrms_biw_io_occupancy.
begda TYPE begda,
endda TYPE endda,
pernr TYPE pernr_d,
rfpnr TYPE rfpnr,
bukrs TYPE bukrs,
werks TYPE persa,
btrtl TYPE btrtl,
persg TYPE persg,
persk TYPE persk,
orgeh TYPE orgeh,
stell TYPE stell,
plans TYPE plans,
kokrs TYPE mast_coar,
kostl TYPE mast_cctr,
abkrs TYPE abkrs,
molga TYPE molga,
trfar TYPE trfar,
trfgb TYPE trfgb,
trfkz TYPE trfkz,
trfgr TYPE trfgr,
trfst TYPE trfst,
bsgrd TYPE bsgrd,
ansal TYPE ansal_15,
ancur TYPE ancur,
empct TYPE empct,
stat2 TYPE stat2,
ncsdate TYPE hiredate,
sltyp TYPE p_sltyp,
slreg TYPE p_slreg,
slgrp TYPE p_slgrp,
sllev TYPE p_sllvl,
ansvh TYPE ansvh,
vdsk1 TYPE vdsk1,
sname TYPE smnam,
END OF t_employee.
DATA: it_employee TYPE STANDARD TABLE OF t_employee INITIAL SIZE 0,
wa_employee TYPE t_employee.
TYPES: BEGIN OF t_emptexts,
INCLUDE STRUCTURE hrms_bw_txt_employee.
DATEFROM TYPE RSDATEFROM,
DATETO TYPE RSDATETO,
PERNR TYPE PERSNO,
TXTMD TYPE EMNAM,
END OF t_emptexts.
DATA: it_emptexts TYPE STANDARD TABLE OF t_emptexts INITIAL SIZE 0,
wa_emptexts TYPE t_emptexts.
TYPES: BEGIN OF t_contract,
INCLUDE STRUCTURE pa0615.
pernr TYPE p0615-pernr,
begda TYPE p0615-begda,
endda TYPE p0615-endda,
aedtm TYPE p0615-aedtm,
ctype TYPE p0615-ctype,
cbeg TYPE p0615-cbeg,
cend TYPE p0615-cend,
END OF t_contract.
DATA: it_contract TYPE STANDARD TABLE OF t_contract INITIAL SIZE 0,
wa_contract TYPE t_contract.
DATA: it_tabemp TYPE filetable,
gd_subrcemp TYPE i,
it_tabempt TYPE filetable,
gd_subrcempt TYPE i,
it_tabcont TYPE filetable,
gd_subrccont TYPE i.
DATA: gd_downfile TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: p_emp LIKE rlgrap-filename,
p_empt LIKE rlgrap-filename,
p_cont LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK block1.
***********************************************************************
*at selection-screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_emp.
REFRESH: it_tabemp.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
default_filename = '*.xls'
initial_directory = 'C:\'
multiselection = ' ' "No multiple selection
CHANGING
file_table = it_tabemp
rc = gd_subrcemp.
LOOP AT it_tabemp INTO p_emp.
ENDLOOP.
***********************************************************************
*at selection-screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_empt.
REFRESH: it_tabemp.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
default_filename = '*.xls'
initial_directory = 'C:\'
multiselection = ' ' "No multiple selection
CHANGING
file_table = it_tabempt
rc = gd_subrcempt.
LOOP AT it_tabempt INTO p_empt.
ENDLOOP.
***********************************************************************
*at selection-screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cont.
REFRESH: it_tabcont.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
default_filename = '*.xls'
initial_directory = 'C:\'
multiselection = ' ' "No multiple selection
CHANGING
file_table = it_tabcont
rc = gd_subrccont.
LOOP AT it_tabcont INTO p_cont.
ENDLOOP.
************************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.
GET pernr.
Selecting the latest infotype record
rp_provide_from_last p0000 space pn-begda pn-endda.
rp_provide_from_last p0001 space pn-begda pn-endda.
rp_provide_from_last p0007 space pn-begda pn-endda.
rp_provide_from_last p0008 space pn-begda pn-endda.
rp_provide_from_last p0121 space pn-begda pn-endda.
rp_provide_from_last p0615 space pn-begda pn-endda.
MOVE-CORRESPONDING p0001 TO wa_employee.
wa_employee-rfpnr = p0121-rfp01. "?????
MOVE-CORRESPONDING p0007 TO wa_employee.
MOVE-CORRESPONDING p0008 TO wa_employee.
MOVE-CORRESPONDING p0000 TO wa_employee.
SELECT SINGLE molga
FROM t001p
INTO wa_employee-molga
WHERE werks EQ p0001-werks AND
btrtl EQ p0001-btrtl.
SELECT SINGLE trfkz
FROM t503
INTO wa_employee-trfkz
WHERE persg EQ p0001-persg AND
persk EQ p0001-persk.
CALL FUNCTION 'HR_ENTRY_DATE'
EXPORTING
persnr = pernr-pernr
RCLAS =
BEGDA = '18000101'
ENDDA = '99991231'
VARKY =
IMPORTING
entrydate = wa_employee-ncsdate
TABLES
ENTRY_DATES =
EXCEPTIONS
ENTRY_DATE_NOT_FOUND = 1
PERNR_NOT_ASSIGNED = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
append employee data
APPEND wa_employee TO it_employee.
CLEAR: wa_employee.
wa_emptexts-datefrom = p0001-begda.
wa_emptexts-dateto = p0001-endda.
wa_emptexts-pernr = p0001-pernr.
wa_emptexts-txtmd = p0001-ename.
append employee texts data
APPEND wa_emptexts TO it_emptexts.
CLEAR: wa_emptexts.
MOVE-CORRESPONDING p0615 TO wa_contract.
append employee contract data
APPEND wa_contract TO it_contract.
CLEAR: wa_contract.
************************************************************************
*END-OF-SELECTION.
END-OF-SELECTION.
download employee data
IF NOT p_emp IS INITIAL.
gd_downfile = p_emp.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gd_downfile
filetype = 'ASC'
write_field_separator = 'X'
TABLES
data_tab = it_employee.
IF sy-subrc EQ 0.
WRITE:/ 'Employee file downloaded to',
gd_downfile.
ELSE.
WRITE:/ 'There was an error downloading Employee file to',
gd_downfile.
ENDIF.
ENDIF.
download employee texts data
IF NOT p_empt IS INITIAL.
gd_downfile = p_empt.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gd_downfile
filetype = 'ASC'
write_field_separator = 'X'
TABLES
data_tab = it_emptexts.
IF sy-subrc EQ 0.
WRITE:/ 'Employee text file downloaded to',
gd_downfile.
ELSE.
WRITE:/ 'There was an error downloading Employee text file to',
gd_downfile.
ENDIF.
ENDIF.
download contract data
IF NOT p_cont IS INITIAL.
gd_downfile = p_cont.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = gd_downfile
filetype = 'ASC'
write_field_separator = 'X'
TABLES
data_tab = it_contract.
IF sy-subrc EQ 0.
WRITE:/ 'Employee contract file downloaded to',
gd_downfile.
ELSE.
WRITE:/ 'There was an error downloading Employee contract file to',
gd_downfile.
ENDIF.
ENDIF.
2006 Jun 16 10:24 AM
Hi,
<b>Q1 ..Download data twice...first header and then data in append mode ..find the Code</b>
FORM f9000_save_detail_report
TABLES xt_det_report STRUCTURE ls_det_report
USING xv_sum_fp TYPE char255
xv_det_fp TYPE char255.
CONSTANTS :
lc_file_type TYPE char10 VALUE 'DAT'.
DATA : lit_head_det TYPE TABLE OF ty_head_det,
wa_head_det LIKE LINE OF lit_head_det,
lit_head_sum TYPE TABLE OF ty_head_sum,
wa_head_sum LIKE LINE OF lit_head_sum,
lv_file_name TYPE string.
CLEAR: lit_head_det[],
wa_head_det,
lv_file_name.
*----------------Column Header for Detail Report----------------------*
* wa_head_det-create_date = text-023 .
wa_head_det-partner = text-046 .
* wa_head_det-bpext = text-047 .
wa_head_det-leg_sp_id = text-047 .
wa_head_det-nomship_ref = text-024 .
wa_head_det-offer = text-025 .
wa_head_det-conf_ref_no = text-026 .
wa_head_det-con_eff_date = text-027 .
wa_head_det-activity_date = text-028 .
wa_head_det-rej_text = text-029 .
wa_head_det-trf_date = text-030 .
wa_head_det-mprn = text-031 .
wa_head_det-mprn_status = text-032 .
wa_head_det-mam_app = text-036 .
wa_head_det-open_read = text-010 .
APPEND wa_head_det TO lit_head_det.
*----------------Column Header for Summary Report----------------------*
wa_head_sum-date = text-023 .
wa_head_sum-count = text-051 .
APPEND wa_head_sum TO lit_head_sum.
*----------------Progress Indicator For the User----------------------*
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 100
text = text-053
EXCEPTIONS
OTHERS = 1.
* SY-SUBRC Check Not Required
*----------------Download Detail Report to Excel----------------------*
*---Assign Detail File Path
lv_file_name = xv_det_fp.
*---Load Header Data of Detail Report
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = lc_file_type
write_field_separator = lc_true
codepage = '4103'
TABLES
data_tab = lit_head_det
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
OTHERS = 22.
IF sy-subrc = 0.
*----Load Detail Report Data to Excel File
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file_name
filetype = lc_file_type
append = lc_true
write_field_separator = lc_true
codepage = '4103'
TABLES
data_tab = xt_det_report
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
OTHERS = 22.
ENDIF.
IF sy-subrc <> 0.
* 202 : Error Occurred while writing data to the file.
MESSAGE e202(zusm_gen) .
EXIT.
ELSE.
WRITE 😕 text-042 , lv_file_name.
ENDIF.
Regards
Mark Helpful Answers