cancel
Showing results for 
Search instead for 
Did you mean: 

How to force SAP to use values from Punch Out Catalog? ME51N

Former Member
0 Kudos

Hi,

I have a catalog that is being called from ME51N, if I go to the catalog and select only 1 material, everything works as expected, however when I add more than 1 material, then SAP is updating some values, like material description or Valuation Price with those from the material master data.

I want to always use the values that are coming from the external catalog, or at least make the behaviour consistent, for 1 line item as for 1+.

As extra info: by the time the logic gets to BADI ME_PROCESS_REQ_CUST the values have already been changed.


Thanks

Accepted Solutions (0)

Answers (1)

Answers (1)

NTeunckens
Active Contributor
0 Kudos

Use the BAdI "ME_CATALOG_INTERFACE_CUST" or possibly combine with the PR or PO-Related BAdI ...

The Catalog-BAdI Implementation provides Methods like "MAP_CATALOG_VALUES" through which you can transfer (or enhance) the OCI-Input to the PO / PR.

The Catalog-BAdI is triggered with every Material (Catalog-Item) that is transferred to your SAP-System. See Trx."SE18" for the BAdI "ME_CATALOG_INTERFACE_CUST", there is an Example Class "CL_MMPUR_FB_CATALOG_CUST" and Method "MAP_CATALOG_VALUES" that should get you on track ...

Former Member
0 Kudos

Hi Nic,

Thanks, but I am using that BAdI, and at that moment the values comming from the catalog are the correct ones. It's after this and before the previously mentioned BAdI that the values are changed, ONLY when more than 1 material is being brought back from the Catalog, if only 1 item is selected, then the values are correct, and nothing from the Material Master replaces the catalog received values.

NTeunckens
Active Contributor
0 Kudos

First off, I would check for Current SAP-KBA's on Catalog that would solve issues related to Data-Transfer, and Implement those that make sense ...

SAP-KBA 1768759 (link) is an Example of Bugfixes solving Text-Transfer from the Catalog-Items in "ME5xN" and "ME2xN" Transactions ...

In our ECC 6 EhP8 System I have no problem Filling / Overwriting up Several Items with something like the below Code :

  METHOD if_ex_catalog_cust~map_catalog_values.
*--------------------------------------------------------------------*
* Map data dependent on Catalog ID - SAP-KBA 1768759
*--------------------------------------------------------------------*
    DATA:
      ls_field_map  TYPE mecat_fieldmap,
      ls_oci_item   TYPE mmpur_oci_cat_return_type,
      lv_vendorname TYPE name1.

*---> Validate CatalogID
    CHECK me->mv_catalog_id IS NOT INITIAL.

*---> Validate PurchOrd / PurchReq
    CHECK iv_bstyp = co_pur_ord OR
          iv_bstyp = co_pur_req OR
          iv_bstyp = co_pur_cntr.

    CLEAR ls_oci_item.
    ls_oci_item = ct_oci_item.

    CHECK ls_oci_item IS NOT INITIAL.

*---> GENERAL Mapping / Enrichment
    CLEAR: ls_oci_item-matgroup,
           ls_oci_item-vendor_descr.

    "Map Default PurchaseOrgan
    ls_oci_item-purchorg = co_1000.

    SELECT SINGLE name1
      FROM lfa1
      INTO ls_oci_item-vendor_descr
      WHERE lifnr = ls_oci_item-vendor
        AND loevm = abap_false.
    IF sy-subrc <> 0.
      RETURN.
    ENDIF.

    "Map Vendor to FixedVendor
    CLEAR ls_field_map.
    ls_field_map-catalog_field = 'NEW_ITEM-VENDOR'.
    ls_field_map-item_field    = 'RIHFCOM_XL-FLIEF'.
    APPEND ls_field_map TO ct_field_map.

    "Map Catalog-Material-Description to VendorMaterial ...
    CLEAR ls_field_map.
    ls_field_map-catalog_field = 'NEW_ITEM-VENDORMAT'.
    ls_field_map-item_field    = 'RIHFCOM_XL-IDNLF'.
    APPEND ls_field_map TO ct_field_map.

    ct_oci_item = ls_oci_item.

  ENDMETHOD.<br>


Check the "CT_OCI_ITEM" - Data for each Item and Check if Item-Data is missing when transferring Multiple Items.

Try to do something similar ...


Hope this helps

Nic T.