72143903 Genil Class Web UI Code

download 72143903 Genil Class Web UI Code

of 29

description

72143903 Genil Class Web UI Code

Transcript of 72143903 Genil Class Web UI Code

Genil Class:Attributes:

DESIGNTIME_MODEConstant PublicTypeCHAR1Single-Character Indicator'D'

RUNTIME_MODEConstant PublicTypeCHAR1Single-Character Indicator'R'

SHM_MODEL_LOAD_MODEConstant PublicTypeCHAR1Single-Character Indicator'S'

GC_HEADERConstant PublicTypeCRMT_EXT_OBJ_NAMEExternal Name of Object'RAJA_CAT_H'

GC_ITEMConstant PublicTypeCRMT_EXT_OBJ_NAMEExternal Name of Object'RAJA_CAT_ITEM'

GC_SEARCHConstant PublicTypeCRMT_EXT_OBJ_NAMEExternal Name of Object'RAJA_SEARCH'

GC_HEADER_ITEM_RConstant PublicTypeCRMT_RELATION_NAMEExternal Name of Object'RAJA_HEADER_ITEM'

GC_SEARCH_RConstant PublicTypeCRMT_RELATION_NAMEExternal Name of Object'RAJA_SEARCH_H'

GT_HEADERInstance Attribute PublicTypeTT_HEADER

GT_ITEMInstance Attribute PublicTypeTT_ITEM

GC_DELTA_CHANGEDConstant PublicTypeCRMT_DELTADelta Flag'M'

GC_DELTA_CREATEDConstant PublicTypeCRMT_DELTADelta Flag'N'

GC_DELTA_DELETEDConstant PublicTypeCRMT_DELTADelta Flag'D'

Methods:

IF_GENIL_APPL_MODEL~GET_OBJECT_PROPS:-Returning@VALUE( RT_OBJ_PROPS )TYPE CRMT_OBJ_PROPERTIES_TABTable of Business Object Attributes

methodIF_GENIL_APPL_MODEL~GET_OBJECT_PROPS.

select*FROMzraja_objintoCORRESPONDINGFIELDSOFTABLErt_obj_props.

endmethod.

IF_GENIL_APPL_MODEL~GET_MODEL:-VALUE( RT_RELATION_DET )TYPE CRMT_RELATION_DETAIL_TAB

methodIF_GENIL_APPL_MODEL~GET_MODEL.

select*FROMzraja_modelintoCORRESPONDINGFIELDSOFTABLErt_relation_det.

endmethod.

3.IF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT:-@78\QImporting@IV_QUERY_NAMETYPE CRMT_EXT_OBJ_NAMEExternal Name of Object

IS_QUERY_PARAMETERSTYPE GENILT_QUERY_PARAMETERS

IT_SELECTION_PARAMETERSTYPE GENILT_SELECTION_PARAMETER_TABComplex Search Condition

IV_ROOT_LISTTYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLISTData Container - Root Object List Interface

methodIF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT.

DATA:lt_request_objTYPEcrmt_request_obj_tab,ls_selection_parametersTYPEcrmt_genil_order_search,lr_selection_parametersTYPEREFTOcrmt_genil_order_search.

DATAlv_strTYPEstring.datalv_andTYPEstringVALUE''.DATAls_paramLIKELINEOFIT_SELECTION_PARAMETERS.DATAlt_headerTYPETABLEOFZST_PC_HEADER.DATAls_headerTYPEZST_PC_HEADER.

DATALT_PRODUCT_CAT_IDTYPERANGEOFZST_PC_HEADER-CATALOGUE_ID.datals_PRODUCT_CAT_IDlikelineofLT_PRODUCT_CAT_ID.

DATALT_PRODUCT_CAT_DESCTYPERANGEOFZST_PC_HEADER-DESCRIPTION.datals_PRODUCT_CAT_DESClikelineofLT_PRODUCT_CAT_DESC.

DATALT_CATEGORYTYPERANGEOFZST_PC_HEADER-category_id.datals_CATEGORYlikelineofLT_CATEGORY.

DATALT_SUB_CATEGORYTYPERANGEOFZST_PC_HEADER-subcategory_id.datals_SUB_CATEGORYlikelineofLT_SUB_CATEGORY.

DATALT_STATUSTYPERANGEOFZST_PC_HEADER-status.datals_STATUSlikelineofLT_STATUS.

DATALT_CREATED_ONTYPERANGEOFZST_PC_HEADER-created_on.datals_CREATED_ONlikelineofLT_CREATED_ON.

DATALT_CREATED_BYTYPERANGEOFZST_PC_HEADER-created_by.datals_CREATED_BYlikelineofLT_CREATED_BY.

DATALR_OBJECTTYPEREFTOIF_GENIL_CONT_ROOT_OBJECT.

CASEiv_query_name.

WHENgc_search.

