on 08-05-2013 12:29 PM
Hi everyone,
I am beginning with the development of BOPF's
but I have some problems with the creation of a new BOPF object.
I created a ABAP Report with two steps.
In first step I am reading from an existing vehicle resource without problems.
In contrast, the creation of a new vehicle resource is not possible and I get no error messages thatmight help.
Attached my ABAP report.
Thanks for your help
Andreas
The source code ...
REPORT ZREP_GET_VEHICLE.
DATA: lo_srv_trq TYPE REF TO /bobf/if_tra_service_manager,
ls_selpar TYPE /bobf/s_frw_query_selparam,
lt_selpar TYPE /bobf/t_frw_query_selparam,
lo_message TYPE REF TO /bobf/if_frw_message,
lo_tra TYPE REF TO /bobf/if_tra_transaction_mgr,
ls_query_inf TYPE /bobf/s_frw_query_info,
lt_key TYPE /bobf/t_frw_key,
lt_root TYPE /SCMTMS/T_RES_VEH_ROOT_K,
ls_root TYPE /SCMTMS/s_RES_VEH_ROOT_K,
ls_root_save TYPE /SCMTMS/s_RES_VEH_ROOT_K,
lt_failed_key TYPE /bobf/t_frw_key,
lt_common TYPE /BOFU/T_BUPA_COMMON_K,
ls_common TYPE /BOFU/s_BUPA_COMMON_K,
lt_link TYPE /bobf/t_frw_key_link,
lt_item_key TYPE /bobf/t_frw_key,
lv_msg_text TYPE string,
lv_rejected TYPE abap_bool,
lt_rej_bo_key TYPE /bobf/t_frw_key2,
lt_mod TYPE /bobf/t_frw_modification,
ls_mod TYPE /bobf/s_frw_modification,
lo_chg TYPE REF TO /bobf/if_tra_change,
lt_messages TYPE /bobf/t_frw_message_k,
lv_test type wdy_boolean.
FIELD-SYMBOLS: <ls_root> TYPE /SCMTMS/S_RES_VEH_ROOT_K,
<ls_message> LIKE LINE OF lt_messages.
* Get an instance of a service manager for e.g. BO BusinessPartner
lo_srv_trq = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( /SCMTMS/IF_RES_VEHICLE_C=>sc_bo_key ).
* set an example query parameter
clear ls_selpar.
ls_selpar-attribute_name = /SCMTMS/IF_RES_VEHICLE_C=>SC_QUERY_ATTRIBUTE-ROOT-QU_BY_ATTRIBUTES-VEHICLERES_ID.
ls_selpar-option = 'EQ'.
ls_selpar-sign = 'I'.
ls_selpar-low = 'T-RES-AHA'.
APPEND ls_selpar TO lt_selpar.
lo_srv_trq->query( EXPORTING iv_query_key = /SCMTMS/IF_RES_VEHICLE_C=>SC_QUERY-ROOT-QU_BY_ATTRIBUTES
it_selection_parameters = lt_selpar
IMPORTING eo_message = lo_message
es_query_info = ls_query_inf
et_key = lt_key ).
CALL METHOD LO_MESSAGE->CHECK( RECEIVING EV_ERROR_MESSAGES = lv_test ).
if lv_test eq abap_false.
lo_srv_trq->retrieve( EXPORTING iv_node_key = /SCMTMS/IF_RES_VEHICLE_C=>sc_node-root
it_key = lt_key
iv_edit_mode = /bobf/if_conf_c=>sc_edit_read_only
IMPORTING eo_message = lo_message
et_data = lt_root
et_failed_key = lt_failed_key ).
read table lt_root into ls_root INDEX 1.
if sy-subrc eq 0.
ls_root_save = ls_root.
write: 'Name of the vehicle is ', ls_root-VEHICLERES_ID.
ENDIF.
* create new resource*************************************************
clear ls_mod.
ls_mod-node = /SCMTMS/IF_RES_VEHICLE_C=>sc_node-root.
ls_mod-key = /bobf/cl_frw_factory=>get_new_key( ).
ls_mod-change_mode = /bobf/if_frw_c=>sc_modify_create.
CREATE DATA ls_mod-data TYPE /SCMTMS/S_RES_VEH_ROOT_K.
ASSIGN ls_mod-data->* TO <ls_root>.
move-CORRESPONDING ls_root_save to <ls_root>.
<ls_root>-key = ls_mod-key.
<ls_root>-VEHICLERES_ID = 'T-RES-AHA1'.
APPEND ls_mod TO lt_mod.
lo_srv_trq->modify( EXPORTING it_modification = lt_mod
IMPORTING eo_change = lo_chg
eo_message = lo_message ).
if LO_MESSAGE->check( ) eq abap_true.
lo_message->get_messages( IMPORTING et_message = lt_messages ).
LOOP AT lt_messages ASSIGNING <ls_message>.
lv_msg_text = <ls_message>-message->get_text( ).
WRITE: / lv_msg_text.
ENDLOOP.
else.
* Save transaction to get data persisted
lo_tra = /bobf/cl_tra_trans_mgr_factory=>get_transaction_manager( ).
lo_tra->save( IMPORTING ev_rejected = lv_rejected
eo_change = lo_chg
eo_message = lo_message
et_rejecting_bo_key = lt_rej_bo_key ).
if LO_MESSAGE->check( ) eq abap_true.
lo_message->get_messages( IMPORTING et_message = lt_messages ).
LOOP AT lt_messages ASSIGNING <ls_message>.
lv_msg_text = <ls_message>-message->get_text( ).
WRITE: / lv_msg_text.
ENDLOOP.
endif.
endif.
endif.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Clark,
thanks for your help. But your solution doesn't work. Attached my new report
REPORT ZREP_GET_VEHICLE.
DATA: lo_srv_trq TYPE REF TO /bobf/if_tra_service_manager,
ls_selpar TYPE /bobf/s_frw_query_selparam,
lt_selpar TYPE /bobf/t_frw_query_selparam,
lo_message TYPE REF TO /bobf/if_frw_message,
lo_tra TYPE REF TO /bobf/if_tra_transaction_mgr,
ls_query_inf TYPE /bobf/s_frw_query_info,
lt_key TYPE /bobf/t_frw_key,
lt_root TYPE /SCMTMS/T_RES_VEH_ROOT_K,
ls_root TYPE /SCMTMS/s_RES_VEH_ROOT_K,
ls_root_save TYPE /SCMTMS/s_RES_VEH_ROOT_K,
lt_failed_key TYPE /bobf/t_frw_key,
lt_common TYPE /BOFU/T_BUPA_COMMON_K,
ls_common TYPE /BOFU/s_BUPA_COMMON_K,
lt_link TYPE /bobf/t_frw_key_link,
lt_item_key TYPE /bobf/t_frw_key,
lv_msg_text TYPE string,
lv_rejected TYPE abap_bool,
lt_rej_bo_key TYPE /bobf/t_frw_key2,
lt_mod TYPE /bobf/t_frw_modification,
ls_mod TYPE /bobf/s_frw_modification,
lo_chg TYPE REF TO /bobf/if_tra_change,
lt_messages TYPE /bobf/t_frw_message_k,
lv_test type wdy_boolean.
FIELD-SYMBOLS: <ls_root> TYPE /SCMTMS/S_RES_VEH_ROOT_K,
<ls_message> LIKE LINE OF lt_messages.
* Get an instance of a service manager for e.g. BO BusinessPartner
lo_srv_trq = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( /SCMTMS/IF_RES_VEHICLE_C=>sc_bo_key ).
* set an example query parameter
clear ls_selpar.
ls_selpar-attribute_name = /SCMTMS/IF_RES_VEHICLE_C=>SC_QUERY_ATTRIBUTE-ROOT-QU_BY_ATTRIBUTES-VEHICLERES_ID.
ls_selpar-option = 'EQ'.
ls_selpar-sign = 'I'.
ls_selpar-low = 'T-RES-AHA'.
APPEND ls_selpar TO lt_selpar.
lo_srv_trq->query( EXPORTING iv_query_key = /SCMTMS/IF_RES_VEHICLE_C=>SC_QUERY-ROOT-QU_BY_ATTRIBUTES
it_selection_parameters = lt_selpar
IMPORTING eo_message = lo_message
es_query_info = ls_query_inf
et_key = lt_key ).
CALL METHOD LO_MESSAGE->CHECK( RECEIVING EV_ERROR_MESSAGES = lv_test ).
if lv_test eq abap_false.
lo_srv_trq->retrieve( EXPORTING iv_node_key = /SCMTMS/IF_RES_VEHICLE_C=>sc_node-root
it_key = lt_key
iv_edit_mode = /bobf/if_conf_c=>sc_edit_read_only
IMPORTING eo_message = lo_message
et_data = lt_root
et_failed_key = lt_failed_key ).
read table lt_root into ls_root INDEX 1.
if sy-subrc eq 0.
ls_root_save = ls_root.
write: 'Name of the vehicle is ', ls_root-VEHICLERES_ID.
ENDIF.
* create new resource*************************************************
clear ls_mod.
ls_mod-node = /SCMTMS/IF_RES_VEHICLE_C=>sc_node-root.
ls_mod-key = /bobf/cl_frw_factory=>get_new_key( ).
ls_mod-node_cat = /SCMTMS/IF_RES_VEHICLE_C=>sc_node_category-root-root.
ls_mod-change_mode = /bobf/if_frw_c=>sc_modify_create.
CREATE DATA ls_mod-data TYPE /SCMTMS/S_RES_VEH_ROOT_K.
ASSIGN ls_mod-data->* TO <ls_root>.
move-CORRESPONDING ls_root_save to <ls_root>.
<ls_root>-key = ls_mod-key.
<ls_root>-VEHICLERES_ID = 'T-RES-AHA1'.
APPEND ls_mod TO lt_mod.
lo_srv_trq->modify( EXPORTING it_modification = lt_mod
IMPORTING eo_change = lo_chg
eo_message = lo_message ).
* Save transaction to get data persisted
lo_tra = /bobf/cl_tra_trans_mgr_factory=>get_transaction_manager( ).
lo_tra->save( IMPORTING ev_rejected = lv_rejected
eo_change = lo_chg
eo_message = lo_message
et_rejecting_bo_key = lt_rej_bo_key ).
if LO_MESSAGE->check( ) eq abap_true.
lo_message->get_messages( IMPORTING et_message = lt_messages ).
LOOP AT lt_messages ASSIGNING <ls_message>.
lv_msg_text = <ls_message>-message->get_text( ).
WRITE: / lv_msg_text.
ENDLOOP.
endif.
endif.
User | Count |
---|---|
9 | |
4 | |
3 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.