Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Need Help in BDC Interface Report

Former Member
0 Likes
2,021

I am getting some errors, which I can not understand, so i am updating the requirements and my program along with the LOG of errors. Please help

Requiement:- Design and Code a BDC program for Vendor Master, it will update records in Vendor Master or creates new Vendor depending on the source data file of external system.

My Code:-

*&---------------------------------------------------------------------*

*& Report  ZINDRA_ABB_R

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zindra_abb_r.

TYPES: BEGIN OF ty_xk01,

       lifnr TYPE rf02k-lifnr,

       bukrs TYPE rf02k-bukrs,

       ekorg TYPE rf02k-ekorg,

       ktokk TYPE rf02k-ktokk,

       anred TYPE lfa1-anred,

       name1 TYPE lfa1-name1,

       sortl TYPE lfa1-sortl,

       land1 TYPE lfa1-land1,

       akont TYPE lfb1-akont,

       fdgrv TYPE lfb1-fdgrv,

       waers TYPE lfm1-waers,

      END OF ty_xk01,

      BEGIN OF ty_xk02,

       lifnr TYPE rf02k-lifnr,

       bukrs TYPE rf02k-bukrs,

       ekorg TYPE rf02k-ekorg,

       anred TYPE lfa1-anred,

       name1 TYPE lfa1-name1,

       sortl TYPE lfa1-sortl,

       land1 TYPE lfa1-land1,

      END OF ty_xk02.

DATA: it_xk01 TYPE STANDARD TABLE OF ty_xk01,

       wa_xk01 TYPE ty_xk01,

      it_Xk02 TYPE STANDARD TABLE OF ty_xk02,

      wa_xk02 TYPE ty_xk02,

      it_bdcdata TYPE STANDARD TABLE OF bdcdata,

      wa_bdcdata TYPE bdcdata,

      lv_file TYPE string.

PARAMETERS: p_file1 TYPE rlgrap-filename,

            p_file2 TYPE rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = 'P_FILE1'

    IMPORTING

      file_name     = p_file1.

  .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file2.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = 'P_FILE'

    IMPORTING

      file_name     = p_file2.

START-OF-SELECTION.

  lv_file = p_file1.

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename                      = lv_file

     filetype                      = 'ASC'

     has_field_separator           = '#'

*   HEADER_LENGTH                 = 0

*   READ_BY_LINE                  = 'X'

*   DAT_MODE                      = ' '

*   CODEPAGE                      = ' '

*   IGNORE_CERR                   = ABAP_TRUE

*   REPLACEMENT                   = '#'

*   CHECK_BOM                     = ' '

*   VIRUS_SCAN_PROFILE            =

*   NO_AUTH_CHECK                 = ' '

* IMPORTING

*   FILELENGTH                    =

*   HEADER                        =

    TABLES

      data_tab                      = it_xk01

   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.

  CLEAR lv_file.

  lv_file = p_file2.

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename                      = lv_file

     filetype                      = 'ASC'

     has_field_separator           = '#'

*     HEADER_LENGTH                 = 0

*     READ_BY_LINE                  = 'X'

*     DAT_MODE                      = ' '

*     CODEPAGE                      = ' '

*     IGNORE_CERR                   = ABAP_TRUE

*     REPLACEMENT                   = '#'

*     CHECK_BOM                     = ' '

*     VIRUS_SCAN_PROFILE            =

*     NO_AUTH_CHECK                 = ' '

*   IMPORTING

*     FILELENGTH                    =

*     HEADER                        =

    TABLES

      data_tab                      = it_xk02

   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.

  CALL FUNCTION 'BDC_OPEN_GROUP'

   EXPORTING

     client                    = sy-mandt

*     dest                      = filler8

     group                     = 'zindra4'

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

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  LOOP AT it_xk01 INTO wa_xk01.

    CLEAR wa_bdcdata.

    REFRESH it_bdcdata.

* include bdcrecx1.

*

*start-of-selection.

*

*perform open_group.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0100'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-KTOKK'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02K-LIFNR'

                                   wa_xk01-lifnr.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                   wa_xk01-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                   wa_xk01-ekorg.

    PERFORM bdc_field       USING 'RF02K-KTOKK'

                                   wa_xk01-ktokk.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-LAND1'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFA1-ANRED'

                                   wa_xk01-anred.

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                   wa_xk01-name1.

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                   wa_xk01-sortl.

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                   wa_xk01-land1.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-KUNNR'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFBK-BANKS(01)'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '=ENTR'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0210'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB1-FDGRV'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFB1-AKONT'

                                   wa_xk01-akont.

    PERFORM bdc_field       USING 'LFB1-FDGRV'

                                   wa_xk01-fdgrv.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0215'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB1-ZTERM'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0220'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB5-MAHNA'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0310'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFM1-WAERS'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFM1-WAERS'

                                   wa_xk01-waers.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0320'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-LIFNR'.

*perform bdc_field       using 'BDC_OKCODE'

*                              '=ENTR'.

*perform bdc_transaction using 'XK01'.

    CALL FUNCTION 'BDC_INSERT'

     EXPORTING

       tcode                  = 'XK01'

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

  ENDLOOP.

  LOOP AT it_xk02 INTO wa_xk02.

    CLEAR wa_bdcdata.

    REFRESH it_bdcdata.

*

*include bdcrecx1.

*

*start-of-selection.

*

*perform open_group.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0101'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-D0110'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02K-LIFNR'

                                   wa_xk02-lifnr.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                   wa_xk02-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                   wa_xk02-ekorg.

    PERFORM bdc_field       USING 'RF02K-D0110'

                                  'X'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-NAME1'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFA1-ANRED'

                                   wa_xk02-anred.

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                   wa_xk02-name1.

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                   wa_xk02-sortl.

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                   wa_xk02-land1.

*perform bdc_transaction using 'XK02'.

*

