Sie sind auf Seite 1von 8

METHOD if_bsp_wd_toolbar_callback~get_buttons.

CALL METHOD super->if_bsp_wd_toolbar_callback~get_buttons


RECEIVING
rt_buttons = rt_buttons.
DATA: pos TYPE i,
ls_button TYPE crmt_thtmlb_button_ext,
ls_button2 TYPE crmt_thtmlb_button_ext,
ls_button3 TYPE crmt_thtmlb_button_ext.
DATA: lr_coll_wrapper TYPE REF TO cl_bsp_wd_collection_wrapper,
lr_current TYPE REF TO cl_crm_bol_entity,
lr_opporth TYPE REF TO cl_crm_bol_entity,
lr_warnty TYPE REF TO zcl_crm_waranty_util,
lr_statusset TYPE REF TO cl_crm_bol_entity,
lr_statuscur TYPE REF TO cl_crm_bol_entity,
lv_status TYPE string,
lv_order_no TYPE string.
DATA: lt_alert_id TYPE salrttapal,
ls_alert_id LIKE LINE OF lt_alert_id,
lt_recipients TYPE salrttrecp,
ls_recipients LIKE LINE OF lt_recipients,
ls_error TYPE bapiret2, "Added for QM After Sales.
lv_has_alerts TYPE flag,
lv_order_guid_32 TYPE guid_32,
lv_filename TYPE string,
lv_icon_url TYPE string,
lv_aftersale TYPE boolean,
lr_adminh TYPE REF TO cl_crm_bol_entity,
ld_guid TYPE crmt_object_guid.
* Read Data for Oppty
lr_adminh ?= me->typed_context->btadminh->collection_wrapper->get_current( ).
IF lr_adminh IS BOUND.
lr_adminh->get_property_as_value(
EXPORTING
iv_attr_name = 'GUID'
IMPORTING
ev_result = ld_guid ).
ENDIF.
* Button CREATE / DELETE u.a. ausblenden
DELETE rt_buttons WHERE on_click = 'create'.
DELETE rt_buttons WHERE on_click = 'delete'.
DELETE rt_buttons WHERE on_click = 'planning'.
DELETE rt_buttons WHERE on_click = 'slsassist'.
DELETE rt_buttons WHERE on_click = 'distribute'.
DELETE rt_buttons WHERE on_click = 'CREDITCHECK'.
DELETE rt_buttons WHERE on_click = 'CREDITWITHDRAW'.
DELETE rt_buttons WHERE on_click = 'RELEASECREDITBLOCK'.
DELETE rt_buttons WHERE on_click = 'OUTPUT'.
* delete rt_buttons where on_click = 'PRINT_PREVIEW'.
DELETE rt_buttons WHERE on_click = 'partnerdetermination'.

* HAPPER, 2012-12-03: Create Button for PDF Fact Sheet


* read table rt_buttons transporting no fields with key on_click = 'FOLLOWUP'.
READ TABLE rt_buttons INTO ls_button2 WITH KEY on_click = 'FOLLOWUP'.
CLEAR ls_button.
READ TABLE rt_buttons INTO ls_button WITH KEY on_click = 'PRINT_PREVIEW'.
ls_button-text = 'Oppty Fact Sheet'.
ls_button-icon_src = '/sap/bc/bsp/sap/crm_ppm/w_pdf__s.gif' .
ls_button-enabled = ls_button2-enabled.
DELETE rt_buttons WHERE on_click = 'PRINT_PREVIEW'.
READ TABLE rt_buttons TRANSPORTING NO FIELDS WITH KEY on_click = 'FOLLOWUP'.
ADD 1 TO sy-tabix.
INSERT ls_button INTO rt_buttons INDEX sy-tabix.
READ TABLE rt_buttons TRANSPORTING NO FIELDS WITH KEY on_click = 'PRINT_PREVIE
W'.
CLEAR ls_button.
ls_button-type = 'SEPARATOR'.
ls_button-enabled = 'X'.
IF sy-tabix > 0.
INSERT ls_button INTO rt_buttons INDEX sy-tabix.
ENDIF.
* Alle nachfolgenden Separatoren ab FollowUp werden ausgeblendet.
READ TABLE rt_buttons TRANSPORTING NO FIELDS WITH KEY on_click = 'PRINT_PREVIE
W'.
* read table rt_buttons transporting no fields with key on_click = 'FOLLOWUP'.
pos = sy-tabix + 1.
IF pos > 7.
DELETE rt_buttons INDEX pos.
DELETE rt_buttons INDEX pos.
DELETE rt_buttons INDEX pos.
DELETE rt_buttons INDEX pos.
DELETE rt_buttons INDEX pos.
DELETE rt_buttons INDEX pos.
ENDIF.

