Sunteți pe pagina 1din 31

Genil Class:

Attributes:

DESIGNTIME_MODE Indicator 'D' RUNTIME_MODE Indicator 'R'

Constant Constant

Public Public Public Type Type Type

Type Type

CHAR1 Single-Character CHAR1 Single-Character Type CHAR1 Single-Character

SHM_MODEL_LOAD_MODE Indicator 'S' GC_HEADER Object GC_ITEM Object GC_SEARCH Object

Constant

Constant Public 'RAJA_CAT_H' Constant Public 'RAJA_CAT_ITEM' Constant Public 'RAJA_SEARCH'

CRMT_EXT_OBJ_NAME External Name of CRMT_EXT_OBJ_NAME External Name of CRMT_EXT_OBJ_NAME External Name of

GC_HEADER_ITEM_R Constant Public Type CRMT_RELATION_NAME External Name of Object 'RAJA_HEADER_ITEM' GC_SEARCH_R Constant Public Name of Object 'RAJA_SEARCH_H' GT_HEADER GT_ITEM Instance Attribute Instance Attribute Constant Constant Constant Public Public Public Type Public Public Type Type Type CRMT_RELATION_NAME Type Type TT_HEADER TT_ITEM Delta Flag Delta Flag Delta Flag 'M' 'N' 'D' External

GC_DELTA_CHANGED GC_DELTA_CREATED GC_DELTA_DELETED

CRMT_DELTA CRMT_DELTA CRMT_DELTA

Methods:
1.
IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS:-

Returning@ VALUE( RT_OBJ_PROPS ) Business Object Attributes

TYPE CRMT_OBJ_PROPERTIES_TAB

Table of

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@ Object

IV_QUERY_NAME

TYPE CRMT_EXT_OBJ_NAME

External Name of

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. lv_str TYPE string. lv_and TYPE string VALUE ' '. ls_param LIKE LINE OF IT_SELECTION_PARAMETERS. lt_header TYPE TABLE OF ZST_PC_HEADER. ls_header TYPE ZST_PC_HEADER.

DATA data DATA DATA DATA

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' I NTO 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' I NTO 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_CAT EGORY' 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@ Be Created IV_NUMBER

IV_OBJECT_NAME TYPE INT4

TYPE CRMT_EXT_OBJ_NAME

Type of Object to

DEFAULT 1

Number of Objects to Be Created

IT_PARAMETERS Name-Value Pairs

TYPE CRMT_NAME_VALUE_PAIR_TAB Parameter Table of

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

"#EC NOTEXT

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 Specifications

TYPE CRMT_REQUEST_OBJ_TAB

Table of Object Request

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 data data data data LR_ROOT type ref to IF_GENIL_CONTAINER_OBJECT.

LV_ROOT_NAME type CRMT_EXT_OBJ_NAME. LV_cat_id type ZCATELOUGE_ID. LV_ATTRIBUTES type ZST_PC_HEADER. ls_header like LINE OF gt_header.

field-symbols: <REQ_OBJ> type CRMT_REQUEST_OBJ. "Child Declarations data data data data data data LR_CHILDREN LR_CHILD type ref to IF_GENIL_CONTAINER_OBJECTLIST. type ref to IF_GENIL_CONTAINER_OBJECT. type CRMT_EXT_OBJ_NAME. type ZDE_ITEM_GUID. type CRMT_REQUEST_OBJ. OF gt_item.

LV_CHILD_NAME LV_KEY_ITEM LS_REQUEST_OBJECT ls_item like LINE

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_N AME = gc_header. read table gt_header with der. key CATALOGUE_ID = lv_cat_id into ls_hea

if SY-SUBRC ne 0. SELECT * FROM ZRAJA_CAT_H INTO CORRESPONDING FIELDS OF 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

ls_header

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 l s_item . if SY-SUBRC ne 0. SELECT * FROM ZRAJA_ITEM INTO CORRESPONDING FIELDS OF TAB LE 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 IF_GENIL_CONT_ROOT_OBJECTLIST

TYPE REF TO 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 with Object Type and ID TYPE CRMT_GENIL_OBJ_INSTANCE_TAB Object Table

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 <HEADER_OLD> type SIMPLE, <HEADER_NEW> type SIMPLE, <HEADER_NAME> type NAME_KOMP. gt_header,

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 <H EADER_OLD>. check SY-SUBRC = 0. assign component <HEADER_NAME> of structure LS_ATTRIBUTES to <H EADER_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_O BJECT_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_OLD> type <ITEM_NEW> type <ITEM_NAME> type

<ITEM_LINE> like LINE OF SIMPLE, SIMPLE, NAME_KOMP.

gt_item,

LV_CHILDREN_LIST = LV_HEADER->GET_CHILDREN( IV_AS_COPY 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.

= ABAP_TRUE ).

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 E_ID = lv_cat_id .

key CATALOGU

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 Table of ID

ET_ID_MAPPING TYPE CRMT_GENIL_ID_MAPPING_TAB Mapping Entries in Generic Interaction Layer

IV_MSG_SERVICE_ACCESS TYPE REF TO IF_GENIL_MSG_SERVICE_ACCESS Interface 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 ENDLOOP. ENDCASE.

= 'X'.

ENDLOOP.

endmethod.

10.

SET_ATTR_PROPS:-

@78\QImporting@ IV_ROOT TYPE REF TO IF_GENIL_CONTAINER_OBJECT OPTIONAL Data Container - Object Interface IS_HEADER IS_ITEM TYPE STR_HEADER OPTIONAL 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_proper ties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'CATEGORY_ID' iv_value = if_genil_obj_attr_prope rties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'SUBCATEGORY_ID' iv_value = if_genil_obj_attr_proper ties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'STATUS' iv_value = if_genil_obj_attr_proper ties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'VALID_FROM' iv_value = if_genil_obj_attr_prope rties=>changeable ). lR_attr_props->set_property_by_name( iv_name = 'VALID_TO' iv_value = if_genil_obj_attr_prope rties=>changeable ).

endmethod.

11.

IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS:-

@7B\QReturning@ VALUE( RT_OBJ_PROPS ) of Business Object Attributes

TYPE CRMT_OBJ_PROPERTIES_TAB

Table

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 DEFAULT ABAP_FALSE Display Mode?

IV_DISPLAY_MODE

TYPE ABAP_BOOL

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 DEFAULT ABAP_FALSE Display Mode?

IV_DISPLAY_MODE

TYPE ABAP_BOOL

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 TYPE REF TO

VALUE( RV_VALUEHELP_DESCRIPTOR ) 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 DATA DATA DATA lr_sq TYPE REF TO cl_crm_bol_dquery_service. lr_sel TYPE REF TO if_bol_bo_col. ls_sel TYPE genilt_selection_parameter. 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 = cata gory. 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@ OPTIONAL HTMLB_EVENT TYPE REF TO CL_HTMLB_EVENT

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

= '1'

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.

S-ar putea să vă placă și