CRM 中创建sale order

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值