You are on page 1of 24

*&---------------------------------------------------------------------* *& Report ZORDER_CREATE *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zorder_create LINE-SIZE 255.

DATA: lt_guid TYPE crmt_object_guid_tab. DATA: lv_guid TYPE crmt_object_guid. DATA : lt_partners TYPE crmt_partner_external_wrkt, lwa_partners TYPE crmt_partner_external_wrk, lt_orderadm_i TYPE crmt_orderadm_i_wrkt, lwa_orderadm_i TYPE crmt_orderadm_i_wrk, lt_activity TYPE crmt_activity_h_wrkt, lwa_activity TYPE crmt_activity_h_wrk, lt_pridoc TYPE crmt_pric_cond_t, lwa_pridoc TYPE crmt_pric_cond, lt_pric_cond TYPE prct_cond_du_tab, lwa_pric_cond TYPE prct_cond_du, lt_product type CRMT_PRODUCT_I_WRKT, lwa_product type CRMT_PRODUCT_I_WRK, lt_orderadm_h TYPE crmt_orderadm_h_wrkt, lwa_orderadm_h TYPE crmt_orderadm_h_wrk, lt_orgman TYPE crmt_orgman_wrkt, lwa_orgman TYPE crmt_orgman_wrk, lt_pricing TYPE crmt_pricing_wrkt, lwa_pricing TYPE crmt_pricing_wrk, lt_status type CRMT_STATUS_WRKT, lwa_status type CRMT_STATUS_WRK, lt_sales type CRMT_SALES_WRKT, lwa_sales type CRMT_SALES_WRK, lt_sales1 type CRMT_SALES_WRKT, lwa_sales1 type CRMT_SALES_WRK, lt_price_i type CRMT_PRICING_I_WRKT, lwa_price_i type CRMT_PRICING_I_WRK, lt_docflow TYPE crmt_doc_flow_wrkt, lwa_docflow TYPE crmt_doc_flow_wrk, lt_appointment type CRMT_APPOINTMENT_WRKT, lwa_appointment type CRMT_APPOINTMENT_WRK, lT_CUSTOMER_H type CRMT_CUSTOMER_H_WRKT, lwa_customer_h type CRMT_CUSTOMER_H_WRK, lt_customer_i type CRMT_CUSTOMER_I_WRKT, lwa_customer_i type CRMT_CUSTOMER_I_WRK, LT_TEXT TYPE CRMT_TEXT_WRKT, LWA_TEXT TYPE CRMT_TEXT_WRK, LT_STXH TYPE STANDARD TABLE OF STXH , LWA_STXH TYPE STXH, LT_LINES TYPE COMT_TEXT_LINES_T, LWA_LINES TYPE TLINE.

*code for CRM_TEST_ORDER_MAINTAIN INCLUDE crm_direct.

SELECTION-SCREEN BEGIN OF BLOCK general WITH FRAME TITLE text-100. PARAMETERS: proc TYPE crmt_process_type DEFAULT '' NO-DISPLAY, hdr TYPE i DEFAULT 1 NO-DISPLAY, itm TYPE i DEFAULT 1 NO-DISPLAY, sub TYPE i DEFAULT 0 NO-DISPLAY, t_no TYPE crmt_object_id_db . SELECTION-SCREEN END OF BLOCK general. SELECTION-SCREEN BEGIN OF BLOCK item_data WITH FRAME TITLE text-101. PARAMETERS: prod TYPE crmt_ordered_prod DEFAULT '' NO-DISPLAY, prp TYPE comt_product_id DEFAULT '' NO-DISPLAY, jour TYPE crmt_object_guid DEFAULT '' NO-DISPLAY, quan TYPE crmt_qty_order DEFAULT '1' NO-DISPLAY, unit TYPE crmt_process_qty_unit DEFAULT '' NO-DISPLAY. SELECTION-SCREEN END OF BLOCK item_data. SELECTION-SCREEN BEGIN OF BLOCK partnerdata WITH FRAME TITLE text-102. PARAMETERS: part TYPE crmt_partner_no DEFAULT '' NO-DISPLAY, bp_fct TYPE crmt_partner_fct DEFAULT '00000001' NO-DISPLAY, ship_to TYPE crmt_partner_no DEFAULT '' NO-DISPLAY, contact TYPE crmt_partner_no DEFAULT '' NO-DISPLAY. SELECTION-SCREEN END OF BLOCK partnerdata. SELECTION-SCREEN BEGIN OF BLOCK orgdata PARAMETERS: resp TYPE crmt_sales_org_resp org TYPE crmt_sales_org_short weg TYPE crmt_distribution_channel serv TYPE crmt_service_org_short SELECTION-SCREEN END OF BLOCK orgdata. WITH FRAME TITLE text-103. DEFAULT DEFAULT DEFAULT DEFAULT '' '' '' '' NO-DISPLAY, NO-DISPLAY, NO-DISPLAY, NO-DISPLAY.