*perform close_group.

    CALL FUNCTION 'BDC_INSERT'

     EXPORTING

       tcode                  = 'XK02'

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

  ENDLOOP.

  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.

*----------------------------------------------------------------------*

*        Start new screen                                              *

*----------------------------------------------------------------------*

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.                    "BDC_DYNPRO

*----------------------------------------------------------------------*

*        Insert field                                                  *

*----------------------------------------------------------------------*

FORM bdc_field USING fnam fval.

*  IF fval <> nodata.

    CLEAR wa_bdcdata.

    wa_bdcdata-fnam = fnam.

    wa_bdcdata-fval = fval.

    APPEND wa_bdcdata TO it_bdcdata.

*  ENDIF.

ENDFORM.                    "BDC_FIELD

Flat Files:-

FOR CREATING VENDOR
00000089914300sg0001CompanyabbABBIT31000a2inr
00000089924300sg0001CompanyABBABBIT31000a2inr
00000089934300sg0001CompanyABBABBIT31000a2inr
00000089944300sg0001CompanyABBABBIT31000a2inr
00000089954300sg0001CompanyABBABBIT31000a2inr
00000089964300sg0001CompanyABBABBIT31000a2inr
00000089974300sg0001CompanyABBABBIT31000a2inr
00000089984300sg0001CompanyABBABBIT31000a2inr
00000089994300sg0001CompanyABBABBIT31000a2inr

FOR CHANGING VENDOR
00000089924300sg0001CompanyABH ABBIT
00000089934300sg0001CompanyABH ABBIT
00000089944300sg0001CompanyABH ABBIT
00000089954300sg0001CompanyABH ABBIT

TWO LOGS ARE ATTACHED AS PICTURES

THANKS IN ADVANCE

.


I am getting some errors, which I can not understand, so i am updating the requirements and my program along with the LOG of errors. Please help

Requiement:- Design and Code a BDC program for Vendor Master, it will update records in Vendor Master or creates new Vendor depending on the source data file of external system.

My Code:-

*&---------------------------------------------------------------------*

*& Report  ZINDRA_ABB_R

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zindra_abb_r.

TYPES: BEGIN OF ty_xk01,

       lifnr TYPE rf02k-lifnr,

       bukrs TYPE rf02k-bukrs,

       ekorg TYPE rf02k-ekorg,

       ktokk TYPE rf02k-ktokk,

       anred TYPE lfa1-anred,

       name1 TYPE lfa1-name1,

       sortl TYPE lfa1-sortl,

       land1 TYPE lfa1-land1,

       akont TYPE lfb1-akont,

       fdgrv TYPE lfb1-fdgrv,

       waers TYPE lfm1-waers,

      END OF ty_xk01,

      BEGIN OF ty_xk02,

       lifnr TYPE rf02k-lifnr,

       bukrs TYPE rf02k-bukrs,

       ekorg TYPE rf02k-ekorg,

       anred TYPE lfa1-anred,

       name1 TYPE lfa1-name1,

       sortl TYPE lfa1-sortl,

       land1 TYPE lfa1-land1,

      END OF ty_xk02.

DATA: it_xk01 TYPE STANDARD TABLE OF ty_xk01,

       wa_xk01 TYPE ty_xk01,

      it_Xk02 TYPE STANDARD TABLE OF ty_xk02,

      wa_xk02 TYPE ty_xk02,

      it_bdcdata TYPE STANDARD TABLE OF bdcdata,

      wa_bdcdata TYPE bdcdata,

      lv_file TYPE string.

PARAMETERS: p_file1 TYPE rlgrap-filename,

            p_file2 TYPE rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = 'P_FILE1'

    IMPORTING

      file_name     = p_file1.

  .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file2.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = 'P_FILE'

    IMPORTING

      file_name     = p_file2.

START-OF-SELECTION.

  lv_file = p_file1.

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename                      = lv_file

     filetype                      = 'ASC'

     has_field_separator           = '#'

*   HEADER_LENGTH                 = 0

*   READ_BY_LINE                  = 'X'

*   DAT_MODE                      = ' '

*   CODEPAGE                      = ' '

*   IGNORE_CERR                   = ABAP_TRUE

*   REPLACEMENT                   = '#'

*   CHECK_BOM                     = ' '

*   VIRUS_SCAN_PROFILE            =

*   NO_AUTH_CHECK                 = ' '

* IMPORTING

*   FILELENGTH                    =

*   HEADER                        =

    TABLES

      data_tab                      = it_xk01

   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.

  CLEAR lv_file.

  lv_file = p_file2.

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename                      = lv_file

     filetype                      = 'ASC'

     has_field_separator           = '#'

*     HEADER_LENGTH                 = 0

*     READ_BY_LINE                  = 'X'

*     DAT_MODE                      = ' '

*     CODEPAGE                      = ' '

*     IGNORE_CERR                   = ABAP_TRUE

*     REPLACEMENT                   = '#'

*     CHECK_BOM                     = ' '

*     VIRUS_SCAN_PROFILE            =

*     NO_AUTH_CHECK                 = ' '

*   IMPORTING

*     FILELENGTH                    =

*     HEADER                        =

    TABLES

      data_tab                      = it_xk02

   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.

  CALL FUNCTION 'BDC_OPEN_GROUP'

   EXPORTING

     client                    = sy-mandt

*     dest                      = filler8

     group                     = 'zindra4'

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

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  LOOP AT it_xk01 INTO wa_xk01.

    CLEAR wa_bdcdata.

    REFRESH it_bdcdata.

* include bdcrecx1.

*

*start-of-selection.

*

