‎2008 May 01 5:29 PM
hi..
i want to download the output file of my alv report to excel with header
i.e
sales doc no sales org order type net value.......
001467789 1010 zjr 76356.00
the heading that is the names like sales doc sales org.....
here is my report...
&----
*& Report ZJE
*&
&----
*&
*&
&----
REPORT ZJE NO STANDARD PAGE HEADING
LINE-SIZE 425
LINE-COUNT 225
MESSAGE-ID ZZ.
.
*----
TYPE-POOLS: SLIS.
*----
TABLES : VBAK,ZBLRV.
INCLUDE : ZZIDWNLD.
*--
DATA: W_CONTAINER TYPE SCRFNAME VALUE 'CL_GRID',
W_CPROG TYPE LVC_S_LAYO,
G_REPID LIKE SY-REPID,
W_SAVE TYPE C,
W_EXIT TYPE C,
CL_GRID TYPE REF TO CL_GUI_ALV_GRID,
CL_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
IT_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV,
WA_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .
***************************************************
DATA : LAYOUT TYPE SLIS_LAYOUT_ALV ,
KK TYPE SLIS_PRINT_ALV ,
T_M TYPE P .
DATA : COL_POS LIKE SY-CUCOL .
DATA : ALVFC TYPE SLIS_T_FIELDCAT_ALV.
***************************************************
DATA: BEGIN OF IT_OUTTAB OCCURS 0,
VBELN LIKE VBAK-VBELN, " Sales Document No
VKORG LIKE VBAK-VKORG, " Sales Organisation
AUART LIKE VBAK-AUART, " Order Type
NETWR LIKE VBAK-NETWR, " Net Value
WAERK LIKE VBAK-WAERK, " Currency
FORECAST LIKE TLINE-TDLINE," Forecast ID
END OF IT_OUTTAB.
DATA : BEGIN OF IT_OUTTAB1 OCCURS 0,
REVTC LIKE ZBLRV-REVTC, " Revenue Amount
END OF IT_OUTTAB1.
DATA: T_TLINE LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA V_OBJECT LIKE THEAD-TDNAME.
DATA : IT_LINE(180) TYPE C.
DATA: L_FLENGTH TYPE I,
V_FILENAME LIKE RLGRAP-FILENAME.
DATA : WA_IT_OUTTAB LIKE IT_OUTTAB.
************SELECTION-SCREEN************************
SELECTION-SCREEN: BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-011.
PARAMETER: SALESORG LIKE VBAK-VKORG.
SELECT-OPTIONS : S_DOC_NO FOR VBAK-VBELN.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-100.
PARAMETERS:
P_PERIO1 LIKE T009B-POPER OBLIGATORY,
P_YEAR1 LIKE T009B-BDATJ OBLIGATORY.
SELECTION-SCREEN COMMENT 52(5) TEXT-101.
PARAMETERS:
P_PERIO2 LIKE T009B-POPER OBLIGATORY,
P_YEAR2 LIKE T009B-BDATJ OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-002.
PARAMETER: PRINT RADIOBUTTON GROUP G1,
DOWNLOAD RADIOBUTTON GROUP G1.
PARAMETERS : FILENAME LIKE RLGRAP-FILENAME
DEFAULT 'C:\TEMP\ZJE.xls'. "Filename "
"FILENAMELIKE RLGRAP-FILENAME
. " File Name
SELECTION-SCREEN END OF BLOCK BLK1.
----
INITIALIZATION. "Logic for "intelligent" defaults
----
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME.
----
This function module is used to check the file name used for excel
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = FILENAME
EXCEPTIONS
OTHERS = 1.
***********************************************************************
START-OF-SELECTION.
***********************************************************************
PERFORM FILL_CATALOG1 USING:
'VBELN' 'IT_OUTTAB' 'SALES DOC NO',
'VKORG' 'IT_OUTTAB' 'SALES ORG',
'AUART' 'IT_OUTTAB' 'ORDER TYPE',
'NETWR' 'IT_OUTTAB' 'NETVALUE',
'WAERK' 'IT_OUTTAB' 'CURRENCY',
'FORECAST' 'IT_OUTTAB' 'FORECAST'.
**********************************************************************
*--start of logic to get data.
DATA: START_DATE LIKE SY-DATUM,
END_DATE LIKE SY-DATUM.
*Call the functions to get the first and last dates of the period
*entered in the selection screen
CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'
EXPORTING
I_GJAHR = P_YEAR1
I_PERIV = 'Z1'
I_POPER = P_PERIO1
IMPORTING
E_DATE = START_DATE
EXCEPTIONS
INPUT_FALSE = 1
T009_NOTFOUND = 2
T009B_NOTFOUND = 3
OTHERS = 4.
WRITE:/ START_DATE.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
I_GJAHR = P_YEAR2
I_PERIV = 'Z1'
I_POPER = P_PERIO2
IMPORTING
E_DATE = END_DATE
EXCEPTIONS
INPUT_FALSE = 1
T009_NOTFOUND = 2
T009B_NOTFOUND = 3
OTHERS = 4.
*WRITE:/ END_DATE.
SELECT VKORG VBELN WAERK NETWR AUART FROM VBAK INTO CORRESPONDING
FIELDS OF IT_OUTTAB
WHERE AUART IN ('ZJE' , 'ZJR')
AND
AUDAT BETWEEN START_DATE AND END_DATE
AND VKORG = SALESORG
AND VBELN IN S_DOC_NO.
V_OBJECT = IT_OUTTAB-VBELN.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = 'Z001'
LANGUAGE = SY-LANGU
NAME = V_OBJECT
OBJECT = 'VBBK'
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER =
TABLES
LINES = T_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE T_TLINE INDEX 1.
IF SY-SUBRC = 0.
IT_OUTTAB-FORECAST = T_TLINE-TDLINE.
ENDIF.
IF VBAK-AUART = 'ZJE'.
IT_OUTTAB-NETWR = IT_OUTTAB1-REVTC.
WRITE 😕 IT_OUTTAB-NETWR.
ENDIF.
APPEND IT_OUTTAB TO IT_OUTTAB.
CLEAR: IT_OUTTAB.
ENDSELECT.
*--end of logic to get data.
IF PRINT = 'X'.
PERFORM DISPLAY_OUTPUT.
ENDIF.
IF DOWNLOAD = 'X'.
PERFORM DOWNLOAD_TO_EXCEL.
ENDIF.
&----
*& Form Display_output
&----
text
----
FORM DISPLAY_OUTPUT.
G_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND =
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE =
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = IT_FLD_CATALOG
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_OUTTAB.
ENDFORM. "Display_output
*
**&----
**
**& Form download_to_excel
**&----
**
text
**----
**
--> p1 text
<-- p2 text
**----
**
FORM DOWNLOAD_TO_EXCEL .
DATA: PFILE TYPE STRING.
PFILE = FILENAME.
DATA: I_LINE TYPE STANDARD TABLE OF T_ZZIDWNLD_DATA,
I_ELINE TYPE STANDARD TABLE OF T_ZZIDWNLD_DATA,
WA_LINE TYPE T_ZZIDWNLD_DATA.
DATA: IT_OUTTAB TYPE T_ZZIDWNLD_DATA OCCURS 0 WITH HEADER LINE,
L_FLENGTH TYPE I.
CONSTANTS: C_DELIM TYPE C VALUE
CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
*DATA : IT_LINE TYPE T_ZZIDWNLD_DATA.
*DATA: WA_LINE TYPE T_ZZIDWNLD_DATA.
*
*
DATA : VBELN(15) , VKORG(15) , AUART(15) , NETWR(15) , WAERKS,
*
FORECAST(15).
*
*
CONCATENATE
'sales doc no'
'sales org'
'order type'
'net value'
'currency'
'forecast id'
INTO WA_LINE
SEPARATED BY C_DELIM.
*
APPEND WA_LINE TO I_LINE.
CLEAR : WA_LINE.
LOOP AT IT_OUTTAB.
CONCATENATE IT_OUTTAB-VBELN
IT_OUTTAB-VKORG
IT_OUTTAB-AUART
IT_OUTTAB-NETWR
IT_OUTTAB-WAERK
IT_OUTTAB-FORECAST
INTO WA_LINE
SEPARATED BY C_DELIM.
APPEND WA_LINE TO I_LINE.
ENDLOOP.
PFILE = FILENAME.
LOOP AT IT_OUTTAB INTO WA_IT_OUTTAB.
VBELN = WA_IT_OUTTAB-VBELN.
VKORG = WA_IT_OUTTAB-VKORG.
AUART = WA_IT_OUTTAB-AUART.
NETWR = WA_IT_OUTTAB-NETWR.
WAERKS = WA_IT_OUTTAB-WAERK.
FORECAST = WA_IT_OUTTAB-FORECAST.
CONCATENATE
WA_IT_OUTTAB-VBELN
WA_IT_OUTTAB-VKORG
WA_IT_OUTTAB-AUART
WA_IT_OUTTAB-NETWR
WA_IT_OUTTAB-WAERK
WA_IT_OUTTAB-FORECAST
INTO IT_LINE
SEPARATED BY C_DELIM.
APPEND IT_LINE.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = PFILE
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = '#'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = I_LINE
FIELDNAMES =
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.
MESSAGE E000 WITH 'Transfer Unsuccessful'(001).
ELSE.
MESSAGE S000 WITH 'Transfer Successful'(002).
ENDIF.
*ENDIF.
ENDFORM. "DOWNLOAD_TO_EXCEL
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
W_HEADER TYPE SLIS_LISTHEADER.
W_HEADER-TYP = 'H'.
W_HEADER-INFO = 'Cadence Design System.Inc'(050).
APPEND W_HEADER TO T_HEADER.
W_HEADER-TYP = 'S'.
W_HEADER-KEY = 'REPORT:'.
W_HEADER-INFO = SY-REPID.
APPEND W_HEADER TO T_HEADER.
W_HEADER-TYP = 'S'.
W_HEADER-KEY = 'DATE:'.
CONCATENATE SY-DATUM4(2) ' / ' SY-DATUM6(2) ' / ' SY-DATUM(4) INTO
W_HEADER-INFO.
APPEND W_HEADER TO T_HEADER.
CLEAR W_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER.
ENDFORM. "TOP_OF_PAGE
*&----
*
*& Form fill_catalog1
*&----
*
text
*----
*
-->P_FIELDNAME text
-->P_REF_TABLE text
-->P_SCRTEXT text
*----
*
FORM FILL_CATALOG1 USING P_FIELDNAME TYPE ANY
P_REF_TABLE TYPE ANY
P_SCRTEXT TYPE ANY.
CLEAR : WA_FLD_CATALOG.
WA_FLD_CATALOG-FIELDNAME = P_FIELDNAME.
WA_FLD_CATALOG-TABNAME = P_REF_TABLE.
WA_FLD_CATALOG-SELTEXT_S = P_SCRTEXT.
WA_FLD_CATALOG-SELTEXT_M = P_SCRTEXT.
WA_FLD_CATALOG-SELTEXT_L = P_SCRTEXT.
wa_fld_catalog-do_sum = 'X'.
APPEND WA_FLD_CATALOG TO IT_FLD_CATALOG.
ENDFORM. " fill_catalog1
*================================================
END OF THE PROGRAM
*=================================================
but its showing error only for netwr..
(it_outtab-netwr must bge character type data object (data type c,n,d,t or string)..
plz help me out as ita very urgent!!
‎2008 May 01 5:33 PM
You need to pass one more internal table to FIELDNAMES in the GUI_DOWNLOAD FM.
YOu can fill it like:
data: begin of it_fld occurs 0,
name type char30,
end of it_fld.
it_fld-name = 'Field1'.
append it_fld.
it_fld-name ='FIeld2'.
append it_fld.
....
CALL FUNCTION 'GUI_DOWNLOAD'
...
tables
FIELDNAMES = it_fld
Regards,
Naimesh Patel