07-14-2008 10:23 AM
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
07-14-2008 10:31 AM
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
07-14-2008 10:45 AM