09-10-2013 6:22 AM
Hi,
While running BDC with mode 'A'(All Screens) the database table is updating,But running with mode 'N' (No Screens) database table is not updating.Please help me..
Thanks
09-10-2013 9:07 AM
09-10-2013 11:53 AM
Hi Sai Ganesh,
While Recording you missed some activity i think so. Kindly Re-Record the BDC and check it will work.
Reason : When MODE is 'A' you are manually pressing ENTER key , SO warning message is taken.
But Mode 'N" that warning message not occur , So kindly Re-Record the BDC and Try.
Regards,
S.Chandrakumar
09-10-2013 12:48 PM
Hi Chandra,
It is updating for one region,i.e in selection screen i gave input is region.So it is working for Hyderabad region but not working for other regions.
09-11-2013 10:22 AM
Hi Sai Ganesh,
You are telling one region is working fine , and other is not working. SO kindly check the T.code manually for other region anything may be need data i think so. As well as check any validation for other region inside the user-exit .
Kindly tel me the T.Code i will try.
Regards,
S.Chandrakumar
09-12-2013 5:04 AM
09-10-2013 12:34 PM
Hi Ganesh,
Firsth Thing :
Run it with the mode 'E' to check where the program stops.
You will see any errors which are causing this issue.
Second Thing :
Have you debugged the issue ?
For ex : - This will capture the issue ..
CALL TRANSACTION 'XD01' USING IT_BDCDATA
MODE 'N' UPDATE 'S'
MESSAGES INTO ITAB_MESSAGES.
if sy-subrc ne 0.
IF sy-msgty EQ 'E' .
CLEAR wf_error_text.
SELECT SINGLE text INTO wf_error_text
FROM t100
WHERE sprsl = 'E'
AND arbgb = sy-msgid
AND msgnr = sy-msgno.
REPLACE FIRST OCCURRENCE OF '&' IN wf_error_text WITH sy-msgv1 .
REPLACE FIRST OCCURRENCE OF '&' IN wf_error_text WITH sy-msgv2 .
REPLACE FIRST OCCURRENCE OF '&' IN wf_error_text WITH sy-msgv3 .
REPLACE FIRST OCCURRENCE OF '&' IN wf_error_text WITH sy-msgv4 .
WRITE : / 'Error Messge:' , wf_error_text
endif
endif.
With the above two steps you will get the clarity on the issue so that we can do bug fixing accordingly.
In Many scenarios this issue ocurs due to miss recording for OK Code Enter, while running with ALL screens you will manually press enter so it will work.
In Case if you come across same scenario try with below instructions:
Try explicitly coding bdc ok code for enter in appropriate places.(i.e. the place where u need to press the enter)
Check this OK codes: /00 and =ENTR.
In most of the transactions OK code for enter will be /00.
Ex : -
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
before manually creating OK code.
Ex :
PERFORM bdc_dynpro USING 'PROGNAME' 'SCREEN No'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00' or 'ENTR'..etc
Best Regards,
NKC
09-10-2013 1:33 PM
Hi Ganesha,
I think you have to use the commit work statement to update the database.
or you can use the below code to get the error records
DATA:t_msg TYPE TABLE OF bdcmsgcoll,
wa_msg TYPE bdcmsgcoll,
wa_msg1(50).
CALL TRANSACTION 'ME51' USING t_bdcdata MODE 'w_mode' UPDATE 'S' MESSAGES INTO
t_msg.
IF sy-subrc = 0.
MESSAGE 'data uploaded into table eban' TYPE 's'.
ENDIF.
LOOP AT t_msg INTO wa_msg WHERE msgtyp = 'E' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_msg-msgid
msgnr = wa_msg-msgnr
msgv1 = wa_msg-msgv1
msgv2 = wa_msg-msgv2
msgv3 = wa_msg-msgv3
msgv4 = wa_msg-msgv4
IMPORTING
message_text_output = wa_msg1.
wa_output-msg_err = wa_msg1.
DATA:
wa_string(10) TYPE c.
wa_string = wa_kna1-matnr.
CONCATENATE wa_string wa_output-msg_err INTO wa_output-msg_err SEPARATED BY space.
APPEND wa_output-msg_err TO it_output.
w_error = p_error.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = w_error
FILETYPE = 'ASC'
* APPEND = ' '
* 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
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* FILELENGTH =
tables
data_tab = it_output
* 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. " IF sy-subrc <> 0.
ENDLOOP.
Thanks&Regards,
khaleel
09-10-2013 1:46 PM
Hi Khaleel,
I already done using function module 'Format_Message',but i commented out that code.Here is my code.Look into this,and run with this code.
TABLES: mbew.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_regio TYPE t001w-regio OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
* Declaration for Article Valuation (MBEW).
TYPES: BEGIN OF ty_mbew,
matnr TYPE matnr,
bwkey TYPE bwkey,
bwtar TYPE bwtar_d,
lbkum TYPE lbkum,
salk3 TYPE salk3,
verpr TYPE verpr,
laepr TYPE laepr,
END OF ty_mbew,
* Declaration for Company Codes (T001).
BEGIN OF ty_t001,
bukrs TYPE bukrs,
END OF ty_t001,
* Declaration for Sites/Branches (T001W).
BEGIN OF ty_t001w,
werks TYPE werks_d,
name1 TYPE name1,
END OF ty_t001w,
BEGIN OF ty_store,
store TYPE zstoredc-store,
END OF ty_store,
* Declaration for Article Valuation (MBEW).
BEGIN OF ty_mbew1,
matnr TYPE matnr,
bwkey TYPE bwkey,
verpr TYPE verpr,
END OF ty_mbew1,
* Declaration for Final Table.
BEGIN OF ty_final,
matnr TYPE matnr,
bwkey TYPE bwkey,
lbkum TYPE lbkum,
verpr TYPE verpr,
bukrs TYPE bukrs,
* date(10) type c,
END OF ty_final.
* Internal tables declaration
DATA: it_mbew TYPE STANDARD TABLE OF ty_mbew,
it_mbew1 TYPE STANDARD TABLE OF ty_mbew1,
it_mbew2 TYPE STANDARD TABLE OF ty_mbew1,
it_mbew3 TYPE STANDARD TABLE OF ty_mbew1,
it_t001 TYPE STANDARD TABLE OF ty_t001,
it_t001w TYPE STANDARD TABLE OF ty_t001w,
it_store TYPE STANDARD TABLE OF ty_store,
it_final TYPE STANDARD TABLE OF ty_final,
* Work area declaration
wa_mbew TYPE ty_mbew,
wa_mbew1 TYPE ty_mbew1,
wa_mbew2 TYPE ty_mbew1,
wa_mbew3 TYPE ty_mbew1,
wa_t001 TYPE ty_t001,
wa_t001w TYPE ty_t001w,
wa_store TYPE ty_store,
wa_final TYPE ty_final,
gt_return TYPE STANDARD TABLE OF bapiret2,
wa_return TYPE bapiret2.
START-OF-SELECTION.
* Fetch data from T001w table.
SELECT werks
name1
FROM t001w
INTO TABLE it_t001w
WHERE regio EQ p_regio
%_HINTS ORACLE '&max_in_blocking_factor 100&'.
SORT it_t001w BY werks.
SELECT store
FROM zstoredc
INTO TABLE it_store
FOR ALL ENTRIES IN it_t001w
WHERE store = it_t001w-werks.
* Fetch data from T001 table.
SELECT bukrs
FROM t001
INTO TABLE it_t001
WHERE bukrs = '2000'.
* Fetch data from MBEW table.
* SELECT matnr
* bwkey
* bwtar
* lbkum
* salk3
* verpr
* laepr
* FROM mbew
* INTO TABLE it_mbew
* FOR ALL ENTRIES IN it_t001w
* WHERE bwkey = it_t001w-werks
* AND lbkum NE 0
* AND verpr EQ 0
* %_HINTS ORACLE '&max_in_blocking_factor 100&'.
*
SELECT matnr
bwkey
bwtar
lbkum
salk3
verpr
laepr
FROM mbew
INTO TABLE it_mbew
FOR ALL ENTRIES IN it_store
WHERE bwkey = it_store-store
* and matnr BETWEEN '100000' and '699999'
* and matnr < 700000
AND lbkum NE 0
AND verpr EQ 0
%_HINTS ORACLE '&max_in_blocking_factor 100&'.
IF sy-subrc = 0.
SORT it_mbew BY bwkey.
DELETE it_mbew WHERE matnr > 699999.
ENDIF.
*** Fetch data from MBEW table.
SELECT matnr
bwkey
verpr
FROM mbew
INTO TABLE it_mbew1
FOR ALL ENTRIES IN it_mbew
WHERE matnr = it_mbew-matnr
* and matnr BETWEEN 100000 and 699999
AND verpr > 0.
** Move data from mbew1 to mbew2.
SORT it_mbew1 BY matnr verpr.
it_mbew2[] = it_mbew3[] = it_mbew1[].
* LOOP AT it_mbew1 INTO wa_mbew1 .
** LOOP at it_t001w into wa_t001w.
* READ TABLE it_t001w INTO wa_t001w WITH KEY werks = wa_mbew1-bwkey BINARY SEARCH.
* IF sy-subrc = 0.
* wa_mbew2-matnr = wa_mbew1-matnr.
* wa_mbew2-bwkey = wa_mbew1-bwkey.
* wa_mbew2-verpr = wa_mbew1-verpr.
* APPEND wa_mbew2 TO it_mbew2.
* CLEAR:wa_mbew2.
*
* ELSEIF sy-subrc <> 0.
*
** delete it_mbew1 where bwkey ne wa_t001w-werks.
* ENDIF.
* CLEAR:wa_mbew1,wa_t001w.
* ENDLOOP.
*endloop.
* LOOP AT it_mbew1 INTO wa_mbew1.
* CASE p_regio.
* WHEN '01'.
* DELETE it_mbew1 WHERE bwkey NS 'CH'." or bwkey ns 'BL' ).
* DELETE it_mbew3 WHERE bwkey NS 'BL'." or bwkey ns 'BL' ).
*
* DELETE it_mbew2 WHERE bwkey NS 'HY'.
*
* WHEN '10'.
* DELETE it_mbew1 WHERE bwkey NS 'HY' OR bwkey NS 'CH'.
* DELETE it_mbew2 WHERE bwkey NS 'BL'.
*
* WHEN '22'.
* DELETE it_mbew1 WHERE bwkey NS 'BL' OR bwkey NS 'HY'.
* DELETE it_mbew2 WHERE bwkey NS 'CH'.
* ENDCASE.
CASE p_regio.
WHEN '01'.
DELETE it_mbew1 WHERE bwkey NS 'CH'." or bwkey ns 'BL' ).
DELETE it_mbew3 WHERE bwkey NS 'BL'." or bwkey ns 'BL' ).
DELETE it_mbew2 WHERE bwkey NS 'HY'.
WHEN '10'.
DELETE it_mbew1 WHERE bwkey NS 'HY'." OR bwkey NS 'CH'.
DELETE it_mbew3 WHERE bwkey NS 'CH'.
DELETE it_mbew2 WHERE bwkey NS 'BL'.
WHEN '22'.
DELETE it_mbew1 WHERE bwkey NS 'BL'." OR bwkey NS 'HY'.
DELETE it_mbew3 WHERE bwkey NS 'HY'.
DELETE it_mbew2 WHERE bwkey NS 'CH'.
ENDCASE.
* For Test Purpose
** ENDLOOP.
* Move data to final internal table.
SORT it_mbew2 BY matnr verpr.
SORT it_mbew1 BY matnr verpr.
SORT it_mbew3 BY matnr verpr.
SORT it_mbew BY matnr bwkey.
LOOP AT it_mbew INTO wa_mbew ."where matnr between 100000 and 699999.
* READ TABLE it_t001w INTO wa_t001w WITH KEY werks = wa_mbew-bwkey BINARY SEARCH.
READ TABLE it_mbew2 INTO wa_mbew2 WITH KEY matnr = wa_mbew-matnr BINARY SEARCH.
IF sy-subrc = 0. "AND "wa_mbew2-verpr GT 0.
wa_final-matnr = wa_mbew-matnr.
wa_final-bwkey = wa_mbew-bwkey.
wa_final-lbkum = wa_mbew-lbkum.
wa_final-verpr = wa_mbew2-verpr.
CLEAR:wa_mbew2.
ELSE.
READ TABLE it_mbew1 INTO wa_mbew1 WITH KEY matnr = wa_mbew-matnr BINARY SEARCH.
IF sy-subrc = 0 .
wa_final-matnr = wa_mbew-matnr.
wa_final-bwkey = wa_mbew-bwkey.
wa_final-lbkum = wa_mbew-lbkum.
wa_final-verpr = wa_mbew1-verpr.
CLEAR:wa_mbew1.
ELSE.
READ TABLE it_mbew3 INTO wa_mbew1 WITH KEY matnr = wa_mbew-matnr BINARY SEARCH.
wa_final-matnr = wa_mbew-matnr.
wa_final-bwkey = wa_mbew-bwkey.
wa_final-lbkum = wa_mbew-lbkum.
wa_final-verpr = wa_mbew1-verpr.
CLEAR:wa_mbew1.
ENDIF.
ENDIF.
READ TABLE it_t001 INTO wa_t001 INDEX 1.
wa_final-bukrs = wa_t001-bukrs.
APPEND wa_final TO it_final.
CLEAR:wa_final, wa_mbew, wa_mbew2,wa_t001.
ENDLOOP.
* Call Transaction Method
TYPES: BEGIN OF record,
budat(010),
bukrs(004),
werks(004),
matnr(018),
lbkum(013),
verpr(015),
END OF record.
TYPES: BEGIN OF ty_mr21,
budat(010),
bukrs(004),
werks(004),
END OF ty_mr21.
TYPES : BEGIN OF ty_file,
budat(10),
bukrs(4),
werks(4),
matnr(18),
lbkum(13),
price(16),
mess(20),
END OF ty_file.
TYPES: BEGIN OF t_fieldname,
fieldname(20) TYPE c,
END OF t_fieldname.
TYPES:BEGIN OF ty_error,
msg_error TYPE c,
END OF ty_error.
DATA: BEGIN OF t_mess OCCURS 0, "Internal Table for Messages
msgnr(5),
mat_doc(15),
l_mstring(480),
END OF t_mess.
DATA: it_output TYPE TABLE OF ty_error,
wa_output LIKE LINE OF it_output.
DATA: it_record TYPE STANDARD TABLE OF record,
wa_record TYPE record,
wa_record1 TYPE record,
t_mr21 TYPE STANDARD TABLE OF ty_mr21,
t_file TYPE STANDARD TABLE OF ty_file,
w_file TYPE ty_file,
w_mr21 TYPE ty_mr21,
v_index TYPE sy-index.
DATA: lt_fieldname TYPE STANDARD TABLE OF t_fieldname,
lw_fieldname TYPE t_fieldname.
DATA: lv_file TYPE string, "string,"rlgrap-filename,
* lv_file TYPE rlgrap-filename,
lv_sheet TYPE rlgrap-filename VALUE 'Price_Details'.
DATA:it_bdcdata TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,
wa_bdcdata TYPE bdcdata,
it_msg TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0,
wa_msg TYPE bdcmsgcoll,
* it_msg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE, "Internal Table for Message Data
* t_bdcmsgcoll TYPE bdcmsgcoll,
l_mstring(480), "Message String1
l_mstring1(480).
* wa_msg1(50),
* it_error TYPE STANDARD TABLE OF record.
DATA:l_n TYPE char2,
l_msg TYPE string,
l_opt TYPE ctu_params,
v_fnam(100),
v_ind TYPE string,
v_flag,
v_temp TYPE i,
v_count TYPE i,
v_index_e TYPE i.
SORT it_final BY bukrs bwkey matnr.
LOOP AT it_final INTO wa_final.
WRITE sy-datum TO wa_record-budat.
w_mr21-budat = wa_record-budat.
w_mr21-bukrs = wa_record-bukrs = wa_final-bukrs.
w_mr21-werks = wa_record-werks = wa_final-bwkey.
wa_record-matnr = wa_final-matnr.
wa_record-lbkum = wa_final-lbkum.
wa_record-verpr = wa_final-verpr.
APPEND wa_record TO it_record.
APPEND w_mr21 TO t_mr21.
ENDLOOP.
SORT t_mr21 BY budat bukrs werks.
DELETE ADJACENT DUPLICATES FROM t_mr21 COMPARING ALL FIELDS.
*v_ind = 0.
LOOP AT t_mr21 INTO w_mr21.
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
PERFORM bdc_field USING 'MR21HEAD-BUDAT' w_mr21-budat.
PERFORM bdc_field USING 'MR21HEAD-BUKRS' w_mr21-bukrs.
PERFORM bdc_field USING 'MR21HEAD-WERKS' w_mr21-werks.
PERFORM bdc_field USING 'MR21HEAD-XBLNR' 'MAP CHANGE'.
PERFORM bdc_field USING 'MR21HEAD-BKTXT' 'PEC REQUEST'.
* move 1 to v_ind.
LOOP AT it_record INTO wa_record WHERE budat = w_mr21-budat
AND bukrs = w_mr21-bukrs
AND werks = w_mr21-werks.
v_count = v_count + 1.
v_temp = v_count MOD 11.
IF v_temp = 0.
v_ind = 10.
PERFORM bdc_process.
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
CALL TRANSACTION 'MR21' USING it_bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO it_msg.
CLEAR: wa_bdcdata.
REFRESH: it_bdcdata.
v_flag = 'X'.
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
PERFORM bdc_field USING 'MR21HEAD-BUDAT' w_mr21-budat.
PERFORM bdc_field USING 'MR21HEAD-BUKRS' w_mr21-bukrs.
PERFORM bdc_field USING 'MR21HEAD-WERKS' w_mr21-werks.
PERFORM bdc_field USING 'MR21HEAD-XBLNR' 'MAP CHANGE'.
PERFORM bdc_field USING 'MR21HEAD-BKTXT' 'PEC REQUEST'.
CLEAR:v_ind,v_temp.
ELSE.
PERFORM bdc_process.
CLEAR: v_flag.
ENDIF.
CLEAR: v_temp.
ENDLOOP.
IF v_flag IS INITIAL.
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
CALL TRANSACTION 'MR21' USING it_bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO it_msg.
ENDIF.
* PERFORM format_messages.
CLEAR: wa_bdcdata,v_flag,v_count,v_ind,w_mr21.
REFRESH: it_bdcdata.
ENDLOOP.
* LOOP AT t_mr21 INTO w_mr21.
* v_index = sy-tabix.
* READ TABLE it_msg INTO wa_msg INDEX v_index.
* IF wa_msg-msgv1 IS NOT INITIAL.
* LOOP AT t_mr21 INTO w_mr21.
SORT it_record BY werks matnr.
*data:qnty(13) type c.
LOOP AT it_record INTO wa_record.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = wa_record-lbkum.
*
* ENDIF.
IF wa_record-verpr <> 0.
*
w_file-budat = wa_record-budat.
w_file-bukrs = wa_record-bukrs.
w_file-werks = wa_record-werks.
w_file-matnr = wa_record-matnr.
w_file-lbkum = wa_record-lbkum.
w_file-price = wa_record-verpr.
w_file-mess = 'Newly changed Price'.
APPEND w_file TO t_file.
* CLEAR: w_file, v_index.
* endif.
* ENDLOOP.
ELSE.
*if wa_record-verpr = 0.
* LOOP AT it_record INTO wa_record WHERE budat = w_mr21-budat
* AND bukrs = w_mr21-bukrs
* AND werks = w_mr21-werks.
* if wa_record-verpr = 0.
w_file-budat = wa_record-budat.
w_file-bukrs = wa_record-bukrs.
w_file-werks = wa_record-werks.
w_file-matnr = wa_record-matnr.
w_file-lbkum = wa_record-lbkum.
w_file-price = wa_record-verpr.
w_file-mess = 'No Price Change'.
APPEND w_file TO t_file.
CLEAR: w_file.
*endif.
* ENDLOOP.
ENDIF.
ENDLOOP.
* ENDLOOP.
* ENDIF.
* ENDLOOP.
IF t_file IS INITIAL.
MESSAGE 'No data available to download' TYPE 'S' .
EXIT.
ENDIF.
lw_fieldname-fieldname = 'Date'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Company Code'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Site'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Article'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Quantity'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Price'.
APPEND lw_fieldname TO lt_fieldname.
lw_fieldname-fieldname = 'Message'.
APPEND lw_fieldname TO lt_fieldname.
* CONCATENATE 'C:\' 'Price_Change' '\' sy-uzeit '.xls' INTO lv_file." SEPARATED BY space.
* CONCATENATE 'C:\' 'Price' '\' 'Price_' sy-datum '_' sy-uzeit '.xls' INTO lv_file.
CONCATENATE 'C:\' 'Map' '\' 'Map_Change_' sy-datum '.xls' INTO lv_file.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
filetype = 'DAT'
write_field_separator = '#'
show_transfer_status = 'X'
TABLES
data_tab = t_file
fieldnames = lt_fieldname
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.
MESSAGE s398(00) WITH text-s01 lv_file.
ENDIF.
*CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'
* EXPORTING
* file_name = lv_file
** CREATE_PIVOT = 0
* DATA_SHEET_NAME = 'MAP'
** PIVOT_SHEET_NAME = ' '
** PASSWORD = ' '
** PASSWORD_OPTION = 0
* TABLES
** PIVOT_FIELD_TAB =
* DATA_TAB = t_file
* FIELDNAMES = lt_fieldname
** EXCEPTIONS
** FILE_NOT_EXIST = 1
** FILENAME_EXPECTED = 2
** COMMUNICATION_ERROR = 3
** OLE_OBJECT_METHOD_ERROR = 4
** OLE_OBJECT_PROPERTY_ERROR = 5
** INVALID_PIVOT_FIELDS = 6
** DOWNLOAD_PROBLEM = 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.
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
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
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR wa_bdcdata.
wa_bdcdata-fnam = fnam.
wa_bdcdata-fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM. "BDC_FIELD
*call transaction end
*&---------------------------------------------------------------------*
*& Form BDC_PROCESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM bdc_process .
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
PERFORM bdc_field USING 'MR21HEAD-SCREEN_VARIANT' 'MR21_LAGERMATERIAL_BWKEY_0250'.
v_ind = v_ind + 1.
CONCATENATE 'CKI_MR21_0250-MATNR(' v_ind ')' INTO v_fnam.
PERFORM bdc_field USING v_fnam wa_record-matnr.
CLEAR: v_fnam.
CONCATENATE 'CKI_MR21_0250-NEWVALPR(' v_ind ')' INTO v_fnam.
PERFORM bdc_field USING v_fnam wa_record-verpr.
CLEAR: v_fnam,wa_record.
ENDFORM. " BDC_PROCESS
*&---------------------------------------------------------------------*
*& Form FORMAT_MESSAGES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM format_messages .
** Formating Messages.
* DESCRIBE TABLE it_msg LINES v_index_e.
* READ TABLE it_msg INTO wa_msg INDEX v_index_e.
*
** CALL FUNCTION 'FORMAT_MESSAGE'
** EXPORTING
** id = it_msg-msgid
** lang = it_msg-msgspra
** no = it_msg-msgnr
** v1 = it_msg-msgv1
** v2 = it_msg-msgv2
** v3 = it_msg-msgv3
** v4 = it_msg-msgv4
** IMPORTING
** msg = l_mstring1
** EXCEPTIONS
** not_found = 1
** OTHERS = 2.
** CONDENSE l_mstring1.
** t_mess-mat_doc = wa_record-matnr.
** t_mess-l_mstring = l_mstring1(250).
** APPEND t_mess.
*
*
* CALL FUNCTION 'FORMAT_MESSAGE'
* EXPORTING
* id = wa_msg-msgid
* lang = wa_msg-msgspra
* no = wa_msg-msgnr
* v1 = wa_msg-msgv1
* v2 = wa_msg-msgv2
* v3 = wa_msg-msgv3
* v4 = wa_msg-msgv4
* IMPORTING
* msg = l_mstring1
* EXCEPTIONS
* not_found = 1
* OTHERS = 2.
* CONDENSE l_mstring1.
* t_mess-mat_doc = wa_record-matnr.
* t_mess-l_mstring = l_mstring1(250).
* APPEND t_mess.
*
*
*ENDFORM. " FORMAT_MESSAGES
09-10-2013 1:58 PM
Hi Ganesh,
While running in 'A'(All Screens) mode, the user is pressing enter (OK Code) which is why it is saving the data while running in background OK Code is not performed. There is error in the recording, so re record(SHDB) the transaction and it will work.
Close the thread when problem is solved.
Regards,
Prabir.
09-11-2013 8:55 AM
Hi Ganesh,
As i told earlier have you tried running BDC with Mode 'E'.
In many scenarios, OK code will miss in the recording.
Run your BDC and check at these points :
First run the BDC and check at which level (screen no) it is getting failed.
Once recognised put this line of code :
*
PERFORM bdc_field USING 'BDC_OKCODE' = '=ENTR'.
*
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
* - If identified, put an extra OK CODE here
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'.
.
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
* - If identified, put an extra OK CODE here
PERFORM bdc_dynpro USING 'SAPRCKM_MR21' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'
Kindly follow the previous instructions and analyse the issue.
Most of the scenarios we will comment the code ro we will miss the rcording...etc
I am sure this will fix the issue.
Best Regards,
NKC
09-10-2013 6:00 PM
hi ganesh,
While Recording i think you missed some activity . Kindly Re-Record the BDC and check it will work.
you can use MODE "E'' WITH UPDATE ''S'' so that it will display all errors . else u have to re-record the BDC.
09-11-2013 10:17 AM
Hello Ganesha,
same problem i have persist. it is sometime because in some Exit , if anyone have written commit work then BDC will not work in mode N and it will exits as it reaches to commit work. Pass RACOMMIT in BDC call might help you.
09-12-2013 5:07 AM
09-12-2013 8:05 AM
There is an option CTU_params ( strucutre ctu_params) in during Call Transcation..
09-11-2013 11:04 AM
hi,
Write commit work and check. because if you are running BDC for more than one record it may fail for some records. so its better to write commit work or wait upto some time.
Thanks,
Rajesh.
09-12-2013 5:05 AM