You are on page 1of 7

METHOD INPUT_MAPPING.

DATA: lt_message TYPE bapirettab.



DATA: ls_entrysheetheader TYPE bapiessrc,
lt_entrysheetaccountassignment TYPE tt_bapiesknc,
lt_entrysheetservices TYPE tt_bapiesllc,
lt_entrysheetsrvaccassvalues TYPE tt_bapiesklc,
lt_return TYPE tt_bapiret2,
lt_bapi_entrysheet_create TYPE bapi_entrysheet_create_tp,
lt_entrysheetservicestexts TYPE tt_bapieslltx,
lt_entrysheetheadertext TYPE tt_bapiessrtx,
lv_completetransind TYPE flag,
lv_memory_complete TYPE bapiflag-bapiflag,
lv_memory_uncomplete TYPE bapiflag-bapiflag.

*--------------------------------------------------------------------*
* Mapping Header and item data
*--------------------------------------------------------------------*
data lv_srv_mapping_ref type ref to cl_srv_mapping_xi2erp.
CALL METHOD cl_srv_mapping_xi2erp=>get_instance
IMPORTING
ev_srv_mapping_ref = lv_srv_mapping_ref.



CALL METHOD lv_srv_mapping_ref->map_ses_mapping_xi_2_erp
EXPORTING
is_input_message = is_input_message
IMPORTING
et_message = lt_return
et_bapi_entrysheet_create = lt_bapi_entrysheet_create.

et_return = lt_return.
et_bapi_entrysheet_create = lt_bapi_entrysheet_create.

ENDMETHOD.


METHOD process_in.

DATA:
ls_input_message TYPE srv_service_acknowledgement_er,
ls_input_message_orig TYPE srv_service_acknowledgement_er,
lv_po_number TYPE sapplco_business_transaction_d,
lt_messages TYPE bapirettab,
lt_messages_all TYPE bapirettab,
lr_badi TYPE REF TO srv_se_saerpcreaterequest,
lx_badi_error TYPE REF TO CX_APPL_PROXY_BADI_PROCESSING,
lo_log TYPE REF TO CL_OPS_SE_PROT,
lv_severity TYPE bapi_mtype,
lv_action_code TYPE sapplco_action_code, "sapplsef_action_code,
lv_ebeln TYPE ekko-ebeln,
lv_objkey type char70.

*Bapi data
DATA: lt_bapi_entrysheet_create TYPE bapi_entrysheet_create_tp.


ls_input_message = is_input-service_acknowledgement_erpcre.
ls_input_message_orig = is_input-service_acknowledgement_erpcre.

* Forward Error Handling
DATA: lt_post_mapping TYPE bapi_entrysheet_create_tp,
ls_post_mapping LIKE LINE OF lt_post_mapping ,
ls_first_error TYPE bapiret2,
ls_f_object TYPE ech_str_object,
ls_error_cat TYPE ech_dte_error_category.

*---------------------------------------------------------------------*
* Creating an object for collecting of protocols
*---------------------------------------------------------------------*
CREATE OBJECT lo_log.


*---------------------------------------------------------------------*
* Check length of the incomming fields
*---------------------------------------------------------------------*
CALL METHOD me->check_incoming_fields
IMPORTING
et_messages = lt_messages
CHANGING
cs_input_message = ls_input_message.

*---------------------------------------------------------------------*
* add log to lo_prot
*---------------------------------------------------------------------*
APPEND LINES OF lt_messages TO lt_messages_all.
CALL METHOD lo_log->add_log( EXPORTING it_prot = lt_messages_all ).
CLEAR lt_messages.

*---------------------------------------------------------------------*
* check if error occured
*---------------------------------------------------------------------*
lv_severity = lo_log->get_severity( ).

IF lv_severity = 'E'.
et_return = lo_log->get_prot( ).

* Forward Error Handling ------------------------------------------------
----

CALL METHOD me->forward_error
EXPORTING
imt_return = et_return
im_object_cat = '1'
im_object_type = 'BUS2091'
im_object_key = '001'
im_input = is_input
im_pre_mapping = 'X'
i_ref_to_feh_reg = i_ref_to_feh_reg
CHANGING
ch_first_error = ls_first_error
ch_error_cat = ls_error_cat.

RAISE EXCEPTION TYPE cx_sapplco_standard_msg_fault.
* raise exception type cx_pur
* exporting
* textid = cx_pur=>pc_error
* cpdname = 'check_incoming_fields'
* clsname = 'CL_SRV_REQUEST_XI2ERP'.
ENDIF.


* Forward Error Handling ------------------------------------------------
----
IF it_post_mapping IS INITIAL.
* -----------------------------------------------------------------------
----

*---------------------------------------------------------------------*
* input mapping
*---------------------------------------------------------------------*

CALL METHOD me->input_mapping
EXPORTING
is_input_message = ls_input_message
IMPORTING
et_return = lt_messages
et_bapi_entrysheet_create = lt_post_mapping.

*---------------------------------------------------------------------*
* add log to lo_prot
*---------------------------------------------------------------------*
APPEND LINES OF lt_messages TO lt_messages_all.
CALL METHOD lo_log->add_log( EXPORTING it_prot = lt_messages_all ).
CLEAR lt_messages.

*---------------------------------------------------------------------*
* check if error occured
*---------------------------------------------------------------------*
lv_severity = lo_log->get_severity( ).
IF lv_severity = 'E'.
et_return = lo_log->get_prot( ).

CALL METHOD me->forward_error
EXPORTING
imt_return = et_return
im_object_cat = '1'
im_object_type = 'BUS2091'
im_object_key = '002'
im_input = is_input
im_pre_mapping = 'X'
i_ref_to_feh_reg = i_ref_to_feh_reg
CHANGING
ch_first_error = ls_first_error
ch_error_cat = ls_error_cat.