*perform open_group.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0100'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-KTOKK'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02K-LIFNR'

                                   wa_xk01-lifnr.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                   wa_xk01-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                   wa_xk01-ekorg.

    PERFORM bdc_field       USING 'RF02K-KTOKK'

                                   wa_xk01-ktokk.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-LAND1'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFA1-ANRED'

                                   wa_xk01-anred.

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                   wa_xk01-name1.

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                   wa_xk01-sortl.

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                   wa_xk01-land1.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-KUNNR'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFBK-BANKS(01)'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '=ENTR'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0210'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB1-FDGRV'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFB1-AKONT'

                                   wa_xk01-akont.

    PERFORM bdc_field       USING 'LFB1-FDGRV'

                                   wa_xk01-fdgrv.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0215'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB1-ZTERM'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0220'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFB5-MAHNA'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0310'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFM1-WAERS'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFM1-WAERS'

                                   wa_xk01-waers.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0320'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-LIFNR'.

*perform bdc_field       using 'BDC_OKCODE'

*                              '=ENTR'.

*perform bdc_transaction using 'XK01'.

    CALL FUNCTION 'BDC_INSERT'

     EXPORTING

       tcode                  = 'XK01'

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

  ENDLOOP.

  LOOP AT it_xk02 INTO wa_xk02.

    CLEAR wa_bdcdata.

    REFRESH it_bdcdata.

*

*include bdcrecx1.

*

*start-of-selection.

*

*perform open_group.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0101'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-D0110'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02K-LIFNR'

                                   wa_xk02-lifnr.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                   wa_xk02-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                   wa_xk02-ekorg.

    PERFORM bdc_field       USING 'RF02K-D0110'

                                  'X'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-NAME1'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'LFA1-ANRED'

                                   wa_xk02-anred.

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                   wa_xk02-name1.

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                   wa_xk02-sortl.

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                   wa_xk02-land1.

*perform bdc_transaction using 'XK02'.

*

*perform close_group.

    CALL FUNCTION 'BDC_INSERT'

     EXPORTING

       tcode                  = 'XK02'

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

  ENDLOOP.

  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.

*----------------------------------------------------------------------*

*        Start new screen                                              *

*----------------------------------------------------------------------*

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.                    "BDC_DYNPRO

*----------------------------------------------------------------------*

*        Insert field                                                  *

*----------------------------------------------------------------------*

FORM bdc_field USING fnam fval.

*  IF fval <> nodata.

    CLEAR wa_bdcdata.

    wa_bdcdata-fnam = fnam.

    wa_bdcdata-fval = fval.

    APPEND wa_bdcdata TO it_bdcdata.

*  ENDIF.

ENDFORM.                    "BDC_FIELD

Flat Files:-

FOR CREATING VENDOR
00000089914300sg0001CompanyabbABBIT31000a2inr
00000089924300sg0001CompanyABBABBIT31000a2inr
00000089934300sg0001CompanyABBABBIT31000a2inr
00000089944300sg0001CompanyABBABBIT31000a2inr
00000089954300sg0001CompanyABBABBIT31000a2inr
00000089964300sg0001CompanyABBABBIT31000a2inr
00000089974300sg0001CompanyABBABBIT31000a2inr
00000089984300sg0001CompanyABBABBIT31000a2inr
00000089994300sg0001CompanyABBABBIT31000a2inr

FOR CHANGING VENDOR
00000089924300sg0001CompanyABH ABBIT
00000089934300sg0001CompanyABH ABBIT
00000089944300sg0001CompanyABH ABBIT
00000089954300sg0001CompanyABH ABBIT

TWO LOGS ARE ATTACHED AS PICTURES

THANKS IN ADVANCE

.


9 REPLIES 9
Read only

Former Member
0 Likes
1,864

Hi Indranil,

You have missed some of the mandatory field which must be filled . Please check .

Because of those mandatory fields you are getting some errors  ( Account group etc ).

And the length in your internal table and the length in your tcode field is different (LIFNR) .

Before going to recording first check all the mandatory fields. then you record.

Then you will not get these kind of errors.

Regards,

Ramya R

Read only

0 Likes
1,864

While recoding I given values for all the mandatory fields, and I am quite sure about that, as the recording was successful. But I have a confusion about the length of the Vendor Acc No. (LIFNR) because it has two domains, LIFNR in LFA1 table with 10 CHAR and  other one is LIF16 which is in RF02K standard structure which has 16 CHAR. Now the confusions are:-

  1. where is the rf02k structure is used?
  2. though during recording it is showing the LIFNR of rf02k, still it is not taking the input of 16 Char.

I hope my point is clear to you.... Thank you 🙂

Read only

0 Likes
1,864

Hi Indranil,

then try with the length 16.

regards,

Ramya R

Read only

che_eky
Active Contributor
0 Likes
1,864

Did you explore using the SAP standard vendor upload program RFBIKR00?

Read only

Former Member
0 Likes
1,864

No..... I have written a custom BDC Report using session method

Read only

Former Member
0 Likes
1,864

Hello,

Plz write this with "perform transaction" statement, Its working fine.

Regards,

Akg

Read only

Former Member
0 Likes
1,864

Hello ,

I am attching my sample program plz try this.

REPORT z_bdc_xk01
       NO STANDARD PAGE HEADING LINE-SIZE 255.



TABLES : t100.

