Get result of a routing task
Now that you have created a routing task the next step is to get the result of that routing task. The calculation of a routing task runs asynchronously. So you have to call another API to get the result of the calculation.
PARAMETERS: p_tsk_id type c LENGTH 40.
DATA:
routing_bf TYPE REF TO zco_irouting_bf,
output_data TYPE zget_routing_task_result_resp2,
input_data TYPE zget_routing_task_result1,
system_fault_exception TYPE REF TO cx_ai_system_fault,
curr_message LIKE LINE OF output_data-parameters-result-base-messages,
curr_message_text LIKE LINE OF curr_message-message_texts.
TRY.
CREATE OBJECT routing_bf EXPORTING logical_port_name = 'ZROUTING_BF_TEST1'.
CATCH cx_ai_system_fault INTO system_fault_exception.
WRITE 'Could not instantiate the routingBF '.
WRITE /.
WRITE system_fault_exception->get_text( ).
WRITE /.
RETURN.
ENDTRY.
input_data-parameters-request-base-client_ident_code = 'APITEST'.
input_data-parameters-request-base-client_system_id = 'T23_400'.
input_data-parameters-request-base-user_name = sy-uname.
APPEND 'EN' TO input_data-parameters-request-base-result_language_iso_codes.
input_data-parameters-request-task_id = p_tsk_id.
TRY.
routing_bf->get_routing_task_result( EXPORTING input = input_data
IMPORTING output = output_data ).
LOOP AT output_data-parameters-result-base-messages INTO curr_message.
READ TABLE curr_message-message_texts INTO curr_message_text INDEX 1.
WRITE curr_message_text-text.
WRITE /.
ENDLOOP.
IF output_data-parameters-result-base-has_errors = 'X'.
WRITE 'Could not get the referenced routing task with id'.
write input_data-parameters-request-task_id.
ELSE.
WRITE 'Could get the routing task with id '.
write input_data-parameters-request-task_id.
write /.
write 'The state of the routing task ist '.
WRITE output_data-parameters-result-routing_task_result-state.
ENDIF.
CATCH cx_ai_system_fault INTO system_fault_exception.
WRITE 'Error when calling get routing task result'.
WRITE /.
WRITE system_fault_exception->get_text( ).
ENDTRY.
If there were no errors in the result you have the state of the routing task in the result. There are three possible values:
- INPROGRESS: proposals (and ordering) might change in future calls.
- RANKED: ordering and proposals fixed, at least one supplement missing.
- COMPLETE: ordering and entries fixed, all supplements calculated.
Updated about 5 years ago