Application Development 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: 

Sample code for Vendor Master BDC?

Former Member
0 Kudos

Hello ,

Can anyone share me the sample code for vendor master uploading of data through BDC ?

And any suggestions how to upload the data through background system (SM36) ?

Thks

2 REPLIES 2

Former Member
0 Kudos

Hi ,

Here is the BDC for vendor master .

report ZBDC_XK01

no standard page heading line-size 255.

*include bdcrecx1.

*parameters: dataset(132) lower case.

      • DO NOT CHANGE - the generated data section - DO NOT CHANGE ***

*

  • If it is nessesary to change the data section use the rules:

  • 1.) Each definition of a field exists of two lines

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

      • Generated data section with specific formatting - DO NOT CHANGE ***

DATA: file_path TYPE string.

DATA:

l_log_handle TYPE balloghndl,

l_s_log TYPE bal_s_log,

l_s_msg TYPE bal_s_msg,

l_msgno TYPE symsgno.

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

  • messages of call transaction

DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

  • error session opened (' ' or 'X')

DATA: E_GROUP_OPENED.

  • message texts

TABLES: T100.

data: begin of record occurs 0,

  • data element: BUKRS

BUKRS_001(004),

  • data element: EKORG

EKORG_002(004),

  • data element: KTOKK

KTOKK_003(004),

  • data element: ANRED

ANRED_004(015),

  • data element: NAME1_GP

NAME1_005(035),

  • data element: NAME2_GP

NAME2_006(035),

  • data element: NAME3_GP

NAME3_007(035),

  • data element: NAME4_GP

NAME4_008(035),

  • data element: STRAS_GP

SORT1(020),

  • data element: STRAS_GP

STRAS_009(035),

  • data element: ORT01_GP

ORT01_010(035),

  • data element: PSTLZ

PSTLZ_011(010),

  • data element: LAND1_GP

LAND1_012(003),

  • data element: LAND1_GP

REGION(003),

  • data element: SPRAS

SPRAS_013(002),

  • data element: TELF1

TELF1_014(016),

  • data element: TELFX

TELFX_015(031),

  • data element: URL

EMAIL(241),

  • data element: STCEG

STCEG_017(020),

  • data element: BRSCH

BRSCH_018(004),

  • data element: AKONT

AKONT_019(010),

  • data element: FDGRV

FDGRV_020(010),

  • data element: ALTKN

ALTKN_021(010),

  • data element: DZTERM

ZTERM_022(004),

  • data element: REPRF

REPRF_023(001),

  • data element: DZWELS

ZWELS_024(010),

J_1IEXCD(040),

J_1IEXRN(040),

J_1IEXRG(060),

J_1IEXDI(060),

J_1IEXCO(060),

J_1IVTYP(002),

J_1ICSTNO(040),

J_1ILSTNO(040),

J_1ISERN(040),

J_1IPANNO(040),

  • data element: QLAND

QLAND_025(003),

  • data element: WITHT

WITHT_01_026(002),

  • data element: WITHT

WITHT_02_027(002),

  • data element: WITHT

WITHT_03_028(002),

  • data element: WITHT

WITHT_04_029(002),

  • data element: WITHT

WITHT_05_030(002),

  • data element: WITHT

WITHT_06_031(002),

  • data element: WT_WITHCD

WT_WITHCD_01_032(002),

  • data element: WT_WITHCD

WT_WITHCD_02_033(002),

  • data element: WT_WITHCD

WT_WITHCD_03_034(002),

  • data element: WT_SUBJCT

WT_SUBJCT_01_035(001),

  • data element: WT_SUBJCT

WT_SUBJCT_02_036(001),

  • data element: WT_SUBJCT

WT_SUBJCT_03_037(001),

  • data element: WT_SUBJCT

WT_SUBJCT_04_038(001),

  • data element: WT_SUBJCT

WT_SUBJCT_05_039(001),

  • data element: WT_SUBJCT

