0% found this document useful (0 votes)
388 views

Order

The document describes the code for a report called ZORDER_CREATE in ABAP. It contains the data declarations and logic for creating, maintaining, saving and initializing sales order objects in SAP CRM. The code includes sections for reading existing order data from the database, filling interface tables, performing CRM maintenance functions, saving changes, and cleaning up after completion.

Uploaded by

Abhishek Nandi
Copyright
© Attribution Non-Commercial (BY-NC)
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)
388 views

Order

The document describes the code for a report called ZORDER_CREATE in ABAP. It contains the data declarations and logic for creating, maintaining, saving and initializing sales order objects in SAP CRM. The code includes sections for reading existing order data from the database, filling interface tables, performing CRM maintenance functions, saving changes, and cleaning up after completion.

Uploaded by

Abhishek Nandi
Copyright
© Attribution Non-Commercial (BY-NC)
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/ 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