SELECTION-SCREEN BEGIN OF BLOCK headercond WITH FRAME TITLE text-113. PARAMETERS: conhtype TYPE prct_cond_type NO-DISPLAY, conhrate TYPE prct_cond_rate NO-DISPLAY, conhcurr TYPE prct_cond_curr DEFAULT 'EUR' NO-DISPLAY. SELECTION-SCREEN END OF BLOCK headercond. SELECTION-SCREEN BEGIN OF BLOCK itemcond WITH FRAME TITLE text-114. PARAMETERS: conitype TYPE prct_cond_type NO-DISPLAY, conirate TYPE prct_cond_rate NO-DISPLAY, conicurr TYPE prct_cond_curr DEFAULT 'EUR' NO-DISPLAY. SELECTION-SCREEN END OF BLOCK itemcond. TABLES: crmd_orderadm_h. SELECTION-SCREEN BEGIN OF BLOCK flow WITH FRAME TITLE text-105. SELECT-OPTIONS: objid FOR crmd_orderadm_h-object_id NO-DISPLAY. PARAMETERS: relkind TYPE crmt_vona_kind DEFAULT 'D' NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK flow. SELECTION-SCREEN BEGIN OF BLOCK dates WITH FRAME TITLE text-106. PARAMETERS: dat_ty1 TYPE crmt_dates_type DEFAULT '' NO-DISPLAY, date_1 TYPE sydatum NO-DISPLAY, dat_ty2 TYPE crmt_dates_type DEFAULT '' NO-DISPLAY, date_2 TYPE sydatum NO-DISPLAY. SELECTION-SCREEN END OF BLOCK dates. SELECTION-SCREEN BEGIN OF BLOCK flags WITH FRAME TITLE text-104. PARAMETERS: * save AS CHECKBOX ," NO-DISPLAY, save DEFAULT 'X' NO-DISPLAY, init NO-DISPLAY, read NO-DISPLAY, prod1 NO-DISPLAY, part1 NO-DISPLAY, bench NO-DISPLAY, whole NO-DISPLAY, trace DEFAULT '' NO-DISPLAY, guids DEFAULT '' NO-DISPLAY, nobdoc DEFAULT '' NO-DISPLAY, distlock DEFAULT '' NO-DISPLAY. SELECTION-SCREEN END OF BLOCK flags. CONSTANTS: bp_kind bp_no_ty bp_disp r_ori d_ori

TYPE TYPE TYPE TYPE TYPE

crmt_partner_kind_of_entry crmt_partner_no_type crmt_partner_display_type crmt_sales_org_resp_origin crmt_dis_channel_origin

VALUE VALUE VALUE VALUE VALUE

'C', 'BP', 'BP', 'C', 'C'.

DATA: gt_header TYPE crmt_object_guid_tab, * MAINTAIN-structures gt_orderadm_h TYPE crmt_orderadm_h_comt, gwa_orderadm_h TYPE crmt_orderadm_h_com, gt_orderadm_i TYPE crmt_orderadm_i_comt, gt_schedlin_i_com TYPE crmt_schedlin_i_comt, gt_input_fields TYPE crmt_input_field_tab, gt_partner TYPE crmt_partner_comt, gt_orgman TYPE crmt_orgman_comt, gt_doc_flow TYPE crmt_doc_flow_comt, gt_appointment TYPE crmt_appointment_comt, gt_ordprp_i TYPE crmt_ordprp_i_comt, gt_product_i TYPE crmt_product_i_comt, gt_activity_i TYPE crmt_activity_i_comt, gt_status TYPE crmt_status_comt, gt_pricing TYPE crmt_pricing_comt, * WORK-structures gs_orderadm_h TYPE crmt_orderadm_h_com,

gs_schedlin_i_com gs_orderadm_h_wrk gs_partner gt_pridoc_com * temp structures gt_saved_objects gt_obj_guids gv_log_handle gt_guid_handle gv_prod_count gv_cnt TYPE i, gv_start TYPE i, gv_time TYPE i, gv_handle TYPE i, gv_save_1 TYPE i, gv_save_2 TYPE i.

TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE

crmt_schedlin_i_com, crmt_orderadm_h_wrk, crmt_partner_com, crmt_pridoc_comt, crmt_return_objects, crmt_object_guid_tab, balloghndl, crmt_guid_handle_tab,

TYPE num4,

TYPES: BEGIN OF ls_trace_sum, count TYPE i, function TYPE rs38l_fnam, END OF ls_trace_sum, lt_trace_sum TYPE STANDARD TABLE OF ls_trace_sum.

TYPES: BEGIN OF ty_trace, type(2) TYPE c, guid_hdr TYPE crmt_object_guid, exetime TYPE crmt_event_exetime, obj_guid TYPE crmt_object_guid, obj_name TYPE crmt_object_name, event TYPE crmt_event, attri TYPE crmt_event_attribut, function TYPE rs38l_fnam, END OF ty_trace. TYPES: tt_trace TYPE STANDARD TABLE OF ty_trace. DATA: ls_trace lv_order_guid lt_trace_call ls_trace_call TYPE TYPE TYPE TYPE ty_trace, crmt_object_guid, lt_trace_sum, ls_trace_sum.

FIELD-SYMBOLS: <gv_trace_on> TYPE crmt_boolean, <gt_trace> TYPE tt_trace. * >>>>>>>>>>>>>>>>>>>>>> START <<<<<<<<<<<<<<<<<<<<< CLEAR gv_handle. SELECT SINGLE guid FROM crmd_orderadm_h INTO lv_guid WHERE object_id = t_no. CHECK lv_guid IS NOT INITIAL.

REFRESH : lt_orderadm_h , lt_partners . INSERT lv_guid INTO TABLE lt_guid. CALL FUNCTION 'CRM_ORDER_READ' EXPORTING it_header_guid = lt_guid IMPORTING et_orderadm_h = lt_orderadm_h et_orderadm_i = lt_orderadm_i et_product_i = lt_product et_sales = lt_sales1 et_partner = lt_partners et_status = lt_status et_activity_h = lt_activity et_orgman = lt_orgman et_pricing = lt_pricing et_appointment = lt_appointment et_customer_h = lt_customer_h et_customer_i = lt_customer_i et_doc_flow = lt_docflow ET_TEXT = LT_TEXT EXCEPTIONS document_not_found = 1 error_occurred = 2 document_locked = 3 no_change_authority = 4 no_display_authority = 5 no_change_allowed = 6 OTHERS = 7. * get time stamp field gv_time. GET RUN TIME FIELD gv_time. gv_start = gv_time. PERFORM check_trace. *PERFORM write_parameters. PERFORM fill_interface_tables. PERFORM crm_maintain. PERFORM crm_save. PERFORM crm_init. * PERFORM crm_read. PERFORM crm_done. *PERFORM write_summary. *PERFORM write_events. * <<<<<<<<<<<<<<<<<<<<<<< END >>>>>>>>>>>>>>>>>>>>>