WT_SUBJCT_06_040(001),

  • data element: WT_QSREC

QSREC_01_041(002),

  • data element: WT_QSREC

QSREC_02_042(002),

  • data element: WT_QSREC

QSREC_03_043(002),

  • data element: WT_QSREC

QSREC_04_044(002),

  • data element: WT_QSREC

QSREC_05_045(002),

  • data element: WT_QSREC

QSREC_06_046(002),

  • data element: QLAND

QLAND_047(003),

  • data element: BSTWA

WAERS_048(005),

  • data element: DZTERM

ZTERM_049(004),

  • data element: KALSK

KALSK_050(002),

  • data element: WEBRE

WEBRE_051(001),

  • data element: XNBWY

XNBWY_052(001),

  • data element: LEBRE

LEBRE_053(001),

end of record.

      • End generated data section ***

start-of-selection.

SELECTION-SCREEN BEGIN OF BLOCK mode WITH FRAME TITLE text-003 .

*PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.

PARAMETERS: file_url TYPE rlgrap-filename MODIF ID xyz .

SELECTION-SCREEN END OF BLOCK mode .

INITIALIZATION.

PERFORM log_create.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_url.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'FILE_URL'

IMPORTING

file_name = file_url.

start-of-selection.

IF NOT file_url IS INITIAL.

MOVE file_url TO file_path.

PERFORM read_file.

ENDIF.

loop at record.

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-BUKRS'

record-BUKRS_001.

perform bdc_field using 'RF02K-EKORG'

record-EKORG_002.

perform bdc_field using 'RF02K-KTOKK'

record-KTOKK_003.

perform bdc_field using 'USE_ZAV'

'X'.

perform bdc_dynpro using 'SAPMF02K' '0111'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'LFA1-LFURL'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'SZA1_D0100-TITLE_MEDI'

record-ANRED_004.

perform bdc_field using 'ADDR1_DATA-NAME1'

record-NAME1_005.

perform bdc_field using 'ADDR1_DATA-NAME2'

record-NAME2_006.

perform bdc_field using 'ADDR1_DATA-NAME3'

record-NAME3_007.

perform bdc_field using 'ADDR1_DATA-NAME4'

record-NAME4_008.

perform bdc_field using 'ADDR1_DATA-SORT1'

record-sort1.

perform bdc_field using 'ADDR1_DATA-STREET'

record-STRAS_009.

perform bdc_field using 'ADDR1_DATA-CITY1'

record-ORT01_010.

perform bdc_field using 'ADDR1_DATA-POST_CODE1'

record-PSTLZ_011.

perform bdc_field using 'ADDR1_DATA-COUNTRY'

record-LAND1_012.

perform bdc_field using 'ADDR1_DATA-REGION'

record-region.

perform bdc_field using 'ADDR1_DATA-LANGU'

record-SPRAS_013.

perform bdc_field using 'SZA1_D0100-TEL_NUMBER'

record-TELF1_014.

perform bdc_field using 'SZA1_D0100-FAX_NUMBER'

record-TELFX_015.

perform bdc_field using 'SZA1_D0100-SMTP_ADDR'

record-EMAIL.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-STCEG'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-STCEG'

record-STCEG_017.

perform bdc_field using 'LFA1-BRSCH'

record-BRSCH_018.

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' '0380'.

perform bdc_field using 'BDC_CURSOR'

'KNVK-NAMEV(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ALTKN'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

record-AKONT_019.

perform bdc_field using 'LFB1-FDGRV'

record-FDGRV_020.

perform bdc_field using 'LFB1-ALTKN'

record-ALTKN_021.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'=OPFI'.

perform bdc_field using 'LFB1-ZTERM'

record-ZTERM_022.

perform bdc_field using 'LFB1-REPRF'

record-REPRF_023.

perform bdc_field using 'LFB1-ZWELS'

record-ZWELS_024.

perform bdc_dynpro using 'SAPLJ1I_MASTER' '0100'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'=CIN_VENDOR_FC2'.

