Академический Документы
Профессиональный Документы
Культура Документы
Session Method:
1. Asynchronous Processing.
2. Synchronous database updates.
3. Transfer of data for multiple transactions. Using FM bdc_insert.
4. As compared to call transaction, this is slow.
5. Best suited for bulk transfer.
6. Automatic error handling.
7. Error logs are created.
8. The value of sy-subrc is never returned. Because records are stored temporary
in session and after the records are updated to the database.
9. You can store the sessions and it can be used for later
processing.
10. it can handle small amount of
data as well as large amount of data.
11. Function modules :
F4_FILENAME ( Open the legacy file [.txt or .xls]) .
TEXT_CONVERT_XSL_TO_SAP ( Convert the .xls file to sap format) : Using
for only .xls files.
GUI_UPLOAD : Using for only .txt files.
BDC_OPEN_GROUP : To create a new session.(No session 1).
BDC_INSERT : To add a transaction to a batch input session.
BDC_CLOSE_GROUP : To close the session.
Example 1: Session method ( .txt file) Customer(xd01) master creation:
report ZRBDC_XD01_RAJA no standard page heading line-size 255.
*include bdcrecx1.
data: begin of record OCCURS 0,
* data element: BUKRS
BUKRS_001(004),
IMPORTING
FILE_NAME
= FILE.
FILE1 = FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= FILE1
FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
* HEADER_LENGTH
=0
* READ_BY_LINE
= 'X'
* DAT_MODE
=''
* IMPORTING
* FILELENGTH
=
* HEADER
=
tables
data_tab
= RECORD
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.
ENDIF.
***************************************************
**************OPEN SESSION*************************
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT
= SY-MANDT
* DEST
= FILLER8
GROUP
= 'demo'
"LOGON USERNAME
* HOLDDATE
= FILLER8
KEEP
= 'X'
USER
= SY-UNAME
* RECORD
= FILLER1
* PROG
= SY-CPROG
* 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.
*** End generated data section ***
start-of-selection.
*perform open_group.
LOOP AT RECORD.
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
record-PSTLZ_007.
using 'KNA1-LAND1'
record-LAND1_008.
using 'KNA1-REGIO'
record-REGIO_009.
using 'KNA1-SPRAS'
record-SPRAS_010.
using 'SAPMF02D' '0120'.
using 'BDC_CURSOR'
'KNA1-LIFNR'.
using 'BDC_OKCODE'
'/00'.
using 'SAPMF02D' '0125'.
using 'BDC_CURSOR'
'KNA1-NIELS'.
using 'BDC_OKCODE'
'/00'.
using 'SAPMF02D' '0130'.
using 'BDC_CURSOR'
'KNBK-BANKS(01)'.
using 'BDC_OKCODE'
'=ENTR'.
using 'SAPMF02D' '0340'.
using 'BDC_CURSOR'
'RF02D-KUNNR'.
using 'BDC_OKCODE'
'=ENTR'.
using 'SAPMF02D' '0370'.
using 'BDC_CURSOR'
'RF02D-KUNNR'.
using 'BDC_OKCODE'
'=ENTR'.
using 'KNA1-CIVVE'
record-CIVVE_011.
using 'SAPMF02D' '0360'.
using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
using 'BDC_OKCODE'
'=ENTR'.
using 'SAPMF02D' '0210'.
using 'BDC_CURSOR'
'KNB1-AKONT'.
using 'BDC_OKCODE'
'/00'.
using 'KNB1-AKONT'
record-AKONT_012.
using 'SAPMF02D' '0215'.
using 'BDC_CURSOR'
'KNB1-ZTERM'.
using 'BDC_OKCODE'
'/00'.
using 'SAPMF02D' '0220'.
perform bdc_field
using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro
using 'SAPMF02D' '0230'.
perform bdc_field
using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
*perform bdc_transaction using 'XD01'.
*****************************************************
****************USE BDC INSERT FM***********************
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE
= 'XD01'
* POST_LOCAL
= NOVBLOCAL
* PRINTING
= NOPRINT
* SIMUBATCH
=''
* CTUPARAMS
=''
TABLES
dynprotab
= IT_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 it_bdcdata.
ENDLOOP.
************************************************************
*perform close_group.
******************CALL SESSION CLOSE FM*********************
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN
=1
QUEUE_ERROR
=2
OTHERS
=3
.
IF sy-subrc <> 0.
mr
RAJA50 IN
NAGERCOIL
629401
IN
18
EN
mr
RAJA51 IN
NAGERCOIL
629401
IN
18
EN
* I_FIELD_SEPERATOR
=
* I_LINE_HEADER
=
I_TAB_RAW_DATA
= IT_RAW
I_FILENAME
= PATH
TABLES
I_TAB_CONVERTED_DATA
= RECORD
* EXCEPTIONS
* CONVERSION_FAILED
=1
* OTHERS
=2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
***************************************************
**************OPEN SESSION*************************
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT
= SY-MANDT
* DEST
= FILLER8
GROUP
= 'demo'
"LOGON USERNAME
* HOLDDATE
= FILLER8
KEEP
= 'X'
USER
= SY-UNAME
* RECORD
= FILLER1
* PROG
= SY-CPROG
* 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.
*** End generated data section ***
start-of-selection.
*perform open_group.
LOOP AT RECORD.
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
'=ENTR'.
using 'SAPMF02D' '0370'.
using 'BDC_CURSOR'
'RF02D-KUNNR'.
perform bdc_field
using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field
using 'KNA1-CIVVE'
record-CIVVE_011.
perform bdc_dynpro
using 'SAPMF02D' '0360'.
perform bdc_field
using 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
perform bdc_field
using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro
using 'SAPMF02D' '0210'.
perform bdc_field
using 'BDC_CURSOR'
'KNB1-AKONT'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_field
using 'KNB1-AKONT'
record-AKONT_012.
perform bdc_dynpro
using 'SAPMF02D' '0215'.
perform bdc_field
using 'BDC_CURSOR'
'KNB1-ZTERM'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro
using 'SAPMF02D' '0220'.
perform bdc_field
using 'BDC_CURSOR'
'KNB5-MAHNA'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro
using 'SAPMF02D' '0230'.
perform bdc_field
using 'BDC_CURSOR'
'KNB1-VRSNR'.
perform bdc_field
using 'BDC_OKCODE'
'/00'.
*perform bdc_transaction using 'XD01'.
perform bdc_dynpro
perform bdc_field
*****************************************************
****************USE BDC INSERT FM***********************
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE
= 'XD01'
* POST_LOCAL
= NOVBLOCAL
* PRINTING
= NOPRINT
* SIMUBATCH
=''
* CTUPARAMS
=''
TABLES
dynprotab
= IT_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 it_bdcdata.
ENDLOOP.
************************************************************
*perform close_group.
******************CALL SESSION CLOSE FM*********************
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN
=1
QUEUE_ERROR
=2
OTHERS
=3
.
IF sy-subrc <> 0.
WRITE:'SESSION CREATED go to sm35'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
************************************************************
************FORM BDC_DYPRO**********************************
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM.
************************************************************
*****************FORM BDC_FIELDS**************************
FORM BDC_FIELD USING FNAM FVAL.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM.
************************************************************
mr
RAJA50 IN
NAGERCOIL
629401
IN
18
EN
mr
RAJA51 IN
NAGERCOIL
629401
IN
18
EN