Quantcast
Channel: SCN : All Content - ABAP Connectivity
Viewing all articles
Browse latest Browse all 1442

BAPI for ME41 (Quotation)

$
0
0

BAPI for ME41 (Quotation)

Hello all.

Here is the code to create a Request for Quotation in MM through BAPI .

There were some themes about it. (https://scn.sap.com/thread/1400550)

Someone suggested Call transaction, someone suggested FM 'BAPI_QUOTATION_CREATEFROMDATA2'
but it was about SD. Someone knows about FM 'BS01_MM_QUOTATION_CREATE',
but it doesn't work correctly without ECC-DIMP activation.

(There is a note 1666702 - Syntax Error occurs when using BS01_MM_QUOTATION_CREATE...

Function module BS01_MM_QUOTATION_CREATE is part of software component ECC-DIMP...

Please do not consider activating the Business Function Set DIMP because you only would
like to use this specific function BAPI BS01_MM_QUOTATION_CREATE...)

 

Well, I think FM ''BS01_MM_QUOTATION_CREATE' is the most suitable.

We only need to correct some code without activating ECC-DIMP.

There are some corrections about quantity, type of document and currency.

Code is mostly similar like in ECC-DIMP.

 

Start FM:

 

FORM bapi_quotation_create .

  DATA wa_quotation_header    TYPE bs01mmhead.
  DATA wa_quotation_address   TYPE bapiaddress.
  DATA p_quotation            TYPE bapiekkoc-po_number.
  DATA wa_quotation_items     TYPE bs01mmitem.
  DATA gt_quotation_items     TYPE STANDARD TABLE OF bs01mmitem.
  DATA wa_schedules           TYPE bs01mmschedule.
  DATA gt_schedules           TYPE STANDARD TABLE OF bs01mmschedule.
  DATA gt_return              TYPE STANDARD TABLE OF bapiret2.
  DATA wa_return              TYPE bapiret2.
*"      QUOTATION_ACCOUNT_ASSIGNMENT STRUCTURE  BAPIEKKN OPTIONAL
*"      QUOTATION_ITEM_TEXT STRUCTURE  BS01MMITEMTX OPTIONAL
*"      QUOTATION_LIMITS STRUCTURE  BAPIESUHC OPTIONAL
*"      QUOTATION_CONTRACT_LIMITS STRUCTURE  BAPIESUCC OPTIONAL
*"      QUOTATION_SERVICES STRUCTURE  BSMMESLLC OPTIONAL
*"      QUOTATION_SRV_ACCASS_VALUES STRUCTURE  BAPIESKLC OPTIONAL
*"      QUOTATION_SERVICES_TEXT STRUCTURE  BAPIESLLTX OPTIONAL
*"      EXTENSIONIN STRUCTURE  BAPIPAREX OPTIONAL

********************************************


  CLEAR wa_quotation_header.
  wa_quotation_header-CREATED_BY  = sy-uname.
  wa_quotation_header-co_code     = 'JNZ'.
  wa_quotation_header-doc_cat     = 'A'.
  wa_quotation_header-doc_type    = 'AN'.
  wa_quotation_header-vendor      = '0000000123'.
  wa_quotation_header-language    = sy-langu.
  wa_quotation_header-purch_org   = 'YNOS'.
  wa_quotation_header-pur_group   = '10'.
  wa_quotation_header-currency    = 'RUB'.
  wa_quotation_header-doc_date    = sy-datum.  
  wa_quotation_header-APPLIC_BY   = '20131231'. " BWBDT
  wa_quotation_header-quot_dead   = '20131231'. " ANGAB "
  wa_quotation_header-COLL_NO     = '1'.        "

**********************************************


  CLEAR wa_quotation_items.
  wa_quotation_items-material     = '000000000000340060'.
  wa_quotation_items-PUR_MAT      = wa_quotation_items-material.
  wa_quotation_items-co_code      = 'JNZ'.
  wa_quotation_items-plant        = 'YNOS'.
  wa_quotation_items-store_loc    = '0001'.
  wa_quotation_items-trackingno   = '1001'.  " bednr
  wa_quotation_items-DOC_CAT      = 'A'. "
  wa_quotation_items-QUOT_DEAD    = '20131231'."ANGAB
  APPEND wa_quotation_items TO gt_quotation_items.


************************************************
  CLEAR wa_schedules.
  wa_schedules-DEL_DATCAT  = '1'. "
  wa_schedules-deliv_date  = '20140101'.
  wa_schedules-QUANTITY    = '3'.
  APPEND wa_schedules TO gt_schedules.

***********************************************


  CALL FUNCTION 'BS01_MM_QUOTATION_CREATE'
  EXPORTING
       quotation_header   = wa_quotation_header
*"     VALUE(QUOTATION_ADDRESS) LIKE  BAPIADDRESS STRUCTURE
*"        BAPIADDRESS OPTIONAL
*"     VALUE(SKIP_ITEMS_WITH_ERROR) LIKE  BAPIMMPARA-SELECTION DEFAULT
*"       'X'
  IMPORTING
       quotation                  = p_quotation
  TABLES
       quotation_items            = gt_quotation_items[]
       quotation_item_schedules   = gt_schedules[]
*"      QUOTATION_ACCOUNT_ASSIGNMENT STRUCTURE  BAPIEKKN OPTIONAL
*"      QUOTATION_ITEM_TEXT STRUCTURE  BS01MMITEMTX OPTIONAL
*"      QUOTATION_LIMITS STRUCTURE  BAPIESUHC OPTIONAL
*"      QUOTATION_CONTRACT_LIMITS STRUCTURE  BAPIESUCC OPTIONAL
*"      QUOTATION_SERVICES STRUCTURE  BSMMESLLC OPTIONAL
*"      QUOTATION_SRV_ACCASS_VALUES STRUCTURE  BAPIESKLC OPTIONAL
*"      QUOTATION_SERVICES_TEXT STRUCTURE  BAPIESLLTX OPTIONAL
*"      EXTENSIONIN STRUCTURE  BAPIPAREX OPTIONAL
       return             = gt_return[]  .


  LOOP AT gt_return INTO  wa_return
                    WHERE type = 'E'
                    OR    type = 'A'.
    ROLLBACK WORK.
    EXIT.
  ENDLOOP.  " return

  IF NOT sy-subrc = 0.
    COMMIT WORK AND WAIT.
    message i096(zm) with p_quotation.
  ENDIF.

ENDFORM.                    " BAPI_QUOTATION_CREATE

 

 

LBOS04F01 . form DOC_HEADER_GENERATE

find block

 

  if not tekko is initial.

    tekkorel = 'X'.

  endif.

  call function 'ME_CREATE_PO_HEADER'

 

modify block

 

* "Request or Quotation

  call function 'ME_CREATE_PO_HEADER'

       exporting

            i_bedat       = cekko-bedat

            i_bsart       = cekko-bsart

            i_bukrs       = cekko-bukrs

            i_ekgrp       = cekko-ekgrp

            i_ekorg       = cekko-ekorg

            i_konnr       = cekko-konnr

            i_lifnr       = cekko-lifnr

            i_reswk       = cekko-reswk

            i_ebeln       = cekko-ebeln

            i_tekko       = tekko

            i_tekkorel    = tekkorel

            i_address     = cadr

            i_vorga       = 'A'  "Needs to be "A" for MM RFQ/Quotation

*            i_bstyp       = document_category  "DIMP

*            i_angdt       = cekko-angdt        "DIMP

            z_bstyp       = document_category

            z_angdt       = cekko-angdt

       exceptions

            error_message = 1.

 

 

FM 'ME_CREATE_PO_HEADER'

find block

  ekko-spras = i_spras.                                     "567213

  ekko-scmproc = i_scmproc.                    "APO Push Deployment

 

insert block

*"Create Request for Quotation

  if sy-tcode cs 'ZZZ'

  or sy-tcode = 'SE38'.

    if z_bstyp = 'A'.

      EKKO-ANGDT = Z_ANGDT.

      EKKO-BSTYP = Z_BSTYP.

      ekko-waers = I_TEKKO-waers.

    endif.

  endif.

 

 

MM06EF0I_INIT_FC. FORM init_fc

find block

 

  ekko-mandt     = sy-mandt.

  ekko-aedat     = sy-datum.

  ekko-spras     = sy-langu.

  IF ekko-ernam EQ space.

    ekko-ernam     = sy-uname.

  ENDIF.

  ekko-bstyp = bstyp-best.

 

insert block

* " Request for Quotation

  IF sy-tcode CS 'ZZZ'

  OR sy-tcode = 'SE38'.

    IF i_vorga = bstyp-anfr.  " 'A'-Quotation

      auswahl0   = 'ME41'.

      t160-bstyp = bstyp-anfr.

      t160-vorga = vorga-anfr.

      ekko-bstyp = bstyp-anfr.

      rfq_language = sy-langu. 

      CLEAR ekko-statu.

    ENDIF.

ENDIF.

 

MM06EF0E_EKPO-NETWR_MOD. FORM ekpo-netwr_mod

find block

CASE ekko-bstyp.

    WHEN bstyp-anfr.

 

insert block

     *" Request for Quotation

      if sy-tcode cs 'ZZZ'

      or sy-tcode = 'SE38'.

        IF ( NOT fc_call IS INITIAL ) AND

          ekko-bstyp = bstyp-anfr AND

          ekpo-pstyp = pstyp-lagm.  " pstyp = 0

          rm06e-anmng = ekpo-menge.

        ENDIF.

      ENDIF.

 

That's all.

(My system is SAP ECC 6.0, SAPKB70026, SAPKH60021)


Viewing all articles
Browse latest Browse all 1442


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>