*----------------------------------------------------------------------* Forms *----------------------------------------------------------------------*---------------------------------------------------------------------* * FORM get_handle_guid *---------------------------------------------------------------------* FORM get_handle_guid USING iv_handle TYPE i CHANGING cv_ref_handle TYPE crmt_handle cv_ref_guid TYPE crmt_object_guid. DATA: ls_guid_handle TYPE crmt_guid_handle.

IF guids IS INITIAL OR iv_handle = 0. cv_ref_handle = iv_handle. CLEAR cv_ref_guid. ELSE. CLEAR cv_ref_handle. READ TABLE gt_guid_handle INTO ls_guid_handle WITH KEY handle = iv_handle. IF sy-subrc <> 0. ls_guid_handle-handle = iv_handle. CALL FUNCTION 'CRM_GUID_CREATE' IMPORTING ev_guid = ls_guid_handle-guid. INSERT ls_guid_handle INTO TABLE gt_guid_handle. ENDIF. cv_ref_guid = ls_guid_handle-guid. ENDIF. ENDFORM. "get_handle_guid *---------------------------------------------------------------------* * FORM partner_create * *---------------------------------------------------------------------* FORM partner_create USING us_header_handle. STATICS: sv_partner_no DATA: ls_partner_com ls_input_field ls_input_field_names

TYPE num4. TYPE crmt_partner_com, TYPE crmt_input_field, TYPE crmt_input_field_names.

LOOP AT lt_partners INTO lwa_partners. CLEAR : ls_partner_com . * Fill Sold_to PERFORM get_handle_guid USING us_header_handle CHANGING ls_partner_com-ref_handle ls_partner_com-ref_guid. ls_partner_com-ref_kind = gc_object_ref_kind-orderadm_h. ls_partner_com-ref_partner_handle = lwa_partners-ref_partner_handle. ls_partner_com-kind_of_entry = bp_kind. * ls_partner_com-partner_fct = bp_fct. ls_partner_com-no_type = bp_no_ty. ls_partner_com-display_type = bp_disp. * IF part1 = false. ls_partner_com-partner_no = lwa_partners-partner_no. ls_partner_com-partner_fct = lwa_partners-partner_fct. ls_partner_com-kind_of_entry = lwa_partners-kind_of_entry. ls_partner_com-relation_partner = lwa_partners-relation_partner.

INSERT ls_partner_com INTO TABLE gt_partner. PERFORM get_handle_guid USING us_header_handle

CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_h. ls_input_field-logical_key = ls_partner_com-ref_partner_handle. ls_input_field-objectname = gc_object_name-partner. ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO 'DISPLAY_TYPE'. TABLE ls_input_field-field_names. 'KIND_OF_ENTRY'. TABLE ls_input_field-field_names. 'NO_TYPE'. TABLE ls_input_field-field_names. 'PARTNER_FCT'. TABLE ls_input_field-field_names. 'PARTNER_NO'. TABLE ls_input_field-field_names. 'RELATION_PARTNER'. TABLE ls_input_field-field_names.

INSERT ls_input_field INTO TABLE gt_input_fields. ENDLOOP. ENDFORM. "partner_create

*---------------------------------------------------------------------* * FORM orgman_create * *---------------------------------------------------------------------* FORM orgman_create USING us_header_handle. DATA: ls_orgman_com TYPE crmt_orgman_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. IF NOT lt_orgman IS INITIAL . LOOP AT lt_orgman INTO lwa_orgman . CLEAR : ls_orgman_com . ls_orgman_com-dis_channel = lwa_orgman-dis_channel. ls_orgman_com-sales_org_short = lwa_orgman-sales_org_short. ls_orgman_com-sales_org_resp = lwa_orgman-sales_org_resp. ls_orgman_com-service_org_short = lwa_orgman-service_org_short. ls_orgman_com-service_org_resp_short = lwa_orgman-service_org_short.

CHECK NOT ls_orgman_com IS INITIAL. PERFORM get_handle_guid USING us_header_handle CHANGING ls_orgman_com-ref_handle ls_orgman_com-ref_guid. ls_orgman_com-ref_kind = gc_object_ref_kind-orderadm_h. ls_orgman_com-sales_org_ori = lwa_orgman-sales_org_ori. ls_orgman_com-dis_channel_ori = lwa_orgman-dis_channel_ori. INSERT ls_orgman_com INTO TABLE gt_orgman. PERFORM get_handle_guid USING us_header_handle CHANGING ls_input_field-ref_handle

ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_h. ls_input_field-objectname = gc_object_name-orgman. IF NOT ls_orgman_com-dis_channel IS INITIAL. ls_input_field_names-fieldname = 'DIS_CHANNEL'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orgman_com-sales_org_ori IS INITIAL. ls_input_field_names-fieldname = 'SALES_ORG_ORI'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orgman_com-dis_channel_ori IS INITIAL. ls_input_field_names-fieldname = 'DIS_CHANNEL_ORI'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orgman_com-sales_org_short IS INITIAL. ls_input_field_names-fieldname = 'SALES_ORG_SHORT'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orgman_com-sales_org_resp IS INITIAL. ls_input_field_names-fieldname = 'SALES_ORG_RESP'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orgman_com-service_org_short IS INITIAL. ls_input_field_names-fieldname = 'SERVICE_ORG_SHORT'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ls_input_field_names-fieldname = 'SERVICE_ORG_RESP_SHORT'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. INSERT ls_input_field INTO TABLE gt_input_fields. ENDLOOP. ENDIF. ENDFORM. "orgman_create *---------------------------------------------------------------------* * FORM dates_create *---------------------------------------------------------------------* FORM dates_create USING us_header_handle.