DATA : BEGIN OF t_vend OCCURS 0,
         bukrs      LIKE rf02k-bukrs,           "Company Code
         ekorg      LIKE rf02k-ekorg,           "Purchasing organization
         ktokk      LIKE rf02k-ktokk,           "Vendor account group
         title_medi LIKE sza1_d0100-title_medi, "Title text
         name1      LIKE addr1_data-name1,                  "Name 1
         name2      LIKE addr1_data-name2,                  "Name 2
         name3      LIKE addr1_data-name3,                  "Name 3
         sort1      LIKE addr1_data-sort1, " Search term 1
         street     LIKE addr1_data-street,     "Street
         str_suppl3 LIKE addr1_data-str_suppl3,             "Street 4
         location   LIKE addr1_data-location,               "Street 5
         post_code1 LIKE addr1_data-post_code1, "City postal code
         city1      LIKE addr1_data-city1,      "City
         country    LIKE addr1_data-country,    "Country Code
         region     LIKE addr1_data-region,     "Region (State)
         tel_number LIKE sza1_d0100-tel_number, "Tel No.
         fax_number LIKE sza1_d0100-fax_number, "Fax No.
         smtp_addr  LIKE sza1_d0100-smtp_addr"Email
         stcd1      LIKE lfa1-stcd1,      "CST No.
         stcd2      LIKE lfa1-stcd2,      "CST Date
         stcd3      LIKE lfa1-stcd3,      "LST No.
         stcd4      LIKE lfa1-stcd4,      "LST Date
         stceg      LIKE lfa1-stceg,      "VAT Reg No.
         j_1kftbus  LIKE lfa1-j_1kftbus"Service Tax Reg No.1
         j_1kftind  LIKE lfa1-j_1kftind"Service Tax Reg No.2
         stenr      LIKE lfa1-stenr,      "PAN No.
         akont      LIKE lfb1-akont,      "Reconciliation Account
         fdgrv      LIKE lfb1-fdgrv,      "Planning group
         reprf      LIKE lfb1-reprf,      "Check for Double Invoices
         zwels      LIKE lfb1-zwels,      "Payment Methods
         qland      LIKE lfb1-qland,      "Withholding Tax Country Key
         witht1     LIKE lfbw-witht,      "Withholding tax type01
         wt_withcd1 LIKE lfbw-wt_withcd"Withholding tax code01
         wt_subjct1 LIKE lfbw-wt_subjct"Subject to withholding tax?01
         qsrec1     LIKE lfbw-qsrec,      "Type of recipient01
         witht2     LIKE lfbw-witht,      "Withholding tax type02
         wt_withcd2 LIKE lfbw-wt_withcd"Withholding tax code02
         wt_subjct2 LIKE lfbw-wt_subjct"Subject to withholding tax?02
         qsrec2     LIKE lfbw-qsrec,      "Type of recipient02
         waers      LIKE lfm1-waers,      "Purchase order currency
         zterm      LIKE lfm1-zterm,      "Terms of payment key
         inco1      LIKE lfm1-inco1,      "Incoterms (part 1)
         inco2      LIKE lfm1-inco2,      "Incoterms (part 2)
         kalsk      LIKE lfm1-kalsk,      "Schema Group Vendor
         webre      LIKE lfm1-webre,      "GR-based invoice
         lebre      LIKE lfm1-lebre,      "Service-based invoice
       END OF t_vend.

DATA : BEGIN OF t_vend1 OCCURS 0.
DATA :   lifnr LIKE lfa1-lifnr.           "Vendor Code
        INCLUDE STRUCTURE t_vend.
DATA : END OF t_vend1.

DATA bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF  messtab OCCURS 0.
        INCLUDE STRUCTURE bdcmsgcoll.
DATA : END OF messtab.

DATA : BEGIN OF filter OCCURS 0.
        INCLUDE STRUCTURE t_vend.
DATA :   desc(132).
DATA : END OF filter.

DATA : sysubrc LIKE sy-subrc,
       l_mstring(480).

DATA : lifnr  LIKE lfa1-lifnr,
       flag   TYPE n,
       tabix  LIKE sy-tabix,
       tcode  LIKE shkontext-tcode.

SELECTION-SCREEN : BEGIN OF SCREEN 9999 TITLE text.
SELECTION-SCREEN : BEGIN OF BLOCK b1.
PARAMETERS       : pfilnam(132) OBLIGATORY.
SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN : COMMENT 5(20) text-001.
PARAMETERS       : session RADIOBUTTON GROUP radi.
SELECTION-SCREEN : COMMENT 40(22) text-002.
PARAMETERS       : transact RADIOBUTTON GROUP radi DEFAULT 'X'.
SELECTION-SCREEN : END OF LINE.
PARAMETERS       : group(10),
                   keep AS CHECKBOX,
                   modea RADIOBUTTON GROUP mode,
                   modee RADIOBUTTON GROUP mode,
                   moden RADIOBUTTON GROUP mode DEFAULT 'X'.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN : END OF SCREEN 9999.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfilnam.
  PERFORM get_filename.

START-OF-SELECTION.

  CALL SCREEN 9999 STARTING AT 10 ENDING AT 100 10.

  PERFORM upload_file TABLES t_vend USING pfilnam.

  IF session NE 'X'.
    LOOP AT t_vend.
      IF t_vend-ktokk <> 'Z011'.
        tcode = 'XK01'.
      ELSE.
        tcode = 'FK01'.
      ENDIF.
      PERFORM transaction.
      PERFORM bdc_transaction.
    ENDLOOP.
    PERFORM msg_download.
  ENDIF.

  IF session = 'X'.
    PERFORM open_group USING group.
    LOOP AT t_vend.
      IF t_vend-ktokk <> 'Z011'.
        tcode = 'XK01'.
      ELSE.
        tcode = 'FK01'.
      ENDIF.
      PERFORM transaction.
      PERFORM insert.
    ENDLOOP.
    PERFORM close_group.
  ENDIF.


*&---------------------------------------------------------------------*
*&      Form  get_filename
*&---------------------------------------------------------------------*
FORM get_filename.


DATA:lt_files   TYPE filetable,
     l_file     TYPE file_table,
     l_title    TYPE string,
     l_subrc    TYPE i,
     l_usr_act  TYPE i,
     l_def_file TYPE string.

     l_def_file = ''.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
  EXPORTING
*    WINDOW_TITLE            =
*    DEFAULT_EXTENSION       =
    DEFAULT_FILENAME        = l_def_file
    FILE_FILTER             = '*.*'
*    WITH_ENCODING           =
*    INITIAL_DIRECTORY       =
*    MULTISELECTION          =
  CHANGING
    FILE_TABLE              = lt_files
    RC                      = l_subrc
    USER_ACTION             = l_usr_act