loopatit_selection_parametersintols_param.

casels_param-ATTR_NAME.when'PRODUCT_CAT_ID'.MOVE-CORRESPONDINGLS_PARAMTOls_PRODUCT_CAT_ID.APPENDls_PRODUCT_CAT_IDTOlt_PRODUCT_CAT_ID.

when'DESCRIPTION'.MOVE-CORRESPONDINGls_paramtoLS_PRODUCT_CAT_DESC.appendLS_PRODUCT_CAT_DESCtoLT_PRODUCT_CAT_DESC.

when'CATEGORY_ID'.MOVE-CORRESPONDINGls_paramtols_CATEGORY.appendls_CATEGORYtolT_CATEGORY.

when'SUBCATEGORY_ID'.MOVE-CORRESPONDINGls_paramtols_SUB_CATEGORY.appendls_SUB_CATEGORYtolt_SUB_CATEGORY.

when'STATUS'.MOVE-CORRESPONDINGls_paramtols_status.appendls_statustolt_status.

when'CREATED_ON'.MOVE-CORRESPONDINGLS_PARAMTOLS_created_on.APPENDLS_created_onTOLT_created_on.

when'CREATED_BY'.MOVE-CORRESPONDINGLS_PARAMTOls_created_by.APPENDls_created_byTOLt_created_by.endcase.

endloop.

IFLT_product_cat_idISNOTINITIAL.CONCATENATELV_STR'ZRAJA_CAT_H~CATALOGUE_IDINLT_PRODUCT_CAT_ID'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_PRODUCT_CAT_DESCISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~DESCRIPTIONINLT_PRODUCT_CAT_DESC'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_categoryISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~CATEGORY_IDINLT_CATEGORY'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_sub_categoryISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~SUB_CATEGORY_IDINLT_SUB_CATEGORY'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_statusISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~STATUSINLT_STATUS'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_created_onISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~CREATED_ONINLT_CREATED_ON'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

IFLT_created_BYISNOTINITIAL.CONCATENATELV_STRlv_and'ZRAJA_CAT_H~CREATED_BYINLT_CREATED_BY'INTOLV_STRSEPARATEDBYSPACE.lv_and='AND'.ENDIF.

SELECT*fromZRAJA_CAT_HINTOCORRESPONDINGFIELDSOFTABLEgt_headerWHERE(lv_str).

ifgt_headerisnotinitial.

loopatgt_headerintols_header.try.

CALLMETHODIV_ROOT_LIST->ADD_OBJECTEXPORTINGIV_OBJECT_NAME=gc_headerIS_OBJECT_KEY=ls_header-CATALOGUE_IDRECEIVINGRV_RESULT=lr_object.

CALLMETHODme->SET_ATTR_PROPSEXPORTINGIV_ROOT=lr_object*IS_HEADER=ls_header*IS_ITEM=.

lr_object->set_attributes(ls_header).lr_object->set_key(ls_header-CATALOGUE_ID).

catchCX_CRM_GENIL_DUPLICATE_RELCX_CRM_GENIL_MODEL_ERROR.

endtry.endloop.

ENDIF.

WHENOTHERS.RETURN.ENDCASE.

endmethod.4.IF_GENIL_APPL_ALTERNATIVE_DSIL~LOCK_OBJECTS:-@78\QImporting@IV_MSG_SERVICE_ACCESSTYPE REF TO IF_GENIL_MSG_SERVICE_ACCESSInterface for Simple Access to Generic IL Message Service

CT_OBJECT_LISTTYPE CRMT_GENIL_OBJ_INST_LINE_TAB

methodIF_GENIL_APPL_ALTERNATIVE_DSIL~LOCK_OBJECTS.FIELD-SYMBOLSLIKELINEOFct_object_list.

LOOPATct_object_listASSIGNING.-success=abap_true.ENDLOOP.endmethod.

5.

IF_GENIL_APPL_INTLAY~CREATE_OBJECTS:-

@78\QImporting@IV_OBJECT_NAMETYPE CRMT_EXT_OBJ_NAMEType of Object to Be Created

IV_NUMBERTYPE INT4 DEFAULT 1Number of Objects to Be Created

IT_PARAMETERSTYPE CRMT_NAME_VALUE_PAIR_TABParameter Table of Name-Value Pairs

IV_ROOT_LISTTYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLISTData Container - Root Object List Interface

methodIF_GENIL_APPL_INTLAY~CREATE_OBJECTS.

dataLS_PARAMETERSLIKELINEOFgt_header.dataLT_REQUEST_OBJtypeCRMT_REQUEST_OBJ_TAB.datalr_objectTYPEREFTOif_genil_cont_root_object.data:LV_GUIDtypeCRMT_GENIL_OBJECT_GUID.

field-symbolstypeCRMT_NAME_VALUE_PAIR.field-symbolstypeDATA.