RAISE EXCEPTION TYPE cx_sapplco_standard_msg_fault.
* RAISE EXCEPTION TYPE cx_pur
* EXPORTING
* textid = cx_pur=>pc_error
* cpdname = 'input_mapping'
* clsname = 'CL_SRV_REQUEST_XI2ERP'.
ENDIF.


*---------------------------------------------------------------------*
* call BAdI inbound processing
*---------------------------------------------------------------------*
GET BADI lr_badi.

IF lr_badi IS BOUND.
TRY.

CALL BADI lr_badi->inbound_processing
EXPORTING
is_input_message = ls_input_message_orig
CHANGING
et_return = lt_messages
et_bapi_entrysheet_create = lt_post_mapping. "14
72838

CATCH: cx_badi_not_implemented. "#EC NO_HANDLER

CATCH CX_APPL_PROXY_BADI_PROCESSING INTO lx_badi_error.
CALL METHOD lo_log->add_exception
EXPORTING
io_exception = lx_badi_error.

lt_messages = lo_log->get_prot( ).
APPEND LINES OF lt_messages TO lt_messages_all.

ENDTRY.

ENDIF.

*---------------------------------------------------------------------*
* check if error occured
*---------------------------------------------------------------------*
lv_severity = lo_log->get_severity( ).
IF lv_severity = 'E'.
et_return = lo_log->get_prot( ).

* Forward Error Handling ------------------------------------------------
----
CALL METHOD me->forward_error
EXPORTING
imt_return = et_return
im_object_cat = '1'
im_object_type = 'BUS2091'
im_object_key = '003'
im_input = is_input
im_pre_mapping = 'X'
i_ref_to_feh_reg = i_ref_to_feh_reg
CHANGING
ch_first_error = ls_first_error
ch_error_cat = ls_error_cat.
*------------------------------------------------------------------------
----
RAISE EXCEPTION TYPE cx_sapplco_standard_msg_fault.
* RAISE EXCEPTION TYPE cx_pur
* EXPORTING
* textid = cx_pur=>pc_error
* cpdname = 'Badi->Inbound_Processing' "#EC NOTEXT
* clsname = 'CL_SRV_REQUEST_XI2ERP'.

* Forward Error Handling ------------------------------------------------
----
ENDIF.
ELSE.
lt_post_mapping = it_post_mapping.
*------------------------------------------------------------------------
----
ENDIF.

*-------- Instantiating SES Conf Out Class------------
Data Lo_SrvConf type ref to cl_se_srv_srvconf_out.
TRY.
CALL METHOD cl_se_srv_srvconf_out=>get_instance
receiving
re_instance = Lo_SrvConf.
CATCH cx_ai_system_fault.
ENDTRY.
*-------------------------------------------------------

LOOP AT lt_post_mapping INTO ls_post_mapping.
set update task local.
CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
EXPORTING
entrysheetheader = ls_post_mapping-entrysheetheader
TABLES
entrysheetaccountassignment = ls_post_mapping-
entrysheetaccountassignment
entrysheetservices = ls_post_mapping-entrysheetservices
entrysheetsrvaccassvalues = ls_post_mapping-
entrysheetsrvaccassvalues
return = lt_messages
entrysheetservicestexts = ls_post_mapping-
entrysheetservicestexts
entrysheetheadertext = ls_post_mapping-
entrysheetheadertext.
Commit work.

* " sending confirmation to SUS
TRY.
CALL METHOD lo_srvconf->process_out
EXPORTING
im_entry_header = ls_post_mapping-entrysheetheader
imt_entry_srvitem = ls_post_mapping-entrysheetservices
imt_messages = lt_messages.

CATCH cx_ai_system_fault .
CATCH cx_appl_proxy_badi_processing .
CATCH cx_ops_se .
ENDTRY.
commit work.

* " /sending confirmation to SUS
APPEND LINES OF lt_messages TO lt_messages_all.
CLEAR lt_messages.
ENDLOOP.
*add message to log
CALL METHOD lo_log->add_log( EXPORTING it_prot = lt_messages_all ).
CLEAR lt_messages.
*ADDING THE SUCCESS MESSAGES TO ET_RETURN.
IF lt_messages_all IS NOT INITIAL.
APPEND LINES OF lt_messages_all TO ET_RETURN.
ENDIF.

*---------------------------------------------------------------------*
* check if error occured
*---------------------------------------------------------------------*
lv_severity = lo_log->get_severity( ).
IF lv_severity = 'E'.
et_return = lo_log->get_prot( ).

lv_objkey = ls_post_mapping-entrysheetheader-po_number.
* Forward Error Handling ------------------------------------------------
----
* determine first error and error category
CALL METHOD me->forward_error
EXPORTING
imt_return = et_return
im_object_cat = '1'
im_object_type = 'BUS2091'
im_object_key = lv_objkey
im_input = is_input
im_pre_mapping = 'X'
i_ref_to_feh_reg = i_ref_to_feh_reg
CHANGING
ch_first_error = ls_first_error
ch_error_cat = ls_error_cat.
*------------------------------------------------------------------------
----
RAISE EXCEPTION TYPE cx_sapplco_standard_msg_fault.
* RAISE EXCEPTION TYPE cx_pur
* EXPORTING
* textid = cx_pur=>pc_error
* cpdname = 'Badi->Outbound_Processing' "#EC NOTEXT
* clsname = 'CL_SRV_REQUEST_XI2ERP'.
ENDIF.

ENDMETHOD.

You might also like