BRF Expression - Implementation class OCA001 - No Context Component Exist

Dear All,
I am trying to create an expression in BRF.
Application class is ISHERCM_PP and Implementation class OCA001 (Access to simple context). As expected after selecting this implementation class Result Type field is not editable. I selected Context 0MODBOOK_CONTEXT, after pressing enter it gives an error message that "First Enter a Result Type". After this I tried to select Context Component, but in F4 there is no values found.
First time I am creating an expression for implementation class OCA001, please suggest, what I am missing.
Thanks in Advance
Sudhir Gupta

Sudhir,
Can you explain what you want to do in terms of the business process?
When the event is triggered there is no information yet available about the where-used lists
that are created asynchronously after the module bookings are saved. If the module context contained in this structure does not suffice to program a BRF action or expression, the where-used lists can be read from the database additionally*
*Table Type for Program Type (in this and the last field of the structure the where-used lists are
contained in their state before the activity that triggered the event was executed. The current state
must be read from the database if necessary.
br,
Rob

Similar Messages

  • Read Implementation class attribute from context node

    Hello all,
    I have a global atttribute in my Implementation class. How can I access this attribute from the getter setter method of an attribute in my Context node?
    Regards,
    Debolina

    hi ,
    I discovered that we cannot access the child nodes from parent class,so instead I am using custom controllers

  • Read attribute of implementation class from context node

    hi experts,
    I need to access the implementation class from the context node,in component seged_tg/eltargetgroupitem. Node is targetgroupitem.
    Also if I can either access the component controller from the context node,I need to know how to instantiate the class.
    please help.
    regards
    Anu

    hi ,
    I discovered that we cannot access the child nodes from parent class,so instead I am using custom controllers

  • Instance of one of implementations of abstract class depending on context??

    Hi all,
    I just wonder if it is possible in Java to call creation of a new instance of an implementation of an abstract class depending on context.
    I mean something like:
    abstract class Abstract
    //1st implementation of Abstract class
    class Concrete1 extends Abstract
    //2nd implementation of Abstract class
    class Concrete2 extends Abstract
    }And now, somewhere else in the code, I would really need to call something like this:
    Abstract test1 = new ...(); //here I need sometimes to be created instance of Concrete1, sometimes instance of Concrete2
    Is there a way how to do this??

    Some more concrete code if it helps:
    Abstract class:
    * Individual.java
    * Created on 21. leden 2007, 1:08
    package genetics;
    * Abstract class defining fields and methods of one individual for genetic algorithms
    * This class is supposed to be implemented according to problem to be solved
    * @author Richard V�tek
    * @version 1.0
    abstract public class Individual implements Comparable<Individual>
       * Create random chromosomes for this individual
      protected abstract void createRandomChromosomes();
       * Count fitness of this individual
       * This number says how good is this individual (the higher number the better).
       * Better fitness means that this individual is closer to solution.
       * @return  int   Fitness of this individual
      protected abstract int getFitness();
       * Cross-breed this individual with another individual
       * This leaves untouched number of chromosomes to certain (randomly generated) position.
       * From this position on, it will swap chromosomes between this and another individual.
       * So this individual gets changed (cross-breeded) as well as the other, which is returned
       * as result of this method.
       * @param   other              The other individual to cross-breed with
       * @return  Individual         Hybrid of this and another individual (in fact, the other individual
       *                             after cross-breed (this (source) individual gets changed too after cross-breed)
      protected abstract Individual crossbreed(Individual other);
       * Mutate this individual
       * Mutate chromosomes of this individual; every chromosome is mutated
       * with probability set in settings of evolution.
       * This probability is supposed to be quite low number, roughly 1 %.
      protected abstract void mutate();
       * Check this individual
       * Check if this individual still suits the assignment.
       * If not, repair this individual to suit it again.
      protected abstract void check();
       * Implementation of Comparable: comparing of individuals by fitness
       * @param other Another individual to compare
      public int compareTo(Individual other)
        return this.getFitness() - other.getFitness();
    One implementation class:
    * KnapsackIndividual.java
    * Created on 21. leden 2007, 1:41
    package genetics;
    import java.util.Random;
    import java.util.TreeMap;
    import knapsack.KnapsackProblem;
    * This is practically the same as KnapsackProblem class but designed specially
    * for solving knapsack problem with genetic algorithm so all unnecessary fields
    * and methods are removed.
    * @author Richard V�tek
    * @version 1.0
    public class KnapsackIndividual extends Individual
       * Chromosomes of this individual
       * In case of knapsack problem, they are things currentl in knasack
      protected boolean[] arrChromosomes;
       * Cached value of fitness of this individual
       * Used to not to count fitness of this individual everytime when needed
       * (and it is often needed); once counted, it will be read from this cached value
      private int intFitnessCache = Integer.MIN_VALUE;
       * Randomizer for random-driven methods (like mutation, etc.)
      private Random randomizer = new Random();
       * Reference to evolution to read mutation probability from
      protected Evolution evolution;
       * Assignment of problem instance
      protected KnapsackProblem assignment;
       * Create a new Individual instance
       * @param   assignment  Object representing assignment of particular problem
       * @param   evolution   Reference to evolution object to be able to read evolution's settings from
      public KnapsackIndividual(KnapsackProblem assignment, Evolution evolution)
        this.assignment = assignment;
        this.evolution = evolution;
        this.arrChromosomes = new boolean[assignment.getNumberOfThings()];
       * Create random chromosomes for this individual
       * @see Individual#createRandomChromosomes()
      protected void createRandomChromosomes()
        int intChromosomeCount = this.arrChromosomes.length;
        for (int i = 0; i < intChromosomeCount; i++)
          this.arrChromosomes[i] = this.randomizer.nextBoolean();
       * Get fitness of this individual
       * In case of knapsack, fitness is sum of prices of all things currently in knapsack
       * @see Individual#getFitness()
      protected int getFitness()
        //if cached value exist, return it
        if (this.intFitnessCache != Integer.MIN_VALUE)
          return this.intFitnessCache;
        //otherwise, count fitness of this individual
        int intChromosomeCount = this.arrChromosomes.length;
        int intSumOfValues = 0;
        //in case of knapsack, fitness is value of all things currently in knapsack
        //(sum of values of all things in knapsack)
        for (int i = 0; i < intChromosomeCount; i++)
          intSumOfValues = this.assignment.arrPrices;
    //save counted fitness to cache
    this.intFitnessCache = intSumOfValues;
    return intSumOfValues;
    * Cross-breed two individuals
    * @param other The other individual for cross-breed
    * @return The other individual after cross-breed (but this individual is affected too)
    * @see Individual#crossbreed()
    protected Individual crossbreed(Individual other)
    int intChromosomeCount = this.arrChromosomes.length;
    //position from which on swap chromosomes of this and the other individual
    int intCrossbreedPosition = this.randomizer.nextInt(intChromosomeCount);
    boolean booTemp;
    //swap chromosomes from cross-breed position on
    for (int i = intCrossbreedPosition; i < intChromosomeCount; i++)
    booTemp = ((KnapsackIndividual) this).arrChromosomes[i];
    ((KnapsackIndividual) this).arrChromosomes[i] = ((KnapsackIndividual) other).arrChromosomes[i];
    ((KnapsackIndividual) other).arrChromosomes[i] = booTemp;
    return other;
    * Mutate individual chromosomes of this individual with certain probability
    * In case of knapsack, particular thing is just inserted/taken out of the knapsack
    * @see Individual#mutate()
    protected void mutate()
    //probability of mutation (in percents)
    int intMutationProbability = this.evolution.getMutationProbability();
    int intChromosomeCount = this.arrChromosomes.length;
    //iterate through all chromosomes, mutating them with certain (set) probability
    for (int i = 0; i < intChromosomeCount; i++)
    //mutation probability passed => mutate this chromosome
    if (this.randomizer.nextInt(100) < intMutationProbability)
    this.arrChromosomes[i] = !this.arrChromosomes[i];
    //when mutation finished, we must check if this individual still suits the assignment;
    //if not, repait it
    this.check();
    * Check if this individual still suits the assignment; if not, repair it
    * In case of knapsack it means that sum of weights of things currently in knapsack
    * will not exceed capacity of backpack; if exceeds, take out as many things as necessary
    * to not to exceed again; choose things to be taken out according to worst weight to price ratio
    * @see Individual#check()
    protected void check()
    int intSumOfWeights = 0;
    //list of things in the knapsack sorted by weight to price ratio
    //key: index of thing in knapsack
    //value: weight/price ratio
    TreeMap<Integer, Float> things = new TreeMap<Integer, Float>();
    for (int i = 0; i < this.arrChromosomes.length; i++)
    //thing in the knapsack
    if (this.arrChromosomes[i] == true)
    //add its weight to sum of weights
    intSumOfWeights += this.assignment.arrWeights[i];
    //add it to the list of things sorted by weight to price ratio
    things.put(i, (((float) this.assignment.arrWeights[i]) / ((float) this.assignment.arrPrices[i])));
    //sum of weights exceeds knapsack capacity => take out as many things as necessary
    while (intSumOfWeights > this.assignment.getKnapsackCapacity())
    //take out thing with worst weight/price ratio from all things currently in knapsack
    this.arrChromosomes[things.lastKey()] = false;
    //update sum of weights of things currently in knapsack
    intSumOfWeights -= things.get(things.lastKey());
    //also remove this thing from list of things
    things.remove(things.lastKey());
    And another class, where i need this feature (tried to use generics for that, but they can't be used in this way):
    * Evolution.java
    * Created on 21. leden 2007, 2:47
    package genetics;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Arrays;
    * Class for algorithms using simulated evolution to deal with a problem
    * Tried to be designed general enough to allow to be used for every genetic algotihm.
    * If true, only class Individual must be implemented according to problem to be solved,
    * the rest of genetic algorithm stays the same.
    * @author Richard V�tek
    * @version
    public class Evolution<Problem, IndividualClass extends Individual>
       * Number of generations of evolution to finish
      protected int intGenerationCount;
       * Number of individuals in each generation
      protected int intGenerationSize;
       * Elite individual count
       * All elite individuals are just copied from one generation to another with no change
      protected int intGenerationEliteCount;
       * Number of individuals participating a tournament
       * To select an good individual for next generation, tournaments are hold.
       * This affects number of individuals which one good individual is selected
       * from in one tournament.
       * @see <a href="http://cs.felk.cvut.cz/%7Exobitko/ga/example_f.html">Genetic Algorithm Example Applet</a>
      protected int intGenerationTournamentSize;
       * Probability of mutation (in percents)
      protected int intMutationProbability;
       * Current generation of individuals in evolution
      protected Generation<IndividualClass> thisGeneration;
       * Next generation of individuals in evolution
      protected Generation<IndividualClass> nextGeneration;
       * Fitness of best individual in this generation
      private int intIndividualBestFitness;
       * Sum of fitnesses of all individuals in this generation
      private int intIndividualsSumFitness;
       * Fitness of worst individual in this generation
      private int intIndividualWorstFitness;
       * Fitness of best elite individual in (every) generation
       * Auxilliary variable to not to count statistics for elite individuals
       * in each generation as well (not needed - elite individuals don't change themselves)
      private int intIndividualEliteBestFitness;
       * Sum of fitnesses of all elite individuals in (every) generation
       * Auxilliary variable to not to count statistics for elite individuals
       * in each generation as well (not needed - elite individuals don't change themselves)
      private int intIndividualElitesSumFitness;
       * Fitness of worst elite individual in (every) generation
       * Auxilliary variable to not to count statistics for elite individuals
       * in each generation as well (not needed - elite individuals don't change themselves)
      private int intIndividualEliteWorstFitness;
       * Create a new instance of Evolution (settings passed through parameters)
       * @param   intGenerationCount            Number of generation of evolution to finish
       * @param   intGenerationSize             Number of individuals in each generation
       * @param   intGenerationEliteRatio       Elite individuals to generation size ratio (in percents)
       * @param   intGenerationTournamentRatio  Members of tournament to generation size ratio (in percents)
       * @param   intMutationProbability        Probability of mutation of each chromosome of each individual of generation (in percents)
       * @see     #intGenerationEliteCount
       * @see     #intGenerationTournamentSize
      public Evolution(
        int intGenerationCount, int intGenerationSize,
        int intGenerationEliteRatio, int intGenerationTournamentRatio,
        int intMutationProbability)
        this.intGenerationCount = intGenerationCount;
        this.intGenerationSize = intGenerationSize;
        this.intGenerationEliteCount = (int) (intGenerationSize * (intGenerationEliteRatio / 100.0));
        this.intGenerationTournamentSize = (int) (intGenerationSize * (intGenerationTournamentRatio / 100.0));
        this.intMutationProbability = intMutationProbability;
       * Create a new instance of Evolution (settings loaded from settings file)
       * @param   strSettingFile  Name of file containing settings for evolution
       * @throws  IOException     File does not exist, cannot be read, etc.
       * @throws  Exception       Another exception occured during loading of file
      public Evolution(String strSettingFile)
        BufferedReader settings;
        String settingsLine;
        int intLineCounter = 0;
        int intSetting;
        try
          settings = new BufferedReader(new FileReader(strSettingFile));
          while ((settingsLine = settings.readLine()) != null)
            intLineCounter++;
            settingsLine = settingsLine.substring(0, settingsLine.indexOf("\t"));
            intSetting = Integer.parseInt(settingsLine);
            switch (intLineCounter)
              case 1:
                this.intGenerationCount = intSetting;
                break;
              case 2:
                this.intGenerationSize = intSetting;
                break;
              case 3:
                this.intGenerationEliteCount = (int) (this.intGenerationSize * (intSetting / 100.0));
                break;
              case 4:
                this.intGenerationTournamentSize = (int) (this.intGenerationSize * (intSetting / 100.0));
                break;
              case 5:
                this.intMutationProbability = intSetting;
                break;
            } //switch
          } //while
          //after reading has been completed, let's close the stream
          settings.close();
        } //try
        //IO exception - file not found, cannot be read, etc.
        catch (IOException ioe)
          System.out.println("Vyskytl se I/O probl�m p&#345;i na&#269;�t�n� zad�n� ze souboru " + strSettingFile);
        //Exception - another problem during reading of file
        catch (Exception e)
          System.out.printf("Vyskytl se n&#283;jak� divn� probl�m p&#345;i na&#269;�t�n� zad�n� ze souboru %s. V�pis vyj�mky:\n", strSettingFile);
          e.printStackTrace();
       * Vivify first generation for evolution
       * Necessary number of individuals is created with random chromosomes.
       * Their chromosomes must then be checked if they suit the assignment
       * and if not so, repaired.
      private Generation<IndividualClass> vivifyFirstGeneration()
        //create a brand-new generation
        Generation generation = new Generation<IndividualClass>(this);
        int intTemp;
        //for all individual of this generation
        for (int i = 0; i < this.intGenerationSize; i++)
    //create an individual with no chromosomes
    generation.arrIndividuals[i] = new IndividualClass(this, Problem);
          //create a set of random chromosomes
          neration.arrIndividuals.createRandomChromosomes();
    //if these chromosomes does not suit assignment, repair them
    generation.arrIndividuals[i].check();
    //sort Individuals by fitness so elite individuals get to first positions of array
    Arrays.sort(generation.arrIndividuals);
    //now count statistics for elite individuals (it is enough to count them once,
    //elite don't get changed so their statistics don't get changed either)
    this.intIndividualEliteBestFitness = Integer.MIN_VALUE;
    this.intIndividualElitesSumFitness = 0;
    this.intIndividualEliteWorstFitness = Integer.MAX_VALUE;
    //count statistics for elite individuals
    for (int i = 0; i < this.intGenerationEliteCount; i++)
    intTemp = generation.arrIndividuals[i].getFitness();
    //better fitness than best fitness so far
    if (intTemp > this.intIndividualEliteBestFitness)
    this.intIndividualEliteBestFitness = intTemp;
    //worse fitness than worst fitness so far
    else if (intTemp < this.intIndividualEliteWorstFitness)
    this.intIndividualEliteWorstFitness = intTemp;
    this.intIndividualElitesSumFitness += intTemp;
    //reset generation's statistics
    this.intIndividualBestFitness = this.intIndividualEliteBestFitness;
    this.intIndividualsSumFitness = this.intIndividualElitesSumFitness;
    this.intIndividualWorstFitness = this.intIndividualEliteWorstFitness;
    //count generation's statistics also from rest of individuals
    for (int i = this.intGenerationEliteCount; i < this.intGenerationSize; i++)
    updateGenerationStatistics(generation.arrIndividuals[i].getFitness());
    return generation;
    * Get next generation in evolution
    * Core method for all evolution; Through this method, new generation is obtained.
    * Every next generation should contain better individuals than the previous one
    * (till certain point) so with growing number of iterations in evolution, we
    * get better results (till certain point).
    * Everytime all elite individuals are copied to next generation, then hold needed number of
    * tournaments to choose a pair of good-looking individuals, cross-breed individuals in these
    * pairs, mutate them (and repair if necessary) and finally add to next generation.
    * @return Generation Next generation in evolution
    * @see Generation#tournament()
    * @see Generation#crossbreed()
    * @see Generation#mutate()
    private Generation getNextGeneration()
    Generation nextGeneration = new Generation(this);
    //number of pairs of individuals to select for next generation
    int intIndividualPairsToSelect = (this.intGenerationSize - this.intGenerationEliteCount) / 2;
    int intTemp;
    //reset generation's statistics
    this.intIndividualBestFitness = this.intIndividualEliteBestFitness;
    this.intIndividualsSumFitness = this.intIndividualElitesSumFitness;
    this.intIndividualWorstFitness = this.intIndividualEliteWorstFitness;
    //just copy all elite individuals from this generation to another
    //(they are on first positions of array of individuals)
    for (int i = 0; i < this.intGenerationEliteCount; i++)
    nextGeneration.arrIndividuals[i] = this.thisGeneration.arrIndividuals[i];
    //hold as many tournaments as necessary to select remaining number of pairs
    //of good-looking individuals for next generation (apart from the elite ones)
    for (int i = 0; i < intIndividualPairsToSelect; i++)
    this.thisGeneration.tournament();
    this.thisGeneration.crossbreed();
    this.thisGeneration.mutate();
    //add this individual in next generation
    nextGeneration.arrIndividuals[2 * i] = this.thisGeneration.nextGenerationIndividual01;
    //update statistics of generation
    updateGenerationStatistics(this.thisGeneration.nextGenerationIndividual01.getFitness());
    //add this individual in next generation
    nextGeneration.arrIndividuals[2 * i + 1] = this.thisGeneration.nextGenerationIndividual02;
    //update statistics of generation
    updateGenerationStatistics(this.thisGeneration.nextGenerationIndividual02.getFitness());
    //next generation is complete => return it
    return nextGeneration;
    * Update statistics of current generations
    * @param intFitness Fitness that may possibly update generation's statistics
    * (best fitness, worst fitness, sum of fitnesses)
    private void updateGenerationStatistics(int intFitness)
    //better fitness than best fitness so far
    if (intFitness > this.intIndividualBestFitness)
    this.intIndividualBestFitness = intFitness;
    //worse fitness than worst fitness so far
    else if (intFitness < this.intIndividualWorstFitness)
    this.intIndividualWorstFitness = intFitness;
    //update sum of fitnesses as well (for average fitness)
    this.intIndividualsSumFitness += intFitness;
    * Execute evolution process
    * Vivify first generation and then as many next generations as set in settings of evolution
    public void evolution()
    this.thisGeneration = vivifyFirstGeneration();
    //output generation's statistics
    System.out.printf("Generace 0:\t%d\t%d\t%d", this.getIndividualBestFitness(), this.getIndividualAverageFitness(), this.getIndividualWorstFitness());
    for (int i = 0; i < this.intGenerationCount; i++)
    this.nextGeneration = getNextGeneration();
    this.thisGeneration = this.nextGeneration;
    //output generation's statistics
    System.out.printf("Generace %d:\t%d\t%d\t%d", i, this.getIndividualBestFitness(), this.getIndividualAverageFitness(), this.getIndividualWorstFitness());
    * Get best fitness of all individuals in this generation
    public int getIndividualBestFitness()
    return intIndividualBestFitness;
    * Get average fitness of all individuals in this generation
    public float getIndividualAverageFitness()
    return (this.intIndividualsSumFitness / (float) this.intGenerationSize);
    * Get worst fitness of all individuals in this generation
    public int getIndividualWorstFitness()
    return intIndividualWorstFitness;
    * Get probability of mutation
    * @return Probability of mutation of each chromosome of every individual in generation (in percents)
    public int getMutationProbability()
    return intMutationProbability;

  • Missing BRF implementation class 0EV001- register Event in BRF

    Hi I am trying to get an understanding of BRF and have started working though the SAP Help and have got to the How to develop an application. I have ran reports BRF_INITIALIZE. Used tcode BRFAPL01 to create an Application, ran BRF_COPY_IMPL_CLASSES, ran BRF to define the cross app features. I have created the ABAP program to raise the BRF event.
    The problem is that when i try and register my event in BRF and follow the help it tells me to use the event implementation class 0EV001 which it says is the SAP standard. This implementation class is not in the list of classes. Infact there are no event type classes.
    Can anyone tell me where i can get the implementation class 0EV001 and how i get it into my client so i can use it?
    Thanks Trev B

    HI,
        Actually after seeing your post, i checked in 3 systems where i have done the BRF. But i couldnt find in any of them.
    So we need to create the implementation class which supports our event.
    Reward points if found helpful.
    Regards,
    Seema

  • Is it possible to access elements of a view in implementation class?

    Hi,
            In the BSP component workbench, is it possible to manipulate elements of a view (listbox, inputfields etc., hardcoded using htmlb tags) in the methods of view implementation class. For example, I have a inputfield which is initially invisible. I want to make it visible when a particular event is triggered. I wish to code this directly in the event handler method. Can anybody provide some pointers?

    Arun,
    As the UI elements (tags) do only exist during rendering phase a direct access from the view controller is not possible - especially not in the forward-oriented way from within an event handler as  indicated from you in the posting.
    However, it is of course possible to hard-code view layouts; for this approach you can use the BSP view corresponding to the view and code there whatever you like. BSP views can also contain code snippets to achieve dynamic effects. In your example it doesn't look like that you need code at all - you need to preserve the status (visible/ invisible) in a value attribute of a context node and use this value to bind visibility of the input field on the layout.
    In CRM 2007, there are two main tag libraries (aka BSP extensions) being used:
    - THTMLB (single tags, like input field, button, table, ...)
    - CHTMLB (configuration tags; these are available for forms, tables and trees)
    You should always use these tag libraries in the first place to assure common look and feel and avoid rendering issues.
    Best regards
    Peter

  • Implementation Class of Marketing BO

    Hi Gurus,
    I am facing a same problem for Marketing BO. Can you tell me from which table, we can get all implementation classes of Segmentation, campaign, Lead & their Query Objects.
    Thanks in Adv.

    Hi  Shiromani,
    I have to enhance search component of segmentation element i.e  SEGAS_SEG_HV and view ASSEG , and context node Query. The BOL object of this context is SEGSegAdvQuery . I need the implementing class of this BOL object and how can we find the implementing class of other BOL Object like SEGSeg.
    Thanks,

  • Find the implementation class of a Business object

    HI Gurus,
    Is there any path in SPRO from where we can find the implementation class of a BOL object?
    For an example, I am working with BuilHeader. The backend table for BUL Header which will be updated while modifiyng BuilHeader is BUT000. So how can we find the back end database  table name or implementation class where the table BUT000 is updated?

    Hi Suchandra Bose
    the flow will go like this.
    1) the data in the BOL structures moved to Genil Implementation Class  which is defined in the below SPRO path
    CRM->CRM Cross application components->Generic Interaction Layer/Object Layer->Basic Settings in this corresponding each and every component one Genil class and its Model information in the form of tables will be maintained.
    2) Take for example BP component , for BP component CL_CRM_BUIL is the Generic Interaction layer class , with in the generic interaction layer class methods (Create_objects, MODIFY_OBJECTS, GET_OBJECTS)  you will find a code snippet to get the * Handler class* , this handler class will inturn get the Interaction Layer classes to reach the API  ,
    get object handler
          lv_cl_object =
             me->handler_factory->get_obj_handler(
                                      iv_object_name = iv_object_name ).
    3) This handler method will query the table CRMC_OBJIMP_BUIL  to get the relevant handler class depending on which functionality you are implementing.
    Thanks & Regards
    Raj

  • Reading global attributes from implementation class

    Hi,
    How to access
                    global attributes of implementation class
                             from getter method of context node class.
    Thanks in advance,
    Srinivas.

    Hi Srinivasa,
    Access the view controller using attribute
    owner
    , Then you can access the global attributes.
    Regards,
    Masood Imrani S.

  • How to call a method in IMPL class from one context node

    Hi, I´ve been only study the posibility to access a method in the IMPL class  from one context node class...CN## without using events, is there a way to call it ??? I don´t have it as requierement just learning thanks !.

    Hi,
    Try this by following this you can get the custom controller instacne in the view context nodes, for your requirement you can keep the view implementation class instance instead of cuco..
    To get the custom controller instance in Context node getter/setter method:
    1. Declare Cuco instance reference variable in ctxt class..
    2. Set this cuco ref. in the Create context node method of ctxt class:
    try.
    gr_cucoadminh ?= owner->get_custom_controller( 'ICCMP_BTSHEAD/cucoadminh' ). "#EC NOTEXT
    catch cx_root.
    endtry.
    you can avoid this step as this is not needed in case of view isntance
    3. Assign this instance to the respective context node Create method using:
    BTStatusH->gr_cuco ?= gr_cucoadminh.  " here assign the view implementation ref. " me" instead of gr_cucoadminh
    Here gr_cuco is the ref. variable of custom controller in the respective context node for eg. BtstatusH
    Sample implementation of this can be found in
    ICCMP_BTSHEAD/BTSHeader ->context node BTACTIVITYH-> attr ->GR_CUCO(instance of cuco)
    Cheers,
    Sumit Mittal

  • SRM SC Workflow is not working as per BRF expressions

    We are having SRM 7.0 SP5
    Based on SC item values, We are determining whether the process level is required or not using BRF expressions.
    For a particular data, only 2 process levels are selected.
    But I go into debugger mode and skip one process level.
    After SC is ordered, when I see the approval process there is only one level.
    But when I come out from that SC, and go back to the same one and see, there is 2 process levels(when I am expecting only one).
    Can anyone help me out on this? Thanks.
    Edited by: BASKI ABAP on Oct 25, 2011 12:26 PM

    Hello,
    As you are only in SP 5 (last Support Package is 12), i advise you to upgrade until SP 11 or to implement all OSS notes for SRM-EBP-WFL-PC application area.
    Indeed, many, many problems occur with Process-Controlled Workflow...
    Regards.
    Laurent.

  • Over-riding the class javax.faces.context.FacesContext: SUN App Server 9.1

    The method to over ride the faces context has changed between SUN Application Server 8.2 and 9.1, as a result the instructions which were previously provided on the MyFaces wiki (http://wiki.apache.org/myfaces/Installation_and_Configuration) no longer work. What I am looking for is instructions that will allow me to use our own faces jars and not (javaee.jar) which is provided as part of the application server.
    What I need to do is to get Sun Application Server 9.1 to allow me to over ride the faces context /javax/faces/context/ with that from my local jars, in version 8.X the following steps were enough:
    Start 8.X instructions:
    1. Change the config security file so that MyFaces <http://wiki.apache.org/myfaces/MyFaces> can delete it's temporary files.
    Change permission
        java.io.FilePermission <http://wiki.apache.org/myfaces/FilePermission> "<<ALL FILES>>", "read,write";to
      java.io.FilePermission <http://wiki.apache.org/myfaces/FilePermission> "<<ALL FILES>>", "read,write,delete";2. Prevent the sun reference implementation from being used
    In your WEB-INF, create a sun-web.xml file containing
        <?xml version="1.0" encoding="UTF-8"?>
        <sun-web-app>
        <class-loader delegate="false"/>
        </sun-web-app>3. That way, myfaces classes will be loaded instead of Sun RI ones.
    And prevent MyFaces <http://wiki.apache.org/myfaces/MyFaces> from loading the Sun RI context listener
    By creating in your webapp a "fake"
    com.sun.faces.config.ConfigureListener
    <http://wiki.apache.org/myfaces/ConfigureListener> that will be loaded BEFORE the sun RI one's.
    The war file I am making available as a test case has just such a file in my case it is called fakefaces.jar
    End instructions for 8.2
    However these steps have changed for version 9.1 as following the exact same procedures does not result in the Application Server using the correct jars, the following is a test using a simple find.jsp, notice how Application Server 9.1 is still using the default jars and not the ones shipping with included as part of my testApp.
    Within the war file is a jsp called find.jsp using this I can check which jar file file is being used for any class in my case I'm interested in the the /javax/faces/context/FacesContext.class, in 9.1 it always uses teh copy from javaee.jar and never teh local copy:
    For example running: http://<ip address>:<port>/test/find.jsp?class=javax.faces.context.FacesContext
    Version 9.1 returns: file:/u01/software/Apps/SunAppServer9.1/lib/javaee.jar!/javax/faces/context/FacesContext.class
    Version 8.2 returns: file:/u01/software/Apps/SunAppServer8.2/domains/domain1/applications/j2ee-apps/TestApp/test_war/WEB-INF/lib/myfaces-api.jar!/javax/faces/context/FacesContext.class
    Hence 9.1 is still using the copy provided by SUN and not our copy.
    The code for find.jsp is:
    <%
        String className = request.getParameter("class");
        Class theClass;
        try
            theClass = Class.forName(className);
            java.net.URL url = theClass.getResource("/" + theClass.getName().replace('.', '/') + ".class");
            out.println(url.getFile());
        catch (ClassNotFoundException e)
            // TODO Auto-generated catch block
            out.println(e);
    %>-------------------------------------------------
    Any idea how to over-ride the FacesContext class in version 9.1 to allow for similar functionality as 8.X
    Thanks,
    ERIC GANDT

    Alright, I've narrowed it down to my Customization Class. I attempted to have my customization class PortalCC in a JAR file, excluded it from the WAR file and added the JAR in the lib directory of the EAR file, as described on:
    http://docs.oracle.com/cd/E23943_01/web.1111/e16272/deploy_java_ee_app.htm#CHDGGFEB

  • ServletContextProvider Implementation class for Apache Struts Bridge in OAS

    Hello,
    I am using Apache Struts Bridge to create JSR-168 portlets, based on Struts.
    But I am stuck in one point... i.e. maybe oracle doesnot provide a implementaion for the ServletContextProvider interface, which is required by the struts bridge, inorder to get the servlet context.
    Other Portal Servers like, Pluto, etc... provide a implementation class for this.
    I have heard that, if a Implementation class can be written for this, then the problem will be solved.
    Have any one faced any such situation? Have any one implemented the ServletContextProvider interface for OC4J....
    Any Help would be highly appreciated.
    Thanks
    Sam...

    I was able to find that class by downloading the Oracle Portlet Container 10.1.2.0.2 and following the instructions for extracting it into my OC4J. When you do that it will give you a file called ${OC4J_HOME}/shared-lib/oracle.wsrp/1.0/wsrp-container.jar. That jar file contains the class you need.
    Oracle Portlet Container 10.1.2.0.2: http://download.oracle.com/otndocs/tech/ias/portal/files/portlet-container.zip
    PDK Page: http://www.oracle.com/technology/products/ias/portal/pdk.html

  • Why can't I extend Container and then use Canvas/Panel in implementing classes?

    I have several components that I'm dynamically adding to a component by building it from a class name...
    var pmt:Prompt = UiHelper.instantiateUsingClassName([email protected]());
    myLayout.addChild(pmt as DisplayObject);
    I want all my components to extend "Prompt" in a generic way so that in each implementing class I can use Canvas, Panel, etc.
    I thought I could just make Prompt extend Container but they won't show up if I use Container, even if in my implementing Prompt components I use a Panel or Canvas.
    However, if i change the base Prompt class to extend Canvas, then things show up... but that seems annoying to 'have' to use a Canvas as my base class object? Is there another type of object I should be extending?

    If your condo is pre-wired for Ethernet, you may be better situated to configure your AirPorts for a roaming network that a wireless-extended one. The only issue, of course, would be the room that does NOT have an Ethernet jack.
    The issue, as you pointed out, is the combination of the building construction material and the additional nearby Wi-Fis that are providing a "deadly" RF noise mix/obstructions to any of your AirPorts' signal.
    With a roaming network, each AirPort would be connected to Ethernet back to a central router and each AirPort, in turn, would be reconfigured as basic Wireless Access Points to feed wireless at the location ... mostly only within the room the WAP is located in because of the wall material.

  • Error while activating the Implementation class of a BADI ?

    Hello,
    I am trying to activate a BADIi but its implementation class(ZCL_IM_DSD_ADD_CUST_IN_DNL) is not getting activated and giving the following object error on activation.
    CPUB     ZCL_IM_DSD_ADD_CUST_IN_DNL
    and it says that  "INCLUDE report "ZCL_IM_DSD_ADD_CUST_IN_DNL====CL" not found , where "DSD_ADD_CUST_IN_DNL" is the Impl. name of the definition "/DSD/ME_BAPI"  implementing the interface "/DSD/IF_EX_ME_BAPI".
    what am i missing here. Big time help will be extremely appreciated ..
    Thanks a ton.

    Hi,
    I had a quick qn,
    Normally, the implementation name should start with Z. Can you create using the name 'DSD_ADD_CUST_IN_DNL' ? or are you using any access key (SSCR)?
    For the infm, I have just tried to create one Z  implementation in my system and it works fine. Could you please delete the current implementation and try it once again ?
    Regards,
    Selva K.

Maybe you are looking for