* Button Follow-Up wird umbenannt in 'Quotation Manager'.


* ls_button-text = 'Create Quotation Manager'.
* ls_button-type = 'NEW' .
* ls_button-on_click = 'FOLLOWUP_QUOTEMANAGER'.
* modify rt_buttons from ls_button
* transporting on_click text type where on_click = 'FOLLOWUP'.

TRY.
lr_coll_wrapper ?= me->ztyped_context->btadminh->collection_wrapper.
IF lr_coll_wrapper IS BOUND.
lr_current ?= lr_coll_wrapper->get_current( ).
IF lr_current IS BOUND.
CALL METHOD lr_current->get_related_entity
EXPORTING
iv_relation_name = 'BTHeaderOpportunityExt'
RECEIVING
rv_result = lr_opporth.
lr_statusset ?= lr_current->get_related_entity( 'BTHeaderStatusSet' ).
IF lr_statusset IS BOUND.
lr_statuscur ?= lr_statusset->get_related_entity( 'BTStatusHCurrent'
).
IF lr_statuscur IS BOUND.
lv_status = lr_statuscur->get_property_as_string( 'STATUS' ).
ENDIF.
ENDIF.
lv_order_no = lr_opporth->get_property_as_string( 'ZZFLD00000I' ).

ENDIF.
ENDIF.
CATCH cx_root.
ENDTRY.

* Button "COPY" will be changed to Button "Create Quotation Manager"


