on 09-01-2009 4:59 PM
Hi All,
I have Server Proxy code written. It was working correctly.
But i got error "Error during proxy processing An exception with type CX_SY_OPEN_SQL_DB occurre but was not handled."
Can you please tell me how do I modify the proxy code to return all the error messages via the SOAP fault messages.
Where should I handle this exception.
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I have already written this code. Can you tell me where should i modify it.
{"
Declare internal tables
DATA: RETURN type STANDARD TABLE OF BAPIRET2,
CHARACTERISTICS type STANDARD TABLE OF ZMDM_CHARACTERISTICS,
SPANISH_TEXTS type STANDARD TABLE OF ZMDM_TEXT,
ENGLISH_TEXTS type STANDARD TABLE OF ZMDM_TEXT.
Declare work areas:
DATA: wa_CHARACTERISTICS type ZMDM_CHARACTERISTICS,
wa_ZECCPRODUCTS_ITEM2 type ZECCPRODUCTS_ITEM2,
wa_ZECCPRODUCTS_ITEM1 type ZECCPRODUCTS_ITEM1,
wa_ZECCPRODUCTS_ITEM type ZECCPRODUCTS_ITEM,
wa_RETURN type BAPIRET2,
wa_ZMDM_TEXT type ZMDM_TEXT.
Declare variables:
DATA: MATERIAL TYPE MATNR,
COUNTRY TYPE HERKL.
DATA: standard_data TYPE zexchange_fault_data,
detail_data TYPE zexchange_log_data.
Data Delcarations for Email message:
DATA: t_receivers type table of somlreci1 initial size 0,
wa_receivers type somlreci1,
t_message type standard table of solisti1 initial size 0,
l_message type solisti1,
t_packing_list type table of sopcklsti1 initial size 0,
wa_packing_list type sopcklsti1,
gd_sent_all(1) type c,
gd_doc_data type sodocchgi1.
DATA: c_x type c length 1 value 'X',
c_dc type c length 2 value 'DC',
l_messageID type c length 255.
data:
l_message_guid TYPE sxmsguid,
lo_protocol TYPE REF TO if_wsprotocol_message_id,
lo_server_context TYPE REF TO if_ws_server_context.
Populate internal tables***********************
MATERIAL = INPUT-ECCPRODUCTS-MATERIAL.
if INPUT-ECCPRODUCTS-COUNTRY is not INITIAL.
COUNTRY = INPUT-ECCPRODUCTS-COUNTRY.
endif.
***Populate characterstics
loop at INPUT-ECCPRODUCTS-CHARACTERISTICS-ITEM into wa_ZECCPRODUCTS_ITEM2.
wa_CHARACTERISTICS-CHAR_NAME = wa_ZECCPRODUCTS_ITEM2-CHAR_NAME .
wa_CHARACTERISTICS-CHAR_VALUE = wa_ZECCPRODUCTS_ITEM2-CHAR_VALUE .
APPEND wa_CHARACTERISTICS to CHARACTERISTICS.
clear: wa_ZECCPRODUCTS_ITEM2, wa_CHARACTERISTICS.
ENDLOOP.
***Populate SAPANISH TEXT
loop at INPUT-ECCPRODUCTS-SPANISH_TEXTS-ITEM into wa_ZECCPRODUCTS_ITEM.
wa_ZMDM_TEXT-LINE = wa_ZECCPRODUCTS_ITEM-LINE.
APPEND wa_ZMDM_TEXT to SPANISH_TEXTS.
clear: wa_ZECCPRODUCTS_ITEM, wa_ZMDM_TEXT.
ENDLOOP.
***Populate ENGLISH TEXT
loop at INPUT-ECCPRODUCTS-ENGLISH_TEXTS-ITEM into wa_ZECCPRODUCTS_ITEM1.
wa_ZMDM_TEXT-LINE = wa_ZECCPRODUCTS_ITEM1-LINE.
APPEND wa_ZMDM_TEXT to ENGLISH_TEXTS.
clear: wa_ZECCPRODUCTS_ITEM1, wa_ZMDM_TEXT.
ENDLOOP.
Get the Message ID . Used Later for Exception Handling
try.
lo_server_context = cl_proxy_access=>get_server_context( ).
lo_protocol ?= lo_server_context->get_protocol( if_wsprotocol=>message_id ).
l_message_guid = lo_protocol->get_message_id( ).
l_messageID = l_message_guid.
catch cx_ai_system_fault.
endtry.
Call the BAPI.
CALL FUNCTION 'ZMDM_TO_ECC_INTERFACE'
EXPORTING
MATERIAL = MATERIAL
COUNTRY = COUNTRY
TABLES
RETURN = RETURN
CHARACTERISTICS = CHARACTERISTICS
SPANISH_TEXTS = SPANISH_TEXTS
ENGLISH_TEXTS = ENGLISH_TEXTS
EXCEPTIONS
NO_DATA = 1
INVALID_MATERIAL = 2
INVALID_COUNTRY = 3
NO_CHARACTERISTICS = 4
INVALID_CHARACTERISTIC = 5
UPDATE_ERROR = 6
CHAR_UPDATE_ERROR = 7
MATERIAL_LOCKED = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
Exception Handling***********
Trigger an email.***************
if SY-MSGID eq 'ZMDM' AND SY-MSGTY eq 'E'
AND ( SY-MSGNO eq '006' or SY-MSGNO eq '007' or SY-MSGNO eq '008').
*Populate Message Body
if not RETURN[] is INITIAL.
loop at RETURN into wa_RETURN.
if wa_RETURN-TYPE eq 'E' AND ( wa_RETURN-ID eq 'M3' or wa_RETURN-ID eq 'CL' ).
standard_data-fault_text = 'An Exception has occured'.
standard_data-fault_url = 'urn:csc.hdsupply.com:masterdata:materials:sapappl'.
detail_data-severity = 'High'.
detail_data-text = wa_RETURN-MESSAGE.
detail_data-id = l_message_guid.
detail_data-url = 'Usernull'.
APPEND detail_data TO standard_data-fault_detail.
exit.
endif.
clear: detail_data, wa_RETURN.
ENDLOOP.
endif.
if not wa_RETURN-MESSAGE is INITIAL.
CONCATENATE wa_RETURN-MESSAGE '. Check the Message ID' l_messageid
'in' sy-sysid '-' sy-mandt 'for necessary action.'
into l_message SEPARATED BY ' '.
APPEND l_message to t_message.
gd_doc_data-doc_size = 1.
Populate the subject/generic message attributes
concatenate 'ECC Material Update Failure' MATERIAL into
gd_doc_data-obj_descr separated by ' '.
Describe the body of the message
clear: wa_packing_list,
t_packing_list.
refresh t_packing_list.
wa_packing_list-transf_bin = space.
wa_packing_list-head_start = 1.
wa_packing_list-head_num = 0.
wa_packing_list-body_start = 1.
describe table t_message lines wa_packing_list-body_num.
wa_packing_list-doc_type = 'RAW'.
append wa_packing_list to t_packing_list.
Add the recipients email address
clear: wa_receivers,
t_receivers.
refresh t_receivers.
wa_receivers-receiver = INPUT-ECCPRODUCTS-EMAIL_RECEIVER1.
wa_receivers-com_type = 'INT'.
wa_receivers-rec_type = 'U'.
append wa_receivers to t_receivers.
if INPUT-ECCPRODUCTS-EMAIL_RECEIVER2 is not INITIAL AND
INPUT-ECCPRODUCTS-EMAIL_RECEIVER2 ne 'Receiver2'.
wa_receivers-receiver = INPUT-ECCPRODUCTS-EMAIL_RECEIVER2.
wa_receivers-com_type = 'INT'.
wa_receivers-rec_type = 'U'.
append wa_receivers to t_receivers.
endif.
if INPUT-ECCPRODUCTS-EMAIL_RECEIVER3 is not INITIAL
AND INPUT-ECCPRODUCTS-EMAIL_RECEIVER3 ne 'Receiver3'.
wa_receivers-receiver = INPUT-ECCPRODUCTS-EMAIL_RECEIVER3.
wa_receivers-com_type = 'INT'.
wa_receivers-rec_type = 'U'.
append wa_receivers to t_receivers.
endif.
Call the FM to post the message to SAPMAIL
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gd_doc_data
put_in_outbox = c_x
commit_work = c_x
IMPORTING
sent_to_all = gd_sent_all
TABLES
packing_list = t_packing_list
contents_txt = t_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8.
endif.
else.
if not RETURN[] is INITIAL.
loop at RETURN into wa_RETURN.
if wa_RETURN-TYPE eq 'E' AND ( wa_RETURN-ID eq 'M3' or wa_RETURN-ID eq 'CL' ).
standard_data-fault_text = 'An Exception has occured'.
standard_data-fault_url = 'urn:csc.hdsupply.com:masterdata:materials:sapappl'.
detail_data-severity = 'High'.
detail_data-text = wa_RETURN-MESSAGE.
detail_data-id = l_message_guid.
detail_data-url = 'Usernull'.
APPEND detail_data TO standard_data-fault_detail.
endif.
clear: detail_data,wa_RETURN.
ENDLOOP.
endif.
endif.
if not standard_data is INITIAL.
RAISE EXCEPTION TYPE ZCX_EXCHANGE_FAULT_DATA
EXPORTING
TEXTID =
PREVIOUS =
AUTOMATIC_RETRY =
CONTROLLER =
NO_RETRY =
standard = standard_data.
endif.
endmethod.
"}
Thanks.
Edited by: NPrabhu on Sep 1, 2009 6:37 PM
Hi Naidu,
Its just an abap code which you can open through SPROXY and edit the code by selecting the proper message interface and the error you are facing is related to the Function Module exceptions used in the code not handled properly , please check for each FM used here and rectify the same.
Thanks and Regards
Sudharshan
User | Count |
---|---|
85 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.