caseIV_OBJECT_NAME.whengc_header."#ECNOTEXT*fillparameterstructurefromnamevaluepairtablecallmethodFILL_STRUCT_FROM_NVP_TABEXPORTINGIT_PARAMETERS=IT_PARAMETERSCHANGINGCS_PARAMETER=LS_PARAMETERS.

*createIV_NUMBERordersdoIV_NUMBERtimes.

callfunction'GUID_CREATE'IMPORTINGEV_GUID_16=LV_GUID.

LS_PARAMETERS-CATALOGUE_ID=LV_GUID.LS_PARAMETERS-CREATED_ON=sy-datum.LS_PARAMETERS-CREATED_BY=sy-uname.insertLS_PARAMETERSintotablegt_header.

*addthenewobjecttothecontainertry.lr_object=IV_ROOT_LIST->ADD_OBJECT(IV_OBJECT_NAME=gc_header"#ECNOTEXTIS_OBJECT_KEY=LV_GUID).

lr_object->set_attributes(LS_PARAMETERS).lr_object->set_key(LV_GUID).

catchCX_CRM_GENIL_DUPLICATE_RELCX_CRM_GENIL_MODEL_ERROR.

endtry.enddo.

endcase.endmethod.6.

IF_GENIL_APPL_ALTERNATIVE_DSIL~DELETE_OBJECTS:-@78\QImporting@IV_MSG_SERVICE_ACCESSTYPE REF TO IF_GENIL_MSG_SERVICE_ACCESSInterface for Simple Access to Generic IL Message Service

CT_OBJECT_LISTTYPE CRMT_GENIL_OBJ_INST_LINE_TAB

methodIF_GENIL_APPL_ALTERNATIVE_DSIL~DELETE_OBJECTS.

field-symbols:likeLINEOFCT_OBJECT_LIST.datalv_key_htypeZCATELOUGE_ID.DATAls_headerLIKELINEOFgt_header.*loopatCT_OBJECT_LISTassigning.case-OBJECT_NAME.whengc_header.

CLEARlv_key_h.CALLMETHODcl_crm_genil_container_tools=>get_key_from_object_idEXPORTINGiv_object_name=-object_nameiv_object_id=-object_idIMPORTINGes_key=lv_key_h.

IFlv_key_hISNOTINITIAL.

deletegt_headerWHEREcatalogue_id=lv_key_h.deletegt_itemWHEREcatalogue_id=lv_key_h.

DELETEFROMzraja_cat_hwhereCATALOGUE_ID=lv_key_h.ifsy-subrc=0.DELETEFROMzraja_itemWHERECATALOGUE_ID=lv_key_h.

-success=ABAP_TRUE.ENDIF.endif.

endcase.endloop.endmethod.

7.IF_GENIL_APPL_INTLAY~GET_OBJECTS:-

IT_REQUEST_OBJECTSTYPE CRMT_REQUEST_OBJ_TABTable of Object Request Specifications

IV_ROOT_LISTTYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLISTData Container - Root Object List Interface

methodIF_GENIL_APPL_INTLAY~GET_OBJECTS."RootDeclarations

dataLR_ROOTtypereftoIF_GENIL_CONTAINER_OBJECT.

dataLV_ROOT_NAMEtypeCRMT_EXT_OBJ_NAME.dataLV_cat_idtypeZCATELOUGE_ID.dataLV_ATTRIBUTEStypeZST_PC_HEADER.datals_headerlikeLINEOFgt_header.

field-symbols:typeCRMT_REQUEST_OBJ.

"ChildDeclarations

dataLR_CHILDRENtypereftoIF_GENIL_CONTAINER_OBJECTLIST.dataLR_CHILDtypereftoIF_GENIL_CONTAINER_OBJECT.

dataLV_CHILD_NAMEtypeCRMT_EXT_OBJ_NAME.dataLV_KEY_ITEMtypeZDE_ITEM_GUID.dataLS_REQUEST_OBJECTtypeCRMT_REQUEST_OBJ.datals_itemlikeLINEOFgt_item.

field-symbols:typeCRMT_RELATION_NAME.

LR_ROOT=IV_ROOT_LIST->GET_FIRST().

checkLR_ROOTisbound.

LV_ROOT_NAME=LR_ROOT->GET_NAME().

caseLV_ROOT_NAME.

whenGC_HEADER.

callmethodLR_ROOT->GET_KEYIMPORTINGES_KEY=LV_cat_id.

whileLR_ROOTisbound.

ifLR_ROOT->CHECK_ATTR_REQUESTED()=ABAP_TRUE.

readtableIT_REQUEST_OBJECTSassigningwithkeyOBJECT_NAME=gc_header.

readtablegt_headerwithkeyCATALOGUE_ID=lv_cat_idintols_header.

ifSY-SUBRCne0.SELECT*FROMZRAJA_CAT_HINTOCORRESPONDINGFIELDSOFls_headerWHERECATALOGUE_ID=lv_cat_id.ENDSELECT.ifSY-SUBRC=0.insertls_headerintotablegt_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.

"checkifdependentobjects(items)shouldberead

ifLR_ROOT->CHECK_RELS_REQUESTED()=ABAP_TRUE.

LR_CHILDREN=LR_ROOT->GET_CHILDREN(IV_AS_COPY=ABAP_FALSE).

LR_CHILD=LR_CHILDREN->GET_FIRST().

whileLR_CHILDisbound.

LV_CHILD_NAME=LR_CHILD->GET_NAME().

caseLV_CHILD_NAME.whengc_item.

ifLR_CHILD->CHECK_ATTR_REQUESTED()=ABAP_TRUE.

READTABLEgt_itemWITHkeyCATALOGUE_ID=LV_cat_idINTOls_item.

ifSY-SUBRCne0.SELECT*FROMZRAJA_ITEMINTOCORRESPONDINGFIELDSOFTABLEgt_itemwhereCATALOGUE_ID=LV_cat_id.endif.

LOOPATgt_itemINTOls_itemWHERECATALOGUE_ID=LV_cat_id.TRY.CALLMETHODLR_ROOT->add_childEXPORTINGiv_relation_name=GC_HEADER_ITEM_Ris_child_key=ls_item-ITEM_GUIDRECEIVINGrv_result=lr_child.**SET_ATTR_PROPS(IV_ROOT=lr_child).lr_child->set_attributes(ls_item).lr_child->set_key(ls_item-ITEM_GUID).

CATCHcx_crm_genil_duplicate_rel.CATCHcx_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_LISTTYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLISTData Container - Root Object List Interface

IV_RETURN_ROOT_LISTTYPE REF TO IF_GENIL_CONT_ROOT_OBJECTLISTData Container - Root Object List Interface

ET_CHANGED_OBJECTSTYPE CRMT_GENIL_OBJ_INSTANCE_TABObject Table with Object Type and ID

methodIF_GENIL_APPL_INTLAY~MODIFY_OBJECTS.

"Root/HeaderDeclarationsdata:lr_roottypereftoIF_GENIL_CONTAINER_OBJECT,lv_root_nametypeCRMT_EXT_OBJ_NAME.datalv_cat_idTYPEZCATELOUGE_ID.

data:LR_PROPS_OBJtypereftoIF_GENIL_OBJ_ATTR_PROPERTIES,LT_CHANGED_ATTRtypeCRMT_ATTR_NAME_TAB,LS_ATTRIBUTEStypeSTR_HEADER,LV_GUIDtypeCRMT_GENIL_OBJECT_GUID,LV_HEADERtypereftoIF_GENIL_CONT_ROOT_OBJECT,ls_changed_objectLIKELINEOFET_CHANGED_OBJECTS.

field-symbols:likeLINEOFgt_header,typeSIMPLE,typeSIMPLE,typeNAME_KOMP.

clearET_CHANGED_OBJECTS.

lr_header=IV_ROOT_LIST->GET_FIRST().

checklr_headerisbound.

lv_header_name=lr_header->GET_NAME().

caselv_header_name.

whenGC_HEADER.

LV_HEADER=IV_ROOT_LIST->GET_FIRST().

whileLV_HEADERisbound.

ifLV_HEADER->GET_DELTA_FLAG()=GC_DELTA_CHANGED.

LV_PROPS_OBJ=LV_HEADER->GET_ATTR_PROPS_OBJ().

callmethodLV_PROPS_OBJ->GET_NAME_TAB_4_PROPERTYEXPORTINGIV_PROPERTY=IF_GENIL_OBJ_ATTR_PROPERTIES=>MODIFIEDIMPORTINGET_NAMES=LT_CHANGED_ATTR.

callmethodLV_HEADER->GET_KEYIMPORTINGES_KEY=lv_cat_id.

callmethodLV_HEADER->GET_ATTRIBUTESIMPORTINGES_ATTRIBUTES=LS_ATTRIBUTES.

readtablegt_headerassigningwithkeyCATALOGUE_ID=lv_cat_id.ifSY-SUBRC=0.loopatLT_CHANGED_ATTRassigning.assigncomponentofstructureto.checkSY-SUBRC=0.assigncomponentofstructureLS_ATTRIBUTESto.checkSY-SUBRC=0.=.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).

