‎2008 Feb 06 9:44 PM
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
‎2008 Feb 06 9:47 PM
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
‎2008 Feb 06 9:59 PM
Thanks Rishi,
I have done all that and the error is Enter Bank Country.
Raju
‎2008 Feb 06 10:09 PM
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