*    FILE_ENCODING           =
  EXCEPTIONS
    FILE_OPEN_DIALOG_FAILED = 1
    CNTL_ERROR              = 2
    ERROR_NO_GUI            = 3
    NOT_SUPPORTED_BY_GUI    = 4
    others                  = 5
        .
IF sy-subrc eq 0 AND
   l_usr_act <> CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.

   LOOP AT  lt_files INTO l_file.
      MOVE l_file-filename to l_def_file.
      MOVE l_def_file      to pfilnam.
      EXIT.
   ENDLOOP.

ENDIF.


ENDFORM.                    " get_filename

*&---------------------------------------------------------------------*
*&      Form  upload_file
*&---------------------------------------------------------------------*
FORM upload_file  TABLES   p_itab
                  USING    pfilnam.

  DATAfile_name LIKE rlgrap-filename.
  file_name = pfilnam.





  DATA : I_FILE_TABLE TYPE  TABLE OF FILE_TABLE,
       W_FILETABLE  TYPE  FILE_TABLE,
       W_RC         TYPE  I,
       W_P_DEF_FILE TYPE  STRING,
       W_P_FILE     TYPE STRING,
       w_usr_act    TYPE I.


  W_P_DEF_FILE = file_name.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
  EXPORTING
*    WINDOW_TITLE            =
*    DEFAULT_EXTENSION       =
    DEFAULT_FILENAME        = W_P_DEF_FILE
*    FILE_FILTER             =
*    WITH_ENCODING           =
*    INITIAL_DIRECTORY       =
*    MULTISELECTION          =
  CHANGING
    FILE_TABLE              = I_FILE_TABLE
    RC                      = W_RC
    USER_ACTION             = w_usr_act
*    FILE_ENCODING           =
  EXCEPTIONS
    FILE_OPEN_DIALOG_FAILED = 1
    CNTL_ERROR              = 2
    ERROR_NO_GUI            = 3
    NOT_SUPPORTED_BY_GUI    = 4
    others                  = 5
        .
IF sy-subrc = 0
      AND w_usr_act <>
      CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.

     LOOP AT I_FILE_TABLE  INTO W_FILETABLE.
        W_P_FILE = W_FILETABLE.
        EXIT.
      ENDLOOP.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    FILENAME                      = W_P_FILE
    FILETYPE                      = 'ASC'
    HAS_FIELD_SEPARATOR           = 'X'
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
  TABLES
    DATA_TAB                      = t_vend
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.
ENDIF.


ENDFORM.                    " upload_file

*&---------------------------------------------------------------------*
*&      Form  transaction
*&---------------------------------------------------------------------*
FORM transaction.

* Initial Screen*
  IF t_vend-ktokk = 'Z011'.
    PERFORM bdc_dynpro      USING 'SAPMF02K' '0105'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
  ELSE.
    PERFORM bdc_dynpro      USING 'SAPMF02K' '0100'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'RF02K-EKORG'
                                  t_vend-ekorg.             "'L001'.
  ENDIF.
  PERFORM bdc_field       USING 'RF02K-BUKRS'
                                t_vend-bukrs.               "'L001'.
  PERFORM bdc_field       USING 'RF02K-KTOKK'
                                t_vend-ktokk.               "'Z007'.
  PERFORM bdc_field       USING 'USE_ZAV'
                                'X'.          "HARDCODE

* Address1*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0111'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=$2OC'.
  PERFORM bdc_field       USING 'SZA1_D0100-TITLE_MEDI'
                                t_vend-title_medi. "'Mr.'.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME1'
                                t_vend-name1.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME2'
                                t_vend-name2. "'asas'.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME3'
                                t_vend-name3. "'bsbs'.
  PERFORM bdc_field       USING 'ADDR1_DATA-SORT1'
                                t_vend-sort1. "'AKK'.
  PERFORM bdc_field       USING 'ADDR1_DATA-STREET'
                                t_vend-street. "'1234, abcd'.
  PERFORM bdc_field       USING 'ADDR1_DATA-POST_CODE1'
                                t_vend-post_code1.          "'400004'.
  PERFORM bdc_field       USING 'ADDR1_DATA-CITY1'
                                t_vend-city1. "'MUMBAI'.
  PERFORM bdc_field       USING 'ADDR1_DATA-COUNTRY'
                                t_vend-country. "'IN'.
  PERFORM bdc_field       USING 'ADDR1_DATA-REGION'
                                t_vend-region.              "'13'.
  PERFORM bdc_field       USING 'ADDR1_DATA-LANGU'
                                'EN'.               "HARDCODE
  PERFORM bdc_field       USING 'SZA1_D0100-TEL_NUMBER'
                                t_vend-tel_number.

  PERFORM bdc_field       USING 'SZA1_D0100-FAX_NUMBER'
                                t_vend-fax_number.

  PERFORM bdc_field       USING 'SZA1_D0100-SMTP_ADDR'
                                t_vend-smtp_addr. "

     * Address2*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0111'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'SZA1_D0100-TITLE_MEDI'
                                t_vend-title_medi. "'Mr.'.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME1'
                                t_vend-name1.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME2'
                                t_vend-name2. "'asas'.
  PERFORM bdc_field       USING 'ADDR1_DATA-NAME3'
                                t_vend-name3. "'bsbs'.
  PERFORM bdc_field       USING 'ADDR1_DATA-SORT1'
                                t_vend-sort1. "'AKK'.
  PERFORM bdc_field       USING 'ADDR1_DATA-STREET'
                                t_vend-street. "'1234, abcd'.
  PERFORM bdc_field       USING 'ADDR1_DATA-STR_SUPPL3'
                                t_vend-str_suppl3.          "'addr2'.
  PERFORM bdc_field       USING 'ADDR1_DATA-LOCATION'
                                t_vend-location.            "'addr3'.
  PERFORM bdc_field       USING 'ADDR1_DATA-POST_CODE1'
                                t_vend-post_code1.          "'400004'.
  PERFORM bdc_field       USING 'ADDR1_DATA-CITY1'
                                t_vend-city1. "'MUMBAI'.
  PERFORM bdc_field       USING 'ADDR1_DATA-COUNTRY'
                                t_vend-country. "'IN'.
  PERFORM bdc_field       USING 'ADDR1_DATA-REGION'
                                t_vend-region.              "'13'.
  PERFORM bdc_field       USING 'ADDR1_DATA-LANGU'
                                'EN'.               "HARDCODE
  PERFORM bdc_field       USING 'SZA1_D0100-TEL_NUMBER'
                                t_vend-tel_number. "'9322236527'.
  PERFORM bdc_field       USING 'SZA1_D0100-FAX_NUMBER'
                                t_vend-fax_number. "'9833774791'.
  PERFORM bdc_field       USING 'SZA1_D0100-SMTP_ADDR'
                                t_vend-smtp_addr.