DATA:

lv_timestamp1 lv_timestamp2

TYPE timestamp, TYPE timestamp,

ls_date TYPE crmt_appointment_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. if not lt_appointment is initial. loop at lt_appointment into lwa_appointment. * IF NOT date_1 IS INITIAL. CLEAR ls_input_field. CLEAR ls_date. PERFORM get_handle_guid USING us_header_handle CHANGING ls_date-ref_handle ls_date-ref_guid. ls_date-ref_kind = gc_object_ref_kind-orderadm_h. ls_date-appt_type = lwa_appointment-appt_type. ls_date-timezone_from = lwa_appointment-timezone_from. ls_date-timestamp_from = lwa_appointment-timestamp_from. INSERT ls_date INTO TABLE gt_appointment. PERFORM get_handle_guid USING us_header_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_h. ls_input_field-objectname = gc_object_name-appointment. ls_input_field-logical_key = ls_date-appt_type. ls_input_field_names-fieldname = 'APPT_TYPE'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ls_input_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ls_input_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. endloop. endif. ENDFORM. "dates_create

*&---------------------------------------------------------------------* *& Form adm_h_create *&---------------------------------------------------------------------* FORM adm_h_create USING us_header_handle. READ TABLE lt_orderadm_h INTO lwa_orderadm_h INDEX 1. DATA: ls_orderadm_h TYPE crmt_orderadm_h_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. ls_orderadm_h-mode = gc_mode-create. ls_orderadm_h-process_type = lwa_orderadm_h-process_type.

ls_orderadm_h-description = lwa_orderadm_h-description. PERFORM get_handle_guid USING us_header_handle CHANGING ls_orderadm_h-handle ls_orderadm_h-guid. INSERT ls_orderadm_h INTO TABLE gt_orderadm_h.

PERFORM get_handle_guid USING us_header_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_kind-orderadm_h. ls_input_field-objectname = gc_object_name-orderadm_h. ls_input_field_names-fieldname = 'PROCESS_TYPE'. ls_input_field_names-fieldname = 'DESCRIPTION'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. ENDFORM. " adm_h_create

*&---------------------------------------------------------------------* *& Form adm_i_create *&---------------------------------------------------------------------* FORM adm_i_create USING us_hdr_handle us_itm_handle us_parent_handle. DATA: ls_orderadm_i TYPE crmt_orderadm_i_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names, lv_sdbm_1 TYPE num03, lv_sdbm_2 TYPE num03, lv_itm_handle TYPE i. LOOP AT lt_orderadm_i INTO lwa_orderadm_i. * CLEAR : ls_orderadm_i . ls_orderadm_i-mode = gc_mode-create. PERFORM get_handle_guid USING us_itm_handle CHANGING ls_orderadm_i-handle ls_orderadm_i-guid. PERFORM get_handle_guid USING us_hdr_handle CHANGING ls_orderadm_i-header_handle ls_orderadm_i-header. PERFORM get_handle_guid USING us_parent_handle CHANGING ls_orderadm_i-parent_handle ls_orderadm_i-parent. IF bench = true. prod1 = true. ENDIF. ls_orderadm_i-product = lwa_orderadm_i-product. ls_orderadm_i-ordered_prod = lwa_orderadm_i-ordered_prod. ls_orderadm_i-description = lwa_orderadm_i-description. ls_orderadm_i-itm_type = lwa_orderadm_i-itm_type. INSERT ls_orderadm_i INTO TABLE gt_orderadm_i.

ls_input_field-ref_kind = gc_object_kind-orderadm_i. ls_input_field-objectname = gc_object_name-orderadm_i. PERFORM get_handle_guid USING us_itm_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. IF prp IS INITIAL. ls_input_field_names-fieldname = 'ORDERED_PROD'. ELSE. ls_input_field_names-fieldname = 'MODE'. ENDIF. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. IF NOT ls_orderadm_i-parent_handle IS INITIAL. ls_input_field_names-fieldname = 'PARENT_HANDLE'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. IF NOT ls_orderadm_i-parent IS INITIAL. ls_input_field_names-fieldname = 'PARENT'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDIF. ls_input_field_names-fieldname = 'PRODUCT'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ls_input_field_names-fieldname = 'DECRIPTION'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. ENDLOOP. ENDFORM. " adm_i_create

*---------------------------------------------------------------------* * FORM ordprp_create *---------------------------------------------------------------------* FORM ordprp_create USING us_item_handle. DATA: ls_ordprp_i ls_input_field ls_input_field_names lv_sdbm_1 TYPE TYPE TYPE TYPE crmt_ordprp_i_com, crmt_input_field, crmt_input_field_names, num03.

PERFORM get_handle_guid USING us_item_handle CHANGING ls_ordprp_i-ref_handle ls_ordprp_i-ref_guid. IF prod1 = false. ls_ordprp_i-master_prp_id = prp. ELSE. IF bench = true. lv_sdbm_1 = gv_prod_count MOD 5. ELSE. lv_sdbm_1 = gv_prod_count. ENDIF. CONCATENATE prp lv_sdbm_1 INTO ls_ordprp_i-master_prp_id. ADD 1 TO gv_prod_count.

