2013 Dec 25 6:48 AM
Hi Experts,
I have some customized transaction if i click on one push button on that transaction . it automatically fill all the screens of standard transaction.though BDC CALL TRANSACTION METHODi done it.but my problem is
1-> when i put Display mode as 'N' it doesn't dispaly's any error message even some error occurs in screen's.
2-> when i put Display mode as 'E' it displays error screen.
but my requirement is if any error occur I want to display error message only in my customized transaction . i don't want to display the error screen's.so that user authorized to make changes the flat file only but not in screens.can anyone give solution for this.
Thanks in advance.
2013 Dec 25 7:04 AM
Hi Rajendra,
When you put the 'N' ( No-dispaly)! it will only store the error messages in the BDCMSGCOLL structure! it is possible to display the list of errors but no possible directly in the screen.
second Method 'E. yes you can display it.
My proposals are!
When you are calling the transaction with 'N'.
IF MODE = 'N'.
CALL TRANSACTION 'your txn. no.' USING bdcdata
OPTIONS FROM options SHOULD BE 'N'
MESSAGES INTO messtab.
READ MESSTAB WITH KEY MSGTYP = 'E'.
display the error messages by calling FM
OIUH_TP_ERROR_LIST_POPUP with in the transaction.
ELSE.
CONTINUE AS IT IS
ENDIF.
2013 Dec 25 7:18 AM
Thanks kiran for the reply but i dont want error's screens to be displayed.i just want error message
2013 Dec 25 8:08 AM
Hi Rajendra,
in both cases( N,E) you want to display the error messages? to capture the errors, use the suggested FM OIUH_TP_ERROR_LIST_POPUP
2013 Dec 25 8:00 AM
Dear Rajendra,
You can add the following code to get the error messages:
CALL TRANSACTION <Tcode> USING bdcdata
OPTIONS FROM options (N)
MESSAGES INTO i_messtab.
loop at i_messtab into wa_messtab.
call function RPY_MESSAGE_COMPOSE
IMPORTING
LANGUAGE = sy-langu
MESSAGE_ID = wa_messtab-MSGID
MESSAGE_NUMBER = wa_messtab-MSGNO
MESSAGE_VAR1 = wa_messtab-MSGV1
MESSAGE_VAR2) = wa_messtab-MSGV2
VALUE(MESSAGE_VAR3) = wa_messtab-MSGV3
VALUE(MESSAGE_VAR4) = wa_messtab-MSGV4
EXPORTING
MESSAGE_TEXT = LV_LISEL
" TABLES
*" LONGTEXT STRUCTURE TLINE OPTIONAL
EXCEPTIONS
MESSAGE_NOT_FOUND = 1.
"Use LV_LISEL to either populate ALV or Write message".
endloop.
Alternatively you can also use FM "BAPI_MESSAGE_GETDETAIL".
Best Regards,
2013 Dec 25 8:34 AM
Use mode N and BDCMSGCOLL table will contain messages. Use that internal tsble to display error in your screen
2013 Dec 25 9:37 AM
Hi Rajendra -
Here is an example - Please check.
Types : Begin of t_itab,
lifnr like lfa1-lifnr, "10
bukrs like t001-bukrs, "4
ktokk like rf02k-ktokk, "4
anred like lfa1-anred, "15
name1 like lfa1-name1, "35
sortl like lfa1-sortl, "10
land1 like lfa1-land1, "3
spras(2) , "2
akont like lfb1-akont, "10
fdgrv like lfb1-fdgrv, "10
end of T_itAB,
begin of t_error,
message type string,
end of t_error.
*--- 2
Data : i_itab type standard table of t_itab,
w_itab type t_itab,
DATA : I_BDCDATA type standard table of BDCDATA ,
w_BDCDATA type BDCDATA,
i_error type standard table of t_error,
w_error type t_error.
DATA i_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
v_msgtxt TYPE string,
*-- 3
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\WINDOWS\DESKTOP\VEND.TXT'
FILETYPE = 'ASC'
TABLES
data_tab = I_ITAB.
Loop at I_itab into wa_itab.
perform fill_bdc_Data.
call transaction 'XK01' using i_bdcdata
mode 'N'
update 'S'.
MESSAGES INTO i_messtab.
refresh i_bdcdata.
PERFORM FORMAT_MESSAGE.
endloop.
*&---------------------------------------------------------------------*
*& Form fill_bdc_Data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form fill_bdc_Data.
*--- 0100
w_bdcdata-PROGRAM = 'SAPMF02K'.
w_bdcdata-DYNPRO = '0100' .
w_bdcdata-DYNBEGIN = 'X'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'RF02K-LIFNR'.
w_bdcdata-fval = w_itab-lifnr.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'RF02K-BUKRS'.
w_bdcdata-fval = w_itab-bukrs.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'RF02K-KTOKK'.
w_bdcdata-fval = w_itab-ktokk.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'RF02K-KTOKK' .
w_bdcdata-fval = w_itab-ktokk.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE' .
w_bdcdata-fval = '/00'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
*--- 110
i_bdcdata-program = 'SAPMF02K'.
i_bdcdata-dynpro = '0110'.
i_bdcdata-dynbegin = 'X'.
append i_bdcdata.
clear i_bdcdata.
i_bdcdata-fnam = 'LFA1-ANRED' .
i_bdcdata-fval = itab-anred.
append i_bdcdata.
clear i_bdcdata .
w_bdcdata-fnam = 'LFA1-NAME1' .
w_bdcdata-fval = w_itab-name1.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
i_bdcdata-fnam = 'LFA1-SORTL' .
i_bdcdata-fval = itab-sortl.
append i_bdcdata.
clear i_bdcdata .
w_bdcdata-fnam = 'LFA1-LAND1' .
w_bdcdata-fval = w_itab-land1.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
.
w_bdcdata-fnam = 'LFA1-SPRAS' .
w_bdcdata-fval = itab-spras.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE' .
w_bdcdata-fval = '=VW'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
*--- 0120
w_bdcdata-program = 'SAPMF02K'.
w_bdcdata-dynpro = '0120'.
w_bdcdata-dynbegin = 'X'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE' .
w_bdcdata-fval = '=VW'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
*--- 130
w_bdcdata-program = 'SAPMF02K'.
w_bdcdata-dynpro = '0130'.
w_bdcdata-dynbegin = 'X'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE' .
w_bdcdata-fval = '=VW'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
*--- 210
w_bdcdata-program = 'SAPMF02K'.
w_bdcdata-dynpro = '0210'.
w_bdcdata-dynbegin = 'X'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'LFB1-AKONT' .
w_bdcdata-fval = w_itab-akont.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'LFB1-FDGRV' .
w_bdcdata-fval = w_itab-fdgrv.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE' .
w_bdcdata-fval = '=UPDA'.
append w_bdcdata to i_bdcdata.
clear w_bdcdata.
endform. " fill_bdc_Data
FORM format_message .
CLEAR lv_msgtxt.
READ TABLE it_messtab WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
lang = 'EN'
no = sy-msgno
v1 = sy-msgv1
v2 = sy-msgv2
v3 = sy-msgv3
v4 = sy-msgv4
IMPORTING
msg = lv_msgtxt
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
w_error-message = lv_msgtxt.
append w_error to i_error.
clear w_error.
ENDIF.
ENDIF.
ENDFORM. " FORMAT_MESSAGE
2013 Dec 25 10:55 AM
Hi Rajendra,
while working on BDC, i always uses these code snippet, which shows all the error and
success messages at once, just change transaction code as your standard transaction and see once. Change this code as per as your fields name in place of field1, field2, field3.
What you have to do is, when you gets your error and success messges, then call your z transaction
It will show you error and success messages in your Ztransaction.
The code is.
report ZFB01_POST_DOCUMENT
no standard page heading line-size 255.
INCLUDE zbdcrec.
TYPE-POOLS : TRUXS.
TYPES: BEGIN OF ty_input,
Your final data.
END OF ty_input.
DATA: it_input TYPE STANDARD TABLE OF ty_input WITH HEADER LINE ,
wa_input TYPE ty_input.
DATA : BEGIN OF options.
INCLUDE STRUCTURE ctu_params.
DATA : END OF options.
DATA: i_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
l_message LIKE bapiret2-message.
DATA: p_mode TYPE c.
DATA BEGIN OF it_error OCCURS 1.
DATA : text(100) TYPE c.
DATA END OF it_error.
DATA BEGIN OF it_success OCCURS 1.
DATA: text(100) TYPE c.
DATA END OF it_success.
DATA: it_raw TYPE truxs_t_text_data.
*--------------------------------------------------------------------*
* sELECTION sCREEN
*--------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS : p_path LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN : BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECTION-SCREEN SKIP 1.
PARAMETERS : mode_a RADIOBUTTON GROUP r1,
mode_n RADIOBUTTON GROUP r1.
SELECTION-SCREEN : END OF BLOCK b2.
*--------------------------------------------------------------------*
* AT SELECTION SCREEN
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE '
IMPORTING
file_name = p_path.
START-OF-SELECTION.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = it_raw " WORK TABLE
i_filename = p_path
TABLES
i_tab_converted_data = it_input[] "ACTUAL DATA
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT it_input.
IF sy-tabix EQ 1 . "for first row
CONTINUE.
ENDIF.
ENDLOOP.
*--------------------------------------------------------------------*\
* start of selection
*--------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM upload_data.
* Report for success
PERFORM success_text.
* Report for Error
PERFORM error_text.
END-OF-SELECTION.
*
* PERFORM bdc_transaction USING 'FB01'.
*
* PERFORM close_group.
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD_DATA .
IF mode_a EQ 'X'.
p_mode = 'A'.
ELSEIF mode_n EQ 'X'.
p_mode = 'N'.
ENDIF.
options-defsize = 'X'.
options-updmode = ''.
options-dismode = p_mode.
LOOP AT it_input INTO wa_input.
Your BDC data (code for BDC).
BDC Recording data.
CALL TRANSACTION 'txn. code' USING bdcdata
OPTIONS FROM options
MESSAGES INTO i_messtab.
IF SY-SUBRC NE 0.
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
id = sy-msgid
number = sy-msgno
language = sy-langu
textformat = 'ASC'
message_v1 = sy-msgv1
message_v2 = sy-msgv2
message_v3 = sy-msgv3
message_v4 = sy-msgv4
IMPORTING
message = l_message.
.
CONCATENATE l_message '-' wa_input-field1 wa_input-field2 wa_input-field3 INTO it_error-text
SEPARATED BY ' '.
APPEND it_error.
ELSE.
CONCATENATE 'DATA UPLOADED SUCCESSFULLY :' wa_input-field1 wa_input-field2 wa_input-field3
INTO it_success-text SEPARATED BY ' '.
APPEND it_success.
ENDIF.
REFRESH bdcdata.
CLEAR: wa_input,l_message.
ENDLOOP.
***ENDLOOP.
endform.
" UPLOAD_DATA
FORM success_text .
LOOP AT it_success.
AT FIRST.
WRITE :/10 'Following records successfully uploaded'.
ULINE.
ENDAT.
WRITE :/10 it_success-text.
ENDLOOP.
ENDFORM.
FORM error_text .
LOOP AT it_error.
AT FIRST.
WRITE :/10 'Following records are not uploaded'.
ULINE.
ENDAT.
WRITE :/10 it_error-text.
ENDLOOP.
ENDFORM.