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

BDC error

Former Member
0 Likes
681

Hello Friends,

I have created a BDC for Vendor Master.

When I am uploading with the program it says enter Bank Country.

However its not a mandatory field.

When I enter manually in XK01 it allows me to skip.

Any suggestions.

Thanks,

Raju.

REPORT zraju_vendor_recd
       NO STANDARD PAGE HEADING LINE-SIZE 255.

* Internal Table for file
*DATA : BEGIN OF i_file OCCURS 0,
*       text(1024) TYPE c,
*       END OF i_file.

DATA : g_repid LIKE sy-repid,
       $v_start_col         TYPE i VALUE '1',
       $v_start_row         TYPE i VALUE '1',
       $v_end_col           TYPE i VALUE '256',
       $v_end_row           TYPE i VALUE '65536',
       gd_currentrow TYPE i.

DATA : BEGIN OF i_data OCCURS 0,
         lifnr       LIKE lfa1-lifnr,
         bukrs       LIKE lfb1-bukrs,	
         ekorg       LIKE lfm1-ekorg,	
         ktokk	LIKE lfa1-ktokk,
         name1	LIKE lfa1-name1,
         name2	LIKE lfa1-name2,
         name3	LIKE lfa1-name3,
         name4	LIKE lfa1-name4,
         stras	LIKE lfa1-stras,
         ort01	LIKE lfa1-ort01,
         pfach	LIKE lfa1-pfach,
         pstlz	LIKE lfa1-pstlz,
         pstl2	LIKE lfa1-pstl2,
         land1	LIKE lfa1-land1,
         regio	LIKE lfa1-regio,
         spras	LIKE lfa1-spras,
         telx1	LIKE lfa1-telx1,
         telf1	LIKE lfa1-telf1,
         telf2	LIKE lfa1-telf2,
         telfx	LIKE lfa1-telfx,
         sortl	LIKE lfa1-sortl,
         konzs	LIKE lfa1-konzs,
         stcd1	LIKE lfa1-stcd1,
         stcd2	LIKE lfa1-stcd2,
         kraus	LIKE lfa1-kraus,
         scacd	LIKE lfa1-scacd,
         banks	LIKE lfbk-banks,
         bankl	LIKE lfbk-bankl,
         bankn	LIKE lfbk-bankn,
         bkont       LIKE lfbk-bkont,
         bkref	LIKE lfbk-bkref,
         akont	LIKE lfb1-akont,
         zuawa	LIKE lfb1-zuawa,
         qsskz	LIKE lfb1-qsskz,
         qsrec	LIKE lfb1-qsrec,
         altkn	LIKE lfb1-altkn,
         zterm	LIKE lfb1-zterm,
         reprf	LIKE lfb1-reprf,
         zwels	LIKE lfb1-zwels,
         lnrzb	LIKE lfb1-lnrzb,
         zahls	LIKE lfb1-zahls,
         eikto	LIKE lfb1-eikto,
         waers	LIKE lfm1-waers,
         zterm_m     LIKE lfm1-zterm,
         inco1	LIKE lfm1-inco1,
         verkf	LIKE lfm1-verkf,
         telf1_m	LIKE lfm1-telf1,
         webre	LIKE lfm1-webre,
         xersy	LIKE lfm1-xersy,
         kzabs	LIKE lfm1-kzabs,
         kzaut	LIKE lfm1-kzaut,
*         banka	LIKE lfbk-banka,
       END OF i_data.
* Internal Table for BDCDATA
DATA i_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA i_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

* Log filre specify only the primary key(here Matnr is primary key)
DATA : BEGIN OF i_error OCCURS 0,
       lifnr LIKE lfa1-lifnr,
       text(255) TYPE c,
       END OF i_error.

*Variables
DATA: v_file TYPE string,
     v_repid LIKE sy-repid,
     zmsg(255) TYPE c.

DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN : BEGIN OF BLOCK blk WITH FRAME TITLE text.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK blk.

INITIALIZATION.
  g_repid = sy-repid.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name = g_repid
    IMPORTING
      file_name    = p_file.

