The use of interface in abap object

hi,
what is the use of interface in class? can have a simple example with explanation? i have read from help but not quite understand its purpose.
thanks

Hi El,
Interfaces are pure abstract classes. The interface methods will have only definitions but no implementations.
The classes which will implement interfaces has to provide the implementation to the methods.
Interfaces will provide the common definition and the classes which implements these interfaces will provide them different implementation to the methods as per their requirements. This achieves Polymorphism of Object Orientation.
REPORT zbc404_hf_events_3 .
INTERFACE lif_employee.
  METHODS:
    add_employee
       IMPORTING im_no   TYPE i
                 im_name TYPE string
                 im_wage TYPE i.
ENDINTERFACE.
CLASS lcl_company_employees DEFINITION.
  PUBLIC SECTION.
    INTERFACES lif_employee.
    TYPES:
      BEGIN OF t_employee,
        no  TYPE i,
        name TYPE string,
        wage TYPE i,
     END OF t_employee.
    METHODS:
      constructor,
     add_employee      "Removed
        IMPORTING im_no   TYPE i
                  im_name TYPE string
                  im_wage TYPE i,
      display_employee_list,
      display_no_of_employees.
  PRIVATE SECTION.
    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,
                no_of_employees TYPE i.
ENDCLASS.
CLASS lcl_company_employees IMPLEMENTATION.
  METHOD constructor.
    no_of_employees = no_of_employees + 1.
  ENDMETHOD.
  METHOD lif_employee~add_employee.
  Adds a new employee to the list of employees
    DATA: l_employee TYPE t_employee.
    l_employee-no = im_no.
    l_employee-name = im_name.
    l_employee-wage = im_wage.
    APPEND l_employee TO i_employee_list.
  ENDMETHOD.
  METHOD display_employee_list.
  Displays all employees and there wage
    DATA: l_employee TYPE t_employee.
    WRITE: / 'List of Employees'.
    LOOP AT i_employee_list INTO l_employee.
      WRITE: / l_employee-no, l_employee-name, l_employee-wage.
    ENDLOOP.
  ENDMETHOD.
  METHOD display_no_of_employees.
  Displays total number of employees
    SKIP 3.
    WRITE: / 'Total number of employees:', no_of_employees.
  ENDMETHOD.
ENDCLASS.
Check this link for some more examples on OO ABAP
http://www.erpgenie.com/sap/abap/OO/eg1.htm
Thanks,
Vinay