APPENDls_changed_objecttoET_CHANGED_OBJECTS.endif.

"""""""""""""""""""""""""""""""""""""'children""""""""""""""""""""""""""""""""""""""

data:LV_CHILDREN_LISTtypereftoIF_GENIL_CONTAINER_OBJECTLIST,LV_CHILDtypereftoIF_GENIL_CONTAINER_OBJECT,LV_CHILD_NAMEtypeCRMT_EXT_OBJ_NAME.

data:"LV_PROPS_OBJtypereftoIF_GENIL_OBJ_ATTR_PROPERTIES,LT_CHANGED_ATTR_ITEMtypeCRMT_ATTR_NAME_TAB,LS_ATTRIBUTES_ITEMtypeCRMT_GENIL_PARTNER_ATTR,Lv_KEY_CHILDtypeZDE_ITEM_GUID,LT_RETURNtypeBAPIRET2_T,LV_MSG_CONTtypereftoCL_CRM_GENIL_BAPI_MESS_CONT,LS_CHILD_OBJ_INSTtypeCRMT_GENIL_OBJ_INSTANCE,LV_DELTAtypeCRMT_DELTA,"LV_CAT_IDtypeZCATELOUGE_ID,ls_item_attrTYPEstr_item,LV_HEADER1typereftoIF_GENIL_CONTAINER_OBJECT,ls_itemlikeLINEOFgt_item.

