BDC Session Method


Scenario: Uploading customer master records to SAP system by BDC session method.

Session Method:

  • Session method is always synchronous.
  • Message is handled automatically by the session log.
  • Mostly used for huge amount of data upload.
  • Multiple Trasactions can be processed by a single session method.

Step1. The recording of XD01 (Customer Master Creation ) from SHDB transaction is given below.

bdc

Step2. Go to SE38 and create a report program for bdc session method.

Step3. Provide the below code & activate the program.

 


 

REPORT  zbdc_session_meth_cust_master.

TYPES : BEGIN OF ty_cust,

            comp_code TYPE bukrs,

            sales_org TYPE vkorg,

            dist_chnl TYPE vtweg,

            divi TYPE spart,

            acc_grp TYPE ktokd,

            title TYPE  anred,

            land TYPE land1,

            region TYPE regio,

            lang TYPE spras,

            ord_prob TYPE awahr,

            curr TYPE waers,

           del_prio TYPE lprio,

           shipp_cond TYPE vsbed,

           delv_plant TYPE vwerk,

        END OF ty_cust.

DATA : lt_excel TYPE TABLE OF alsmex_tabline,

              ls_excel TYPE alsmex_tabline,

              lt_cust TYPE TABLE OF ty_cust,

              ls_cust TYPE ty_cust,

              lt_bdc TYPE TABLE OF bdcdata,

              ls_bdc TYPE bdcdata,

              session_name TYPE apqi-groupid.

PARAMETERS : path TYPE rlgrap-filename OBLIGATORY DEFAULT ‘C:\Users\ratn\Desktop\bdc with call transaction\LEAGCY CUST RECORD’.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR path .

  CALL FUNCTION ‘F4_FILENAME’

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = ‘PATH’

    IMPORTING

      file_name     = path.

START-OF-SELECTION.

  CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’

    EXPORTING

      filename                = path

      i_begin_col             = 1

      i_begin_row             = 2

      i_end_col               = 50

      i_end_row               = 50

    TABLES

      intern                  = lt_excel

    EXCEPTIONS

      inconsistent_parameters = 1

      upload_ole              = 2

      OTHERS                  = 3.

  IF sy-subrc <> 0.

* Implement suitable error handling here

  ENDIF.

  LOOP AT lt_excel INTO ls_excel.

    CASE ls_excel-col.

      WHEN ‘001’.

        ls_cust-comp_code = ls_excel-value.

      WHEN ‘002’.

        ls_cust-sales_org  = ls_excel-value.

      WHEN ‘003’.

        ls_cust-dist_chnl  = ls_excel-value.

      WHEN ‘004’.

        ls_cust-divi  = ls_excel-value.

      WHEN ‘005’.

        ls_cust-acc_grp  = ls_excel-value.

      WHEN ‘006’.

        ls_cust-title  = ls_excel-value.

      WHEN ‘007’.

        ls_cust-land  = ls_excel-value.

      WHEN ‘008’.

        ls_cust-region  = ls_excel-value.

      WHEN ‘009’.

        ls_cust-lang  = ls_excel-value.

      WHEN ‘010’.

        ls_cust-ord_prob  = ls_excel-value.

      WHEN ‘011’.

        ls_cust-curr  = ls_excel-value.

      WHEN ‘012’.

        ls_cust-del_prio  = ls_excel-value.

      WHEN ‘013’.

        ls_cust-shipp_cond  = ls_excel-value.

      WHEN ‘014’.

        ls_cust-delv_plant  = ls_excel-value.

      WHEN OTHERS.

    ENDCASE.

    AT END OF row.

      APPEND ls_cust TO lt_cust.

      CLEAR : ls_cust, ls_excel.

    ENDAT.

  ENDLOOP.

  PERFORM bdc_open_group.
PERFORM bdc_create_group.
PERFORM bdc_close_group.

*&———————————————————————*

*&      Form  BDC_OPEN_GROUP

*&———————————————————————*

 

FORM bdc_open_group .

  CONCATENATE sy-datum sy-uzeit INTO session_name .

  CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTING
client                    = sy-mandt
*   DEST                      = FILLER8
group                     = session_name
*   HOLDDATE                  = FILLER8
keep                      = ‘x’
user                      = sy-uname
*   RECORD                    = FILLER1
prog                      = sy-cprog
*   DCPFM                     = ‘%’
*   DATFM                     = ‘%’
* 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.

* Implement suitable error handling here

  ENDIF.

ENDFORM.                    ” BDC_OPEN_GROUP

*&———————————————————————*

*&      Form  BDC_CREATE_GROUP

*&———————————————————————*

 

