Creating RFCs which emulate program activity - best practice.

Hi, First post on the forum so please be kind I'm hoping I've posted in the correct place.
I'm looking at creating a few RFCs to enable a bit of automation. Theory is that details are passed into the RFC and the function does some magic to update the system, hitting all the BRFs etc. The transaction I'm looking at is ICLCDC02, we're quite a few patches behind so there is a lot of good RFC stuff I just don't have access to.
My first attempt simply calls the relevant functions detailed in the program and ticks all the boxes but I have concerns. Then I had a look at BDC and found that SHDB couldn't replay some fo the screen selections - just errored out (and that was with a straight record and playback - no modification) so BDC is out for that reason and also some logic would be required so BDC is not really a good candidate IMO. My plan is to stick to calling the relevant functions which I feel may introduce some maintenance overhead.
Is there any pest practice for situations like this? Is there a way to run the transaction without dialog, call the relevant functions to add records etc accessing the global memory of the transaction then close/save ensuring that all future BRF changes etc get hit? If this is possible then it would greatly reduce/eliminate the maintenance overhead and get rid of my nagging doubt.
Or is my current approach the correct one?
Many thanks.

Hello,
"This will send work item to user (pr creator) sap inbox which when they double click it will complete the workflow."
It sounds liek they are sending a workitem where an email would be enough. By completing the workitem they are simply acknowledging that they have received notification of the completion of the PR.
"Our PR creator will receive notification of the PR approval to theirs outlook mail handled by a program that is scheduled every 5 minutes."
I hope (and assume) that they only receive the email once.
I would change the workflow to send an email (SendMail step) to the initiator instead of the workitem. That is normally what happens. Either that or there is no email at all - some businesses only send an email if something goes wrong. Of course, the business has to agree to this change.
Having that final workitem adds nothing to the process. Replace it with an email.
regards
Rick Bakker
hanabi technology