START-OF-SELECTION.
  PERFORM data_upload.
  PERFORM process_data.

END-OF-SELECTION.

  PERFORM upload_vendor.
  PERFORM write_output.



*&---------------------------------------------------------------------*
*&      Form  data_upload
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM data_upload .

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_file
      i_begin_col             = $v_start_col
      i_begin_row             = $v_start_row
      i_end_col               = $v_end_col
      i_end_row               = $v_end_row
    TABLES
      intern                  = itab
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    WRITE:/10 'File '.
  ENDIF.

ENDFORM.                    " data_upload
*&---------------------------------------------------------------------*
*&      Form  process_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM process_data .
  IF sy-subrc EQ 0.

    READ TABLE itab INDEX 1.
    gd_currentrow = itab-row.


    LOOP AT itab.

      IF itab-row NE gd_currentrow.

        APPEND i_data.
        CLEAR i_data.
        gd_currentrow = itab-row.
      ENDIF.

      CASE itab-col.
        WHEN '0001'.
          i_data-lifnr = itab-value.
        WHEN '0002'.
          i_data-bukrs = itab-value.
        WHEN '0003'.
          i_data-ekorg = itab-value.
        WHEN '0004'.
          i_data-ktokk = itab-value.
        WHEN '0005'.
          i_data-name1 = itab-value.
        WHEN '0006'.
          i_data-name2 = itab-value.
        WHEN '0007'.
          i_data-name3 = itab-value.
        WHEN '0008'.
          i_data-name4 = itab-value.
        WHEN '0009'.
          i_data-stras = itab-value.
        WHEN '0010'.
          i_data-ort01 = itab-value.
        WHEN '0011'.
          i_data-pfach = itab-value.
        WHEN '0012'.
          i_data-pstlz = itab-value.
        WHEN '0013'.
          i_data-pstl2 = itab-value.
        WHEN '0014'.
          i_data-land1 = itab-value.
        WHEN '0015'.
          i_data-regio = itab-value.
        WHEN '0016'.
          i_data-spras = itab-value.
        WHEN '0017'.
          i_data-telx1 = itab-value.
        WHEN '0018'.
          i_data-telf1 = itab-value.
        WHEN '0019'.
          i_data-telf2 = itab-value.
        WHEN '0020'.
          i_data-telfx = itab-value.
        WHEN '0021'.
          i_data-sortl = itab-value.
        WHEN '0022'.
          i_data-konzs = itab-value.
        WHEN '0023'.
          i_data-stcd1 = itab-value.
        WHEN '0024'.
          i_data-stcd2 = itab-value.
        WHEN '0025'.
          i_data-kraus = itab-value.
        WHEN '0026'.
          i_data-scacd = itab-value.
        WHEN '0027'.
          i_data-banks = itab-value.
        WHEN '0028'.
          i_data-bankl = itab-value.
        WHEN '0029'.
          i_data-bankn = itab-value.
        WHEN '0030'.
          i_data-bkont = itab-value.
        WHEN '0031'.
          i_data-bkref = itab-value.
        WHEN '0032'.
          i_data-akont = itab-value.
        WHEN '0033'.
          i_data-zuawa = itab-value.
        WHEN '0034'.
          i_data-qsskz = itab-value.
        WHEN '0035'.
          i_data-qsrec = itab-value.
        WHEN '0036'.
          i_data-altkn = itab-value.
        WHEN '0037'.
          i_data-zterm = itab-value.
        WHEN '0038'.
          i_data-reprf = itab-value.
        WHEN '0039'.
          i_data-zwels = itab-value.
        WHEN '0040'.
          i_data-lnrzb = itab-value.
        WHEN '0041'.
          i_data-zahls = itab-value.
        WHEN '0042'.
          i_data-eikto = itab-value.
        WHEN '0043'.
          i_data-waers = itab-value.
        WHEN '0044'.
          i_data-zterm_m = itab-value.
        WHEN '0045'.
          i_data-inco1 = itab-value.
        WHEN '0046'.
          i_data-verkf = itab-value.
        WHEN '0047'.
          i_data-telf1_m = itab-value.
        WHEN '0048'.
          i_data-webre = itab-value.
        WHEN '0049'.
          i_data-xersy = itab-value.
        WHEN '0050'.
          i_data-kzabs = itab-value.
        WHEN '0051'.
          i_data-kzaut = itab-value.