field-symbols:likeLINEOFgt_item,typeSIMPLE,typeSIMPLE,typeNAME_KOMP.

LV_CHILDREN_LIST=LV_HEADER->GET_CHILDREN(IV_AS_COPY=ABAP_TRUE).

LV_CHILD=LV_CHILDREN_LIST->GET_FIRST().

whileLV_CHILDisbound.*branchaccordingtheobjectnameLV_CHILD_NAME=LV_CHILD->GET_NAME().caseLV_CHILD_NAME.

whengc_item.

LV_HEADER1=LV_CHILD->GET_PARENT().

callmethodLV_HEADER1->GET_KEYIMPORTINGES_KEY=LV_CAT_ID.

LV_DELTA=LV_CHILD->GET_DELTA_FLAG().

caseLV_DELTA.

whenGC_DELTA_CHANGED.

LV_PROPS_OBJ=LV_CHILD->GET_ATTR_PROPS_OBJ().

callmethodLV_PROPS_OBJ->GET_NAME_TAB_4_PROPERTYEXPORTINGIV_PROPERTY=IF_GENIL_OBJ_ATTR_PROPERTIES=>MODIFIEDIMPORTINGET_NAMES=LT_CHANGED_ATTR_ITEM.

callmethodLV_CHILD->GET_KEYIMPORTINGES_KEY=Lv_KEY_CHILD.

callmethodLV_CHILD->GET_ATTRIBUTESIMPORTINGES_ATTRIBUTES=ls_item_attr.

readtablegt_itemassigningwithkeyCATALOGUE_ID=lv_cat_id.ifSY-SUBRC=0.loopatLT_CHANGED_ATTR_ITEMassigning.assigncomponentofstructureto.checkSY-SUBRC=0.assigncomponentofstructurels_item_attrto.checkSY-SUBRC=0.=.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).

appendls_changed_objecttoeT_CHANGED_OBJECTS.

whenGC_DELTA_CREATED.

callmethodlv_child->GET_ATTRIBUTESIMPORTINGES_ATTRIBUTES=ls_item_attr.

callfunction'GUID_CREATE'IMPORTINGEV_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'.

APPENDls_item_attrtogt_item.

try.LV_CHILD->SET_KEY(Lv_KEY_CHILD).catchCX_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).appendls_changed_objecttoeT_CHANGED_OBJECTS.

whenGC_DELTA_DELETED.*getthepartnerkeycallmethodlv_child->GET_KEYIMPORTINGES_KEY=Lv_KEY_CHILD.

READTABLEgt_itemINTOls_itemWITHKEYITEM_GUID=Lv_KEY_CHILD.

ls_item-mode='D'.MODIFYgt_itemFROMls_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_LISTTYPE CRMT_GENIL_OBJ_INST_LINE_TAB

ET_ID_MAPPINGTYPE CRMT_GENIL_ID_MAPPING_TABTable of ID Mapping Entries in Generic Interaction Layer

IV_MSG_SERVICE_ACCESSTYPE REF TO IF_GENIL_MSG_SERVICE_ACCESSInterface for Simple Access to Generic IL Message Service

methodIF_GENIL_APPL_ALTERNATIVE_DSIL~SAVE_OBJECTS.*CALLMETHODSUPER->IF_GENIL_APPL_ALTERNATIVE_DSIL~SAVE_OBJECTS*EXPORTING*IV_MSG_SERVICE_ACCESS=**IMPORTING**ET_ID_MAPPING=*CHANGING*CT_OBJECT_LIST=*.

FIELD-SYMBOLSlikelineofct_object_list.DATAlv_cat_idTYPEZCATELOUGE_ID.DATAls_headerLIKELINEOFgt_header.DATAls_itemLIKELINEOFgt_item.

loopatct_object_listASSIGNING.

