07-07-2006 9:05 AM
Hi,
Can you please explain me the process of uploading a logical file on to the presentation server and then using it in a BDC?
Thanks,
Srinu.
07-07-2006 9:13 AM
Hi
You have to define them by trx FILE and use fm FILE_GET_NAME* to get the real file path.
After use fm GUI_UPLOAD to read the file and transfer tha data to your BDC
Max
07-07-2006 9:15 AM
find logical file name to physical filename using
'FILE_GET_NAME'
2)
now u can upload internal table from this phisical file and used in bdc.
07-07-2006 9:18 AM
Do you mean u want to give the logical file name on the screen, place the file on ur hard drive/application server and upload the file content?
If yes here is how u do it...
go to transaction FILE
Select Logical File Name Definition
Double Clickl ur Logical file name
Enter the file path in the Physical file box eg C:\test.txt if the file is on ur hard drive or /tmp/test.txt if the file is on the app server.
Save the data.
in ur program use the function FILE_GET_NAME. this will return the physical file path for the logical file.
Use function GUI_UPLOAD or OPEN DATASET commands to then read the file.
-Kiran
07-07-2006 9:37 AM
Hi
Define the internal table type of your file
Let's say 'itab'.
To get the filename
PARAMETERS: p_f1 type FILEINTERN.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = p_f1
<b>For upload a tab separated text file</b>
DATA: lcl_filename TYPE string.
lcl_filename = p_f1.
CHECK lcl_filename IS NOT INITIAL.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lcl_filename
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
<b>For uploading an excel file from presentation</b>
CONSTANTS c_x type c Value 'X'.
DATA: wa_rawdata TYPE truxs_t_text_data.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_field_seperator = c_x
i_tab_raw_data = wa_rawdata
i_filename = p_f1
TABLES
i_tab_converted_data = itab
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
<b>
For uploading CSV separated file</b>
CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR = ';'
i_tab_raw_data = wa_rawdata
I_FILENAME = p_f1
tables
i_tab_converted_data = itab
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
Hope this helps
Award points for useful answers
07-07-2006 9:55 AM
Hi,
check this sample code.., here i uploaded it to itab and then use it to create PR with the help of BAPI.
REPORT ZPRUPLOAD .
* internal table to store the date from the ASCII file.
DATA : BEGIN OF REQ_TMP OCCURS 0,
REQNO(10),
ITEMNO(5) ,
DOCTY(4),
NAME(12),
REQDATE(8),
MATERIAL(18),
PLANT(4),
MATLGRP(9),
QTY(17),
UNIT(3),
END OF REQ_TMP.
DATA : BEGIN OF REQ_TAB OCCURS 0 ,
REQNO LIKE EBAN-BANFN ,
ITEMNO LIKE EBAN-BNFPO ,
DOCTY LIKE EBAN-BSART ,
NAME LIKE EBAN-ERNAM ,
REQDATE LIKE SY-DATUM ,
MATERIAL LIKE EBAN-MATNR ,
PLANT LIKE EBAN-WERKS ,
* matlgrp like eban-matkl ,
QTY LIKE EBAN-MENGE ,
UNIT LIKE EBAN-MEINS ,
END OF REQ_TAB.
DATA: ITAB_BAPIEBANC LIKE BAPIEBANC OCCURS 0 WITH HEADER LINE.
DATA: ITAB_BAPIEBKN LIKE BAPIEBKN OCCURS 0 WITH HEADER LINE.
DATA: ITAB_BAPIEBANTX LIKE BAPIEBANTX OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF ERRMSG OCCURS 10.
INCLUDE STRUCTURE BAPIRETURN.
DATA: END OF ERRMSG.
* Internal table to contain values to be posted into the transaction.
DATA: BEGIN OF BDCDATA_TAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA_TAB.
* internal table to store all the errors during the BDC
DATA : BEGIN OF MESS_TAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA : END OF MESS_TAB.
DATA : G_VARIANTE LIKE DISVARIANT, " Display Variant
F_ERROR(1) ,
ERRFLAG ,
G_DEF_VARIANTE LIKE DISVARIANT, " Display Variant
V_INVALID_UNIX(7) TYPE C VALUE '*?"''`[]'. "Invalid UNIX char
DATA: V_FILE TYPE STRING.
*-----------------------------------------------------------------------
* Selection-screen
SELECTION-SCREEN : BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS :
P_FILE RADIOBUTTON GROUP UNIX DEFAULT 'X', "from file
P_SERVER RADIOBUTTON GROUP UNIX , "from server
P_FILENM LIKE RLGRAP-FILENAME VISIBLE LENGTH 60
OBLIGATORY. "filename.
SELECTION-SCREEN : END OF BLOCK BLK1.
*
AT SELECTION-SCREEN.
* to check whether the filename contains invalid characters
IF ( P_FILENM CA V_INVALID_UNIX ). "Filename contains invalid UNIX
MESSAGE E000(8I) WITH 'File Name cantains invalid characters' .
ENDIF.
IF P_SERVER = 'X'.
CONDENSE P_FILENM NO-GAPS. "Spaces are not allowed in UNIX
*check if file exists in application server
PERFORM CHECK_FILE_RESIDENCY.
ENDIF.
*-----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILENM.
**-- Display F4 for Variant
PERFORM F4_FOR_VARIANT.
* start-of-selection
START-OF-SELECTION.
V_FILE = P_FILENM.
* to get the data from the file
PERFORM READ_FILE.
IF NOT F_ERROR IS INITIAL.
EXIT.
ENDIF.
* populate the screens of FI01/Fi02.
PERFORM POPULATE_DATA.
* end-of-selection
END-OF-SELECTION.
*&--------------------------------------------------------------------*
*& Form POPULATE_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM POPULATE_DATA.
LOOP AT REQ_TAB.
*itab_bapiebanc-doc_type = itab-bsart.
* itab_bapiebanc-short_text = itab-txz01.
ITAB_BAPIEBANC-DOC_TYPE = REQ_TAB-DOCTY.
ITAB_BAPIEBANC-PUR_GROUP = '111'.
ITAB_BAPIEBANC-PREQ_ITEM = REQ_TAB-ITEMNO.
ITAB_BAPIEBANC-MATERIAL = REQ_TAB-MATERIAL.
ITAB_BAPIEBANC-QUANTITY = REQ_TAB-QTY.
ITAB_BAPIEBANC-UNIT = REQ_TAB-UNIT.
IF NOT REQ_TAB-REQDATE IS INITIAL.
ITAB_BAPIEBANC-DELIV_DATE = REQ_TAB-REQDATE.
ELSE.
ITAB_BAPIEBANC-DELIV_DATE = SY-DATUM + 30.
ENDIF.
ITAB_BAPIEBANC-PLANT = REQ_TAB-PLANT.
* itab_bapiebanc-pur_group = itab-ekgrp.
ITAB_BAPIEBANC-PREQ_NAME = REQ_TAB-NAME.
* itab_bapiebanc-trackingno = itab-bednr.
* itab_bapiebanc-mat_grp = req_tab-matlgrp.
* itab_bapiebanc-acctasscat = itab-knttp.
ITAB_BAPIEBANC-ACCTASSCAT = 'A'.
* itab_bapiebkn-g_l_acct = itab-sakto.
* itab_bapiebkn-wbs_elem = itab-ps_posid.
* itab_bapiebantx-text_line = itab-editor.
ITAB_BAPIEBANTX-TEXT_LINE = 'Test for Purchase requisiton'.
* APPEND itab_bapiebkn.
APPEND ITAB_BAPIEBANC.
APPEND ITAB_BAPIEBANTX.
ENDLOOP.
DELETE ITAB_BAPIEBANC WHERE DOC_TYPE = ' '.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
TABLES
REQUISITION_ITEMS = ITAB_BAPIEBANC
* requisition_account_assignment = itab_bapiebkn
REQUISITION_ITEM_TEXT = ITAB_BAPIEBANTX
RETURN = ERRMSG.
LOOP AT ERRMSG.
IF ERRMSG-TYPE EQ 'E'.
WRITE:/'Error in function', ERRMSG-MESSAGE.
ERRFLAG = 'X'.
ELSE.
WRITE:/ ERRMSG-MESSAGE.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDFORM. "POPULATE_DATA
***********
FORM F4_FOR_VARIANT.
DATA: LV_VARIANT_EXIT(1) TYPE C.
*-- Display list of variants
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANTE
I_SAVE = 'A'
IMPORTING
E_EXIT = LV_VARIANT_EXIT
ES_VARIANT = G_DEF_VARIANTE
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF LV_VARIANT_EXIT = SPACE.
P_FILENM = G_DEF_VARIANTE-VARIANT.
V_FILE = P_FILENM.
ENDIF.
ENDIF.
ENDFORM. " f4_fo
*
*************************
FORM CHECK_FILE_RESIDENCY.
* Open file on app server. If it doesnt open it will give sy-subrc <> 0.
OPEN DATASET P_FILENM FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
* MESSAGE E020 WITH P_FILENM. "File & not found directory
MESSAGE E000(8I) WITH 'FILE NOT FIND ON APPLICATION SERVER' .
ELSE.
CLOSE DATASET P_FILENM.
ENDIF.
ENDFORM. "CHECK_FILE_RESIDENCY
*********************************************
FORM READ_FILE.
IF P_FILE = 'X'. "if the upload from PC option is chosen
* uploading from the PC
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = REQ_TAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ENDIF.
ELSEIF P_SERVER = 'X'. " if the upload from server option is chose
OPEN DATASET P_FILENM FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC EQ 0.
DO .
READ DATASET P_FILENM INTO REQ_TAB.
IF SY-SUBRC EQ 0.
APPEND REQ_TAB.
CLEAR REQ_TAB.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
CLOSE DATASET P_FILENM.
ENDIF.
ENDFORM. "READ_FILE
Regards
vijay