Similar Messages

  • Significance of Interfaces in ABAP Objects

    Hi Guys, here I have a query -
    Why do we use Interfaces in ABAP Objects?, and what is the significance of Interfaces in ABAP Objects?
    Please clarify the above with a suitable example.

    Moderator message - Welcome to SCN.
    But
    Moderator message - But this isn't a training forum. Please ask a specific question - post locked

  • How java support multiple inheritance by the use of interface.

    As per my understanding, Interface is just having the signatures of the methods not the implementation.
    So How java support multiple inheritance by the use of interface?
    Answer 1: we can institate interface reference by its implemented
    class.
              ����� interface inf...
              ����� class aa implements inf..
              ����� class bb implements inf....
               Now, inf i = new aa();
               inf i = new bb();
    Answer 2: We can extends as many interface as we want in the
    single
               interface.
               i.e. interface infFirst....
               interface infSecond....
               interface infThird....
               Now ,
               interface ingMulti extends infFrist, infThird...
    By above two answers its not prity clear as per the multiple inheritance in C or C++.
               i.e.
               class first{
               method abc();....}
               class second{
               method bbc()......}
               class multi::first::second{
               we can call to abc();.....as well as bbc();
    -Please give your important suggstion on the same.(Hope I explain it well.)
    -Jeff

    The keyword implement is used only for interfaces not
    for abstract class. If i am wrong correct me.I believe your right, but I will double check.
    As for the multiple inheritence think about the following code:
    class Animal {
        //  Animal generic stuff in this class
    interface Eat {
        //  Generic stuff that models eating behavior
    interface Runs {
        //  generic methods that model running behavior
    public class Horse extends Animal implements Eat, Runs {
        //  Stuff specific to a horse
    }The Animal class is generic but has stuff in it common to all animals.
    The Eat interface models behavior that is generic to eating, all living things have to eat something to survive. Herbavore are different from carnivores.
    The Runs interface models generic behavior to running, such as speed. A cheeta definately runs faster than a human.
    This brings us to the Horse class. It extends the Animal class because it "is-a" animal, and it implements the eat and runs interface because they are behaviors a horse has.
    I hope that helps.
    Extending an abstract class is the same as extending a regular class with the exception you MUST override all abstract methods in the abstract class. Thats not too difficult but I believe when designing classes, designing an abstract can be more diffecult than modeling the base class, and generic behaviors in interfaces. JMO.
    JJ

  • What is the use of interface in the adobe forms

    Hi friends,
    can any one tell,
    what is the use of interface in the adobe forms for desigining the form.

    The main purpose of the form interface is to send the application data to the form.
    The form interface is created separately from the form, which consists of the form context and layout. When you create a form, you must assign it to a form interface.
    please have a look at the link below for more info:
    http://help.sap.com/saphelp_nw70/helpdata/EN/96/6ee0d5b39640d68fc0078fc575114a/frameset.htm
    http://help.sap.com/saphelp_nw70/helpdata/EN/f2/21021b911f4c0cae11459a4ce0bc62/frameset.htm
    hope this helps,
    harman

  • In business object what is the use of Interface

    hi ppl,
             In each business object there is a interface what can we do with that. When i used wizards like dynamic parallel processing it asked for wizards what is the actual use of interfaces.

    Hi Dheepak,
    I have an overview on interfaces. Someone pls correct me if i am wrong here.
    Interfaces are generally used to group a set of attributes and methods that can be used across different business objects. You can create your own interfaces in SWO1 and when you include these interfaces in business objects you get all these attributes and methods in the business objects (Inheritance). Its basically for re-usability of the code(Reusability). Apart from that if required you can implement your own code for the methods thus maintaining the same name with a different logic for your BO (Polymorphism).
    For example assume that you have a "Display" method and a few attributes in an interface. The "Display" method is used to display a particular transaction. Now you can include this interface in any BO and all these attributes and methods will be available in that BO with their respective implementation code. Now if you want the method to form a different action in any particular BO you can go ahead and redefine this code in that BO. This redefinition will not affect other BO's that had implemeted this same interface. All other BOs which had implemented this interface will continue to function as per the implementation code defined in the interface. This makes sure that the same method works in different ways in different BO's (Polymorphism)
    Supertype<-->Subtype delegation will allow us to inherit the supertype/subtype methods/attributes but it does not allow us to change the underlying code in individual BOs. Hence polymorphism cant be acheived here
    Thanks,
    Prasath N
    BO - Business Object

  • How to use LDB PNP with ABAP objects in a program

    Hello,
    I am wondering if anybody has used the HR logical database(LDB) PNP with user defined ABAP objects in a program? I am using the FM- <b>LDB_PROCESS</b> but its not working. Also assigning PNP in the attributes section of the program -- so that I can use predefined fields from the LDB and then invoking the FM doesn't work -- throwing 'Logical database already active' error.
    I suppose even with the ABAP objects and the new FM -- I should still be able to utilize the pre-defined fields of the PNP database -- and also the built in authorizations. I cannot use GET PERNR and REJECT as they give errors. I understand that the use of HR-macros (RP-PROVIDE-FROM-LAST and et al.) are not allowed as they use the table work area -- which is not allowed in ABAP-OOPS.
    I would really appreciate if anyone could show me some insight regarding this. Thank you.
    Kshitij R. Devre

    Hi Kshitij
    It would be really good if we could use both together. But as I know, it is not possible. "GET pernr." is an event-like loop statement and so cannot be used in OO context. And I guess, the same restriction holds for the "LDB_PROCESS" since it uses LDB-specific processing.
    What I suggest you is to use standard and BAPI functions.
    Sorry for giving bad news...
    *--Serdar

  • Use of Boolean in Abap Object

    Gentlemans!!
    I'm wondering if the boolean type data exists in Abap Object and if it used when we define methods.
    I used to use it in C++ and Java and I still don't know if this it's used or even exists in Abap Objects.
    Thanks for your help.
    Regards,
    Polak.

    Hello,
    The boolean type don't exist in ABAP.
    In ABAP we used to refer to the type-pool ABAP where exists a type ABAP_BOOL (character length 1) where X = true and space = false. To refer to these values there are two constants: ABAP_TRUE and ABAP_FALSE.
    To access the type-pool use the transaction SE11 select Type Group and enter ABAP.
    Regards,

  • What is the use of  keyword SCAN ABAP-SOURCE

    Hello experts,
    what is the use of scan abap-source. please explain. what is tokens, statements, levels in that.

    Hi
    <b>SCAN</b>
    This statement is for internal use only.
    It cannot be used in application programs.
    <b>SCAN ABAP-SOURCE itab1 ...TOKENS INTO itab2
                           ...STATEMENTS INTO itab3.</b>
    Parts marked with " ..." are interchangeable
    <b>Addition 1</b>
    ... FROM n1
    <b>Addition 2</b>
    ... TO   n2
    Breaks down the source code table itab1 into tokens not from start to finish, but only from line n1 to line n2.
    The additions FROM n1 and TO n2 must, in this order, follow the specification of the source code table itab1.
    When using the start specification n1, use the addition WITHOUT TRMAC to ensure that there are no unnecessary database accesses to the table TRMAC.
    The end specification n2 is treated as "soft", i.e. a statement that begins on a line <= n2, but ends only on a line > n2, is returned completely.
    If the end specification n2 is split in a chain statement, only the split part up to the next comma is returned completely, not the entire chain statement up to the next period.
    Negative line specifications are not allowed and result in a runtime error.
    A line specification of 0 amounts essentially to no specification.
    If n1 number of lines in source code table, the scanner is not called (SY-SUBRC = 2).
    If n1 > n2 and n2 > 0, the scanner is not called (SY-SUBRC = 2).
    <b>
    Addition 3</b>
    ... KEYWORDS FROM itab4
    Does not return all statements, only those specified in the key word table itab4.
    If the key word table is empty (i.e. it contains 0 lines), all the statements are selected.
    The lines of the key word table are treated as a character field.
    To select a Native-SQL-statement or a macro definition, you can specify the pseudo key words EXEC_SQL or DEFINE_MACRO. It makes no difference whether the statements EXEC or DEFINE occur as well. Native SQL statements and macro definitions are returned as one statement (of type E or M even if the expansion of a macro definition results in more than one statement.
    If the key word table contains a blank line, blank statements are also selected.
    <b>Addition 4</b>
    ... LEVELS INTO itab5
    Stores details about each edited source code unit (source code table itab1 itself, expanded include-programs, expanded macro definitions) in the level table itab5.
    Specification of a level table makes sense only with the addition WITH INCLUDES.
    The level table itab5 must have the structure SLEVEL.
    The fields of the structure SLEVEL - and consequently the columns of the level table itab5 have the following meaning:
    TYPE
    Type of source code unit with the following possible values:
    P (Program)
    D (Internal DEFINE macro)
    R (Macro from table TRMAC)
    NAME
    Name of source code unit (name of include program, macro name)
    DEPTH
    Current nesting depth of source code unit (>= 1)
    LEVEL
    Index of superior (i.e. including or calling) source code unit in the level table (>= 1, if DEPTH >= 2, otherwise 0)
    STMNT
    Index of superior (i.e. including or calling) statement in the statement table (>= 1, if DEPTH >= 2, otherwise 0)
    FROM
    Index of first statement of source code unit in the statement table (>= 1)
    TO
    Index of last statement of source code unit in the statement table (>= 1)
    If the source code unit contains include programs or macro calls, the line range [ FROM, TO] in the statement table also covers the statements in subordinate source code units.
    <b>Addition 5</b>
    ...  STRUCTURES INTO itab6
    Details of the construction of the source text table are given in the structure table itab6.
    The structure table itab6 must have the structure SSTRUC.
    The fields in SSTRUC (which are also the columns of structure table itab6) have the following meanings:
    TYPE
    Type of the structure with possible values:
    P (Beginning of the source code)
    R (Subroutine)
    M (Macro, EXEC SQL)
    I (Loop)
    A (Case distinction)
    C (Condition in a case distinction)
    J (Goto command)
    D (Structured declaration)
    E (Event)
    S (Follow-on from simple structured statement)
    STMNT_TYPE
    The statement type of the beginning of the structure. The values are listed in the type pool SCAN in structure SCAN_STRUC_STMNT_TYPE.
    KEY_START
    Flags whether the start of the structure is described semantically ('X' if there is a special statement, otherwise ' ').
    KEY_END
    Flags whether the end of the structure is described semantically ('X' if there is a special statement, otherwise blank).
    STMNT_FROM
    Index of the first statement of the structure in the statement table itab3.
    STMNT_TO
    Index of the last statement of the structure in the statement table itab3.
    Index of the first substructure of the structure in structure table itab6.
    STRUC_TO
    Index of the last substructure of the structure in structure table itab6.
    BACK
    Index of the structure in the structure table itab6 that contains the structure as a substructure (0 if the structure is the root structure of a structure tree).
    <b>Addition 6</b>
    ... OVERFLOW INTO c1
    The addition is only allowed and required if the token table itab2 has the structure STOKEN or STOKEX.
    If a token is too large to be stored in the token table in the field STR, it is placed in the overflow area c1. The offset of the token in the overflow area then lies in the token table in the field OFF1.
    <b>Addition 7</b>
    ... WITH ANALYSIS
    Breaks down each token t = a+b(c) according to the logic of the RSYN key word >ANALY into its three components a, b and c.
    Offset and length of components a, b and c are stored in the fields LEN1, OFF2, LEN2, OFF3, and LEN3 in the token table. (The offset of OFF1 is always 0 and therefore not required.)
    If you specify the addition WITH ANALYSIS, the token table itab2 must have the structure STOKESX, so that the fields LEN1, OFF2, LEN2, OFF3 and LEN3 are available.
    If the token table has the structure STOKEX, you must consider the following:
    If the whole token exists in the token table, the offset specifications are relative to the token start. If the token is in the overflow area c1, the offset specifications are relative to the start of the overflow area.
    <b>Addition 8</b>
    ... WITH COMMENTS
    Returns comments also, with each individual comment representing a token. The system additionally stores entries for each full block of comments in the table itab3, differentiating between comments that occur within statements and those that occur at program level. In itab3, an entry for a comment within a statement always comes before the statement containing the comment.
    <b>Example</b>
    Look at the following program fragment. The preceding numbers are the indexes of the tokens.
    1    * An example  *
    2    * with scattered comments
    6    MOVE
    3    * Inserted comment 1
    7    X
    4    *  Inserted comment 2
    8    TO
    9    Y
    5    * Inserted comment 3
    SCAN then enters the following values for the components TYPE, FROM and TO (in this order from left to right) into itab3.
    'P' 1 2
      'S' 3 5
      'K' 6 9
    If the addition ... WITH COMMENTS is used, the table itab2 must have the line type STOKES or STOKESX.
    <b>Addition 9</b>
    ... WITH INCLUDES
    Also breaks down subordinate source code units (included programs, called macros) into tokens.
    You should normally combine the addition WITH INCLUDES with the addition LEVELS INTO itab5.
    If (at least) one included program does not exist, SY-SUBRC is set to 1 and the relevant INCLUDE statement is flagged in the statement table itab3 by the statement type J (instead of I), but the breakdown process continues. The level table itab5 contains no entry for include-programs that do not exist.
    If you combine WITH INCLUDES with WITHOUT TRMAC , TRMAC-Macros are not expanded because the system does not recognize them as subordinate source code units.
    When macro calls are expanded, no position specifications are available. The corresponding fields in the token table itab2 and the statement table itab3 are then set to 0.
    <b>Addition 10</b>
    ... WITH TYPE-POOLS
    This addition has the same effect as the WITH INCLUDES addition, except that with the former include programs belonging to type groups are broken down into tokens.
    <b>Addition 11</b>
    .. WITH LIST TOKENIZATION
    Tokens of the form (a1, a2, a3) are not returned as tokens but broken down into the elementary components.
    <b>Addition 12</b>
    ... WITHOUT TRMAC
    If a statement begins neither with an ABAP/4 key word nor with a DEFINE macro, the system does not check whether this is a TRMAC macro, but assumes an unknown statement. (Unknown statements are flagged in the statement table itab3 with a U in the field TYPE.)
    To avoid unnecessary database accesses to the table TRMAC, you should use the addition WITHOUT TRMAC whenever you assume that the source code to be scanned contains unknown statements. Unknown statements are particularly likely to occur if you use the addition FROM n1, because the scanner does not start at the beginning of the source code, but from a specified point.
    If you use WITHOUT TRMAC with WITH INCLUDES, TRMAC macros are not expanded because the system does not recognize them as subordinate source code units.
    <b>Addition 13</b>
    ... PROGRAM FROM c2
    <b>Addition 14</b>
    ... INCLUDE INTO c3
    <b>Addition 15</b>
    ... MESSAGE INTO c4
    <b>Addition 16</b>
    ... WORD    INTO c5
    <b>Addition 17</b>
    ... LINE    INTO n3
    <b>Addition 18</b>
    ... OFFSET  INTO n4
    The above additions have the same meaning as those for the
    SYNTAX-CHECK: statement: c2 is an input field for a program name to be assigned to the source code, while the fields c3, c4, c5, n3 and n4 are output fields in case an error occurs.
    To be able to analyze errors without modifying programs, use the additions INCLUDE, MESSAGE, WORD, LINE and OFFSET. These provide information about the errors which have occurred.
    <b>Variant 2</b>
    SCAN AND CHECK ABAP-SOURCE itab1 ...RESULT INTO itab2.
    Parts marked with " ..." are interchangeable
    <b>Extras:</b>
    1. ... PROGRAM FROM c1 2. ... INCLUDE INTO c2
    3. ... MESSAGE INTO c3
    4. ... WORD    INTO c4
    5. ... LINE    INTO n1
    6. ... OFFSET  INTO n2
    The syntax of the program in table itab1 is checked. During the check, all of the information from the program, such as statement structures, statements, tokens, data objects, types and do on are placed into the result field. This field must have the type SYSCH_RESULT, which is defined in type group SYSCH. You must therefore declare type group SYSCH in your ABAP-program using a TYPE-POOLS statement.
    &ABAP_ADDITION _1&
    ... PROGRAM FROM c1
    &ABAP_ADDITION _2&
    ... INCLUDE INTO c1
    &ABAP_ADDITION _3&
    ... MESSAGE INTO c3
    &ABAP_ADDITION _4&
    ... WORD    INTO c4
    &ABAP_ADDITION _5&
    ... LINE    INTO n1
    &ABAP_ADDITION _6&
    ... OFFSET  INTO n2
    The above additions have the same effect as the corresponding additions in the statement SYNTAX-CHECK: c1 is an input field for a program name to be assigned to the source code, the fields c2, c3, c4, n1 and n2 are output fields, used when errors occur.
    To enable you to analyze errors without having to modify the program, you should specify the INCLUDE, MESSAGE, WORD, LINE and OFFSET additions for the information about the error that occurred.
    <b>Reward if usefull</b>

  • Whats is table type ? whats the use of it in abap?

    hi,
    i am ahmed abap fresher,
         i want to know what is table type and whats the use of it. at what point/situation we utilize this table type.

    Hi Ahmed ,
    Table is apart of data dictionary.
    Table is a sort of container where we store data.
    For eg. you want to store customer record in the database.Now you will store that customer record against specific fields of the applicable table.
    You can create or see table by means of transaction code se11.
    There are 3 typesof tables available in SAP ABAP:
    1. Transparent table
    2. Pool table
    3. Cluster table.
    Transparent Table:
    A physical table definition in the database for the table definition which is stored in the ABAP Dictionary for transparent tables when the
    table is activated. The table definition is translated from the ABAP
    Dictionary to a definition of the particular database.
    Pooled table:
    Pooled tables can be used to store control data (e.g. screen sequences,
    program parameters or temporary data). Several pooled tables can be
    combined to form a table pool. The table pool corresponds to a physical
    table on the database in which all the records of the allocated pooled
    tables are stored.
    Cluster table:
    Cluster tables contain continuous text, for example, documentation.
    Several cluster tables can be combined to form a table cluster. Several
    logical lines of different tables are combined to form a physical record
    in this table type. This permits object-by-object storage or
    object-by-object access. In order to combine tables in clusters, at
    least parts of the keys must agree. Several cluster tables are stored in
    one corresponding table on the database.
    See the documetation at:
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/21f083446011d189700000e8322d00/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
    Reward if useful ...
    Regards ,
    Shankar GJ

  • Understanding the use of interface class?

    Hello,
    This question referes to java servlets, but the questions is about java design.
    My wrox java server pages text, includes an example where some user data is posted to servlet.
    To process the data posted and store this, they created a interface class and another class AdminManager which implements the interface.
    In the servlet they create an object from the interface class, and call the AdminManager methods through the interface object.
    In the book this was the only example which used a interface. And I wondered if this design approach was often used, or should an interface normally be used if several classes would implement the interface.
    Thanks

    It depends. You might want to create an interface even if you only have a single implementation of that interface in mind, because you want to make it easy to create more implemenations later.
    Also keep in mind that not all implementations of an interface are strictly for production use. For example, you might want to define an interface, define an implementation of that interface for production use, but then also define a "mock" version of that interface for testing, prototyping, etc.
    Generally I feel that if you have a sufficiently complex set of types and relationships between those types, it makes a lot of sense to express those relationships purely as interfaces, on a high level. Then provide implemenations as a separate step in the programming process.

  • What is the use of creating a detail object on a measure.

    Hi Experts,
    In BI 4.X business layer, we can create a detail object of a dimension and as well as measure.
    Can you please let me know what could be the use of the detail object of a measure object?
    In the business layer, it is showing like this...
    <Measure object>
    -><Detail Object>
    Dimensions have attributes, we create those attributes as details objects.
    when we want to see the different grains of the measure in one report. we will use these details objects.
    Example:
    1. Query 1 returns country, sales revenue
    2. Query 2 Returns Country,State,Sales revenue.
    But in the report if we want to show the State wise Revenue. It is not possible bcz both the quires are returning different grain.
    state object is incompatible object, so you can't drag the object into report.
    in this scenario we will merge the Country dimension , create the state object as details with merged dimension, then you can drag the state details detail object.
    this will give expected results Country and State wise revenue.
    Normally Dimensions and details objects will drives the measures values in report.
    So, Detail object on measure not helpful in case of relational database(Please correct me if i am wrong). It is useful only for OLAP database because when I have created a webi report on top of BEx query then it is automatically created a detail object on measure object.
    As far I know, 'Measure attribute' introduced for OLAP based business layer. which can provides information for the formatted value like unit, currency or value.
    For example:-
    Amount is key figure in BEx query and when I have created Webi report on top of that then it will create three object.
    1. Amount as meausre.
    ->2. Amount currency(detail).
    ->3. Amount formatted value(detail).
    Below is the output after running the report.
    Amount || Amount currency || Amount formatted value
    30 || $ || 30.00
    8 || $ || 8.00
    I have found one difference, We can't implement the index awareness on detail object which we have created on measure object although we can implement the index awareness on detail object which we have created on top dimension object.
    But Still I am looking for good example of Detail object on measure object..
    Any thought would be welcome...
    Thanks,
    Sachin

    I moved this to the Semantic Layer space for faster response.

  • Whats the use of interface

    I know interface is use for multiple inheritence but is there anyohter reason instead of this?

    Hi,
    The power that interface gives you is not in the implementation but in the design. One should always have a blueprint specially when you are trying to make code reusable. If the blueprint is right then you can keep the signatures clean and separate from the implementation. The interfaces publish how a class or a set of classes would behave and hence declares the functionality rather than stressing on the implementation.
    So you can treat interfaces as a contract that the classes that implement teh interface are bound to provide. So you get hold of interfaces you know what all you can do when you call methods which implement them. Interfaces are mostly shared when you would like to integrate components and for that matter even putting together some bigger functionality from small set of classes.
    Interfaces also define some common set of behaviour that the classes that implement the interface are bound to provide. It captures the similarities across unrelated classes without forcing a class relationship
    Hope this helps
    Aviroop

  • Interfaces in ABAP Objects

    some body please tell why this code snippet is giving a syntax error
    syntax error:interface component "INTERF~A" doesnot exist
    interface interf.
    data a type i.
    aliases a1 for interf~a.
    endinterface.
    class abc definition.
      public section.
      interfaces interf.
      private section.
      methods use.
       endclass.
      class abc implementation.
        method use. 
          endmethod.
        endclass.
    data obj type ref to abc.
        start-of-selection.
        create object obj.

    Try out with this code and let me know if it works.
    interface interf.
         data a type i.
    endinterface.
    Here, create a second Interface 'interf_added' & use aliasing ''a1''  for the component 'a' of Interface ' interf'  within it**
    interface interf_added.
         aliases a1 for interf~a.
    endinterface.
    class abc definition.
         public section.
              interfaces interf_added.
         private section.
              methods use.
    endclass.
    class abc implementation.
         method use.
         endmethod.
    endclass.
    data obj type ref to abc.
    start-of-selection.
         create object obj.

  • Practical Use of Interface

    Can anybody please let me know the practical use of Interfaces in abap objects.
    Currently i am undergoing traning in abap objects and really confused with the concept why SAP has provided with interfaces.

    Hi again,
    <b>for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm</b>
    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
    +++++
    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
    Thanks, ABY

  • Abap Objects doubts.

    Hi Experts.
    Plz give me some details for the following questions.
    1. what is abstract class.
    2. give me some example program using inheritance.
    3. Some sample programs using events.
    4. Narrow casting & wide casting.. And describe the use of it.
    5. How to declare internal table in ABAP OOPS.
    6. What is the use of table type.?
    7. What is instance.?
    8. Explain friend class.
    Thank in advance.
    Points will be given for the answers.
    regards,
    J.Joe

    HI
    <b>1. what is abstract class.</b>
    Abstract classes are normally used as an incomplete blueprint for concrete (that is, non-abstract) subclasses, for example to define a uniform interface.
    Classes with at least one abstract method are themselves abstract.
    Static methods and constructors cannot be abstract.
    You can specify the class of the instance to be created explicitly: CREATE OBJECT <RefToAbstractClass> TYPE <NonAbstractSubclassName>.
    Abstarct classes themselves can’t be instantiated ( althrough their subclasses can)
    Reference to abstract classes can refer to instance of subclass
    Abstract (instance) methods are difined in the class , but not implemented
    They must be redefined in subclasses
    CLASS LC1 DEFINAITION ABSTARCT
    PUBLIC SECTION
    METHODS ESTIMATE ABSTARCT IMPORTING…
    ENDCLASS.
    <b>2. give me some example program using inheritance.</b>
    The following simple example shows the principle of inheritance within ABAP Objects. It is based on the Simple Introduction to Classes. A new class counter_ten inherits from the existing class counter.
    REPORT demo_inheritance.
    CLASS counter DEFINITION.
      PUBLIC SECTION.
        METHODS: set IMPORTING value(set_value) TYPE i,
                 increment,
                 get EXPORTING value(get_value) TYPE i.
       PROTECTED SECTION .
        DATA count TYPE i.
    ENDCLASS.
    CLASS counter IMPLEMENTATION.
      METHOD set.
        count = set_value.
      ENDMETHOD.
      METHOD increment.
        ADD 1 TO count.
      ENDMETHOD.
      METHOD get.
        get_value = count.
      ENDMETHOD.
    ENDCLASS.
    CLASS counter_ten DEFINITION INHERITING FROM counter.
      PUBLIC SECTION.
        METHODS increment REDEFINITION .
        DATA count_ten.
    ENDCLASS.
    CLASS counter_ten IMPLEMENTATION.
      METHOD increment.
        DATA modulo TYPE I.
         CALL METHOD super->increment .
        write / count.
        modulo = count mod 10.
        IF modulo = 0.
          count_ten = count_ten + 1.
          write count_ten.
        ENDIF.
      ENDMETHOD.
    ENDCLASS.
    DATA: count TYPE REF TO counter,
          number TYPE i VALUE 5.
    START-OF-SELECTION.
       CREATE OBJECT count TYPE counter_ten .
      CALL METHOD count->set EXPORTING set_value = number.
      DO 20 TIMES.
        CALL METHOD count->increment.
      ENDDO.
    The class COUNTER_TEN is derived from COUNTER. It redefines the method INCREMENT. To do this, you must change the visibility of the COUNT attribute from PRIVATE to PROTECTED. The redefined method calls the obscured method of the superclass using the pseudoreference SUPER->. The redefined method is a specialization of the inherited method.
    The example instantiates the subclass. The reference variable pointing to it has the type of the superclass. When the INCREMENT method is called using the superclass reference, the system executes the redefined method from the subclass.
    <b>3. Some sample programs using events.</b>
    Events in ABAP Objects - Example
    The following example shows how to declare, call, and handle events in ABAP Objects.
    Overview
    This object works with the interactive list displayed below. Each user interaction triggers an event in ABAP Objects. The list and its data is created in the class C_LIST. There is a class STATUS for processing user actions. It triggers an event BUTTON_CLICKED in the AT USER-COMMAND event. The event is handled in the class C_LIST. It contains an object of the class C_SHIP or C_TRUCK for each line of the list. Both of these classes implement the interface I_VEHICLE. Whenever the speed of one of these objects changes, the event SPEED_CHANGE is triggered. The class C_LIST reacts to this and updates the list.
    Constraints
    The ABAP statements used for list processing are not yet fully available in ABAP Objects. However, to produce a simple test output, you can use the following statements:
    WRITE [AT] /<offset>(<length>) <f>
    ULINE
    SKIP
    NEW-LINE
    Note: The behavior of formatting and interactive list functions in their current state are not guaranteed. Incompatible changes could occur in a future release.
    Declarations
    This example is implemented using local interfaces and classes. Below are the declarations of the interfaces and classes:
    Interface and Class declarations
    INTERFACE I_VEHICLE.
      DATA     MAX_SPEED TYPE I.
      EVENTS SPEED_CHANGE EXPORTING VALUE(NEW_SPEED) TYPE I.
      METHODS: DRIVE,
               STOP.
    ENDINTERFACE.
    CLASS C_SHIP DEFINITION.
      PUBLIC SECTION.
      METHODS CONSTRUCTOR.
      INTERFACES I_VEHICLE.
      PRIVATE SECTION.
      ALIASES MAX FOR I_VEHICLE~MAX_SPEED.
      DATA SHIP_SPEED TYPE I.
    ENDCLASS.
    CLASS C_TRUCK DEFINITION.
      PUBLIC SECTION.
      METHODS CONSTRUCTOR.
      INTERFACES I_VEHICLE.
      PRIVATE SECTION.
      ALIASES MAX FOR I_VEHICLE~MAX_SPEED.
      DATA TRUCK_SPEED TYPE I.
    ENDCLASS.
    CLASS STATUS DEFINITION.
      PUBLIC SECTION.
       CLASS-EVENTS BUTTON_CLICKED EXPORTING VALUE(FCODE) LIKE SY-UCOMM.
      CLASS-METHODS: CLASS_CONSTRUCTOR,
                    USER_ACTION.
    ENDCLASS.
    CLASS C_LIST DEFINITION.
      PUBLIC SECTION.
      METHODS: FCODE_HANDLER FOR EVENT BUTTON_CLICKED OF STATUS
                                 IMPORTING FCODE,
               LIST_CHANGE   FOR EVENT SPEED_CHANGE OF I_VEHICLE
                                 IMPORTING NEW_SPEED,
               LIST_OUTPUT.
      PRIVATE SECTION.
      DATA: ID TYPE I,
            REF_SHIP  TYPE REF TO C_SHIP,
            REF_TRUCK TYPE REF TO C_TRUCK,
            BEGIN OF LINE,
              ID TYPE I,
              FLAG,
              IREF  TYPE REF TO I_VEHICLE,
              SPEED TYPE I,
            END OF LINE,
            LIST LIKE SORTED TABLE OF LINE WITH UNIQUE KEY ID.
    ENDCLASS.
    The following events are declared in the example:
    The instance event SPEED_CHANGE in the interface I_VEHICLE
    The static event BUTTON_CLICKED in the class STATUS.
    The class C_LIST contains event handler methods for both events.
    Note that the class STATUS does not have any attributes, and therefore only works with static methods and events.
    Implementations
    Below are the implementations of the methods of the above classes:
    Implementations
    CLASS C_SHIP IMPLEMENTATION.
      METHOD CONSTRUCTOR.
        MAX = 30.
      ENDMETHOD.
      METHOD I_VEHICLE~DRIVE.
        CHECK SHIP_SPEED < MAX.
        SHIP_SPEED = SHIP_SPEED + 10.
        RAISE EVENT I_VEHICLE~SPEED_CHANGE
                    EXPORTING NEW_SPEED = SHIP_SPEED.
      ENDMETHOD.
      METHOD I_VEHICLE~STOP.
        CHECK SHIP_SPEED > 0.
        SHIP_SPEED = 0.
        RAISE EVENT I_VEHICLE~SPEED_CHANGE
                    EXPORTING NEW_SPEED = SHIP_SPEED.
      ENDMETHOD.
    ENDCLASS.
    CLASS C_TRUCK IMPLEMENTATION.
      METHOD CONSTRUCTOR.
        MAX = 150.
      ENDMETHOD.
      METHOD I_VEHICLE~DRIVE.
        CHECK TRUCK_SPEED < MAX.
        TRUCK_SPEED = TRUCK_SPEED + 50.
        RAISE EVENT I_VEHICLE~SPEED_CHANGE
                    EXPORTING NEW_SPEED = TRUCK_SPEED.
      ENDMETHOD.
      METHOD I_VEHICLE~STOP.
        CHECK TRUCK_SPEED > 0.
        TRUCK_SPEED = 0.
        RAISE EVENT I_VEHICLE~SPEED_CHANGE
                    EXPORTING NEW_SPEED = TRUCK_SPEED.
      ENDMETHOD.
    ENDCLASS.
    CLASS STATUS IMPLEMENTATION.
      METHOD CLASS_CONSTRUCTOR.
        SET PF-STATUS 'VEHICLE'.
        WRITE 'Click a button!'.
      ENDMETHOD.
      METHOD USER_ACTION.
        RAISE EVENT BUTTON_CLICKED EXPORTING FCODE = SY-UCOMM.
      ENDMETHOD.
    ENDCLASS.
    CLASS C_LIST IMPLEMENTATION.
      METHOD FCODE_HANDLER .
        CLEAR LINE.
        CASE FCODE.
          WHEN 'CREA_SHIP'.
            ID = ID + 1.
            CREATE OBJECT REF_SHIP.
            LINE-ID = ID.
            LINE-FLAG = 'C'.
            LINE-IREF = REF_SHIP.
            APPEND LINE TO LIST.
          WHEN 'CREA_TRUCK'.
            ID = ID + 1.
            CREATE OBJECT REF_TRUCK.
            LINE-ID = ID.
            LINE-FLAG = 'T'.
            LINE-IREF = REF_TRUCK.
            APPEND LINE TO LIST.
          WHEN 'DRIVE'.
            CHECK SY-LILLI > 0.
            READ TABLE LIST INDEX SY-LILLI INTO LINE.
            CALL METHOD LINE-IREF->DRIVE.
          WHEN 'STOP'.
            LOOP AT LIST INTO LINE.
              CALL METHOD LINE-IREF->STOP.
            ENDLOOP.
          WHEN 'CANCEL'.
            LEAVE PROGRAM.
        ENDCASE.
        CALL METHOD LIST_OUTPUT.
      ENDMETHOD.
      METHOD LIST_CHANGE .
        LINE-SPEED = NEW_SPEED.
        MODIFY TABLE LIST FROM LINE.
      ENDMETHOD.
      METHOD LIST_OUTPUT.
        SY-LSIND = 0.
        SET TITLEBAR 'TIT'.
        LOOP AT LIST INTO LINE.
          IF LINE-FLAG = 'C'.
            WRITE / ICON_WS_SHIP AS ICON.
          ELSEIF LINE-FLAG = 'T'.
            WRITE / ICON_WS_TRUCK AS ICON.
          ENDIF.
          WRITE: 'Speed = ', LINE-SPEED.
        ENDLOOP.
      ENDMETHOD.
    ENDCLASS.
    The static method USER_ACTION of the class STATUS triggers the static event BUTTON_CLICKED. The instance methods I_VEHICLEDRIVE and I_VEHICLESTOP trigger the instance event I_VEHICLE~SPEED_CHANGE in the classes C_SHIP and C_TRUCK.
    Using the Classes in a Program
    The following program uses the above classes:
    REPORT OO_EVENTS_DEMO NO STANDARD PAGE HEADING.
    Global data of program
    DATA LIST TYPE REF TO C_LIST.
    Program events
    START-OF-SELECTION.
      CREATE OBJECT LIST.
      SET HANDLER: LIST->FCODE_HANDLER,
                  LIST->LIST_CHANGE FOR ALL INSTANCES.
    AT USER-COMMAND.
      CALL METHOD STATUS=>USER_ACTION.
    The program creates an object of the class C_LIST and registers the event handler method FCODE_HANDLER of the object for the class event BUTTON_CLICKED, and the event handler method LIST_CHANGE for the event SPEED_CHANGE of all instances that implement the interface I_VEHICLE.
    <b>4. Narrow casting & wide casting.. And describe the use of it.</b>
    <b>Narrowing Cast</b>
    The assignment of a subclass instance to a reference variable of the type "reference to superclass" is described as a narrowing cast, because you are switching from a more detailed view to a one with less detail.
    Description up-cast is also used.
    <b>use</b>
    A user who is not interested in the finer points of cars, trucks, and busses (but only, for example, in the fuel consumption and tank gauge) does not need to know about them. This user only wants and needs to work with (references to) the lcl_vehicle class. However, in order to allow the user to work with cars, busses, or trucks, you generally need a narrowing cast.
    <b>Widening cast</b>
    The widening cast logically represents the opposite of the narrowing cast. The widening cast cannot be checked statically, only at runtime. The Cast Operator ?= (or the equivalent MOVE ... ?TO … ) must be used to make this visible.
    It changes from a less detailed view to one with more detail.
    <b>use</b>
    The client, the car rental company  wants to execute a function for specific vehicles form the list (vehicle_list).  For example, the client wants to ascertain the truck with the largest cargo capacity.  However, not all vehicles are in the trucks list, it also includes references to cars and busses.
    <b>5. How to declare internal table in ABAP OOPS.</b>
    BEGIN OF LINE,
              ID TYPE I,
              FLAG,
              IREF  TYPE REF TO I_VEHICLE,
              SPEED TYPE I,
            END OF LINE,
    <b>6. What is the use of table type.?</b>
    Please check the SAP help , as all these things are provided in detail in it .
    In case you find it difficult to find it or search for it here is the link
    http://help.sap.com/saphelp_nw04/helpdata/en/90/8d7304b1af11d194f600a0c929b3c3/frameset.htm
    <b>7. What is instance.?</b>
    Instance methods are called using CALL METHOD <reference>-><instance_method>.
    Static methods (also referred to as class methods) are called using CALL METHOD <classname>=><class_method>.
    If you are calling a static method from within the class, you can omit the class name.
    You access instance attributes using <instance>-><instance_attribute>
    <b>8. Explain friend class.</b>
    In rare cases, classes have to work together so closely that they need access to their protected and private components. To avoid making these components available to all users, there is the concept of friendship between classes.
    To do this you use the FRIENDS additions to the CLASS statement, in which all classes and interfaces that are to be provided friendship are listed
    In principle, providing friendship is one-sided: A class providing friendship is not automatically a friend of its friends. If a class providing friendship wants to access the non-public components of a friend, this friend has to explicitly provide friendship to it.
    Classes that inherit from friends and interfaces that contain a friend as a component interface also become friends. However, providing friendship, unlike the attribute of being a friend, is not inherited. A friend of a superclass is therefore not automatically a friend of its subclasses.
    <b>Reward if usefull</b>

Maybe you are looking for