case-OBJECT_NAME.whengc_header.CLEARlv_cat_id.CALLMETHODcl_crm_genil_container_tools=>get_key_from_object_idEXPORTINGiv_object_name=-object_nameiv_object_id=-object_idIMPORTINGes_key=lv_cat_id.

LOOPATgt_headerINTOls_headerWHERECATALOGUE_ID=lv_cat_id.

MODIFYZRAJA_CAT_HFROMls_header.

LOOPATgt_itemINTOls_itemWHERECATALOGUE_ID=lv_cat_id.MODIFYZRAJA_ITEMFROMls_item.

ENDLOOP.-success='X'.ENDLOOP.ENDCASE.ENDLOOP.endmethod.

10.

SET_ATTR_PROPS:-

@78\QImporting@IV_ROOTTYPE REF TO IF_GENIL_CONTAINER_OBJECT OPTIONALData Container - Object Interface

IS_HEADERTYPE STR_HEADER OPTIONAL

IS_ITEMTYPE STR_ITEM OPTIONAL

methodSET_ATTR_PROPS.

DATA:lr_attr_propsTYPEREFTOif_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_TABTable of Business Object Attributes

methodIF_GENIL_APPL_MODEL~GET_OBJECT_PROPS.

select*FROMzraja_objintoCORRESPONDINGFIELDSOFTABLErt_obj_props.

endmethod.

Web Ui Part:

1.

For Linking Product Id :

Under Attributes:-

@78\QImporting@IV_PROPERTYTYPE STRINGFeldeigenschaft -> Siehe Interfacekonstanten

IV_INDEXTYPE I OPTIONALZeilenindex bei Tabelle

IV_DISPLAY_MODETYPE ABAP_BOOL DEFAULT ABAP_FALSEDisplay Mode?

VALUE( RV_VALUE )TYPE STRINGWert

methodGET_P_CATLOG_ID.CASEiv_property.WHENif_bsp_wd_model_setter_getter=>fp_fieldtype.rv_value=cl_bsp_dlc_view_descriptor=>field_type_event_link.WHENif_bsp_wd_model_setter_getter=>fp_onclick.rv_value='PROCATINFO'.ENDCASE.endmethod.

Then Under Event Method:

@78\QImporting@HTMLB_EVENTTYPE REF TO CL_HTMLB_EVENT OPTIONAL

HTMLB_EVENT_EXTYPE REF TO IF_HTMLB_DATA OPTIONAL

methodEH_ONPROCATINFO.

DATA:lv_indexTYPEint4.DATA:lr_currentTYPEREFTOif_bol_bo_property_access.DATA:lr_coltypereftocl_crm_bol_entity_col.DATA:lv_guidtypecrmt_object_guid.data:lr_coreTYPEREFTOcl_crm_bol_core.data:lr_enttypereftocl_crm_bol_entity,lr_propertyTYPEREFTOif_bol_bo_property_access.DATA:lr_data_collectionTYPEREFTOif_bol_bo_col.DATA:lr_nav_srvTYPEREFTOif_crm_ui_navigation_service.

cl_thtmlb_util=>get_event_info(exportingiv_event=htmlb_event_eximportingev_index=lv_index).

*getcurrententityandpassittooutboundplug.lr_current=me->typed_context->SEARCHRESULT->collection_wrapper->find(iv_index=lv_index).

CHECKlr_currentisBOUND.

CREATEOBJECTlr_data_collectionTYPEcl_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_PROPERTYTYPE STRINGFeldeigenschaft -> Siehe Interfacekonstanten

IV_INDEXTYPE I OPTIONALZeilenindex bei Tabelle

IV_DISPLAY_MODETYPE ABAP_BOOL DEFAULT ABAP_FALSEDisplay Mode?

VALUE( RV_VALUE )TYPE STRINGWert

methodGET_P_CATEGORY.CASEiv_property.WHENif_bsp_wd_model_setter_getter=>FP_FIELDTYPE.rv_value=if_bsp_dlc_view_descriptor=>FIELD_TYPE_PICKLIST.*WHENif_bsp_wd_model_setter_getter=>FP_SERVER_EVENT.*rv_value='FILL_SUBCATAGORY_DDL'.ENDCASE.endmethod.

Then Under GET_V_CATEGORY:

@78\QImporting@IV_MODETYPE CHAR1 DEFAULT IF_BSP_WD_MODEL_SETTER_GETTER=>RUNTIME_MODEAufrufmodus

IV_INDEXTYPE I OPTIONALZeilenindex bei Tabelle

VALUE( RV_VALUEHELP_DESCRIPTOR )TYPE REF TO IF_BSP_WD_VALUEHELP_DESCRIPTOR

