Observer Design Pattern: Looking for redesign ABAP OO code example

Hello folks,
I am looking for an example for ABAP OO code that has been redesigned by applying the Observer Design Pattern. I would be very interested in both the code before as well as the code after the pattern is being applied.
Thanks in advance and kind regards, Alex

Observer can be implemented using the EVENTS.
I had recently implemented the observer at one of my client's place. I had screen with so many ALVs. One ALV was kind of editable and other were just showing the information of the current row as well as some total information. So, initially I started with the Main ALV and SUB(1 and 2) for other ALVs. Now, when I need to refresh my ALVs based on the main ALV data, I had to explicitly update the data of the each Sub ALV. The code was kind of static and requirement was not yet fixed.
Later on we need to add one more ALV on the same screen. It was easy to change the existing method where I was doing the explicit refresh of each ALV. But I thought of using the Events.
I created an event REFRESH_DETAILS for main ALV. so, when data gets changed (which I was catching by DATA_CHANGED event of ALV), I raise the event.
  RAISE EVENT REFRESH_DETAILS
    exporting new_data = it_Data.
In Sub ALVs, I created the event handler method to handle the event REFRESH_DETAILS of the main ALV.
  methods: handle_refresh_details
      for event REFRESH_DETAILS of ZCL_MAIN_ALV.
I also had to register the Handler.
  SET HANDLER me->handle_refresh_details FOR ALL INSTANCES.
I'll soon write a post on my [ABAP Help blog|http://help-abap.zevolving.com/] with all the details.
Regards,
Naimesh Patel