* Control data*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFA1-STCD1'
                                t_vend-stcd1. "'cst no.'.
  PERFORM bdc_field       USING 'LFA1-STCD2'
                                t_vend-stcd2. "'cst date'.
  IF t_vend-ktokk <> 'Z011'.
    PERFORM bdc_field       USING 'LFA1-STCD3'
                                  t_vend-stcd3. "'LST NO.'.
    PERFORM bdc_field       USING 'LFA1-STCD4'
                                  t_vend-stcd4. "'LST DATE'.
    PERFORM bdc_field       USING 'LFA1-J_1KFTBUS'
                                  t_vend-j_1kftbus. "'service tax no.1'.
    PERFORM bdc_field       USING 'LFA1-J_1KFTIND'
                                  t_vend-j_1kftind. "'service tax no.2'.
  ENDIF.
  PERFORM bdc_field       USING 'LFA1-STCEG'
                                t_vend-stceg. "'vat reg.no.'.
  PERFORM bdc_field       USING 'LFA1-STENR'
                                t_vend-stenr. "'PAN NO.'.

* Payment transaction*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=ENTR'.

* Accounting information Accounting*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0210'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFB1-AKONT'
                                t_vend-akont.               "'146001'.
  PERFORM bdc_field       USING 'LFB1-FDGRV'
                                t_vend-fdgrv.               "'A3'.

* Payment transactions Accounting*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0215'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFB1-REPRF'
                                t_vend-reprf. "'X'.
  PERFORM bdc_field       USING 'LFB1-ZWELS'
                                t_vend-zwels. "'C'.

* Correspondance Accounting*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0220'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.

* Withholding tax Accounting*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0610'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFB1-QLAND'
                                t_vend-qland. "'IN'.
  PERFORM bdc_field       USING 'LFBW-WITHT(01)'
                                t_vend-witht1.              "'P1'.
  PERFORM bdc_field       USING 'LFBW-WT_WITHCD(01)'
                                t_vend-wt_withcd1.          "'4Z'.
  PERFORM bdc_field       USING 'LFBW-WT_SUBJCT(01)'
                                t_vend-wt_subjct1. "'X'.
  PERFORM bdc_field       USING 'LFBW-QSREC(01)'
                                t_vend-qsrec1. "'OT'.
  PERFORM bdc_field       USING 'LFBW-WITHT(02)'
                                t_vend-witht2.              "'W1'.
  PERFORM bdc_field       USING 'LFBW-WT_WITHCD(02)'
                                t_vend-wt_withcd2.          "'3I'.
  PERFORM bdc_field       USING 'LFBW-WT_SUBJCT(02)'
                                t_vend-wt_subjct2. "'X'.
  PERFORM bdc_field       USING 'LFBW-QSREC(02)'
                                t_vend-qsrec2. "'OT'.

  PERFORM bdc_dynpro      USING 'SAPMF02K' '0610'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFB1-QLAND'
                                t_vend-qland. "'IN'.

* Purching data*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0310'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'LFM1-WAERS'
                                t_vend-waers. "'INR'.
  PERFORM bdc_field       USING 'LFM1-ZTERM'
                                t_vend-zterm.               "'Z005'.
  PERFORM bdc_field       USING 'LFM1-INCO1'
                                t_vend-inco1. "'EXW'.
  PERFORM bdc_field       USING 'LFM1-INCO2'
                                t_vend-inco2. "'MUMBAI'.
  PERFORM bdc_field       USING 'LFM1-KALSK'                "'03'
                                t_vend-kalsk. "'X'.
  PERFORM bdc_field       USING 'LFM1-WEBRE'
                                t_vend-webre. "'X'.
  PERFORM bdc_field       USING 'LFM1-LEBRE'
                                t_vend-lebre. "'X'.

* Partner functions*
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0320'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=ENTR'.

ENDFORM.                    " transaction

*&---------------------------------------------------------------------*
*&      Form  bdc_transaction
*&---------------------------------------------------------------------*
FORM bdc_transaction.

  DATA : g_mode(1).

  IF modea = 'X'.
    g_mode = 'A'.
  ELSEIF modee = 'X'.
    g_mode = 'E'.
  ELSEIF moden = 'X'.
    g_mode = 'N'.
  ENDIF.

  SET PARAMETER ID 'LIF' FIELD ''.

  CALL TRANSACTION tcode USING bdcdata
       MODE g_mode MESSAGES INTO messtab.

  GET PARAMETER ID 'LIF' FIELD lifnr.
  IF sysubrc EQ 0.
    IF lifnr <> space.
      READ TABLE t_vend INDEX tabix.
      MOVE-CORRESPONDING t_vend TO t_vend1.
      MOVE lifnr TO t_vend1-lifnr.
      APPEND t_vend1.


