
This program will help to Create Sales order by using crm_order_maintain bapi with mandatory fields .
*&---------------------------------------------------------------------*
*& Include ZSALES_ORDER_TOP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Loacal Class Object Declaration
*&---------------------------------------------------------------------*
CLASS ZSALES_ORDER DEFINITION DEFERRED.
DATA :o_ref TYPE REF TO ZSALES_ORDER .
*----------------------------------------------------------------------*
*Internal Table and Work area to get Header data *
*----------------------------------------------------------------------*
DATA: i_orderadm_h TYPE crmt_orderadm_h_comt,
wa_orderadm_h TYPE crmt_orderadm_h_com,
*----------------------------------------------------------------------*
*Internal Table and Work area to get Input Fields data *
*----------------------------------------------------------------------*
wa_input_fields TYPE crmt_input_field,
i_input_fields TYPE crmt_input_field_tab,
*----------------------------------------------------------------------*
*Internal Table and Work area to Save Sales data *
*----------------------------------------------------------------------*
i_object_save1 TYPE crmt_object_guid_tab,
wa_object_save1 TYPE crmt_object_guid,
i_saved_objects1 TYPE crmt_return_objects,
wa_saved_objects1 TYPE crmt_return_objects_struc,
it_bapiret TYPE TABLE OF bapiret2.
*---------------------------------------------------------------------*
*Variable for Guid *
*----------------------------------------------------------------------*
DATA: gv_guid TYPE guid_16 .
DATA return type STANDARD TABLE OF DDSHRETVAL .
data:BEGIN OF itab OCCURS 0,
P_TYP type CRMT_PROCESS_TYPE_DB ,
END OF itab.
*&---------------------------------------------------------------------*
*& Include ZSALES_ORDER_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS :proc_typ TYPE CRMT_PROCESS_TYPE_DB .
SELECTION-SCREEN END OF BLOCK b1 .
*----------------------------------------------------------------------*
* Initialization *
*----------------------------------------------------------------------*
INITIALIZATION .
CREATE OBJECT o_ref .
o_ref->clear_all( ).
AT SELECTION-SCREEN on VALUE-REQUEST FOR proc_typ.
refresh itab.
SELECT PROCESS_TYPE from CRMD_ORDERADM_H
into TABLE itab.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_TYP'
DYNPROFIELD = 'PROC_TYP'
DYNPPROG = sy-repid
DYNPNR = sy-dynnr
VALUE_ORG = 'S'
TABLES
VALUE_TAB = itab
RETURN_TAB = return .
*----------------------------------------------------------------------*
* Event Start of Selection.
*----------------------------------------------------------------------*
START-OF-SELECTION.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = gv_guid.
wa_orderadm_h-handle = '0000000001'.
wa_orderadm_h-guid = gv_guid.
wa_orderadm_h-process_type = proc_typ .
wa_orderadm_h-mode = 'A'.
wa_orderadm_h-descr_language = 'E' .
wa_orderadm_h-logical_system = 'ZCRM1234' .
wa_orderadm_h-changed_at = sy-datum .
wa_orderadm_h-changed_by = sy-uname .
*Inserting values from work area to internal table.
INSERT wa_orderadm_h INTO TABLE i_orderadm_h.
CLEAR wa_orderadm_h.
*Passing values in the work area of INPUT_FIELDS1.
wa_input_fields-ref_guid = gv_guid.
wa_input_fields-ref_kind = 'A' .
*Inserting values from work area to internal table.
INSERT wa_input_fields INTO TABLE i_input_fields.
CLEAR wa_input_fields.
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
CHANGING
ct_orderadm_h = i_orderadm_h
ct_input_fields = i_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*Passing value of GUID to work area of internal table I_OBJECT_SAVE.
wa_object_save1 = gv_guid.
* Inserting value from work area to internal table.
INSERT wa_object_save1 INTO TABLE i_object_save1.
CLEAR wa_object_save1.
*----------------------------------------------------------------------*
* Save created Sales Order *
*----------------------------------------------------------------------*
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = i_object_save1
IMPORTING
et_saved_objects = i_saved_objects1
EXCEPTIONS
document_not_saved = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT i_saved_objects1[] IS INITIAL.
LOOP AT i_saved_objects1 INTO wa_saved_objects1.
WRITE: /1 'Transaction number',
20 wa_saved_objects1-object_id,
30 'Is Saved'.
ENDLOOP.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.