Skip to Content
avatar image
Former Member

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


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.


Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Apr 13, 2018 at 09:30 PM

    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 ...

    Add comment
    10|10000 characters needed characters exceeded

    • 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
            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,
          "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.
          "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.

      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.