methodGET_V_CATEGORY.datalr_ddlbtypereftocl_crm_uiu_ddlb.datalt_select_tabletypeBSP_WD_DROPDOWN_TABLE.datals_select_tablelikelineoflt_select_table.datalt_categorytypetableofZG1P_CATEGORY.datals_categorylikelineoflt_category.refreshlt_select_table.CREATEOBJECTLR_DDLBEXPORTINGIV_SOURCE_TYPE=iv_mode.selectCATEGORYIDCATEGORYNAMEfromZG1P_CATEGORYintoCORRESPONDINGFIELDSOFTABLElt_category.

iflt_categoryisnotINITIAL.insertINITIALLINEINTOlt_select_tableindex1.loopatlt_categoryintols_category.ls_select_table-key=ls_category-CATEGORYID.ls_select_table-value=ls_category-CATEGORYNAME.appendls_select_tabletolt_select_table.endloop.

CALLMETHODLR_DDLB->SET_SELECTION_TABLEEXPORTINGIT_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

methodGET_DQUERY_DEFINITIONS.*CALLMETHODSUPER->GET_DQUERY_DEFINITIONS*RECEIVING*RT_RESULT=*.

FIELD-SYMBOLS:TYPEcrms_thtmlb_search_field_info.

*data:lt_ddlTYPECRMS_THTMLB_SEARCH_DDLB_NVP.

DATAlr_sqTYPEREFTOcl_crm_bol_dquery_service.DATAlr_selTYPEREFTOif_bol_bo_col.DATAls_selTYPEgenilt_selection_parameter.DATAlr_propTYPEREFTOif_bol_bo_property_access.

data:catagorytypestring.

datalr_ddlbtypereftocl_crm_uiu_ddlb.datalt_select_tabletypeCRMT_THTMLB_SEARCH_DDLB_NVP.datals_select_tablelikelineoflt_select_table.datalt_SUBcategorytypetableofZG1P_SUB_CAT.datals_SUBcategorylikelineoflt_SUBcategory.refreshlt_select_table.

CALLMETHODsuper->get_dquery_definitionsRECEIVINGrt_result=rt_result.

lr_sq?=me->typed_context->SEARCHREQUEST->collection_wrapper->get_current().iflr_sqisbound.CALLMETHODlr_sq->get_selection_paramsRECEIVINGrv_result=lr_sel.

IFlr_selISBOUND.lr_prop=lr_sel->get_first().WHILElr_propISBOUND.CALLMETHODlr_prop->get_propertiesIMPORTINGes_attributes=ls_sel.

CASEls_sel-attr_name.WHEN'CATEGORY'.catagory=ls_sel-low.endcase.lr_prop=lr_sel->get_next().endwhile.endif.endif.

selectSUB_CATIDSUB_DESCfromZG1P_SUB_CATintoCORRESPONDINGFIELDSOFTABLElt_SUBcategorywhereCATEGORYID=catagory.

iflt_subcategoryisnotINITIAL.insertINITIALLINEINTOlt_select_tableindex1.loopatlt_subcategoryintols_subcategory.ls_select_table-key=ls_subcategory-SUB_CATID.ls_select_table-value=ls_subcategory-SUB_DESC.appendls_select_tabletolt_select_table.endloop.elseiflt_subcategoryisINITIALandcatagoryisNOTINITIAL.insertINITIALLINEINTOlt_select_tableindex1.endif.

loopatrt_resultassigning.CASE-FIELD.when'CATEGORY'.-server_event='DUMMY_EVENT'.WHEN'SUBCATEGORY'.iflt_select_tableisnotinitial.REFRESH-ddlb_options.-ddlb_options=lt_select_table.endif.ENDCASE.endloop.endmethod.

Then Under Sub CatIdmethodGET_P_SUBCATEGORY.CASEiv_property.WHENif_bsp_wd_model_setter_getter=>FP_FIELDTYPE.rv_value=if_bsp_dlc_view_descriptor=>FIELD_TYPE_PICKLIST.ENDCASE.endmethod.

And

methodGET_V_SUBCATEGORY.

datalr_ddlbtypereftocl_crm_uiu_ddlb.datalt_select_tabletypeBSP_WD_DROPDOWN_TABLE.datals_select_tablelikelineoflt_select_table.datalt_categorytypetableofZG1P_SUB_CAT.datals_categorylikelineoflt_category.refreshlt_select_table.CREATEOBJECTLR_DDLBEXPORTINGIV_SOURCE_TYPE=iv_mode.selectSUB_CATIDSUB_DESCfromZG1P_SUB_CATintoCORRESPONDINGFIELDSOFTABLElt_category.

iflt_categoryisnotINITIAL.insertINITIALLINEINTOlt_select_tableindex1.loopatlt_categoryintols_category.ls_select_table-key=ls_category-SUB_CATID.ls_select_table-value=ls_category-SUB_DESC.appendls_select_tabletolt_select_table.endloop.