ENDIF. INSERT ls_ordprp_i INTO TABLE gt_ordprp_i. ls_input_field-ref_handle = us_item_handle. ls_input_field-ref_kind = gc_object_kind-orderadm_i. ls_input_field-objectname = gc_object_name-ordprp_i. ls_input_field_names-fieldname = 'MASTER_PRP_ID'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. ENDFORM. "ordprp_create

*&---------------------------------------------------------------------* *& Form schedlin_create *&---------------------------------------------------------------------* FORM schedlin_create USING us_item_handle. DATA: ls_schedlin_i_com ls_schedlin_com ls_input_field ls_input_field_names TYPE TYPE TYPE TYPE crmt_schedlin_i_com, crmt_schedlin_extd, crmt_input_field, crmt_input_field_names.

ls_schedlin_i_com-mode = gc_mode-create. PERFORM get_handle_guid USING us_item_handle CHANGING ls_schedlin_i_com-ref_handle ls_schedlin_i_com-ref_guid. IF ls_schedlin_i_com-ref_guid IS INITIAL. ls_schedlin_com-logical_key = '00000000000000000000000000000000'. ELSE. ls_schedlin_com-logical_key = ls_schedlin_i_com-ref_guid. ENDIF. ls_schedlin_com-handle = 0. ls_schedlin_com-quantity = quan. INSERT ls_schedlin_com INTO TABLE ls_schedlin_i_com-schedlines. INSERT ls_schedlin_i_com INTO TABLE gt_schedlin_i_com. ls_input_field_names-fieldname = 'QUANTITY'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. PERFORM get_handle_guid USING us_item_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i. ls_input_field-objectname = gc_object_name-schedlin. ls_input_field-logical_key = ls_schedlin_com-logical_key. INSERT ls_input_field INTO TABLE gt_input_fields. ENDFORM. " schedlin_create

*---------------------------------------------------------------------* * FORM orgman_create *

*---------------------------------------------------------------------* FORM product_i_create USING us_item_handle. DATA: ls_product_i_com TYPE crmt_product_i_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. IF not lt_product is initial. loop at lt_product into lwa_product. move-corresponding lwa_product to ls_product_i_com . CHECK NOT ls_product_i_com IS INITIAL. PERFORM get_handle_guid USING us_item_handle CHANGING ls_product_i_com-ref_handle ls_product_i_com-ref_guid. INSERT ls_product_i_com INTO TABLE gt_product_i. PERFORM get_handle_guid USING us_item_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i. ls_input_field-objectname = gc_object_name-product_i. ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO ls_input_field_names-fieldname = INSERT ls_input_field_names INTO 'PROCESS_QTY_UNIT'. TABLE ls_input_field-field_names. 'GROSS_WEIGHT'. TABLE ls_input_field-field_names. 'NET_WEIGHT'. TABLE ls_input_field-field_names. 'WEIGHT_UNIT'. TABLE ls_input_field-field_names. 'VOLUME'. TABLE ls_input_field-field_names. 'VOLUME_UNIT'. TABLE ls_input_field-field_names. 'PRICE_PRODUCT'. TABLE ls_input_field-field_names. 'PROCESS_QTY_NUM'. TABLE ls_input_field-field_names. 'PROCESS_QTY_DEN'. TABLE ls_input_field-field_names. 'CASH_DISC'. TABLE ls_input_field-field_names. 'BASE_QTY_UNIT'. TABLE ls_input_field-field_names.

INSERT ls_input_field INTO TABLE gt_input_fields. clear : ls_input_field ,ls_product_i_com . endloop. ENDIF.

ENDFORM.

"product_i_create

*---------------------------------------------------------------------* FORM activity_i_create USING us_item_handle. DATA: ls_activity_i_com TYPE crmt_activity_i_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. ls_activity_i_com-journal_guid = jour. CHECK NOT ls_activity_i_com IS INITIAL. PERFORM get_handle_guid USING us_item_handle CHANGING ls_activity_i_com-ref_handle ls_activity_i_com-ref_guid. INSERT ls_activity_i_com INTO TABLE gt_activity_i. PERFORM get_handle_guid USING us_item_handle CHANGING ls_input_field-ref_handle ls_input_field-ref_guid. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i. ls_input_field-objectname = gc_object_name-activity_i. ls_input_field_names-fieldname = 'JOURNAL_GUID'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. ENDFORM. "product_i_create

*---------------------------------------------------------------------* * FORM fill_interface_tables * *---------------------------------------------------------------------* FORM fill_interface_tables. DATA: lv_hdr TYPE i. * write: / text-001, gv_time time zone 'UTC+12'. * WRITE: / text-001, (18) gv_time, text-006. IF NOT objid IS INITIAL. SELECT guid FROM crmd_orderadm_h INTO TABLE gt_header WHERE object_id IN objid. DELETE ADJACENT DUPLICATES FROM gt_header COMPARING table_line. DESCRIBE TABLE gt_header LINES gv_cnt. ELSE. gv_cnt = 1. ENDIF.