perform bdc_field using 'J_1IMOVEND-J_1IEXCD'

record-J_1IEXCD.

perform bdc_field using 'J_1IMOVEND-J_1IEXRN'

record-J_1IEXRN.

perform bdc_field using 'J_1IMOVEND-J_1IEXRG'

record-J_1IEXRG.

perform bdc_field using 'J_1IMOVEND-J_1IEXDI'

record-J_1IEXDI.

perform bdc_field using 'J_1IMOVEND-J_1IEXCO'

record-J_1IEXCO.

perform bdc_field using 'J_1IMOVEND-J_1IVTYP'

record-J_1IVTYP.

perform bdc_dynpro using 'SAPLJ1I_MASTER' '0100'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'=CIN_VENDOR_FC3'.

perform bdc_field using 'J_1IMOVEND-J_1ICSTNO'

record-J_1ICSTNO.

perform bdc_field using 'J_1IMOVEND-J_1ILSTNO'

record-J_1ILSTNO.

perform bdc_field using 'J_1IMOVEND-J_1ISERN'

record-J_1ISERN.

perform bdc_dynpro using 'SAPLJ1I_MASTER' '0100'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'J_1IMOVEND-J_1IPANNO'

record-J_1IPANNO.

perform bdc_dynpro using 'SAPLJ1I_MASTER' '0100'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'=BACK'.

perform bdc_field using 'J_1IMOVEND-J_1IPANNO'

record-J_1IPANNO.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZWELS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-ZTERM'

record-ZTERM_022.

perform bdc_field using 'LFB1-REPRF'

record-REPRF_023.

perform bdc_field using 'LFB1-ZWELS'

record-ZWELS_024.

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' '0610'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'LFBW-QSREC(06)'.

perform bdc_field using 'LFB1-QLAND'

record-QLAND_025.

perform bdc_field using 'LFBW-WITHT(01)'

record-WITHT_01_026.

perform bdc_field using 'LFBW-WITHT(02)'

record-WITHT_02_027.

perform bdc_field using 'LFBW-WITHT(03)'

record-WITHT_03_028.

perform bdc_field using 'LFBW-WITHT(04)'

record-WITHT_04_029.

perform bdc_field using 'LFBW-WITHT(05)'

record-WITHT_05_030.

perform bdc_field using 'LFBW-WITHT(06)'

record-WITHT_06_031.

perform bdc_field using 'LFBW-WT_WITHCD(01)'

record-WT_WITHCD_01_032.

perform bdc_field using 'LFBW-WT_WITHCD(02)'

record-WT_WITHCD_02_033.

perform bdc_field using 'LFBW-WT_WITHCD(03)'

record-WT_WITHCD_03_034.

perform bdc_field using 'LFBW-WT_SUBJCT(01)'

record-WT_SUBJCT_01_035.

perform bdc_field using 'LFBW-WT_SUBJCT(02)'

record-WT_SUBJCT_02_036.

perform bdc_field using 'LFBW-WT_SUBJCT(03)'

record-WT_SUBJCT_03_037.

perform bdc_field using 'LFBW-WT_SUBJCT(04)'

record-WT_SUBJCT_04_038.

perform bdc_field using 'LFBW-WT_SUBJCT(05)'

record-WT_SUBJCT_05_039.

perform bdc_field using 'LFBW-WT_SUBJCT(06)'

record-WT_SUBJCT_06_040.

perform bdc_field using 'LFBW-QSREC(01)'

record-QSREC_01_041.

perform bdc_field using 'LFBW-QSREC(02)'

record-QSREC_02_042.

perform bdc_field using 'LFBW-QSREC(03)'

record-QSREC_03_043.

perform bdc_field using 'LFBW-QSREC(04)'

record-QSREC_04_044.

perform bdc_field using 'LFBW-QSREC(05)'

record-QSREC_05_045.

perform bdc_field using 'LFBW-QSREC(06)'

record-QSREC_06_046.

