Use the following code to display the messages returned from a BAPI call....
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = gv_vbeln
order_header_in = wa_order_header_in
order_header_inx = wa_order_header_inx
TABLES
return = itab_return
order_item_in = lt_order_item_in
order_item_inx = lt_order_item_inx
schedule_lines = lt_schedule_lines
schedule_linesx = lt_schedule_linesx.
PERFORM display_messages tables itab_return.
FORM display_messages tables p_itab_return type BAPIRET2_T.
DATA: ls_msg TYPE bapiret2.
CALL FUNCTION 'MESSAGES_INITIALIZE'.
LOOP AT p_itab_return INTO ls_msg.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
arbgb = ls_msg-id
msgty = ls_msg-type
msgv1 = ls_msg-message_v1
msgv2 = ls_msg-message_v2
msgv3 = ls_msg-message_v3
msgv4 = ls_msg-message_v4
txtnr = ls_msg-number
EXCEPTIONS
message_type_not_valid = 1
not_active = 2
OTHERS = 3.
ENDLOOP.
CALL FUNCTION 'MESSAGES_STOP'
EXCEPTIONS
a_message = 1
e_message = 2
i_message = 3
w_message = 4
OTHERS = 5.
CALL FUNCTION 'MESSAGES_SHOW'
EXPORTING
show_linno = ' '
EXCEPTIONS
inconsistent_range = 1
no_messages = 2
OTHERS = 3.
ENDFORM. " DISPLAY_MESSAGES








