2012 Jul 17 11:25 AM
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| FOR CHANGING VENDOR | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| FOR CHANGING VENDOR | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
TWO LOGS ARE ATTACHED AS PICTURES
THANKS IN ADVANCE
.
2012 Jul 17 11:32 AM
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
2012 Jul 17 12:40 PM
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:-
I hope my point is clear to you.... Thank you 🙂
2012 Jul 17 1:33 PM
2012 Jul 17 11:35 AM
Did you explore using the SAP standard vendor upload program RFBIKR00?
2012 Jul 17 12:41 PM
No..... I have written a custom BDC Report using session method
2013 Jan 23 7:43 AM
Hello,
Plz write this with "perform transaction" statement, Its working fine.
Regards,
Akg
2013 Feb 01 10:42 AM
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 5 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.
DATA: file_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
2013 Feb 01 10:56 AM
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
2013 Feb 01 11:32 AM
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
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |