on 05-15-2008 3:35 PM
Hi every one
I witten a bdc of TrCode F-02 to upload data from excel sheet to sap in session method .It only takes two line item insted of all item .
so can any body help me out
Hiii..
As You told that u r uploading excel file right then y r u using ws_upload which does't work ...try to use this...FM
ALSM_EXCEL_TO_INTERNAL_TABLE
and if You need sample code let me know...
Regards,
sg.............
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Shoven,
Use the fm text_convert_xls_to_sap
START-OF-SELECTION.
Uploading the data in the file into internal table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR =
I_LINE_HEADER = 'X'
i_tab_raw_data = it_type
i_filename = pa_file
TABLES
i_tab_converted_data = it_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
END-OF-SELECTION.
If helpful rewards me.
Regards,
Venkat
WS_UPLOAD is absolete use GUI_IPLOAD.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
can you send some sample code?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear Warren Clements
As u want ,here i am sending u my code .Just have look and find a solution for me .I am @ client place.
Thanks in Advance
Shovan
REPORT ZLINEITEM
NO STANDARD PAGE HEADING LINE-SIZE 255
MESSAGE-ID ZFI.
TYPES : BEGIN OF RECORD,
BLDAT(12), " DOC DATE
BLART LIKE BKPF-BLART, " Doc. Type
BUKRS LIKE BKPF-BUKRS, " Company Code
BUDAT(12), " Posting Date
WAERS LIKE BKPF-WAERS,"CURRENCY
XBLNR LIKE BKPF-XBLNR, " Reference
BKTXT LIKE BKPF-BKTXT, " Doc Header txt
NEWBS LIKE RF05A-NEWBS, " Post Key
NEWKO LIKE RF05A-NEWKO, " Cust./ Vend / G/L AC
NEWUM LIKE RF05A-NEWUM, " Spl G/L
WRBTR(16), " Amount
GSBER LIKE COBL-GSBER, " Business Area
MATNR LIKE COBL-MATNR, " Material
ZFBDT(12), " Base Line Date
PRCTR LIKE COBL-PRCTR, " Profit Center
KOSTL LIKE COBL-KOSTL, " Cost Center
ZUONR LIKE BSEG-ZUONR, " Assignment
SGTXT LIKE BSEG-SGTXT, " Text
ZEILE LIKE EENO_DYNP-ZEILE,"Long text
END OF RECORD.
DATA : RECORD TYPE RECORD OCCURS 0 WITH HEADER LINE,
IT_NEXT_RECORD TYPE RECORD OCCURS 0 WITH HEADER LINE,
WA_RECORD TYPE RECORD,
WI_IDX LIKE SY-TABIX,
V_FLAG(1).
DATA : BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.
----
SELECTION-SCREEN : BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_IFILE LIKE RLGRAP-FILENAME OBLIGATORY,
GRPID LIKE APQI-GROUPID OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK BL1.
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IFILE.
PERFORM GET_FILENAME.
----
START-OF-SELECTION.
PERFORM UPLOAD_FILE.
PERFORM BDC_OPEN_GROUP.
PERFORM SESSION.
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
&----
*& Form GET_FILENAME
&----
FORM GET_FILENAME.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = SPACE
DEF_PATH = P_IFILE
MASK = ',.,..'
MODE = 'O'
TITLE = 'Choose file'
IMPORTING
FILENAME = P_IFILE.
ENDFORM. " GET_FILENAME
&----
*& Form UPLOAD_FILE
&----
FORM UPLOAD_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_IFILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = RECORD.
CASE SY-SUBRC.
WHEN '1'.
MESSAGE E001(ZIBT).
WHEN '2'.
MESSAGE E002(ZIBT).
WHEN '3'.
MESSAGE E003(ZIBT).
WHEN '4'.
MESSAGE E004(ZIBT).
WHEN '5'.
MESSAGE E005(ZIBT).
WHEN '6'.
MESSAGE E006(ZIBT).
WHEN '7'.
MESSAGE E007(ZIBT).
WHEN '8'.
MESSAGE E008(ZIBT).
WHEN '9'.
MESSAGE E009(ZIBT).
ENDCASE.
ENDFORM. " UPLOAD_FILE
&----
*& Form BDC_OPEN_GROUP
&----
FORM BDC_OPEN_GROUP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = GRPID
KEEP = 'X'
USER = SY-UNAME
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " BDC_OPEN_GROUP
&----
*& Form SESSION
&----
FORM SESSION.
IT_NEXT_RECORD[] = RECORD[].
CLEAR WI_IDX.
LOOP AT RECORD.
WA_RECORD = RECORD.
WI_IDX = SY-TABIX + 1.
AT NEW XBLNR.
*header data
PERFORM HEADER_DATA.
*lineitem data
IF WA_RECORD-NEWBS EQ '40' OR
WA_RECORD-NEWBS EQ '50'.
PERFORM LINEITEM_40_50.
PERFORM NEXT_REC_HEADER.
PERFORM SCREEN_0002.
ELSEIF WA_RECORD-NEWBS EQ '01' OR
WA_RECORD-NEWBS EQ '15'.
PERFORM lineitem_29_39.
PERFORM NEXT_REC_HEADER.
ELSEIF WA_RECORD-NEWBS EQ '25' OR
WA_RECORD-NEWBS EQ '35' OR
WA_RECORD-NEWBS EQ '21' OR
WA_RECORD-NEWBS EQ '31'.
PERFORM LINITEM_25_35_21_31.
PERFORM NEXT_REC_HEADER.
ELSEIF WA_RECORD-NEWBS EQ '29' OR
WA_RECORD-NEWBS EQ '39'.
PERFORM LINEITEM_29_39.
PERFORM NEXT_REC_HEADER.
ELSE.
MESSAGE E999 WITH WA_RECORD-NEWBS 'POST KEY NOT USED IN THIS UPLOAD'.
ENDIF.
CONTINUE.
ENDAT.
IF WA_RECORD-NEWBS EQ '40' OR
WA_RECORD-NEWBS EQ '50'.
PERFORM LINEITEM_40_50.
PERFORM NEXT_REC_LINEITEM.
PERFORM SCREEN_0002.
ELSEIF WA_RECORD-NEWBS EQ '01' OR
WA_RECORD-NEWBS EQ '15'.
PERFORM LINEITEM_01_15.
PERFORM NEXT_REC_LINEITEM.
ELSEIF WA_RECORD-NEWBS EQ '25' OR
WA_RECORD-NEWBS EQ '35' OR
WA_RECORD-NEWBS EQ '21' OR
WA_RECORD-NEWBS EQ '31'.
PERFORM LINITEM_25_35_21_31.
PERFORM NEXT_REC_LINEITEM.
ELSEIF WA_RECORD-NEWBS EQ '29' OR
WA_RECORD-NEWBS EQ '39'.
PERFORM LINEITEM_29_39.
PERFORM NEXT_REC_LINEITEM.
ELSE.
MESSAGE E999 WITH WA_RECORD-NEWBS 'POST KEY NOT VALID'.
ENDIF.
AT END OF XBLNR.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0700'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05A-NEWBS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
PERFORM BDC_INSERT.
ENDAT.
ENDLOOP.
PERFORM BDC_CLOSE.
IF SY-SUBRC EQ 0.
WRITE:/ 'SESSION CREATED'.
ELSE.
WRITE:/ 'SESSION NOT CREATED, ERRORS OCCURED'.
ENDIF.
ENDFORM. " SESSION
&----
*& Form BDC_INSERT
&----
FORM BDC_INSERT.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'F-02'
TABLES
DYNPROTAB = BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH BDCDATA.
ENDFORM. " BDC_INSERT
&----
*& Form BDC_CLOSE
&----
FORM BDC_CLOSE.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 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.
CALL FUNCTION 'BDC_CLOSE_GROUP'
.
ENDFORM. " BDC_CLOSE
&----
*& Form header_data
&----
FORM HEADER_DATA.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-NEWUM'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BKPF-BLDAT' WA_RECORD-BLDAT.
perform bdc_field using 'BKPF-BLART' WA_RECORD-BLART.
perform bdc_field using 'BKPF-BUKRS' WA_RECORD-BUKRS.
perform bdc_field using 'BKPF-BUDAT' WA_RECORD-BUDAT.
*perform bdc_field using 'BKPF-MONAT' 'BKPF-MONAT'.
perform bdc_field using 'BKPF-WAERS' WA_RECORD-WAERS.
perform bdc_field using 'BKPF-XBLNR' WA_RECORD-XBLNR.
perform bdc_field using 'BKPF-BKTXT' WA_RECORD-BKTXT.
perform bdc_field using 'FS006-DOCID' ''.
perform bdc_field using 'RF05A-NEWBS' WA_RECORD-NEWBS.
perform bdc_field using 'RF05A-NEWKO' WA_RECORD-NEWKO.
perform bdc_field using 'RF05A-NEWUM' WA_RECORD-NEWUM.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' WA_RECORD-BLDAT.
PERFORM BDC_FIELD USING 'BKPF-BLART' WA_RECORD-BLART.
PERFORM BDC_FIELD USING 'BKPF-BUKRS' WA_RECORD-BUKRS.
PERFORM BDC_FIELD USING 'BKPF-BUDAT' WA_RECORD-BUDAT.
PERFORM BDC_FIELD USING 'BKPF-WAERS' WA_RECORD-WAERS ."'INR'."RECORD-WAERS.
PERFORM BDC_FIELD USING 'BKPF-XBLNR' WA_RECORD-XBLNR.
PERFORM BDC_FIELD USING 'BKPF-BKTXT' WA_RECORD-BKTXT.
PERFORM BDC_FIELD USING 'FS006-DOCID' '*'.
*
PERFORM BDC_FIELD USING 'RF05A-NEWBS' WA_RECORD-NEWBS.
PERFORM BDC_FIELD USING 'RF05A-NEWKO' WA_RECORD-NEWKO.
PERFORM BDC_FIELD USING 'RF05A-NEWUM' WA_RECORD-NEWUM.
ENDFORM. " header_data
&----
*& Form lineitem_40_50
&----
FORM LINEITEM_40_50.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AB'.
*
PERFORM BDC_FIELD USING 'BSEG-WRBTR' WA_RECORD-WRBTR.
PERFORM BDC_FIELD USING 'BSEG-ZUONR' WA_RECORD-ZUONR.
PERFORM BDC_FIELD USING 'BSEG-SGTXT' WA_RECORD-SGTXT.
*
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR' 'BSEG-ZUONR'.
perform bdc_field using 'BDC_OKCODE' '=LTXT'.
*CLEAR CON.
*WRITE W_UPLOAD-WRBTR1 TO CON.
*CONDENSE CON.
perform bdc_field using 'BSEG-WRBTR' WA_RECORD-WRBTR.
perform bdc_field using 'BSEG-ZUONR' WA_RECORD-ZUONR.
perform bdc_field using 'DKACB-FMORE' 'X'.
PERFORM BDC_FIELD USING 'RF05A-NEWBS' WA_RECORD-NEWBS.
PERFORM BDC_FIELD USING 'RF05A-NEWKO' WA_RECORD-NEWKO.
PERFORM BDC_FIELD USING 'RF05A-NEWUM' WA_RECORD-NEWUM.
*perform bdc_dynpro using 'SAPMF05A' '0304'.
*perform bdc_field using 'BDC_CURSOR' 'BSEG-ZUONR'.
*perform bdc_field using 'BDC_OKCODE' '=LTXT'.
**CLEAR CON.
**WRITE W_UPLOAD-WRBTR TO CON.
***We have to use write statement to counter for user settings
**CONDENSE CON.
*
*perform bdc_field using 'BSEG-WRBTR' WA_RECORD-WRBTR.
*perform bdc_field using 'BSEG-ZUONR' WA_RECORD-ZUONR.
*perform bdc_dynpro using 'SAPLFTXT' '0110'.
*perform bdc_field using 'BDC_OKCODE' '=ACCPT'.
*perform bdc_field using 'BDC_CURSOR' 'EENO_DYNP-ZEILE(01)'.
*
*perform bdc_field using 'EENO_DYNP-ZEILE(01)' WA_RECORD-ZEILE.
ENDFORM. " lineitem_40_50
&----
*& Form lineitem_01_15
&----
FORM LINEITEM_01_15.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0301'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AB'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR' WA_RECORD-WRBTR.
PERFORM BDC_FIELD USING 'BSEG-PRCTR' WA_RECORD-PRCTR.
PERFORM BDC_FIELD USING 'BSEG-GSBER' WA_RECORD-GSBER.
PERFORM BDC_FIELD USING 'BSEG-MATNR' WA_RECORD-MATNR.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT' WA_RECORD-ZFBDT.
PERFORM BDC_FIELD USING 'BSEG-ZUONR' WA_RECORD-ZUONR.
PERFORM BDC_FIELD USING 'BSEG-SGTXT' WA_RECORD-SGTXT.
ENDFORM. " lineitem_01_15
&----
*& Form LINITEM_25_35
&----
FORM LINITEM_25_35_21_31.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0302'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AB'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR' WA_RECORD-WRBTR.
PERFORM BDC_FIELD USING 'BSEG-PRCTR' WA_RECORD-PRCTR.
PERFORM BDC_FIELD USING 'BSEG-GSBER' WA_RECORD-GSBER.
PERFORM BDC_FIELD USING 'BSEG-MATNR' WA_RECORD-MATNR.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT' WA_RECORD-ZFBDT.
PERFORM BDC_FIELD USING 'BSEG-ZUONR' WA_RECORD-ZUONR.
PERFORM BDC_FIELD USING 'BSEG-SGTXT' WA_RECORD-SGTXT.
ENDFORM. " LINITEM_25_35
&----
*& Form lineitem_29_39
&----
FORM LINEITEM_29_39.
perform bdc_dynpro using 'SAPMF05A' '0304'.
perform bdc_field using 'BDC_CURSOR' 'BSEG-ZUONR'.
perform bdc_field using 'BDC_OKCODE' '=LTXT'.
*CLEAR CON.
*WRITE W_UPLOAD-WRBTR TO CON.
**We have to use write statement to counter for user settings
*CONDENSE CON.
perform bdc_field using 'BSEG-WRBTR' WA_RECORD-WRBTR.
perform bdc_field using 'BSEG-ZUONR' WA_RECORD-ZUONR.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0303'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'BSEG-PRCTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AB'.
*
PERFORM BDC_FIELD USING 'BSEG-WRBTR' WA_RECORD-WRBTR.
PERFORM BDC_FIELD USING 'BSEG-GSBER' WA_RECORD-GSBER.
PERFORM BDC_FIELD USING 'BSEG-MATNR' WA_RECORD-MATNR.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT' WA_RECORD-ZFBDT.
PERFORM BDC_FIELD USING 'BSEG-PRCTR' WA_RECORD-PRCTR.
PERFORM BDC_FIELD USING 'BSEG-ZUONR' WA_RECORD-ZUONR.
PERFORM BDC_FIELD USING 'BSEG-SGTXT' WA_RECORD-SGTXT.
ENDFORM. " lineitem_29_39
&----
*& Form NEXT_REC_HEADER
&----
text
----
--> p1 text
<-- p2 text
----
FORM NEXT_REC_HEADER .
READ TABLE IT_NEXT_RECORD INDEX WI_IDX.
IF SY-SUBRC EQ 0.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
IT_NEXT_RECORD-NEWBS.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
IT_NEXT_RECORD-NEWKO.
PERFORM BDC_FIELD USING 'RF05A-NEWUM'
IT_NEXT_RECORD-NEWUM.
ENDIF.
ENDFORM. " NEXT_REC_HEADER
&----
*& Form SCREEN_0002
&----
text
----
--> p1 text
<-- p2 text
----
FORM SCREEN_0002 .
*perform bdc_dynpro using 'SAPLKACB' '0002'.
*perform bdc_field using 'BDC_CURSOR'
'COBL-KOSTL'.
*perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
*
*perform bdc_field using 'COBL-KOSTL'
WA_RECORD-KOSTL.
*perform bdc_dynpro using 'SAPLFTXT' '0110'.
*perform bdc_field using 'BDC_OKCODE'
'=ACCPT'.
*perform bdc_field using 'BDC_CURSOR'
'EENO_DYNP-ZEILE(01)'.
*perform bdc_field using 'EENO_DYNP-ZEILE(01)'
WA_RECORD-ZEILE.
----
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-KOSTL'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-KOSTL'
WA_RECORD-KOSTL.
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'COBL-GSBER'
WA_RECORD-GSBER.
*
IF NOT WA_BKPF-KOSTL IS INITIAL.
PERFORM BDC_FIELD USING 'COBL-KOSTL'
WA_RECORD-KOSTL.
ENDIF.
*
PERFORM BDC_FIELD USING 'COBL-PRCTR'
WA_RECORD-PRCTR.
PERFORM BDC_FIELD USING 'COBL-MATNR'
WA_RECORD-MATNR.
*
ENDFORM. " SCREEN_0002
&----
*& Form NEXT_REC_LINEITEM
&----
text
----
--> p1 text
<-- p2 text
----
FORM NEXT_REC_LINEITEM .
READ TABLE IT_NEXT_RECORD INDEX WI_IDX.
IF SY-SUBRC EQ 0.
IF RECORD-XBLNR EQ IT_NEXT_RECORD-XBLNR.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
IT_NEXT_RECORD-NEWBS.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
IT_NEXT_RECORD-NEWKO.
PERFORM BDC_FIELD USING 'RF05A-NEWUM'
IT_NEXT_RECORD-NEWUM.
ELSE.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
SPACE.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
SPACE.
ENDIF.
ELSE.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
SPACE.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
SPACE.
ENDIF.
ENDFORM. " NEXT_REC_LINEITEM
User | Count |
---|---|
84 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.