Académique Documents
Professionnel Documents
Culture Documents
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IV_OBJECT_NAME) TYPE CRMT_OBJECT_NAME
*" REFERENCE(IV_EVENT_EXETIME) TYPE CRMT_EVENT_EXETIME
*" REFERENCE(IV_EVENT) TYPE CRMT_EVENT
*" REFERENCE(IV_ATTRIBUT) TYPE CRMT_EVENT OPTIONAL
*" REFERENCE(IV_HEADER_GUID) TYPE CRMT_OBJECT_GUID OPTIONAL
*" REFERENCE(IV_OBJECT_GUID) TYPE CRMT_OBJECT_GUID OPTIONAL
*" REFERENCE(IV_STRVAL_OLD) TYPE ANY OPTIONAL
*" REFERENCE(IV_STRVAL_NEW) TYPE ANY OPTIONAL
*" EXCEPTIONS
*" ABORT
*"----------------------------------------------------------------------
**********************************************************************
* Created By: Guhapriyan S*
* Created on: 11.07.2016 *
*--------------------------------------------------------------------*
* Purpose: Create Item from Refobjects of Predecessor.(ZOP1 to ZSC)*
*--------------------------------------------------------------------*
* This modules is used to create items in a service Contract, if it was
* created as a follow-up transaction from Opportunity. The module
* will create one item for each entry in the reference object list.
**********************************************************************
TYPES: BEGIN OF lty_product,
prod_id TYPE char40,
objkey TYPE swo_typeid,
quantity TYPE crmt_quantity,
END OF lty_product.
DATA:
lv_ref_kind TYPE crmt_object_kind,
lv_date TYPE datum,
lv_equnr TYPE comt_product_id,
lv_predguid TYPE crmt_object_guid,
lv_ref_strval_old TYPE REF TO data,
lv_ref_strval_new TYPE REF TO data,
lv_structure_name TYPE crmt_tablename,
lv_handle TYPE crmt_handle.
*** Customizing for Copy
DATA:
ls_pr_copy_ma_key TYPE crmt_pr_copy_ma_key,
ls_mainitem TYPE crmt_orderadm_i_wrk,
ls_pr_copy_ma TYPE crmc_pr_copy_ma. "#EC NEEDED
*** Refobj Set Data
DATA:
ls_refobj_com TYPE crmt_refobj_com,
ls_input_fields TYPE crmt_input_field,
ls_field_names TYPE crmt_input_field_names,
ls_schedlin_i_com TYPE crmt_schedlin_i_com,
ls_comp TYPE ibas_comp4,
ls_waranty TYPE zcrm_rfq_warnty,
ls_prodrange TYPE ibap_product_id_range,
ls_refdoc TYPE crmt_doc_flow_db_wrk,
ls_orderadm_i_com TYPE crmt_orderadm_i_com,
ls_schedlines TYPE crmt_schedlin_extd,
lv_guidh TYPE crmt_object_guid,
lv_orderno TYPE zdtel00001a,
lv_prod_id TYPE comt_product_id,
lv_product_guid TYPE comt_product_guid,
lt_refdoc TYPE crmt_doc_flow_db_wrkt,
lt_refobj_com TYPE crmt_refobj_comt,
lt_waranty TYPE zcrm_rfq_warnty_t,
lt_input_fields TYPE crmt_input_field_tab,
lt_prodrange TYPE ibap_product_id_range_tab,
lt_comp TYPE ibas_comp4_tab.
FIELD-SYMBOLS:
<ls_strval_old> TYPE any,
<ls_strval_new> TYPE any,
<lv_field> TYPE any.
* ----------------------------------------------------------------------
*** Check for incorrect Import Parameters
IF iv_header_guid IS INITIAL
OR iv_object_guid IS INITIAL.
RAISE abort.
ENDIF.
CHECK iv_header_guid EQ iv_object_guid. "Only for header processing
lv_ref_kind = gc_object_ref_kind-orderadm_h.
*** Get Name of Structure
CALL FUNCTION 'CRM_OBJECT_NAMES_DETERMINE'
EXPORTING
iv_object_name = iv_object_name
IMPORTING
ev_wrk_structure_name = lv_structure_name.
*** Assign Admin Header or Admin Item Values
CREATE DATA lv_ref_strval_old TYPE (lv_structure_name).
ASSIGN lv_ref_strval_old->* TO <ls_strval_old>
CASTING TYPE (lv_structure_name).
<ls_strval_old> = iv_strval_old.
CREATE DATA lv_ref_strval_new TYPE (lv_structure_name).
ASSIGN lv_ref_strval_new->* TO <ls_strval_new>
CASTING TYPE (lv_structure_name).
<ls_strval_new> = iv_strval_new.
ASSIGN COMPONENT 'GUID'
OF STRUCTURE <ls_strval_new> TO <lv_field>.
lv_guidh = <lv_field>.
*** Now read Customizing, if Header Data has to be copied
CHECK iv_object_name EQ gc_object_name-orderadm_h.
ASSIGN COMPONENT 'PROCESS_TYPE'
OF STRUCTURE <ls_strval_old> TO <lv_field>.
ls_pr_copy_ma_key-pr_type_from = <lv_field>.
ASSIGN COMPONENT 'PROCESS_TYPE'
OF STRUCTURE <ls_strval_new> TO <lv_field>.
ls_pr_copy_ma_key-pr_type_to = <lv_field>.
CHECK ls_pr_copy_ma_key-pr_type_from EQ 'ZOP1' AND
ls_pr_copy_ma_key-pr_type_to EQ 'ZSC'.
*** Determine predecessor GUID
ASSIGN COMPONENT 'PREDECESSOR_GUID'
OF STRUCTURE <ls_strval_new> TO <lv_field>.
*Get the order number
SELECT SINGLE zzfld00000i INTO lv_orderno
FROM crmd_opport_h WHERE guid = <lv_field>.
IF sy-subrc NE 0.
CLEAR lv_orderno.
ENDIF.
* Get the equipment and materials.
SELECT * FROM zcrm_rfq_warnty INTO TABLE lt_waranty
WHERE oppty_guid = <lv_field>
AND vbeln = lv_orderno.
IF sy-subrc NE 0.
REFRESH lt_waranty.
ENDIF.
CHECK lt_waranty IS NOT INITIAL.
CLEAR lv_handle.
**********************************************************************
* Create Item.
**********************************************************************
LOOP AT lt_waranty INTO ls_waranty.
CLEAR: ls_orderadm_i_com,
ls_input_fields,
lt_input_fields.
ls_orderadm_i_com-handle = lv_handle.
ls_orderadm_i_com-header = iv_header_guid.