‎2007 Sep 25 1:27 PM
Hi,
I am doing one function module. in which i have to download the final table data in
Excel file. The name of the file should be dynamically generated (i.e as in ALV during downloading). I am using Ws_file_get function module. But this is giving run time exception. Here is my code .Pls tell me what mistake i am doing.
FUNCTION Z_SALES_DOWNLOAD.
*"----
""Local interface:
*" IMPORTING
*" VALUE(V_VBELN) TYPE VBELN_VA
*" TABLES
*" IT_VBAK STRUCTURE VBAK
*" IT_AFKO STRUCTURE AFKO
*" IT_VBAP STRUCTURE VBAP
*"----
TYPES:BEGIN OF STRUCT_RESULT,
VBELN TYPE VBELN_VA,
POSNR TYPE POSNR_VA,
AUDAT TYPE AUDAT,
AUFNR TYPE AUFNR,
END OF STRUCT_RESULT.
DATA:IT_RESULT TYPE STANDARD TABLE OF STRUCT_RESULT,
WA_RESULT LIKE LINE OF IT_RESULT.
TYPES: BEGIN OF download_types,
s1(20) ,
s2(20) ,
s3(20) ,
s4(20) ,
END OF download_types.
DATA: itab_download TYPE STANDARD TABLE OF download_types,
wa_download LIKE LINE OF itab_download.
*CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'V_FILE'
IMPORTING
FILE_NAME = 'V_FILE'
.
DATA:v_file LIKE rlgrap-filename ."sgarg
*v_file = 'C:\Documents and Settings\DamarDPR\Desktop\sales.xls'.
IF NOT V_VBELN IS INITIAL.
SELECT * FROM VBAK INTO TABLE IT_VBAK WHERE VBELN = V_VBELN.
IF NOT IT_VBAK[] IS INITIAL.
SELECT * FROM AFKO INTO TABLE IT_AFKO FOR ALL ENTRIES IN IT_VBAK
WHERE AUFNR = IT_VBAK-AUFNR.
SELECT * FROM VBAP INTO TABLE IT_VBAP FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
LOOP AT IT_VBAK.
READ TABLE IT_VBAK WITH KEY IT_VBAK-VBELN.
MOVE IT_VBAK-VBELN TO WA_RESULT-VBELN.
MOVE IT_VBAK-AUDAT TO WA_RESULT-AUDAT.
MODIFY TABLE IT_RESULT FROM WA_RESULT.
CLEAR WA_RESULT.
ENDLOOP.
READ TABLE IT_VBAP WITH KEY IT_VBAK-VBELN.
MOVE IT_VBAP-POSNR TO WA_RESULT-POSNR.
*
LOOP AT IT_AFKO.
READ TABLE IT_AFKO WITH KEY IT_VBAK-VBELN.
MOVE IT_VBAK-AUFNR TO WA_RESULT-AUFNR.
MODIFY TABLE IT_RESULT FROM WA_RESULT.
CLEAR WA_RESULT.
ENDLOOP.
LOOP AT IT_VBAP.
APPEND WA_RESULT TO IT_RESULT.
MODIFY TABLE IT_RESULT FROM WA_RESULT.
CLEAR WA_RESULT.
ENDLOOP.
ENDIF.
*loop at itab_download into wa_download.
wa_download-s1 = 'SalesOrder'.
wa_download-s2 = 'Item'.
wa_download-s3 = 'DueDate'.
wa_download-s4 = 'ProductionOrder'.
insert wa_download into table itab_download.
clear wa_download.
*endloop.
loop at it_result into wa_result.
wa_download-s1 = wa_result-vbeln.
wa_download-s2 = wa_result-posnr.
wa_download-s3 = wa_result-audat.
wa_download-s4 = wa_result-aufnr.
append wa_download to itab_download.
clear wa_download.
endloop.
******sandeep****
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = ' '
DEF_PATH = ' '
MASK = ' '
MODE = ' '
TITLE = ' '
IMPORTING
FILENAME = v_file
RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
******sandeep**
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = v_file
FILETYPE = 'DAT'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = itab_download
FIELDNAMES = itab_download
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFUNCTION.
‎2007 Sep 25 1:29 PM
‎2007 Sep 25 1:35 PM
HI,
You are declared the V_FILE like <b>DATA:v_file LIKE rlgrap-filename ."sgarg</b> ..
take it as Type C and try it
Regadrs
Sudheer
‎2007 Sep 25 2:58 PM
Hi Sudheer,
I tried by giving file type as c.
Bt it is agaun Dump.
So pls help me.
Thanks.
‎2007 Sep 25 3:14 PM
‎2007 Sep 25 3:35 PM
Hi Sudheer,
Here i am doing paste of dump.
Information on where termination occurred
The termination occurred in the ABAP/4 prog
"WS_FILENAME_GET".
The main program was "RS_TESTFRAME_CALL ".
The termination occurred in line 127
of the source code of program "LGRAPU50 " (
Source code extract
000970 LEN = STRLEN( TEXT ).
000980 WRITE ',' TO TEXT+LEN.
000990 LEN = STRLEN( TEXT ).
001000 WRITE DEF_FILENAME TO TEXT+LEN.
001010 LEN = STRLEN( TEXT ).
001020 * MASK = ',All Files,.,Some File
001030 WRITE MASK TO TEXT+LEN.
001040
001050 PERFORM GR_SEND_C USING TEXT.
001060 CLEAR RC.
001070
001080 CALL FUNCTION 'GRAPH_RECEIVE'.
001090 CALL FUNCTION 'GRAPH_GET_PARAM'
001100 IMPORTING
001110 RBUFF = RTEXT. "// RC=<NUL><xxx>
001120
001130 LEN = STRLEN( RTEXT ) - 4. "// Skip 'RC=<NUL>'
001140 IF LEN GT 0.
001150 ASSIGN RTEXT+3(LEN) TO <F>.
001160 IF <F> CA HEXNUL. "// only until <NUL>
001170 ASSIGN <F>(SY-FDPOS) TO <F>.
001180 ENDIF.
001190 FILENAME = <F>.
001200 DATA: HEAD(2).
001210 HEAD = <F>.
001220 IF HEAD = '#1'. "// CANCEL
001230 CLEAR RC.
001240 CLEAR FILENAME.
001250 PERFORM GR_SEND USING 'K' 'QURY'.
001260 CALL FUNCTION 'GRAPH_RECEIVE'. "// just wait.
> RAISE SELECTION_CANCEL.
001280 ELSEif HEAD = '#2'. "// SELECTION ERROR
001290 CLEAR RC.
001300 CLEAR FILENAME.
001310 PERFORM GR_SEND USING 'K' 'QURY'.
001320 CALL FUNCTION 'GRAPH_RECEIVE'. "// just wait.
001330 RAISE SELECTION_ERROR.
001340 else.
001350 * GL 24.1.1996
001360 * check if selected file fits in Return-Parameter
001370 IF FILENAME = <F>. "// long enough
001380 RC = '0'.
001390 ELSE. "// not long enough
Pls look into this.