{"id":2395,"date":"2025-11-18T20:36:20","date_gmt":"2025-11-18T19:36:20","guid":{"rendered":"https:\/\/johannesauer.com\/en\/?p=2395"},"modified":"2025-12-17T07:20:39","modified_gmt":"2025-12-17T06:20:39","slug":"creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template","status":"publish","type":"post","link":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/","title":{"rendered":"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template"},"content":{"rendered":"\n<p class=\"has-text-align-justify has-text-align-justify\">When you start working with SAP VIM Solutions Beyond Invoice \u2014 whether it\u2019s Incoming <strong>Delivery Notes<\/strong>, <strong>Sales Orders<\/strong>, <strong>Remittance Advices<\/strong>, <strong>Order Confirmations<\/strong> or <strong>Quotations<\/strong> \u2014 you quickly notice a familiar limitation: the <strong>out-of-the-box setup doesn\u2019t provide meaningful role definitions<\/strong>. The delivered BC-Sets rely entirely on <strong>SAP\u2019s Organizational Object Assignment<\/strong>, pointing to predefined work centers, rules, jobs, org units, positions, or individual users.<\/p>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">In real projects, these structures are rarely maintained in a way that supports smooth routing. That\u2019s why, in most implementations, one of the very first tasks is building a practical, maintainable role resolution logic \u2014 one that matches how the organization <strong>actually works<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"236\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1024x236.png\" alt=\"\" class=\"wp-image-2396\" srcset=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1024x236.png 1024w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-300x69.png 300w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-768x177.png 768w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1536x354.png 1536w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2048x473.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\/otx\/pf00_img > Process Configuration > Profiles<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">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.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"370\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1-1024x370.png\" alt=\"\" class=\"wp-image-2397\" srcset=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1-1024x370.png 1024w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1-300x108.png 300w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1-768x278.png 768w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-1.png 1212w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\/OTX\/PF00_IMG > Inbound Configuration > Capture > Validation Assignment<\/figcaption><\/figure>\n\n\n\n<p>The link between ArchiveLink Document Type and User is stored in table \/OTX\/PF01_T_VALR.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"339\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2-1024x339.png\" alt=\"\" class=\"wp-image-2399\" srcset=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2-1024x339.png 1024w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2-300x99.png 300w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2-768x254.png 768w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-2.png 1524w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">SE16N displaying \/OTX\/PF01_T_VALR<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">The only way to achieve any logic for determining users besides <strong>SAP\u2019s Organizational Object Assignment<\/strong> is using the setting Role Resolution Logic which requires an ABAP Class being assigned. <\/p>\n\n\n\n<p>Create a new class in SE80 using Superclass <strong>\/OTX\/PF04_CL_ROLE<\/strong> <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-3-1024x654.png\" alt=\"\" class=\"wp-image-2402\" srcset=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-3-1024x654.png 1024w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-3-300x192.png 300w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-3-768x491.png 768w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-3.png 1183w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Redefine method \/OTX\/PF04_IF_ROLE~<strong>ROLE_LOGIC<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"232\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/Bildschirmfoto-2025-11-18-um-18.17.00.gif\" alt=\"\" class=\"wp-image-2403\"\/><\/figure>\n\n\n\n<p>A minimal version of this method could look like this (simply returning one user with username Alex):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>  METHOD \/otx\/pf04_if_role~role_logic.\n    DATA: ls_actor   TYPE swhactor.\n\n    ls_actor-otype = 'US'.\n    ls_actor-objid = 'Alex'.\n\n    APPEND ls_actor TO pet_role_result.\n  ENDMETHOD.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">METHOD<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">\/otx\/pf04_if_role<\/span><span style=\"color: #D4D4D4\">~<\/span><span style=\"color: #DCDCAA\">role_logic<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">DATA<\/span><span style=\"color: #D4D4D4\">: ls_actor  <\/span><span style=\"color: #C586C0\"> TYPE<\/span><span style=\"color: #D4D4D4\"> swhactor.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ls_actor-otype <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">'US'<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ls_actor-objid <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">'Alex'<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">APPEND<\/span><span style=\"color: #D4D4D4\"> ls_actor<\/span><span style=\"color: #C586C0\"> TO<\/span><span style=\"color: #D4D4D4\"> pet_role_result.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">ENDMETHOD<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In order to add our logic we will retrieve the <strong>ArchiveLink Document Type<\/strong> and select the responsible user from table <strong>\/OTX\/PF01_T_VALR<\/strong>. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>  METHOD \/otx\/pf04_if_role~role_logic.\n    DATA: lh_plh      TYPE REF TO data,\n          ls_actor    TYPE swhactor,\n          ls_fallback TYPE \/otx\/pf04_t_rol, \" optional for fallback\n          lt_valr     TYPE TABLE OF \/otx\/pf01_t_valr.\n\n    FIELD-SYMBOLS: <fs_plh>  TYPE \/otx\/ps09_t_plh, \" &#91;TODO&#93; replace with your PLH table! Format is \/otx\/ps*_t_plh for out of the box solutions.\n                   <fs_valr> TYPE \/otx\/pf01_t_valr.\n\n* Get data from workitem header\n    CALL METHOD \/otx\/pf04_if_role~mh_data->head_data_get( IMPORTING peh_head = lh_plh ). \n    ASSIGN lh_plh->* TO <fs_plh>.\n\n* Use Validation Agents from \/otx\/pf01_t_valr in case ArchiveLink Document Type is filled.\n    IF <fs_plh>-ar_object IS NOT INITIAL.\n\n      SELECT otype, objid\n        FROM \/otx\/pf01_t_valr\n        INTO CORRESPONDING FIELDS OF TABLE @lt_valr\n        WHERE ar_object = @<fs_plh>-ar_object.\n\n      IF sy-subrc EQ 0.\n        LOOP AT lt_valr ASSIGNING <fs_valr>.\n          CLEAR ls_actor.\n\n          ls_actor-otype = <fs_valr>-otype.\n          ls_actor-objid = <fs_valr>-objid.\n\n          APPEND ls_actor TO pet_role_result.\n        ENDLOOP.\n      ENDIF.\n    ENDIF.\n\n* Fallback (optional) \n    IF pet_role_result IS INITIAL.\n\n      SELECT SINGLE otype, objid\n        FROM \/otx\/pf04_t_rol\n        INTO CORRESPONDING FIELDS OF @ls_fallback\n        WHERE profile_id = 'PS02_BCF_ORDER' \" &#91;TODO&#93;example! to be replaced!\n        AND role_id = 'SOL_1ST_PROC'. \" &#91;TODO&#93; example! to be replaced!\n      IF sy-subrc EQ 0.\n        CLEAR ls_actor.\n        CONCATENATE ls_fallback-otype ls_fallback-objid INTO ls_actor.\n        APPEND ls_actor TO pet_role_result.\n      ENDIF.\n    ENDIF.\n\n  ENDMETHOD.<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">METHOD<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">\/otx\/pf04_if_role<\/span><span style=\"color: #D4D4D4\">~<\/span><span style=\"color: #DCDCAA\">role_logic<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">DATA<\/span><span style=\"color: #D4D4D4\">: lh_plh     <\/span><span style=\"color: #C586C0\"> TYPE REF TO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">data<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          ls_actor   <\/span><span style=\"color: #C586C0\"> TYPE<\/span><span style=\"color: #D4D4D4\"> swhactor,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          ls_fallback<\/span><span style=\"color: #C586C0\"> TYPE<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf04_t_rol, <\/span><span style=\"color: #6A9955\">\" optional for fallback<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          lt_valr    <\/span><span style=\"color: #C586C0\"> TYPE TABLE OF<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf01_t_valr.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">FIELD-SYMBOLS<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #9CDCFE\"><fs_plh><\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\"> TYPE<\/span><span style=\"color: #D4D4D4\"> \/otx\/ps09_t_plh, <\/span><span style=\"color: #6A9955\">\" &#91;TODO&#93; replace with your PLH table! Format is \/otx\/ps*_t_plh for out of the box solutions.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                   <\/span><span style=\"color: #9CDCFE\"><fs_valr><\/span><span style=\"color: #C586C0\"> TYPE<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf01_t_valr.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">* Get data from workitem header<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">CALL<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">METHOD<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf04_if_role~mh_data->head_data_get( <\/span><span style=\"color: #C586C0\">IMPORTING<\/span><span style=\"color: #D4D4D4\"> peh_head <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> lh_plh ). <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">ASSIGN<\/span><span style=\"color: #D4D4D4\"> lh_plh->*<\/span><span style=\"color: #C586C0\"> TO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\"><fs_plh><\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">* Use Validation Agents from \/otx\/pf01_t_valr in case ArchiveLink Document Type is filled.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\"> IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\"><fs_plh><\/span><span style=\"color: #D4D4D4\">-ar_object <\/span><span style=\"color: #C586C0\">IS<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">NOT<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">INITIAL<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">SELECT<\/span><span style=\"color: #D4D4D4\"> otype, objid<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">FROM<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf01_t_valr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">INTO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">CORRESPONDING<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">FIELDS OF TABLE<\/span><span style=\"color: #D4D4D4\"> @lt_valr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">WHERE<\/span><span style=\"color: #D4D4D4\"> ar_object <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> @<\/span><span style=\"color: #9CDCFE\"><fs_plh><\/span><span style=\"color: #D4D4D4\">-ar_object.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #C586C0\"> IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">sy<\/span><span style=\"color: #D4D4D4\">-<\/span><span style=\"color: #569CD6\">subrc<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">EQ<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #C586C0\"> LOOP AT<\/span><span style=\"color: #D4D4D4\"> lt_valr <\/span><span style=\"color: #C586C0\">ASSIGNING<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\"><fs_valr><\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #C586C0\">CLEAR<\/span><span style=\"color: #D4D4D4\"> ls_actor.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          ls_actor-otype <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\"><fs_valr><\/span><span style=\"color: #D4D4D4\">-otype.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          ls_actor-objid <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\"><fs_valr><\/span><span style=\"color: #D4D4D4\">-objid.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #C586C0\">APPEND<\/span><span style=\"color: #D4D4D4\"> ls_actor<\/span><span style=\"color: #C586C0\"> TO<\/span><span style=\"color: #D4D4D4\"> pet_role_result.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #C586C0\"> ENDLOOP<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #C586C0\"> ENDIF<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\"> ENDIF<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">* Fallback (optional) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\"> IF<\/span><span style=\"color: #D4D4D4\"> pet_role_result <\/span><span style=\"color: #C586C0\">IS<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">INITIAL<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">SELECT<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">SINGLE<\/span><span style=\"color: #D4D4D4\"> otype, objid<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">FROM<\/span><span style=\"color: #D4D4D4\"> \/otx\/pf04_t_rol<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">INTO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">CORRESPONDING<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">FIELDS OF<\/span><span style=\"color: #D4D4D4\"> @ls_fallback<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">WHERE<\/span><span style=\"color: #D4D4D4\"> profile_id <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">'PS02_BCF_ORDER'<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #6A9955\">\" &#91;TODO&#93;example! to be replaced!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">AND<\/span><span style=\"color: #D4D4D4\"> role_id <\/span><span style=\"color: #C586C0\">=<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">'SOL_1ST_PROC'<\/span><span style=\"color: #D4D4D4\">. <\/span><span style=\"color: #6A9955\">\" &#91;TODO&#93; example! to be replaced!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #C586C0\"> IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">sy<\/span><span style=\"color: #D4D4D4\">-<\/span><span style=\"color: #569CD6\">subrc<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">EQ<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">CLEAR<\/span><span style=\"color: #D4D4D4\"> ls_actor.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">CONCATENATE<\/span><span style=\"color: #D4D4D4\"> ls_fallback-otype ls_fallback-objid <\/span><span style=\"color: #C586C0\">INTO<\/span><span style=\"color: #D4D4D4\"> ls_actor.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">APPEND<\/span><span style=\"color: #D4D4D4\"> ls_actor<\/span><span style=\"color: #C586C0\"> TO<\/span><span style=\"color: #D4D4D4\"> pet_role_result.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #C586C0\"> ENDIF<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\"> ENDIF<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">ENDMETHOD<\/span><span style=\"color: #D4D4D4\">.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">Once the class is complete and activated we can assign it in <strong>\/OTX\/PF00_IMG<\/strong> > <strong>Process Configuration<\/strong> > <strong>Profiles<\/strong> > <strong>Profile<\/strong> <strong>Configuration<\/strong> ><strong> Version Definition <\/strong>><strong> Role Definition<\/strong>. Here you can now switch your Role Type to <strong>Role Resolution Logic<\/strong>, add your Role class and add a Fallback user in case the logic does not return any user:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"229\" src=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-1024x229.png\" alt=\"\" class=\"wp-image-2405\" srcset=\"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-1024x229.png 1024w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-300x67.png 300w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-768x172.png 768w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-1536x343.png 1536w, https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/11\/image-4-2048x458.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">Now you have created a <strong>very clean<\/strong>, <strong>reliable<\/strong> and <strong>super straightforward<\/strong> role determination for <strong>VIM Beyond invoices<\/strong>. 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!<\/p>\n\n\n\n<p class=\"has-text-align-justify has-text-align-justify\">If your requirements extend beyond this or you would like support in reviewing or refining your configuration, <a href=\"https:\/\/johannesauer.com\/en\/contact\/\">you are welcome to get in touch<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-ainoblocks-notification-block status-info border-all icon-fill pt__5 pb__5 pl__5 pr__5\" style=\"border-width:1px\" x-data=\"{ open: true }\" @click=\"open = !open\" :class=\"{'close': ! open }\"><div class=\"content-wrapper\"><button class=\"close-btn\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M10.243 3.172l-2.829 2.828 2.829 2.829-1.414 1.414-2.829-2.829-2.828 2.829-1.414-1.414 2.828-2.83-2.828-2.827 1.414-1.414 2.828 2.827 2.828-2.827z\"><\/path><\/svg><\/button><span class=\"icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13 9v10h-2v-10h2zM12 5c0.552 0 1 0.448 1 1s-0.448 1-1 1c-0.552 0-1-0.448-1-1s0.448-1 1-1z\"><\/path><\/svg><\/span>\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-c385debf wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p class=\"has-medium-font-size\">This article is for <strong>SAP VIM Solutions Beyond Invoice<\/strong> and is not compatible with role determination configuration for invoice processing.<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-ainoblocks-notification-block status-info border-all icon-fill pt__5 pb__5 pl__5 pr__5\" style=\"border-width:1px\" x-data=\"{ open: true }\" @click=\"open = !open\" :class=\"{'close': ! open }\"><div class=\"content-wrapper\"><button class=\"close-btn\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M10.243 3.172l-2.829 2.828 2.829 2.829-1.414 1.414-2.829-2.829-2.828 2.829-1.414-1.414 2.828-2.83-2.828-2.827 1.414-1.414 2.828 2.827 2.828-2.827z\"><\/path><\/svg><\/button><span class=\"icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13 9v10h-2v-10h2zM12 5c0.552 0 1 0.448 1 1s-0.448 1-1 1c-0.552 0-1-0.448-1-1s0.448-1 1-1z\"><\/path><\/svg><\/span>\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-c385debf wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p class=\"has-medium-font-size\">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&#8217;s official documentation and support. Do not use this in production systems.<\/p>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>When you start working with SAP VIM Solutions Beyond Invoice \u2014 whether it\u2019s Incoming Delivery Notes, Sales Orders, Remittance Advices, Order Confirmations or Quotations \u2014 you quickly notice a familiar limitation: the out-of-the-box setup doesn\u2019t provide meaningful role definitions. The delivered BC-Sets rely entirely on SAP\u2019s Organizational Object Assignment, pointing to predefined work centers, rules, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1755,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,31,64,13],"tags":[30,32,14],"class_list":["post-2395","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","category-sap-vim-beyond-invoices","category-sap-vim-customizing","category-sap-vim","tag-development","tag-sap-vim-solutions-beyond-invoice","tag-sap-vim"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/\"},\"author\":{\"name\":\"Johannes Auer\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#\\\/schema\\\/person\\\/5be8c8acac2d2546979a66edb36355f7\"},\"headline\":\"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template\",\"datePublished\":\"2025-11-18T19:36:20+00:00\",\"dateModified\":\"2025-12-17T06:20:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/\"},\"wordCount\":530,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/invoices.png\",\"keywords\":[\"Development\",\"SAP VIM Solutions Beyond Invoice\",\"SAP VIM\"],\"articleSection\":[\"Development\",\"SAP VIM Beyond Invoice\",\"SAP VIM Customizing\",\"SAP VIM\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/\",\"url\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/\",\"name\":\"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/invoices.png\",\"datePublished\":\"2025-11-18T19:36:20+00:00\",\"dateModified\":\"2025-12-17T06:20:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#primaryimage\",\"url\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/invoices.png\",\"contentUrl\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/invoices.png\",\"width\":1918,\"height\":1297,\"caption\":\"SAP VIM customizing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/sap-vim-beyond-invoices\\\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#website\",\"url\":\"https:\\\/\\\/johannesauer.com\\\/\",\"name\":\"Johannes Auer\",\"description\":\"SAP VIM Consulting\",\"publisher\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/johannesauer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#organization\",\"name\":\"Johannes Auer\",\"url\":\"https:\\\/\\\/johannesauer.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Logo-2026-space-marble-picture-scaled.png\",\"contentUrl\":\"https:\\\/\\\/johannesauer.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Logo-2026-space-marble-picture-scaled.png\",\"width\":2560,\"height\":2560,\"caption\":\"Johannes Auer\"},\"image\":{\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/auer\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/johannesauer.com\\\/#\\\/schema\\\/person\\\/5be8c8acac2d2546979a66edb36355f7\",\"name\":\"Johannes Auer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g\",\"caption\":\"Johannes Auer\"},\"sameAs\":[\"https:\\\/\\\/johannesauer.com\"],\"url\":\"https:\\\/\\\/johannesauer.com\\\/en\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#article","isPartOf":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/"},"author":{"name":"Johannes Auer","@id":"https:\/\/johannesauer.com\/#\/schema\/person\/5be8c8acac2d2546979a66edb36355f7"},"headline":"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template","datePublished":"2025-11-18T19:36:20+00:00","dateModified":"2025-12-17T06:20:39+00:00","mainEntityOfPage":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/"},"wordCount":530,"commentCount":0,"publisher":{"@id":"https:\/\/johannesauer.com\/#organization"},"image":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#primaryimage"},"thumbnailUrl":"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/08\/invoices.png","keywords":["Development","SAP VIM Solutions Beyond Invoice","SAP VIM"],"articleSection":["Development","SAP VIM Beyond Invoice","SAP VIM Customizing","SAP VIM"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/","url":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/","name":"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template","isPartOf":{"@id":"https:\/\/johannesauer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#primaryimage"},"image":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#primaryimage"},"thumbnailUrl":"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/08\/invoices.png","datePublished":"2025-11-18T19:36:20+00:00","dateModified":"2025-12-17T06:20:39+00:00","breadcrumb":{"@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#primaryimage","url":"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/08\/invoices.png","contentUrl":"https:\/\/johannesauer.com\/wp-content\/uploads\/2025\/08\/invoices.png","width":1918,"height":1297,"caption":"SAP VIM customizing"},{"@type":"BreadcrumbList","@id":"https:\/\/johannesauer.com\/en\/sap-vim-beyond-invoices\/creating-a-role-determination-for-sap-vim-solutions-beyond-invoice-free-template\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/johannesauer.com\/en\/"},{"@type":"ListItem","position":2,"name":"Practical Role Determination for SAP VIM Solutions Beyond Invoice: A Simple Approach + Free Template"}]},{"@type":"WebSite","@id":"https:\/\/johannesauer.com\/#website","url":"https:\/\/johannesauer.com\/","name":"Johannes Auer","description":"SAP VIM Consulting","publisher":{"@id":"https:\/\/johannesauer.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/johannesauer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/johannesauer.com\/#organization","name":"Johannes Auer","url":"https:\/\/johannesauer.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/johannesauer.com\/#\/schema\/logo\/image\/","url":"https:\/\/johannesauer.com\/wp-content\/uploads\/2026\/01\/Logo-2026-space-marble-picture-scaled.png","contentUrl":"https:\/\/johannesauer.com\/wp-content\/uploads\/2026\/01\/Logo-2026-space-marble-picture-scaled.png","width":2560,"height":2560,"caption":"Johannes Auer"},"image":{"@id":"https:\/\/johannesauer.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/auer\/"]},{"@type":"Person","@id":"https:\/\/johannesauer.com\/#\/schema\/person\/5be8c8acac2d2546979a66edb36355f7","name":"Johannes Auer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/60aef692d1ef612aae869660d5783f53d98ea7fbd0396a3dc70f028c5294135c?s=96&d=mm&r=g","caption":"Johannes Auer"},"sameAs":["https:\/\/johannesauer.com"],"url":"https:\/\/johannesauer.com\/en\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/posts\/2395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/comments?post=2395"}],"version-history":[{"count":0,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/posts\/2395\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/media\/1755"}],"wp:attachment":[{"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/media?parent=2395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/categories?post=2395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/johannesauer.com\/en\/wp-json\/wp\/v2\/tags?post=2395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}