+ All Categories
Home > Documents > 72143903 Genil Class Web UI Code

72143903 Genil Class Web UI Code

Date post: 13-Apr-2015
Category:
Upload: suresh-lahare
View: 112 times
Download: 8 times
Share this document with a friend
Description:
Genil Programming
31
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_NAME External 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'
Transcript
Page 1: 72143903 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'

Page 2: 72143903 Genil Class Web UI Code

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

Page 3: 72143903 Genil Class Web UI Code

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.

Page 4: 72143903 Genil Class Web UI Code

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.

Page 5: 72143903 Genil Class Web UI Code

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 =

Page 6: 72143903 Genil Class Web UI Code

.

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.

Page 7: 72143903 Genil Class Web UI Code

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.

Page 8: 72143903 Genil Class Web UI Code

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.

Page 9: 72143903 Genil Class Web UI Code

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

Page 10: 72143903 Genil Class Web UI Code

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.

Page 11: 72143903 Genil Class Web UI Code

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.

Page 12: 72143903 Genil Class Web UI Code

** 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_OBJECTLISTData Container - Root Object List Interface

ET_CHANGED_OBJECTS TYPE CRMT_GENIL_OBJ_INSTANCE_TAB Object Table with Object Type and ID

method IF_GENIL_APPL_INTLAY~MODIFY_OBJECTS.

"Root/Header Declarations

Page 13: 72143903 Genil Class Web UI Code

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

Page 14: 72143903 Genil Class Web UI Code

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.

Page 15: 72143903 Genil Class Web UI Code

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

Page 16: 72143903 Genil Class Web UI Code

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

Page 17: 72143903 Genil Class Web UI Code

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 =* .

Page 18: 72143903 Genil Class Web UI Code

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.

Page 19: 72143903 Genil Class Web UI Code

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.

Page 20: 72143903 Genil Class Web UI Code

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:

Page 21: 72143903 Genil Class Web UI Code

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.

Page 22: 72143903 Genil Class Web UI Code

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.

Page 23: 72143903 Genil Class Web UI Code

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.

Page 24: 72143903 Genil Class Web UI Code

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.

Page 25: 72143903 Genil Class Web UI Code

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.

Page 26: 72143903 Genil Class Web UI Code

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.

Page 27: 72143903 Genil Class Web UI Code

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.

Page 28: 72143903 Genil Class Web UI Code

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

Page 29: 72143903 Genil Class Web UI Code

* 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.

Page 30: 72143903 Genil Class Web UI Code

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.

Page 31: 72143903 Genil Class Web UI Code

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.


Recommended