*      WRITE:/ 'Vendor',  lifnr,   'created'.
            WRITE:/ 'Vendor'(003)lifnr,   'created'.



    ELSEIF lifnr = space.
      IF flag = 1.

        WRITE:/ 'Vendor which are NOT created'(004).


      ENDIF.
      READ TABLE t_vend INDEX tabix.
      WRITE :/ t_vend-name1.
      MOVE-CORRESPONDING t_vend TO filter.
      CLEAR bdcdata[].
      DELETE messtab WHERE msgtyp = 'I' OR msgtyp = 'W' OR msgtyp = 'S'.

      LOOP AT messtab.
        SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
                                  AND   arbgb = messtab-msgid
                                  AND   msgnr = messtab-msgnr.
        IF sy-subrc = 0.
          l_mstring = t100-text.
          IF l_mstring CS '&1'.
            REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
            REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
            REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
            REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
          ELSE.
            REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
          ENDIF.
          CONDENSE l_mstring.
        ELSE.
        ENDIF.
      ENDLOOP.
      MOVE l_mstring TO filter-desc.
      APPEND filter.
    ENDIF.
    flag = flag + 1.
  ENDIF.
  CLEAR bdcdata[].
  DELETE messtab WHERE msgtyp = 'I' OR msgtyp = 'W'  OR msgtyp = 'S'.

ENDFORM.                    " bdc_transaction

*&---------------------------------------------------------------------*
*&      Form  msg_download
*&---------------------------------------------------------------------*
FORM msg_download.

  DESCRIBE TABLE filter.
  IF NOT filter[] IS INITIAL.



*    CALL FUNCTION 'DOWNLOAD'
*         EXPORTING
*              filename                = 'C:\TEMP\VENDOR_ERROR.TXT'
*              filetype                = 'DAT'
*              mode                    = 'A'
*         TABLES
*              data_tab                = filter
*         EXCEPTIONS
*              invalid_filesize        = 1
*              invalid_table_width     = 2
*              invalid_type            = 3
*              no_batch                = 4
*              unknown_error           = 5
*              gui_refuse_filetransfer = 6
*              customer_error          = 7
*              OTHERS                  = 8.
*    IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*    ENDIF.
DATA: l_filename    TYPE string,
       l_filen       TYPE string,
       l_path        TYPE string,
       l_fullpath    TYPE string,
       l_usr_act     TYPE I.

l_filename = 'TEMP\VENDOR_ERROR.TXT'.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
  EXPORTING
*    WINDOW_TITLE         =
*    DEFAULT_EXTENSION    =
    DEFAULT_FILE_NAME    = l_filename
*    WITH_ENCODING        =
*    FILE_FILTER          =
    INITIAL_DIRECTORY    = 'C:\'
*    PROMPT_ON_OVERWRITE  = 'X'
  CHANGING
    FILENAME             = l_filen
    PATH                 = l_path
    FULLPATH             = l_fullpath
    USER_ACTION          = l_usr_act
*    FILE_ENCODING        =
  EXCEPTIONS
    CNTL_ERROR           = 1
    ERROR_NO_GUI         = 2
    NOT_SUPPORTED_BY_GUI = 3
    others               = 4
        .
IF sy-subrc = 0
      AND l_usr_act <>
      CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
*   BIN_FILESIZE                    =
    FILENAME                        = l_fullpath
    FILETYPE                        = 'DAT'
    APPEND                          = 'A'
*   WRITE_FIELD_SEPARATOR           = ' '
*   HEADER                          = '00'
*   TRUNC_TRAILING_BLANKS           = ' '
*   WRITE_LF                        = 'X'
*   COL_SELECT                      = ' '
*   COL_SELECT_MASK                 = ' '
*   DAT_MODE                        = ' '
*   CONFIRM_OVERWRITE               = ' '
*   NO_AUTH_CHECK                   = ' '
*   CODEPAGE                        = ' '
*   IGNORE_CERR                     = ABAP_TRUE
*   REPLACEMENT                     = '#'
*   WRITE_BOM                       = ' '
*   TRUNC_TRAILING_BLANKS_EOL       = 'X'
*   WK1_N_FORMAT                    = ' '
*   WK1_N_SIZE                      = ' '
*   WK1_T_FORMAT                    = ' '
*   WK1_T_SIZE                      = ' '
*   WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
*   SHOW_TRANSFER_STATUS            = ABAP_TRUE
* IMPORTING
*   FILELENGTH                      =
  TABLES
    DATA_TAB                        = filter
*   FIELDNAMES                      =
EXCEPTIONS
   FILE_WRITE_ERROR                = 1
   NO_BATCH                        = 2
   GUI_REFUSE_FILETRANSFER         = 3
   INVALID_TYPE                    = 4
   NO_AUTHORITY                    = 5
   UNKNOWN_ERROR                   = 6
   HEADER_NOT_ALLOWED              = 7
   SEPARATOR_NOT_ALLOWED           = 8
   FILESIZE_NOT_ALLOWED            = 9
   HEADER_TOO_LONG                 = 10
   DP_ERROR_CREATE                 = 11
   DP_ERROR_SEND                   = 12
   DP_ERROR_WRITE                  = 13
   UNKNOWN_DP_ERROR                = 14
   ACCESS_DENIED                   = 15
   DP_OUT_OF_MEMORY                = 16
   DISK_FULL                       = 17
   DP_TIMEOUT                      = 18
   FILE_NOT_FOUND                  = 19
   DATAPROVIDER_EXCEPTION          = 20
   CONTROL_FLUSH_ERROR             = 21
   OTHERS                          = 22
          .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.

  ENDIF.

  DESCRIBE TABLE t_vend1.
  IF NOT t_vend1[] IS INITIAL.