FORM bdc_create_group .

  IF lt_cust IS NOT INITIAL.

    LOOP AT lt_cust INTO ls_cust.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0100’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘RF02D-KTOKD’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : fill_screen USING ‘RF02D-BUKRS’ ls_cust-comp_code.

      PERFORM : fill_screen USING ‘RF02D-VKORG’ ls_cust-sales_org.

      PERFORM : fill_screen USING ‘RF02D-VTWEG’ ls_cust-dist_chnl.

      PERFORM : fill_screen USING ‘RF02D-SPART’ ls_cust-divi.

      PERFORM : fill_screen USING ‘RF02D-KTOKD’ ls_cust-acc_grp.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0110’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNA1-SPRAS’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : fill_screen USING ‘KNA1-ANRED’ ls_cust-title.

      PERFORM : fill_screen USING ‘KNA1-LAND1’ ls_cust-land.

      PERFORM : fill_screen USING ‘KNA1-REGIO’ ls_cust-region.

      PERFORM : fill_screen USING ‘KNA1-SPRAS’ ls_cust-lang.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0120’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNA1-LIFNR’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0125’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNA1-NIELS’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0130’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNBK-BANKS(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0340’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVA-ABLAD(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0370’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNEX-LNDEX(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      PERFORM : fill_screen USING ‘KNA1-CIVVE’ ‘X’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0360’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVK-NAMEV(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0210’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNB1-AKONT’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0215’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNB1-ZTERM’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0220’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNB5-MAHNA’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0230’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNB1-VRSNR’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0310’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVV-BZIRK’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : fill_screen USING ‘KNVV-AWAHR’ ls_cust-ord_prob.

      PERFORM : fill_screen USING ‘KNVV-WAERS’ ls_cust-curr.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0315’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVV-VWERK’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘/00’.

      PERFORM : fill_screen USING ‘KNVV-LPRIO’ ls_cust-del_prio.

      PERFORM : fill_screen USING ‘KNVV-KZAZU’ ‘X’.

      PERFORM : fill_screen USING ‘KNVV-VSBED’ ls_cust-shipp_cond.

      PERFORM : fill_screen USING ‘KNVV-VWERK’ ls_cust-delv_plant.

      PERFORM : fill_screen USING ‘KNVV-ANTLF’ ‘9’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0320’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVV-PERFK’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTS’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘1350’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘KNVI-TAXKD(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      PERFORM : call_screen USING ‘SAPMF02D’ ‘0324’ ‘X’.

      PERFORM : fill_screen USING ‘BDC_CURSOR’ ‘*TPART-VTEXT(01)’.

      PERFORM : fill_screen USING ‘BDC_OKCODE’ ‘=ENTR’.

      CALL FUNCTION ‘BDC_INSERT’
EXPORTING
tcode            = ‘XD01’
*         POST_LOCAL       = NOVBLOCAL
*         PRINTING         = NOPRINT
*         SIMUBATCH        = ‘ ‘
*         CTUPARAMS        = ‘ ‘
TABLES
dynprotab        = lt_bdc
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.

      ENDIF.

    ENDLOOP.

    WRITE:/ ‘Please check tcode- SM35 for the session: ‘, session_name.

  ELSE.

    MESSAGE ‘No record to Upload’ TYPE ‘I’.

  ENDIF.

ENDFORM.                    ” BDC_CREATE_GROUP

*&———————————————————————*

*&      Form  BDC_CLOSE_GROUP

*&———————————————————————*

 

FORM bdc_close_group .

  CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS
not_open    = 1
queue_error = 2
OTHERS      = 3.

  IF sy-subrc <> 0.

* Implement suitable error handling here

  ENDIF.

ENDFORM.                    ” BDC_CLOSE_GROUP

*&———————————————————————*

*&      Form  CALL_SCREEN

*&———————————————————————*

 

FORM call_screen  USING pgm

                                        dyn

                                        dyn_bgn.

  ls_bdc-program = pgm.

  ls_bdc-dynpro = dyn.

  ls_bdc-dynbegin = dyn_bgn.

  APPEND ls_bdc TO lt_bdc.

  CLEAR ls_bdc.

ENDFORM.                    ” CALL_SCREEN

*&———————————————————————*

*&      Form  FILL_SCREEN

*&———————————————————————*

 

FORM fill_screen  USING nam

                                       val.

  ls_bdc-fnam = nam.

  ls_bdc-fval = val.

  APPEND ls_bdc TO lt_bdc.

  CLEAR ls_bdc.

ENDFORM.                    ” FILL_SCREEN


 

Step 3.1. The excel file format should be as follows.

Step4.  Run the report and select the excel file and execute it.

Step5. The output of teh report is as follows.

Step6. Go to SM35 tcode.

Step7. Select the Session and clcik on the process button.

Step8. Select the radio button as per necessary and click on Process button.

Step9. Hit Enter key from key board to continue.

Step10. Hit Enter key from key board to continue.

Step11.Hit Enter key from key board to continue.

Step12.Hit Enter key from key board to continue.

 Step13.Hit Enter key from key board to continue.

Step14.Hit Enter key from key board to continue.

Step15. Hit Enter key from key board to continue.

Step16. Hit Enter key from key board to continue.

 Step17. Hit Enter key from key board to continue.

Step18. Hit Enter key from key board to continue.

Step19. Hit Enter key from key board to continue.

Step20. Hit Enter key from key board to continue.

Step21. Hit Enter key from key board to continue.

Step22.Hit Enter key from key board to continue.

Step23.Hit Enter key from key board to continue.

Step24.Hit Enter key from key board to continue.

Step25.Hit Enter key from key board to continue.

Step26.Hit Enter key from key board to continue. After processing all the reocrd the below screen will apprear. Now to see the message log select the line and click on Analysis button.

Step27. The The transaction XD01 is called thrice as our excel contained 3 records of customer master.

Step28. Click on the third tab and it displays what are the customer numbers are created.


 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s