*        when '0052'.
*          i_data-bukrs = itab-value.
*        when '0053'.
*          i_data-ekorg = itab-value.
*        when '0054'.
*          i_data-ktokk = itab-value.
*        when '0055'.
*          i_data-name1 = itab-value.

      ENDCASE.
    ENDLOOP.
  ENDIF.

  APPEND i_data.
ENDFORM.                    " process_data
*&---------------------------------------------------------------------*
*&      Form  upload_vendor
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM upload_vendor .
  LOOP AT i_data.

    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'
                                  i_data-lifnr.
    PERFORM bdc_field       USING 'RF02K-BUKRS'
                                  i_data-bukrs.

    PERFORM conversion USING i_data-ekorg
                       CHANGING i_data-ekorg.

    PERFORM bdc_field       USING 'RF02K-EKORG'
                                  i_data-ekorg.
    PERFORM bdc_field       USING 'RF02K-KTOKK'
                                  i_data-ktokk.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFA1-TELFX'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFA1-NAME1'
                                  i_data-name1.
    PERFORM bdc_field       USING 'LFA1-NAME2'
                                  i_data-name2.
    PERFORM bdc_field       USING 'LFA1-NAME3'
                                  i_data-name3.
    PERFORM bdc_field       USING 'LFA1-NAME4'
                                  i_data-name4.
    PERFORM bdc_field       USING 'LFA1-STRAS'
                                  i_data-stras.
    PERFORM bdc_field       USING 'LFA1-ORT01'
                                  i_data-ort01.
    PERFORM bdc_field       USING 'LFA1-PFACH'
                                  i_data-pfach.
    PERFORM bdc_field       USING 'LFA1-PSTLZ'
                                  i_data-pstlz.
    PERFORM bdc_field       USING 'LFA1-PSTL2'
                                  i_data-pstl2.
    PERFORM bdc_field       USING 'LFA1-LAND1'
                                  i_data-land1.
    PERFORM bdc_field       USING 'LFA1-REGIO'
                                  i_data-regio.
    PERFORM bdc_field       USING 'LFA1-SPRAS'
                                  i_data-spras.
    PERFORM bdc_field       USING 'LFA1-TELX1'
                                  i_data-telx1.
    PERFORM bdc_field       USING 'LFA1-TELF1'
                                  i_data-telf1.
    PERFORM bdc_field       USING 'LFA1-TELF2'
                                  i_data-telf2.
    PERFORM bdc_field       USING 'LFA1-TELFX'
                                  i_data-telfx.
    PERFORM bdc_field       USING 'LFA1-SORTL'
                                  i_data-sortl.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFA1-SCACD'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFA1-KONZS'
                                  i_data-konzs.
    PERFORM bdc_field       USING 'LFA1-STCD1'
                                  i_data-stcd1.
    PERFORM bdc_field       USING 'LFA1-STCD2'
                                  i_data-stcd2.
    PERFORM bdc_field       USING 'LFA1-KRAUS'
                                  i_data-kraus.
    PERFORM bdc_field       USING 'LFA1-SCACD'
                                  i_data-scacd.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFBK-BKREF(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM bdc_field       USING 'LFBK-BANKS(01)'
                                  i_data-banks.
    PERFORM bdc_field       USING 'LFBK-BANKL(01)'
                                  i_data-bankl.
    PERFORM bdc_field       USING 'LFBK-BANKN(01)'
                                  i_data-bankn.
    PERFORM bdc_field       USING 'LFBK-BKONT(01)'
                                  i_data-bkont.
    PERFORM bdc_field       USING 'LFBK-BKREF(01)'
                                  i_data-bkref.


    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFBK-BANKL(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0210'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFB1-QSSKZ'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFB1-AKONT'
                                  i_data-akont.
    PERFORM bdc_field       USING 'LFB1-ZUAWA'
                                  i_data-zuawa.
    PERFORM bdc_field       USING 'LFB1-QSSKZ'
                                  i_data-qsskz.
    PERFORM bdc_field       USING 'LFB1-QSREC'
                                  i_data-qsrec.
    PERFORM bdc_field       USING 'LFB1-ALTKN'
                                  i_data-altkn.


    PERFORM bdc_dynpro      USING 'SAPMF02K' '0215'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFB1-LNRZB'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFB1-ZTERM'
                                  i_data-zterm.
    PERFORM bdc_field       USING 'LFB1-REPRF'
                                  i_data-reprf.
    PERFORM bdc_field       USING 'LFB1-ZWELS'
                                  i_data-zwels.
    PERFORM bdc_field       USING 'LFB1-LNRZB'
                                  i_data-lnrzb.
    PERFORM bdc_field       USING 'LFB1-ZAHLS'
                                  i_data-zahls.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0220'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFB1-EIKTO'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFB1-EIKTO'
                                  i_data-eikto.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0310'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'LFM1-KZABS'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'LFM1-WAERS'
                                  i_data-waers.
    PERFORM bdc_field       USING 'LFM1-ZTERM'
                                  i_data-zterm_m.
    PERFORM bdc_field       USING 'LFM1-INCO1'
                                  i_data-inco1.
    PERFORM bdc_field       USING 'LFM1-VERKF'
                                  i_data-verkf.
    PERFORM bdc_field       USING 'LFM1-TELF1'
                                  i_data-telf1_m.
    PERFORM bdc_field       USING 'LFM1-WEBRE'
                                  i_data-webre.
    PERFORM bdc_field       USING 'LFM1-XERSY'
                                  i_data-xersy.
    PERFORM bdc_field       USING 'LFM1-KZABS'
                                  i_data-kzabs.
    PERFORM bdc_field       USING 'LFM1-KZAUT'
                                  i_data-kzaut.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0320'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RF02K-LIFNR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPDA'.


*perform bdc_transaction using 'XK01'.
    CALL TRANSACTION 'XK01' USING i_bdcdata
                      MODE 'N'
                      MESSAGES INTO i_bdcmsgcoll.
    REFRESH i_bdcdata.

    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        = sy-msgid
        lang      = '-E'
        no        = sy-msgno
        v1        = sy-msgv1
        v2        = sy-msgv2
        v3        = sy-msgv3
        v4        = sy-msgv4
      IMPORTING
        msg       = zmsg
      EXCEPTIONS
        not_found = 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.


    i_error-lifnr = i_error-lifnr.
    i_error-text = zmsg.
    APPEND i_error.
    CLEAR i_error.

  ENDLOOP.

ENDFORM.                    " upload_vendor
*&---------------------------------------------------------------------*
*&      Form  write_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM write_output .
  LOOP AT i_error.
    WRITE : / i_error.
  ENDLOOP.
ENDFORM.                    " write_output
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR i_bdcdata.
  i_bdcdata-program  = program.
  i_bdcdata-dynpro   = dynpro.
  i_bdcdata-dynbegin = 'X'.
  APPEND i_bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.

  CLEAR i_bdcdata.
  i_bdcdata-fnam = fnam.
  i_bdcdata-fval = fval.
  APPEND i_bdcdata.

ENDFORM.                    "BDC_FIELD

3 REPLIES 3
Read only

Former Member
0 Likes
544

Try changing the MODE = 'N' to 'A' or 'E' in the call transaction and see where the error exists. That will help you figure out the problem.

Rishi

Read only

0 Likes
544

Thanks Rishi,

I have done all that and the error is Enter Bank Country.

Raju

Read only

0 Likes
544

This error only occurs if you enter a bank key.

PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.

PERFORM bdc_field       USING 'BDC_CURSOR'

'LFBK-BANKL(01)'.

PERFORM bdc_field       USING 'BDC_OKCODE'

'=ENTR'.

The Code above indicates that you do, and if you enter a Bank code, the Country is required. i.e. Both Bank code and Country are required if you enter either of the 2 on the screen.

Hope that answers your question.

Rishi