Задача: Получить доступные действия для заказа.
Решение: Получить список действий при помощи BOL можно при помощи следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
DATA: lo_entity TYPE REF TO cl_crm_bol_entity. DATA(lo_core) = cl_crm_bol_core=>get_instance( ). lo_core->start_up( 'ONEORDER' ). TRY. lo_entity ?= lo_core->get_root_entity( iv_object_name = 'BTOrder' iv_object_guid = CONV #( lv_head_guid ) ). " //you should know GUID of BT lo_entity = lo_entity->get_related_entity( 'BTOrderHeader' ). *// Если вы находитесь в классах для работы с WEB UI BTAdminH это и есть BTOrderHeader DATA(lo_actions_set) = lo_entity->get_related_entity( iv_relation_name = cl_ai_crm_utility=>c_crmt_reltn_btheader_action ). IF lo_actions IS BOUND. cl_ai_crm_utility=>get_ppf_action_list( EXPORTING io_action_bol_entity = lo_actions_set IMPORTING et_ppf_action = DATA(lt_action_list) ). ENDIF. CATCH cx_root INTO DATA(lx_root). ENDTRY. |
Настройка самих действий происходит в транзакциях
crmc_action_def - профиль операций
sppfdetcrm - планирование операций
Во время получения возникла проблема, когда все отлично работало в тестовой программе, но когда этот код вызывался в работающей системе, список действий не возвращался. Подозреваю, что из-за того что объект был до этого создан с набором компонентов 'BT' вместо 'ONEODER'. Метод reset не помог. Проблему решил запуская данный код в отдельном LUW.
Сам код нашел вот здесь
Теперь давайте выполним одно из действий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CALL METHOD cl_ai_crm_action_helper=>execute_action_by_guid EXPORTING iv_action_set = lo_actions_set iv_action_guid = guid действия. Внимание!!! - Он каждый раз разный. iv_action_description = '' iv_do_not_display_message = lv_do_not_display_message iv_message_service = lo_msg_srv RECEIVING rv_executed = DATA(lv_executed). cl_crm_uiu_bt_action_tools=>sent_modify_by_entity( lo_entity ). DATA(lo_transaction) = lo_entity->get_transaction( ). lo_transaction->save( ). lo_transaction->commit( ). |