CLEAR ls_button.
ls_button-text = 'Create Quotation Manager'.
ls_button-tooltip = 'Create Quotation Manager'.
ls_button-type = 'NEW'.
ls_button-on_click = 'FOLLOWUP_QUOTEMANAGER'.
*--------------------------------------------------------------------*
* Begin of change by Guhapriyan for Extended waranty.
*--------------------------------------------------------------------*
TRY.
CREATE OBJECT lr_warnty.
CATCH cx_root.
ENDTRY.
* End of change by Guhapriyan for Extended waranty.
*--------------------------------------------------------------------*
" Enable in the same way as EDIT-button
READ TABLE rt_buttons INTO ls_button3 WITH KEY on_click = 'EDIT'.
ls_button-enabled = ls_button3-enabled.
IF lv_status = 'E0010' OR lv_status = 'E0011' OR lv_status = 'E0008' OR lv_sta
tus = 'E0009'.
" Mit falschem Status Button immer ausgrauen !
CLEAR ls_button-enabled.
ELSEIF lv_status = 'E0007'.
*--------------------------------------------------------------------*
* Begin of change by Guhapriyan for Extended waranty on 27.06.2016
*--------------------------------------------------------------------*
TRY.
IF lr_warnty IS BOUND.
CLEAR lv_aftersale.
lv_aftersale = lr_warnty->check_valid( iv_guid = ld_guid ).
ENDIF.
CATCH cx_root.
ENDTRY.
IF lv_aftersale = abap_true.
*--------------------------------------------------------------------*
* End of change by Guhapriyan for Extended waranty on 27.06.2016
*--------------------------------------------------------------------*
ls_button-text = 'QM After Sales'.
ls_button-tooltip = 'QM After Sales'.
IF lv_order_no EQ space.
ls_button-text = 'QM After Sales (Sorry, no Order No.!)'.
CLEAR ls_button-enabled. " Ohne Order gibt's keinen After
Sales Verkauf
ENDIF.
ENDIF. "Added for Extended warranty by Guhapriyan on 27.06.2016
********************************************************************************
******************
*** B. Santner, 2016-07-04. After-Sales-Task activated
********************************************************************************
******************
* ls_button-text = 'Quotation Manager'.
* clear ls_button-enabled. " Ohne Order gibt's keinen After Sal
es Verkauf
ENDIF.
MODIFY rt_buttons FROM ls_button
TRANSPORTING on_click text tooltip type enabled WHERE on_click = 'copy'
.
* HAPPER, 14.12.2015: SAPUI5 Email-Client
DATA: lv_m4crm_email TYPE char60,
lv_contact_id TYPE string.
GET PARAMETER ID 'ZM4CRM_EMAIL' FIELD lv_m4crm_email.
CLEAR ls_button.
ls_button-text = 'Price Info'.
ls_button-tooltip = 'Price Info'.
ls_button-type = cl_thtmlb_util=>gc_icon_object_email.
IF lv_m4crm_email = 'WINDOW'.
TRY.
lr_coll_wrapper ?= me->ztyped_context->btadminh->collection_wrapper.
IF lr_coll_wrapper IS BOUND.
lr_current ?= lr_coll_wrapper->get_current( ).
lr_current ?= lr_current->get_related_entity( 'BTHeaderPartnerSet' ).
IF lr_current IS BOUND.
lr_current ?= lr_current->get_related_entity( 'BTPartner_PFT_0007_MA
IN' ).
IF lr_current IS BOUND.
lv_contact_id = lr_current->get_property_as_string( 'PARTNER_NO' )
.
ENDIF.
ENDIF.
ENDIF.
CATCH cx_root.
ENDTRY.
ls_button-on_client_click = zcl_m4crm_act=>get_window_js_for_wui( EXPORTING
iv_ref_guid = lr_adminh->get_property_as_string( 'GUID' ) iv_contact_id = lv_con
tact_id iv_scenario = 'ZPRICE_INFO' ).
ELSE.
ls_button-on_click = 'PRICE_INFO_EMAIL'.
ENDIF.
ls_button-page_id = me->component_id.
ls_button-enabled = ls_button3-enabled.
IF lv_status <> 'E0010'.
CLEAR ls_button-enabled.
ENDIF.
READ TABLE rt_buttons INTO ls_button2 WITH KEY on_click = 'FOLLOWUP_QUOTEMANAG
ER'.
ADD 1 TO sy-tabix.
INSERT ls_button INTO rt_buttons INDEX sy-tabix.
* HAPPER, 14.12.2015: SAPUI5 Email-Client
CLEAR ls_button.
ls_button-text = 'Create E-Mail'.
ls_button-tooltip = 'Create E-Mail'.
ls_button-type = cl_thtmlb_util=>gc_icon_object_email.
IF lv_m4crm_email = 'WINDOW'.
ls_button-on_client_click = zcl_m4crm_act=>get_window_js_for_wui( EXPORTING
iv_ref_guid = lr_adminh->get_property_as_string( 'GUID' ) iv_contact_id = lv_con
tact_id iv_scenario = '' ).
ELSE.
ls_button-on_click = 'FOLLOWUP_EMAIL'.
ENDIF.
ls_button-page_id = me->component_id.
ls_button-enabled = ls_button3-enabled.
READ TABLE rt_buttons INTO ls_button2 WITH KEY on_click = 'FOLLOWUP_QUOTEMANAG
ER'.
ADD 1 TO sy-tabix.
INSERT ls_button INTO rt_buttons INDEX sy-tabix.
READ TABLE rt_buttons TRANSPORTING NO FIELDS WITH KEY on_click = 'FOLLOWUP_EMA
IL'.
CLEAR ls_button.
ls_button-type = 'SEPARATOR'.
ls_button-enabled = 'X'.
IF sy-tabix > 0.
INSERT ls_button INTO rt_buttons INDEX sy-tabix.
ENDIF.
MODIFY rt_buttons FROM ls_button3
TRANSPORTING enabled WHERE on_click = 'FOLLOWUP'.
*--------------------------------------------------------------------*
* Begin Florian Rottensteiner, 21.10.2015, CRMN-288
* Implement Button to delete Alerts from Task
* First check if Action profile is ztask_alert
* SELECT SINGLE * FROM crmc_proc_type INTO ls_crmc_proc_type
* WHERE process_type = lv_process_type
* AND actionprofile = 'ZTASK_ALERT'.
* IF sy-subrc = 0.
* Read Alerts
CLEAR lv_order_guid_32.
lv_order_guid_32 = ld_guid.
CALL FUNCTION 'SALRT_GET_ALERTS_BY_GUID'
EXPORTING
ip_appl_guid = lv_order_guid_32
* IT_APPL_GUID =
IMPORTING
et_alert_id = lt_alert_id.
* Check if Alert is for current User
CLEAR lv_has_alerts.
LOOP AT lt_alert_id INTO ls_alert_id.
CLEAR: lt_recipients,
ls_recipients.
CALL FUNCTION 'SALRT_GET_RECIPIENTS'
EXPORTING
ip_guid = ls_alert_id-alert_id
IMPORTING
et_recipients = lt_recipients
* ET_EXT_RECIPIENTS =
EXCEPTIONS
alert_unknown = 1
alert_no_authorization = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_recipients INTO ls_recipients.
IF ls_recipients-uname = sy-uname.
lv_has_alerts = 'X'.
ENDIF.
ENDLOOP.
ENDLOOP.
* Show Button if task has alerts
IF lv_has_alerts = 'X'." AND lr_adminh->is_changeable( ) EQ abap_true.
CLEAR ls_button.
ls_button-text = 'Delete Alert' .
ls_button-on_click = 'DELETE_ALERTS'.
ls_button-tooltip = ls_button-text.
CALL METHOD cl_thtmlb_util=>get_icon_info
EXPORTING
iv_icon_type = cl_thtmlb_util=>gc_icon_alertmessage
IMPORTING
ev_icon_filename = lv_filename.
CALL METHOD cl_thtmlb_util=>get_icon_url
EXPORTING
iv_icon_name = lv_filename
RECEIVING
ev_url = lv_icon_url.
ls_button-icon_src = lv_icon_url.
ls_button-type = 'NEW'.
ls_button-page_id = me->component_id.
ls_button-enabled = abap_true.
INSERT ls_button INTO rt_buttons INDEX 1.
ENDIF.
* ENDIF.
* End Florian Rottensteiner, 21.10.2015
*--------------------------------------------------------------------*
**********************************************************************
* Begin of change by Guhapriyan for Extended Warranty on 06.07.2016
**********************************************************************
TRY.
IF lr_warnty IS BOUND.
IF lr_warnty->check_after_sales( iv_guid = ld_guid
iv_orderno = lv_order_no ) = abap_true.
READ TABLE rt_buttons INTO ls_button3 WITH KEY on_click = 'EDIT'.
ls_button-enabled = ls_button3-enabled.
CLEAR ls_button.
ls_button-text = 'Create Start Contract'.
ls_button-on_click = 'SERV_CONTRACT'.
ls_button-tooltip = ls_button-text.
ls_button-enabled = ls_button3-enabled..
ls_button-type = 'NEW'.
ls_button-page_id = me->component_id.
APPEND ls_button TO rt_buttons.
ENDIF.
ENDIF.
CATCH cx_root.
ENDTRY.
**********************************************************************
* End of change by Guhapriyan for Extended Warranty on 06.07.2016
**********************************************************************
**********************************************************************
* Begin of change by Guhapriyan for CRMN-677 on 11.05.2016
**********************************************************************
* check if there is an installation task already dont display Inst Tsk
* Get the Docflow of the referenced document.
DATA: lr_profile TYPE REF TO if_crm_ui_profile,
lr_i TYPE REF TO if_bol_bo_property_access,
lr_coll TYPE REF TO if_bol_entity_col,
lv_key TYPE string,
lv_guid TYPE crmt_object_guid,
lt_headerid TYPE crmt_object_guid_tab,
lt_objidtb TYPE crmt_bsp_objectkey_tab,
lt_query TYPE TABLE OF crmst_query_r_act_btil.
IF lv_status NE 'E0010'.
DELETE rt_buttons WHERE text = 'Price Info'.
ENDIF.
IF lv_status = 'E0007'.
CLEAR: lv_key, lv_guid.
REFRESH: lt_headerid, lt_objidtb, lt_query.
* READ DOCFLOW.
TRY.
lr_coll_wrapper ?= me->ztyped_context->btadminh->collection_wrapper.
IF lr_coll_wrapper IS BOUND.
lr_current ?= lr_coll_wrapper->get_current( ).
IF lr_current IS BOUND.
lr_current ?= lr_current->get_related_entity( 'BTHeaderDocFlowSet' )
.
lr_coll ?= lr_current->get_related_entities( iv_relation_name = 'BTD
ocFlowAll' ).
lr_i = lr_coll->get_first( ).
WHILE lr_i IS BOUND.
lr_current ?= lr_i.
IF lr_current->get_property_as_string( 'OBJTYPE_B' ) = 'BUS2000125
'.
CLEAR: lv_key, lv_guid.
TRY.
lv_key = lr_current->get_property_as_string( 'OBJKEY_B ' ).
lv_guid = lv_key.
INSERT lv_guid INTO TABLE lt_headerid.
* APPEND lv_guid TO lt_headerid.
CATCH cx_root.
ENDTRY.
ENDIF.
lr_i = lr_coll->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH cx_root.
ENDTRY.
MOVE lt_headerid TO lt_objidtb.
* Get the Installation Task.
IF lt_objidtb IS NOT INITIAL.
CALL FUNCTION 'CRM_BSP_OIC_1O_READ_FROM_RF'
EXPORTING
it_object_key = lt_objidtb
iv_screen_structure_name = 'CRMST_QUERY_R_ACT_BTIL'
IMPORTING
et_screen_structure = lt_query.
ENDIF.
* remove quotation manager.
* DELETE rt_buttons WHERE on_click = 'FOLLOWUP_QUOTEMANAGER'.
CLEAR ls_button.
READ TABLE lt_query TRANSPORTING NO FIELDS
WITH KEY process_type = 'ZINT'.
IF sy-subrc NE 0 AND lt_query IS NOT INITIAL.
ls_button-text = 'Create Installation Task'.
ls_button-tooltip = 'Create Installation Task'.
ls_button-type = 'NEW'.
ls_button-on_click = 'INS_TASK'.
ls_button-page_id = me->component_id.
ls_button-enabled = abap_true.
APPEND ls_button TO rt_buttons.
ELSE.
lr_profile = cl_crm_ui_profile=>get_instance( ).
CHECK lr_profile->get_profile( ) = 'ZCRMSALES'.
CLEAR ls_button.
ls_button-icon_src = '/sap/bc/bsp/sap/zbt111h_oppt/icon-oppty_action.png'.
ls_button-text = 'Inst. Appointment'.
ls_button-on_click = 'INS_APPTMNT'.
ls_button-tooltip = ls_button-text.
ls_button-enabled = abap_true.
ls_button-page_id = me->component_id.
APPEND ls_button TO rt_buttons.
ENDIF.
ENDIF.
**********************************************************************
ENDMETHOD.

Das könnte Ihnen auch gefallen