*    CALL FUNCTION 'DOWNLOAD'
*         EXPORTING
*              filename                = 'C:\TEMP\VENDOR_CREATED.TXT'
*              filetype                = 'DAT'
*              mode                    = 'A'
*         TABLES
*              data_tab                = t_vend1
*         EXCEPTIONS
*              invalid_filesize        = 1
*              invalid_table_width     = 2
*              invalid_type            = 3
*              no_batch                = 4
*              unknown_error           = 5
*              gui_refuse_filetransfer = 6
*              customer_error          = 7
*              OTHERS                  = 8.
*    IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*    ENDIF.

DATA: l_filename1    TYPE string,
       l_filen1       TYPE string,
       l_path1        TYPE string,
       l_fullpath1    TYPE string,
       l_usr_act1     TYPE I.

l_filename1 = 'TEMP\VENDOR_CREATED.TXT'.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
  EXPORTING
*    WINDOW_TITLE         =
*    DEFAULT_EXTENSION    =
    DEFAULT_FILE_NAME    = l_filename1
*    WITH_ENCODING        =
*    FILE_FILTER          =
    INITIAL_DIRECTORY    = 'C:\'
*    PROMPT_ON_OVERWRITE  = 'X'
  CHANGING
    FILENAME             = l_filen1
    PATH                 = l_path1
    FULLPATH             = l_fullpath1
    USER_ACTION          = l_usr_act1
*    FILE_ENCODING        =
  EXCEPTIONS
    CNTL_ERROR           = 1
    ERROR_NO_GUI         = 2
    NOT_SUPPORTED_BY_GUI = 3
    others               = 4
        .
IF sy-subrc = 0
      AND l_usr_act <>
      CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
*   BIN_FILESIZE                    =
   FILENAME                        = l_fullpath
   FILETYPE                        = 'DAT'
   APPEND                          = 'A'
*   WRITE_FIELD_SEPARATOR           = ' '
*   HEADER                          = '00'
*   TRUNC_TRAILING_BLANKS           = ' '
*   WRITE_LF                        = 'X'
*   COL_SELECT                      = ' '
*   COL_SELECT_MASK                 = ' '
*   DAT_MODE                        = ' '
*   CONFIRM_OVERWRITE               = ' '
*   NO_AUTH_CHECK                   = ' '
*   CODEPAGE                        = ' '
*   IGNORE_CERR                     = ABAP_TRUE
*   REPLACEMENT                     = '#'
*   WRITE_BOM                       = ' '
*   TRUNC_TRAILING_BLANKS_EOL       = 'X'
*   WK1_N_FORMAT                    = ' '
*   WK1_N_SIZE                      = ' '
*   WK1_T_FORMAT                    = ' '
*   WK1_T_SIZE                      = ' '
*   WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
*   SHOW_TRANSFER_STATUS            = ABAP_TRUE
* IMPORTING
*   FILELENGTH                      =
  TABLES
    DATA_TAB                        = t_vend1
*   FIELDNAMES                      =
EXCEPTIONS
   FILE_WRITE_ERROR                = 1
   NO_BATCH                        = 2
   GUI_REFUSE_FILETRANSFER         = 3
   INVALID_TYPE                    = 4
   NO_AUTHORITY                    = 5
   UNKNOWN_ERROR                   = 6
   HEADER_NOT_ALLOWED              = 7
   SEPARATOR_NOT_ALLOWED           = 8
   FILESIZE_NOT_ALLOWED            = 9
   HEADER_TOO_LONG                 = 10
   DP_ERROR_CREATE                 = 11
   DP_ERROR_SEND                   = 12
   DP_ERROR_WRITE                  = 13
   UNKNOWN_DP_ERROR                = 14
   ACCESS_DENIED                   = 15
   DP_OUT_OF_MEMORY                = 16
   DISK_FULL                       = 17
   DP_TIMEOUT                      = 18
   FILE_NOT_FOUND                  = 19
   DATAPROVIDER_EXCEPTION          = 20
   CONTROL_FLUSH_ERROR             = 21
   OTHERS                          = 22
          .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
  ENDIF.


  ENDIF.

ENDFORM.                    " msg_download

*&---------------------------------------------------------------------*
*&      Form  open_group
*&---------------------------------------------------------------------*
FORM open_group USING p_group.

  DATA : sesnam TYPE apqi-groupid.
  sesnam = p_group.

  CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
            client              = sy-mandt
            group               = sesnam
            keep                = keep
            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.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " open_group

*&---------------------------------------------------------------------*
*&      Form  insert
*&---------------------------------------------------------------------*
FORM insert.

  CALL FUNCTION 'BDC_INSERT'
       EXPORTING
            tcode            = tcode
       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.

ENDFORM.                    " insert

*&---------------------------------------------------------------------*
*&      Form  close_group
*&---------------------------------------------------------------------*
FORM close_group.

  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.

ENDFORM.                    " close_group

*&---------------------------------------------------------------------*
*&      Form  bdc_dynpro
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.

  CLEAR bdcdata.
  bdcdata-program = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.

ENDFORM.                    " bdc_dynpro

*&---------------------------------------------------------------------*
*&      Form  bdc_field
*&---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.

  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.

ENDFORM.                    " bdc_field

Read only

Former Member
0 Likes
1,864

Hi your account group is not maintained in XK01. one thing you only create 1 record with accoungroup 0001.

then watch error will occur or not.....

Regards

Sabyasachi

Read only

Former Member
0 Likes
1,864

Hi Indranil,

For RF02K-LIFNR in XK02 : LIFNR --> LIF16 (Domain Name ) which have Convers.Routine...Please use "CONVERSION_EXIT_ALPHA_INPUT" when you pass LIFNR

===============================================================

 

For XK01 "blocked by user SAPUSER" : Lock Reason

use  BDC_CLOSE_GROUP seperately not Combine , mean

for XK01  --> OPEN / INSERT / Close ..Finish ur 1st Task

 

for XK02 --> OPEN / INSERT / cLOSE --Finish ur 2nd Task

Regard's

Smruti