lv_hdr = hdr * gv_cnt. DO lv_hdr TIMES. ADD 1 TO gv_handle. PERFORM adm_h_create USING gv_handle. PERFORM partner_create USING gv_handle. PERFORM orgman_create USING gv_handle. PERFORM header_cond_create USING gv_handle. PERFORM dates_create USING gv_handle. PERFORM status_create USING gv_handle. gv_save_1 = gv_handle. clear gv_prod_count. IF objid IS INITIAL. DO itm TIMES. ADD 1 TO gv_handle. PERFORM adm_i_create USING gv_save_1 gv_handle 0. PERFORM schedlin_create USING gv_handle. PERFORM product_i_create USING gv_handle. PERFORM activity_i_create USING gv_handle. PERFORM item_cond_create USING gv_handle. gv_save_2 = gv_handle. DO sub TIMES. ADD 1 TO gv_handle. PERFORM adm_i_create USING gv_save_1 gv_handle gv_save_2. PERFORM schedlin_create USING gv_handle. PERFORM product_i_create USING gv_handle. ENDDO. ENDDO. ENDIF. ENDDO. ENDFORM. "fill_interface_tables

*---------------------------------------------------------------------* * FORM crm_maintain * *---------------------------------------------------------------------* FORM crm_maintain. DATA: ls_linno TYPE sylinno, ls_colno TYPE sycolno. * PERFORM write_time USING text-002. ls_linno = sy-linno. ls_colno = sy-colno. CALL FUNCTION 'DIALOG_SET_NO_DIALOG'. CALL FUNCTION 'CRM_ORDER_MAINTAIN' EXPORTING it_schedlin_i = gt_schedlin_i_com it_partner = gt_partner it_orgman = gt_orgman

it_appointment it_ordprp_i it_product_i it_activity_i it_pridoc it_status CHANGING ct_orderadm_h ct_orderadm_i ct_input_fields ct_doc_flow cv_log_handle

= = = = = = = = = = =

gt_appointment gt_ordprp_i gt_product_i gt_activity_i gt_pridoc_com gt_status gt_orderadm_h gt_orderadm_i gt_input_fields gt_doc_flow gv_log_handle.

CALL FUNCTION 'DIALOG_SET_WITH_DIALOG'. sy-linno = ls_linno. sy-colno = ls_colno. REFRESH gt_obj_guids. * Get guids LOOP AT gt_orderadm_h INTO gs_orderadm_h. INSERT gs_orderadm_h-guid INTO TABLE gt_obj_guids. ENDLOOP. ENDFORM. "crm_maintain

*---------------------------------------------------------------------* * FORM crm_save * *---------------------------------------------------------------------* FORM crm_save. DATA: ls_linno ls_colno TYPE sylinno, TYPE sycolno.

REFRESH gt_saved_objects. IF ( save = true ) AND ( NOT gt_obj_guids[] IS INITIAL ). * PERFORM write_time USING text-004. ls_linno = sy-linno. ls_colno = sy-colno. CALL FUNCTION 'CRM_ORDER_SAVE' EXPORTING it_objects_to_save = gt_obj_guids iv_no_bdoc_send = nobdoc IMPORTING et_saved_objects = gt_saved_objects. COMMIT WORK.

sy-linno = ls_linno. sy-colno = ls_colno. ENDIF. * * LOOP AT gt_orderadm_h INTO gs_orderadm_h. Init IPC in any case! This is possible, because we know that we are calling the maintain a second time CALL FUNCTION 'CRM_PRIDOC_INIT_EC' EXPORTING iv_object_name = space iv_event_exetime = 088 iv_event = space iv_header_guid = gs_orderadm_h-guid. ENDLOOP. "crm_save

ENDFORM.

*---------------------------------------------------------------------* * FORM crm_read * *---------------------------------------------------------------------* FORM crm_read. DATA: lt_item lt_objects ls_linno ls_colno TYPE TYPE TYPE TYPE crmt_object_guid_tab, crmt_object_name_tab, sylinno, sycolno.

CHECK: read = true, NOT gt_obj_guids[] IS INITIAL. * PERFORM write_time USING text-003. ls_linno = sy-linno. ls_colno = sy-colno. PERFORM order_read_extern(crm_order_read) USING gt_obj_guids lt_item gc_mode-display lt_objects false. NEW-LINE. FORMAT COLOR OFF. ENDFORM. "crm_save

*---------------------------------------------------------------------* * FORM crm_Init *---------------------------------------------------------------------* FORM crm_init. DATA:

ls_linno ls_colno

TYPE sylinno, TYPE sycolno.

* CHECK: init = true. * PERFORM write_time USING text-107. ls_linno = sy-linno. ls_colno = sy-colno. IF whole = true. CALL FUNCTION 'CRM_ORDER_INITIALIZE' EXPORTING iv_initialize_whole_buffer = true EXCEPTIONS OTHERS = 2. ELSE. CALL FUNCTION 'CRM_ORDER_INITIALIZE' EXPORTING it_guids_to_init = gt_obj_guids EXCEPTIONS OTHERS = 2. ENDIF. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. sy-linno = ls_linno. sy-colno = ls_colno. * PERFORM doc_flow. ENDFORM. "crm_save

*&---------------------------------------------------------------------* *& Form crm_done *&---------------------------------------------------------------------* FORM crm_done. DATA: ls_saved_object TYPE crmt_return_objects_struc, lt_nametab type STANDARD TABLE OF DNTAB, lwa_nametab type DNTAB. data : gt_sales type CRMT_SALES_COMT, GT_TEXT TYPE CRMT_TEXT_COMT, LS_TEXT TYPE CRMT_TEXT_COM, LT_LINES_M TYPE COMT_TEXT_LINES_T, LS_LINE_M TYPE TLINE, ls_sales type CRMT_SALES_COM, lt_orderadm_i_M TYPE crmt_orderadm_i_wrkt, lwa_orderadm_i_M TYPE crmt_orderadm_i_wrk, zflag type i value 1. DATA: LT_EXCEPTION TYPE CRMT_EXCEPTION_T, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names.

