I am calling the webservice from within a BizTalk orchestration. Here is the code from the generated function for the webservice.
function zsfn_get_document_references.
data _vo_factory type ref to if_fdt_factory.
data _vo_function type ref to if_fdt_function.
data _vo_dobj type ref to cl_fdt_data_object.
data _vo_object type ref to object.
data _vr_data type ref to data.
data _vr_data_ext type ref to data.
data _vr_data_res type ref to data.
data _v_id type if_fdt_types=>id.
data _vs_parameter type abap_parmbind.
data _vth_parameter type abap_parmbind_tab.
data _vs_name_value_pair type abap_parmbind.
data _vts_name_value_pair type abap_parmbind_tab.
data _v_timestamp type if_fdt_types=>timestamp.
field-symbols <_v_ext_any> type any.
field-symbols <_v_any> type any.
field-symbols <_v_any_tab> type any table.
field-symbols <_v_ext_tab> type any table.
get time stamp field _v_timestamp.
_vo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( ).
_vo_function = _vo_factory->get_function( iv_id = '005056B51A8A1EE382E7C02C500DC30E' ).
clear _vr_data.
get reference of is_production_order_header into _vr_data_ext.
cl_fdt_function_process=>move_data_to_data_object(
exporting
ir_data = _vr_data_ext
iv_function_id = '005056B51A8A1EE382E7C02C500DC30E'
iv_data_object = '005056B51A8A1EE382E7DC7F890C430E'
iv_timestamp = _v_timestamp
iv_trace_generation = ''
importing
er_data = _vr_data ).
_vs_name_value_pair-name = 'IS_PRODUCTION_ORDER_HEADER'.
_vs_name_value_pair-value = _vr_data.
insert _vs_name_value_pair into table _vts_name_value_pair.
clear _vr_data.
get reference of it_production_order_components into _vr_data_ext.
cl_fdt_function_process=>move_data_to_data_object(
exporting
ir_data = _vr_data_ext
iv_function_id = '005056B51A8A1EE382E7C02C500DC30E'
iv_data_object = '005056B51A8A1EE382E7F0BF30BE430E'
iv_timestamp = _v_timestamp
iv_trace_generation = ''
importing
er_data = _vr_data ).
_vs_name_value_pair-name = 'IT_PRODUCTION_ORDER_COMPONENTS'.
_vs_name_value_pair-value = _vr_data.
insert _vs_name_value_pair into table _vts_name_value_pair.
clear _vr_data.
get reference of it_production_order_config into _vr_data_ext.
cl_fdt_function_process=>move_data_to_data_object(
exporting
ir_data = _vr_data_ext
iv_function_id = '005056B51A8A1EE382E7C02C500DC30E'
iv_data_object = '005056B51A8A1EE382E7FEFB3D82C30E'
iv_timestamp = _v_timestamp
iv_trace_generation = ''
importing
er_data = _vr_data ).
_vs_name_value_pair-name = 'IT_PRODUCTION_ORDER_CONFIG'.
_vs_name_value_pair-value = _vr_data.
insert _vs_name_value_pair into table _vts_name_value_pair.
try.
cl_fdt_function_process=>get_data_object_reference(
exporting
iv_function_id = '005056B51A8A1EE382E7C02C500DC30E'
iv_data_object = '_V_RESULT'
importing
er_data = _vr_data ).
assign _vr_data->* to <_v_any>.
call method cl_fdt_function_process=>process
exporting iv_function_id = '005056B51A8A1EE382E7C02C500DC30E'
importing ea_result = <_v_any>
changing ct_name_value = _vts_name_value_pair.
_vo_dobj ?= _vo_factory->get_data_object( iv_id = '005056B51A8A1EE382E7CDA23913630E' ).
clear _vr_data_ext.
clear _vr_data_res.
get reference of ot_results into _vr_data_res.
call method _vo_dobj->move_to_external(
exporting
ir_internal = _vr_data
iv_external_type_name = 'ZSWS_00O2TQ6403YTY6PLT89LESD1Q'
importing
er_external = _vr_data_res ).
if _vr_data_res is not initial.
assign _vr_data_res->* to <_v_any>.
ot_results = <_v_any>.
endif.
catch cx_fdt_no_result.
message id 'SFDT_CODE_COMPOSER' type 'E' number '039' raising cx_fdt_no_result.
catch cx_fdt_arithmetic_error.
message id 'SFDT_CODE_COMPOSER' type 'E' number '040' raising cx_fdt_arithmetic_error.
catch cx_fdt_processing.
message id 'SFDT_CODE_COMPOSER' type 'E' number '041' raising cx_fdt_processing.
catch cx_fdt.
message id 'SFDT_CODE_COMPOSER' type 'E' number '041' raising cx_fdt.
endtry.
endfunction.
The program is no longer producing the expected results and there is an entry in the FDT_CC_0000 table for the decision table that is causing the problem. That is the only entry in the table in the client that is being called.
Client | 010 |
Universal Unique Identifier | 005056B51A8A1EE382E7C02C500DC30E |
Time Stamp | 99,991,231,235,959 |
Character Length 1 |
|
Time Stamp | 20,130,918,030,453 |
Object Type | CLAS |
Obj. Name | /FDT/00O2TQ6403YTY99BL33JJ0T8U |
User Name | SAPWEB |
Time Stamp | 20,130,918,174,245 |
sum of versions of code composing compo | 702,082 |
Usage | A |
Table Row | 0 |
I activated the decision table and now the entry in FDT_CC_0000 has disappeared. The function is now returning the correct results.
UPDATE:
It did it again. This time I ran the function module that was generated for webservice. It took longer, apparently something was compiling, and came back with incorrect results. Here is the entry from FDT_CC_0000 that did not exist until this happened.
Client | 010 |
Universal Unique Identifier | 005056B51A8A1EE382E7C02C500DC30E |
Time Stamp | 99,991,231,235,959 |
Character Length 1 |
|
Time Stamp | 20,130,918,190,955 |
Object Type | CLAS |
Obj. Name | /FDT/00O2TQ6403YTY99IEXW1FU426 |
User Name | TCLARK |
Time Stamp | 20,130,918,200,351 |
sum of versions of code composing compo | 702,082 |
Usage | A |
Table Row | 0 |
Message was edited by: Anthony Clark Removed the irrelevant data from the wrong client.