FUNCTION Z_CREATE_FINANCING_CONTRACT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(SOLD_TO) TYPE CRMT_PARTNER_NUMBER
*" VALUE(SHIP_TO) TYPE CRMT_PARTNER_NUMBER
*" VALUE(TRANSACTION_TYPE) TYPE CRMT_PROCESS_TYPE DEFAULT 'ZLEO'
*" VALUE(DESCRIPTION) TYPE CRMT_PROCESS_DESCRIPTION_UC OPTIONAL
*" VALUE(DIS_CHANNEL) TYPE CRMT_DISTRIBUTION_CHANNEL DEFAULT 'U3'
*" VALUE(DIVISION) TYPE CRMT_DIVISION OPTIONAL
*" VALUE(SALES_ORG) TYPE CRMT_SALES_ORG DEFAULT 'O 50000326'
*" VALUE(SALES_ORG_RESP) TYPE CRMT_SALES_ORG DEFAULT 'O 50000475'
*" EXPORTING
*" VALUE(CONTRACT) TYPE CRMT_OBJECT_ID
*" VALUE(MESSAGE) TYPE BAPIRET2-MESSAGE
*" TABLES
*" RETURN STRUCTURE BAPIRET2
*" MATERIAL STRUCTURE ZMATERIAL_FIN
*"----------------------------------------------------------------------
*{ INSERT DTZK921310 1
DATA:
IT_HEADER TYPE TABLE OF BAPIBUS20001_HEADER_INS WITH HEADER LINE,
IT_ITEM TYPE TABLE OF BAPIBUS20001_ITEM WITH HEADER LINE,
IT_PARTNER TYPE TABLE OF BAPIBUS20001_PARTNER_INS WITH HEADER LINE,
IT_CREATED_PROCESS TYPE TABLE OF BAPIBUS20001_HEADER_INS
WITH HEADER LINE,
IT_SAVED_PROCESS TYPE TABLE OF BAPIBUS20001_OBJECT_ID
WITH HEADER LINE,
IT_INPUT_FIELDS TYPE TABLE OF BAPIBUS20001_INPUT_FIELDS
WITH HEADER LINE,
V_COUNTER TYPE CRMT_ITEM_NO,
IT_SCHEDULELINE TYPE TABLE OF BAPIBUS20001_SCHEDLIN WITH HEADER LINE,
IT_ORGANIZATION TYPE TABLE OF BAPIBUS20001_ORGMAN_INS
WITH HEADER LINE,
V_ITEM_HANDLE TYPE CRMT_HANDLE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = SOLD_TO
IMPORTING
OUTPUT = SOLD_TO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = SHIP_TO
IMPORTING
OUTPUT = SHIP_TO.
* Header
IT_HEADER-HANDLE = '0000000001'.
IT_HEADER-PROCESS_TYPE = TRANSACTION_TYPE.
IT_HEADER-DESCRIPTION = DESCRIPTION.
APPEND IT_HEADER.
CLEAR IT_INPUT_FIELDS. " Input fields - Header
IT_INPUT_FIELDS-REF_HANDLE = '0000000001'.
IT_INPUT_FIELDS-OBJECTNAME = 'ORDERADM_H'.
IT_INPUT_FIELDS-LOGICAL_KEY = '0001'.
APPEND IT_INPUT_FIELDS.
CLEAR IT_INPUT_FIELDS.
*Organization
IT_ORGANIZATION-REF_HANDLE = '0000000001'.
IT_ORGANIZATION-REF_KIND = 'A'.
IT_ORGANIZATION-DIS_CHANNEL = DIS_CHANNEL.
IT_ORGANIZATION-DIVISION = DIVISION.
IT_ORGANIZATION-SALES_ORG = SALES_ORG.
IT_ORGANIZATION-SALES_ORG_RESP = SALES_ORG_RESP.
IT_ORGANIZATION-MODE = 'A'.
APPEND IT_ORGANIZATION.
CLEAR IT_INPUT_FIELDS. " Input Fields - Organization
IT_INPUT_FIELDS-REF_KIND = 'A'.
IT_INPUT_FIELDS-REF_HANDLE = '0000000001'.
IT_INPUT_FIELDS-OBJECTNAME = 'ORGMAN'.
IT_INPUT_FIELDS-FIELDNAME = 'DIS_CHANNEL'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'DIVISION'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'SALES_ORG'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'SALES_ORG_RESP'.
APPEND IT_INPUT_FIELDS.
*Partners
IT_PARTNER-REF_HANDLE = '0000000001'. " Sold to
IT_PARTNER-PARTNER_FCT = '00000001'.
IT_PARTNER-REF_KIND = 'A'.
IT_PARTNER-REF_PARTNER_HANDLE = '0001'.
IT_PARTNER-KIND_OF_ENTRY = 'C'.
IT_PARTNER-NO_TYPE = 'BP'.
IT_PARTNER-DISPLAY_TYPE = 'BP'.
IT_PARTNER-PARTNER_NO = SOLD_TO.
APPEND IT_PARTNER.
IT_PARTNER-REF_HANDLE = '0000000001'. " Ship to
IT_PARTNER-PARTNER_FCT = '00000002'.
IT_PARTNER-REF_KIND = 'A'.
IT_PARTNER-REF_PARTNER_HANDLE = '0001'.
IT_PARTNER-KIND_OF_ENTRY = 'C'.
IT_PARTNER-NO_TYPE = 'BP'.
IT_PARTNER-DISPLAY_TYPE = 'BP'.
IT_PARTNER-PARTNER_NO = SHIP_TO.
APPEND IT_PARTNER.
CLEAR IT_INPUT_FIELDS. "Input Fields - Partner
IT_INPUT_FIELDS-REF_KIND = 'A'.
IT_INPUT_FIELDS-REF_HANDLE = '0000000001'.
IT_INPUT_FIELDS-OBJECTNAME = 'PARTNER'.
IT_INPUT_FIELDS-LOGICAL_KEY = '0001'.
IT_INPUT_FIELDS-FIELDNAME = 'PARTNER_NO'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'PARTNER_FCT'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'NO_TYPE'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'DISPLAY_TYPE'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'KIND_OF_ENTRY'.
APPEND IT_INPUT_FIELDS.
* Item
LOOP AT MATERIAL WHERE
( PRODUCT IS NOT INITIAL AND FIN_PRODUCT IS NOT INITIAL ).
V_ITEM_HANDLE = V_ITEM_HANDLE + 1.
V_COUNTER = V_COUNTER + 100.
CLEAR IT_ITEM.
IT_ITEM-HANDLE = V_ITEM_HANDLE.
IT_ITEM-HEADER_HANDLE = '0000000001'.
IT_ITEM-MODE = 'A'.
IT_ITEM-NUMBER_INT = V_COUNTER.
IT_ITEM-ORDERED_PROD = MATERIAL-FIN_PRODUCT.
IT_ITEM-ITM_TYPE = 'LEFA'.
APPEND IT_ITEM.
CLEAR IT_INPUT_FIELDS.
IT_INPUT_FIELDS-REF_HANDLE = V_ITEM_HANDLE ."'0000000001'.
IT_INPUT_FIELDS-OBJECTNAME = 'ORDERADM_I'.
IT_INPUT_FIELDS-FIELDNAME = 'MODE'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'NUMBER_INT'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'ORDERED_PROD'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'ITM_TYPE'.
APPEND IT_INPUT_FIELDS.
V_ITEM_HANDLE = V_ITEM_HANDLE + 1.
V_COUNTER = V_COUNTER + 100.
CLEAR IT_ITEM.
IT_ITEM-HANDLE = V_ITEM_HANDLE.
IT_ITEM-HEADER_HANDLE = '0000000001'.
IT_ITEM-MODE = 'A'.
IT_ITEM-NUMBER_INT = V_COUNTER.
IT_ITEM-ORDERED_PROD = MATERIAL-PRODUCT.
IT_ITEM-NUMBER_PARENT = V_COUNTER - 100.
APPEND IT_ITEM.
CLEAR IT_INPUT_FIELDS.
IT_INPUT_FIELDS-REF_HANDLE = V_ITEM_HANDLE.
IT_INPUT_FIELDS-OBJECTNAME = 'ORDERADM_I'.
IT_INPUT_FIELDS-FIELDNAME = 'MODE'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'NUMBER_INT'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'ORDERED_PROD'.
APPEND IT_INPUT_FIELDS.
IT_INPUT_FIELDS-FIELDNAME = 'NUMBER_PARENT'.
APPEND IT_INPUT_FIELDS.
* Schedule line
CLEAR IT_SCHEDULELINE.
IT_SCHEDULELINE-ITEM_HANDLE = V_ITEM_HANDLE.
IT_SCHEDULELINE-QUANTITY = MATERIAL-QUANTITY.
APPEND IT_SCHEDULELINE.
CLEAR IT_INPUT_FIELDS. "Input Fields Schedule Lines
IT_INPUT_FIELDS-REF_HANDLE = V_ITEM_HANDLE.
IT_INPUT_FIELDS-REF_KIND = 'B'.
IT_INPUT_FIELDS-OBJECTNAME = 'SCHEDLIN'.
IT_INPUT_FIELDS-FIELDNAME = 'QUANTITY'.
APPEND IT_INPUT_FIELDS.
ENDLOOP.
*Call BAPI
CALL FUNCTION 'BAPI_SLSTRANSACT_CREATEMULTI'
TABLES
HEADER = IT_HEADER
ITEM = IT_ITEM
RETURN = RETURN
PARTNER = IT_PARTNER
SCHEDULELINE = IT_SCHEDULELINE
ORGANISATION = IT_ORGANIZATION
INPUT_FIELDS = IT_INPUT_FIELDS
CREATED_PROCESS = IT_CREATED_PROCESS
SAVED_PROCESS = IT_SAVED_PROCESS.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CHECK NOT IT_SAVED_PROCESS[] IS INITIAL.
READ TABLE IT_CREATED_PROCESS
WITH KEY PROCESS_TYPE = TRANSACTION_TYPE.
READ TABLE IT_SAVED_PROCESS WITH KEY GUID = IT_CREATED_PROCESS-GUID.
IF SY-SUBRC EQ 0.
CONTRACT = IT_SAVED_PROCESS-OBJECT_ID.
ENDIF.
IF CONTRACT IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = CONTRACT
IMPORTING
OUTPUT = CONTRACT.
CONCATENATE 'Leasing Quotation' CONTRACT 'saved.' INTO MESSAGE
SEPARATED BY SPACE.
ELSE.
READ TABLE RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC EQ 0.
MESSAGE = RETURN-MESSAGE.
ENDIF.
ENDIF.
*} INSERT
ENDFUNCTION.