Class pools

how to see the name of the class pool of my global class.
can i use this class pool in my abap editor program. so that i can make friendship with it.

HI john
Yo can define your ABAP Unit test class as a friend of the global class to be tested in the local class definition include of your global class. So, you have to add a line of code like
CLASS <name of global class to be tested> DEFINITION LOCAL FRIENDS <name of local ABAP Unit class> in the include where the definition of local ABAP Unit Class is in. Then you can call the private methods of your global class in the local abap unit class methods.
just refer these links
<b>http://help.sap.com/saphelp_nw2004s/helpdata/en/ec/d9ab291b0b11d295400000e8353423/content.htm</b>
local class -> global class
Regards Rk

Similar Messages

  • How to create a class pool

    Hi how to create a class pool when i tried to create it has shown the following error
    <b>Unable to change program from or to type K
    Message no. DS165
    Diagnosis
    You tried to assign a type to a program that cannot be assigned in the program attributes, but can only be set internally by one of the tools in the ABAP Workbench.
    The following program types are reserved:
    F Reserved for Function Groups
    Function groups are adminstered by the Function Builder, and you can only create or delete them using the Function Builder or the Object Navigator (Transaction SE80).
    K Reserved for Class Defintions
    Class definitions are administered in the Class Builder. You can only create or delete them using the Clas Builder or the Object Navigator.
    J Reserved for Interface Definitions
    Interface definitions are administered in the Clas Builder. You can only create or delete them using the class Builder or the Object Navigator.</b>

    Hi,
    Though you get a popup for different options for different program types like Class pools, function groups etc in SE 38 Program attributes, you can't create them from Se38 transaction.
    They have to be created from different places.
    Class Pools are nothing but creating CLASSes and INTERFACEs using the T Code SE24.
    This needs little Java/OOPs concepts to create and use them.
    Hope this helps.
    Regards,
    Anji

  • Difference between interface pool and class pool

    Hi,
    Can any body tell me the difference between Interface pool and Class pool.
    thank you in advance.
    regards

    Hi,
    Class and Interface Pools
    This section discusses the structure and special features of class and interface pools for global classes.
    Global Classes and Interfaces
    Classes and interfaces are object types. You can define them either globally in the Repository or locally in an ABAP program. If you define classes and interfaces globally, special ABAP programs called class pools or interface pools of type K or J serve as containers for the respective classes and interfaces. Each class or interface pool contains the definition of a single class or interface. The programs are automatically generated by the Class Builder when you create a class or interface.
    A class pool is comparable to a module pool or function group. It contains both declarative and executable ABAP statements, but cannot be started on its own. The runtime system can create runtime instances (objects) through a request using the CREATE OBJECT statement. These objects execute the statements of the class pool.
    Interface pools do not contain any executable statements. Instead, they are used as containers for interface definitions. When you implement an interface in a class, the interface definition is implicitly included in the class definition.
    Structure of a Class Pool
    Class pools are structured as follows:
    Class pools contain a definition part for type declarations, and the declaration and implementation parts of the class.
    Differences From Other ABAP Programs
    Class pools are different from other ABAP programs for the following reasons:
    ·        ABAP programs such as executable programs, module pools, or function modules, usually have a declaration part in which the global data for the program is defined. This data is visible in all of the processing blocks in the program. Class pools, on the other hand, have a definition part in which you can define data and object types, but no data objects or field symbols. The types that you define in a class pool are only visible in the implementation part of the global class.
    ·        The only processing blocks that you can use are the declaration part and implementation part of the global class. The implementation part may only implement the methods declared in the global class. You cannot use any of the other ABAP processing blocks (dialog modules, event blocks, subroutines, function modules).
    ·        The processing blocks of class pools are not controlled by the ABAP runtime environment. No events occur, and you cannot call any dialog modules or procedures. Class pools serve exclusively for class programming. You can only access the data and functions of a class using its interface.
    ·        Since events and dialog modules are not permitted in classes, you cannot process screens in classes. You cannot program lists and selection screens in classes, since they cannot react to the appropriate events. It is intended to make screens available in classes. Instead of dialog modules, it will be possible to call methods of the class from the screen flow logic.
    Local Classes in Class Pools
    The classes and interfaces that you define in the definition part of a class pool are not visible externally. Within the class pool, they have a similar function to local classes and interfaces in other ABAP programs. Local classes can only be instantiated in the methods of the global class. Since subroutines are not allowed in class pools, local classes are the only possible modularization unit in global classes. Local classes have roughly the same function for global classes as subroutines in function groups, but with the significant exception that they are not visible externally
    Reward points if useful....
    Regards
    AK

  • Program of type Class Pool

    When we create a class in the Class Builder i.e. SE24, a program of type Class Pool is generated automatically. Where will we find the name of that program?
    Thanks,
    Ibrahim

    Hello Ibrahim
    In the TADIR table you will find only the object entry for your class (e.g. R3TR CLAS ZCL_MY_CLASS).
    However, table PROGDIR contains all the sub-objects of your class (Macros section not available).
    In addition, you may find class CL_OO_CLASSNAME_SERVICE useful.
    Regards
      Uwe

  • Difference between Class Pool program and Interface Pool program

    Both Class Pool program and an Interface Pool program indicate that the program contains interfaces that other programs can use globally. What exactly is the difference between them?

    Transparent Table :
    Exists with the same structure both in dictionary as well as in database exactly with the same data and fields.
    " Pooled Table :
    Pooled tables are logical tables that must be assigned to a table pool when they are defined. Pooled tables are used to store control data. Several pooled tables can be cominied in a table pool. The data of these pooled tables are then sorted in a common table in the database.
    " Cluster Table :
    Cluster tables are logical tables that must be assigned to a table cluster when they are defined. Cluster tables can be used to strore control data. They can also be used to store temporary data or texts, such as documentation.
    " what is the major difference between Standard tables, Pooled tables and
    " Clusterd Tables?
    A transparent table is a table that stores data directly. You can read these tables directly on the database from outside SAP with for instance an SQL statement.
    Transparent table is a one to one relation table i.e. when you create one transparent table then exactly same table will create in data base and if is basically used to store transaction data.
    A clustered and a pooled table cannot be read from outside SAP because certain data are clustered and pooled in one field.
    One of the possible reasons is for instance that their content can be variable in length and build up. Database manipulations in Abap are limited as well.
    But pool and cluster table is a many to one relationship table. This means many pool table store in a database table which is know as table pool.
    All the pool table stored table in table pool does not need to have any foreign key relationship but in the case of cluster table it is must. And pool and cluster table is basically use to store application data.
    Table pool can contain 10 to 1000 small pool table which has 10 to 100 records. But cluster table can contain very big but few (1 to 10) cluster table.
    For pool and cluster table you can create secondary index and you can use select distinct, group for pool and cluster table. You can use native SQL statement for pool and cluster table.
    A structure is a table without data. It is only filled by program logic at the moment it is needed starting from tables.
    A view is a way of looking at the contents of tables. It only contains the combination of the tables at the basis and the way the data needs to be represented. You actually call directly upon the underlying tables.
    . Transparent tables (BKPF, VBAK, VBAP, KNA1, COEP)
    Allows secondary indexes (SE11->Display Table->Indexes)
    Can be buffered (SE11->Display Table->technical settings) Heavily updated tables should not be buffered.
    II. Pool Tables (match codes, look up tables)
    Should be accessed via primary key or
    Should be buffered (SE11->Display Table->technical settings)
    No secondary indexes
    Select * is Ok because all columns retrieved anyway
    III. Cluster Tables (BSEG,BSEC)
    Should be accessed via primary key - very fast retrieval otherwise very slow
    No secondary indexes
    Select * is Ok because all columns retrieved anyway.
    Performing an operation on multiple rows is more efficient than single row operations.
    Therefore you still want to select into an internal table.
    If many rows are being selected into the internal table,
    you might still like to retrieve specific columns to cut down on the memory required.
    Statistical SQL functions (SUM, AVG, MIN, MAX, etc) not supported
    Can not be buffered
    IV. Buffered Tables (includes both Transparent & Pool Tables)
    While buffering database tables in program memory (SELECT into internal table) is generally a good idea for performance,
    it is not always necessary.
    Some tables are already buffered in memory.
    These are mostly configuration tables.
    If a table is already buffered, then a select statement against it is very fast.
    To determine if a table is buffered, choose the 'technical settings' soft button from the data dictionary
    display of a table (SE12). Pool tables should all be buffered.
    More at this link.
    http://help.sap.com/saphelp_erp2004/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
    Transparent Table:
    Exists with the same structure both in dictionary as well as in database exactly with the same data and fields.
    Pooled Table:
    Pooled tables are logical tables that must be assigned to a table pool when they are defined. Pooled tables are used to store control data. Several pooled tables can be cominied in a table pool. The data of these pooled tables are then sorted in a common table in the database.
    Cluster Table:
    Cluster tables are logical tables that must be assigned to a table cluster when they are defined. Cluster tables can be used to strore control data. They can also be used to store temporary data or texts, such as documentation.
    A transparent table is a table that stores data directly. You can read these tables directly on the database from outside SAP with for instance an SQL statement.
    Transparent table is a one to one relation table i.e. when you create one transparent table then exactly same table will create in data base and if is basically used to store transaction data.
    A clustered and a pooled table cannot be read from outside SAP because certain data are clustered and pooled in one field.
    One of the possible reasons is for instance that their content can be variable in length and build up. Database manipulations in Abap are limited as well.
    But pool and cluster table is a many to one relationship table. This means many pool table store in a database table which is know as table pool.
    All the pool table stored table in table pool does not need to have any foreign key relationship but in the case of cluster table it is must. And pool and cluster table is basically use to store application data.
    Table pool can contain 10 to 1000 small pool table which has 10 to 100 records. But cluster table can contain very big but few (1 to 10) cluster table.
    For pool and cluster table you can create secondary index and you can use select distinct, group for pool and cluster table. You can use native SQL statement for pool and cluster table.
    A structure is a table without data. It is only filled by program logic at the moment it is needed starting from tables.
    A view is a way of looking at the contents of tables. It only contains the combination of the tables at the basis and the way the data needs to be represented. You actually call directly upon the underlying tables.
    http://www.datamanagementgroup.com/Resources/Articles/Article_0106_2.asp
    more info
    http://help.sap.com/saphelp_erp2004/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
    http://cma.zdnet.com/book/abap/ch03/ch03.htm
    Check this links.
    http://help.sap.com/saphelp_40b/helpdata/en/4f/991f82446d11d189700000e8322d00/applet.htm
    http://www.techinterviews.com/?p=198

  • DataSource-class pool-JNDI-bind-lookup

    Hi,
    I am a beginner in this subject and it is confused. I read that
    the best way to use the connections is from a DataSource. There
    are 2 ways to configure it:
    1- From the data-source.xml file
    2- Or using InitialContext, Context and bind method from a java
    program loaded in the startup.
    If so, which one is better?
    On the other hand, there are some classes I can use, for
    instance:
    1- OracleConnectionCacheImpl
    2- OracleConnectionPoolDataSource
    etc.
    which one is better?
    Thank you very much for any comment.
    Andres.

    Hi:
    upon further research, i find that the data
    that was used in State class at binding does not change on any update,
    like via foll -
    State s = (State)ic.lookup(JNDINAME);
    s.addHashtableEntry (key, val); or
    s.setDesc ("new desc");
    next time i lookup State class the hashtable entry is missing and desc is
    old and not "new desc".
    any help appreciated.
    thanks
    rajans
    Rajan Sadasivan wrote:
    Hi:
    I am using jdk1.3, weblogic6.0
    I am binding a state class like ->
    public class State implements Serializable {
    private String desc;
    private Hashtable sessions;
    onto the JNDI tree. Binding is done like initialCxt.bind (name,
    _state);
    and state's sessions has one entry in it and state's desc is set.
    I then use another client to do _initialCxt.lookup (name) on same
    weblogic JVM.
    The _state object is returned with correct value of desc; but the
    sessions
    hashtable is empty and the single entry is gone. I do see also the the
    State's finialize () method is called.
    Can anyone explain why i am losing hashtable information ?
    How do I make this work in weblogic jndi with hashtable info ?
    thanks
    rajans

  • Calling a Function Pool inside a Class

    Hi,
        I want to call a Function Pool inside a Class Method. I am getting an Error that 'Report or Program Statement already exists' when I call the function pool in the method. can anybody help me on how to call a Function Pool inside a class method.

    Hello Krish
    Based on your error description I assume that you have tried to "insert" the function pool program (e.g. function group ZFUNC -> SAPLZFUNC) into your class.
    You cannot do that. The explanation for the error message is a following:
    - The class contains already a program statement (CLASS-POOL). If there is somewhere in the class an additional program statement (e.g. FUNCTION-POOL) you will get the error.
    In addition, you cannot "call" a function pool. Instead you can always call the function modules of your function group.
    Regards
      Uwe

  • Questions about ABAP Unit (Integrate in class / encapsulate DB access)

    Hi,
    i have allready done some Unit Tests. Till this post i have created a report and put my test class definition / implementation there. The report is just a wrapper for testing. The functionallity is impelemented in classes.
    My first Question is how to integrate the test code in my class. In all examples they put the code beneath the class implementation. How do i get there? In se80 i can only see the public definition.
    The other question is about testing methods, which contains database access. How can i encapsulate the db access for tests. I read abput implementing a seperate class, which handles all db related actions.
    Bye Richard.

    Hello Richard,
    it is recommended to keep the domain code and the test code within the same program. Depending on the release in use a Class-Pool (program) offers an implementation include (for any local class) or possibly also a dedicaded test class include.
    Put the definition and the implementation of your unit test into one of this includes.
    In case your code under test has hard to test dependencies you need to break them. After the hard to test dependency (such as repository access) is separated it can be replaced by use of test doubles (see also http://www.xunitpatterns.com).
    Propably the following approach is the easiest one:
    - put any db access into a separate method
    - create a local subclass as test double that overwrites exactely the db access methods with test friendly code
    - run your unit test logic against this local test double
    The say "cleaner" way is to:
    - separate the db access to a dedicated repository service class (with instance methods of course).
    - create a test double of this repository class
    - use the technique "dependency injection" and run your test
    Best Regards
      Klaus

  • Macro swc_set_objectkey in ABAP Class

    Hello,
    I want to use macro swc_set_objectkey in ABAP class.  macro swc_set_objectkey is present in include <object>. I can not include <object> in ABAP class because it gives syntax error "You may only define classes, interfaces, or types in a CLASS-POOL". Can you please let me know what should be done in this case ?
    Edited by: Ashwin Sonkusare on Apr 6, 2011 1:55 PM

    Hi Rick,
    Is possible to use macros in abap classes ,
    review link
    http://help.sap.com/saphelp_nw70/helpdata/en/c5/e4b130453d11d189430000e829fbbd/frameset.htm
    Regards.
    maopacheco.

  • How to Create a Instance of Business Object Inside a class?

    Hi All,
           I am facing a problem regarding ,  creating a instance of BO inside a global class ( SE24 ). Initially I have included <CNTN02> in the class and i even tried to use the MACRO SWC_CREATE_OBJECT but , the main issue is that my method exporting parameter is not accepting the type SWC_OBJECT in the class for this reason I am not able to pass the instance of the BO.
    Any suggestions
    Can we acheive this through classes
    Do I need to perform Type casting?
    Thanks In Advance
    Pavan

    Hello Pavan
    On ERP 6.0 you find the following documentation in include :
    * BITTE NEUES INCLUDE CNTN01_SWC benutzen!!!
    * Dieses Include führt bei der Nutzung innerhalb eines CLASS-POOLS zu
    * einer Vielzahl von Warnungen. Um dieses zu vermeiden, bitte das oben
    * genannte Include in den lokalen Implementierungsteil einer gloabeln
    * Klasse inkludieren.
    *************************** Macros *************************************
    * Types
    TYPES:
      swc_object LIKE obj_record.
    Basically it says that you should replace this include with the new include CNTN01_SWC.
    If you add type-pool SWC0 to the properties section of your global class you can define method parameters having type SWC0_OBJECT which should be identical to SWC_OBJECT:
    TYPE-POOL swc0.
    * Types
    TYPES:
      swc0_object LIKE obj_record.
    Regards
      Uwe

  • Abap Class - Friend

    Hello Forum,
    What is the 'Friend' defined in a Class?
    What is its role and how is it used together with Methods?
    Any easy to understand materials on Abap class would be greatly appreciated.
    Thanks!
    Best regards,
    S.Patel

    Hi
    Classes
    LIKE-Zusatz
    Classes are templates for objects. Conversely, you can say that the type of an object is the same as its class. A class is an abstract description of an object. You could say that it is a set of instructions for building an object. The attributes of objects are defined by the components of the class, which describe the state and behavior of objects.
    Local and Global Classes
    Classes in ABAP Objects can be declared either globally or locally. You define global classes and interfaces in the Class Builder (Transaction SE24) in the ABAP Workbench. They are stored centrally in class pools in the class library in the R/3 Repository. All of the ABAP programs in an R/3 System can access the global classes. Local classes are defined within an ABAP program. Local classes and interfaces can only be used in the program in which they are defined. When you use a class in an ABAP program, the system first searches for a local class with the specified name. If it does not find one, it then looks for a global class. Apart from the visibility question, there is no difference between using a global class and using a local class.
    There is, however, a significant difference in the way that local and global classes are designed. If you are defining a local class that is only used in a single program, it is usually sufficient to define the outwardly visible components so that it fits into that program. Global classes, on the other hand, must be able to be used anywhere. This means that certain restrictions apply when you define the interface of a global class, since the system must be able to guarantee that any program using an object of a global class can recognize the data type of each interface parameter.
    The following sections describe how to define local classes and interfaces in an ABAP program. For information about how to define local classes and interfaces, refer to the  Class Builder section of the ABAP Workbench Tools documentation.
    Defining Local Classes
    Local classes consist of ABAP source code, enclosed in the ABAP statements CLASS ... ENDCLASS. A complete class definition consists of a declaration part and, if required, an implementation part. The declaration part of a class <class> is a statement block:
    CLASS <class> DEFINITION.
    ENDCLASS.
    It contains the declaration for all components (attributes, methods, events) of the class. When you define local classes, the declaration part belongs to the global program data. You should therefore place it at the beginning of the program.
    If you declare methods in the declaration part of a class, you must also write an implementation part for it. This consists of a further statement block:
    CLASS <class> IMPLEMENTATION.
    ENDCLASS.
    The implementation part of a class contains the implementation of all methods of the class. The implementation part of a local class is a processing block. Subsequent coding that is not itself part of a processing block is therefore not accessible.
    Structure of a Class
    The following statements define the structure of a class:
    A class contains components
    Each component is assigned to a visibility section
    Classes implement methods
    The following sections describe the structure of classes in more detail.
    Class Components
    The components of a class make up its contents. All components are declared in the declaration part of the class. The components define the attributes of the objects in a class. When you define the class, each component is assigned to one of the three visibility sections, which define the external interface of the class. All of the components of a class are visible within the class. All components are in the same namespace. This means that all components of the class must have names that are unique within the class.
    There are two kinds of components in a class - those that exist separately for each object in the class, and those that exist only once for the whole class, regardless of the number of instances. Instance-specific components are known as instance components. Components that are not instance-specific are called static components.
    In ABAP Objects, classes can define the following components. Since all components that you can declare in classes can also be declared in interfaces, the following descriptions apply equally to interfaces.
    Attributes
    Attributes are internal data fields within a class that can have any ABAP data type. The state of an object is determined by the contents of its attributes. One kind of attribute is the reference variable. Reference variables allow you to create and address objects. Reference variables can be defined in classes, allowing you to access objects from within a class.
    Instance Attributes
    The contents of instance attributes define the instance-specific state of an object. You declare them using the DATA statement.
    Static Attributes
    The contents of static attributes define the state of the class that is valid for all instances of the class. Static attributes exist once for each class. You declare them using the CLASS-DATA statement. They are accessible for the entire runtime of the class.
    All of the objects in a class can access its static attributes. If you change a static attribute in an object, the change is visible in all other objects in the class.
    Methods
    Methods are internal procedures in a class that define the behavior of an object. They can access all of the attributes of a class. This allows them to change the data content of an object. They also have a parameter interface, with which users can supply them with values when calling them, and receive values back from them The private attributes of a class can only be changed by methods in the same class.
    The definition and parameter interface of a method is similar to that of function modules. You define a method <met> in the definition part of a class and implement it in the implementation part using the following processing block:
    METHOD <meth>.
    ENDMETHOD.
    You can declare local data types and objects in methods in the same way as in other ABAP procedures (subroutines and function modules). You call methods using the CALL METHOD statement.
    Instance Methods
    You declare instance methods using the METHODS statement. They can access all of the attributes of a class, and can trigger all of the events of the class.
    Static Methods
    You declare static methods using the CLASS-METHODS statement. They can only access static attributes and trigger static events.
    Special Methods
    As well as normal methods, which you call using CALL METHOD, there are two special methods called CONSTRUCTOR and CLASS_CONSTRUCTOR, which are automatically called when you create an object (CONSTRUCTOR) or when you first access the components of a class (CLASS_CONSTRUCTOR).
    Events
    Objects or classes can use events to trigger event handler methods in other objects or classes. In a normal method call, one method can be called by any number of users. When an event is triggered, any number of event handler methods can be called. The link between the trigger and the handler is not established until runtime. In a normal method call, the calling program determines the methods that it wants to call. These methods must exist. With events, the handler determines the events to which it wants to react. There does not have to be a handler method registered for every event.
    The events of a class can be triggered in the methods of the same class using the RAISE EVENT statement. You can declare a method of the same or a different class as an event handler method for the event <evt> of class <class> using the addition FOR EVENT <evt> OF <class>.
    Events have a similar parameter interface to methods, but only have output parameters. These parameters are passed by the trigger (RAISE EVENT statement) to the event handler method, which receives them as input parameters.
    The link between trigger and handler is established dynamically in a program using the SET HANDLER statement. The trigger and handlers can be objects or classes, depending on whether you have instance or static events and event handler methods. When an event is triggered, the corresponding event handler methods are executed in all registered handling classes.
    Instance Events
    You declare instance events using the EVENTS statement. An instance event can only be triggered in an instance method.
    Static Events
    You declare static events using the CLASS-EVENTS statement. All methods (instance and static methods) can trigger static events. Static events are the only type of event that can be triggered in a static method.
    See also Triggering and Handling Events.
    Types
    You can define your own ABAP data types within a class using the TYPES statement. Types are not instance-specific, and exist once only for all of the objects in a class.
    Constants
    Constants are special static attributes. You set their values when you declare them, and they can then no longer be changed. You declare them using the CONSTANTS statement. Constants are not instance-specific, and exist once only for all of the objects in a class.
    Visibility Sections
    You can divide the declaration part of a class into up to three visibility areas:
    CLASS <class> DEFINITION.
      PUBLIC SECTION.
      PROTECTED SECTION.
      PRIVATE SECTION.
    ENDCLASS.
    These areas define the external visibility of the class components, that is, the interface between the class and its users. Each component of a class must be assigned to one of the visibility sections.
    Public Section
    All of the components declared in the public section are accessible to all users of the class, and to the methods of the class and any classes that inherit from it. The public components of the class form the interface between the class and its users.
    Protected Section
    All of the components declared in the protected section are accessible to all methods of the class and of classes that inherit from it. Protected components form a special interface between a class and its subclasses. Since inheritance is not active in Release 4.5B, the protected section currently has the same effect as the private section.
    Private Section
    Components that you declare in the private section are only visible in the methods of the same class. The private components are not part of the external interface of the class.
    Encapsulation
    The three visibility areas are the basis for one of the important features of object orientation - encapsulation. When you define a class, you should take great care in designing the public components, and try to declare as few public components as possible. The public components of global classes may not be changed once you have released the class.
    For example, public attributes are visible externally, and form a part of the interface between an object and its users. If you want to encapsulate the state of an object fully, you cannot declare any public attributes. As well as defining the visibility of an attribute, you can also protect it from changes using the READ-ONLY addition.
    Refer the following link
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5c54f411d194a60000e8353423/frameset.htm

  • OO ABAP is a must or not for Module Pool

    Hi all,
      I want a valuable suggetion from you.
    Is Object Oriented ABAP Programming is a must for Module Pool Programmer not. Because, I think I am preti much confident abt Module Pool but not in OO ABAP.
    Please help me out my doubt.
    Thanks & Regards,
    Ajoy Chatterjee

    Sorry, can't agree that they are obsolete... I've done dozens of dialog programs over the last few years, with more on the current "to do" list...  it depends on what you client site are doing - if they want online data entry transactions inside the SAPGui, then that's what you build.
    As you can't have screens in a class pool, so you're going to need to define these dynpros somewhere else (although my usual preference is having them within function groups rather than module pools).
    But I do agree that getting your head around ABAP OO is unavoidable - and can add a level of elegance to your code if implemented well, and add a level of future-proofing when it comes time to change your presentation layer to Web Dynpro or whatever, or exposing some logic via web services. 
    However you can stil make "classic" ABAP elegant - there's little difference between the readability of :
    call method z_my_class=>get_region_of_rental_object
      exporting
        io_contract = ls_contract
      importing
        rd_region   = l_region
        os_return   = ls_return
      exceptions
        others      = 1.
    and
    call function 'Z_GET_REGION_OF_RENTAL_OBJECT'
      exporting
        io_contract = ls_contract
      importing
        rd_region   = l_region
        os_return   = ls_return
      exceptions
        others      = 1.
    i.e. it's often the way you modularise and encapsulate your logic that is the most important step.
    Jonathan
    p.s. perhaps this should head off to the Coffee Corner...!

  • Error in class method

    Hi Friends,
    i am facing one problem while preparing code in proxy class method. i need to use same code so many places in my class method for that purpose  i was trying to use perform statements but system is giving syntax error 'Forms can not be defined in a class pool For this reason, there are no perform statements for internal FORM'S'.
    With out perform statements how to handle the repetative logic in same program. Any help will be highly appreciated.
    Thanks a lot in advance.

    If you are talking about global classes,
    then go to SE24 and create your class.
    In the class go to Methods tab, give a name to your method, Define it as a static method, if you want the values to be persisted and not specific to the instances that are created based on your class.
    Give the visibility as private, becuase you want these private methods only to be called in your class only.
    Then click on parameters and define your exporting and importing parameters.
    Double click on the method name and have your repetitive code there.
    YOu can call this method in other methods of the class using
    call method <method name>statement.
    Regards,
    Ravi

  • Does abap unit testclass can get acces to private methods of classes to tes

    Hi,
    I want to do a abap unit test inside a user program. the program calls my class and i want some of the methods there to be tested (i.e. db layer, some business logic etc).
    My problem is, that I can define unit test very goog on program level or even for public methods of the class.
    But what should I do if I want the maybe 3 private methods called by the public method to be tested standalone?
    Does anyone have a idea for that?
    THX
    regards,
    Jens

    Hello Jens,
    you may test private methods with the help of the FRIEND statement. For sample you place a local testclass in the class pool. In order to get friendship you may than use the following sequence of statements.
      class ltc_Repository definition deferred.
      class cl_Global definition local friends ltc_Repository.
      class ltc_Repository                     "#AU Risk Level Harmless
        definition for testing.
        private section.
          methods:
            retrieve_Fails_For_Bad_Key   for testing,
            update_Fails_For_Dup_Key     for testing.
    endclass.
    or
      interface lif_Unit_Test.
      endinterface.
      class cl_Global definition local friends lif_Unit_Test.
      class ltc_Repository                     "#AU Risk Level Harmless
        definition for testing.
        public section.
          interfaces: lif_Unit_Test.
        private section.
          methods:
            retrieve_Fails_For_Bad_Key   for testing,
            update_Fails_For_Dup_Key     for testing.
    endclass.
    By this technique you can grant access to private members of the global class to any local class. Without exposing something to the outside world! This code can be placed in the local implementation include of the class pool, or in test class include from release 7.02 onwards.
    Using transaction /nABAPHELP provides all details on the FRIEND statement.
    Testing private methods can be useful but also tends to result in [fragile tests|http://xunitpatterns.com/Fragile%20Test.html]. That means changes to the implementation may make your test turn red without any violation of the outside contract.
    Ciao
      Klaus

  • Type Pools

    Hi All,
         What is meant By Type pools and Class pools. It contains Types like SLIS,    VRM. What is the use of it.
      Thanks in Advance

    Vijay ,
      Pls. go through this.
    10.     What is a table pool?
    A table pool (or pool) is used to combine several logical tables in the ABAP/4 Dictionary.  The definition of a pool consists of at least two key fields and a long argument field (VARDATA).
    11.     What are pooled tables?
    These are logical tables, which must be assigned to a table pool when they are defined.  Pooled tables can be used to store control data (such as screen sequences or program parameters).
    Pls. mark if useful
    12.     What is a table cluster?
    A table cluster combines several logical tables in the ABAP/4 Dictionary.  Several logical rows from different cluster tables are brought together in a single physical record.  The records from the cluster tables assigned to a cluster are thus stored in a single common table in the database.

Maybe you are looking for

  • How can I fix my Superdrive slot on my MacBook Pro 2012?

    I installed a brand new SSD in my MacBook Pro 2012 yesterday. To do this, I cloned my [then] existing HDD to it using SuperDuper!. Now, my DVD slot won't accept discs. I tried opening DVD player and it said that "a valid DVD drive could not be found"

  • Delete adjusent rec while DTP

    I just want to delete adjacent records while loading DTP, since the "Start routine" logic was incorporated. Adjacent Records are not getting deleted because of the comparison takes place in different data packages.Pls let me know how to handle this i

  • Opening files in a specific application

    Sometimes, when I try to open files, the wrong program is opened for the specified file... (CSV files are opening in excel 2011 [should be 2008], BIN files are opening in unarchiver [there are two different apps that should open these files usually],

  • How to upload time in BI from excel - Urgent

    Hi all, In my excel file, the time column is in the following format : 14:59:51 16:32:36 15:13:37 16:17:39 18:05:44 14:50:52 13:50:46 15:43:01 9:51:07 But in datasource field, it is always uploaded as Char field of length 8 instead of TIMS. How can i

  • HT1918 How do i change my security question and answers?

    When i wanna purchase something it asks me for two security questions and i totally forgot the anawers, any idea how to change them? Cheers