Modification best practice

Hello all,
is it good practice to add enhancement point into SAP standard program via modification and then implement this point, if I need to add code where no enhancement point (impl / expl) is defined? Or would it be better to add the whole code via modification, like it was done in prev. releases?
Thanks,
Elko

Have you considered an implicit enhancement?  What is the codepoint that you're referring to?

Similar Messages

  • Fiori App Modification Best Practices?

    Hi all,
    We are implementing the Approve Travel Expense Fiori app and have encountered the following situation:
    The business workflow requires that a rejected expense report have a comment associated with it. In looking at the code the confirmation dialog defaults to allowing the note to be optional. We can address this by setting the noteMandatory property to TRUE (the default is FALSE). But I'm not sure that this is the best solution. When SAP releases an update for the app the modification will be overwritten and someone has to remember to add that property again.
    How do other organizations handle situations like this? Is there a best practice recommendation for when a minor code change is needed? Or is there a better way to implement this functionality that I'm not aware of?
    Thanks,
    Dave

    Hi Dave,
    SAP provide extensions points for these Fiori Apps, that may be useful to you http://help.sap.com/fiori_bs2013/helpdata/en/a1/611653f5bbef28e10000000a4450e5/content.htm
    If you can't use one of the extension points then I think you will need to do what you've already done.
    Hth,
    Simon

  • EP Upgrade - SP14 - Best Practice for Modification File Comparison

    SDN  Experts -
    We are upgrading our EP from SP14 - SP16.  SAP offers a file "diff" tool that is only useful for Java application files to assist in re-applying our mods on top of the new code stack.
    We are looking for best practices in Portal upgrades to do the following:
    - Identify all files that we have modified on existing SP
    - Diff all source code files (java, XML, GUI, other) between Current SP14 and SP16
    We are also looking for documentation that identifies the local directory structure for NWDS.  This would aid us in creating a batch process to "diff" our source code libraries.
    Any recommendations are appreciated.
    Thanks

    I'm not realy getting your question because you already state what to do:
    We are looking for best practices in Portal upgrades to do the following:
    Identify all files that we have modified on existing SP
    Diff all source code files (java, XML, GUI, other) between Current SP14 and SP16
    You should know by documentation what is changed I guess? Then start diff-ing the code and recompile or repackage. NWDS also has diff functionalities.
    Good luck,
    Benjamin

  • What are the best practices for using the enhancement framework?

    Hello enhancement framework experts,
    Recently, my company upgraded to SAP NW 7.1 EhP6.  This presents us with the capability to use the enhancement framework.
    A couple of senior programmers were asked to deliver a guideline for use of the framework.  They published the following statement:
    "SAP does not guarantee the validity of the enhancement points in future releases/versions. As a result, any implemented enhancement points may require significant work during upgrades. So, enhancement points should essentially be used as an alternative to core modifications, which is a rare scenario.".
    I am looking for confirmation or contradiction to the statement  "SAP does not guarantee the validity of enhancement points in future releases/versions..." .  Is this a true statement for both implicit and explicit enhancement points?
    Is the impact of activated explicit and implicit enhancements much greater to an SAP upgrade than BAdi's and user exits?
    Is there any SAP published guidelines/best practices for use of the enhancement framework?
    Thank you,
    Kimberly
    Edited by: Kimberly Carmack on Aug 11, 2011 5:31 PM

    Found an article that answers this question quite well:
    [How to Get the Most From the Enhancement and Switch Framework as a Customer or Partner - Tips from the Experts|http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/c0f0373e-a915-2e10-6e88-d4de0c725ab3]
    Thank you Thomas Weiss!

  • Best Practice for Customization of ESS 50.4

    Hi ,
    We have implemented ESS 50.4 on EP 6.0 SP 14 and R3 4.6C . I want to know what is the best practice for minor modification of ESS transaction . For eg : I need to hide the change button in Personal information screen .
    Pls let me know .
    PS : Guaranteed award points
    Aneez

    @Aneez
       "Best Practice" is just going to be good ole' ITS custom development. All the "old" ESS services are all ITS based. What can not be done through config is then done by developing custom version of the ESS services. For what you describe (ie. the typical "hide a button" scenario) it is simply a matter of:
    (1) create custom version(ie. "Z" version) of the standard service. The service file will still call the same backend transaction via the ITS parameter ~transaction.
    (2) Since you are NOT making changes that require anything changed on the backend transaction (such as adding new fields, changing business logic, etc) you are lucky to ONLY have to change the web templates. Locate the web template in your new custom service file that corresponds to the screen in the transaction where the "CHANGE" button appears. The ITS naming convention for web templates is <sapprogramname>_<screennumber>.
    (3) After locating the web template that corresponds to your needed screen, simply locate in the HTMLb where the "CHANGE" button code is and comment it out. Just that easy!
    (4) Publish your new customized service and test it out directly through ITS. ie. via the direct URL to it: http://<yourdomain>/scripts/wgate/<yourservice>!
    (5) once you see that it works, you can then make an iView for it in your portal (or simply change the iView you have to now point to your custom ITS service.
    LOTS and LOTS more info on ITS development all around this site and in the ITS sepcific forum.
    Hope this helps!
    Award points or save them...I really don't care. I think the points system here is one of the dumbest ideas since square wheels. =)

  • Oracle Statistics - Best Practice?

    We run stats with brconnect weekly:
    brconnect -u / -c -f stats -t all
    I'm trying to understand how some of our stats are old or stale.  Where's my gap?  We are running Oracle 11g and have Table Monitoring set on every table.  My user_tab_modifications is tracking changes in just over 3,000 tables.  I believe that when those entries surpass 50% changed, then they will be flagged for the above brconnect to update their stats.  Correct?
    Plus, we have our DBSTATC entries.  A lot of those entries were last analyzed some 10 years ago.  Does the above brconnect consider DBSTATC at all?  Or do we need to regularly run the following, as well?
    brconnect -u / -c -f stats -t dbstatc_tab
    I've got tables that are flagged as stale, so something doesn't seem to be quite right in our best practice.
    SQL> select count(*) from dba_tab_statistics
      2  where owner = 'SAPR3' and stale_stats = 'YES';
      COUNT(*)
          1681
    I realize that stats last analyzed some ten years ago does not necessarily mean they are no longer good but I am curious if the weekly stats collection we are doing is sufficient.  Any best practices for me to consider?  Is there some kind of onetime scan I should do to check the health of all stats?

    Hi Richard,
    > We are running Oracle 11g and have Table Monitoring set on every table.
    Table monitoring attribute is not necessary anymore or better said it is deprecated due to the fact that these metrics are controlled by STATISTICS_LEVEL nowadays. Table monitoring attribute is valid for Oracle versions lower than 10g.
    > I believe that when those entries surpass 50% changed, then they will be flagged for the above brconnect to update their stats.  Correct?
    Correct, if BR*Tools parameter stats_change_threshold is set to its default. Brconnect reads the modifications (number of inserts, deletes and updates) from DBA_TAB_MODIFICATIONS and compares the sum of these changes to the total number of rows. It gathers statistics, if the amount of changes is larger than stats_change_threshold.
    > Does the above brconnect consider DBSTATC at all?
    Yes, it does.
    > I've got tables that are flagged as stale, so something doesn't seem to be quite right in our best practice.
    The column STALE_STATS in view DBA_TAB_STATISTICS is calculated differently. This flag is used by the Oracle standard DBMS_STATS implementation which is not considered by SAP - for more details check the Oracle documentation "13.3.1.5 Determining Stale Statistics".
    The GATHER_DATABASE_STATS or GATHER_SCHEMA_STATS procedures gather new statistics for tables with stale statistics when the OPTIONS parameter is set to GATHER STALE or GATHER AUTO. If a monitored table has been modified more than 10%, then these statistics are considered stale and gathered again.
    STALE_PERCENT - Determines the percentage of rows in a table that have to change before the statistics on that table are deemed stale and should be regathered. The valid domain for stale_percent is non-negative numbers.The default value is 10%. Note that if you set stale_percent to zero the AUTO STATS gathering job will gather statistics for this table every time a row in the table is modified.
    SAP has its own automatism (like described with brconnect and stats_change_threshold) to identify stale statistics and how to collect statistics (percentage, histograms, etc.) and does not use / rely on the corresponding Oracle default mechanism.
    > Any best practices for me to consider?  Is there some kind of onetime scan I should do to check the health of all stats?
    No performance issue? No additional and unnecessary load on the system (e.g. dynamic sampling)? No brconnect runtime issue? Then you don't need to think about the brconnect implementation or special settings. Sometimes you need to tweak it (e.g. histograms, sample sizes, etc.), but then you have some specific issue that needs to be solved.
    Regards
    Stefan

  • Best Practice for MUD Environment

    Hi Guys,
    I initially thought of using Merge Repository as an option to MUD Environment.
    But I found that while merging repositories, You have to either accept changes from Modified or Current Repository.
    What if I have 2 developers working parallel in a single Presentation Folder?
    Then I though Project based MUD Implementation will be the only option but in that Developers will have power to keep or remove changes from other developer.
    Now I am confused how I can get multiple users develop single RPD.
    Please let me know what's the best practice used?
    Thanks
    Saurabh

    Below some explanations. Follow the links, if you want more information. Personnaly, I prefer to set up a MUD environment.
    Software Configuration Management
    By default, the Oracle BI repository development environment is not set up for multiple users. However, online editing makes it possible for multiple developers to work simultaneously, though this may not be an efficient methodology, and can result in conflicts, because developers can potentially overwrite each other's work.
    To develop a repository in a concurrent version environment, you have several choices :
    * first of all, you can send the repository to the developper, keep a copy, retrieve it after modification and perform an [Merge Repository|http://gerardnico.com/wiki/dat/obiee/obiee_repository_merge|Merge Repository]
    * second, you can set up a [multiuser environment (MUD)|http://gerardnico.com/wiki/dat/analytic/obiee/multiuser_environment] which use the notion of Projects to split the work area. It would permit developers to modify a repository simultaneously and then check in changes.
    The import option which permit to import a subset of a repository to an other repository, work but is deprecated.
    Success
    Nico

  • Best Practices for Payroll Conversions

    Hi All
    We are currently trying to do data conversion at a client with 100,000 + Employees. We are trying load the tables
    T558B - Payroll Periods
    T558C - Payroll Account Transfer: Old Wage Types
    T5U8C - Transfer external payroll results (USA)
    for all the YTD taxes for the Employees.
    We have designed LSMW's using Transaction code SM30 to load all the Employees. When we are loading using SM30, it is taking a very long time. Can anyone suggest, if this is the Best practice, or if there is an alternate way to load all these data into SAP without using SM30.
    Please let me know
    Thank you
    Deepthi
    Note: I have checked SAP Best practice and that document uses SM30 transaction recording

    Hi,
    In implementing any LO module, generally the following are the points to be taken in mind.
    1. Base level have a ODS to load data from R/3. This ensure that you have exact data content as that in R/3. This can be a write optimized.
    2. Second level have an ODS along with the transformation and modification of data based on the business and functional requirement and enhancments.
    3. Finally have a cube to consolidate the data and make it available for reporting.Create all the reports based on the cube.
    Hope this gives an idea.
    Regards,
    akhan
    Edited by: Akhan_BI on Sep 5, 2009 12:41 AM

  • Best practice to back up our most important asset : iPhoto!

    Hi everyone!
    I consider my 30k photos which I've carefully tagged/marked/modified/red eyed/etc as my most important asset. I've spent days and days on iPhoto to eventually build this 50GB library.
    I've bought my 500 GB TC few months ago and now guess what, it's completely full!
    Modifications calculation, deletion and updates of my library are now taking forever. I understand from this board that Time Machine/TC is updating the 50GB as a whole instead of updating only the modifications ... what a nightmare in this almost ideal apple world!
    Any recommendation to share? Any free apps to do this work for me?
    So far my personal brainstorming came to this process:
    1) download "Time Machine Editor"
    2) schedule updates to be daily or weekly
    3) be patient
    Thanks for sharing your best practices!
    dofre

    I would get a program such as SuperDuper ( http://www.versiontracker.com/dyn/moreinfo/macosx/22126 ) to CLONE your hard drive onto the external (as an image, if you don't have a free partition) and then when your new HD comes back, clone it back.
    SuperDuper is well worth the $20 shareware fee.

  • ESS SCs customisation best practice?

    Hi,
    I'm customising ESS screens.  I want to know what is the standard and best practice to customise ESS components.  Lets say after I import in NWDI and start making changes in NWDS, then checkin, then build and test it successfully, this approach is going to overwrite the standard ESS package.  Is it possible at some stage if I decide to revert back to original standard ESS BP by redeploying standard ESS packages?
    Also, I'm changing one of the personal data screens, would you recommend to create a seperate iview for the customised personal data screen?  Or should I use the standard iviews, roles and webdynpro components for customisation?  I mean do I leave the existing components untouched and created seperate iviews somewhere in the portal content for customised screen in different PCD folder, is this ok?
    Thanks
    Praveen

    Read the Note  872892 as it lists the steps
    In this they ll explain the process of New tracks, It has
    Therein (page 19 onwards),it is described how
    to create a new track, find the custom modifications and replicate them
    in the new track.
    for personalisation you need to create a new folder which wont be overwritten
    So in order for you to prevent personalization copy the content
    into another location in the PCD and do the personalization on that
    namespace is the prefix like "com.sap.portal" which is an
    example for SAP namespace

  • What is the best practice for BADI?

    Hi all, this is my first post.
    I've seen many BADI examples here at SDN and elsewhere where after defining the badi at SE18, and the implementation at SE19, you just create a Z program and call the badi and its method. No brainer. I know how to use the new badi of 'get badi' and 'call badi' instead of the classic exit handler. So I do know how to call a badi properly, in a Z program.
    However, SAP's intention of BADI is to replace the traditional user exit. My question is how do you guys use badi in replacement of user exit?
    User exits have 'call customer-functions' where you put your code in the Z includes, without touching standard SAP programs. Where/how do i link standard programs to call my badi? Even if I implement a standard bapi, my implementation is a Z. And a standard bapi and its methods are, well, standard. How do I call the Z stuff.
    1. If using cmod, call customer-function and the z include to call my badi and method, how does that replace user exit if I'm still using cmod???
    2. I've seen people add includes in a standard function-pool. The Z include calls the badi. But doing so is a modification, which I thought is to be avoided.
    So my question is what is the best practice out there, how do you guys use badi for enhancement in replacement of user exit? In combination of cmod, adding includes in standard programs, other methods?

    Hi Shawn,
    Welcome to SDN
    First thing, you got the whole concept of BADI partially wrong.
    BADI are like user-exits only and the difference is it uses ABAP OO an some more functionalities.
    As you find in the code CALL CUSTOMER FUNCTION, the same way there are exit handlers for BADI.
    User Exits are not completely removed. They are still there and will be there. Its just the extra flexibility with BADI.
    Regards,
    Atish

  • Best practice when modifying SAP Standard Development Component

    Hello Experts,
    What is best practice when modifying SAP Standard Development Component (Java Web Dynpro)? Iu2019m looking for the best method to do modifications to SAP Standard DC so that my changes will be kept (or need low maintenance) after a new service package (or EHP) is applied.
    Thanks,
    Kevin

    Hi,
      'How to use Busiess Packages in Enterprise Portal 6.0' is available in this link.
    http://help.sap.com/bp_epv260/EP_EN/documentation/How-to_Guides/misc/Using_Business_Packages.pdf
    Check out for the best practices.
    Regards,
    Harini S

  • ADF Faces : session timeout best practice

    hi
    I made these small modifications to the web.xml file in the SRDemoSample application:
    (a) I changed the login-config from this ...
      <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
          <form-login-page>infrastructure/SRLogin.jspx</form-login-page>
          <form-error-page>infrastructure/SRLogin.jspx</form-error-page>
        </form-login-config>
      </login-config>... to this
      <login-config>
        <auth-method>BASIC</auth-method>
      </login-config>(b) I changed the session-timeout to 1 minute.
      <session-config>
        <session-timeout>1</session-timeout>
      </session-config>Please consider this scenario:
    (1) Run the UserInterface project of the SRDemoSample application in JDeveloper.
    (2) Authenticate using "sking" and password "welcome".
    (3) Click on the "My Service Requests" tab.
    (4) Click on a "Request Id" like "111". You should see a detail page titled "Service Request Information for SR # 111" that shows detail data on the service request.
    (5) Wait for at least one minute for the session to timeout.
    (6) Click on the "My Service Requests" tab again. I see the same detail page as in (4), now titled "Service Request Information for SR #" and not showing any detail data.
    question
    What is the best practice to detect such session timeouts and handle them in a user friendly way in an ADF Faces application?
    thanks
    Jan Vervecken

    Hi,
    no. Here's the content copied from a word doc:
    A frequent question on the JDeveloper OTN forum, and also one that has been asked by customers directly, is how to detect and graceful handle user session expiry due to user inactivity.
    The problem of user inactivity is that there is no way in JavaEE for the server to call the client when the session has expired. Though you could use JavaScript on the client display to count
    down the session timeout, eventually showing an alert or redirecting the browser, this goes with a lot of overhead. The main concern raised against unhandled session invalidation due to user
    inactivity is that the next user request leads to unpredictable results and errors messages. Because all information stored in the user session get lost upon session expiry, you can't recover the
    session and need to start over again. The solution to this problem is a servlet filter that works on top of the Faces servlet. The web.xml file would have the servlet configured as follows
    1.     <filter>
    2.         <filter-name>ApplicationSessionExpiryFilter</filter-name>
    3.         <filter-class>
    4.             adf.sample.ApplicationSessionExpiryFilter
    5.         </filter-class>
    6.         <init-param>
    7.             <param-name>SessionTimeoutRedirect</param-name>
    8.             <param-value>SessionHasExpired.jspx</param-value>
    9.         </init-param>
    10.     </filter>
    This configures the "ApplicationSessionExpiryFilter" servlet with an initialization parameter for the administrator to configure the page that the filter redirects the request to. In this
    example, the page is a simple JSP page that only prints a message so the user knows what has happened. Further in the web.xml file, the filter is assigned to the JavaServer Faces
    servlet as follows
    1.     <filter-mapping>
    2.             <filter-name>ApplicationSessionExpiryFilter</filter-name>
    3.             <servlet-name>Faces Servlet</servlet-name>
    4.         </filter-mapping>
    The Servlet filter code compares the session Id of the request with the current session Id. This nicely handles the issue of the JavaEE container implicitly creating a new user session for the incoming request.
    The only special case to be handled is where the incoming request doesn't have an associated session ID. This is the case for the initial application request.
    1.     package adf.sample;
    2.     
    3.     import java.io.IOException;
    4.     
    5.     import javax.servlet.Filter;
    6.     import javax.servlet.FilterChain;
    7.     import javax.servlet.FilterConfig;
    8.     import javax.servlet.ServletException;
    9.     import javax.servlet.ServletRequest;
    10.     import javax.servlet.ServletResponse;
    11.     import javax.servlet.http.HttpServletRequest;
    12.     import javax.servlet.http.HttpServletResponse;
    13.     
    14.     
    15.     public class ApplicationSessionExpiryFilter implements Filter {
    16.         private FilterConfig _filterConfig = null;
    17.        
    18.         public void init(FilterConfig filterConfig) throws ServletException {
    19.             _filterConfig = filterConfig;
    20.         }
    21.     
    22.         public void destroy() {
    23.             _filterConfig = null;
    24.         }
    25.     
    26.         public void doFilter(ServletRequest request, ServletResponse response,
    27.                              FilterChain chain) throws IOException, ServletException {
    28.     
    29.     
    30.             String requestedSession =   ((HttpServletRequest)request).getRequestedSessionId();
    31.             String currentWebSession =  ((HttpServletRequest)request).getSession().getId();
    32.            
    33.             boolean sessionOk = currentWebSession.equalsIgnoreCase(requestedSession);
    34.           
    35.             // if the requested session is null then this is the first application
    36.             // request and "false" is acceptable
    37.            
    38.             if (!sessionOk && requestedSession != null){
    39.                 // the session has expired or renewed. Redirect request
    40.                 ((HttpServletResponse) response).sendRedirect(_filterConfig.getInitParameter("SessionTimeoutRedirect"));
    41.             }
    42.             else{
    43.                 chain.doFilter(request, response);
    44.             }
    45.         }
    46.        
    47.     }
    This servlet filter works pretty well, except for sessions that are expired because of active session invalidation e.g. when nuking the session to log out of container managed authentication. In this case my
    recommendation is to extend line 39 to also include a check if security is required. This can be through another initialization parameter that holds the name of a page that the request is redirected to upon logout.
    In this case you don't redirect the request to the error page but continue with a newly created session.
    Ps.: For testing and development, set the following parameter in web.xml to 1 so you don't have to wait 35 minutes
    1.     <session-config>
    2.         <session-timeout>1</session-timeout>
    3.     </session-config> Frank
    Edited by: Frank Nimphius on Jun 9, 2011 8:19 AM

  • Best Practices for SES

    Are there any:
    1) Best Practices documents
    2) Project methodology
    3) Project evaluation techniques/pointers documents
    for SES?
    Apologies if this has been posted before. Please point me to any such post I might have missed.
    Thanks in advance.

    Hi,
    In implementing any LO module, generally the following are the points to be taken in mind.
    1. Base level have a ODS to load data from R/3. This ensure that you have exact data content as that in R/3. This can be a write optimized.
    2. Second level have an ODS along with the transformation and modification of data based on the business and functional requirement and enhancments.
    3. Finally have a cube to consolidate the data and make it available for reporting.Create all the reports based on the cube.
    Hope this gives an idea.
    Regards,
    akhan
    Edited by: Akhan_BI on Sep 5, 2009 12:41 AM

  • Any best practices on workflow design??

    I feel difficult when migrating applications from DEV->TEST->PROD.
           This is because I have created web services in .net.
           So, for each migration, I am suppose to change all the WSDL links in all forms and Workflows.
           Currently:
              I do open the processes in notepad replace all wsdl connection with TEST/PROD connections.
              I do open each form and goto XML Source and replace all WSDl strings.
            Is there any other best practice(s) to do that?
    Nith

    I followed a different approach for one of my project as:
    created several form variables which hold the WSDL for each different servers.
    Calling the web service from javascript code (instead of data connections).
    This solves the problem but increases the development overhead.
    http://groups.google.com/group/livecycle/web/form%20variables.PNG
    Another way is to design all your web services within adobe itself. In this case we will have the same host name (localhost) forever which doesn't require any modification throughout its lifetime.
    Nith

Maybe you are looking for