Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ME variable

Former Member
0 Likes
911

Hi,

Can we able use a me variable to access a private class methods in friends.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
843

Hi kanya Devi Sekar,

                     No,We cant access a private class method in another class using me variable though satisfying friend function.need to create an instance in the sub class to access the private class methods.

CLASS SUB DEFINITION DEFERRED.

CLASS SU DEFINITION FRIENDS SUB.

PROTECTED SECTION.

METHODS PRO.

PRIVATE SECTION.

METHODS PRI.

ENDCLASS.

CLASS SU IMPLEMENTATION.

METHOD PRI.

WRITE : 'PRIVATE METHOD'.

ENDMETHOD.

METHOD PRO.

   WRITE : 'PROTECTED METHOD'.

ENDMETHOD.

ENDCLASS.

CLASS SUB DEFINITION.

PUBLIC SECTION.

METHODS CALLPRIVATE.

ENDCLASS.

CLASS SUB IMPLEMENTATION.

METHOD CALLPRIVATE.

* DATA OBJ1 TYPE REF TO SU.

*CREATE OBJECT OBJ1.

CALL METHOD me->PRI."CALL METHOD obj1->PRI.

CALL METHOD me->PRO."CALL METHOD obj1->PRI.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

DATA OBJ TYPE REF TO SUB.

CREATE OBJECT OBJ.

CALL METHOD obj->CALLPRIVATE.

see the error in image.

the following code snippet will give solution to the above probelm.

CLASS sub DEFINITION DEFERRED.

*----------------------------------------------------------------------*

*       CLASS SU DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS su DEFINITION FRIENDS sub.

   PROTECTED SECTION.

     METHODS pro.

   PRIVATE SECTION.

     METHODS pri.

ENDCLASS.                    "SU DEFINITION

*----------------------------------------------------------------------*

*       CLASS SU IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS su IMPLEMENTATION.

   METHOD pri.

     WRITE : 'PRIVATE METHOD'.

   ENDMETHOD.                    "PRI

   METHOD pro.

     WRITE : 'PROTECTED METHOD'.

   ENDMETHOD.                    "PRO

ENDCLASS.                    "SU IMPLEMENTATION

*----------------------------------------------------------------------*

*       CLASS SUB DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS sub DEFINITION.

   PUBLIC SECTION.

     METHODS callprivate.

ENDCLASS.                    "SUB DEFINITION

*----------------------------------------------------------------------*

*       CLASS SUB IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS sub IMPLEMENTATION.

   METHOD callprivate.

     DATA obj1 TYPE REF TO su.

     CREATE OBJECT obj1.

     CALL METHOD obj1->pri.

     CALL METHOD obj1->pri.

   ENDMETHOD.                    "CALLPRIVATE

ENDCLASS.                    "SUB IMPLEMENTATION

START-OF-SELECTION.

   DATA obj TYPE REF TO sub.

   CREATE OBJECT obj.

   CALL METHOD obj->callprivate.

5 REPLIES 5
Read only

Former Member
0 Likes
844

Hi kanya Devi Sekar,

                     No,We cant access a private class method in another class using me variable though satisfying friend function.need to create an instance in the sub class to access the private class methods.

CLASS SUB DEFINITION DEFERRED.

CLASS SU DEFINITION FRIENDS SUB.

PROTECTED SECTION.

METHODS PRO.

PRIVATE SECTION.

METHODS PRI.

ENDCLASS.

CLASS SU IMPLEMENTATION.

METHOD PRI.

WRITE : 'PRIVATE METHOD'.

ENDMETHOD.

METHOD PRO.

   WRITE : 'PROTECTED METHOD'.

ENDMETHOD.

ENDCLASS.

CLASS SUB DEFINITION.

PUBLIC SECTION.

METHODS CALLPRIVATE.

ENDCLASS.

CLASS SUB IMPLEMENTATION.

METHOD CALLPRIVATE.

* DATA OBJ1 TYPE REF TO SU.

*CREATE OBJECT OBJ1.

CALL METHOD me->PRI."CALL METHOD obj1->PRI.

CALL METHOD me->PRO."CALL METHOD obj1->PRI.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

DATA OBJ TYPE REF TO SUB.

CREATE OBJECT OBJ.

CALL METHOD obj->CALLPRIVATE.

see the error in image.

the following code snippet will give solution to the above probelm.

CLASS sub DEFINITION DEFERRED.

*----------------------------------------------------------------------*

*       CLASS SU DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS su DEFINITION FRIENDS sub.

   PROTECTED SECTION.

     METHODS pro.

   PRIVATE SECTION.

     METHODS pri.

ENDCLASS.                    "SU DEFINITION

*----------------------------------------------------------------------*

*       CLASS SU IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS su IMPLEMENTATION.

   METHOD pri.

     WRITE : 'PRIVATE METHOD'.

   ENDMETHOD.                    "PRI

   METHOD pro.

     WRITE : 'PROTECTED METHOD'.

   ENDMETHOD.                    "PRO

ENDCLASS.                    "SU IMPLEMENTATION

*----------------------------------------------------------------------*

*       CLASS SUB DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS sub DEFINITION.

   PUBLIC SECTION.

     METHODS callprivate.

ENDCLASS.                    "SUB DEFINITION

*----------------------------------------------------------------------*

*       CLASS SUB IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS sub IMPLEMENTATION.

   METHOD callprivate.

     DATA obj1 TYPE REF TO su.

     CREATE OBJECT obj1.

     CALL METHOD obj1->pri.

     CALL METHOD obj1->pri.

   ENDMETHOD.                    "CALLPRIVATE

ENDCLASS.                    "SUB IMPLEMENTATION

START-OF-SELECTION.

   DATA obj TYPE REF TO sub.

   CREATE OBJECT obj.

   CALL METHOD obj->callprivate.

Read only

Former Member
0 Likes
843

This message was moderated.

Read only

Former Member
0 Likes
843

You cannot. When defining classes in Se24,

1. Define the other class in Friends tab,

2. In attributes tab, create a new global attribute, GV_OBJECT type ref to (friend class)

3. In constructor or a method where the class would be first accessed, use CREATE OBJECT GV_OBJECT

4. The you can use the variable globally.

Cheers,

VS

Read only

Sandra_Rossi
Active Contributor
0 Likes
843

As it's a beginner question (in ABAP objects), I'm afraid that maybe the question is not correctly formulated. Could you give more info on the context, code...? Why did you ask this question?

Read only

Former Member
0 Likes
843

Hi Devi,

Me variable is used for the self reference so we cant use..Within the class only we can use.

If you want access then create reference and access it.

Thanks & Regards

@Surendra@