Download - Genil Class Web UI Code
Genil Class:
Attributes:
DESIGNTIME_MODE Constant Public Type CHAR1 Single-Character Indicator 'D'
RUNTIME_MODE Constant Public Type CHAR1 Single-Character Indicator 'R'
SHM_MODEL_LOAD_MODE Constant Public Type CHAR1 Single-Character Indicator 'S'
GC_HEADER Constant Public Type CRMT_EXT_OBJ_NAME External Name of Object 'RAJA_CAT_H'
GC_ITEM Constant Public Type CRMT_EXT_OBJ_NAME External Name of Object 'RAJA_CAT_ITEM'
GC_SEARCH Constant Public Type CRMT_EXT_OBJ_NAME External Name of Object 'RAJA_SEARCH'
GC_HEADER_ITEM_R Constant Public Type CRMT_RELATION_NAMEExternal Name of Object 'RAJA_HEADER_ITEM'
GC_SEARCH_R Constant Public Type CRMT_RELATION_NAME External Name of Object 'RAJA_SEARCH_H'
GT_HEADER Instance Attribute Public Type TT_HEADER
GT_ITEM Instance Attribute Public Type TT_ITEM
GC_DELTA_CHANGED Constant Public Type CRMT_DELTA Delta Flag 'M'
GC_DELTA_CREATED Constant Public Type CRMT_DELTA Delta Flag 'N'
GC_DELTA_DELETED Constant Public Type CRMT_DELTA Delta Flag 'D'
Methods:
1.
IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS:-
Returning@ VALUE( RT_OBJ_PROPS ) TYPE CRMT_OBJ_PROPERTIES_TAB Table of Business Object Attributes
method IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS.
select * FROM zraja_obj into CORRESPONDING FIELDS OF TABLE rt_obj_props.
endmethod.
2.IF_GENIL_APPL_MODEL~GET_MODEL:-
VALUE( RT_RELATION_DET ) TYPE CRMT_RELATION_DETAIL_TAB
method IF_GENIL_APPL_MODEL~GET_MODEL.
select * FROM zraja_model into CORRESPONDING FIELDS OF TABLE rt_relation_det.
endmethod.
3.
IF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT:-
@78\QImporting@ IV_QUERY_NAME TYPE CRMT_EXT_OBJ_NAME External Name of Object
IS_QUERY_PARAMETERS TYPE GENILT_QUERY_PARAMETERS
IT_SELECTION_PARAMETERS TYPE GENILT_SELECTION_PARAMETER_TAB Complex Search Condition
IV_ROOT_LIST TYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLIST Data Container - Root Object List Interface
method IF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT.
DATA: lt_request_obj TYPE crmt_request_obj_tab, ls_selection_parameters TYPE crmt_genil_order_search, lr_selection_parameters TYPE REF TO crmt_genil_order_search.
DATA lv_str TYPE string. data lv_and TYPE string VALUE ' '. DATA ls_param LIKE LINE OF IT_SELECTION_PARAMETERS. DATA lt_header TYPE TABLE OF ZST_PC_HEADER. DATA ls_header TYPE ZST_PC_HEADER.
DATA LT_PRODUCT_CAT_ID TYPE RANGE OF ZST_PC_HEADER-CATALOGUE_ID. data ls_PRODUCT_CAT_ID like line of LT_PRODUCT_CAT_ID.
DATA LT_PRODUCT_CAT_DESC TYPE RANGE OF ZST_PC_HEADER-DESCRIPTION. data ls_PRODUCT_CAT_DESC like line of LT_PRODUCT_CAT_DESC.
DATA LT_CATEGORY TYPE RANGE OF ZST_PC_HEADER-category_id. data ls_CATEGORY like line of LT_CATEGORY.
DATA LT_SUB_CATEGORY TYPE RANGE OF ZST_PC_HEADER-subcategory_id. data ls_SUB_CATEGORY like line of LT_SUB_CATEGORY.
DATA LT_STATUS TYPE RANGE OF ZST_PC_HEADER-status. data ls_STATUS like line of LT_STATUS.
DATA LT_CREATED_ON TYPE RANGE OF ZST_PC_HEADER-created_on. data ls_CREATED_ON like line of LT_CREATED_ON.
DATA LT_CREATED_BY TYPE RANGE OF ZST_PC_HEADER-created_by. data ls_CREATED_BY like line of LT_CREATED_BY.
DATA LR_OBJECT TYPE REF TO IF_GENIL_CONT_ROOT_OBJECT.
CASE iv_query_name.
WHEN gc_search.
loop at it_selection_parameters into ls_param.
case ls_param-ATTR_NAME. when 'PRODUCT_CAT_ID'.
MOVE-CORRESPONDING LS_PARAM TO ls_PRODUCT_CAT_ID. APPEND ls_PRODUCT_CAT_ID TO lt_PRODUCT_CAT_ID.
when 'DESCRIPTION'. MOVE-CORRESPONDING ls_param to LS_PRODUCT_CAT_DESC. append LS_PRODUCT_CAT_DESC to LT_PRODUCT_CAT_DESC.
when 'CATEGORY_ID'. MOVE-CORRESPONDING ls_param to ls_CATEGORY. append ls_CATEGORY to lT_CATEGORY.
when 'SUBCATEGORY_ID'. MOVE-CORRESPONDING ls_param to ls_SUB_CATEGORY. append ls_SUB_CATEGORY to lt_SUB_CATEGORY.
when 'STATUS'. MOVE-CORRESPONDING ls_param to ls_status. append ls_status to lt_status.
when 'CREATED_ON'. MOVE-CORRESPONDING LS_PARAM TO LS_created_on. APPEND LS_created_on TO LT_created_on.
when 'CREATED_BY'. MOVE-CORRESPONDING LS_PARAM TO ls_created_by. APPEND ls_created_by TO Lt_created_by. endcase.
endloop.
IF LT_product_cat_id IS NOT INITIAL. CONCATENATE LV_STR ' ZRAJA_CAT_H~CATALOGUE_ID IN LT_PRODUCT_CAT_ID' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_PRODUCT_CAT_DESC IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~DESCRIPTION IN LT_PRODUCT_CAT_DESC' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_category IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~CATEGORY_ID IN LT_CATEGORY' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_sub_category IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~SUB_CATEGORY_ID IN LT_SUB_CATEGORY' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_status IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~STATUS IN LT_STATUS' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_created_on IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~CREATED_ON IN LT_CREATED_ON' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
IF LT_created_BY IS NOT INITIAL. CONCATENATE LV_STR lv_and ' ZRAJA_CAT_H~CREATED_BY IN LT_CREATED_BY' INTO LV_STR SEPARATED BY SPACE. lv_and = ' AND '. ENDIF.
SELECT * from ZRAJA_CAT_H INTO CORRESPONDING FIELDS OF TABLE gt_header WHERE (lv_str).
if gt_header is not initial.
loop at gt_header into ls_header. try.
CALL METHOD IV_ROOT_LIST->ADD_OBJECT EXPORTING IV_OBJECT_NAME = gc_header IS_OBJECT_KEY = ls_header-CATALOGUE_ID RECEIVING RV_RESULT = lr_object.
CALL METHOD me->SET_ATTR_PROPS EXPORTING IV_ROOT = lr_object* IS_HEADER = ls_header* IS_ITEM = .
lr_object->set_attributes( ls_header ).
lr_object->set_key( ls_header-CATALOGUE_ID ).
catch CX_CRM_GENIL_DUPLICATE_REL CX_CRM_GENIL_MODEL_ERROR.
endtry. endloop.
ENDIF.
WHEN OTHERS. RETURN. ENDCASE.
endmethod.
4.
IF_GENIL_APPL_ALTERNATIVE_DSIL~LOCK_OBJECTS:-
@78\QImporting@ IV_MSG_SERVICE_ACCESS TYPE REF TO IF_GENIL_MSG_SERVICE_ACCESS Interface for Simple Access to Generic IL Message Service
CT_OBJECT_LIST TYPE CRMT_GENIL_OBJ_INST_LINE_TAB
method IF_GENIL_APPL_ALTERNATIVE_DSIL~LOCK_OBJECTS.
FIELD-SYMBOLS <ls_object> LIKE LINE OF ct_object_list.
LOOP AT ct_object_list ASSIGNING <ls_object>. <ls_object>-success = abap_true. ENDLOOP.endmethod.
5.
IF_GENIL_APPL_INTLAY~CREATE_OBJECTS:-
@78\QImporting@ IV_OBJECT_NAME TYPE CRMT_EXT_OBJ_NAME Type of Object to Be Created
IV_NUMBER TYPE INT4 DEFAULT 1 Number of Objects to Be Created
IT_PARAMETERS TYPE CRMT_NAME_VALUE_PAIR_TAB Parameter Table of Name-Value Pairs
IV_ROOT_LIST TYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLIST Data Container - Root Object List Interface
method IF_GENIL_APPL_INTLAY~CREATE_OBJECTS.
data LS_PARAMETERS LIKE LINE OF gt_header. data LT_REQUEST_OBJ type CRMT_REQUEST_OBJ_TAB. data lr_object TYPE REF TO if_genil_cont_root_object. data: LV_GUID type CRMT_GENIL_OBJECT_GUID.
field-symbols <LINE> type CRMT_NAME_VALUE_PAIR. field-symbols <VALUE> type DATA.
case IV_OBJECT_NAME. when gc_header. "#EC NOTEXT* fill parameter structure from name value pair table call method FILL_STRUCT_FROM_NVP_TAB EXPORTING IT_PARAMETERS = IT_PARAMETERS CHANGING CS_PARAMETER = LS_PARAMETERS.
* create IV_NUMBER orders do IV_NUMBER times.
call function 'GUID_CREATE' IMPORTING EV_GUID_16 = LV_GUID.
LS_PARAMETERS-CATALOGUE_ID = LV_GUID. LS_PARAMETERS-CREATED_ON = sy-datum. LS_PARAMETERS-CREATED_BY = sy-uname.
insert LS_PARAMETERS into table gt_header.
* add the new object to the container try. lr_object = IV_ROOT_LIST->ADD_OBJECT( IV_OBJECT_NAME = gc_header "#EC NOTEXT IS_OBJECT_KEY = LV_GUID ).
lr_object->set_attributes( LS_PARAMETERS ). lr_object->set_key( LV_GUID ).
catch CX_CRM_GENIL_DUPLICATE_REL CX_CRM_GENIL_MODEL_ERROR.
endtry. enddo.
endcase.endmethod.
6.
IF_GENIL_APPL_ALTERNATIVE_DSIL~DELETE_OBJECTS:-
@78\QImporting@ IV_MSG_SERVICE_ACCESS TYPE REF TO IF_GENIL_MSG_SERVICE_ACCESS Interface for Simple Access to Generic IL Message Service
CT_OBJECT_LIST TYPE CRMT_GENIL_OBJ_INST_LINE_TAB
method IF_GENIL_APPL_ALTERNATIVE_DSIL~DELETE_OBJECTS.
field-symbols: <ls_OBJect> like LINE OF CT_OBJECT_LIST. data lv_key_h type ZCATELOUGE_ID. DATA ls_header LIKE LINE OF gt_header.* loop at CT_OBJECT_LIST assigning <ls_OBJect>. case <ls_OBJect>-OBJECT_NAME. when gc_header.
CLEAR lv_key_h.
CALL METHOD cl_crm_genil_container_tools=>get_key_from_object_id EXPORTING iv_object_name = <ls_object>-object_name iv_object_id = <ls_object>-object_id IMPORTING es_key = lv_key_h.
IF lv_key_h IS NOT INITIAL.
delete gt_header WHERE catalogue_id = lv_key_h. delete gt_item WHERE catalogue_id = lv_key_h.
DELETE FROM zraja_cat_h where CATALOGUE_ID = lv_key_h . if sy-subrc = 0. DELETE FROM zraja_item WHERE CATALOGUE_ID = lv_key_h.
<ls_object>-success = ABAP_TRUE. ENDIF. endif.
endcase. endloop.endmethod.
7.
IF_GENIL_APPL_INTLAY~GET_OBJECTS:-
IT_REQUEST_OBJECTS TYPE CRMT_REQUEST_OBJ_TAB Table of Object Request Specifications
IV_ROOT_LIST TYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLIST Data Container - Root Object List Interface
method IF_GENIL_APPL_INTLAY~GET_OBJECTS. "Root Declarations
data LR_ROOT type ref to IF_GENIL_CONTAINER_OBJECT.
data LV_ROOT_NAME type CRMT_EXT_OBJ_NAME. data LV_cat_id type ZCATELOUGE_ID. data LV_ATTRIBUTES type ZST_PC_HEADER. data ls_header like LINE OF gt_header.
field-symbols: <REQ_OBJ> type CRMT_REQUEST_OBJ.
"Child Declarations
data LR_CHILDREN type ref to IF_GENIL_CONTAINER_OBJECTLIST. data LR_CHILD type ref to IF_GENIL_CONTAINER_OBJECT.
data LV_CHILD_NAME type CRMT_EXT_OBJ_NAME. data LV_KEY_ITEM type ZDE_ITEM_GUID. data LS_REQUEST_OBJECT type CRMT_REQUEST_OBJ. data ls_item like LINE OF gt_item.
field-symbols: <REL> type CRMT_RELATION_NAME.
LR_ROOT = IV_ROOT_LIST->GET_FIRST( ).
check LR_ROOT is bound.
LV_ROOT_NAME = LR_ROOT->GET_NAME( ).
case LV_ROOT_NAME.
when GC_HEADER.
call method LR_ROOT->GET_KEY IMPORTING ES_KEY = LV_cat_id.
while LR_ROOT is bound.
if LR_ROOT->CHECK_ATTR_REQUESTED( ) = ABAP_TRUE.
read table IT_REQUEST_OBJECTS assigning <REQ_OBJ> with key OBJECT_NAME = gc_header.
read table gt_header with key CATALOGUE_ID = lv_cat_id into ls_header.
if SY-SUBRC ne 0. SELECT * FROM ZRAJA_CAT_H INTO CORRESPONDING FIELDS OF ls_header
WHERE CATALOGUE_ID = lv_cat_id. ENDSELECT. if SY-SUBRC = 0. insert ls_header into table gt_header. endif. endif.
LR_ROOT->SET_ATTRIBUTES( Ls_header ). LR_ROOT->SET_KEY( Ls_header-CATALOGUE_ID ). SET_ATTR_PROPs( IV_ROOT = LR_ROOT ).
endif.
" check if dependent objects (items) should be read
if LR_ROOT->CHECK_RELS_REQUESTED( ) = ABAP_TRUE.
LR_CHILDREN = LR_ROOT->GET_CHILDREN( IV_AS_COPY = ABAP_FALSE ).
LR_CHILD = LR_CHILDREN->GET_FIRST( ).
while LR_CHILD is bound.
LV_CHILD_NAME = LR_CHILD->GET_NAME( ).
case LV_CHILD_NAME . when gc_item.
if LR_CHILD->CHECK_ATTR_REQUESTED( ) = ABAP_TRUE.
READ TABLE gt_item WITH key CATALOGUE_ID = LV_cat_id INTO ls_item .
if SY-SUBRC ne 0. SELECT * FROM ZRAJA_ITEM INTO CORRESPONDING FIELDS OF TABLE gt_item where CATALOGUE_ID = LV_cat_id. endif.
LOOP AT gt_item INTO ls_item WHERE CATALOGUE_ID = LV_cat_id . TRY. CALL METHOD LR_ROOT->add_child EXPORTING iv_relation_name = GC_HEADER_ITEM_R is_child_key = ls_item-ITEM_GUID RECEIVING rv_result = lr_child.** SET_ATTR_PROPS( IV_ROOT = lr_child ).
lr_child->set_attributes( ls_item ). lr_child->set_key( ls_item-ITEM_GUID ).
CATCH cx_crm_genil_duplicate_rel . CATCH cx_crm_genil_model_error .
ENDTRY. ENDLOOP. endif. endcase. LR_CHILD = LR_CHILDREN->GET_NEXT( ). endwhile. endif.
LR_ROOT = IV_ROOT_LIST->GET_NEXT( ). endwhile. endcase.endmethod.
8.
IF_GENIL_APPL_INTLAY~MODIFY_OBJECTS:-
@78\QImporting@ IV_ROOT_LIST TYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLIST Data Container - Root Object List Interface
IV_RETURN_ROOT_LIST TYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLIST Data Container - Root Object List Interface
ET_CHANGED_OBJECTS TYPE CRMT_GENIL_OBJ_INSTANCE_TABObject Table with Object Type and ID
method IF_GENIL_APPL_INTLAY~MODIFY_OBJECTS.
"Root/Header Declarations data: lr_root type ref to IF_GENIL_CONTAINER_OBJECT, lv_root_name type CRMT_EXT_OBJ_NAME.
data lv_cat_id TYPE ZCATELOUGE_ID.
data: LR_PROPS_OBJ type ref to IF_GENIL_OBJ_ATTR_PROPERTIES, LT_CHANGED_ATTR type CRMT_ATTR_NAME_TAB, LS_ATTRIBUTES type STR_HEADER, LV_GUID type CRMT_GENIL_OBJECT_GUID, LV_HEADER type ref to IF_GENIL_CONT_ROOT_OBJECT, ls_changed_object LIKE LINE OF ET_CHANGED_OBJECTS.
field-symbols: <HEADER_LINE> like LINE OF gt_header, <HEADER_OLD> type SIMPLE, <HEADER_NEW> type SIMPLE, <HEADER_NAME> type NAME_KOMP.
clear ET_CHANGED_OBJECTS.
lr_header = IV_ROOT_LIST->GET_FIRST( ).
check lr_header is bound.
lv_header_name = lr_header->GET_NAME( ).
case lv_header_name.
when GC_HEADER.
LV_HEADER = IV_ROOT_LIST->GET_FIRST( ).
while LV_HEADER is bound.
if LV_HEADER->GET_DELTA_FLAG( ) = GC_DELTA_CHANGED.
LV_PROPS_OBJ = LV_HEADER->GET_ATTR_PROPS_OBJ( ).
call method LV_PROPS_OBJ->GET_NAME_TAB_4_PROPERTY EXPORTING IV_PROPERTY = IF_GENIL_OBJ_ATTR_PROPERTIES=>MODIFIED IMPORTING ET_NAMES = LT_CHANGED_ATTR.
call method LV_HEADER->GET_KEY IMPORTING ES_KEY = lv_cat_id.
call method LV_HEADER->GET_ATTRIBUTES IMPORTING ES_ATTRIBUTES = LS_ATTRIBUTES.
read table gt_header assigning <HEADER_LINE> with key CATALOGUE_ID = lv_cat_id . if SY-SUBRC = 0. loop at LT_CHANGED_ATTR assigning <HEADER_NAME>. assign component <HEADER_NAME> of structure <HEADER_LINE> to <HEADER_OLD>. check SY-SUBRC = 0. assign component <HEADER_NAME> of structure LS_ATTRIBUTES to <HEADER_NEW>. check SY-SUBRC = 0. <HEADER_OLD> = <HEADER_NEW>. endloop. endif. ls_changed_object-OBJECT_NAME = GC_HEADER. ls_changed_object-OBJECT_ID = CL_CRM_GENIL_CONTAINER_TOOLS=>BUILD_OBJECT_ID( lv_cat_id ).
APPEND ls_changed_object to ET_CHANGED_OBJECTS. endif.
"""""""""""""""""""""""""""""""""""""'children""""""""""""""""""""""""""""""""""""""
data: LV_CHILDREN_LIST type ref to IF_GENIL_CONTAINER_OBJECTLIST, LV_CHILD type ref to IF_GENIL_CONTAINER_OBJECT, LV_CHILD_NAME type CRMT_EXT_OBJ_NAME.
data: "LV_PROPS_OBJ type ref to IF_GENIL_OBJ_ATTR_PROPERTIES, LT_CHANGED_ATTR_ITEM type CRMT_ATTR_NAME_TAB, LS_ATTRIBUTES_ITEM type CRMT_GENIL_PARTNER_ATTR, Lv_KEY_CHILD type ZDE_ITEM_GUID, LT_RETURN type BAPIRET2_T, LV_MSG_CONT type ref to CL_CRM_GENIL_BAPI_MESS_CONT, LS_CHILD_OBJ_INST type CRMT_GENIL_OBJ_INSTANCE, LV_DELTA type CRMT_DELTA, "LV_CAT_ID type ZCATELOUGE_ID, ls_item_attr TYPE str_item, LV_HEADER1 type ref to IF_GENIL_CONTAINER_OBJECT, ls_item like LINE OF gt_item.
field-symbols: <ITEM_LINE> like LINE OF gt_item, <ITEM_OLD> type SIMPLE, <ITEM_NEW> type SIMPLE, <ITEM_NAME> type NAME_KOMP.
LV_CHILDREN_LIST = LV_HEADER->GET_CHILDREN( IV_AS_COPY = ABAP_TRUE ).
LV_CHILD = LV_CHILDREN_LIST->GET_FIRST( ).
while LV_CHILD is bound.* branch according the object name LV_CHILD_NAME = LV_CHILD->GET_NAME( ). case LV_CHILD_NAME.
when gc_item.
LV_HEADER1 = LV_CHILD->GET_PARENT( ).
call method LV_HEADER1->GET_KEY IMPORTING ES_KEY = LV_CAT_ID.
LV_DELTA = LV_CHILD->GET_DELTA_FLAG( ).
case LV_DELTA.
when GC_DELTA_CHANGED.
LV_PROPS_OBJ = LV_CHILD->GET_ATTR_PROPS_OBJ( ).
call method LV_PROPS_OBJ->GET_NAME_TAB_4_PROPERTY EXPORTING IV_PROPERTY = IF_GENIL_OBJ_ATTR_PROPERTIES=>MODIFIED IMPORTING ET_NAMES = LT_CHANGED_ATTR_ITEM.
call method LV_CHILD->GET_KEY IMPORTING ES_KEY = Lv_KEY_CHILD.
call method LV_CHILD->GET_ATTRIBUTES IMPORTING ES_ATTRIBUTES = ls_item_attr.
read table gt_item assigning <ITEM_LINE> with key CATALOGUE_ID = lv_cat_id . if SY-SUBRC = 0. loop at LT_CHANGED_ATTR_ITEM assigning <ITEM_NAME>. assign component <ITEM_NAME> of structure <ITEM_LINE> to <ITEM_OLD>. check SY-SUBRC = 0. assign component <ITEM_NAME> of structure ls_item_attr to <ITEM_NEW>. check SY-SUBRC = 0.
<ITEM_OLD> = <ITEM_NEW>. endloop. endif.
LS_CHILD_OBJ_INST-OBJECT_NAME = gc_item.
LS_CHILD_OBJ_INST-OBJECT_ID = CL_CRM_GENIL_CONTAINER_TOOLS=>BUILD_OBJECT_ID( Lv_KEY_CHILD ).
append ls_changed_object to eT_CHANGED_OBJECTS.
when GC_DELTA_CREATED.
call method lv_child->GET_ATTRIBUTES IMPORTING ES_ATTRIBUTES = ls_item_attr.
call function 'GUID_CREATE' IMPORTING EV_GUID_16 = ls_item_attr-ITEM_GUID.
ls_item_attr-CATALOGUE_ID = LV_CAT_ID.
ls_item_attr-CREATED_BY = sy-uname. ls_item_attr-CREATED_ON = sy-datum. ls_item_attr-mode = 'N'.
APPEND ls_item_attr to gt_item.
try. LV_CHILD->SET_KEY( Lv_KEY_CHILD ). catch CX_CRM_GENIL_DUPLICATE_KEY.
endtry. LS_CHILD_OBJ_INST-OBJECT_NAME = gc_item. ls_changed_object-OBJECT_ID = CL_CRM_GENIL_CONTAINER_TOOLS=>BUILD_OBJECT_ID( ls_item_attr-ITEM_GUID ). append ls_changed_object to eT_CHANGED_OBJECTS.
when GC_DELTA_DELETED.* get the partner key call method lv_child->GET_KEY IMPORTING ES_KEY = Lv_KEY_CHILD.
READ TABLE gt_item INTO ls_item WITH KEY ITEM_GUID = Lv_KEY_CHILD.
ls_item-mode = 'D'. MODIFY gt_item FROM ls_item.
endcase. ENDCASE. LV_CHILD = LV_CHILDREN_LIST->GET_NEXT( ). endwhile.*** LV_Header = IV_ROOT_LIST->GET_NEXT( ). endwhile. endcase.endmethod.
9.
IF_GENIL_APPL_ALTERNATIVE_DSIL~SAVE_OBJECTS:-
@7A\QChanging@ CT_OBJECT_LIST TYPE CRMT_GENIL_OBJ_INST_LINE_TAB
ET_ID_MAPPING TYPE CRMT_GENIL_ID_MAPPING_TAB Table of ID Mapping Entries in Generic Interaction Layer
IV_MSG_SERVICE_ACCESS TYPE REF TO IF_GENIL_MSG_SERVICE_ACCESSInterface for Simple Access to Generic IL Message Service
method IF_GENIL_APPL_ALTERNATIVE_DSIL~SAVE_OBJECTS.*CALL METHOD SUPER->IF_GENIL_APPL_ALTERNATIVE_DSIL~SAVE_OBJECTS* EXPORTING* IV_MSG_SERVICE_ACCESS =** IMPORTING** ET_ID_MAPPING =* CHANGING* CT_OBJECT_LIST =* .
FIELD-SYMBOLS <ls_object> like line of ct_object_list. DATA lv_cat_id TYPE ZCATELOUGE_ID. DATA ls_header LIKE LINE OF gt_header. DATA ls_item LIKE LINE OF gt_item.
loop at ct_object_list ASSIGNING <ls_object>.
case <ls_OBJect>-OBJECT_NAME. when gc_header. CLEAR lv_cat_id. CALL METHOD cl_crm_genil_container_tools=>get_key_from_object_id EXPORTING iv_object_name = <ls_object>-object_name iv_object_id = <ls_object>-object_id IMPORTING es_key = lv_cat_id.
LOOP AT gt_header INTO ls_header WHERE CATALOGUE_ID = lv_cat_id .
MODIFY ZRAJA_CAT_H FROM ls_header.
LOOP AT gt_item INTO ls_item WHERE CATALOGUE_ID = lv_cat_id . MODIFY ZRAJA_ITEM FROM ls_item.
ENDLOOP. <ls_object>-success = 'X'. ENDLOOP. ENDCASE.
ENDLOOP.
endmethod.
10.
SET_ATTR_PROPS:-
@78\QImporting@ IV_ROOT TYPE REF TO IF_GENIL_CONTAINER_OBJECT OPTIONALData Container - Object Interface
IS_HEADER TYPE STR_HEADER OPTIONAL
IS_ITEM TYPE STR_ITEM OPTIONAL
method SET_ATTR_PROPS.
DATA: lr_attr_props TYPE REF TO if_genil_obj_attr_properties.
lr_attr_props = iv_root->get_attr_props_obj( ).
lr_attr_props->set_all_properties( if_genil_obj_attr_properties=>read_only ).
lR_attr_props->set_property_by_name( iv_name = 'DESCRIPTION' iv_value = if_genil_obj_attr_properties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'CATEGORY_ID' iv_value = if_genil_obj_attr_properties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'SUBCATEGORY_ID' iv_value = if_genil_obj_attr_properties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'STATUS' iv_value = if_genil_obj_attr_properties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'VALID_FROM' iv_value = if_genil_obj_attr_properties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'VALID_TO' iv_value = if_genil_obj_attr_properties=>changeable ).
endmethod.
11.
IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS:-
@7B\QReturning@ VALUE( RT_OBJ_PROPS ) TYPE CRMT_OBJ_PROPERTIES_TAB Table of Business Object Attributes
method IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS.
select * FROM zraja_obj into CORRESPONDING FIELDS OF TABLE rt_obj_props.
endmethod.
Web Ui Part:1.
For Linking Product Id :
Under Attributes:-
@78\QImporting@ IV_PROPERTY TYPE STRING Feldeigenschaft -> Siehe Interfacekonstanten
IV_INDEX TYPE I OPTIONAL Zeilenindex bei Tabelle
IV_DISPLAY_MODE TYPE ABAP_BOOL DEFAULT ABAP_FALSE Display Mode?
VALUE( RV_VALUE ) TYPE STRING Wert
method GET_P_CATLOG_ID. CASE iv_property. WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype. rv_value = cl_bsp_dlc_view_descriptor=>field_type_event_link. WHEN if_bsp_wd_model_setter_getter=>fp_onclick. rv_value = 'PROCATINFO'. ENDCASE.endmethod.
Then Under Event Method:
@78\QImporting@ HTMLB_EVENT TYP
E REF TO CL_HTMLB_EVENT OPTIONAL
HTMLB_EVENT_EX TYPE REF TO IF_HTMLB_DATA OPTIONAL
method EH_ONPROCATINFO.
DATA: lv_index TYPE int4. DATA: lr_current TYPE REF TO if_bol_bo_property_access. DATA: lr_col type ref to cl_crm_bol_entity_col. DATA: lv_guid type crmt_object_guid. data: lr_core TYPE REF TO cl_crm_bol_core. data: lr_ent type ref to cl_crm_bol_entity, lr_property TYPE REF TO if_bol_bo_property_access. DATA: lr_data_collection TYPE REF TO if_bol_bo_col. DATA: lr_nav_srv TYPE REF TO if_crm_ui_navigation_service.
cl_thtmlb_util=>get_event_info( exporting iv_event = htmlb_event_ex importing ev_index = lv_index ).
* get current entity and pass it to outbound plug. lr_current = me->typed_context->SEARCHRESULT->collection_wrapper->find( iv_index = lv_index ).
CHECK lr_current is BOUND.
CREATE OBJECT lr_data_collection TYPE cl_crm_bol_bo_col.
lr_ent ?= lr_current. lr_data_collection->add( lr_ent ).
OP_TOSEARCHMAINWINDOW( lr_data_collection ).endmethod.
2.
For Dynamic Drop Down:
IV_PROPERTY TYPE STRING Feldeigenschaft -> Siehe Interfacekonstanten
IV_INDEX TYPE I OPTIONAL Zeilenindex bei Tabelle
IV_DISPLAY_MODE TYPE ABAP_BOOL DEFAULT ABAP_FALSE Display Mode?
VALUE( RV_VALUE ) TYPE STRING Wert
method GET_P_CATEGORY. CASE iv_property. WHEN if_bsp_wd_model_setter_getter=>FP_FIELDTYPE. rv_value = if_bsp_dlc_view_descriptor=>FIELD_TYPE_PICKLIST.* WHEN if_bsp_wd_model_setter_getter=>FP_SERVER_EVENT.
* rv_value = 'FILL_SUBCATAGORY_DDL'. ENDCASE.endmethod.
Then Under GET_V_CATEGORY:
@78\QImporting@ IV_MODE TYPE CHAR1 DEFAULT IF_BSP_WD_MODEL_SETTER_GETTER=>RUNTIME_MODE Aufrufmodus
IV_INDEX TYPE I OPTIONAL Zeilenindex bei Tabelle
VALUE( RV_VALUEHELP_DESCRIPTOR ) TYPE REF TO IF_BSP_WD_VALUEHELP_DESCRIPTOR
method GET_V_CATEGORY. data lr_ddlb type ref to cl_crm_uiu_ddlb. data lt_select_table type BSP_WD_DROPDOWN_TABLE. data ls_select_table like line of lt_select_table. data lt_category type table of ZG1P_CATEGORY. data ls_category like line of lt_category. refresh lt_select_table. CREATE OBJECT LR_DDLB EXPORTING IV_SOURCE_TYPE = iv_mode. select CATEGORYID CATEGORYNAME from ZG1P_CATEGORY into CORRESPONDING FIELDS OF TABLE lt_category.
if lt_category is not INITIAL. insert INITIAL LINE INTO lt_select_table index 1. loop at lt_category into ls_category. ls_select_table-key = ls_category-CATEGORYID. ls_select_table-value = ls_category-CATEGORYNAME. append ls_select_table to lt_select_table. endloop.
CALL METHOD LR_DDLB->SET_SELECTION_TABLE EXPORTING IT_SELECTION_TABLE = lt_select_table. rv_valuehelp_descriptor = lr_ddlb. endif.endmethod.
Then Under Method
ZL_ZG1_PCAT_SEARCHREQUEST_IMPL -> GET_DQUERY_DEFINITIONS :
@7B\QReturning@ VALUE( RT_RESULT ) TYPE CRMT_THTMLB_SEARCH_FIELD_INFO
method GET_DQUERY_DEFINITIONS.*CALL METHOD SUPER->GET_DQUERY_DEFINITIONS* RECEIVING* RT_RESULT =* .
FIELD-SYMBOLS: <rt_result> TYPE crms_thtmlb_search_field_info.
* data : lt_ddl TYPE CRMS_THTMLB_SEARCH_DDLB_NVP.
DATA lr_sq TYPE REF TO cl_crm_bol_dquery_service. DATA lr_sel TYPE REF TO if_bol_bo_col. DATA ls_sel TYPE genilt_selection_parameter. DATA lr_prop TYPE REF TO if_bol_bo_property_access.
data : catagory type string.
data lr_ddlb type ref to cl_crm_uiu_ddlb. data lt_select_table type CRMT_THTMLB_SEARCH_DDLB_NVP. data ls_select_table like line of lt_select_table. data lt_SUBcategory type table of ZG1P_SUB_CAT. data ls_SUBcategory like line of lt_SUBcategory. refresh lt_select_table.
CALL METHOD super->get_dquery_definitions RECEIVING rt_result = rt_result.
lr_sq ?= me->typed_context->SEARCHREQUEST->collection_wrapper->get_current( ). if lr_sq is bound. CALL METHOD lr_sq->get_selection_params RECEIVING rv_result = lr_sel.
IF lr_sel IS BOUND. lr_prop = lr_sel->get_first( ). WHILE lr_prop IS BOUND.
CALL METHOD lr_prop->get_properties IMPORTING es_attributes = ls_sel.
CASE ls_sel-attr_name. WHEN 'CATEGORY'. catagory = ls_sel-low. endcase. lr_prop = lr_sel->get_next( ). endwhile. endif. endif.
select SUB_CATID SUB_DESC from ZG1P_SUB_CAT into CORRESPONDING FIELDS OF TABLE lt_SUBcategory where CATEGORYID = catagory.
if lt_subcategory is not INITIAL . insert INITIAL LINE INTO lt_select_table index 1. loop at lt_subcategory into ls_subcategory. ls_select_table-key = ls_subcategory-SUB_CATID. ls_select_table-value = ls_subcategory-SUB_DESC. append ls_select_table to lt_select_table. endloop. elseif lt_subcategory is INITIAL and catagory is NOT INITIAL. insert INITIAL LINE INTO lt_select_table index 1. endif.
loop at rt_result assigning <rt_result>. CASE <rt_result>-FIELD. when 'CATEGORY'. <rt_result>-server_event = 'DUMMY_EVENT'. WHEN 'SUBCATEGORY'. if lt_select_table is not initial. REFRESH <rt_result>-ddlb_options. <rt_result>-ddlb_options = lt_select_table. endif. ENDCASE. endloop.endmethod.
Then Under Sub CatId
method GET_P_SUBCATEGORY. CASE iv_property. WHEN if_bsp_wd_model_setter_getter=>FP_FIELDTYPE. rv_value = if_bsp_dlc_view_descriptor=>FIELD_TYPE_PICKLIST. ENDCASE.endmethod.
And
method GET_V_SUBCATEGORY.
data lr_ddlb type ref to cl_crm_uiu_ddlb. data lt_select_table type BSP_WD_DROPDOWN_TABLE. data ls_select_table like line of lt_select_table. data lt_category type table of ZG1P_SUB_CAT. data ls_category like line of lt_category. refresh lt_select_table. CREATE OBJECT LR_DDLB EXPORTING IV_SOURCE_TYPE = iv_mode. select SUB_CATID SUB_DESC from ZG1P_SUB_CAT into CORRESPONDING FIELDS OF TABLE lt_category.
if lt_category is not INITIAL. insert INITIAL LINE INTO lt_select_table index 1. loop at lt_category into ls_category. ls_select_table-key = ls_category-SUB_CATID. ls_select_table-value = ls_category-SUB_DESC. append ls_select_table to lt_select_table. endloop.
CALL METHOD LR_DDLB->SET_SELECTION_TABLE EXPORTING IT_SELECTION_TABLE = lt_select_table. rv_valuehelp_descriptor = lr_ddlb.
endif.
endmethod.
In Overview Page:
Event Methods:
1. EH_ONNEW:
@78\QImporting@ HTMLB_EVENT TYPE REF TO CL_HTMLB_EVENT OPTIONAL
HTMLB_EVENT_EX TYPE REF TO IF_HTMLB_DATA OPTIONAL
method EH_ONNEW.
DATA LR_CORE TYPE REF TO CL_CRM_BOL_CORE. data lt_param type CRMT_NAME_VALUE_PAIR_TAB. DATA LR_ENTITY_COL TYPE REF TO IF_BOL_BO_COL. DATA LR_CONTROLLER TYPE REF TO ZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL . DATA LR_ROOT TYPE REF TO CL_CRM_BOL_ENTITY.
LR_CORE = CL_CRM_BOL_CORE=>GET_INSTANCE( ).
CALL METHOD LR_CORE->ROOT_CREATE EXPORTING IV_OBJECT_NAME = ZCL_G1SEARCH=>GC_PRODUCT_RESULT_G1 IV_CREATE_PARAM = lt_param IV_NUMBER = 1 RECEIVING RV_RESULT = lr_entity_col.
LR_CONTROLLER ?= COMP_CONTROLLER.
LR_CONTROLLER->TYPED_CONTEXT->PCATH->COLLECTION_WRAPPER->CLEAR( ). LR_CONTROLLER->TYPED_CONTEXT->PCATH->COLLECTION_WRAPPER->ADD_COLLECTION( LR_ENTITY_COL ).
LR_ROOT ?= LR_ENTITY_COL->GET_CURRENT( ).
IF LR_ROOT->LOCK( ) EQ ABAP_TRUE.
VIEW_GROUP_CONTEXT->SET_ALL_EDITABLE( ). ENDIF.endmethod.
2. EH_ONEDIT:
method EH_ONEDIT.
data : lo_comp type ref to ZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL , lr_ent type ref to cl_crm_bol_entity, lr_vgc type ref to if_bsp_wd_view_group_context.
DATA LR_MSG_CONT TYPE REF TO CL_CRM_GENIL_GLOBAL_MESS_CONT. data lr_core type ref to cl_Crm_bol_core.
gv_button_flag = 'EDIT'.
lo_comp ?= me->comp_controller. check lo_comp is bound. lr_ent ?= lo_comp->typed_context->PCATH->collection_wrapper->get_current( ).
CHECK lr_ent IS BOUND.
if lr_ent->is_locked( ) = abap_true. else. lr_ent->lock( ). if lr_ent->is_locked( ) = abap_true. me->view_group_context->set_all_editable( ).
else. lr_Core = cl_crm_bol_core=>get_instance( ). lr_msg_cont = lr_core->get_global_message_cont( ).
CALL METHOD lr_msg_cont->ADD_MESSAGE EXPORTING IV_MSG_TYPE = 'E' IV_MSG_ID = 'ZMC_G1_PCAT' IV_MSG_NUMBER = '000'* IV_MSG_TEXT = IV_MSG_V1 = sy-uname* IV_MSG_V2 =* IV_MSG_V3 =* IV_MSG_V4 = IV_SHOW_ONLY_ONCE = abap_true* IV_MSG_LEVEL = '1' .
endif. endif.
endmethod.
3. EH_ONDELETE:
method EH_ONDELETE. DATA: lr_ent TYPE REF TO cl_crm_bol_entity, lr_core TYPE REF TO cl_crm_bol_core, lr_coco TYPE REF TO ZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL.
TRY.
lr_ent ?= me->typed_context->PCATH->collection_wrapper->get_current( ). IF lr_ent->is_locked( ) = abap_true OR lr_ent->lock( ) = abap_true. lr_ent->delete( ).
lr_core = cl_crm_bol_core=>get_instance( ). IF lr_core IS BOUND. lr_core->modify( ). ENDIF.
* refresh the item list of the component controller lr_coco ?= me->comp_controller. IF lr_coco IS BOUND. lr_coco->typed_context->PCATH->collection_wrapper->publish_current( ). me->op_default_back( ).
ENDIF. ENDIF.
CATCH cx_sy_move_cast_error cx_sy_ref_is_initial. RETURN. ENDTRY.endmethod.
4. EH_ONCANCEL:
method EH_ONCANCEL. data lr_core type ref to cl_Crm_bol_core. DATA LR_TX TYPE REF TO IF_BOl_TRANSACTION_CONTEXT.
lr_Core = cl_crm_bol_core=>get_instance( ).
lr_tx ?= lr_core->get_transaction( ).
LR_TX->REVERT( ).*** me->op_default_back( ).
endmethod.
5.
EH_ONSAVE:
Importing@ HTMLB_EVENT TYPE REF TO CL_HTMLB_EVENT OPTIONAL
HTMLB_EVENT_EX TYPE REF TO IF_HTMLB_DATA OPTIONAL
method EH_ONSAVE.
DATA LR_ENTITY TYPE REF TO CL_CRM_BOL_ENTITY. DATA LR_CONTROLLER TYPE REF TO ZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL . DATA LR_TX TYPE REF TO IF_BOl_TRANSACTION_CONTEXT. data lr_core type ref to cl_Crm_bol_core. DATA LS_ATTR TYPE ZST_G1_CATLOG_RESULT. DATA LR_MSG_CONT TYPE REF TO CL_CRM_GENIL_GLOBAL_MESS_CONT.* data lr_core type ref to cl_Crm_bol_core.
lr_Core = cl_crm_bol_core=>get_instance( ). lr_tx ?= lr_core->get_transaction( ).
LR_CONTROLLER ?= COMP_CONTROLLER.
"""""""""""""""""""""""""""""""""""""""""""""
IF LR_TX->CHECK_SAVE_NEEDED( ) EQ ABAP_TRUE.
if lr_tx->save( ) eq abap_true.
lr_tx->commit( ).
lr_Core = cl_crm_bol_core=>get_instance( ). lr_msg_cont = lr_core->get_global_message_cont( ).
CALL METHOD lr_msg_cont->ADD_MESSAGE EXPORTING IV_MSG_TYPE = 'S' IV_MSG_ID = 'ZMC_G1_PCAT' IV_MSG_NUMBER = '001'* IV_MSG_TEXT =* IV_MSG_V1 = sy-uname* IV_MSG_V2 =* IV_MSG_V3 =* IV_MSG_V4 = IV_SHOW_ONLY_ONCE = abap_true* IV_MSG_LEVEL = '1' .
clear gv_button_flag.
endif. ENDIF.endmethod.