30-Min-Call DE
SAP VIM customizing



Hinweis: Wir veröffentlichen alle Blogbeiträge ausschließlich auf Englisch.

Schlagwort: SAP VIM

  • SAP VIM Invoice Business Rules and the Blue Diamond of Mystery 💎

    SAP VIM Invoice Business Rules and the Blue Diamond of Mystery 💎

    In SAP VIM (OpenText Vendor Invoice Management for SAP) you may occasionally notice a small blue symbol next to a business rule — some refer to it as a diamond, others as a badge or Rhombus. It’s a subtle visual element, barely documented, yet it often triggers questions among AP processors, key users, consultants, and anyone involved in maintaining VIM rule logic.

    The meaning behind it is simple but important: this blue indicator shows that the business rule is newly added to the system and has not yet been evaluated for the current document. In other words, the rule exists, but it has never been considered by the VIM engine and therefore has had no influence on the current status or outcome of the document you are viewing.

    blank

    This explains why a rule may appear correct in configuration while the document itself does not reflect the expected change. The system is essentially telling you that the logic has not been executed yet. As soon as the document is resubmitted or the rules are applied again, VIM will process this rule for the first time. Once that happens, the symbol disappears because the rule has officially taken effect and is now part of the evaluated ruleset for that document.

    This small blue icon—whether you think of it as a diamond, marker, indicator, or flag—is easy to overlook, but it plays a useful role in everyday troubleshooting. It prevents you from searching for errors in the configuration when the actual issue is simply that VIM has not yet re-evaluated the rule. Knowing this helps both operational teams and consultants understand exactly why a document behaves the way it does, especially when introducing new rules or adjusting existing logic in productive environments.

    In the OpenText Vendor Invoice Management for SAP Solutions User Guide for Invoice Solution the icon is mentioned once as „Business rule run was not logged.“ Have you seen this icon before?

  • Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template

    Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template

    When you start working with SAP VIM Solutions Beyond Invoice — whether it’s Incoming Delivery Notes, Sales Orders, Remittance Advices, Order Confirmations or Quotations — you quickly notice a familiar limitation: the out-of-the-box setup doesn’t provide meaningful role definitions. The delivered BC-Sets rely entirely on SAP’s Organizational Object Assignment, pointing to predefined work centers, rules, jobs, org units, positions, or individual users.

    In real projects, these structures are rarely maintained in a way that supports smooth routing. That’s why, in most implementations, one of the very first tasks is building a practical, maintainable role resolution logic — one that matches how the organization actually works.

    blank
    /otx/pf00_img > Process Configuration > Profiles

    A very minimal role resolution logic which works without creating a table, maintenance view and more is this one: We tap into the existing table of validation agents maintained in Validation Assignment. This is a very simple and very easy solution as you can set up a list of users per ArchiveLink Document Type and this user will then be assigned both for validation and document processing.

    blank
    /OTX/PF00_IMG > Inbound Configuration > Capture > Validation Assignment

    The link between ArchiveLink Document Type and User is stored in table /OTX/PF01_T_VALR.

    blank
    SE16N displaying /OTX/PF01_T_VALR

    The only way to achieve any logic for determining users besides SAP’s Organizational Object Assignment is using the setting Role Resolution Logic which requires an ABAP Class being assigned.

    Create a new class in SE80 using Superclass /OTX/PF04_CL_ROLE

    blank

    Redefine method /OTX/PF04_IF_ROLE~ROLE_LOGIC

    blank

    A minimal version of this method could look like this (simply returning one user with username Alex):

      METHOD /otx/pf04_if_role~role_logic.
        DATA: ls_actor   TYPE swhactor.
    
        ls_actor-otype = 'US'.
        ls_actor-objid = 'Alex'.
    
        APPEND ls_actor TO pet_role_result.
      ENDMETHOD.

    In order to add our logic we will retrieve the ArchiveLink Document Type and select the responsible user from table /OTX/PF01_T_VALR.

      METHOD /otx/pf04_if_role~role_logic.
        DATA: lh_plh      TYPE REF TO data,
              ls_actor    TYPE swhactor,
              ls_fallback TYPE /otx/pf04_t_rol, " optional for fallback
              lt_valr     TYPE TABLE OF /otx/pf01_t_valr.
    
        FIELD-SYMBOLS:   TYPE /otx/ps09_t_plh, " [TODO] replace with your PLH table! Format is /otx/ps*_t_plh for out of the box solutions.
                        TYPE /otx/pf01_t_valr.
    
    * Get data from workitem header
        CALL METHOD /otx/pf04_if_role~mh_data->head_data_get( IMPORTING peh_head = lh_plh ). 
        ASSIGN lh_plh->* TO .
    
    * Use Validation Agents from /otx/pf01_t_valr in case ArchiveLink Document Type is filled.
        IF -ar_object IS NOT INITIAL.
    
          SELECT otype, objid
            FROM /otx/pf01_t_valr
            INTO CORRESPONDING FIELDS OF TABLE @lt_valr
            WHERE ar_object = @-ar_object.
    
          IF sy-subrc EQ 0.
            LOOP AT lt_valr ASSIGNING .
              CLEAR ls_actor.
    
              ls_actor-otype = -otype.
              ls_actor-objid = -objid.
    
              APPEND ls_actor TO pet_role_result.
            ENDLOOP.
          ENDIF.
        ENDIF.
    
    * Fallback (optional) 
        IF pet_role_result IS INITIAL.
    
          SELECT SINGLE otype, objid
            FROM /otx/pf04_t_rol
            INTO CORRESPONDING FIELDS OF @ls_fallback
            WHERE profile_id = 'PS02_BCF_ORDER' " [TODO]example! to be replaced!
            AND role_id = 'SOL_1ST_PROC'. " [TODO] example! to be replaced!
          IF sy-subrc EQ 0.
            CLEAR ls_actor.
            CONCATENATE ls_fallback-otype ls_fallback-objid INTO ls_actor.
            APPEND ls_actor TO pet_role_result.
          ENDIF.
        ENDIF.
    
      ENDMETHOD.

    Once the class is complete and activated we can assign it in /OTX/PF00_IMG > Process Configuration > Profiles > Profile Configuration > Version Definition > Role Definition. Here you can now switch your Role Type to Role Resolution Logic, add your Role class and add a Fallback user in case the logic does not return any user:

    blank

    Now you have created a very clean, reliable and super straightforward role determination VIM Beyond invoices. This enables you to fully set up any of the SAP VIM Solutions Beyond Invoice processes. And in case there is no complex requirement for user determination there is a chance that you already reached your goal!

    If your requirements extend beyond this or you would like support in reviewing or refining your configuration, you are welcome to get in touch.

    This article is for SAP VIM Solutions Beyond Invoice and is not compatible with role determination configuration for invoice processing.

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation and support. Do not use this in production systems.

  • Struggling With Logic Modules in SAP VIM? Here’s How to Master the Debugger (Without Going Crazy)

    Struggling With Logic Modules in SAP VIM? Here’s How to Master the Debugger (Without Going Crazy)

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation and support. Do not use this in production systems.

    Debugging Logic Modules in SAP VIM is rarely straightforward. Setting multiple breakpoints, stepping through code execution, and still failing to reach the relevant section can quickly become frustrating and time-consuming.

    However, there’s a little-known approach that can make this process far more efficient.

    In case you are interested in creating your own Logic Module in VIM check this article: How to Create a Custom Logic Module (Data Enrichment) for SAP VIM Invoice Processing (Step-by-Step Guide)

    The Hidden Program That Simplifies Debugging

    Within the SAP VIM development packages, there is a program that can be executed via transaction SE38:

    /OPT/DR_BPF_TEST

    This program does not appear in the standard OpenText documentation, which means many consultants are unaware of its existence. Yet it provides a structured way to analyze and debug Logic Modules.

    Key Capabilities

    • Display a list of all Logic Modules executed for a given document
    • View the sequence of module calls in detail
    • Decide whether to simulate the process start, rerun business rules, or both.
    • Set a breakpoint in the code and execute the program in SE38 to jump into the debugger without detours

    This transforms debugging from a trial-and-error exercise into a transparent, manageable process. Instead of relying on chance to intercept the correct module, you can work systematically through the exact logic that is being applied.

    How to use it

    1. Execute the program in SE38
      blank
    2. Enter the corresponding VIM DP document ID, decide if you want to check the process start, the re-run of business rules or both and decide if you want to show the modules only or process them:
      blank
      blank
    3. Benefit from a clean list that gives all relevant information for debugging Logic Modules. You can pick up the class name, set a breakpoint in the code and repeat.
      blank

    Why This Is Valuable

    Effective debugging is essential in every OpenText Vendor Invoice Management for SAP Solutions (VIM) project, whether for customizing workflows, implementing enhancements, or analyzing issues in production support. By providing direct insight into the sequence and behavior of Logic Modules, /OPT/DR_BPF_TEST can significantly reduce the time spent on troubleshooting.

    Because this tool is not part of the official documentation, knowledge of it can provide consultants and project teams with a clear advantage when working on complex VIM implementations.

  • What is Smart Coding and how can I use it in SAP VIM?

    What is Smart Coding and how can I use it in SAP VIM?

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges that may arise. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation and support.

    In the world of Accounts Payable automation, efficiency is king. One of the standout innovations in Open Text Vendor Invoice Management (VIM) for SAP Solutions is Smart Coding — a feature designed to make invoice processing faster, more accurate, and less dependent on repetitive manual entries.

    What is Smart Coding?

    Smart Coding is a machine learning–driven function in VIM that helps users automatically assign coding proposals to invoice line items. Instead of manually entering cost centers, GL accounts, or other coding data every time, VIM learns from historical postings and suggests coding values during document indexing.

    Availability of this feature depends on your VIM version, and the specific fields that can be learned may differ.

    Benefits of Smart Coding

    • Time savings: Reduces manual effort in entering repetitive cost allocations.
    • Consistency: Ensures coding aligns with historical and organizational patterns.
    • Fewer errors: Minimizes the risk of incorrect GL postings.
    • Scalability: Supports large volumes of invoices without increasing headcount.

    Basic Model and PAL Model: What’s the difference?

    In Open Text VIM Smart Coding, the Basic Model and the PAL Model differ mainly in complexity and accuracy.

    The Basic Model is a simple, frequency-based approach. It analyzes historical postings for a given company code and supplier, then suggests a GL account and cost object based on how often that combination was used before. It’s easy to set up and works as a foundation, but it’s limited to pattern recognition and doesn’t adapt well to complex scenarios.

    The PAL Model, on the other hand, is powered by SAP HANA’s Predictive Analytics Library (PAL). It applies machine learning, using multiple factors like company code, supplier, requester, expense type, tax rate, and invoice amount to generate proposals. This makes it far more accurate and dynamic than the Basic Model, but it requires SAP S/4HANA with PAL installed and builds on the Basic Model’s training.

    In short: the Basic Model is static and straightforward, while the PAL Model is context-aware and designed for higher accuracy in real-world invoice coding.

    How to activate Smart Coding

    Step 0: Read the documentation and test in a sandbox environment first.

    Make sure to check chapter Smart coding in OpenText Vendor Invoice Management for SAP Solutions: Configuration Guide for Invoice Solution. Please understand that Step 1 deletes all coding statistics from your system.

    Step 1: Delete Coding Statistics

    To start with a clean surface the first step is to delete what is in the system using T-Code /OTX/PS302_TRAIN_CODING_DELETE.

    Warning: This will delete the coding statistics in the selected system!

    blank
    blank

    Step 2: Train Coding Statistics: Basic Model

    Now that we have an empty Smart Coding environment we start by training the basic Smart Coding model using /OTX/PS302_TRAIN_CODING.

    blank

    For the first run always use the „Test Mode“ to make sure everything is working correctly. If the first run in test mode was successful, it can be repeated without test mode.

    blank

    From this point of time it is already possible to use smart coding in the system by clicking on Smart Coding button in the Line Items Tab on the Indexing Screen:

    blank
    blank

    Step 3: Train Coding Statistics: PAL Decision Model

    To use the more advanced PAL Decision Model you must ensure that your system has the following prerequisites in place:

    • SAP S/4 HANA
    • PAL model installed and activated
    • Basic Model training is completed (Step 2)
    blank

    Similar to the Basic Model: for the first run always use the „Test Mode“ to make sure everything is working correctly. If the first run in test mode was successful, it can be repeated without test mode.

    Once you have completed the training for the PAL Decision Tree Model you can see an entry in VIM Central Workplace (/n/OTX/PF03_WP) in work center Smart Coding:

    blank

    Final Thoughts

    Smart Coding in OpenText VIM can offer significant benefits — especially for organizations processing moderate to high invoice volumes. It has the potential to reduce manual data entry, improve consistency, and help teams spend less time on repetitive tasks. However, it’s important to keep expectations realistic:

    • Smart Coding usually requires a period of training before it produces reliable results. Initially, proposals will need review, and accuracy may be limited for uncommon combinations or new suppliers.
    • The PAL model improves accuracy over the basic model, but it also requires a solid foundation: enough historical data, correct setup, and ongoing monitoring.
    • Smart Coding won’t eliminate coding errors entirely. Edge cases, exceptions, complex allocations, or unusual cost objects will still require human intervention.
    • Benefits are greatest when invoice volumes are high and coding rules relatively stable. In very volatile or complex environments, the value may be less dramatic.


    In short: Smart Coding can be a useful tool to help reduce workload and increase consistency, but it’s not a magic bullet. Proper expectation setting, pilot testing, and incremental rollout are key for getting good value.

    What has been your experience with Smart Coding so far? Did it meet your expectations, or did you run into challenges? Share your thoughts in the comments below — I’d love to hear them.

  • Let’s Make History! Enabling the SAP VIM Workflow History Log

    Let’s Make History! Enabling the SAP VIM Workflow History Log

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation.

    When working with OpenText Vendor Invoice Management (VIM) for SAP, one of the most overlooked yet powerful features is the Workflow History PDF Log. This capability automatically generates a comprehensive PDF at the conclusion of the VIM process—capturing every key detail, from process milestones and approvals to workflow logs and user comments.

    This isn’t just a convenience for auditors or a checkbox for compliance. It’s a transparent, time-stamped audit trail that gives AP managers and business users immediate visibility into how an invoice was handled. What’s more, the history log is securely archived and linked to both the DP document and the SAP invoice—so it’s always accessible and never lost.

    blank

    Benefits of the Workflow History PDF

    • Audit-ready: A single document with all approvals, comments, and workflow steps.
    • Transparency: Clear visibility into who did what and when.
    • Compliance: Securely archived and linked to the invoice for future reference.
    • Flexibility: Can be customized to include company-specific information.
    blank

    How to Set It Up

    You configure the PDF history log within a profile which describes all settings for the creation of the PDF history log. You assign this profile to a OpenText VIM for SAP process step.


    You must specify that the PDF history log will be created at the end of the OpenText VIM for SAP process. To enable the creation of the PDF history log, you must assign the profile for the PDF history log (default profile: HISTORY) to the OpenText VIM for SAP process “VIM process is finished”. Without this, the PDF history log will not be created at the end of the OpenText VIM for SAP process.

    1) Define the profile for the PDF History Log

    Run the /n/OPT/SPRO transaction and navigate to OpenText Vendor Invoice Management Invoice Solution > Cross Component Configuration > PDF Log >Maintain Customizing Profiles.

    blank

    The PDF profile ‚HISTORY‚ is delivered with the baseline. You can either customize it or create your own custom profile.

    blank
    blank

    In the Define Profiles screen, you will find the following parameters that are specific for the PDF history log:

    PDF Log Class
    The complete logic of the PDF history log is included in the PDF log class /OPT/CL_C_PDF_LOG, which is delivered with the baseline. You can enhance the class by redefining components of the class within a custom class, which you can maintain instead of the baseline class.

    PDF Form Type
    Enter the type of the PDF form.

    Currently, Smart Forms is the only available entry for this field. However, it is also possible to redefine the logic of the PDF log class /OPT/CL_C_PDF_LOG within a custom class to support other techniques, for example SAP Interactive Forms.

    Default value: Smart Forms

    Form Name
    Enter the name of the SAP Smart Forms form.
    Baseline delivery includes a Smart Form /OPT/C_WORKFLOW_HISTORY01. You can copy the Smart Form using the smartforms transaction and adjust it to
    your needs. You can maintain this adjusted Smart Form in the Form Name box instead of the baseline Smart Form. The baseline Smart Form uses the SAP Smart Style /OPT/C_SF_STYLE01 for the format options of the Smart Form, for example the font and the font size of headers or default paragraphs. You can copy the Smart Style using the smartstyles transaction and adjust it to your needs. Additionally, copy the Smart Form and maintain your new Smart Style in the Output Options tab of the Form Attributes screen of the Smart Form.

    Document type
    Enter the archive document type to be used for archiving the PDF history log. Within baseline, the archive document type /OPT/PDF is delivered (we suggest that you create your own archive link document type for this).

    You must link the archive document type to the OpenText VIM for SAP Business Object and to SAP Business Objects (in case it’s not already linked by default, you can link the document type ‚/OPT/PDF‘ to object types ‚/OPT/V1001‘ and ‚BKPF‘ via transaction OAC3).

    Overwrite
    Select this check box to overwrite PDF history logs that have already been linked to the DP document and its SAP invoice with the same archive document type.
    It is possible to create a PDF history log to a DP document manually by using the /OPT/CR_PDF_LOG report. When using this report, a PDF history log linked to the DP document and its SAP invoice can already exist.

    Selecting the Overwrite check box deletes the physical PDF document (the PDF history log) and its links to the DP document and the SAP invoice. This PDF history log can either be created manually or automatically.
    Default value:

    2) Assigning the profile to a OpenText VIM for SAP process step

    To create this PDF history log at the end of the OpenText VIM for SAP process, you must assign the profile to the VIM process is finished process step for your company codes. If you leave Company Code empty, the setting is used for all
    company codes.

    blank

    By setting up the Workflow History PDF log, you create a single source of truth for your invoice processes. With just a few configuration steps, your organization gains audit-ready documentation, transparent tracking of every approval and action, and a secure archive that is always accessible.

    Whether for compliance, audit preparation, or day-to-day process insight, the Workflow History PDF log ensures that your AP processes are not only more transparent but also more reliable and future-proof.

  • How to Create a Custom Logic Module (Data Enrichment) for SAP VIM Invoice Processing (Step-by-Step Guide)

    How to Create a Custom Logic Module (Data Enrichment) for SAP VIM Invoice Processing (Step-by-Step Guide)

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges that may arise during installation and upgrades. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation.

    When working with SAP Vendor Invoice Management (VIM), standard configurations often cover the majority of business needs — but not all of them. In many projects, there comes a point where additional data enrichments are required to ensure invoices are processed correctly and efficiently. This is where Logic Modules come into play. Logic Modules allow you to extend VIMs capabilities by injecting custom ABAP code into the document processing flow.

    In this guide, I’ll walk you through creating a simple data enrichment logic module, step by step: from the ABAP implementation to configuration in /n/OPT/SPRO and finally the mapping to document types. By the end, you’ll have a working example that you can adapt to your own project requirements.

    1. Creating the logic module class

    Creating the logic module class using superclass /OPT/CL_D_LM_SUPER.

    blank

    Redefine method /OPT/IF_D_BP_MODULE~PROCESSING

    blank

    A very minimalistic logic module can just consist of one line:

      METHOD /opt/if_d_bp_module~processing.
        ev_success = 'X'. "this is important!
      ENDMETHOD.

    It is important to remember giving back ev_success = ‚X‘ in logic modules as the missing success indicator can cause the following logic modules to not start.

    „Success“ in this case does not mean that actual data was enriched but just that the logic module did not encounter any issue. This is different in VIM Beyond Invoices Data Enrichments where you only want to give the success marker back when there was really data enriched.

    As an empty logic module does not bring any benefit so lets give it some simple logic. Here’s a basic example that sets an empty reference number to „Test“ + DocID::

      METHOD /opt/if_d_bp_module~processing.
    
    * in case the reference number is empty we fill it with "Test" and the current docid. Resulting in e. g. "Test5" for Doc. ID 5.
        IF cv_index_header-xblnr IS INITIAL.
          CONCATENATE 'Test' cv_index_header-docid INTO cv_index_header-xblnr.
        ENDIF.
        
        ev_success = 'X'. "this is important!
    
      ENDMETHOD.

    Save and activate your Logic Module class.

    2. Defining a Logic Module

    Now that we have created the logic module class lets head to /n/OPT/SPRO and navigate to Document Processing Configuration > Document Type Configuration > Logic Module Processing > Logic Module Processing

    blank

    Create an entry with an unique Module ID, a meaningful descripton and the name of the class you just created:

    blank

    It is a good practice to start custom logic modules with a „Z“ and stick to the naming convention from product standard.

    Example: „ZN_ITEM_001“ is affecting NPO Invoices and updates line item information (001 is a running number) while „ZP_HEAD_001“ is affecting PO-Related invoices and header information is updated.

    Remember the name and move on to the next step.

    3. Processing Definition and Module Processing Steps

    You can Imagine a „Processing Definition“ as a collection of logic modules which you can later assign to a DP document type like „Z_NPO“ or „PO_75“. It is not possible to directly assign a logic module to a document type therefore lets create a Processing Definition. Add a Process ID and a Description and you can move on the „Module Processing Steps“:

    blank

    For a basic processing definition with just one module you can simply add a counter (We suggest using 10 so you can add something before this module later), the Module ID we defined before, the „Active“ checkbox and the Processing mode (Run only at processing start, only when re-running business rules or both):

    blank

    Now we have created our collection of logic modules (with just one logic module for now) and can can move on to the next step: Process Mapping.

    4. Mapping groups of Logic Modules („Processing Definition“) to DP Document Types

    To complete the setup you simply assign you Process ID („Processing Definition“) to one or more DP Document Types:

    blank

    Official Documentation

    Always cross-check your setup with the official Open Text Guides. Starting with chapter „Processing logic modules“ in „OpenText Vendor Invoice Management for SAP Solutions: Configuration Guide for Invoice Solution“ (for your Version of VIM) is good idea.

    Outro

    Logic Modules are a powerful way to adapt SAP VIM to the unique requirements of your organization. Even though the example shown here is very simple, the same principles can be applied to implement far more complex business logic — from tax code adjustments to automated field population.

    By following the approach outlined above, you now have a blueprint for creating, configuring, and deploying your own custom Logic Modules. With this flexibility, VIM becomes not just a standard solution but a platform you can tailor precisely to your processes.

  • Stay Ahead of SAP VIM Compatibility Issues: the Orange Compatibility Matrix for VIM and Capture

    If you’re managing SAP Vendor Invoice Management (VIM) and Capture solutions, ensuring compatibility between different software versions is critical. Open Text provides an invaluable resource—the „Orange Compatibility Matrix“—to simplify this.

    What is the Orange Compatibility Matrix?

    The Orange Compatibility Matrix is an essential document provided by Open Text that outlines which versions of OpenText Vendor Invoice Management for SAP Solutions (VIM) are compatible with various Open Text Capture solutions. It clearly displays supported configurations, ensuring you always pair compatible software versions to maintain system stability and optimize performance.

    How to Obtain the Orange Compatibility Matrix:

    1. Navigate to support.opentext.com.
    2. Log in using your Open Text Support credentials.
    3. In the search bar, enter KB0795415.
    4. You’ll be directed to the article with a download link for the latest „Orange Compatibility Matrix for VIM and Capture for SAP Solutions“.
    5. Download and refer to the matrix when planning software updates or troubleshooting compatibility issues.
    blank

    Why is the Orange Compatibility Matrix Useful?

    • System Stability: Ensures your system operates reliably by confirming compatibility between VIM and Capture solutions.
    • Support Assurance: OpenText Support verifies compatibility using this matrix. Unsupported combinations are not eligible for official support, potentially leaving your organization without assistance during critical issues.
    • Simplifies Upgrade Planning: Clearly see what combinations of VIM and Capture solutions are certified to work together.

    Regularly checking the Orange Compatibility Matrix will keep your SAP VIM environments running smoothly.

  • If your SAP VIM Capture feels like it is not learning at all, it might be missing this crucial setting!

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges that may arise during installation and upgrades. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation.

    The capture component used in conjunction with OpenText Vendor Invoice Management for SAP Solutions (SAP VIM) is usually Intelligent Capture for SAP Solutions (short: IC4S; on premise) or Core Capture for SAP Solutions (short: CC4S; hosted in the OpenText Cloud).

    Continuous feedback allows the capture component of VIM to read and interpret more and more incoming .pdf-documents fully or partly. In some systems, however, it is simply never switched on. As a result, the automatic recognition of data on the documents never improves and a high manual validation effort is required. This is not only annoying but also expensive.

    blank

    How does the learning work?

    In simple terms, the process for continuous learning works like this:

    1. The system (IC4S or CC4S) extracts as much data as possible from the document
    2. The extracted data is corrected and supplemented by users in the validation client.
    3. The corrected results are sent back to the capture component via the so-called feedback link, which expands the set of rules for extracting data and generally delivers a better result for the next similar document.
    blank

    What is an Archive Link Document Type?

    An Archive Link Document Type refers to a classification used for documents that are stored in an external archive system but linked to SAP transactions via SAP ArchiveLink. ArchiveLink is an SAP technology that enables the connection of external document management systems (DMS) to SAP applications.

    In the simplest case, there is one archive link document type in a VIM project for storing, for example invoices, let’s call it “ZINVOICE”. Whether the learning is executed or not depends on the settings assigned for this archive link document type.

    In VIM projects, usually one or more archive link document types are created for both invoicing and non-invoicing processes. These allow you to create your own scenarios independently of the document types supplied with the product.

    My recommendation here is always to create your own archive link document types. This makes customization easier and you don’t run the risk of accidentally resetting all possible settings during the next VIM upgrade. However, this also opens the door for the customizing mistake which I describe in this article.

    Is my system learning or is it standing still?

    You can find out in just a few minutes whether your system is learning, or at least is encouraged to learn (in addition to this setting, there are also other reasons that can prevent learning).

    First we find out which Archive Link document type we are using, the quickest way to do this is in transaction /OTX/PF03_WP (VIM Central Workplace) in the work center Inbound administration.

    /otx/pf03_wp

    Select the „Processed“ note and select the line of a recently processed document.

    blank

    In the line you can scroll to the right until you see the column „Document type“. Note all the Document types you are using. For example „ZINVOICE“.

    blank

    The next step ist to check the customizing in /OTX/PF00_IMG.

    /otx/pf00_img

    Navigate to Inbound Configuration > Capture > Feedback:

    blank

    In the table you should see all active archive link document types you are using with an active checkbox next to them:

    blank

    In case you archive link document type is missing here there will be no learning taking place after validating documents. This means that your validation process does not generate a sustainable learning effect but is only valid for the current document.

    My learning is not activated, how do I solve the problem?

    The problem is quickly solved. Add the missing entry in the development system, test, transport and the issue is resolved (learning will only take place for newly processed documents).

    blank

    Why didn’t we realize this earlier?

    In the case of non-invoice-related document processes, the problem is usually immediately apparent because without learning results, not a single field (with the exception of business entities) is recognized and therefore an exorbitantly high validation effort is required.

    The situation is different for invoice-related processes, where the product standard already provides basic recognition results, which are then improved by validation. Therefore you already have a basis of recognition results and do not initially notice that the feedback is missing.

    Conclusion

    This setting is very simple but unfortunately easy to overlook. The system does not complain about the missing setting and everything initially appears to be working. If this article has helped you to resolve a big problem in a simple way, I would be happy if you share it!

  • Creating a Data Enrichment for SAP VIM Solutions Beyond Invoice (+ free Template)

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges that may arise during installation and upgrades. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation.

    A data enrichment is a logic or learning based data manipulation which can run, for example, at the begin of a process. From a usage point it is very comparable with a logic module in the VIM Invoice process.

    Please note that this article is not about the VIM Invoice process but VIM Solutions Beyond Invoice which is, for example, used to process sales orders, quotations, remittance advices, order confirmations or fully custom document processes (including capture & recognition using OpenText Intelligent Capture for SAP Solutions [IC4S]).

    To be precise, Solutions Beyond Invoice describes the supplied solution packages, while the Foundation describes the creation of customised solutions, actions, rules and so on. For the sake of simplicity, I will refer to both as Solutions Beyond Invoice.

    In the following steps I will describe how to create a logic based data enrichment for SAP VIM Solutions Beyond Invoice.

    In case you are interested about learning based data enrichments please check the
    OpenText Vendor Invoice Management for SAP Solutions – Configuration Guide for Foundation.

    In case you are interested about using logic modules for the VIM Invoice process please refer to the OpenText Vendor Invoice Management for SAP Solutions – Configuration Guide for Invoice Solution.

    VIM Solutions Beyond Invoice is formerly known as Business Center and sometimes referred to as VIM Beyond.

    In earlier versions, data was changed with the help of business rules. This is becoming obsolete today and should therefore be avoided. Business rules check data, data enrichments change data. It is easy to convert old business rules into data enrichments.

    Creating a data enrichment ABAP class

    The initial step in this process is to create a new class that is both appropriately named and described, while adhering to the relevant naming conventions. You case use for example SE24 or SE80 to achieve this.

    blank

    It is essential to add the correct interface for data enrichments. In the version I am working with, this is /OTX/PF04_IF_DATA_ENRICH_EX.

    /OTX/PF04_IF_DATA_ENRICH_EX
    blank

    The implementation is carried out in method /OTX/PF04_IF_DATA_ENRICH_EX~DATA_ENRICH_LOGIC.

    /OTX/PF04_IF_DATA_ENRICH_EX~DATA_ENRICH_LOGIC

    I use the following minimalist template for my projects. It already declares the structures, table and field symbol which are needed for processing header and line information. In addition, the success marker is set, if you forget this, the data enrichment is not even executed.

    As the naming conventions for variables and the tables used change from project to project, I recommend creating this template once for each project.

    If the data enrichment is only executed at the start of the process, it will be helpful to use a debug loop. But beware: If only the VIM Solutions Beyond Invoice Invoices solution is used in the system, but not the packages for invoice processing, a custom debug table in the style of /opt/cp_debug must be created.

    ABAP
      METHOD /otx/pf04_if_data_enrich_ex~data_enrich_logic.
    
    * Optional: Debug loop
    
        DATA: ls_plh TYPE [...]_plh, " header table
              lt_pli TYPE TABLE OF [...]_pli, " line item table
              ls_msg TYPE bapiret2.
    
        FIELD-SYMBOLS:  TYPE [...]_pli. " line item table
    
        lt_pli = pct_item.
    *   ls_plh = pcs_head.
    
        pe_success = 'X'. 
    
        LOOP AT lt_pli ASSIGNING .
          [...]
        ENDLOOP.
    
        IF pe_success = 'X'.
    *     pcs_head = ls_plh. " update header information
          pct_item[] = lt_pli[]. " update item information
        ENDIF.
    
      ENDMETHOD.

    Whenever data is changed, I recommend issuing a helpful and transparent message to users so that they know what has been changed and why. Here is an example of what such a message could look like in the code. You can of course also assemble the messages (ls_msg) manually, but I find the option mentioned here easier to read.

    ABAP
    DATA ls_msg TYPE bapiret2.
    
    " [...]
    
    CALL METHOD /otx/pf02_cl_error_message=>message_return_build
      EXPORTING
        pi_type    = 'S' " "S" = Success / "E" = Error / "I" = Info
        pi_cl      = 'Z...' " name of your message class
        pi_number  = 019  " your message number.
        pi_par1    = " message parameter 1
        pi_par2    = " message parameter ...
        " [...]
      IMPORTING
        pes_return = ls_msg.
        
      APPEND ls_msg TO pet_return.

    Customizing for a SAP VIM Solutions Beyond Invoice Data Enrichment

    Now we have created the class for our data enrichment and still have to create the corresponding customising, which can be done very quickly in the transaction /otx/pf00_img.

    /otx/pf00_img

    Navigate to Process Configuration > Profiles:

    blank

    Select your Profile Configuration and navigate to the corresponding Version Definition and then Data Enrichment Configuration. Here you can now create a Data Enrichment ID with a speaking name and description.

    blank

    The enrichment point decides when a data enrichment should be executed. For my example I select ALL to execute it at all enrichment points.

    Even if a data enrichment should only run at the beginning of the process, I like to use ALL at the beginning of my implementation because the jump to the debugger is super quick. Simply set a breakpoint in the class, execute the Enrich Data action and you are already in the ABAP Debugger and can analyse if everything is working according to plan.

    blank

    The last step is often forgotten in data enrichments because it was not necessary in earlier versions. The newly created Data Enrichment ID must still be assigned to the corresponding Characteristics Configuration and given a sequence.

    blank

    I have created a data enrichment but it is not working

    If your data enrichment does not work, please check the following points:

    • Is the success marker pe_success returned with true (‘X’)?
    • Is the newly created Data Enrichment Configuration active? There is a checkbox on the far right which can easily be overlooked.
    • Have you perhaps overlooked the last point Assign Data Enrichments?
    • Perhaps your debug loop can help you here? If this is not activated, this can also be a finding.

    Conclusion

    When using SAP VIM Solutions Beyond Invoice, there is no getting round the use of data enrichments. Only with these can the process be properly tidied up and optimised.

    Don’t forget to issue transparent and helpful messages for the users and make sure that the data enrichments run in a sensible sequence.

    I wish you every success with the implementation!

  • Never forget this step before activating Business Configuration Sets (BC-Sets) for OpenText Vendor Invoice Management for SAP Solutions (SAP VIM) upgrade in SCPR20

    This article is intended for informational purposes only and does not supersede or replace the official documentation provided by OpenText. It serves as supplementary guidance to assist with common challenges that may arise during installation and upgrades. For authoritative instructions and compliance requirements, refer to OpenText’s official documentation.

    When upgrading or installing OpenText Vendor Invoice Management for SAP Solutions (SAP VIM), it is often necessary to activate so-called BC Sets (Business Configuration Sets). A BC Set (Business Configuration Set) in SAP is a tool that allows users to store, manage, and transport configuration settings efficiently. It acts as a template for predefined customizing settings that can be applied to an SAP system, ensuring consistency and reducing manual effort in system configuration.

    Check all the available documentation before starting with the activation

    Compiling a list of the necessary BC Sets and activating them in the correct order can be challenging, especially given the current state of the VIM documentation.

    To ensure a smooth process, it is essential to not only refer to the Installation Guide but also carefully review the Configuration Guides and Release Notes. Also refer to the documentation for all service packs included in the upgrade, not only the latest one.

    Never forget to export the table comparison

    One of the most critical steps when performing an upgrade—especially in complex SAP environments—is to conduct a thorough comparison between the BC Set and the existing table contents before activation. This step ensures that no essential configurations are overwritten, lost, or modified unexpectedly, which could lead to system inconsistencies or functional disruptions.

    During an upgrade, new BC Sets introduced by OpenText may contain updated settings that enhance functionalities or align with new system requirements. However, they may also overwrite existing custom configurations, potentially impacting workflows, document processing, or approval rules. A careful comparison allows you to identify discrepancies, retain necessary custom settings, and selectively adopt only the relevant changes.

    To prevent accidental data loss, it is highly recommended to create a complete backup of the table contents before making any modifications. This backup acts as a safety net, allowing you to restore previous configurations if unexpected issues arise during or after the activation of new BC Sets.

    Taking the time to perform this verification process not only safeguards critical system settings but also minimizes downtime and troubleshooting efforts in case of unintended changes. In the following section, we will go through the exact steps to compare BC Sets with table contents and securely back up configurations before proceeding with the upgrade.

    Exporting the SCPR20 table comparison to .html (without cutting off important tables by mistake)

    Entering the comparison in SCPR is easy by clicking on the button below:

    blank

    The displayed list usually shows you all the data which is different (yellow) or new (green).

    blank

    In general, the export of the table comparison is often forgotten. However, if the export is carried out, there is another pitfall that should not be overlooked, otherwise data may be lost. We have to go into the output options for this.

    blank

    The output width is set to 150 by default, increase the number to 800. if tables, labels and content exceed 150 characters, they will otherwise be cut off and important information may be lost. Please also check whether 800 is sufficient here, I have not noticed any data loss in the exported files with this number. Do not change anything else in these settings.

    blank

    Now that we have prevented the file from being truncated, we can continue with the export. To do this, we go to List, Save/send and then to File.

    blank

    I prefer to save the comparison files as .html. This is small, clear and universally applicable. In addition, I don’t have to worry about Microsoft Excel versions and separators.

    blank

    For the file name I recommend using the BC Set name with „/“ replaced by „_“. Also creating a folder per service pack level does help to keep the overview. I also recommend to replace the suggested .htm with .html. At least on my computer this helps with directly opening in my browser on double click.

    blank

    The export gives you a .html file which is lightweight and provides a very good overview. I recommend storing all the BC-Set comparisons together with your documentation. This is applicable for every single BC-Set in every service pack level.

    blank

    If you have paid very close attention, you will notice that in the screenshot above the BC sets of VIM 7.6 SP 5 are compared with the table contents of VIM 7.6 SP 6. This is of course not a realistic scenario and the BC sets should never be activated as shown in the comparison.

    One of the main reasons I prefer using .html as an export format is that it allows for seamless copying and pasting into Excel while preserving the structure and formatting of the data. Unlike plain text or CSV files, which may require additional adjustments, HTML tables often retain proper column alignment, making the data immediately usable for further processing, analysis, or reporting in Excel. This method helps avoid common issues like misaligned columns, missing delimiters, or incorrect data types, ensuring a smooth workflow when handling exported information.

    blank

    Conclusion

    This may seem like a lot of effort, but failing to carefully verify BC Sets before activation can lead to serious issues. If a BC Set overwrites an important configuration, and you only realize it after deploying transport requests into the production system, it becomes extremely difficult to trace back what was changed and when. At that point, identifying the root cause of the issue can be time-consuming and complex, often requiring manual comparisons, system rollbacks, or troubleshooting unexpected system behavior. Taking the time to perform a thorough review and backup beforehand can save countless hours of debugging and help avoid disruptions in critical business processes.

    With that in mind, I hope this guide helps make your VIM upgrade process smoother and more efficient. Wishing you great success with your upgrade.