Similar Messages

  • When I use SmartSync Notifier/ Observer design pattern

    Hi all,
    I have development a simple SmartSync Application with S01 syncBO type.
    I not use SmartSync Notifier/ Observer design pattern  for read the local syncbo and local delta.
    When I have to use and I have to implement the SmartSync Notifier/ Observer design pattern ?

    Hi Rocco,
    <b>SmartSync uses Notifier/Observer design pattern for applications to access inbox/outbox. Application has a read-access to the passed SyncBoOutDelta instance during the notification</b>
    The usage of this API depending upon your custom requirement. If u want to monitor the number of new records(for example sales or like thAT) u have created in the client device , then that delta records will be there in the Smart Sync Outbox. If u want to monitor this new records then u have to use the API related with (Outbox - SyncBoOutDelta)..
    Then comes the Inbox.The new records came from the Server will be there in the inbox of the MI client. This new records may be the response of number of new records u ahve created in the client device . If u want to monitor the number of new records that has downloaded to the MI client , then u have to make use of the SmartSyncInboxDelta..
    Using this APIs , u can also find out the errors happened during the particular synchronization. For this APIs are also available...
    refer these helps also..
    SyncBoChange
    This interface is the base interface to describe SyncBo delta change. Application should not use the interface directly, instead, use its sub interfaces - SyncBoInDelta, SyncBoOutDelta.
    http://media.sdn.sap.com/public/html/submitted_docs/MI/MDK_2.5/content/javadoc/com/sap/ip/me/api/smartsync/SyncBoChange.html
    SyncBoInDelta
    http://media.sdn.sap.com/public/html/submitted_docs/MI/MDK_2.5/content/javadoc/com/sap/ip/me/api/smartsync/SyncBoInDelta.html
    SyncBoInDelta is used to apply SyncBo delta data from backend to client. The SyncBoInDelta could may be a delta data from either the backend or other devices, or a response to the previously uploaded SyncBoOutDelta from the client, which can be distinguisehd by the SyncReply information included within the SyncBoInDelta
    SyncBoOutDelta
    SmartSync uses Notifier/Observer design pattern for applications to access inbox/outbox. Application has a read-access to the passed SyncBoOutDelta instance during the notification
    http://media.sdn.sap.com/public/html/submitted_docs/MI/MDK_2.5/content/javadoc/com/sap/ip/me/api/smartsync/SyncBoOutDelta.html
    Regards
    Kishor Gopinathan

  • Confusion about observer design pattern

    Hi all,
    I have a case related to observer design pattern and I feel a bit confusion.
    Suppose there is a gui class which consists of 2 buttons connect and disconnect to the network and a socket class handling these two operations. Then socket class will inform the gui class if the operation is success or not. By applying the observer design pattern. gui class is observer and socket class is obserable. however I feel confusion as observer will send a command e.g. connect to observable.

    dophine wrote:
    my confusion is that the observer is the event source not the listernerIt is an observer but it also takes another role: the controller of the observable.
    kind regards,
    Jos

  • New(?) pattern looking for a good home

    Hi everyone, this is my second post to sun forums about this, I initially asked people for help with the decorator and strategy pattern on the general Java Programming forum not being aware that there was a specific section for design pattern related questions. Since then I refined my solution somewhat and was wondering if anyone here would take a look. Sorry about the length of my post, I know it's best to keep it brief but in this case it just seemed that a fully functional example was more important than keeping it short.
    So what I'd like to ask is whether any of you have seen this pattern before and if so, then what is it called. I'm also looking for some fresh eyes on this, this example I wrote seems to work but there are a lot of subtleties to the problem so any help figuring out if I went wrong anywhere is greatly appreciated. Please do tell me if you think this is an insane approach to the problem -- in short, might this pattern have a chance at finding a good home or should it be put down?
    The intent of the pattern I am giving below is to modify behavior of an object at runtime through composition. In effect, it is like strategy pattern, except that the effect is achieved by wrapping, and wrapping can be done multiple times so the effect is cumulative. Wrapper class is a subclass of the class whose instance is being wrapped, and the change of behavior is accomplished by overriding methods in the wrapper class. After wrapping, the object "mutates" and starts to behave as if it was an instance of the wrapper class.
    Here's the example:
    public class Test {
         public static void main(String[] args) {
              double[] data = { 1, 1, 1, 1 };
              ModifiableChannel ch1 = new ModifiableChannel();
              ch1.fill(data);
              // ch2 shifts ch1 down by 1
              ModifiableChannel ch2 = new DownShiftedChannel(ch1, 1);
              // ch3A shifts ch2 down by 1
              ModifiableChannel ch3A = new DownShiftedChannel(ch2, 1);
              // ch3B shifts ch2 up by 1, tests independence from ch3A
              ModifiableChannel ch3B = new UpShiftedChannel(ch2, 1);
              // ch4 shifts ch3A up by 1, data now looks same as ch2
              ModifiableChannel ch4 = new UpShiftedChannel(ch3A, 1);
              // print channels:
              System.out.println("ch1:");
              printChannel(ch1);
              System.out.println("ch2:");
              printChannel(ch2);
              System.out.println("ch3A:");
              printChannel(ch3A);
              System.out.println("ch3B:");
              printChannel(ch3B);
              System.out.println("ch4:");
              printChannel(ch4);
         public static void printChannel(Channel channel) {
              for(int i = 0; i < channel.size(); i++) {
                   System.out.println(channel.get(i) + "");
              // Note how channel's getAverage() method "sees"
              // the changes that each wrapper imposes on top
              // of the original object.
              System.out.println("avg=" + channel.getAverage());
    * A Channel is a simple container for data that can
    * find its average. Think audio channel or any other
    * kind of sampled data.
    public interface Channel {
         public void fill(double[] data);
         public double get(int i);
         public double getAverage();
         public int size();
    public class DefaultChannel implements Channel {
         private double[] data;
         public void fill(double[] data) {
              this.data = new double[data.length];
              for(int i = 0; i < data.length; i++)
                   this.data[i] = data;
         public double get(int i) {
              if(i < 0 || i >= data.length)
                   throw new IndexOutOfBoundsException("Incorrect index.");
              return data[i];
         public double getAverage() {
              if(data.length == 0) return 0;
              double average = this.get(0);
              for(int i = 1; i < data.length; i++) {
                   average = average * i / (i + 1) + this.get(i) / (i + 1);
              return average;
         public int size() {
              return data.length;
    public class ModifiableChannel extends DefaultChannel {
         protected ChannelModifier modifier;
         public void fill(double[] data) {
              if (modifier != null) {
                   modifier.fill(data);
              } else {
                   super.fill(data);
         public void _fill(double[] data) {
              super.fill(data);
         public double get(int i) {
              if(modifier != null)
                   return modifier.get(i);
              else
                   return super.get(i);
         public double _get(int i) {
              return super.get(i);
         public double getAverage() {
              if (modifier != null) {
                   return modifier.getAverage();
              } else {
                   return super.getAverage();
         public double _getAverage() {
              return super.getAverage();
    public class ChannelModifier extends ModifiableChannel {
         protected ModifiableChannel delegate;
         protected ModifiableChannel root;
         protected ChannelModifier tmpModifier;
         protected boolean doSwap = true;
         private void pre() {
              if(doSwap) { // we only want to swap out modifiers once when the
                   // top call in the chain is made, after that we want to
                   // proceed without it and finally restore doSwap to original
                   // state once ChannelModifier is reached.
                   tmpModifier = root.modifier;
                   root.modifier = this;
                   if(delegate instanceof ChannelModifier)
                        ((ChannelModifier)delegate).doSwap = false;
         private void post() {
              if (doSwap) {
                   root.modifier = tmpModifier;
              } else {
                   if(delegate instanceof ChannelModifier)
                             ((ChannelModifier)delegate).doSwap = true;
         public ChannelModifier(ModifiableChannel delegate) {
              if(delegate instanceof ChannelModifier)
                   this.root = ((ChannelModifier)delegate).root;
              else
                   this.root = delegate;
              this.delegate = delegate;
         public void fill(double[] data) {
              pre();
              if(delegate instanceof ChannelModifier)
                   delegate.fill(data);
              else
                   delegate._fill(data);
              post();
         public double get(int i) {
              pre();
              double result;
              if(delegate instanceof ChannelModifier)
                   result = delegate.get(i);
              else
                   result = delegate._get(i);
              post();
              return result;
         public double getAverage() {
              pre();
              double result;
              if(delegate instanceof ChannelModifier)
                   result = delegate.getAverage();
              else
                   result = delegate._getAverage();
              post();
              return result;
         public int size() {
              //for simplicity no support for modifying size()
              return delegate.size();
    public class DownShiftedChannel extends ChannelModifier {
         private double shift;
         public DownShiftedChannel(ModifiableChannel channel, final double shift) {
              super(channel);
              this.shift = shift;
         @Override
         public double get(int i) {
              return super.get(i) - shift;
    public class UpShiftedChannel extends ChannelModifier {
         private double shift;
         public UpShiftedChannel(ModifiableChannel channel, final double shift) {
              super(channel);
              this.shift = shift;
         @Override
         public double get(int i) {
              return super.get(i) + shift;
    Output:ch1:
    1.0
    1.0
    1.0
    1.0
    avg=1.0
    ch2:
    0.0
    0.0
    0.0
    0.0
    avg=0.0
    ch3A:
    -1.0
    -1.0
    -1.0
    -1.0
    avg=-1.0
    ch3B:
    1.0
    1.0
    1.0
    1.0
    avg=1.0
    ch4:
    0.0
    0.0
    0.0
    0.0
    avg=0.0

    jduprez wrote:
    Hello,
    unless you sell your design better, I deem it is an inferior derivation of the Adapter pattern.
    In the Adapter pattern, the adaptee doesn't have to be designed to support adaptation, and the instance doesn't even know at runtime whether it is adapted.
    Your design makes the "modifiable" class aware of the modification, and it needs to be explicitly designed to be modifiable (in particular this constrains the implementation hierarchy). Overall DesignPattern are meant to provide flexibility, your version offers less flexibility than Adapter, as it poses more constraint on the modifiable class.
    Another sign of this inflexibility is your instanceof checks.
    On an unrelated note, I intensely dislike your naming choice of fill() vs _fill()+, I prefer more explicit names (I cannot provide you one as I didn't understand the purpose of this dual method, which a good name would have avoided, by the way).
    That being said, I haven't followed your original problem, so I am not aware of the constraints that led you to this design.
    Best regards,
    J.
    Edited by: jduprez on Mar 22, 2010 10:56 PMThank you for your input, I will try to explain my design better. First of all, as I understand it the Adapter pattern is meant to translate one interface into another. This is not at all what I am trying to do here, I am trying to keep the same interface but modify behavior of objects through composition. I started thinking about how to do this when I was trying to apply the Decorator pattern to filter some data. The way I would do that in my example here is to write an AbstractChannelDecorator that delegates all methods to the Channel it wraps:
    public abstract class AbstractChannelDecorator implements Channel {
            protected Channel delegate;
    ...// code ommitted
         public double getAverage() {
              return delegate.getAverage();
    ...// code ommitted
    }and then to filter the data I would extend it with concrete classes and override the appropriate methods like so:
    public class DownShiftedChannel extends AbstractChannelDecorator {
         ...// code ommitted
         public double get(int i) {
              return super.get(i) - shift;
           ...// code ommitted
    }(I am just shifting the data here to simplify the examples but a more realistic example would be something like a moving average filter to smooth the data).
    Unfortunately this doesn't get me what I want, because getAverage() method doesn't use the filtered data unless I override it in the concrete decorator, but that means I will have to re-implement the whole algorithm. So that's pretty much my motivation for this, how do I use what on the surface looks like a Decorator pattern, but in reality works more like inheritance?
    Now as to the other points of critique you mentioned:
    I understand your dislike for such method names, I'm sorry about that, I had to come up with some way for the ChannelModifier to call ModifiableChannel's super's method equivalents. I needed some way to have the innermost wrapped object to initiate a call to the topmost ChannelModifier, but only do it once -- that was one way to do it. I suppose I could have done it with a flag and another if/else statement in each of the methods, or if you prefer, the naming convention could have been fill() and super_fill(), get() and super_get(), I didn't really think that it was that important. Anyway, those methods are not meant to be used by any other class except ChannelModifier so I probably should have made them protected.
    The instanceof checks are necessary because at some point ChannelModifier instance runs into a delegate that isn't a ChannelModifier and I have to somehow detect that, because otherwise instead of calling get() I'd call get() which in ModifiableChannel would take me back up to the topmost wrapper and start the whole call chain again, so we'd be in infinite recursion. But calling get() allows me to prevent that and go straight to the original method of the innermost wrapped object.
    I completely agree with you that the example I presented has limited flexibility in supporting multiple implementations. If I had two different Channel implementations I would need two ModifiableChannel classes, two ChannelModifiers, and two sets of concrete implementations -- obviously that's not good. Not to worry though, I found a way around that. Here's what I came up with, it's a modification of my original example with DefaultChannel replaced by ChannelImplementation1,2:
    public class ChannelImplementation1 implements Channel { ... }
    public class ChannelImplementation2 implements Channel { ... }
    // this interface allows implementations to be interchangeable in ChannelModifier
    public interface ModifiableChannel {
         public double super_get(int i);
         public double super_getAverage();
         public void setModifier(ChannelModifier modifier);
         public ChannelModifier getModifier();
    public class ModifiableChannelImplementation1
              extends ChannelImplementation1
              implements ModifiableChannel {
         ... // see DefaultChannel in my original example
    public class ModifiableChannelImplementation2
              extends ChannelImplementation1
              implements ModifiableChannel { ...}
    // ChannelModifier is a Channel, but more importantly, it takes a Channel,
    // not any specific implementation of it, so in effect the user has complete
    // flexibility as to what implementation to use.
    public class ChannelModifier implements Channel {
         protected Channel delegate;
         protected Channel root;
         protected ChannelModifier tmpModifier;
         protected boolean doSwap = true;
         public ChannelModifier(Channel delegate) {
              if(delegate instanceof ChannelModifier)
                   this.root = ((ChannelModifier)delegate).root;
              else
                   this.root = delegate;
              this.delegate = delegate;
         private void pre() {
              if(doSwap) {
                   if(root instanceof ModifiableChannel) {
                        ModifiableChannel root = (ModifiableChannel)this.root;
                        tmpModifier = root.getModifier();
                        root.setModifier(this);
                   if(delegate instanceof ChannelModifier)
                        ((ChannelModifier)delegate).doSwap = false;
         private void post() {
              if (doSwap) {
                   if(root instanceof ModifiableChannel) {
                        ModifiableChannel root = (ModifiableChannel)this.root;
                        root.setModifier(tmpModifier);
              } else {
                   if(delegate instanceof ChannelModifier)
                             ((ChannelModifier)delegate).doSwap = true;
         public void fill(double[] data) {
              delegate.fill(data);
         public double get(int i) {
              pre();
              double result;
              if(delegate instanceof ModifiableChannel)
    // I've changed the naming convention from _get() to super_get(), I think that may help show the intent of the call
                   result = ((ModifiableChannel)delegate).super_get(i);
              else
                   result = delegate.get(i);               
              post();
              return result;
         public double getAverage() {
              pre();
              double result;
              if(delegate instanceof ModifiableChannel)
                   result = ((ModifiableChannel)delegate).super_getAverage();
              else
                   result = delegate.getAverage();
              post();
              return result;
         public int size() {
              return delegate.size();
    public class UpShiftedChannel extends ChannelModifier { ...}
    public class DownShiftedChannel extends ChannelModifier { ... }

  • Looking for an ABAP Objects e-learning course

    Does anyone know of any abap objects e-learning courses that are available? I checked with sap university, and they only offer the BC 401 customer course. I'm looking for a course for beginners. I found an advanced course that has been recoreded in Germany, but it is an advanced course for developers with experience in abap objects.  Thanks! Allison McCloskey

    Some documentation related with OOPs Abao :
    ALV Gird Control (BC-SRV-ALE)
    SAP Container
    SAP Control Framework
    or Thread New To OOPs ABAP
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    General Tutorial for OOPS
    check all the below links
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    Check these links.
    http://www.henrikfrank.dk/abapuk.html
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
    Go through the below links,
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    OO ABAP links:
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    go through these links
    http://www.erpgenie.com/abap/index.htm
    http://sic.fh-lu.de/sic/bic.nsf/(vJobangebote)/EC8AD2AE0349CE92C12572200026FDB8/$File/Intern%20or%20Working%20Student%20as%20ABAB%20OO%20Developer.pdf?Open
    http://help.sap.com/saphelp_nw2004s/helpdata/en/43/41341147041806e10000000a1553f6/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ABAP_OBJECTS_ENJOY_0 Template for Solutions of ABAP Object Enjoy Course
    ABAP_OBJECTS_ENJOY_1 Model Solution 1: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_2 Model Solution 2: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_3 Model Solution 3: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_4 Model Solution 4: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_5 Model Solution 5: ABAP Objects Enjoy Course
    DEMO_ABAP_OBJECTS Complete Demonstration for ABAP Objects
    DEMO_ABAP_OBJECTS_CONTROLS GUI Controls on Screen
    DEMO_ABAP_OBJECTS_EVENTS Demonstration of Events in ABAP Objects
    DEMO_ABAP_OBJECTS_GENERAL ABAP Objects Demonstration
    DEMO_ABAP_OBJECTS_INTERFACES Demonstration of Interfaces in ABAP Objects
    DEMO_ABAP_OBJECTS_METHODS Demonstration of Methods in ABAP Objects
    DEMO_ABAP_OBJECTS_SPLIT_SCREEN Splitter Control on Screen
    check the below links lot of info and examples r there
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ALVOOPS
    http://www.abap4.it/download/ALV.pdf
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
    http://www.erpgenie.com/abap/controls/alvgrid.htm
    OOPS with ABAP
    https://www.sdn.sap.com/irj/sdn/wiki?path=/pages/viewpage.action&pageid=37566
    /people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
    http://www.sapgenie.com/abap/OO/
    For understanding COntrol Frameworks in OO ABAP, check this.
    http://www.sapgenie.com/abap/controls/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com.
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    ALVOOPS
    http://www.erpgenie.com/abap/controls/alvgrid.htm
    OOPS with ABAP
    https://www.sdn.sap.com/irj/sdn/wiki?path=/pages/viewpage.action&pageid=37566
    /people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
    http://www.sapgenie.com/abap/OO/
    For understanding COntrol Frameworks in OO ABAP, check this.
    http://www.sapgenie.com/abap/controls/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com.
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Regarding  ALV Grid  Control using OOPs concepts
    Regarding  ALV Grid  Control using OOPs concepts
    OOPS – OO ABAP
    http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    DIRLL DOWN AND INTERACTIVE REPORT
    http://www.sap-img.com/abap/difference-between-drilldown-report-and-interactive-report.htm
    PAGE BREAK FOR ALV LIST
    check out this link
    http://www.abap4.it/download/ALV.pdf
    good book on ABAP objects(OOPS)
    http://www.esnips.com/doc/bc475662-82d6-4412-9083-28a7e7f1ce09/Abap-Objects---An-Introduction-To-Programming-Sap-Applications
    How to check Cluster Table Data
    https://forums.sdn.sap.com/click.jspa?searchID=5215473&messageID=3520315
    http://www.sap-img.com/abap/the-different-types-of-sap-tables.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    Rewards if useful...............
    Minal

  • Looking for mock ABAP project.

    Hi All,
    I am trying to learn ABAP on my own and completed most practices in last 2 months. Now I am looking for some sample mock projects which are complex in nature and would allow me to get my hands dirty. Any feedback is appreciated.
    Cheers..
    Umya

    Hi,
    WELCOME TO SDN..
    Check out this thread..
    ABAP BASIC
    Regards,
    Santosh

  • Looking for an ABAP Trick

    Hi All,
    I have two internal tables say it_itab1 and it_itab2.
    it_itab1 have distinct sale order numbers and it_itab2 contains the material numbers with the sale order numbers.
    Now in the output i need those lines from it_itab2 which material numbers common amongst all the sale order numbers in it_itab1.
    Any trick????????
    \[removed by moderator\]
    Note: I am looking for minimising the loops.
    Regards,
    Prakash Pandey
    Edited by: Jan Stallkamp on Nov 28, 2008 2:13 PM

    TYPE-POOLS SLIS.
    TYPES: BEGIN OF T_VBAK,
            VBELN TYPE VBAK-VBELN,                       "Sales Document,
           END OF T_VBAK.
    TYPES: BEGIN OF T_VBAP,
            VBELN TYPE VBAK-VBELN,                       "Sales Document,
            MATNR     TYPE VBAP-MATNR,                       "Material Number
           END OF T_VBAP.
    TYPES: BEGIN OF T_FINAL,
            VBELN TYPE VBAK-VBELN,                       "Sales Document,
            MATNR     TYPE VBAP-MATNR,                       "Material Number
           END OF T_FINAL.
    DATA: IT_VBAK TYPE STANDARD TABLE OF T_VBAK WITH HEADER LINE,
          IT_VBAP TYPE STANDARD TABLE OF T_VBAP WITH HEADER LINE,
          IT_FINAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
          IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    SELECT-OPTIONS: S_VBELN FOR IT_VBAK-VBELN.
    SELECT VBELN FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN S_VBELN.
    IF SY-SUBRC = 0.
      SORT IT_VBAK[] BY VBELN.
    ENDIF.
    IF NOT IT_VBAK[] IS INITIAL.
      SELECT VBELN MATNR FROM VBAP INTO TABLE IT_VBAP FOR ALL ENTRIES IN IT_VBAK WHERE VBELN = IT_VBAK-VBELN.
      IF SY-SUBRC = 0.
        SORT IT_VBAP[] BY VBELN.
      ENDIF.
    ENDIF.
    LOOP AT IT_VBAP .
      READ TABLE IT_VBAK WITH  KEY VBELN = IT_VBAP-VBELN.
      IF SY-SUBRC = 0.
        IT_FINAL-VBELN = IT_VBAK-VBELN.
        IT_FINAL-MATNR = IT_VBAP-MATNR.
        APPEND IT_FINAL.
      ENDIF.
    ENDLOOP.
    SORT IT_FINAL[] BY MATNR.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'VBELN'.
    APPEND WA_FIELDCAT TO  IT_FIELDCAT.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
      I_CALLBACK_PROGRAM             = ' '
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      I_STRUCTURE_NAME               =
      IS_LAYOUT                      =
       IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      IR_SALV_LIST_ADAPTER           =
      IT_EXCEPT_QINFO                =
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = IT_FINAL
    EXCEPTIONS
       PROGRAM_ERROR                  = 1
       OTHERS                         = 2
    IF SY-SUBRC <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • Looking for Dynamic IDM Scoping Model Examples

    I'm looking for some good white papers, books or blogs on designing organizational scoping models for IDM. Primaryly I'm looking for examples in the area of:
    * Dynamic User Scoping
    * Converting Matrix organizations into IDM Scoping Model
    * Converting Fluid organization Structures into an IDM Scoping Model.
    What I would like to see is the problem statement, the logic used to create the final IDM design, and the supporting workflow and rules used to support the final design.
    Because I have asked for the moon, I might as well ask for the rest of the planet system -- I would love have a working model to load and play with.
    Thanks

    I'm looking for some good white papers, books or blogs on designing organizational scoping models for IDM. Primaryly I'm looking for examples in the area of:
    * Dynamic User Scoping
    * Converting Matrix organizations into IDM Scoping Model
    * Converting Fluid organization Structures into an IDM Scoping Model.
    What I would like to see is the problem statement, the logic used to create the final IDM design, and the supporting workflow and rules used to support the final design.
    Because I have asked for the moon, I might as well ask for the rest of the planet system -- I would love have a working model to load and play with.
    Thanks

  • Looking for email address stripping code

    Hiya,
    I'm looking for a piece of CF code that strips email
    addresses from a string. It needs to be smart, so that various
    patterns can be detected and stripped.
    Ex: [email protected], email at domain dot com, email@ domain
    .com, email at domain.com, etc....
    Does anybody know if somethng like this already exists?
    Thanks.

    Ahhh. so you filter the postings to remove their attempt to
    circumvent the sharing of email addresses? Got it.
    All I can say is, good luck to ya. If people want to share
    that kind of information, they will! Just out of curiosity, why
    would you even attempt to prevent people from sharing their very
    own contact information? Note that I am not arguing, rather curious
    about what valid reason anyone would have for attempting to prevent
    people from doing what they want with their own information.
    What I might suggest is.... Since you probably have their
    email address on file from when they registered (at least one of
    their email addresses anyway) you should be able to do an
    intelligent search for strings that are similar to the email
    address that you have on file. So, as opposed to starting with
    *nothing* and looking for things that *might* be an intentionally
    obfuscated email address, you are least starting with
    *something*.

  • Struts using DAO Design Pattern ..?Please give an example..... URGENT......

    Dear all,
    I have to develop an application in Struts by using DAO design pattern ..........
    Please give an example on Struts using DAO...................
    Thank you
    Please

    I'm glad you asked. It means Read The Flaming Manual. That'd be the struts manual by the way.

  • Web design company looking for iPad app to display my portfolio at a trade show

    I run a small web development business and have my first trade show coming up. I'll have a booth setup and was hoping to have my iPad out on the table for people to pick up and scroll through my portoflio (ie web designs, logo concepts, etc.). I've seen this app:
    Portfolio for iPad
    http://itunes.apple.com/us/app/portfolio-for-ipad/id384210950?mt=8
    which looks great but I was wondering if anyone else had other options. I like the idea that the above app allows you to lock the device so that users can only scroll through the portfolio and need a PIN to do anything else.
    I don't have much experience with the iPad as I just got it and I don't do any app development. Any advice would be greatly appreciated. Thanks in advance for any and all help!

    Locking the iPad so that a user can't exit an app isn't possible for any developer to implement, since the developer kit doesn't provide that sort of access to the low-level routines in iOS. The only way to lock into a single app is to use a case/frame that covers the Home button (and turn off the gesture support in the settings in iOS 5).  A number of companies make kiosk mounts for this purpose.
    Regards.

  • Looking for an ABAP-code for the customer-Exit Variable

    Hello,
    I have defined a Variable (Interval) which should be processed through Customer-Exit on characteristic Supplier-Date (date format). This Customer-Exit Variable is called ZDATE.
    We have another time characteristic Fiscal year / period (0FISCPER) which has single mandatory input variable for ex.  003.2011. This input variable is called ZFISCPER.
    Now I have to write an ABAP-Code where the customer exit variable ZDATE is derived (fiscal last year to last period) from input variable ZFISCPER in INCLUDE ZXRSRU01.
    Means when the input variable (ZFISCPER) is 003.2011 then the customer exit variable ZDATE should be calculated in INCLUDE ZXRSRU01 as 01.01.2010 u2013 28.02.2011 (fiscal last year to last period).
    Since I am quite new in ABAP, I will be grateful if you could write me sample ABAP for this.
    Many thanks.

    Hi,
    should be something like:
    DATA: l_s_range TYPE rsr_s_rangesid,
    input LIKE sy-datum.
    When 'ZDATE'
    CONCATENATE '0101' 0FISCPER+3(4)-1 into l_s_range-low. "You get 01012010
    CONCATENATE '01' Fiscper+1(6) into input.                            "You get 01032011
    l_s_range-high = input-1.                                                     "You get 28022011
    APPEND l_s_range TO e_t_range.
    Greetings
    Roman

  • Design Patterns needed for SAP XI

    Hi

    hi,
    Here are the general step for designing for file to r/3 integration using IDOC,RFC
    After doing this ull get good idea abt the sap xi designing
    To Configure the FILE TO SAP R/3 OR SAP R/3 TO FILE, proceed as follows:
    Step1:Repository
    1      From the Integration Builder page, select “Integration Repository”. This will launch the Java Web Start Application. Log with the User id and password from the  Integration Server.
    2.      Choose Tools->Transfer from System Landscape Directory->Import Software Component Versions
            From the list of Software Component Versions, Choose your own software component version .Click Import.
    3      On the left hand side frame ,software components will appear .Select your own software component. Open your own software component. Double click on this  software component. A screen will appear .Switch to display mode. After doing this first add  a namespace under Namespaces.
            The namespace should always begin with urn:
    4.     Then choose the Radio Button ->Import of RFC AND IDOC interfaces from SAP systems permitted
         After this specify the connection parameters to the R/3 system:
         System  : Name of sap R/3 system
         Client     : Sap R/3 client number
         These two fields are mandatory. You must Specify these fields.
         Then Save it. The new namespace will be visible under software component version node in the left frame.
         Under the namespace node,  you will find the section Imported Objects. Right click on it and choose Import of sap objects. A wizard will display. In the wizard provide the following details.
    Application server:IP address of sap r/3 system.
    System number: Number of sap r/3.
    User name: user name of sap r/3 .
    Password: Password of sap r/3 system.
            Then click continue .You will find IDOC and RFC node. Click on this node and select the   Idoc or Rfc which is to be imported from R/3. Click Finish to start the Import. Close the wizard. After doing this the   Rfc and  Idoc will be available into XI as Message types. So no need to create any Rfc or Idoc Structure. We need to create a structure for file only.
    5.      Under your namespace in the left frame, expand the node “Interface objects”. You will find a node “DATA TYPES”
    6       Create new data types.
            Right click on “Data types” and select “New”.  Give a suitable name to Data Type(DT_datatype). In the data type Editor ,Create a structure having Elements of type String  ,  integer,  Boolean , Float etc as per the requirement.
            Save the object.
    6.2     The Import function for XSD  files enables you to upload message definitions from external sources. The object type “External Definition” is a container to make external definitions available in the Integration Repository.. While Importing the XSD files from “External Definition “
            no need to create Data types. They are imported directly as Message types.
            To do so, In the left hand frame  Under  ” Interface objects” Create a new object of type “External Definition” and give name to it.
         Select the following.
    Category: XSD.
    Messages: From All Available Global Elements.
    File: Here we need to specify the file name(file.xsd)
         Once the XSD is imported, click on “Message” tab , You should be able to see 2 messages(Request and Response)
    7.       Create a new Message  Type.
    7.1      In the left hand frame under “Interface objects”, right click on the “Message types” and select new.
    7.2      Give a suitable name to the Message type.(MT_ messagetype).
    7.3      For the section “Data type used” you can go to input help (F4) or Search help provided and choose your data type (DT_datatype) from there.
             Save it.
    8.         Create a “Message interface” from the left frame and name(MI_ messageinterface) it.The interface Should be  Inbound or Outbound and mode should be Asynchronous  .It should reference your Message type(Use F4 or Search help).
               Save it.
    9.         Create a graphical mapping  between the target document and the sender .
    9.1        In the left hand frame ,expand “Mapping objects”. Right click on “Message mapping” and name it.You are now in a graphical editor.The Source message is on left, the Target message is on right.
    9.2        As Source message select  your own Idoc , Rfc  or Message type.You can choose “Search  for Integration Object”.As a reminder you can find your Idoc or Rfc under Software Component-  >     Namespace->Imported Objects.
    9.3       As Target Message you can choose your Message type or Idoc, Rfc .Choose “Search  for Integration Object”.
    9.4      Now that we have defined the  Source and Target message, we can start defining the Mapping rules.
    9.5       Map the fields of  Source document  to the equivalent fields in  Target document .This can be achieved easily by locating the field in Target document and then Drag and Drop the   Source fields to the respective Target Fields.
         Save It.
         You can also Test your Mapping by selecting the Test Tab.
    9.6     Fill in the values in the Idoc fields and click Start Transformation. On the right hand side you will see Target Document populated with the appropriate Values.
    10.      Create an “Interface Mapping”.
         In the left hand Frame  expand “Mapping objects”. Right Click on “Interface Mapping” and  Name it. You are in a Interface Mapping Editor .Assign the following References.
    Source interface : Your Outbound Interface (Idoc from the Software component Version).You can Choose” Search  for Integration Object”.
    Target interface:    Your Inbound Interface( The Target document interface).
         Then Select  Read Interface and Assign your “ Mapping Program” .
    Mapping Program: Your Message mapping.
         Then Save it.
    11.      Finally , in the left hand frame ,go to your change list and Activate it.
    Rewards points if helpful
    Vikas

  • Observer/Observable design pattern

    Is there a way to implement the Observer/Observable pattern in a pure java FX 1.2 desktop Application?
    And if yes how ? :)

    You can use the real stuff, as shown in some threads (eg. in [Cannot bind a string array|http://forums.sun.com/thread.jspa?threadID=5425718] I show an example).
    This is necessary only to bind Java variables to JavaFX code.
    Now, as said above, in pure JavaFX code, you use binding. And the 'on replace' facility is useful too, as changes trigger actions.

  • Design pattern suggestion for multiple PersistenceManagers?

    Hi!
    I'm getting the following error (see end of message), and I would love to
    hear a good design solution.
    I get this error when adding a RequestLog object into the db, which
    contains a field for User. Now, I pass in the User object and since I am
    use a ThreadLocal pool for PersistenceManagers, sometimes the User object
    is being monitored by another PersistenceManager.
    Firstly, why is that causing a problem? I am not updating or changing the
    User object from this RequestLog object?
    I attempted to make the User object non-transactional, and I have
    javax.jdo.option.NontransactionalRead: true
    javax.jdo.option.NontransactionalWrite: true
    in my kodo.properties, but that made no improvement.
    What is the standard solution to this type of problem?
    Thanks!
    Nic.
    Stack trace:
    com.solarmetric.kodo.runtime.UserException: The instance
    "com.everwhere.idiomatica.app.security.User" of id
    "com.everwhere.idiomatica.app.security.User-0" is not managed by this
    PersistenceManager.
    FailedObject:User: admin
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.makePersistentFilter(PersistenceManagerImpl.java:1402)
         at
    com.solarmetric.kodo.runtime.PersistFCOFieldManager.storeFirstClassObject(PersistFCOFieldManager.java:109)
         at
    com.solarmetric.kodo.runtime.PersistFCOFieldManager.storeObjectField(PersistFCOFieldManager.java:78)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.providedObjectField(StateManagerImpl.java:1354)
         at
    com.everwhere.idiomatica.app.etc.request.TranslationRequest.jdoProvideField(TranslationRequest.java)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.provideFields(StateManagerImpl.java:2360)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.preFlush(StateManagerImpl.java:2037)
         at com.solarmetric.kodo.runtime.PNewState.beforeCommit(PNewState.java:39)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.beforeCommit(StateManagerImpl.java:597)
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.preCommitCallbacks(PersistenceManagerImpl.java:650)
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:454)
         at
    com.everwhere.idiomatica.db.KodoDatabase.insertDirectlyIntoDB(KodoDatabase.java:45)

    You cannot share objects directly across multiple pms.
    For example:
    Person p = (Person) pm1.getObjectById ...
    Person p2 = (Person) pm2.getObjectById ...
    p.setParent (p2); // bad!
    instead you should do:
    p2.setParent ((Person) pm2.getObjectById (JDOHelper.getObjectId (p),
    false));
    This should be a low cost operation (and even more so with L2 caching)
    It is usually best to allocate a PM per context so that these
    semi-messy situations are avoided.
    On Wed, 18 Jun 2003 10:53:09 +0000, Nic Cottrell wrote:
    Hi!
    I'm getting the following error (see end of message), and I would love to
    hear a good design solution.
    I get this error when adding a RequestLog object into the db, which
    contains a field for User. Now, I pass in the User object and since I am
    use a ThreadLocal pool for PersistenceManagers, sometimes the User object
    is being monitored by another PersistenceManager.
    Firstly, why is that causing a problem? I am not updating or changing the
    User object from this RequestLog object?
    I attempted to make the User object non-transactional, and I have
    javax.jdo.option.NontransactionalRead: true
    javax.jdo.option.NontransactionalWrite: true
    in my kodo.properties, but that made no improvement.
    What is the standard solution to this type of problem?
    Thanks!
    Nic.
    Stack trace:
    com.solarmetric.kodo.runtime.UserException: The instance
    "com.everwhere.idiomatica.app.security.User" of id
    "com.everwhere.idiomatica.app.security.User-0" is not managed by this
    PersistenceManager.
    FailedObject:User: admin
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.makePersistentFilter(PersistenceManagerImpl.java:1402)
         at
    com.solarmetric.kodo.runtime.PersistFCOFieldManager.storeFirstClassObject(PersistFCOFieldManager.java:109)
         at
    com.solarmetric.kodo.runtime.PersistFCOFieldManager.storeObjectField(PersistFCOFieldManager.java:78)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.providedObjectField(StateManagerImpl.java:1354)
         at
    com.everwhere.idiomatica.app.etc.request.TranslationRequest.jdoProvideField(TranslationRequest.java)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.provideFields(StateManagerImpl.java:2360)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.preFlush(StateManagerImpl.java:2037)
         at com.solarmetric.kodo.runtime.PNewState.beforeCommit(PNewState.java:39)
         at
    com.solarmetric.kodo.runtime.StateManagerImpl.beforeCommit(StateManagerImpl.java:597)
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.preCommitCallbacks(PersistenceManagerImpl.java:650)
         at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:454)
         at
    com.everwhere.idiomatica.db.KodoDatabase.insertDirectlyIntoDB(KodoDatabase.java:45)--
    Steve Kim
    [email protected]
    SolarMetric Inc.
    http://www.solarmetric.com

Maybe you are looking for