CALLMETHODLR_DDLB->SET_SELECTION_TABLEEXPORTINGIT_SELECTION_TABLE=lt_select_table.rv_valuehelp_descriptor=lr_ddlb.

endif.

endmethod.

In Overview Page:

Event Methods:

1. EH_ONNEW:

@78\QImporting@HTMLB_EVENTTYPE REF TO CL_HTMLB_EVENT OPTIONAL

HTMLB_EVENT_EXTYPE REF TO IF_HTMLB_DATA OPTIONAL

methodEH_ONNEW.

DATALR_CORETYPEREFTOCL_CRM_BOL_CORE.datalt_paramtypeCRMT_NAME_VALUE_PAIR_TAB.DATALR_ENTITY_COLTYPEREFTOIF_BOL_BO_COL.DATALR_CONTROLLERTYPEREFTOZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL.DATALR_ROOTTYPEREFTOCL_CRM_BOL_ENTITY.

LR_CORE=CL_CRM_BOL_CORE=>GET_INSTANCE().

CALLMETHODLR_CORE->ROOT_CREATEEXPORTINGIV_OBJECT_NAME=ZCL_G1SEARCH=>GC_PRODUCT_RESULT_G1IV_CREATE_PARAM=lt_paramIV_NUMBER=1RECEIVINGRV_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().

IFLR_ROOT->LOCK()EQABAP_TRUE.

VIEW_GROUP_CONTEXT->SET_ALL_EDITABLE().ENDIF.endmethod.

2. EH_ONEDIT:methodEH_ONEDIT.

data:lo_comptypereftoZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL,lr_enttypereftocl_crm_bol_entity,lr_vgctypereftoif_bsp_wd_view_group_context.

DATALR_MSG_CONTTYPEREFTOCL_CRM_GENIL_GLOBAL_MESS_CONT.datalr_coretypereftocl_Crm_bol_core.

gv_button_flag='EDIT'.

lo_comp?=me->comp_controller.checklo_compisbound.lr_ent?=lo_comp->typed_context->PCATH->collection_wrapper->get_current().

CHECKlr_entISBOUND.

iflr_ent->is_locked()=abap_true.else.lr_ent->lock().iflr_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().

CALLMETHODlr_msg_cont->ADD_MESSAGEEXPORTINGIV_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:

methodEH_ONDELETE.DATA:lr_entTYPEREFTOcl_crm_bol_entity,lr_coreTYPEREFTOcl_crm_bol_core,lr_cocoTYPEREFTOZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL.

TRY.

lr_ent?=me->typed_context->PCATH->collection_wrapper->get_current().IFlr_ent->is_locked()=abap_trueORlr_ent->lock()=abap_true.lr_ent->delete().

lr_core=cl_crm_bol_core=>get_instance().IFlr_coreISBOUND.lr_core->modify().ENDIF.

*refreshtheitemlistofthecomponentcontrollerlr_coco?=me->comp_controller.IFlr_cocoISBOUND.lr_coco->typed_context->PCATH->collection_wrapper->publish_current().me->op_default_back().

ENDIF.ENDIF.

CATCHcx_sy_move_cast_errorcx_sy_ref_is_initial.RETURN.ENDTRY.endmethod.

4. EH_ONCANCEL:

methodEH_ONCANCEL.datalr_coretypereftocl_Crm_bol_core.DATALR_TXTYPEREFTOIF_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_EVENTTYPE REF TO CL_HTMLB_EVENT OPTIONAL

HTMLB_EVENT_EXTYPE REF TO IF_HTMLB_DATA OPTIONAL

methodEH_ONSAVE.

DATALR_ENTITYTYPEREFTOCL_CRM_BOL_ENTITY.DATALR_CONTROLLERTYPEREFTOZL_ZG1_PCAT_BSPWDCOMPONE0_IMPL.DATALR_TXTYPEREFTOIF_BOl_TRANSACTION_CONTEXT.datalr_coretypereftocl_Crm_bol_core.DATALS_ATTRTYPEZST_G1_CATLOG_RESULT.DATALR_MSG_CONTTYPEREFTOCL_CRM_GENIL_GLOBAL_MESS_CONT.*datalr_coretypereftocl_Crm_bol_core.

lr_Core=cl_crm_bol_core=>get_instance().lr_tx?=lr_core->get_transaction().

LR_CONTROLLER?=COMP_CONTROLLER.

"""""""""""""""""""""""""""""""""""""""""""""

IFLR_TX->CHECK_SAVE_NEEDED()EQABAP_TRUE.

iflr_tx->save()eqabap_true.

lr_tx->commit().

lr_Core=cl_crm_bol_core=>get_instance().lr_msg_cont=lr_core->get_global_message_cont().

CALLMETHODlr_msg_cont->ADD_MESSAGEEXPORTINGIV_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'.

cleargv_button_flag.

endif.ENDIF.endmethod.