‎2007 Jun 25 10:52 AM
how to upload the data in BDC using this functions
1.BDC_OPEN_GROUP
1.BDC_INSERT
2.BDC_CLOSE_GROUP
‎2007 Jun 25 10:55 AM
Hi,
Check this link.It will help you.
http://www.sap-img.com/abap/bdc-program-for-purchase-info-records.htm
‎2007 Jun 25 10:56 AM
hi senthil,
go thro this program. U can get a clear view of the session method.
REPORT DEMO1.
Following internal table is to upload flat file.
DATA: BEGIN OF ITAB OCCURS 0,
ID(10),
NAME(25),
CITY(25),
END OF ITAB.
*Following internal table BDCDATA is to pass date from internal table to session.
DATA: BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
Variables
DATA: DATE1 LIKE SY-DATUM. DATE1 = SY-DATUM - 1. This is for Hold Date
To upload flat file to internal table.
CALL FUNCTION UPLOAD
EXPORTING
FILE NAME = C:\FF.TXT
FILE TYPE = ASC
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
OTHERS = 6.
If sy-subrc = 0.
Calling Function to Create a Session
CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
CLIENT = SY-MANDT
GROUP = POTHURI
HOLDDATE = DATE1
KEEP = X
USER = SY-UNAME
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.
*--
LOOP AT ITAB
PERFORM GENERATE_DATA. Populating BDCDATA Table
CALL FUNCTION BDC_INSERT
EXPORTING
TCODE = TFBA
TABLES
DYNPROTAB = BDCTAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
REFRESH BDCTAB
ENDLOOP.
Calling function to close the session
CALL FUNCTION BDC_CLOSE_GROUP
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
Endif.
Endif.
&----
*& Form GENERATE_DATA
&----
Create BDC Data
&----
FORM GENERATE_DATA
Passing information for 1st screen on BDCDATA
BDCTAB-PROGRAM = SAPMTFBA.
BDCTAX-DYNPRO = 100.
BDCTAP-DYNBEGIN = X.
APPEND BCDTAB.CLEAR BDCTAB.
Passing field information to BDCDATA
BDCTAB-FNAM = SCUSTOM-ID
BDCTAB-FVAL = ITAB-ID.
APPEND BDCTAB.CLEAR BDCTAB.
Passing BDC_OKCODE to BDCDATA
BDCTAB-FNAM = BDC_OKCODE.
BDCTAB-FVAL = /5.
APPEND BDCTAB.CLEAR BDCTAB.
Passing screen information for next screen to BDCDATA
BDCTAB-PROGRAM = SAPMTFBA.
BDCTAB-DYNPRO = 200.
BDCTAB-DYNBEGIN = X.
APPEND BDCTAB.CLEAR BDCTAB.
Passing screen information to BDCDATA
BDCTAB-FNAM = SCUSTOM-NAME.
BDCTAB-FVAL = ITAB-NAME.
APPEND BDCTAB.CLEAR BDCTAB.
Passing screen information to BDCDATA
BDCTAB-FNAM = SCUSTOM-CITY.
BDCTAB-FVAL = ITAB-CITY.
APPEND BDCTAB.CLEAR BDCTAB.
Passing BDC_OKCODE to BDCDATA
BDCTAB-FNAM = BDC_OKCODE.
BDCTAB-FVAL = SAVE.
APPEND BDCTAB.CLEAR BDCTAB.
ENDFORM. GENERATE_DATA
Regards...
Arun.
Reward points if useful.
‎2007 Jun 25 10:58 AM
hi,
if u use this function modules then that means you r working session method.
1.BDC_OPEN_GROUP
u can pass parameters in this,
client,
group,
holddate,
keep,
user.
1.BDC_INSERT
in this,
internal table of bdcdata structure,
and Transaction code.
2.BDC_CLOSE_GROUP
just call this no need to define any parameters here.
reward points if useful,
regards,
seshu.
‎2007 Jun 25 10:59 AM
Hi Senthil,
Check this sample code.
&----
*& Report Z34331_BDC *
*& *
&----
*& Creating a test program for uplaoding a CSV or XLS file and pass *
*& the internal table value to a BDC program *
&----
REPORT Z34331_BDC.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*for excel file
PARAMETERS: P_IFILE TYPE RLGRAP-FILENAME.
*for csv and txt file
*PARAMETERS: p_ifile TYPE dxfile-filename.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-002.
PARAMETERS: P_SESS RADIOBUTTON GROUP G3 "create session
DEFAULT 'X' USER-COMMAND BDC,
P_CTU RADIOBUTTON GROUP G3. "call transaction
SELECTION-SCREEN END OF BLOCK B3.
*for csv and txt file
*DATA : BEGIN OF itab OCCURS 0,
str TYPE string,
END OF itab,
*for xls file
DATA : ITAB LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.
DATA : L_FILE TYPE STRING,
T_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
WA_BDCDATA LIKE LINE OF T_BDCDATA.
*----
AT SELECTION SCREEN ON VALUE REQUEST
*----
Value request for the filename.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IFILE.
PERFORM HELP_INPUT_FILE.
START-OF-SELECTION.
CLEAR L_FILE.
*for csv and txt file
l_file = p_ifile.
*for xls file
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_IFILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 2
I_END_ROW = 2
TABLES
INTERN = ITAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
*for csv and txt file
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_file
filetype = 'ASC'
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.
*Start new session
IF P_SESS = 'X'.
PERFORM BDC_OPEN.
ENDIF.
LOOP AT ITAB.
PERFORM CREAT_BATCH_INPUT.
PERFORM BDC_INSERT.
IF P_CTU = 'X'.
CALL TRANSACTION 'SE38' USING T_BDCDATA MODE 'A'.
ENDIF.
ENDLOOP.
IF P_SESS = 'X'.
PERFORM BDC_CLOSE .
IF SY-SUBRC EQ 0.
MESSAGE I001(ZM) WITH 'Session created check in transaction SM35'.
ENDIF.
ENDIF.
&----
*& Form bdc_open
&----
text
----
--> p1 text
<-- p2 text
----
FORM BDC_OPEN .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'ZMUK'
USER = SY-UNAME
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.
ENDFORM. " bdc_open
&----
*& Form creat_batch_input
&----
text
----
--> p1 text
<-- p2 text
----
FORM CREAT_BATCH_INPUT .
PERFORM BDC_DYNPRO USING 'SAPLWBABAP' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=STRT'.
*for csv and txt file
PERFORM bdc_field USING 'RS38M-PROGRAMM'
itab-str.
*for xls file
PERFORM BDC_FIELD USING 'RS38M-PROGRAMM'
ITAB-VALUE.
PERFORM BDC_FIELD USING 'RS38M-FUNC_EDIT'
'X'.
PERFORM BDC_DYNPRO USING 'SAPLSLVC_FULLSCREEN' '0500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=&F03'.
PERFORM BDC_DYNPRO USING 'SAPLWBABAP' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
*for csv and txt file
PERFORM bdc_field USING 'RS38M-PROGRAMM'
itab-str.
*for xls file
PERFORM BDC_FIELD USING 'RS38M-PROGRAMM'
ITAB-VALUE.
PERFORM BDC_FIELD USING 'RS38M-FUNC_EDIT'
'X'.
ENDFORM. " creat_batch_input
&----
*& Form bdc_insert
&----
text
----
--> p1 text
<-- p2 text
----
FORM BDC_INSERT .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'SE38'
TABLES
DYNPROTAB = T_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
ENDFORM. " bdc_insert
&----
*& Form bdc_dynpro
&----
text
----
-->P_0168 text
-->P_0169 text
----
FORM BDC_DYNPRO USING P_PROGRAM TYPE ANY
P_DYNPRO TYPE ANY.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = P_PROGRAM.
WA_BDCDATA-DYNPRO = P_DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO T_BDCDATA.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0179 text
-->P_0180 text
----
FORM BDC_FIELD USING P_FNAM TYPE ANY
P_FVAL TYPE ANY.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = P_FNAM.
WA_BDCDATA-FVAL = P_FVAL.
CONDENSE WA_BDCDATA-FVAL.
APPEND WA_BDCDATA TO T_BDCDATA.
ENDFORM. " bdc_field
&----
*& Form bdc_close
&----
text
----
--> p1 text
<-- p2 text
----
FORM BDC_CLOSE .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
ENDFORM. " bdc_close
*&----
**& Form help_input_file
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM HELP_INPUT_FILE .
DATA: LT_FILE_TABLE TYPE FILETABLE,
LA_FILE_TABLE LIKE LINE OF LT_FILE_TABLE,
L_RC TYPE I,
L_PCDSN TYPE CFFILE-FILENAME.
REFRESH LT_FILE_TABLE.
CLEAR LA_FILE_TABLE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
CHANGING
FILE_TABLE = LT_FILE_TABLE
RC = L_RC.
READ TABLE LT_FILE_TABLE INTO LA_FILE_TABLE INDEX 1.
L_PCDSN = LA_FILE_TABLE-FILENAME.
MOVE L_PCDSN TO P_IFILE.
ENDFORM. " help_input_file
‎2007 Jun 25 4:07 PM
Hi,
Check the program in the following link:
http://www.sap-img.com/abap/bdc-program-for-purchase-info-records.htm
Regards,
Bhaskar