Hello,
I would suggest putting a break-point in this method, and try to create an object using WebUI/IC (BP or transaction creation).
You will then see how standard uses this method to create root object.
As an example, you could do something like that for initiating a BP (IV_OBJECT could be 'BuilHeader', BASE_ENTITY_STRUCTURE could be 'CRMST_HEADER_OBJECT_BUIL', IS_PARAMETERS of type CRMST_HEADER_OBJECT_BUIL) :
DATA : ls_dfies TYPE dfies, lt_dfies_tab TYPE TABLE OF dfies, lr_core TYPE REF TO cl_crm_bol_core, lr_fac TYPE REF TO cl_crm_bol_entity_factory, lr_data_entity TYPE REF TO cl_crm_bol_entity, lt_param TYPE crmt_name_value_pair_tab, ls_param TYPE crmt_name_value_pair. FIELD-SYMBOLS: <fs_field> TYPE any, <fs_line> TYPE any. lr_core = cl_crm_bol_core=>get_instance( ). lr_fac = lr_core->get_entity_factory( iv_object ). CALL FUNCTION 'DDIF_FIELDINFO_GET' EXPORTING tabname = base_entity_structure TABLES dfies_tab = lt_dfies_tab EXCEPTIONS OTHERS = 0. LOOP AT lt_dfies_tab INTO ls_dfies. ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE is_parameters TO <fs_field>. CHECK sy-subrc = 0. CHECK NOT <fs_field> IS INITIAL. ls_param-name = ls_dfies-fieldname. ls_param-value = <fs_field>. APPEND ls_param TO lt_param. ENDLOOP. CHECK lt_param[] IS NOT INITIAL. lr_data_entity = lr_fac->create( lt_param ).
Hope this helps.
Best regards,
Sylvain AGUETTAZ