Vous êtes sur la page 1sur 3

* definition for conversion exit

l_chavl_in_c type rschavl, "#EC *


l_chavl_out_c type rschavl.
l_md_with_prefetch type rs_bool,

*=== Segments ===


field-symbols:
<_yt_SC_1> type table,
<_ys_SC_1> type _ty_s_SC_1.
field-symbols:
<_yt_TG_1> type _ty_t_TG_1,
<_yth_TG_1> type _ty_th_TG_1,
<_ys_TG_1> type _ty_s_TG_1.

* ==== 1. unpack segments


_r_SC_1 = i_r_inbound->get_segment( 0001 ).
_rdt_SC_1 = _r_SC_1->get_data( i_with_recno = rs_c_true ).
assign _rdt_SC_1->* to <_yt_SC_1>.
l_fieldname = 'RECORD_ALL'.
assign (l_fieldname) to <l_record_all>.
if sy-subrc = 0.
describe table <_yt_SC_1> lines <l_record_all>.
endif.

data :
l_r_lookup type ref to cl_rsdmd_lookup_master_data,
create object l_r_lookup.
data: l_t_attrnm_1 type rsdm_t_attrinm,
l_s_fieldnm_map_1 type cl_rsdmd_lookup_master_data=>_S_MAP_SRCFIELDN
M_IOBJFIELDNM,
l_t_fieldnm_map_1 type cl_rsdmd_lookup_master_data=>_T_MAP_SRCFIELDN
M_IOBJFIELDNM.

refresh l_t_attrnm_1.
append '0PROFIT_CTR' to l_t_attrnm_1.
refresh l_t_fieldnm_map_1.
clear l_s_fieldnm_map_1.
l_s_fieldnm_map_1-iobj_fieldnm = 'CO_AREA'.
l_s_fieldnm_map_1-src_fieldnm = 'CO_AREA'.
append l_s_fieldnm_map_1 to l_t_fieldnm_map_1.
clear l_s_fieldnm_map_1.
l_s_fieldnm_map_1-iobj_fieldnm = 'COSTCENTER'.
l_s_fieldnm_map_1-src_fieldnm = 'COSTCENTER'.
append l_s_fieldnm_map_1 to l_t_fieldnm_map_1.
call method l_r_lookup->prefetch
EXPORTING
i_iobjnm = '0COSTCENTER'
i_t_keys = <_yt_SC_1> "(Keys for which attributes are
to be looked up)
i_t_map = l_t_fieldnm_map_1
i_date = sy-datum
i_t_attrnm = l_t_attrnm_1
i_reset_prefetched_data = rs_c_true
EXCEPTIONS
read_error = 1
wrong_import_parameters = 2
buffer_limit_reached = 3
no_data_found = 4
no_such_attribute = 5
OTHERS = 6.
IF sy-subrc <> 0 and
sy-subrc <> 3 and "buffer limit reached -> single read
sy-subrc <> 4. "no data found -> single read -> error per record

endif.

call method l_r_lookup->fetch


EXPORTING
i_iobjnm = '0COSTCENTER'
i_key = <_ys_SC_1>
i_t_map = l_t_fieldnm_map_1
i_date = sy-datum
i_t_attrnm = l_t_attrnm_1
IMPORTING
e_s_data = _B_1-mview
EXCEPTIONS
read_error = 1
no_such_attribute = 2
wrong_import_parameters = 3
no_data_found = 4
OTHERS = 5.

---------
CLEAR _B_1-mview.
l_date_m = sy-datum.
CLEAR t_dep_m[].
s_dep_m-chanm = '0CO_AREA'.
s_dep_m-chavl_int = <_ys_SC_1>-CO_AREA.
APPEND s_dep_m TO t_dep_m.
s_dep_m-chanm = '0COSTCENTER'.
s_dep_m-chavl_int = <_ys_SC_1>-COSTCENTER.
APPEND s_dep_m TO t_dep_m.
l_chavl_m = <_ys_SC_1>-COSTCENTER.
CALL FUNCTION 'RRSV_CHA_VALUE_CONCATENATE'
EXPORTING
i_chanm = '0COSTCENTER'
i_chavl_int = l_chavl_m
IMPORTING
e_chavl_int = l_chavl_m
CHANGING
c_t_dep = t_dep_m
EXCEPTIONS
unknown_chanm = 1
invalid_format = 2
no_input_given = 3
OTHERS = 4.
IF sy-subrc <> 0.
CALL METHOD cl_rstran_runtime_exe=>convert_symessage
EXPORTING
i_s_context = _curr_rule
i_skip = rs_c_true
CHANGING
c_t_message = _lt_msg_rec.
RAISE EXCEPTION TYPE cx_rsrout_skip_record.
ENDIF.
REPLACE ALL OCCURRENCES OF '#' IN l_chavl_m WITH ` `.
CALL FUNCTION 'RSAU_READ_MASTER_DATA'
EXPORTING
i_iobjnm = '0COSTCENTER'
i_chavl = l_chavl_m
i_date = l_date_m
IMPORTING
e_structure = _B_1-mview
EXCEPTIONS
read_error = 1
no_such_attribute = 2
wrong_import_parameters = 3
chavl_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
IF sy-subrc = 4 and
p_check_master_data_exist is initial.
ElSE.
CALL METHOD cl_rstran_runtime_exe=>convert_symessage
EXPORTING
i_s_context = _curr_rule
i_skip = rs_c_true
CHANGING
c_t_message = _lt_msg_rec.
RAISE EXCEPTION TYPE cx_rsrout_skip_record.
ENDIF.
ENDIF.

Vous aimerez peut-être aussi