*----------------------------------------------------------------------*
* PROGRAM DESCRIPTION *
*----------------------------------------------------------------------*
* This progeam turns the Header and Item of a contract to live status*
*----------------------------------------------------------------------*
* RESPONSIBILITY - ORIGINAL BUILD *
*----------------------------------------------------------------------*
* Author............: Amit Mishra *
* Creation date.....: 05.10.2006 *
* Project...........: Beacon Release 1 *
* Version...........: *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CHANGE HISTORY - Should be completed in reverse date order *
* Revised by........: *
* Change date.......: *
* Request No ........ *
* Change no.........: *
* Description.......: *
*----------------------------------------------------------------------*
TABLES: crmd_orderadm_h.
TYPES: BEGIN OF ty_guid,
guid TYPE crmt_object_guid,
END OF ty_guid.
DATA: git_contract_nos TYPE RANGE OF crmd_orderadm_h-object_id,
git_header_guid TYPE TABLE OF ty_guid,
git_item_guid TYPE TABLE OF ty_guid,
git_modify_status TYPE crmt_status_comt,
git_input_fields TYPE crmt_input_field_tab,
git_field_names TYPE crmt_input_field_names_tab,
git_head_to_save TYPE crmt_object_guid_tab.
DATA: wa_modify_status LIKE LINE OF git_modify_status,
wa_header_guid LIKE LINE OF git_header_guid,
wa_item_guid LIKE LINE OF git_item_guid,
wa_input_fields LIKE LINE OF git_input_fields,
wa_field_names LIKE LINE OF git_field_names.
CONSTANTS: gc_status_e0012 TYPE crm_j_status VALUE 'E0012',
gc_cont_i TYPE j_stsma VALUE 'ZCONTR_I',
gc_cont_h TYPE j_stsma VALUE 'ZCONTR_H'.
SELECT-OPTIONS: s_contno FOR crmd_orderadm_h-object_id OBLIGATORY.
AT SELECTION-SCREEN.
APPEND LINES OF s_contno TO git_contract_nos.
START-OF-SELECTION.
* Select the Header Guids for the contracts
SELECT guid
INTO TABLE git_header_guid
FROM crmd_orderadm_h
WHERE object_id IN git_contract_nos.
CHECK sy-subrc EQ 0.
* Select the Item GUIDs for the contracts
SELECT guid
INTO TABLE git_item_guid
FROM crmd_orderadm_i
FOR ALL ENTRIES IN git_header_guid
WHERE header EQ git_header_guid-guid.
CHECK sy-subrc EQ 0.
wa_field_names-fieldname = 'ACTIVATE'.
wa_field_names-changeable = space.
APPEND wa_field_names TO git_field_names.
* Fill the status for the Header GUIDs
LOOP AT git_header_guid INTO wa_header_guid.
* Fill the status as 'LIVE'
wa_modify_status-ref_guid = wa_header_guid-guid.
wa_modify_status-ref_kind = 'A'.
wa_modify_status-status = gc_status_e0012.
wa_modify_status-user_stat_proc = gc_cont_h.
wa_modify_status-activate = 'X'.
INSERT wa_modify_status INTO TABLE git_modify_status.
* Fill the input fields for the status
wa_input_fields-ref_guid = wa_header_guid-guid.
wa_input_fields-ref_kind = 'A'.
wa_input_fields-objectname = 'STATUS'.
wa_input_fields-field_names = git_field_names.
INSERT wa_input_fields INTO TABLE git_input_fields.
INSERT wa_header_guid-guid INTO TABLE git_head_to_save.
CLEAR: wa_modify_status,
wa_input_fields.
ENDLOOP.
* Fill the status for the Item GUIDs
LOOP AT git_item_guid INTO wa_item_guid.
* Fill the status as 'LIVE'
wa_modify_status-ref_guid = wa_item_guid-guid.
wa_modify_status-ref_kind = 'B'.
wa_modify_status-status = gc_status_e0012.
wa_modify_status-user_stat_proc = gc_cont_i.
wa_modify_status-activate = 'X'.
INSERT wa_modify_status INTO TABLE git_modify_status.
* Fill the input fields for the status
wa_input_fields-ref_guid = wa_item_guid-guid.
wa_input_fields-ref_kind = 'B'.
wa_input_fields-objectname = 'STATUS'.
wa_input_fields-field_names = git_field_names.
INSERT wa_input_fields INTO TABLE git_input_fields.
CLEAR: wa_modify_status,
wa_input_fields.
ENDLOOP.
* Modify the status to live
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_status = git_modify_status
CHANGING
ct_input_fields = git_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
CHECK sy-subrc EQ 0.
* Call CRM_ORDER_SAVE to save the contracts
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = git_head_to_save
EXCEPTIONS
document_not_saved = 1
OTHERS = 2.
* Commit the data in the buffer
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You cannot download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.