Mentor SAP
2017-07-12 Submitted by:- Admin

Definition Deferred has been used for defining ABC class. The logic and procedure are similar to the tutorial - Private Friends of a Class. Here we have defined the friend class in another way like CLASS XYZ DEFINITION FRIENDS ABC.

REPORT zprivate_friend_deferred.

CLASS abc DEFINITION DEFERRED.

*----------------------------------------------------------------------*
*       CLASS XYZ DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS xyz DEFINITION FRIENDS abc.
  PROTECTED SECTION.
    DATA v_pro TYPE char50.
  PRIVATE SECTION.
    DATA v_txt TYPE char50.
    METHODS m_xyz.
ENDCLASS.                    "XYZ DEFINITION

*----------------------------------------------------------------------*
*       CLASS XYZ IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS xyz IMPLEMENTATION.
  METHOD m_xyz.
    v_pro = 'Protected Data of Friend Class'.
    v_txt = 'Private Data of Friend Class'.
    WRITE: / 'Private Method:',
           / v_pro,
           / v_txt.
    SKIP.
  ENDMETHOD.                                                "m_XYZ
ENDCLASS.                    "XYZ IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS ABC DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS abc DEFINITION.
  PUBLIC SECTION.
    METHODS m_abc.
ENDCLASS.                    "ABC DEFINITION

*----------------------------------------------------------------------*
*       CLASS ABC IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS abc IMPLEMENTATION.
  METHOD m_abc.
    DATA obj2 TYPE REF TO xyz.
    CREATE OBJECT obj2.
    CALL METHOD obj2->m_xyz.

    obj2->v_pro = 'Protected Data of First Class'.
    obj2->v_txt = 'Private Data of First Class'.
    WRITE: / obj2->v_pro,
           / obj2->v_txt.
  ENDMETHOD.                                                "m_ABC
ENDCLASS.                    "ABC IMPLEMENTATION

* Start of selection
START-OF-SELECTION.

* Data Declaration
  DATA obj1 TYPE REF TO abc.

* Create object
  CREATE OBJECT obj1.

* Call method
  CALL METHOD obj1->m_abc.

 

Output