*post maintain . refresh : lt_guid, lt_product . read table gt_orderadm_h INTO gs_orderadm_h index 1. refresh : lt_guid , lt_sales , lt_pricing , lt_price_i, gt_input_fields. lv_guid = gs_orderadm_h-guid. INSERT lv_guid INTO TABLE lt_guid. CALL FUNCTION 'CRM_ORDER_READ' EXPORTING IT_HEADER_GUID = lt_guid IMPORTING ET_ORDERADM_I = LT_ORDERADM_I_M ET_SALES = lt_sales ET_PRICING = lt_pricing ET_PRICING_I = lt_price_i. *SALES IF lt_sales is not initial. CALL FUNCTION 'NAMETAB_GET' EXPORTING LANGU = SY-LANGU TABNAME = 'CRMT_SALES_COM' TABLES NAMETAB = lt_nametab.

LOOP AT lt_sales1 into lwa_sales1. move-corresponding lwa_sales1 to ls_sales. read table lt_sales into lwa_sales index zflag. zflag = zflag + 1. ls_sales-ref_guid = lwa_sales-ref_guid. insert ls_sales into TABLE gt_sales. LOOP AT lt_nametab into lwa_nametab. ls_input_field_names-fieldname = lwa_nametab-fieldname. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. ENDLOOP. ls_input_field-objectname ='SALES'. ls_input_field-ref_kind = lwa_sales-ref_kind. ls_input_field-ref_guid = lwa_sales-ref_guid. INSERT ls_input_field INTO TABLE gt_input_fields. clear : ls_input_field. ENDLOOP. ENDIF. * TEXT IF LT_TEXT IS NOT INITIAL. LOOP AT LT_TEXT INTO LWA_TEXT . LT_LINES = LWA_TEXT-LINES. LWA_STXH = LWA_TEXT-STXH. IF LT_LINES IS NOT INITIAL . IF LWA_TEXT-REF_KIND = 'B'. READ TABLE LT_ORDERADM_I INTO LWA_ORDERADM_I WITH KEY GUID = LWA_TEXT-REF_GU ID. READ TABLE LT_ORDERADM_I_M INTO LWA_ORDERADM_I_M WITH KEY NUMBER_INT = LWA_O RDERADM_I-NUMBER_INT. LS_TEXT-REF_GUID = LWA_ORDERADM_I_M-guid.

ELSE. LS_TEXT-REF_GUID = LWA_SALES-REF_guid. ENDIF. LS_TEXT-ref_kind = LWA_TEXT-REF_KIND. LS_TEXT-TDID = LWA_STXH-TDID. LS_TEXT-TDSPRAS = LWA_STXH-TDSPRAS. LS_TEXT-TDID = LWA_STXH-TDID. LS_TEXT-TDSTYLE = LWA_STXH-TDSTYLE. LS_TEXT-TDFORM = LWA_STXH-TDFORM. LS_TEXT-MODE = 'A'. LOOP AT LT_LINES INTO LWA_LINES. LS_LINE_M-TDFORMAT = LWA_LINES-TDFORMAT. LS_LINE_M-TDLINE = LWA_LINES-TDLINE. INSERT LS_LINE_M INTO TABLE LT_LINES_M. ENDLOOP. LS_TEXT-LINES = LT_LINES_M. INSERT LS_TEXT INTO TABLE GT_TEXT. ls_input_field-objectname ='TEXTS'. ls_input_field-ref_kind = LWA_TEXT-REF_KIND. ls_input_field-ref_guid = LS_TEXT-REF_GUID. ls_input_field-LOGICAL_KEY = 'CRM_ORDERI00505689011F1EE1B789F1B6DFB23549'. ls_input_field_names-fieldname = 'LINES'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. clear : ls_input_field. REFRESH : LT_LINES_M. ENDIF. ENDLOOP. ENDIF. CALL FUNCTION 'CRM_ORDER_MAINTAIN' EXPORTING IT_TEXT = GT_TEXT IT_SALES = gt_sales IMPORTING et_exception = lt_exception CHANGING ct_orderadm_h = gt_orderadm_h ct_input_fields = Gt_input_fieldS. READ TABLE gt_orderadm_h into gwa_orderadm_h index 1. REFRESH : gt_obj_guids , gt_saved_objects. insert gwa_orderadm_h-guid into TABLE gt_obj_guidS. CALL FUNCTION 'CRM_ORDER_SAVE' EXPORTING it_objects_to_save = gt_obj_guids * iv_no_bdoc_send = nobdoc IMPORTING et_saved_objects = gt_saved_objects. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. LOOP AT gt_orderadm_h INTO gs_orderadm_h. IF NOT gs_orderadm_h-object_id IS INITIAL. WRITE: / gs_orderadm_h-object_id. lv_order_guid = gs_orderadm_h-guid. HIDE lv_order_guid.

ELSE. READ TABLE gt_saved_objects INTO ls_saved_object WITH KEY guid = gs_orderadm_h-guid. IF sy-subrc = 0. WRITE: / 'New order :', ls_saved_object-object_id. lv_order_guid = ls_saved_object-guid. HIDE lv_order_guid. ENDIF. ENDIF. ENDLOOP. ULINE. ENDFORM. " crm_done