perform bdc_dynpro using 'SAPMF02K' '0610'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-QLAND'.

perform bdc_field using 'LFB1-QLAND'

record-QLAND_047.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-XNBWY'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

record-WAERS_048.

perform bdc_field using 'LFM1-ZTERM'

record-ZTERM_049.

perform bdc_field using 'LFM1-KALSK'

record-KALSK_050.

perform bdc_field using 'LFM1-WEBRE'

record-WEBRE_051.

perform bdc_field using 'LFM1-XNBWY'

record-XNBWY_052.

perform bdc_field using 'LFM1-LEBRE'

record-LEBRE_053.

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

clear bdcdata[].

clear record.

endloop.

PERFORM log_show.

----


  • Start new screen *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. "BDC_DYNPRO

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

  • IF FVAL <> NODATA.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

  • ENDIF.

ENDFORM. "BDC_FIELD

&----


*& Form bdc_transaction

&----


  • text

----


FORM bdc_transaction .

DATA tcode LIKE tstc-tcode.

tcode = 'XK01'.

CALL TRANSACTION tcode USING bdcdata

MODE 'A'

MESSAGES INTO messtab.

PERFORM msg_generation.

ENDFORM. "bdc_transaction

&----


*& Form read_file

&----


  • text

----


FORM read_file .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = file_path

filetype = 'ASC'

has_field_separator = 'X'

  • HEADER_LENGTH = 0

read_by_line = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

data_tab = record

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF sy-subrc <> 0.

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

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

ENDIF.

ENDFORM. " read_file

&----


*& Form msg_generation

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM msg_generation .

DATA: l_mstring(480).

DATA: l_subrc LIKE sy-subrc.

DATA: l_error TYPE c.

LOOP AT messtab.

  • add message to log file

CLEAR l_s_msg.

l_s_msg-msgty = messtab-msgtyp.

l_s_msg-msgid = messtab-msgid.

l_s_msg-msgno = messtab-msgnr.

l_s_msg-msgv1 = messtab-msgv1.

l_s_msg-msgv2 = messtab-msgv2.

l_s_msg-msgv3 = messtab-msgv3.

l_s_msg-msgv4 = messtab-msgv4.

CALL FUNCTION 'BAL_LOG_MSG_ADD'

EXPORTING

i_log_handle = l_log_handle

i_s_msg = l_s_msg

EXCEPTIONS

OTHERS = 1.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

IF messtab-msgtyp EQ 'E' OR l_subrc NE 0.

l_error = 'X'.

ENDIF.

ENDLOOP.

CLEAR messtab[].

ENDFORM. " msg_generation

&----


*& Form log_create

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM log_create .

CALL FUNCTION 'BAL_LOG_CREATE'

EXPORTING

i_s_log = l_s_log

IMPORTING

e_log_handle = l_log_handle

EXCEPTIONS

OTHERS = 1.

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

&----


*& Form log_show

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM log_show .

DATA:

l_s_display_profile TYPE bal_s_prof.

  • get a prepared profile

CALL FUNCTION 'BAL_DSP_PROFILE_SINGLE_LOG_GET'

IMPORTING

e_s_display_profile = l_s_display_profile

EXCEPTIONS

OTHERS = 1.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

  • use grid for display if wanted

l_s_display_profile-use_grid = 'X'.

  • set report to allow saving of variants

l_s_display_profile-disvariant-report = sy-repid.

  • when you use also other ALV lists in your report,

  • please specify a handle to distinguish between the display

  • variants of these different lists, e.g:

l_s_display_profile-disvariant-handle = 'LOG'.

  • call display function module

  • We do not specify any filter (like I_S_LOG_FILTER, ...,

  • I_T_MSG_HANDLE) since we want to display all logs available

CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'

EXPORTING

i_s_display_profile = l_s_display_profile

EXCEPTIONS

OTHERS = 1.

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

0 Kudos

Hello Thks for your help i will try to use your code.

thks