0% found this document useful (0 votes)
272 views25 pages

ZCRM Serv Con Include

This document defines data types and structures for tables that will be used to create service contracts in SAP CRM using BAPIs. It includes definitions for header data, item data, pricing agreements, and output tables to display the final results. Key forms create the service contract by filling the header and item data tables, calling the BAPI, and displaying the output.

Uploaded by

Abhishek Nandi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
272 views25 pages

ZCRM Serv Con Include

This document defines data types and structures for tables that will be used to create service contracts in SAP CRM using BAPIs. It includes definitions for header data, item data, pricing agreements, and output tables to display the final results. Key forms create the service contract by filling the header and item data tables, calling the BAPI, and displaying the output.

Uploaded by

Abhishek Nandi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 25

*&---------------------------------------------------------------------*

*& Include ZCRM_SERV_CONT_IN


*&---------------------------------------------------------------------*
TYPES : BEGIN OF ty_record,
stp TYPE bu_partner,
product_list TYPE comt_product_id,
description TYPE string,
product TYPE crmt_ordered_prod,
quantity TYPE string,
unit TYPE string,
std_price TYPE string,
dis TYPE string,
pr_amount TYPE string,
bill_cont TYPE string,
scale_amt TYPE string,
ppc TYPE string,
protection TYPE string,
tax TYPE string,
END OF ty_record.
DATA : lt_record TYPE TABLE OF ty_record,
ls_record TYPE ty_record.
TYPES : BEGIN OF ty_pragree,
guid TYPE crmt_object_guid,
stp TYPE bu_partner,
product_list TYPE comt_product_id,
description TYPE string,
product TYPE crmt_ordered_prod,
quantity TYPE string,
unit TYPE string,
std_price TYPE string,
dis TYPE string,
pr_amount TYPE string,
bill_cont TYPE string,
scale_amt TYPE string,
ppc TYPE string,
protection TYPE string,
tax TYPE string,
END OF ty_pragree.
DATA : lt_pragree TYPE TABLE OF ty_pragree,
ls_pragree TYPE ty_pragree.
TYPES : BEGIN OF ty_scale_tab,
scale_amt1 TYPE p decimals 2,
scale_rate1 TYPE p decimals 2,
END OF ty_scale_tab.
DATA : lt_scale_tab TYPE TABLE OF ty_scale_tab,
lt_scale_tab_t TYPE TABLE OF ty_scale_tab,
ls_scale_tab TYPE ty_scale_tab.
DATA : lv_string TYPE string.
DATA : l_v1 TYPE string,
l_v2 TYPE string.
TYPES : BEGIN OF ty_final,
stp TYPE bu_partner,
product_list TYPE comt_product_id,
description TYPE string,
product TYPE crmt_ordered_prod,
remarks TYPE string,
END OF ty_final.
DATA : lt_final TYPE TABLE OF ty_final,
ls_final TYPE ty_final.
DATA: lv_file_path TYPE string.
DATA : lv_counter TYPE i.
DATA: lt_header TYPE TABLE OF bapibus20001_header_ins,
ls_header TYPE bapibus20001_header_ins,
lt_item TYPE TABLE OF bapibus20001_item,
ls_item TYPE bapibus20001_item,
lt_partner TYPE TABLE OF bapibus20001_partner_ins,
ls_partner TYPE bapibus20001_partner_ins,
lt_status TYPE TABLE OF bapibus20001_status_ins,
ls_status TYPE bapibus20001_status_ins,
lt_product TYPE TABLE OF bapibus20001_product,
ls_product TYPE bapibus20001_product,
lt_prodlist TYPE TABLE OF bapibus20001_product_list,
ls_prodlist TYPE bapibus20001_product_list,
lt_input_fields TYPE TABLE OF bapibus20001_input_fields,
ls_input_fields TYPE bapibus20001_input_fields,
lt_schedule TYPE TABLE OF bapibus20001_schedlin,
ls_schedule TYPE bapibus20001_schedlin,
lt_save TYPE TABLE OF bapibus20001_guid_dis,
ls_save TYPE bapibus20001_guid_dis,
lt_saved TYPE TABLE OF bapibus20001_object_id,
ls_saved TYPE bapibus20001_object_id ,
lv_guid TYPE crmt_object_guid,
lv_item TYPE crmt_object_guid,
lv_sched TYPE crmt_object_guid,
lv_bill_cont TYPE string,
lv_prod TYPE string .
DATA : lr_cond_rec TYPE REF TO cl_crm_bol_entity,
lr_core TYPE REF TO cl_crm_bol_core.
DATA : ls_sub_rec LIKE ls_record,
lt_record_temp LIKE lt_record,
lt_rec_prod_list LIKE lt_record,
ls_rec_prod_list LIKE ls_record.
DATA : ls_ordprp_i_com TYPE crmt_ordprp_i_com,
lt_ordprp_i_d_com TYPE crmt_ordprp_i_d_comt,
ls_ordprp_i_d_com TYPE crmt_ordprp_i_d_com,
lt_ordprp_objl_i_d_com TYPE crmt_ordprp_objl_i_d_comt,
lt_field_names TYPE crmt_input_field_names_tab,
ls_field_names TYPE crmt_input_field_names.
TYPES : BEGIN OF ty_itm_dta,
guid TYPE crmt_object_guid,
resp_profile TYPE crmt_srv_escal,
ser_profile TYPE crmt_srv_serwi,
END OF ty_itm_dta.
DATA : lt_itm_dta TYPE TABLE OF ty_itm_dta,
ls_itm_dta TYPE ty_itm_dta.
*&---------------------------------------------------------------------*
*& Form DISPLAY_FINAL_OP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_final_op .
DATA : BEGIN OF itab OCCURS 0,
string1 TYPE string,
* string2 TYPE string,
* string3 TYPE string,
* string4 TYPE string,
string5 TYPE string,
END OF itab.
DATA: field_cat TYPE slis_t_fieldcat_alv.
LOOP AT lt_final INTO ls_final.
itab-string1 = ls_final-stp .
* itab-string2 = ls_final-product_list.
* itab-string3 = ls_final-description .
* itab-string4 = ls_final-product.
itab-string5 = ls_final-remarks.
APPEND itab.
ENDLOOP.
PERFORM fieldcat_init1 USING field_cat[].
*Call the ALV Grid: Display ALV Output screen
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = field_cat
TABLES
t_outtab = itab.
ENDFORM. " DISPLAY_FINAL_OP
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELD_CAT[] text
*----------------------------------------------------------------------*
FORM fieldcat_init1 USING
p_fieldcat TYPE slis_t_fieldcat_alv.
*Data declarations
DATA: l_fieldcat TYPE slis_fieldcat_alv.
DATA : pos TYPE i VALUE 1.
*Sold to Party #
CLEAR l_fieldcat.
l_fieldcat-col_pos = pos. "Column Position
l_fieldcat-fieldname = 'STRING1'. "Column Name
l_fieldcat-seltext_m = 'Client#'. "Label
APPEND l_fieldcat TO p_fieldcat.
*Product List
* pos = pos + 1.
* CLEAR l_fieldcat.
* l_fieldcat-col_pos = pos.
* l_fieldcat-fieldname = 'STRING2'.
* l_fieldcat-seltext_m = 'product_list'.
* APPEND l_fieldcat TO p_fieldcat.
*Descrption
* pos = pos + 1.
* CLEAR l_fieldcat.
* l_fieldcat-col_pos = pos.
* l_fieldcat-fieldname = 'STRING3'.
* l_fieldcat-seltext_m = 'description'.
* APPEND l_fieldcat TO p_fieldcat.
*Product
* pos = pos + 1.
* CLEAR l_fieldcat.
* l_fieldcat-col_pos = pos.
* l_fieldcat-fieldname = 'STRING4'.
* l_fieldcat-seltext_m = 'product'.
* APPEND l_fieldcat TO p_fieldcat.
*
*
*Descrption
pos = pos + 1.
CLEAR l_fieldcat.
l_fieldcat-col_pos = pos.
l_fieldcat-fieldname = 'STRING5'.
l_fieldcat-seltext_m = 'Service Contract Number'.
APPEND l_fieldcat TO p_fieldcat.
ENDFORM. " fieldcat_init
*&---------------------------------------------------------------------*
*& Form CREATE_SC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_sc .
DATA : ls_temp_rec LIKE ls_record.
* get a core instance
lr_core = cl_crm_bol_core=>get_instance( ).
ASSERT lr_core IS BOUND.
lr_core->start_up( 'ONEORDER').
*lt_rec_prod_list[] = lt_record[].
*SORT lt_record_temp BY stp product.
*SORT lt_rec_prod_list BY stp product.
SORT lt_record ASCENDING BY stp product bill_cont.
lt_record_temp[] = lt_record[].
LOOP AT lt_record INTO ls_record.
CLEAR: lv_bill_cont, lv_counter, ls_ordprp_i_d_com.
ls_temp_rec = ls_record.
AT NEW stp.
ls_record = ls_temp_rec.
ls_final-stp = ls_record-stp.
ls_final-product_list = ls_record-product_list.
ls_final-product = ls_record-product.
ls_final-description = ls_record-description.
REFRESH : lt_item, lt_schedule, lt_status,lt_header, lt_partner, lt_prodli
st.
REFRESH : lt_ordprp_i_d_com, lt_itm_dta, lt_pragree.
*Fill the Header data
PERFORM header_fill.
LOOP AT lt_record_temp INTO ls_sub_rec WHERE stp = ls_record-stp .
*** IF sy-tabix NE 1.
*** IF lv_prod = ls_sub_rec-product AND lv_bill_cont = ls_sub_rec-bill
_cont..
*** lv_prod = ls_sub_rec-product . lv_bill_cont = ls_sub_rec-bill_co
nt.
**** fill pricing agreement
*** CONTINUE.
*** ELSE.
*** PERFORM item_fill.
**** fill pricing agreement
*** lv_prod = ls_sub_rec-product . lv_bill_cont = ls_sub_rec-bill_co
nt.
*** ENDIF.
*** ELSE.
*** PERFORM item_fill.
**** fill pricing agreement
*** lv_prod = ls_sub_rec-product . lv_bill_cont = ls_sub_rec-bill_co
nt.
*** ENDIF.
IF lv_bill_cont = ls_sub_rec-bill_cont.
CONTINUE.
ELSE.
lv_bill_cont = ls_sub_rec-bill_cont.
*Fill Item data
PERFORM item_fill.
ENDIF.
ENDLOOP.
* Call the BAPI
PERFORM run_bapi.
ENDAT.
ENDLOOP.
ENDFORM. " CREATE_SC
*&---------------------------------------------------------------------*
*& Form HEADER_FILL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM header_fill .
REFRESH : lt_input_fields .
CLEAR : lv_guid, ls_input_fields.
CALL FUNCTION 'CRM_GUID_CREATE'
IMPORTING
ev_guid = lv_guid.
ls_header-guid = lv_guid.
ls_header-process_type = 'ZCT0'.
*ls_header-description = ls_record-description. "1
INSERT ls_header INTO TABLE lt_header.
ls_input_fields-objectname = 'ORDERADM_H'.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-fieldname = 'PROCESS_TYPE'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
*ls_input_fields-ref_guid = lv_guid.
*ls_input_fields-objectname = 'ORDERADM_H'.
*ls_input_fields-fieldname = 'DESCRIPTION'.
*INSERT ls_input_fields INTO TABLE lt_input_fields.
*CLEAR ls_input_fields.
DATA: ls_but000 TYPE but000.
*Partner
*Sold to party
SELECT SINGLE * FROM but000 INTO ls_but000 WHERE bpext = ls_record-stp.
IF sy-subrc = 0.
ls_partner-ref_guid = lv_guid.
ls_partner-partner_fct = '00000001'.
ls_partner-ref_kind = 'A'.
ls_partner-kind_of_entry = 'C'.
ls_partner-display_type = 'BP'.
ls_partner-ref_partner_handle = '0001'.
ls_partner-no_type = 'BP'.
ls_partner-partner_no = ls_but000-partner. "ls_record-stp. "4
INSERT ls_partner INTO TABLE lt_partner.
ENDIF.
*******Employee resp ls_partner-partner_fct = '00000014'.
ls_partner-ref_guid = lv_guid.
ls_partner-partner_fct = '00000014'.
ls_partner-ref_kind = 'A'.
ls_partner-kind_of_entry = 'C'.
ls_partner-display_type = 'BP'.
ls_partner-ref_partner_handle = '0001'.
ls_partner-no_type = 'BP'.
ls_partner-partner_no = '500000'. "5
INSERT ls_partner INTO TABLE lt_partner.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = '0001'.
ls_input_fields-fieldname = 'DISPLAY_TYPE'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = '0001'.
ls_input_fields-fieldname = 'NO_TYPE'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = '0001'.
ls_input_fields-fieldname = 'KIND_OF_ENTRY'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = '0001'.
ls_input_fields-fieldname = 'PARTNER_NO'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = '0001'.
ls_input_fields-fieldname = 'PARTNER_FCT'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
*Status
ls_status-status = 'E0005'.
ls_status-activate = 'X'.
ls_status-ref_kind = 'A'.
ls_status-ref_guid = lv_guid.
INSERT ls_status INTO TABLE lt_status.
ls_input_fields-ref_guid = lv_guid.
ls_input_fields-objectname = 'STATUS'.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-fieldname = 'ACTIVATE'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ENDFORM. " HEADER_FILL
*&---------------------------------------------------------------------*
*& Form ITEM_FILL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM item_fill .
DATA : lv_prod_counter TYPE i.
lv_counter = lv_counter + 1.
CLEAR: lv_sched, lv_item.
CALL FUNCTION 'CRM_GUID_CREATE'
IMPORTING
ev_guid = lv_item.
*ls_itm_dta-guid = lv_item.
*ls_itm_dta-resp_profile = 'STANDARD'."ls_sub_rec-resp_profile.
*ls_itm_dta-ser_profile = '5X10'." ls_sub_rec-ser_profile.
*INSERT ls_itm_dta INTO TABLE lt_itm_dta.
TRANSLATE ls_sub_rec-product TO UPPER CASE.
ls_item-ordered_prod = ls_sub_rec-product. "2
ls_item-header = lv_guid.
ls_item-handle = lv_counter.
ls_item-mode = 'A'.
ls_item-guid = lv_item.
IF ls_sub_rec-product = 'RENTAL'.
IF ls_sub_rec-bill_cont = 'TRUE'.
ls_item-itm_type = 'ZCT0'.
ELSE.
ls_item-itm_type = 'ZCT3'.
ENDIF.
ELSEIF ls_sub_rec-product = 'SALE'.
ls_item-itm_type = 'ZCT1'.
ELSEIF ls_sub_rec-product = 'RTO'.
IF ls_sub_rec-bill_cont = 'TRUE'.
ls_item-itm_type = 'ZCT5'.
ELSE.
ls_item-itm_type = 'ZCT6'.
ENDIF.
ENDIF.
INSERT ls_item INTO TABLE lt_item.
ls_input_fields-fieldname = 'ITM_TYPE'.
ls_input_fields-ref_guid = lv_item.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-objectname = 'ORDERADM_I'.
ls_input_fields-ref_handle = lv_counter.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-objectname = 'ORDERADM_I'.
ls_input_fields-ref_handle = lv_counter.
ls_input_fields-ref_guid = lv_item.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-fieldname = 'MODE'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-objectname = 'ORDERADM_I'.
ls_input_fields-ref_handle = lv_counter.
ls_input_fields-ref_guid = lv_item.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-fieldname = 'ORDERED_PROD'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
* ls_input_fields-objectname = 'ORDERADM_I'.
* ls_input_fields-ref_handle = lv_counter.
* ls_input_fields-fieldname = 'MODE'.
* INSERT ls_input_fields INTO TABLE lt_input_fields.
* CLEAR ls_input_fields.
* SCHEDULE
ls_schedule-quantity = ls_sub_rec-quantity. "3
ls_schedule-item_handle = lv_counter.
ls_schedule-item_guid = lv_item.
INSERT ls_schedule INTO TABLE lt_schedule.
ls_input_fields-objectname = 'SCHEDLIN'.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-ref_guid = lv_item.
ls_input_fields-ref_handle = lv_counter.
ls_input_fields-fieldname = 'QUANTITY'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ls_input_fields-objectname = 'SCHEDLIN'.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-ref_handle = lv_counter.
ls_input_fields-fieldname = 'LOGICAL_KEY'.
ls_input_fields-ref_guid = lv_item.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
*Unit
ls_product-process_qty_unit = 'EA'. "ls_sub_rec-unit . "3
ls_product-ref_guid = lv_item.
ls_product-ref_handle = lv_counter.
INSERT ls_product INTO TABLE lt_product.
ls_input_fields-objectname = 'PRODUCT_I'.
ls_input_fields-ref_kind = 'B'.
ls_input_fields-ref_guid = lv_item.
ls_input_fields-ref_handle = lv_counter.
ls_input_fields-fieldname = 'PROCESS_QTY_UNIT'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
ENDFORM. " ITEM_FILL
*&---------------------------------------------------------------------*
*& Form RUN_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM run_bapi .
DATA : lt_return TYPE TABLE OF bapiret2.
CALL FUNCTION 'BAPI_BUSPROCESSND_CREATEMULTI'
TABLES
header = lt_header
item = lt_item
partner = lt_partner
status = lt_status
input_fields = lt_input_fields
return = lt_return
product = lt_product
scheduleline = lt_schedule.
* product_list = lt_prodlist.
IF sy-subrc = 0.
*Create Prodcut list
PERFORM create_prod_list.
*Create appointments
*PERFORM appointments.
*Service Level Agreement
*PERFORM service_agreement.
*Service Org
PERFORM serv_org.
*Pricing Agreement
PERFORM price_agreement.
*Set Status of Item
PERFORM set_stat.
* READ TABLE lt_header INTO ls_header INDEX 1.
* CHECK sy-subrc EQ 0.
* DATA: ls_stat TYPE crm_jsto-objnr,
* lv_stat TYPE crm_jest-stat VALUE 'E0005'.
* ls_stat = ls_header-guid.
* LOOP AT lt_item INTO ls_item.
* DATA: ls_stat_item TYPE crm_jsto-objnr,
* lv_stat_item TYPE crm_jest-stat VALUE 'I1004',
* lt_stat TYPE TABLE OF jstat,
* ls_stat2 TYPE jstat.
* CLEAR: lt_stat.
* ls_stat_item = ls_item-guid.
*
* ls_stat2-stat = lv_stat_item.
* ls_stat2-inact = 'X'.
*
* INSERT ls_stat2 INTO TABLE lt_stat.
* CALL FUNCTION 'CRM_STATUS_CHANGE_INTERN'
* EXPORTING
* objnr = ls_stat_item
** ERROR_OCCURRED =
** OBJECT_NOT_FOUND =
** STATUS_INCONSISTENT =
** STATUS_NOT_ALLOWED =
* TABLES
* status = lt_stat
* EXCEPTIONS
* object_not_found = 1
* status_inconsistent = 2
* status_not_allowed = 3
* OTHERS = 4.
* IF sy-subrc <> 0.
** Implement suitable error handling here
* ENDIF.
*
* ENDLOOP.
*CALL FUNCTION 'CRM_STATUS_CHANGE_EXTERN'
* EXPORTING
* objnr = ls_stat
* user_status = lv_stat
* EXCEPTIONS
* object_not_found = 1
* status_inconsistent = 2
* status_not_allowed = 3
* OTHERS = 4.
REFRESH : lt_return, lt_save, lt_saved.
ls_save-guid = ls_header-guid.
INSERT ls_save INTO TABLE lt_save.
CALL FUNCTION 'BAPI_BUSPROCESSND_SAVE'
TABLES
objects_to_save = lt_save
saved_objects = lt_saved
return = lt_return.
READ TABLE lt_saved INTO ls_saved INDEX 1.
IF sy-subrc = 0.
* PERFORM set_stat.
COMMIT WORK.
CONCATENATE ls_saved-object_id 'has been created' INTO ls_final-remarks SE
PARATED BY space.
INSERT ls_final INTO TABLE lt_final.
ELSE.
ls_final-remarks = 'opertaion failed' .
INSERT ls_final INTO TABLE lt_final.
ENDIF.
ENDIF.
ENDFORM. " RUN_BAPI
*&---------------------------------------------------------------------*
*& Form CREATE_PROD_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_prod_list .
DATA : ls_rec1 LIKE ls_record.
DATA : l_val TYPE string,
lv_index TYPE i VALUE '1',
l_count TYPE i,
ls_table LIKE ls_record,
lv_prod TYPE string,
lv_bill TYPE string,
lv_index2 TYPE sytabix.
DATA : lt_table LIKE lt_record.
*DATA: lv_where TYPE string.
*
*lv_where = 'str <> ls_record-stp'.
REFRESH : lt_field_names, lt_ordprp_i_d_com, lt_pragree.
lt_table[] = lt_record[].
*SORT lt_table ASCENDING BY stp.
DELETE lt_table WHERE stp NE ls_record-stp."(lv_where).
SORT lt_table ASCENDING BY stp product bill_cont.
** LOOP AT lt_item INTO ls_item.
** lv_index = sy-tabix.
**
** ENDLOOP.
** LOOP AT lt_table into ls_table.
** IF sy-tabix ne 1.
** IF lv_prod = ls_table-product and lv_bill = ls_table-bill_cont..
** lv_prod = ls_table-product. lv_bill = ls_table-bill_cont.
** CONTINUE.
**
** else.
**
** ENDIF.
** ELSE.
** read table lt_item INTO ls_item INDEX lv_index.
** lv_prod = ls_table-product. lv_bill = ls_table-bill_cont.
** ENDIF.
**
** ENDLOOP.
READ TABLE lt_table INTO ls_table INDEX 1.
l_val = ls_table-bill_cont.
LOOP AT lt_table INTO ls_table.
IF l_val = ls_table-bill_cont.
READ TABLE lt_item INTO ls_item INDEX lv_index.
IF sy-subrc = 0.
*********************************************************
* fill table for pricing agreement
MOVE-CORRESPONDING ls_table TO ls_pragree.
ls_pragree-guid = ls_item-guid.
ls_pragree-scale_amt = ls_table-scale_amt.
ls_pragree-pr_amount = ls_table-pr_amount.
INSERT ls_pragree INTO TABLE lt_pragree.
*********************************************************
ls_ordprp_i_d_com-ref_guid = ls_item-guid.
ls_ordprp_i_d_com-product_id = ls_table-product_list.
ls_ordprp_i_d_com-proc_mode = 'A'.
INSERT ls_ordprp_i_d_com INTO TABLE lt_ordprp_i_d_com.
ls_ordprp_i_com-ref_guid = ls_item-guid.
IF lt_field_names[] IS INITIAL.
ls_field_names-fieldname = 'PRODUCT_ID'.
INSERT ls_field_names INTO TABLE lt_field_names.
ls_field_names-fieldname = 'PROC_MODE'.
INSERT ls_field_names INTO TABLE lt_field_names.
ENDIF.
ENDIF.
ELSE.
IF lt_ordprp_i_d_com[] IS NOT INITIAL.
CALL FUNCTION 'CRM_ORDPRP_I_MAINTAIN_OW'
EXPORTING
is_ordprp_i_com = ls_ordprp_i_com
it_ordprp_i_d_com = lt_ordprp_i_d_com
it_ordprp_objl_i_d_com = lt_ordprp_objl_i_d_com
iv_external_call = 'X'
CHANGING
ct_input_field_names = lt_field_names
EXCEPTIONS
ordprp_i_change_error = 1
ordprp_i_create_error = 2
OTHERS = 3.
ENDIF.
lv_index = lv_index + 1.
l_val = ls_table-bill_cont.
REFRESH : lt_ordprp_i_d_com.
READ TABLE lt_item INTO ls_item INDEX lv_index.
ls_ordprp_i_d_com-ref_guid = ls_item-guid.
ls_ordprp_i_d_com-product_id = ls_table-product_list.
ls_ordprp_i_d_com-proc_mode = 'A'.
INSERT ls_ordprp_i_d_com INTO TABLE lt_ordprp_i_d_com.
ls_ordprp_i_com-ref_guid = ls_item-guid.
*********************************************************
* fill table for pricing agreement
MOVE-CORRESPONDING ls_table TO ls_pragree.
ls_pragree-guid = ls_item-guid.
ls_pragree-scale_amt = ls_table-scale_amt.
ls_pragree-pr_amount = ls_table-pr_amount.
INSERT ls_pragree INTO TABLE lt_pragree.
*********************************************************
ENDIF.
ENDLOOP.
*
* READ TABLE lt_table INTO ls_table INDEX 1.
* l_val = ls_table-bill_cont.
* LOOP AT lt_table INTO ls_table.
* IF l_val = ls_table-bill_cont.
* READ TABLE lt_item INTO ls_item INDEX lv_index.
* IF sy-subrc = 0.
**********************************************************
** fill table for pricing agreement
* MOVE-CORRESPONDING ls_table TO ls_pragree.
* ls_pragree-guid = ls_item-guid.
* ls_pragree-scale_amt = ls_table-scale_amt.
* ls_pragree-pr_amount = ls_table-pr_amount.
* INSERT ls_pragree INTO TABLE lt_pragree.
**********************************************************
* ls_ordprp_i_d_com-ref_guid = ls_item-guid.
* ls_ordprp_i_d_com-product_id = ls_table-product_list.
* ls_ordprp_i_d_com-proc_mode = 'A'.
* INSERT ls_ordprp_i_d_com INTO TABLE lt_ordprp_i_d_com.
* ls_ordprp_i_com-ref_guid = ls_item-guid.
* IF lt_field_names[] IS INITIAL.
* ls_field_names-fieldname = 'PRODUCT_ID'.
* INSERT ls_field_names INTO TABLE lt_field_names.
* ls_field_names-fieldname = 'PROC_MODE'.
* INSERT ls_field_names INTO TABLE lt_field_names.
* ENDIF.
* ENDIF.
* ELSE.
* IF lt_ordprp_i_d_com[] IS NOT INITIAL.
* CALL FUNCTION 'CRM_ORDPRP_I_MAINTAIN_OW'
* EXPORTING
* is_ordprp_i_com = ls_ordprp_i_com
* it_ordprp_i_d_com = lt_ordprp_i_d_com
* it_ordprp_objl_i_d_com = lt_ordprp_objl_i_d_com
* iv_external_call = 'X'
* CHANGING
* ct_input_field_names = lt_field_names
* EXCEPTIONS
* ordprp_i_change_error = 1
* ordprp_i_create_error = 2
* OTHERS = 3.
* ENDIF.
*
* lv_index = lv_index + 1.
* l_val = ls_table-bill_cont.
* REFRESH : lt_ordprp_i_d_com.
*
* READ TABLE lt_item INTO ls_item INDEX lv_index.
* ls_ordprp_i_d_com-ref_guid = ls_item-guid.
* ls_ordprp_i_d_com-product_id = ls_table-product_list.
* ls_ordprp_i_d_com-proc_mode = 'A'.
* INSERT ls_ordprp_i_d_com INTO TABLE lt_ordprp_i_d_com.
*
**********************************************************
** fill table for pricing agreement
* MOVE-CORRESPONDING ls_table TO ls_pragree.
* ls_pragree-guid = ls_item-guid.
* ls_pragree-scale_amt = ls_table-scale_amt.
* ls_pragree-pr_amount = ls_table-pr_amount.
* INSERT ls_pragree INTO TABLE lt_pragree.
**********************************************************
*
* ENDIF.
* ENDLOOP.
IF lt_ordprp_i_d_com[] IS NOT INITIAL.
CALL FUNCTION 'CRM_ORDPRP_I_MAINTAIN_OW'
EXPORTING
is_ordprp_i_com = ls_ordprp_i_com
it_ordprp_i_d_com = lt_ordprp_i_d_com
it_ordprp_objl_i_d_com = lt_ordprp_objl_i_d_com
iv_external_call = 'X'
CHANGING
ct_input_field_names = lt_field_names
EXCEPTIONS
ordprp_i_change_error = 1
ordprp_i_create_error = 2
OTHERS = 3.
ENDIF.
*
**Create Prduct list
* LOOP AT lt_item INTO ls_item.
*
* REFRESH : lt_ordprp_i_d_com, lt_field_names.
*LOOP AT lt_record INTO ls_rec1 WHERE item = ls_item-number_int
* AND legacy = ls_record-legacy.
*
*ls_ordprp_i_d_com-ref_guid = ls_item-guid.
*ls_ordprp_i_d_com-product_id = ls_rec1-product_list.
*ls_ordprp_i_d_com-proc_mode = 'A'.
*INSERT ls_ordprp_i_d_com INTO TABLE lt_ordprp_i_d_com.
*ls_ordprp_i_com-ref_guid = ls_item-guid.
*
*IF lt_field_names[] IS INITIAL.
*ls_field_names-fieldname = 'PRODUCT_ID'.
*INSERT ls_field_names INTO TABLE lt_field_names.
*ls_field_names-fieldname = 'PROC_MODE'.
*INSERT ls_field_names INTO TABLE lt_field_names.
*ENDIF.
*
**Build table for price agreement and scale
*MOVE-CORRESPONDING ls_rec1 TO ls_pragree.
*ls_pragree-guid = ls_item-guid.
*INSERT ls_pragree INTO TABLE lt_pragree.
*
*ENDLOOP.
*
*DELETE ADJACENT DUPLICATES FROM lt_ordprp_i_d_com COMPARING product_id.
* IF lt_ordprp_i_d_com[] IS NOT INITIAL.
* CALL FUNCTION 'CRM_ORDPRP_I_MAINTAIN_OW'
* EXPORTING
* is_ordprp_i_com = ls_ordprp_i_com
* it_ordprp_i_d_com = lt_ordprp_i_d_com
* it_ordprp_objl_i_d_com = lt_ordprp_objl_i_d_com
* iv_external_call = 'X'
* CHANGING
* ct_input_field_names = lt_field_names
* EXCEPTIONS
* ordprp_i_change_error = 1
* ordprp_i_create_error = 2
* OTHERS = 3.
*ENDIF.
*ENDLOOP.
ENDFORM. " CREATE_PROD_LIST
*&---------------------------------------------------------------------*
*& Form APPOINTMENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM appointments .
*
*DATA : ls_rec23 LIKE ls_record.
*DATA : lt_appointment TYPE crmt_appointment_comt,
* ls_appointment TYPE crmt_appointment_com,
* it_input_flds TYPE crmt_input_field_tab,
* wa_input_flds TYPE crmt_input_field,
* it_fldnames TYPE crmt_input_field_names_tab,
* wa_fldnames TYPE crmt_input_field_names,
* lv_guid_header TYPE crmt_object_guid,
* l_desc TYPE string,
* lv_timestamp TYPE timestamp.
*DATA : lt_rec23 LIKE lt_record.
*
*lt_rec23[] = lt_record.
*SORT lt_rec23 ASCENDING BY legacy item.
*DELETE ADJACENT DUPLICATES FROM lt_rec23 COMPARING legacy.
*
*READ TABLE lt_header INTO ls_header INDEX 1.
*IF sy-subrc = 0.
* l_desc = ls_header-description.
*READ TABLE lt_rec23 INTO ls_rec23 WITH KEY description = l_desc.
*IF sy-subrc = 0.
*
* wa_fldnames-fieldname = 'TIMESTAMP_FROM'.
* APPEND wa_fldnames TO it_fldnames.
* wa_input_flds-field_names = it_fldnames.
* wa_input_flds-ref_guid = ls_header-guid.
* wa_input_flds-ref_kind = 'A'.
* wa_input_flds-objectname = 'APPOINTMENT'.
* wa_input_flds-logical_key = 'CONTEND'.
* INSERT wa_input_flds INTO TABLE it_input_flds.
*
* wa_input_flds-field_names = it_fldnames.
* wa_input_flds-ref_guid = ls_header-guid.
* wa_input_flds-ref_kind = 'A'.
* wa_input_flds-objectname = 'APPOINTMENT'.
* wa_input_flds-logical_key = 'CONTSTART'.
* INSERT wa_input_flds INTO TABLE it_input_flds.
*
*ls_appointment-ref_kind = 'A'.
*ls_appointment-ref_guid = ls_header-guid.
*ls_appointment-appt_type = 'CONTSTART'.
**CONVERT TIME AS THE SYSTEM TIME BELONGS TO DIFFERENT TIMEZONE
*
*CONVERT DATE ls_rec23-from_date TIME sy-uzeit INTO TIME STAMP lv_timestamp
* TIME ZONE sy-zonlo.
*
*ls_appointment-timestamp_from = lv_timestamp.
*ls_appointment-mode = 'B'.
*INSERT ls_appointment INTO TABLE lt_appointment.
*
*ls_appointment-ref_kind = 'A'.
*ls_appointment-ref_guid = ls_header-guid.
*ls_appointment-appt_type = 'CONTEND'.
*
*CONVERT DATE ls_rec23-to_date TIME sy-uzeit INTO TIME STAMP lv_timestamp
* TIME ZONE sy-zonlo.
*
*ls_appointment-timestamp_from = lv_timestamp.
*ls_appointment-mode = 'B'.
*INSERT ls_appointment INTO TABLE lt_appointment.
*
*lv_guid_header = ls_header-guid.
*
*CALL FUNCTION 'CRM_APPT_MAINTAIN_MULTI_OW'
* EXPORTING
* iv_ref_guid = lv_guid_header
* iv_ref_kind = 'A'
* it_appointment_com = lt_appointment
* CHANGING
* ct_input_fields = it_input_flds
* EXCEPTIONS
* precondition_violation = 1
* invariant_violation = 2
* OTHERS = 3.
*
*ENDIF.
*ENDIF.
ENDFORM. " APPOINTMENTS
*&---------------------------------------------------------------------*
*& Form SERVICE_AGREEMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM service_agreement .
* DATA : lt_service_assign TYPE crmt_service_assign_comt,
* ls_service_i_com TYPE crmt_service_i_com,
* lt_input_fiel TYPE crmt_input_field_names_tab,
* ls_input_fiel TYPE crmt_input_field_names,
* ls_rec23 LIKE ls_record.
*
*LOOP AT lt_itm_dta INTO ls_itm_dta.
*
* ls_input_fiel-fieldname = 'SRV_SERWI'.
* INSERT ls_input_fiel INTO TABLE lt_input_fiel.
* ls_input_fiel-fieldname = 'SRV_ESCAL'.
* INSERT ls_input_fiel INTO TABLE lt_input_fiel.
*
*TRANSLATE ls_itm_dta-resp_profile TO UPPER CASE.
* ls_service_i_com-srv_escal = ls_itm_dta-resp_profile."'FIRST'.
*TRANSLATE ls_itm_dta-ser_profile TO UPPER CASE.
* ls_service_i_com-srv_serwi = ls_itm_dta-ser_profile. "'7X24'.
* ls_service_i_com-ref_guid = ls_itm_dta-guid.
*
* CALL FUNCTION 'CRM_SERVICE_I_MAINTAIN_OW'
* EXPORTING
* is_service_i_com = ls_service_i_com
* it_service_assign_com = lt_service_assign
* CHANGING
* ct_input_field_names = lt_input_fiel
* EXCEPTIONS
* item_change_error = 1
* item_create_error = 2
* OTHERS = 3.
*ENDLOOP.
ENDFORM. " SERVICE_AGREEMENT
*&---------------------------------------------------------------------*
*& Form PRICE_AGREEMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM price_agreement .
DATA : ls_rec1 LIKE ls_record.
DATA : l_val TYPE string,
lv_index TYPE i VALUE '1',
l_count TYPE i,
ls_table LIKE ls_record.
DATA : lt_table LIKE lt_record.
CONSTANTS lc_object_name TYPE crmt_ext_obj_name VALUE 'COND_RECORD_MAX_WS_CRM
'. " lv_obj = 'COND_RECORD_1300'.
DATA: lv_factory TYPE REF TO cl_crm_bol_entity_factory.
DATA: ls_admini TYPE crmst_admini_btil.
DATA: lr_cond_maint_context TYPE REF TO cl_crm_bol_entity.
DATA: ls_cond_maint_context TYPE crmt_cnd_maint_cntxt_struct. "#EC NEEDED
DATA: ir_admini TYPE REF TO cl_crm_bol_entity.
DATA: lr_transaction TYPE REF TO if_bol_transaction_context .
DATA: ls_cond_record_max_ws_crm TYPE /1cn/working_set_e_d_crm.
DATA: lr_msg TYPE REF TO if_genil_message_container.
DATA: lv_product_id TYPE comt_product_id,
lv_product_type TYPE comt_product_type.
DATA: lt_params TYPE crmt_name_value_pair_tab,
ls_params TYPE crmt_name_value_pair.
DATA: iv_product_guid TYPE comt_product_guid.
LOOP AT lt_pragree INTO ls_pragree.
*1:88.04:75:68.71:150:60.02
REFRESH : lt_scale_tab_t, lt_scale_tab.
DATA : lv_amt TYPE p DECIMALS 2,
lv_amt1 TYPE p DECIMALS 2,
lv2 type string,
lv3 type string,
lv_string2 type string.
clear : l_v1, l_v2, lv2 ,lv3.
clear : lv_amt, lv_amt1.
clear : ls_scale_tab.
IF ls_pragree-scale_amt IS NOT INITIAL.
lv_string = ls_pragree-scale_amt.
DO .
SPLIT lv_string AT ':' INTO l_v1 l_v2.
* ls_scale_tab-scale_amt1 = l_v1.
lv_string = l_v2.
SPLIT lv_string AT ':' INTO l_v1 l_v2.
ls_scale_tab-scale_rate1 = l_v1.
lv_string = l_v2.
lv_string2 = l_v2.
split lv_string2 at ':' into lv2 lv3.
IF lv2 is not initial.
ls_scale_tab-scale_amt1 = lv2 - 1.
ELSE.
IF lv_string2 is not initial.
ls_scale_tab-scale_amt1 = lv_string2 - 1.
ENDIF.
ENDIF.
IF l_v1 IS NOT INITIAL and lv_string2 is initial..
lv_amt = l_v1.
ENDIF.
IF l_v1 IS INITIAL or lv_string2 is initial.
EXIT.
ELSE.
INSERT ls_scale_tab INTO TABLE lt_scale_tab.
ENDIF.
ENDDO.
ENDIF.
IF ls_pragree-pr_amount IS INITIAL.
CONTINUE.
ENDIF.
SELECT SINGLE product_guid FROM comm_product INTO iv_product_guid
WHERE product_id = ls_pragree-product_list.
IF iv_product_guid IS INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'COM_PRODUCT_ID_GET'
EXPORTING
iv_product_guid = iv_product_guid
IMPORTING
ev_product_id = lv_product_id
ev_product_type = lv_product_type
EXCEPTIONS
not_found = 1
wrong_call = 2
OTHERS = 3.
CHECK sy-subrc IS INITIAL.
ir_admini = lr_core->get_root_entity( iv_object_name = 'BTAdminI' iv_object_
guid = ls_pragree-guid ).
CHECK ir_admini IS BOUND.
ASSERT ir_admini IS BOUND AND ir_admini->get_name( ) = 'BTAdminI'.
ir_admini->if_bol_bo_property_access~get_properties( IMPORTING es_attributes
= ls_admini ).
lr_cond_maint_context = ir_admini->get_related_entity( 'BTItemPriceAgreement
sInit' ).
lr_cond_maint_context->if_bol_bo_property_access~get_properties( IMPORTING e
s_attributes = ls_cond_maint_context ).
* get the factory for the current object
lv_factory = lr_core->get_entity_factory( lc_object_name ).
ASSERT lv_factory IS BOUND.
REFRESH : lt_params.
ls_params-name = 'KSCHL'.
* ls_params-value = 'ZGPO'.
ls_params-value = 'ZPR0'.
APPEND ls_params TO lt_params.
ls_params-name = 'KVEWE'.
ls_params-value = 'PR'.
APPEND ls_params TO lt_params.
ls_params-name = 'KOTABNR'.
ls_params-value = 'SAP00090'.
APPEND ls_params TO lt_params.
lr_cond_rec = lv_factory->create( iv_params = lt_params ).
IF lr_cond_rec IS INITIAL.
RETURN.
ENDIF.
* copied from CL_CRMCMP_C_CONDTYPEDECI0_IMPL~EH_ONOK
lr_cond_rec->reread( ).
lr_cond_rec->lock( ).
lr_cond_rec->switch_to_change_mode( ).
lr_msg = lr_cond_rec->get_message_container( ).
IF lr_msg IS BOUND.
lr_msg->delete_messages( ).
ENDIF.
ASSERT lr_cond_rec IS BOUND AND lr_cond_rec->get_name( ) = lc_object_name.
lr_cond_rec->if_bol_bo_property_access~get_properties( IMPORTING es_attribut
es = ls_cond_record_max_ws_crm ).
ls_cond_record_max_ws_crm-product_id = lv_product_id.
ls_cond_record_max_ws_crm-product_type = lv_product_type.
ls_cond_record_max_ws_crm-crm_item_guid = ls_admini-guid.
* Set amount
IF ls_pragree-scale_amt IS NOT INITIAL.
ls_cond_record_max_ws_crm-kbetr_prt = lv_amt.
ls_cond_record_max_ws_crm-konwa = 'USD'.
ELSE.
ls_cond_record_max_ws_crm-kbetr_prt = ls_pragree-pr_amount.
ENDIF.
lr_cond_rec->if_bol_bo_property_access~set_properties( EXPORTING is_attribut
es = ls_cond_record_max_ws_crm ).
lr_core->modify( ).
*Scale
PERFORM create_scale.
ENDLOOP.
ENDFORM. " PRICE_AGREEMENT
*&---------------------------------------------------------------------*
*& Form CREATE_SCALE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_scale .
DATA : lr_entity TYPE REF TO cl_crm_bol_entity,
relation TYPE crmt_relation_name,
lcol_scale TYPE REF TO cl_crm_bol_entity_col,
ls_table TYPE /1cn/tscale_set_ext_cp.
* TYPES : BEGIN OF ty_scale_tab,
* scale_amt1 TYPE string,
* scale_rate1 TYPE string,
* END OF ty_scale_tab.
* DATA : lt_scale_tab TYPE TABLE OF ty_scale_tab,
* lt_scale_tab_t TYPE TABLE OF ty_scale_tab,
* ls_scale_tab TYPE ty_scale_tab.
* DATA : lv_string TYPE string.
* DATA : l_v1 TYPE string,
* l_v2 TYPE string.
CHECK ls_pragree-scale_amt IS NOT INITIAL.
IF lr_cond_rec IS BOUND.
relation = 'REL_SCALECRMDATA_CP'.
lcol_scale ?= lr_cond_rec->get_related_entities( iv_relation_name = relation
).
IF lcol_scale IS BOUND.
lr_entity ?= lcol_scale->if_bol_bo_col~get_first( ).
CHECK lr_entity IS BOUND.
lr_entity->lock( ).
lr_entity->switch_to_change_mode( ).
TRY.
CALL METHOD lr_entity->if_bol_bo_property_access~set_property_as_strin
g
EXPORTING
iv_attr_name = 'SCALE_BASE_TYPE'
iv_value = 'C'.
CATCH cx_sy_conversion_error .
ENDTRY.
TRY.
CALL METHOD lr_entity->if_bol_bo_property_access~set_property_as_strin
g
EXPORTING
iv_attr_name = 'SCALE_TYPE'
iv_value = 'D'.
CATCH cx_sy_conversion_error .
ENDTRY.
TRY.
CALL METHOD lr_entity->if_bol_bo_property_access~set_property_as_strin
g
EXPORTING
iv_attr_name = 'SCALE_UNIT'
iv_value = 'EA'.
CATCH cx_sy_conversion_error .
ENDTRY.
lr_core->modify( ).
* Create Scale Table
FREE lcol_scale.
FREE lr_entity.
* REFRESH : lt_scale_tab_t, lt_scale_tab.
*
* IF ls_pragree-scale_amt IS NOT INITIAL.
* lv_string = ls_pragree-scale_amt.
* DO .
* SPLIT lv_string AT ':' INTO l_v1 l_v2.
* ls_scale_tab-scale_amt1 = l_v1.
* lv_string = l_v2.
* SPLIT lv_string AT ':' INTO l_v1 l_v2.
* ls_scale_tab-scale_rate1 = l_v1.
* lv_string = l_v2.
*
* IF l_v1 IS INITIAL.
* EXIT.
* ELSE.
* INSERT ls_scale_tab INTO TABLE lt_scale_tab.
* ENDIF.
* ENDDO.
*
* ENDIF.
*Extra Entry in Scale
* lt_scale_tab_t[] = lt_scale_tab[].
* SORT lt_scale_tab_t ASCENDING BY scale_rate1.
* READ TABLE lt_scale_tab_t INTO ls_scale_tab INDEX 1.
* IF sy-subrc = 0.
* DATA : lv_amt TYPE p DECIMALS 2,
* lv_amt1 TYPE p DECIMALS 2.
* lv_amt = ls_scale_tab-scale_rate1.
* lv_amt1 = '0.01'.
* lv_amt = lv_amt - lv_amt1.
* ls_scale_tab-scale_amt1 = '9999999999999.999'.
* ls_scale_tab-scale_rate1 = lv_amt.
* INSERT ls_scale_tab INTO TABLE lt_scale_tab.
* ENDIF.
LOOP AT lt_scale_tab INTO ls_scale_tab.
relation = 'REL_SCALECRMSET_CP'.
lcol_scale ?= lr_cond_rec->get_related_entities( iv_relation_name = rela
tion ).
CHECK lcol_scale IS BOUND.
lr_entity ?= lcol_scale->if_bol_bo_col~get_first( ).
CHECK lr_entity IS BOUND.
CALL METHOD lr_entity->if_bol_bo_property_access~get_properties
IMPORTING
es_attributes = ls_table.
ls_table-/sapcnd/lin_value_01_001 = ls_scale_tab-scale_amt1.
ls_table-kbetr_prt = ls_scale_tab-scale_rate1.
FREE lr_entity.
lr_entity ?= lr_cond_rec->create_related_entity( iv_relation_name = rela
tion ).
lr_entity->if_bol_bo_property_access~set_properties( EXPORTING is_attrib
utes = ls_table ).
lcol_scale->if_bol_bo_col~add( lr_entity ).
lr_core->modify( ).
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " CREATE_SCALE
*&---------------------------------------------------------------------*
*& Form SERV_ORG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM serv_org .
DATA : lt_input_fields TYPE crmt_input_field_tab,
ls_input_fields TYPE crmt_input_field,
lt_fieldnames TYPE crmt_input_field_names_tab,
ls_fieldnames TYPE crmt_input_field_names,
lt_orgman TYPE crmt_orgman_comt,
ls_orgman TYPE crmt_orgman_com.
READ TABLE lt_header INTO ls_header INDEX 1.
ls_fieldnames-fieldname = 'SERVICE_ORG_ORI'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'SERVICE_ORG_SHORT'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_input_fields-field_names = lt_fieldnames.
ls_input_fields-ref_guid = ls_header-guid.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-objectname = 'ORGMAN'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
ls_orgman-ref_guid = ls_header-guid.
ls_orgman-ref_kind = 'A'.
ls_orgman-sales_org_ori = 'C'.
ls_orgman-dis_channel_ori = 'C'." C
ls_orgman-sales_off_ori = 'C'." C
ls_orgman-sales_group_ori = 'C'." C
ls_orgman-sales_orgr_ori = 'A'." A
ls_orgman-sales_org = 'O 50000005'.
ls_orgman-sales_office = 'O 50000171'.
ls_orgman-sales_group = 'O 50000172'.
ls_orgman-sales_org_resp = 'O 50000172'.
ls_orgman-sales_org_short = 'BP11'.
ls_orgman-sales_office_short = 'GSA'.
ls_orgman-sales_group_short = 'SVC OPS'.
ls_orgman-sales_org_resp_short = 'SVC OPS'.
ls_orgman-service_org_short = '50000002'.
INSERT ls_orgman INTO TABLE lt_orgman.
REFRESH : lt_fieldnames.
ls_fieldnames-fieldname = 'NO_DETERMINATION'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'SERVICE_ORGR_ORI'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'SERVICE_ORG_RESP'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_input_fields-field_names = lt_fieldnames.
ls_input_fields-ref_guid = ls_header-guid.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-objectname = 'ORGMAN'.
INSERT ls_input_fields INTO TABLE lt_input_fields.
ls_orgman-ref_guid = ls_header-guid.
ls_orgman-ref_kind = 'A'.
ls_orgman-sales_org_ori = 'C'.
ls_orgman-dis_channel_ori = 'C'." C
ls_orgman-sales_off_ori = 'C'." C
ls_orgman-sales_group_ori = 'C'." C
ls_orgman-service_orgr_ori = 'C'.
ls_orgman-sales_orgr_ori = 'A'." A
ls_orgman-sales_org = 'O 50000005'.
ls_orgman-sales_office = 'O 50000171'.
ls_orgman-sales_group = 'O 50000172'.
ls_orgman-sales_org_resp = 'O 50000172'.
ls_orgman-sales_org_short = 'BP11'.
ls_orgman-sales_office_short = 'GSA'.
ls_orgman-sales_group_short = 'SVC OPS'.
ls_orgman-sales_org_resp_short = 'SVC OPS'.
ls_orgman-service_org_short = '50000002'.
ls_orgman-service_org = 'O 50000002'.
ls_orgman-service_org_resp = 'O 50000002'.
ls_orgman-no_determination = 'X'.
ls_orgman-mode = 'B'.
INSERT ls_orgman INTO TABLE lt_orgman.
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_orgman = lt_orgman
CHANGING
ct_input_fields = lt_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " SERV_ORG
*&---------------------------------------------------------------------*
*& Form SET_STAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_stat .
*********************8set status**********************
DATA : l_count TYPE i .
LOOP AT lt_item INTO ls_item.
DATA : lt_stat TYPE crmt_status_comt,
ls_stat TYPE crmt_status_com,
lt_fldnames TYPE crmt_input_field_names_tab,
ls_fldnames TYPE crmt_input_field_names.
ls_fldnames-fieldname = 'ACTIVATE'.
INSERT ls_fldnames INTO TABLE lt_fldnames.
l_count = l_count + 1.
ls_stat-ref_handle = l_count.
ls_stat-ref_guid = ls_item-guid.
ls_stat-ref_kind = 'B'.
ls_stat-status = 'I1004'.
ls_stat-activate = 'X'.
INSERT ls_stat INTO TABLE lt_stat.
CALL FUNCTION 'CRM_STATUS_MAINTAIN_OW'
EXPORTING
it_status_com = lt_stat
CHANGING
ct_input_field_names = lt_fldnames
EXCEPTIONS
not_allowed = 1
error_occurred = 2
warning_occurred = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDLOOP.
*************************Set Status********************************
ENDFORM. " SET_STAT

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy