BDC Session Method Program

BDC - Session Method
BDC (Batch Data Communication):
       It Transfers or upload the data’s(records) from Legacy(Non SAP) system to SAP system.
 Batch input means bulk amount of data. It is a programming method.

Types: It has two types
 1. CALL TRANSACTION METHOD.
 2. SESSION METHOD (CLASSICAL).

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),
* data element: KTOKD
        KTOKD_002(004),
* data element: ANRED
        ANRED_003(015),
* data element: NAME1_GP
        NAME1_004(035),
* data element: SORTL
        SORTL_005(010),
* data element: ORT01_GP
        ORT01_006(035),
* data element: PSTLZ
        PSTLZ_007(010),
* data element: LAND1_GP
        LAND1_008(003),
* data element: REGIO
        REGIO_009(003),
* data element: SPRAS
        SPRAS_010(002),
* data element: CIVVE
        CIVVE_011(001),
* data element: AKONT
        AKONT_012(010),
      end of record.

***************GLOBAL STR BDCDATA***********************

DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
      WA_BDCDATA TYPE BDCDATA.

DATA: FILE1 TYPE STRING.

********************************************************

******************UPLOAD FLAT FILE**********************

******************SELECTION SCREEN**********************

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.

PARAMETERS: FILE TYPE LOCALFILE OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.

**********************************************************

******************FUNCTION MODULE************************

CALL FUNCTION 'F4_FILENAME'
 EXPORTING
   PROGRAM_NAME        = SYST-CPROG
   DYNPRO_NUMBER       = SYST-DYNNR
*   FIELD_NAME          = ' '
 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      using 'SAPMF02D' '0100'.
perform bdc_field       using 'BDC_CURSOR'
                              'RF02D-KTOKD'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'RF02D-BUKRS'
                              record-BUKRS_001.
perform bdc_field       using 'RF02D-KTOKD'
                              record-KTOKD_002.
perform bdc_dynpro      using 'SAPMF02D' '0110'.
perform bdc_field       using 'BDC_CURSOR'
                              'KNA1-SPRAS'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'KNA1-ANRED'
                              record-ANRED_003.
perform bdc_field       using 'KNA1-NAME1'
                              record-NAME1_004.
perform bdc_field       using 'KNA1-SORTL'
                              record-SORTL_005.
perform bdc_field       using 'KNA1-ORT01'
                              record-ORT01_006.
perform bdc_field       using 'KNA1-PSTLZ'
                              record-PSTLZ_007.
perform bdc_field       using 'KNA1-LAND1'
                              record-LAND1_008.
perform bdc_field       using 'KNA1-REGIO'
                              record-REGIO_009.
perform bdc_field       using 'KNA1-SPRAS'
                              record-SPRAS_010.
perform bdc_dynpro      using 'SAPMF02D' '0120'.
perform bdc_field       using 'BDC_CURSOR'
                              'KNA1-LIFNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_dynpro      using 'SAPMF02D' '0125'.
perform bdc_field       using 'BDC_CURSOR'
                              'KNA1-NIELS'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_dynpro      using 'SAPMF02D' '0130'.
perform bdc_field       using 'BDC_CURSOR'
                              'KNBK-BANKS(01)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=ENTR'.
perform bdc_dynpro      using 'SAPMF02D' '0340'.
perform bdc_field       using 'BDC_CURSOR'
                              'RF02D-KUNNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '=ENTR'.
perform bdc_dynpro      using 'SAPMF02D' '0370'.
perform bdc_field       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'.



*****************************************************
****************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.

************************************************************
record: (.txt file):
1000   YB01   mr      RAJA50 IN     NAGERCOIL    629401          IN       18      EN      X        19103103
1000   YB01   mr      RAJA51 IN     NAGERCOIL    629401          IN       18      EN      X        19103103

Popular posts from this blog

How to create Interactive Report in SAP ABAP

How to create ALV Interactive Report in SAP ABAP

BDC Call Transaction Method Program