cancel
Showing results for 
Search instead for 
Did you mean: 

Proxy code Error CX_SY_OPEN_SQL_DB

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Marçal_Oliveras
Active Contributor
0 Kudos

Read this blog: [https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4846] [original link is broken] [original link is broken] [original link is broken];

Or check the post that I created when I needed the same: [;

Former Member
0 Kudos

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

Former Member
0 Kudos

Can you please tell me how do i add my code.

I am unable to do it.

Thanks

Former Member
0 Kudos

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

Former Member
0 Kudos

Thanks for the help.

Closed

Answers (0)