*&---------------------------------------------------------------------* *& Form check_trace *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM check_trace. CHECK NOT trace IS INITIAL. * Load Functiongroup CALL FUNCTION 'CRM_EVENT_INITIAL_OW' EXPORTING iv_header_guid = gs_orderadm_h_wrk-guid EXCEPTIONS OTHERS = 0. IF NOT <gv_trace_on> IS ASSIGNED. ASSIGN ('(SAPLCRM_EVENT_OW)gv_trace_on') TO <gv_trace_on>. ENDIF. IF NOT <gt_trace> IS ASSIGNED. ASSIGN ('(SAPLCRM_EVENT_OW)GT_TRACE') TO <gt_trace>. ENDIF. IF <gv_trace_on> IS ASSIGNED AND <gt_trace> IS ASSIGNED. <gv_trace_on> = true. ELSE. trace = false. ENDIF. ENDFORM. " check_trace

AT LINE-SELECTION. DATA: lv_func_nam TYPE rs38l_fnam. CLEAR ls_trace_call.

CLEAR lv_order_guid. READ LINE sy-curow FIELD VALUE ls_trace_call-function. READ LINE sy-curow FIELD VALUE lv_order_guid. lv_func_nam = ls_trace_call-function. IF NOT lv_func_nam IS INITIAL. SET PARAMETER ID 'LIB' FIELD lv_func_nam. CALL TRANSACTION 'SE37' AND SKIP FIRST SCREEN. ENDIF. IF NOT lv_order_guid IS INITIAL. CALL FUNCTION 'CRM_ORDER_INITIALIZE' EXPORTING iv_initialize_whole_buffer = true EXCEPTIONS OTHERS = 0. * CALL FUNCTION 'CRM_1O_INIT_FOREIGN' EXPORTING iv_ui_method = 'ORDER' iv_process_mode = gc_mode-display iv_header_guid = lv_order_guid EXCEPTIONS OTHERS = 0. * call screen CALL FUNCTION 'CRM_1O_CALL_SCREEN_FOREIGN'. ENDIF. INITIALIZATION. DATA: lv_repid TYPE syrepid. DATA: lv_subrc TYPE sysubrc. DATA: lv_variant TYPE raldb_vari. lv_variant = sy-uname. lv_repid = sy-repid. CALL FUNCTION EXPORTING report = variant = IMPORTING r_c = 'RS_VARIANT_EXISTS' lv_repid lv_variant lv_subrc.

IF lv_subrc = 0. CALL FUNCTION 'RS_SUPPORT_SELECTIONS' EXPORTING report = lv_repid variant = lv_variant EXCEPTIONS variant_not_existent = 01 variant_obsolete = 02. ENDIF.

AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. CASE screen-name. WHEN 'R_ORI' OR 'D_ORI' OR 'BP_KIND' OR * 'BP_FCT' OR 'BP_NO_TY' OR 'BP_DISP'. screen-input = 0. MODIFY SCREEN. ENDCASE. ENDLOOP. *&---------------------------------------------------------------------* *& Form header_cond_create *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->US_HEADER_HANDLE text *----------------------------------------------------------------------* FORM header_cond_create USING us_header_handle. DATA: ls_pridoc_com TYPE crmt_pridoc_com. DATA: ls_cond TYPE prct_cond_external_input. IF NOT conhtype IS INITIAL. PERFORM get_handle_guid USING us_header_handle CHANGING ls_pridoc_com-ref_handle ls_pridoc_com-ref_guid. ls_pridoc_com-ref_kind = gc_object_ref_kind-orderadm_h. ls_cond-kschl = conhtype. ls_cond-kbetr = conhrate. ls_cond-waers = conhcurr. INSERT ls_cond INTO TABLE ls_pridoc_com-cond_add. INSERT ls_pridoc_com INTO TABLE gt_pridoc_com. ENDIF. ENDFORM. " header_cond_create

*&---------------------------------------------------------------------* *& Form item_cond_create *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->US_ITEM_HANDLE text *----------------------------------------------------------------------* FORM item_cond_create USING us_item_handle. DATA: ls_pridoc_com TYPE crmt_pridoc_com. DATA: ls_cond TYPE prct_cond_external_input. IF NOT conitype IS INITIAL. PERFORM get_handle_guid USING us_item_handle CHANGING ls_pridoc_com-ref_handle ls_pridoc_com-ref_guid. ls_pridoc_com-ref_kind = gc_object_ref_kind-orderadm_i. ls_cond-kschl = conitype. ls_cond-kbetr = conirate. ls_cond-waers = conicurr. INSERT ls_cond INTO TABLE ls_pridoc_com-cond_add. INSERT ls_pridoc_com INTO TABLE gt_pridoc_com. ENDIF.

ENDFORM. " item_cond_create *&---------------------------------------------------------------------* *& Form status_create *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GV_HANDLE text *----------------------------------------------------------------------* FORM status_create USING us_header_handle. DATA: ls_status_com TYPE crmt_status_com, ls_input_field TYPE crmt_input_field, ls_input_field_names TYPE crmt_input_field_names. ls_status_com-ref_handle = us_header_handle. ls_status_com-ref_kind = gc_object_ref_kind-orderadm_h. ls_status_com-status = gc_status-do_not_transfer. ls_status_com-activate = true. CHECK NOT ls_status_com IS INITIAL. PERFORM get_handle_guid USING us_header_handle CHANGING ls_status_com-ref_handle ls_status_com-ref_guid. insert ls_status_com into table gt_status. ls_input_field-ref_kind = gc_object_ref_kind-orderadm_h. ls_input_field-ref_handle = us_header_handle. ls_input_field-objectname = gc_object_name-status. ls_input_field_names-fieldname = 'ACTIVATE'. INSERT ls_input_field_names INTO TABLE ls_input_field-field_names. INSERT ls_input_field INTO TABLE gt_input_fields. ENDFORM. " status_create

You might also like