Similar Messages

  • Which one is the best practice!!

    hi all,
    i have one doubt with the lov
    can we show the data in the LOV by decode function or its better to write two LOV's based on the condition.
    which one is the best practice.
    right now i am using decode function. according to the condition the data will come in the LOV.
    Thanks..

    can we show the data in the LOV by decode functionAs you already do, you can.
    its better to write two LOV's based on the condition.It depends. If its a complex lov and only one column varies based onsome condition, it might less work to use just one lov. Personally, i prefer two different lov's

  • Programming Asignment - Best Practices

    Hello,
      Can anybody give me links/info of Best Practices on Distributing one big ABAP program composed of dialog screens, reports, and some batch input to more than one programmers?
    Thanks,
    Jeff

    Hi Jeffrey,
    I am not sure if there are any such best practices documentation available. But creating one big ABAP program that does so many things itself, is not considered a best practice.
    Correct me if I am wrong here, you want one ABAP program that gives the user a choice of reports, batch input programs and transactions(dialog screens) to choose from, and then branch out to individual functions that the users chose. This looks like more like a area menu functionality. This is how I would distribute the load, assuming my statement of your problem is correct.
    Separate out each individual report, batch input and dialog components into individual programs and assign it to individual programmers. Then have one person assemble them into one area menu(the name of which will also become your transaction code.). Alternatively, you can have a wrapper ABAP program that makes all the calls to these individual programs based on user choice(which will be the selection screen for this program).
    Please let me know if this helped.
    Srinivas

  • Do We Modify 9AMATNR or Create Z9AMATNR?  What is the Best Practice?

    Years ago, when started up our SAP BW system, we were taught to activate delivered content (like 0MATERIAL) and then MODIFY IT -- there was no reason to copy it to our own "Z" object in order to modify.  Now we are beginning an SAP APO DP project.  Does the same rule hold true?  Do we modify 9AMATNR, or do we copy it to Z9AMATNR and then modify Z9AMATNR?  What is the best practice, and why?  THANK YOU!

    Hi Laurie,
    I have to agree with the rest of the responses - create a "Z" object.  We did something similar with 9ALOCNO - we created a Z9ALOCNO characteristic so that we could create new attributes.
    If you create a Z9AMATNR, you can assign the product (and location) characteristics in the Master Planning Object Structure so that the system knows that your Product characteristic is Z9AMATNR and not 9AMATNR.  This may save you a headache later when you transfer the forecasts to SNP.
    1. use transaction /SAPAPO/MSDP_ADMIN
    2. open up the MPOS in question
    3. menu path Edit -> Assign Product / Location
    4. enter the product and location characteristics
    5. save and exit
    Dan

  • Active - Active best practices

    Hello
    Are there any best practice white papers on a Active-Active GG configuration?
    I've read chapter 8 "Using GoldenGate for active-active high availability" in the Admin Guide here:
    -http://download.oracle.com/docs/cd/E18101_01/doc.1111/e17341.pdf
    I also found this pdf:
    -http://www.oracle.com/dm/offers/fy10/wp-oracle-goldengate_activeactive_final.pdf
    Any other documentation would be much appreciated.
    Thanks

    Hi All,
    I am looking for some ideas and steps to put my AD domain for Public / Internet Facing. Appreciate your help in advance.
    If you are asking about best practices then do NOT place AD for public as mentioned before. If you have remote users, they can still accept group policies if they have appropriate infrastructure like VPN available. Otherwise you can start from here:
    Active Directory Domain Services in the Perimeter Network (Windows Server 2008)
    Mahdi Tehrani   |  
      |  
    www.mahditehrani.ir
    Please click on Propose As Answer or
    to mark this post as
    and helpful for other people.
    This posting is provided AS-IS with no warranties, and confers no rights.
    How to query members of 'Local Administrators' group in all computers?
    Hi Mahdi,
    MY DC runs on win 2012.
    Regards, Prabhu

  • Where to create root BOL in custom component - best practice

    Hi Experts,
    I have created a BOL class to insert values into a ZTable.
    I have created a custom component/views for the BOL. Now how will the create method in the BOL will be called. In which method of the component controller or view controller do I create the BOL root..
    I want to use the following code.
    CALL METHOD SUPER->WD_CREATE_CONTEXT
    DATA:
      lref_substitute           TYPE REF TO if_bol_bo_property_access,
      lv_index                  TYPE i,
      lref_bol_entity           TYPE REF TO cl_crm_bol_entity,
      lrf_cuco                  TYPE REF TO cl_gs_mcat_mcat_impl,
      lref_bol_core             TYPE REF TO cl_crm_bol_core,
      lv_object_name            TYPE crmt_ext_obj_name VALUE cl_crm_catego_genil=>gc_ob_schema,
      lv_create_param               TYPE crmt_name_value_pair_tab,
      lv_number                     TYPE int4 VALUE 1,
      lref_new_substitute       TYPE REF TO if_bol_entity_col,
      lr_tx                     TYPE REF TO if_bol_transaction_context
    lref_bol_core = cl_crm_bol_core=>Get_instance( abap_true ).
    lv_object_name = 'ZHRUS_D2'.
    TRY.
        CALL METHOD lref_bol_core->root_create
          EXPORTING
            iv_object_name  = lv_object_name
            iv_create_param = lv_create_param
            iv_number       = lv_number
          RECEIVING
            rv_result       = lref_new_substitute.
      CATCH cx_crm_unsupported_object .
    ENDTRY.
    CHECK lref_new_substitute IS BOUND.
    lref_substitute ?= lref_new_substitute->get_first( ).
    CHECK lref_substitute IS BOUND.
    me->typed_context->zhrus->collection_wrapper->clear( ).
    me->typed_context->zhrus->collection_wrapper->add( iv_entity = lref_substitute ).
    I give the code in various methods and it all works fine. But what is the best way to create the root node.
    Regards,
    Abdullah Ismail

    Hi Abdullah,
    I use something like this to create a root entity in the BOL Core. In this case, a standard entity: BTOrder.
    *- Data dictionary
    DATA lr_core         TYPE REF TO cl_crm_bol_core.
    DATA lr_fac          TYPE REF TO cl_crm_bol_entity_factory.
    DATA lt_params       TYPE crmt_name_value_pair_tab.
    DATA lr_ent          TYPE REF TO cl_crm_bol_entity.
    FIELD-SYMBOLS <line> TYPE crmt_name_value_pair.
    *- Get the core instance and factory
    lr_core = cl_crm_bol_core=>get_instance( ).
    lr_fac = lr_core->get_entity_factory( 'BTOrder' ).
    *- get supported parameters for this object
    lt_params = lr_fac->get_parameter_table( ).
    *- Set the process Type
    READ TABLE lt_params ASSIGNING <line> WITH KEY name = 'PROCESS_TYPE'.
    <line>-value = '0010'.
    *- Create the BOL entity, based on parameters
    lr_ent = lr_fac->create( lt_params ).
    lr_ent = lr_ent->get_related_entity( 'BTOrderHeader' ).
    *- Lock order
    CHECK lr_ent->lock( ) = abap_true.
    It is an alternative way. Check if it helps you creating your Z-Object in the BOL root
    Kind regards,
    Garcia
    Edited by: Bruno Garcia on May 12, 2011 12:15 PM

  • Typekit vs Edge Fonts -- which is better? Best practices?

    I'm not sure I understand the difference between the Edge Web fonts and having a Typekit. In this case I'm using Source Sans Pro, which is available under both.
    In my first attempt at generating a Reflow project, I had the text in Photoshop set in Source Sans Pro, with a copy of the font active on my Mac (via FontXplorer). When I did my first 'Generate' test the text came through without the font, just a 'Browser Default.' But I do believe that Source Sans was available as a choice in the Syling tab.
    For my second attempt, I deactivated the local font and instead turned it on in my Typekit* under Creative Cloud, and reopend the Photoshop doc with that version (the layers had to Update, and all was well). This time when I generated the Reflow project, the type came through as Source Sans Pro.
    So, which is the best way to use these fonts in Reflow? I do notice that the CSS only says "font: source sans pro", which means I'm still going to have to manually add the specific font codes to my HTML and CSS by hand, correct?
    *I saw in a demo video (which I can't find now, otherwise I would link it) where a guy who generated a Reflow project from Photoshop that contained Typekit fonts, that Reflow would ask you to enter the Kit ID in a pop-up window, then re-select your fonts to match what you originally chose in Photoshop. In my second attempt I was using the Typekit version of the font but I was not prompted for the Kit ID like this upon opening the Reflow doc. Has this feature been changed or removed since then? I was able to enter the Kit ID in the 'Custom' tab when I chose 'Manage fonts', but then I had duplicates listed in my font menu until I deactivated the Edge version.
    Sorry for the long post -- just wondering which way is best since Edge Fonts and Typekit seem to have redundant functionality!
    JVK

    First there shouldn't be a difference between the two. I think the only suggestion is to try and not use both. You can and it is supported, but results in more http requests because all your selected edge web fonts are loaded in one file and your selected typekit fonts are loaded in another and those can't get combined into one single file.
    Also, if you are just syncing your fonts using the Creative Cloud to get them on your desktop but not adding they to a typekit "Kit" and using your kit ID in the dialog, or not seeing the dialog at all, then the Edge Web Fonts were selected for you automatically.
    I think the reason Source Sans Pro didn't work the first time Reflow hadn't finished downloading the full font list from the servers. This list is cached locally so the next time you use that font we'd find it in the list and select it for you. If Relow finds matches for all the fonts you used it won't popup the font picker dialog. If that dialog does pop and that list doesn't have your Edge Web Font available you can add it to the list by selecting Manage Fonts from that menu.
    Hope that helps and thanks for useing Refow. Let us know how you like the Photoshop import and any other things we can do to improve it.

  • About program SAPKKA12 - best practice?

    Hello,
    I like to know if it is recommended to schedule automatically periodically the program SAPKKA12?
    Also, I am looking for a description of what the program was intended to do and perhaps how to use it effectively.
    Thanks

    Hi,
    You can not run this program in back ground. Because there are GUI Functional modules which will not work in background. For this you need RFC. Take technical consultant help.
    This program is related to some CO stuff (Result analysis key) . Are you using PS module ?
    Go through this OSS note 438629.
    Regards,
    Chandra

  • Advice on Best practice for inter-countries Active Directory

    We want to merge three active directories with on as parent in Dubai, then child in Dubai, Bahrain and Kuwait. The time zones are different and sites are connected using VPN/leased line. With my studies i have explored two options. One way is to have parent
    domain/forest in Dubai and Child domain in respective countries/offices; second way is to have parent and all child domains in Dubai Data center as it is bigger, while respective countries have DCs connected to their respective child domains in Dubai. (Personally
    i find it safer in second option)
    Kindly advise which approach comes under best practice.
    Thanks in advance.

    Hi Richard
    Mueller,
    You perfectly got my point. We have three difference forests/domain in three different countries. I asked this question becuase I am worried for problems in replications. 
    And yes there are political reasons due to which we want to have multiple domains under one single forest. I have these following points:
    1. With multiple domains you introduce complications with trusts 
    (Yes we will face complications that is why  I will have a VM where there will be three child domains for 3 countries in HQ sitting right next to my main AD server which have forest/domain -  which i hope will help in fixing replication problems)
    2. and
    accessing resources in remote domains. (To address this issue i will implement two additional DCs in respective countries to make the resources available, these RODCs will be pointed toward their respective main domains in HQ)
    As an example:- 
    HQ data center=============
    Company.com (forest/domain)
    3 child domain to company.com
    example uae.company.com
    =======================
    UAE regional office=====================
    2 RODCs pointed towards uae.company.com in HQ
    ==================================
    Please tell me if i make sense here.

  • Creating Validations,what's the best practice?

    Good Day Folks
    I need help in creating validations.
    I know that thereu2019s GGB0  which contains OKC7 for CO validations and OB28 for FI Validations.
    My concern what are the detailed steps for creating Validations.
    Is there a best practice?
    Is there anyway to link the validations created in CO to that of FI or do they need to be created in each?
    Regards
    Just
    Edited by: Just J on Jan 25, 2012 2:24 PM
    Moderator: Please, search before posting

    Hi
    Could you tell us the business requirement?
    So that we can help you
    Thanks
    Vishnu

  • Which wayis the best practice ?

    Hi ,
    I am doubt of which way is the best practice to initialize instance component in a Panel.
    ie .is there any diference, in terms of performance , between initializing component inside the constructor or just outside of constructor?
    1)
    public class MyPanel extends JPanel
    private static JScrollPane scrollPane = new JScrollPane();
    public CustomerTaskPane()
    2)
    public class MyPanel extends JPanel
    private static JScrollPane scrollPane = null;
    public CustomerTaskPane()
    scrollPane = new JScrollPane()
    }

    Correction for the above reply.
    *btw can i avoid from declaring the static field of a class itself when i need to implement the class which follows Singleton pattern like.
    public class CustomerMainPanel extends JPanel
    public static CustomerMainPanel customerMainPanel = null;
    public static synchronized CustomerMainPanel getInstance()
    if( customerMainPanel == null )
    customerMainPanel = new CustomerMainPanel();
    return customerMainPanel;
    }

  • Best practice followed on CONTRACT

    Hello All
    What are the best practice needs to be followed on changing the material data information ,
    Step 1. created a contract for Material and PO released agains contract. later some times.
    Step 2:- material master changes some important piece of data like order Unit/ Deletion or material group changes on MATERIAL.
    step 3:- We do the same for the  materials in the contract and deactivate the w.r.t line and create a new line item so that my new line item picks up from material master.
    What are the other incidents material master team may do on material master so that i can inform the contract team to do the same.
    What are the actions material master team may do on MATERIAL and which is relavant for contract data.so that i can alert CONTRACT and MATERIAL master team. so that communication will be seemless.so that every thing perfect and sync.
    Muthu

    Please check these answered links:
    Contract best practices
    good practices in SAP Value Contract
    Best Practice while creating Contract, Purchase Requisition, Purchase Order
    Best Practice unit of measurement usage in CONTRACT.

  • Best practice of OSB logging Report handling or java code using publish

    Hi all,
    I want to do common error handling of OSB I did two implementations as below just want to know which one is the best practice.
    1. By using the custom report handler --> When ever we want to log we will use the report action of OSB which will call the Custom java class which
    Will log the data in to DB.
    2. By using plain java class --> creating a java class publish to the proxy which will call this java class and do the logging.
    Which is the best practice and pros and cons.
    Thanks
    Phani

    Hi Anuj,
    Thanks for the links, they have been helpful.
    I understand now that OSR is only meant to contain only Proxy services. The synch facility is between OSR and OSB so that in case when you are not using OER, you can publish Proxy services to OSR from OSB. What I didn't understand was why there was a option to publish a Proxy service back to OSB and why it ended up as a Business service. From the link you provided, it mentioned that this case is for multi-domain OSBs, where one OSB wants to use the other OSB's service. It is clear now.
    Some more questions:
    1) In the design-time, in OER no Endpoints are generated for Proxy services. Then how do we publish our design-time services to OSR for testing purposes? What is the correct way of doing this?
    Thanks,
    Umar

  • What is the best practice to consume RMI Service

    hi ,
    i have rmi solution client server
    i want to know which one is the best practice and more stable approach from one of the below.
    1. initialize / consume the service once only
    maybe can do it in static block
    Example : static {
    //some object = Naming.lookup("rmi://192.168.0.130/RMIServer");
    2. Everytime client perform some activity and need to invoke rmi server
    then consume the service
    Example :
    public String getQuote(String quoteNumber){
    }

    Esentially both.
    Each time you do #2, but if it fails, then you do #1. You never know when its going to fail. failure is a normal part of TCP communication so be prepared to handle it gracefully as if its not even a failure.

  • Best practices for coding in Exits

    Does anyone have any documents on the Dos and Don'ts in BADIs, Exits and SD routines from the angle of System performance and how to minimise the load. Iam not talking about the generic Optimisation documents but something specific to SD routines and general BADIs and Exits which fall under the Best practices (coding) of SAP. eg. One guideline from SAP is that Clients should not tamper with the 'x' variables (xvbak, xvbap etc.) in the SD form exits.
    Thanks,
    Madhavan

    Not sure why check is a problem in general however it reminds me on another tricky situation.
    For exampele there is a user-exit in CO-PA
         call customer-function '001'
               exporting
                    erkrs           = i_erkrs
                    ep_source       = <ls_ce1xxxx>
                    ep_source_bukrs = <gs_ce_bukrs>
                    exit_nr         = i_exit_nr
               importing
                    ep_target         = <ls_ce1xxxx>
                    ep_target_bukrs   = <gs_ce_bukrs>
                    e_bukrs_processed = l_bukrs_processed
                    et_field          = gt_field_user
               tables
                    gt_message_table = gt_message_table
               exceptions
                    others    = 1.
    as you can see <ls_ce1xxxx> is passed on ep_source and ep_target. If you have several clients but only one in which the user-exit should be active,  you usually encapsulate your coding like following.
    if sy-mandt = '100'.
      ep_target = <changed_values>.
    endif.
    But in this case you will learn that in every other client the values of ep_source will be cleared if you do not add a statement like ep_target = ep_source.
    before the if statement.
    Christian

Maybe you are looking for