Você está na página 1de 22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

GettingStarted Newsletters

Welcome,Guest

Login

Register

Store

SearchtheCommunity

Products

Services&Support

AboutSCN

Downloads

Industries

Training&Education

Partnership

DeveloperCenter

LinesofBusiness

UniversityAlliances

Events&Webinars

Innovation

ABAPDevelopment / ABAPObjects

ABAPOBJECTSSTEPBYSTEPGUIDE
AddedbyVikrantTrivedi,lasteditedbyVikrantTrivedionApr28,2008
SUMMARY
ThisisastepbystepguidetolearnABAPObjects.TypicallyusedtoenableABAPdeveloperstoplacetheirfirststepintoABAPObjects.Thisguideincludesexampleswithreadytousesourcecodes(with
output)toexplaineverytopic.
PREREQUISITES
ThisguideassumesthatthereaderhasagoodknowledgeofABAPWorkbenchFundamentalsandhashandsonexperienceofcreatingReportProgramsaswellasModulePoolPrograms.
AUTHER
AUTHER:VikrantTrivedi
SAPTechnicalConsultant
(ABAP+WebDynpro+EP)
COMPANY:VCERPConsultingPvt.Ltd.
CREATEDON:18April2008

CONTENTS
BasicTerminology
Classes
Objects/Instances
Attributes
Methods
Constructor
ObjectIdentityandReferenceSemantics
Visibility
Events
Inheritance
Polymorphism
Interfaces
ALVGridControl
ALVGridControlUsingEvents
ALVGridControlUsingFieldCatalogs

BASICTERMINOLOGY
Foralongtimeitwasstandardpracticeinsoftwaredevelopmenttosubdividesoftwaresystemsaccordingtothesystem'sfunctions.Objectorientationtakesanotherapproach.Insteadofconcentratingon
functions,theobjectorientedapproachconcentratesondataabstractionsusingsocalledClasses.

CLASSES
Classesarethecentralelementofobjectorientation.AClassdescribesageneralelementorageneralconcept.Classesrealizeanabstractdatatype.Classescontaincomponentslike:Attributes,
MethodsandEvents.Thesecomponentsaredescribedlaterinthisdocument.InABAPObjectsclassesaremadeupofadefinitionandanimplementationpart.
CLASSCL_CLASSNAMEDEFINITION.
ENDCLASS.
CLASSCL_CLASSNAMEIMPLEMENTATION.
ENDCLASS.

OBJECTS/INSTANCES
AnobjectisnothingmorethananinstanceofaClass.
ObjectAperson,place,thing,concept,oreventthatisapplicabletothesystemathand.Objectsbothknowthings(i.e.,theyhavedata)andtheydothings(i.e.theyhavefunctionality).
InABAPObjects,objectsarecreatedwiththecommandCREATEOBJECT.Thedeveloperreceivesanobjectreferenceasaresultofitscreation:
DATA:instanceTYPEREFTOCL_CLASSNAME.
STARTOFSELECTION.
CREATEOBJECTinstance.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

1/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

ATTRIBUTES
Attributescantakeonvalueswithinanobjectatruntime.Thesumofallattributesandtheirvaluesdescribesthestateofanobject.
AttributescanbedefinedasinstancedependentaswellasClassdependent.Classattributes(Classattributesarealsocalledstaticattributes.)arenottiedtoasingleinstance,ratherthey"belong"toall
instancesoftheClass.Theseattributesexistonlyonceinmainmemory.Instancedependentattributesexistonceperinstanceandaretiedtoasingleinstance.
InABAPObjectsyoudifferentiatebetweeninstancedependentandclassdependentattributesbymeansoftheABAPkeywordsDATAorCLASSDATAtobeusedinthedefinitionpart:
Program:001
Codelistingfor:Z_001_SIMPLE_CLASS
Description:SIMPLECLASSWITHATTRIBUTES
REPORTZ_001_SIMPLE_CLASS.
TYPES:TY_NAME(50)TYPEC.
*
*CLASSCL_NAMEDEFINITION
*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
CLASSDATAI_COUNTTYPEI."ClassDependentAttribute
"Willhavesamevalueinallobjects
DATANAMETYPETY_NAME."InstanceDependentAttribute
"Willhavedifferentvaluesindifferentobjects
ENDCLASS."CL_NAMEDEFINITION
*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
"Wewillusethisportioninnextexamples.
ENDCLASS."CL_NAMEIMPLEMENTATION
"CREATEREFERENCEVARIABLES
DATA:INSTANCE1TYPEREFTOCL_NAME,
INSTANCE2TYPEREFTOCL_NAME,
INSTANCE3TYPEREFTOCL_NAME.
STARTOFSELECTION.
"CREATEOBJECTS(INSTANCES)
CREATEOBJECT:INSTANCE1,
INSTANCE2,
INSTANCE3.
"SETATTRIBUTESOFINSTANCE1
INSTANCE1>I_COUNT=INSTANCE1>I_COUNT+10.
INSTANCE1>NAME='VIKRANT'.
"SETATTRIBUTESOFINSTANCE2
INSTANCE2>I_COUNT=INSTANCE2>I_COUNT+10.
INSTANCE2>NAME='TULSI'.
"SETATTRIBUTESOFINSTANCE3
INSTANCE3>I_COUNT=INSTANCE3>I_COUNT+10.
INSTANCE3>NAME='ANUSHVI'.
"DISPLAYATTRIBUTESOFINSTANCE1
WRITE:'ATTRIBUTESOFINSTANCE1:::',
/'COUNT:',INSTANCE1>I_COUNT,
/'NAME:',INSTANCE1>NAME.
SKIP.
SKIP.
"DISPLAYATTRIBUTESOFINSTANCE2
WRITE:'ATTRIBUTESOFINSTANCE2:::',
/'COUNT:',INSTANCE2>I_COUNT,
/'NAME:',INSTANCE2>NAME.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

2/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

SKIP.
SKIP.
"DISPLAYATTRIBUTESOFINSTANCE3
WRITE:'ATTRIBUTESOFINSTANCE3:::',
/'COUNT:',INSTANCE3>I_COUNT,
/'NAME:',INSTANCE3>NAME.
"CLEARMEMORYOCCUPIEDBYOBJECTS
CLEAR:INSTANCE1,
INSTANCE2,
INSTANCE3.

ProgramOutput:001
ATTRIBUTESOFINSTANCE1:::
COUNT:30
NAME:VIKRANT
ATTRIBUTESOFINSTANCE2:::
COUNT:30
NAME:TULSI
ATTRIBUTESOFINSTANCE3:::
COUNT:30
NAME:ANUSHVI

METHODS
Aswellasattributes,ClasseshavesocalledMethods.Whileattributesdescribethestaticstructureofaclassanditsobjects,Methodsdescribethebehaviorofobjectswithinaclass.Withthehelpof
methods,thesystemprovidesoperations,servicesandfunctions.Viamethods,ausercanmanipulatetheobjectsinaclassoralsotheclassitself.Asforattributes,thereareinstancedependentaswell
asclassdependent(static)methods.ABAPObjectsdifferentiatebetweeninstancedependentandclassdependentmethodsviatheABAPkeywordsMETHODSorCLASSMETHODSusedinthe
definitionpart.
Inordertocarryoutinstancedependent(orinstancedependent)methods,thecallingprogramneedsaspecificinstanceoftheclass.Thatis,thecallingprogrammusthaveadefinedreferencevariable
thatpointstoaspecificinstance.Classmethodsarenotinstancedependent.Theycanbecalledatanytimebyauser.Toseehowthesyntaxcallsthevariousmethodtypes,seethefollowingexample.
Program:002
Codelistingfor:Z_002_METHODS
Description:EXAMPLESHOWINGUSEOFMETHODS
REPORTZ_002_METHODS.
TYPES:TY_NAME(50)TYPEC,
BOOLEAN(1)TYPEC.

CONSTANTS:CO_TRUETYPECVALUE'X',
CO_FALSETYPECVALUE''.
*
*CLASSCL_NAMEDEFINITION
*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
CLASSDATAI_COUNTTYPEI."ClassDependentAttribute
"Willhavesamevalueinallobjects
DATANAMETYPETY_NAME."InstanceDependentAttribute
"Willhavedifferentvaluesindifferentobjects
CLASSMETHODSIS_CLASS_INITIATED
EXPORTINGVALUE(RE_BOOL)TYPEBOOLEAN.
METHODS:SET_NAMEIMPORTINGVALUE(IM_NAME)TYPETY_NAME,
GET_NAMEEXPORTINGVALUE(EX_NAME)TYPETY_NAME.
ENDCLASS."CL_NAMEDEFINITION
*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

3/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

METHODIS_CLASS_INITIATED.
IFI_COUNT>0.
RE_BOOL=CO_TRUE.
ELSE.
RE_BOOL=CO_FALSE.
ENDIF.
ENDMETHOD."IS_CLASS_INITIATED
METHODSET_NAME.
NAME=IM_NAME.
ENDMETHOD."SET_NAME
METHODGET_NAME.
EX_NAME=NAME.
ENDMETHOD."GET_NAME
ENDCLASS."CL_NAMEIMPLEMENTATION
STARTOFSELECTION.
DATABOOLTYPEBOOLEAN.

"CHECKIFANYINSTANCEOFTHISCLASSHASBEENCREATEDBEFORE
CALLMETHODCL_NAME=>IS_CLASS_INITIATED
IMPORTING
RE_BOOL=BOOL.
IFBOOL=CO_FALSE.
"CREATEINSTANCEOFTHISCLASS,IFNOINSTANCEEXIST
DATA:INSTANCETYPEREFTOCL_NAME,
NAMETYPETY_NAME.
CREATEOBJECTINSTANCE.
"SETVALUEFORNAMEATTRIBUTE
CALLMETHODINSTANCE>SET_NAME
EXPORTING
IM_NAME='VIKRANTJ.TRIVEDI'.
"GETVALUEOFNAMEATTRIBUTE
CALLMETHODINSTANCE>GET_NAME
IMPORTING
EX_NAME=NAME.
WRITE:/'NAME:',NAME.
"CLEARMEMORYOCCUPIEDBYOBJECTS
CLEAR:INSTANCE.
ENDIF.
ProgramOutput:002
NAME:VIKRANTJ.TRIVEDI

CONSTRUCTOR
Objectsmustbecreatedatruntime(usingCREATEOBJECT).Withtheircreationtheyalsogettheirownidentity.However,therearenofixedattributevalueslinkedtotheidentity.Youareprobablyalready
wonderinghowobjectsgettotheirinitialstate.Howdoobjectsrecognizetheirinitialattributevalues?
TheConstructorconceptexistsspecificallytoanswerthisquestion.Theconstructorisamethodwhichrunsautomaticallyduringthecreationofanobject.Theconstructorallowsyoutodefine
IMPORTINGparameters.
InABAPObjectsyoudifferentiatebetweeninstancedependentandclassdependentconstructorsviathelanguageelementsMETHODS{{}}andCLASSMETHODStobeusedinthedefinitionpartandviatheir
namesconstructorandCLASS_CONSTRUCTOR:
Theclassconstructoriscalledbythefirstaccesstoaclasselement(method,attribute,event,andobject),the(instance)constructorbythecreationofanobject(CREATEOBJECT).
Program:003
Codelistingfor:Z_003_CONSTRUCTOR
Description:EXAMPLEOFUSINGCONSTRUCTOR
REPORTZ_003_CONSTRUCTOR.
TYPES:TY_NAME(50)TYPEC.
*
*CLASSCL_NAMEDEFINITION

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

4/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
CLASSDATAI_COUNTTYPEI."ClassDependentAttribute
"Willhavesamevalueinallobjects
DATANAMETYPETY_NAME."InstanceDependentAttribute
"Willhavedifferentvaluesindifferentobjects
CLASSMETHODSCLASS_CONSTRUCTOR.
METHODS:CONSTRUCTORIMPORTINGVALUE(IM_NAME)TYPETY_NAME,
GET_NAMEEXPORTINGVALUE(EX_NAME)TYPETY_NAME.
ENDCLASS."CL_NAMEDEFINITION
*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
METHODCLASS_CONSTRUCTOR.
I_COUNT=I_COUNT+10.
ENDMETHOD."IS_CLASS_INITIATED

METHODCONSTRUCTOR.
NAME=IM_NAME.
ENDMETHOD."SET_NAME
METHODGET_NAME.
EX_NAME=NAME.
ENDMETHOD."GET_NAME
ENDCLASS."CL_NAMEIMPLEMENTATION
STARTOFSELECTION.
"CREATEINSTANCEOFTHISCLASS,IFNOINSTANCEEXISTS.
DATA:INSTANCE1TYPEREFTOCL_NAME,
INSTANCE2TYPEREFTOCL_NAME,
NAME1TYPETY_NAME,
NAME2TYPETY_NAME.
CREATEOBJECTINSTANCE1
EXPORTING
IM_NAME='VIKRANTJ.TRIVEDI'.
CREATEOBJECTINSTANCE2
EXPORTING
IM_NAME='TULSIV.TRIVEDI'.
"GETVALUEOFNAMEATTRIBUTE
CALLMETHODINSTANCE1>GET_NAME
IMPORTING
EX_NAME=NAME1.
CALLMETHODINSTANCE2>GET_NAME
IMPORTING
EX_NAME=NAME2.
"DISPLAYATTRIBUTESOFINSTANCE1
WRITE:'ATTRIBUTESOFINSTANCE1:',
/'COUNT:',INSTANCE1>I_COUNT,
/'NAME:',NAME1.
SKIP.
SKIP.
"DISPLAYATTRIBUTESOFINSTANCE2
WRITE:'ATTRIBUTESOFINSTANCE2:',
/'COUNT:',INSTANCE2>I_COUNT,

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

5/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

/'NAME:',NAME2.

"CLEARMEMORYOCCUPIEDBYOBJECTS
CLEAR:INSTANCE1,
INSTANCE2.
ProgramOutput:003
ATTRIBUTESOFINSTANCE1:
COUNT:10
NAME:VIKRANTJ.TRIVEDI
ATTRIBUTESOFINSTANCE2:
COUNT:10
NAME:TULSIV.TRIVEDI

OBJECTIDENTITYANDREFERENCESEMANTICS
Withthehelpofthepreviousexamples,youhaveestablishedthatobjectsbelongingtoaclassarenotcreatedbythesimpledefinitionoftheclass.NeitherdoestheinstructionDATA:instancerefto
CL_NAMEcreatesanobject.ThisinstructiononlycreatesaReference,whichinitsinitialstatehasthelogicalvalueINITIAL.OnlywiththeinstructionCREATEOBJECTinstanceisthememoryareaforanew
objectrequestedfromthesystem.Thereferenceinstancethenreferstotheobjectwhichhasjustbeencreated.(ThecommandCLEAR{{instance.}}atthispointmeansthattheobject,towhichthe
referencevariablerefers,cannotbereferenced.Thereforeitcannolongerbeaddressedinthisprogramrun.AGarbageCollectorrunninginthebackgroundensuresthattheobjectisremovedfrom
memory.
Thisseparatesobjectorientedimplementationfromclassicimplementation.WiththeclassicDATAinstruction,mainmemoryisreserved(whichmightneverbeused)andispreallocatedtheinitialstateof
therelevantvariable.Withthe"objectoriented"instructionDATAxTYPEREFTO,onlytheintentiontocreateanobjectisexpressed.Theonlystoragespaceoccupiedisforanobjectreference.
Inaddition,everyobjecthasitsownidentity.Tworeferences,whichrefertoobjects,areonlyidenticaliftheyrefertothesameobject.Similaritybetweentheattributevaluesoftheseobjectsisnotthe
decidingfactor.Togetmoreideaaboutthisseethefollowingexample.
Program:004
Codelistingfor:Z_004_OBJECT_IDENTITY
Description:OBJECTIDENTITY&REFERENCESEMANTICS
REPORTZ_004_OBJECT_IDENTITY.
TYPES:TY_NAME(50)TYPEC.
*
*CLASSCL_NAMEDEFINITION
*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
METHODS:CONSTRUCTORIMPORTINGVALUE(IM_NAME)TYPETY_NAME.
DATA:NAMETYPETY_NAME.
ENDCLASS."CL_NAMEDEFINITION
*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
METHODCONSTRUCTOR.
NAME=IM_NAME.
ENDMETHOD."CONSTRUCTOR
ENDCLASS."CL_NAMEIMPLEMENTATION
DATA:INSTANCE1TYPEREFTOCL_NAME.
DATA:INSTANCE2TYPEREFTOCL_NAME.
DATA:INSTANCE3TYPEREFTOCL_NAME.
STARTOFSELECTION.
CREATEOBJECTINSTANCE1
EXPORTING
IM_NAME='VIKRANT'.
CREATEOBJECTINSTANCE2
EXPORTING
IM_NAME='VIKRANT'.
"Referencesemantics!!!
IFINSTANCE1=INSTANCE2.
WRITE'Thiswillneverprint,asinstance1referstoa

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

6/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

differentobjectthaninstance2.'.
ENDIF.

"Attributevaluesarethesame!!!
IFINSTANCE1>NAME=INSTANCE2>NAME.
WRITE'Attributevaluesofinstance1andinstace2aresame.'.
ENDIF.
INSTANCE3=INSTANCE1.
IFINSTANCE3=INSTANCE1.
WRITE'Bothreferencesinstance1andinstace3refertothe
sameobjectandarethereforeidentical.'.
ENDIF.
ProgramOutput:004
Attributevaluesofinstance1andinstace2aresame.
Bothreferencesinstance1andinstace3refertothesameobjectandarethereforeidentical.
Intheaboveprogram,thefirstIFQuery(IF}}INSTANCE1=INSTANCE2{{.)viatheobjectreferenceproducesthevaluefalse,althoughbothobjectshavethesameattributevalue"VIKRANT".Notethat
inobjectorientedlanguagesthereferencesemanticsapplyforclassesandtheirobjects.Bothobjectshavetheattributevalue{{NAME=}}VIKRANT,buttheyareindependentobjectswiththeirownidentity.
Thereferencesthereforerefertotwodifferentobjects,althoughtheirattributevaluesarecompletelyidentical.

VISIBILITY
Animportantfeatureofobjectorientationistheencapsulationofattributesandmethodsultimatelyoffunctionalityinclasses.Aclassguaranteesitsuserspecificpropertiesandspecificbehavior.The
sumofthesepropertiesiscalledtheclassinterface.TheVisibilitymechanismdefinestheclassinterfacewhichisavailabletotheusers.
Therearethreecommonlydefinedtypesofvisibilityinobjectorientedtechnology:
Public
Therelevantclasscomponent(attribute,method,eventetc.)isvisibletoallclasses.
Protected
Therelevantclasscomponent(attribute,method,eventetc.)isvisibletotheclassitselfandallinheritors.(WewillreturntothetermsInheritorandInheritancelaterinthisdocument.)
Private
Therelevantclasscomponent(attribute,method,eventetc.)isonlyvisibletotheclassitself.
Program:005
Codelistingfor:Z_005_VISIBILITY
Description:COMPONENTVISIBILITY
*
*InthisexamplethePRIVATEattributeNAMEishiddenfromthe
*users.Accesstotheinformationitcontainsisrealizedvia
*thePUBLICmethodSET_NAME&GET_NAME.
*
*
*TYPESOFVISIBILITY:
*(1)PUBLIC:classcomponentisvisibletoallclasses.
*(2)PRIVATE:classcomponentisvisibletotheclassitself.
*(3)PROTECTED:classcomponentisvisibletoclassitselfand
*allinheritors(subclass).
*
*
REPORTZ_005_VISIBILITY.
TYPES:TY_NAME(50)TYPEC.
*
*CLASSCL_NAMEDEFINITION
*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
METHODS:SET_NAMEIMPORTINGVALUE(IM_NAME)TYPETY_NAME,
GET_NAMEEXPORTINGVALUE(EX_NAME)TYPETY_NAME.
PRIVATESECTION.
DATANAMETYPETY_NAME.
ENDCLASS."CL_NAMEDEFINITION

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

7/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
METHODSET_NAME.
NAME=IM_NAME.
ENDMETHOD."SET_NAME
METHODGET_NAME.
EX_NAME=NAME.
ENDMETHOD."GET_NAME
ENDCLASS."CL_NAMEIMPLEMENTATION
STARTOFSELECTION.
"CREATEINSTANCEOFTHISCLASS,IFNOINSTANCEEXIST
DATA:INSTANCETYPEREFTOCL_NAME,
NAMETYPETY_NAME.
CREATEOBJECTINSTANCE.
"SETVALUEFORNAMEATTRIBUTE
CALLMETHODINSTANCE>SET_NAME
EXPORTING
IM_NAME='VIKRANTJ.TRIVEDI'.
"GETVALUEOFNAMEATTRIBUTE
CALLMETHODINSTANCE>GET_NAME
IMPORTING
EX_NAME=NAME.
WRITE:/'NAME:',NAME.
"CLEARMEMORYOCCUPIEDBYOBJECTS
CLEAR:INSTANCE.
ProgramOutput:005
NAME:VIKRANTJ.TRIVEDI

EVENTS
EventsarerecognizedinparticularbyprogramminginterfacesoftheGUIs(Windows,Motif,etc.),forexample,youcan"ask"theGUItotriggeraneventiftheusermovesthemouseoveraspecificpartof
thescreen.WhentheeventoccursyouaretellingtheGUItochangetheshapeofthemousepointer.
Eventsallowfortheloosecouplingofcomponents(classesorobjects)inasystem.Theeventtriggerdoesnotnormallyknowatthetimeofcodingwhoisgoingtoreacttotheevent.Thosecomponents,
whichwanttoreacttotheevent,registerattheeventruntime,inthattheytelltheruntimeenvironmentwhichmethodistobeexecutedwhentheeventisraised.Inthiswaymanycomponentscanregister
foranevent.
Eventhandlermethodscanproceedsynchronouslyaswellasasynchronously.Atpresent,ABAPObjectsonlysupportssynchronouscallingoftheeventhandlermethod.
Program:006
Codelistingfor:Z_006_EVENT
Description:EXAMPLEOFEVENTS
*
*THISEXAMPLESHOWSTHEUSEOFEVENTS.
*
*
*Theeventtriggerdoesnotnormallyknowatthetimeof
*codingwhoisgoingtoreacttotheevent.Thosecomponents,
*whichwanttoreacttotheevent,registerattheevent
*runtime,inthattheytelltheruntimeenvironmentwhich
*methodistobeexecutedwhentheeventisraised.Inthisway
*manycomponentscanregisterforanevent.
*
*
REPORTZ_006_EVENT.
*
*CLASSCL_NAME

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

8/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*
CLASSCL_NAMEDEFINITION.
PUBLICSECTION.
"DEFINEEVENT
EVENTSOBJECT_CREATED
EXPORTINGVALUE(EX_OBJ)TYPEREFTOCL_NAME.
METHODS:CONSTRUCTOR,
"DEFINEEVENTHANDLERMETHOD
PROCESS_EVENTFOREVENTOBJECT_CREATEDOFCL_NAME.
PRIVATESECTION.
DATAMSG(16)TYPEC.
"registermethodwithruntimewillbeexecuted
"wheneventOBJECT_CREATEDfires.
ENDCLASS."CL_NAME
*
*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
METHODCONSTRUCTOR.
MSG='OBJECTCREATED'.
"Registertheeventhandlersforthecorresponding/all
"instance/s.
SETHANDLERPROCESS_EVENTFORALLINSTANCES.
"RaiseeventOBJECT_CREATED.
RAISEEVENTOBJECT_CREATEDEXPORTINGEX_OBJ=ME.
"MEreferstocurrentinstance
ENDMETHOD."CL_NAME
"EVENTHANDLER
METHODPROCESS_EVENT.
WRITE:'EVENTFIRED:',ME>MSG.
ENDMETHOD."PROCESS_EVENT
ENDCLASS."CL_NAMEIMPLEMENTATION
DATAINSTANCETYPEREFTOCL_NAME.
STARTOFSELECTION.
CREATEOBJECTINSTANCE.
CLEARINSTANCE.
ProgramOutput:006
EVENTFIRED:OBJECTCREATED

Inthepreviousprogram,instancesoftheClassCL_NAMEcreateaneventOBJECT_CREATED.TheclassmethodPROCESS_EVENTprocessesthisevent.Withthehelpoftheconstructortheclassregistersthe
methodPROCESS_EVENTattheeventOBJECT_CREATEDforallinstancesoftheclassCL_NAME.WhenanobjectiscreatedfortheclassCL_NAME(CREATEOBJECTinstance.),theeventOBJECT_CREATEDis
raisedintheconstructor.TheconsequenceisthatthemethodPROCESS_EVENT{{}}isexecuted.
Program:007
Codelistingfor:Z_007_EVENT2
Description:EVENTOFONECLASSHANDLEDBYANOTHERCLASS
REPORTZ_007_EVENT2.
*
*CLASSCL_CLASS1DEFINITION
*
CLASSCL_CLASS1DEFINITION.
PUBLICSECTION.
EVENTSOBJECT_CREATED."DEFINESEVENT
METHODSCONSTRUCTOR.
ENDCLASS."CL_CLASS1DEFINITION
*

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

9/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*CLASSCL_CLASS1IMPLEMENTATION
*
CLASSCL_CLASS1IMPLEMENTATION.
METHODCONSTRUCTOR.
RAISEEVENTOBJECT_CREATED."RAISESEVENT
ENDMETHOD."CONSTRUCTOR
ENDCLASS."CL_CLASS1IMPLEMENTATION
*
*CLASSCL_CLASS2DEFINITION
*
CLASSCL_CLASS2DEFINITION.
PUBLICSECTION.
CLASSMETHODSINITIALISE.
PRIVATESECTION.
CLASSMETHODSPROCESS_EVENTFOREVENTOBJECT_CREATED
OFCL_CLASS1."REGISTERSMETHOD
ENDCLASS."CL_CLASS2DEFINITION

*
*CLASSCL_CLASS2IMPLEMENTATION
*
CLASSCL_CLASS2IMPLEMENTATION.
METHODINITIALISE.
"SETHANDLERFORALLINSTANCES
SETHANDLERPROCESS_EVENTFORALLINSTANCES.
ENDMETHOD."INITIALISE
"EVENTHANDLER
METHODPROCESS_EVENT.
WRITE'EVENTFIRED.'.
ENDMETHOD."PROCESS_EVENT
ENDCLASS."CL_CLASS2IMPLEMENTATION
DATAINSTANCESTYPEREFTOCL_CLASS1.
STARTOFSELECTION.
CALLMETHODCL_CLASS2=>INITIALISE.
CREATEOBJECTINSTANCES.
CLEARINSTANCES.
ProgramOutput:007
EVENTFIRED.
Intheaboveprogram,withthehelpoftheclassmethodinitialize,theclassCL_CLASS2registersthemethodPROCESS_EVENTattheeventOBJECT_CREATEDforallinstancesoftheclassCL_CLASS1.
WhenanobjectiscreatedfortheclassCL_CLASS1(CREATEOBJECTinstance.),theeventOBJECT_CREATEDisraisedintheconstructor.TheconsequenceisthatthemethodPROCESS_EVENT{{
}}belongingtotheclassCL_CLASS2isexecuted.

INHERITANCE
Inheritancedefinestherelationshipbetweenclasses,inwhichaclass(subclass)usesthestructureandbehaviorthathasalreadybeendefinedinoneormoreotherclasses(superclasses).Sosimplythis
means"Inheritanceisaboutreuse!".
Allowmetouseaconcreteexampletoexplaininheritance:Collection.
Acollectionisanynumberofobjects(morepreciselyobjectreferences).However,therecouldbemanytypesofcollection.Therefore,Iwillimplementeachtypeofcollectionasaclass.Inprinciplethis
approachiscorrect.However,youwillsoonestablishthatallcollectionshaveseveralcomponentsincommonlike:
1.Eachclassrequiresamethodinordertoaddobjectstoacollection.
2.Eachclassrequiresamethodinordertodeleteobjectsfromacollection.
3.Eachclasshasamethodwhichidentifiesthenumberofobjectreferencesinthecollectionandsoon.
Inheritanceisthesolutiontothissituation.YouimplementallofthesimilaritiesintheclasswhichisSuperclass.Youthenimplementtheindividualtypesofcollectionintheirownclasseswhichare
SubclassesoftheSuperclass.Asasubclass,theseclassesinheritallofthecomponentsoftheSuperclass.Attributes,methodsandeventsareinherited.Inaddition,youcanimplementadditionalattributes,
methodsandeventsinthesubclass.

POLYMORPHISM
Polymorphismoccurs,whereclassesimplementthesamefunctionalitywithdifferentmethods(onefunctionality,severalmethodsbutthesamename).Thiscanoccurviaaninheritancerelationship,inthat

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

10/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

themethodsbelongingtothesuperclassareredefinedinthesubclassesandimplementeddifferently.ABAPObjectsrequiresthemethodnamestobethesameandthesignaturetobethesame(signature
=methodinterface).
Polymorphismcanbeachievedin2ways:
(1)Twoindependentclassesimplementmethodswiththesamenamesandthesamesignaturewiththeintention,thatthemethodsshouldbecalleddynamicallyfromathirdlocation.
(2)Asuperclassimplementsamethod,andinasubclassyouwanttoreimplementthesamemethod,asthesuperclassimplementationisnotsuitableforthesubclass.
ThefirstscenariowillnotoccurveryofteninABAPObjects,astheinterfaceconceptwascreatedpreciselyforsuchcases.
Program:008
Codelistingfor:Z_008_INHERIT_POLY
Description:EXAMPLEOFINHERITANCE&POLYMORPISM
REPORTZ_008_INHERIT_POLY.
TYPES:BEGINOFTY_NAME,
NAME(50)TYPEC,
ENDOFTY_NAME.
TYPES:TY_NAMESTYPETY_NAMEOCCURS0.
*
*CLASSCL_COLLECTIONDEFINITION
*
CLASSCL_COLLECTIONDEFINITION.
PUBLICSECTION.
METHODS:ADDIMPORTINGIM_NAMETYPETY_NAME,
DISPLAY.
PROTECTEDSECTION.
DATAIT_NAMESTYPETY_NAMES.
ENDCLASS."CL_COLLECTIONDEFINITION
*
*CLASSCL_COLLECTIONIMPLEMENTATION
*
CLASSCL_COLLECTIONIMPLEMENTATION.
METHODADD.
APPENDIM_NAMETOIT_NAMES.
ENDMETHOD."ADD
METHODDISPLAY.
DATA:CNTTYPEI.
DESCRIBETABLEIT_NAMESLINESCNT.
IFCNT>0.
DATAWA_NAMELIKELINEOFIT_NAMES.
ULINE.
WRITE10'DISPLAYINGDATA'.
ULINE.
WRITE10'NAMES'.
ULINE.
LOOPATIT_NAMESINTOWA_NAME.
WRITE/10WA_NAMENAME.
ENDLOOP.
ENDIF.
ENDMETHOD."DISPLAY
ENDCLASS."CL_COLLECTIONIMPLEMENTATION
*
*CLASSCL_NAMEDEFINITION
*
CLASSCL_NAMEDEFINITIONINHERITINGFROMCL_COLLECTION.
PUBLICSECTION.
METHODS:ADDREDEFINITION."THISISCALLEDPOLYMORPISM.
ENDCLASS."CL_NAMEDEFINITION
*

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

11/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*CLASSCL_NAMEIMPLEMENTATION
*
CLASSCL_NAMEIMPLEMENTATION.
METHODADD.
"NODOUBLEENTRIESAREALLOWED.
READTABLEIT_NAMESWITHKEYNAME=IM_NAMENAME
TRANSPORTINGNOFIELDS.
IFSYSUBRC<>0.
CALLMETHODSUPER>ADD
EXPORTING
IM_NAME=IM_NAME.
ENDIF.
ENDMETHOD."ADD
ENDCLASS."CL_NAMEIMPLEMENTATION
DATA:INSTANCETYPEREFTOCL_NAME,
ST_NAMETYPETY_NAME.
STARTOFSELECTION.
CREATEOBJECTINSTANCE.

ST_NAMENAME='VIKRANTTRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDVIKRANTTRIVEDIFORTHE1STTIME.'.
ST_NAMENAME='TULSITRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDTULSITRIVEDIFORTHE1STTIME.'.
ST_NAMENAME='ANUSHVITRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDANUSHVITRIVEDIFORTHE1STTIME.'.
ST_NAMENAME='VIKRANTTRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDVIKRANTTRIVEDIFORTHE2NDTIME.'.
ST_NAMENAME='TULSITRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDTULSITRIVEDIFORTHE2NDTIME.'.
ST_NAMENAME='ANUSHVITRIVEDI'.
CALLMETHODINSTANCE>ADD
EXPORTING
IM_NAME=ST_NAME.
WRITE/'ADDEDANUSHVITRIVEDIFORTHE2NDTIME.'.
SKIP.
SKIP.
CALLMETHODINSTANCE>DISPLAY.
ProgramOutput:008
ADDEDVIKRANTTRIVEDIFORTHE1STTIME.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

12/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

ADDEDTULSITRIVEDIFORTHE1STTIME.
ADDEDANUSHVITRIVEDIFORTHE1STTIME.
ADDEDVIKRANTTRIVEDIFORTHE2NDTIME.
ADDEDTULSITRIVEDIFORTHE2NDTIME.
ADDEDANUSHVITRIVEDIFORTHE2NDTIME.

DISPLAYINGDATA

NAMES

VIKRANTTRIVEDI
TULSITRIVEDI
ANUSHVITRIVEDI
Intheaboveexample,IhavepartiallyimplementedtheclassCL_COLLECTIONanditsinheritorclassCL_NAME.ThemethodADD{{}}belongingtotheclassCL_COLLECTIONisredefinedbythemethodADD{{
}}belongingtotheclassCL_NAME.InthemethodADDbelongingtotheCL_NAMEthemethodADDbelongingtothesuperclassCL_COLLECTIONiscalledviaCALLMETHODSUPER>ADD.

INTERFACES
TheInterfaceconceptdescribesaclassinterface.Youcandefinethesamecomponentsinaninterfacethatyoucaninclasses,howeverwithoutimplementingthem.
Classescanimplementinterfaces,andsubsequentlybeaddressedviatheseinterfaces.Thisopensanadditionalmechanismofpolymorphism,howeverwithoutbeingdependentoninheritance.This
combinationofclasseswithsimpleinheritanceandinterfacesismorehighlyregardedbymanyexpertsthanfullmultipleinheritances.
Inadditiontoobjectreferences(DATA:instanceTYPEREFTOCL_CLASS)therearealsoInterfaceReferences(DATA:referenceTYPEREFTOCL_INTERFACE).Aclasswhichimplementsaspecific
interfacecanbeaddressedviathisinterfacereference.Usingsuchaninterfacereference,youcanaccessthecomponentsdefinedintheinterface.Inthiswayausercanviewdifferentclassesthrough
the'spectacles'ofaninterfaceandaddresstheminauniformmanner.
Interfacesthereforedefinespecific,genericfunctionality.Incontrasttoclasses,interfacesgenerallyhavenotonlymanyusers,butalsomanyimplementers.

Program:009
Codelistingfor:Z_009_INTERFACE
Description:EXAMPLEOFINTERFACE
*
*ReportZ_009_INTERFACE
*
*
*TheInterfaceconceptdescribesaclassinterface.Youcan
*definethesamecomponentsinaninterfacethatyoucanin
*classes,howeverwithoutimplementingthem.Classescan
*Implementinterfaces,andsubsequentlybeaddressedviathese
*interfaces.
*
*
*INTHISEXAMPLE:TheInterfaceIF_INTERFACEisimplemented
*viatheclassesCL_CLASS1AndCL_CLASS2.
*
REPORTZ_009_INTERFACE.
*
*INTERFACEIF_INTERFACE
*
INTERFACEIF_INTERFACE.
METHODSDISPLAY.
ENDINTERFACE."IF_INTERFACE
*
*CLASSCL_CLASS1DEFINITION
*
CLASSCL_CLASS1DEFINITION.
PUBLICSECTION.
INTERFACESIF_INTERFACE.
ENDCLASS."CL_CLASS1DEFINITION

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

13/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*
*CLASSCL_CLASS1IMPLEMENTATION
*
CLASSCL_CLASS1IMPLEMENTATION.
METHODIF_INTERFACE~DISPLAY.
WRITE/'METHODIMPLEMENTEDINCLASS1.'.
ENDMETHOD."IF_INTERFACE~DISPLAY
ENDCLASS."CL_CLASS1IMPLEMENTATION

*
*CLASSCL_CLASS2DEFINITION
*
CLASSCL_CLASS2DEFINITION.
PUBLICSECTION.
INTERFACESIF_INTERFACE.
ENDCLASS."CL_CLASS2DEFINITION
*
*CLASSCL_CLASS2IMPLEMENTATION
*
CLASSCL_CLASS2IMPLEMENTATION.
METHODIF_INTERFACE~DISPLAY.
WRITE/'METHODIMPLEMENTEDINCLASS2.'.
ENDMETHOD."IF_INTERFACE~DISPLAY
ENDCLASS."CL_CLASS2IMPLEMENTATION
DATA:INSTANCE1TYPEREFTOCL_CLASS1,
INSTANCE2TYPEREFTOCL_CLASS2,
INTERFACETYPEREFTOIF_INTERFACE.
STARTOFSELECTION.
CREATEOBJECTINSTANCE1.
INTERFACE=INSTANCE1."THISASSIGNATINISCALLEDCASTING
CALLMETHODINTERFACE>DISPLAY.
CREATEOBJECTINSTANCE2.
INTERFACE=INSTANCE2.
CALLMETHODINTERFACE>DISPLAY.
ProgramOutput:009
METHODIMPLEMENTEDINCLASS1.
METHODIMPLEMENTEDINCLASS2.

ALVGRIDCONTROL
TheALVGridControlisatoolthatyoucanusetodisplaynonhierarchicallistsinauniformformat.Thelistdataisdisplayedasatableonthescreen.Thistoolisveryuserfriendly:Youonlyhavetocarry
outaminimumnumberofprogrammingsteps.
TheALVGridControlhasanumberofinteractivestandardfunctionsthatlistusersfrequentlyuse,forexample,printing,andexport.Developerscanhidethesestandardfunctionsiftheywish.However,
youcanmodifytheimplementationsonanapplicationspecificbasisifrequired.Youcanalsoaddyourownfunctionstotheapplicationtoolbar.
ApplicationcontrolslikeALVGridControl,TreeControls,andPictureControlsmustbeembeddedinaContainerControl,whichinturnmustbeconnectedwiththescreen.ContainerControlsformthe
technicalconnectionbetweenascreenandanapplicationcontrol.Therearedifferenttypesofcontainercontrols.Allofthesetypesencapsulatebasiccontrolfunctions(forexample,scrollbars).
Inthefollowingsections,wewillworktroughastandardcaseasanexample:PositioninganALVGridControlinascreenareawithafixedsize.Todothis,aninstanceofeachoftheglobalclasses
CL_GUI_CUSTOM_CON
TAINERandCL_GUI_ALV_GRIDmustbegenerated.
Forabasicstandarddisplay,itisenoughtoprogramthefollowingsteps:
1. Defineacustomcontrolareaonyourscreenusingthescreenpainter'sgraphicalfullscreeneditor.
1. GenerateaninstanceoftheCL_GUI_CUSTOM_CONTAINERclassandgivetheconstructorthenameofthecustomcontrolareayouhavedefined.
1. GenerateaninstanceoftheclassCL_GUI_ALV_GRIDandassigntheconstructorthereferencetothecontainercontrolinstanceyouhavejustgenerated.
1. CalltheSET_TABLE_FOR_FIRST_DISPLAYmethodoftheGridControlinstanceandassignittheinternalstandardtableandapplicationdata.
Ifthismethodhasagloballinetype,youcangiveitthenameofthisglobalstructure.Thefieldcatalogwillthenbesetupbythegridcontrolinstanceitself.
Ifthecontentsoftheinternaltablechangeduringtherestoftheprogramrun,itisenoughtocallthemethodREFRESH_TABLE_DISPLAYinthecorrespondingdialogstep,toupdatethedisplayaccordingly.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

14/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

Program:010
Codelistingfor:Z_010_ALV_GRID_CONTROL
Description:EXAMPLEOFALVGRIDCONTROL
*
*SCREEN101:FLOWLOGIC
*
PROCESSBEFOREOUTPUT.
MODULESTATUS_0101.
MODULEGET_DATA.
MODULECREATE_OBJECTS.
MODULESHOW_ALV.
PROCESSAFTERINPUT.
MODULEUSER_COMMAND_0101.
*
*MODULEPOOLZ_010_ALV_GRID_CONTROL
*
INCLUDEZ_010_ALV_GRID_CONTROL_TOP."GlobalData
INCLUDEZ_010_ALV_GRID_CONTROL_O01."PBOModules
INCLUDEZ_010_ALV_GRID_CONTROL_I01."PAIModules
INCLUDEZ_010_ALV_GRID_CONTROL_F01."FORMRoutines
*
*TOPINCLUDEZ_010_ALV_GRID_CONTROL_TOP
*
PROGRAMZ_010_ALV_GRID_CONTROL.
TABLES:SFLIGHT.
DATA:OK_CODETYPESYUCOMM,
IT_SFLIGHTTYPESTANDARDTABLEOFSFLIGHT,
R_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER,
R_GRIDTYPEREFTOCL_GUI_ALV_GRID.
*
*PBOINCLUDEZ_010_ALV_GRID_CONTROL_O01
*
*
*ModuleSHOW_ALVOUTPUT
*
MODULESHOW_ALVOUTPUT.
CHECKOK_CODEISINITIAL.
CALLMETHODR_GRID>SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME='SFLIGHT'
CHANGING
IT_OUTTAB=IT_SFLIGHT.
ENDMODULE."SHOW_ALVOUTPUT
*
*ModuleGET_DATAOUTPUT
*
MODULEGET_DATAOUTPUT.
CHECKOK_CODEISINITIAL.
PERFORMGET_DATA
USING
SFLIGHTCARRID.
ENDMODULE."GET_DATAOUTPUT
*
*ModuleCREATE_OBJECTSOUTPUT

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

15/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*
MODULECREATE_OBJECTSOUTPUT.
CHECKOK_CODEISINITIAL.
CREATEOBJECTR_CONTAINER
EXPORTING
CONTAINER_NAME='CC_ALV'.
CREATEOBJECTR_GRID
EXPORTING
I_PARENT=R_CONTAINER.
ENDMODULE."CREATE_OBJECTSOUTPUT
*
*ModuleSTATUS_0101OUTPUT
*
MODULESTATUS_0101OUTPUT.
SETPFSTATUS'Z_010_STATUS'.
"SETTITLEBAR'xxx'.
ENDMODULE."STATUS_0101OUTPUT

*
*PAIINCLUDEZ_010_ALV_GRID_CONTROL_I01
*
*
*ModuleUSER_COMMAND_0101INPUT
*
MODULEUSER_COMMAND_0101INPUT.
CASEOK_CODE.
WHEN'SEARCH'.
PERFORMGET_DATA
USING
SFLIGHTCARRID.
CALLMETHODR_GRID>REFRESH_TABLE_DISPLAY.
WHEN'EXIT'.
LEAVEPROGRAM.
ENDCASE.
ENDMODULE."USER_COMMAND_0101INPUT
*
*FORMINCLUDEZ_010_ALV_GRID_CONTROL_F01
*
*
*FORM:GET_DATA
*Created:26.03.200812:34:09
*
FORMGET_DATAUSINGVALUE(P_CARRID)TYPESFLIGHTCARRID.
IFP_CARRIDISINITIAL.
SELECT*FROMSFLIGHTINTOCORRESPONDING
FIELDSOFTABLET_SFLIGHT.
ELSE.
SELECT*FROMSFLIGHTINTOCORRESPONDING
FIELDSOFTABLEIT_SFLIGHT
WHERECARRID=P_CARRID.
ENDIF.
ENDFORM."GET_DATA
ALVGRIDCONTROLUSINGEVENTS
AnALVGridControlcanreacttoauserdoubleclickingthemousebutton.Onepossiblereactionisthatasubsequentprocessingistriggeredinwhichadditionalinformationisdisplayed.Theevent

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

16/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

DOUBLE_CLICKiscaughtusingahandlermethod.Ahandlermethodcanbeeitheraclassmethod(staticmethod)oranobject'sinstancemethod.Ifaclassmethodisdefinedasahandlermethod,thereis
noneedtoinstantiateanobjectofthehandlingclass,tousethemethod.Tocreateahandlerobjectforanevent,youmustfirstofalldefineaclass.Thisclasshasapublicmethod(inthePUBLIC
SECTION)thatcanreacttoanevent.Inthehandlermethod'simplementation,createthesourcetextthatwillrunwhenyoutriggertheevent.Themethodreceivestheinformationdeliveredbytheevent
fromthepositionofthemousewhentheuserexecutesadoubleclick,andinthecontrolexample,generatesaninformationmessagethatdisplaysthelineandfieldwherethemouseisclicked.
Program:011
Codelistingfor:Z_011_ALV_GRID_EVENT
Description:EXAMPLEOFALVGRIDCONTROL
*
*SCREEN101:FLOWLOGIC
*
PROCESSBEFOREOUTPUT.
MODULESTATUS_0101.
MODULEGET_DATA.
MODULECREATE_OBJECTS.
MODULESHOW_ALV.

PROCESSAFTERINPUT.
MODULEUSER_COMMAND_0101.

*
*MODULEPOOLZ_011_ALV_GRID_EVENT
*
PROGRAMZ_011_ALV_GRID_EVENT.
*
*CLASSCL_EVENT_HANDLERDEFINITION
*
CLASSCL_EVENT_HANDLERDEFINITION.
PUBLICSECTION.
METHODS:ON_DOUBLE_CLICKFOREVENT
DOUBLE_CLICKOFCL_GUI_ALV_GRID
IMPORTINGES_ROW_NOE_COLUMN,
ON_RIGHT_CLICKFOREVENT
RIGHT_CLICKOFCL_GUI_ALV_GRID.
ENDCLASS."CL_EVENT_HANDLERDEFINITION
*
*CLASSCL_EVENT_HANDLERIMPLEMENTATION
*
CLASSCL_EVENT_HANDLERIMPLEMENTATION.
METHODON_DOUBLE_CLICK.
DATA:TEXTTYPESTRING,
ES_ROW_STRINGTYPESTRING.
ES_ROW_STRING=ES_ROW_NOROW_ID.
CONCATENATE'ROW:'ES_ROW_STRING'COLUMN:'
E_COLUMNFIELDNAMEINTOTEXTSEPARATEDBYSPACE.
MESSAGETEXTTYPE'I'.
ENDMETHOD."ON_DOUBLE_CLICK
METHODON_RIGHT_CLICK.
MESSAGE'RIGHTMOUSEBUTTONHASCLICKED!!!'TYPE'I'.
ENDMETHOD."ON_RIGHT_CLICK
ENDCLASS."CL_EVENT_HANDLERIMPLEMENTATION

*
*INCLUDEPROGRAMS
*
INCLUDEZ_011_ALV_GRID_EVENT_TOP."GlobalData
INCLUDEZ_011_ALV_GRID_EVENT_O01."PBOModules

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

17/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

INCLUDEZ_011_ALV_GRID_EVENT_I01."PAIModules
INCLUDEZ_011_ALV_GRID_EVENT_F01."FORMRoutines
*
*TOPINCLUDEZ_011_ALV_GRID_EVENT_TOP
*
*
*TYPESANDDATADECLARATION
*
TABLES:SFLIGHT.
DATA:OK_CODETYPESYUCOMM,
IT_SFLIGHTTYPESTANDARDTABLEOFSFLIGHT,
R_HANDLERTYPEREFTOCL_EVENT_HANDLER,
R_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER,
R_GRIDTYPEREFTOCL_GUI_ALV_GRID.
*
*PBOINCLUDEZ_011_ALV_GRID_EVENT_O01
*
*
*ModuleSHOW_ALVOUTPUT
*
MODULESHOW_ALVOUTPUT.
CHECKOK_CODEISINITIAL.
CALLMETHODR_GRID>SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME='SFLIGHT'
CHANGING
IT_OUTTAB=IT_SFLIGHT.
ENDMODULE."SHOW_ALVOUTPUT
*
*ModuleGET_DATAOUTPUT
*
MODULEGET_DATAOUTPUT.
CHECKOK_CODEISINITIAL.
PERFORMGET_DATA
USING
SFLIGHTCARRID.
ENDMODULE."GET_DATAOUTPUT
*
*ModuleCREATE_OBJECTSOUTPUT
*
MODULECREATE_OBJECTSOUTPUT.
IFR_HANDLERISNOTBOUND."CHECKSWHETHERAREFERENCE
"VARIABLECONTAINSVALIDREFERENCE
CREATEOBJECTR_HANDLER.
ENDIF.
IFR_CONTAINERISNOTBOUND."CHECKSWHETHERAREFERENCE
"VARIABLECONTAINSVALIDREFERENCE
CREATEOBJECTR_CONTAINER
EXPORTING
CONTAINER_NAME='CC_ALV'.
ENDIF.
IFR_GRIDISNOTBOUND.
CREATEOBJECTR_GRID
EXPORTING
I_PARENT=R_CONTAINER.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

18/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

SETHANDLERR_HANDLER>ON_DOUBLE_CLICK
R_HANDLER>ON_RIGHT_CLICKFORALLINSTANCES
ENDIF.
ENDMODULE."CREATE_OBJECTSOUTPUT
*
*ModuleSTATUS_0101OUTPUT
*
MODULESTATUS_0101OUTPUT.
SETPFSTATUS'Z_010_STATUS'.
"SETTITLEBAR'xxx'.
ENDMODULE."STATUS_0101OUTPUT

*
*PAIINCLUDEZ_011_ALV_GRID_EVENT_I01
*
*
*ModuleUSER_COMMAND_0101INPUT
*
MODULEUSER_COMMAND_0101INPUT.
CASEOK_CODE.
WHEN'SEARCH'.
PERFORMGET_DATA
USING
SFLIGHTCARRID.
CALLMETHODR_GRID>REFRESH_TABLE_DISPLAY.
WHEN'EXIT'.
LEAVEPROGRAM.
ENDCASE.
ENDMODULE."USER_COMMAND_0101INPUT
*
*FORMINCLUDEZ_011_ALV_GRID_EVENT_F01
*
*
*FORM:GET_DATA
*Created:26.03.200812:34:09
*
FORMGET_DATAUSINGVALUE(P_CARRID)TYPESFLIGHTCARRID.
IFP_CARRIDISINITIAL.
SELECT*FROMSFLIGHTINTOCORRESPONDING
FIELDSOFTABLEIT_SFLIGHT.
ELSE.
SELECT*FROMSFLIGHTINTOCORRESPONDING
FIELDSOFTABLEIT_SFLIGHTWHERECARRID=P_CARRID.
ENDIF.
ENDFORM."GET_DATA
ALVGRIDCONTROLUSINGFIELDCATALOGS
Theinternaltablewiththedatatobedisplayedcanhaveauserspecificlinetype.Inorderfortheproxyinstancetosatisfactorilyformatthedataitreceivesduringthescreenoutputorwhenaprintlistis
created,itrequiresrelevantinformationknownasthefieldcatalog.
Youcanhavetheproxyinstanceautomaticallygeneratethefieldcatalog.ForlinetypesthataredefinedintheABAPDictionary,youonlyneedtoinformtheproxyinstanceofthestructure'snameinthe
ABAPDictionary.
Alternatively,orinadditiontothis,youcanprovidetheproxyinstancewiththisdisplayinformationusinganadditionalinternaltable.Forthesakeofsimplicity,wewillcallthisadditionaltableafieldcatalog.
TheglobaldatatypeofthisinternaltableisLVC_T_FCAT.ItslinetypeisLVC_S_FCAT.
Typicalexamplesofwhereyouneedtotransferafieldcataloginclude:
Theinternaltablewithdatahasalinetypewithadictionaryreference,butthedisplayofthecolumnpositionorheadingisdifferent.
Theinternaltablehas(exclusiveoradditional)columnsthatarenotcontainedinadictionarystructure.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

19/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

Foreachcolumninthedatatablethatdeviatesfromanunderlyingdictionarystructureorisnotavailableinadictionarystructure,thefieldcatalogmustcontainalinethatdeterminesthetechnical
characteristicsandothercolumnformatinformation.
Program:012
Codelistingfor:Z_012_ALV_FIELDCATALOG
Description:EXAMPLEOFALVUSINGFIELDCATALOG
*
*SCREEN101:FLOWLOGIC
*
PROCESSBEFOREOUTPUT.
MODULESTATUS_0101.
MODULEGET_DATA.
MODULECREATE_OBJECTS.
MODULECREATE_FIELDCAT.
MODULEDISPALY_ALV.
*
*MODULEPOOLZ_012_ALV_FIELDCATALOG
*
INCLUDEZ_012_ALV_FIELDCATALOG_TOP."GlobalData
INCLUDEZ_012_ALV_FIELDCATALOG_O01."PBOModules
INCLUDEZ_012_ALV_FIELDCATALOG_I01."PAIModules
INCLUDEZ_012_ALV_FIELDCATALOG_F01."FORMRoutines
*
*TOPINCLUDEZ_012_ALV_FIELDCATALOG_TOP
*
PROGRAMZ_012_ALV_FIELDCATALOG.
TABLESSPFLI.
TYPES:BEGINOFTY_SPFLI,
CARRIDTYPESPFLICARRID,
CONNIDTYPESPFLICONNID,
COUNTRYFRTYPESPFLICOUNTRYFR,
COUNTRYTOTYPESPFLICOUNTRYTO,
ENDOFTY_SPFLI.
DATA:IT_SPFLITYPESTANDARDTABLEOFTY_SPFLI,
IT_FIELDCATTYPELVC_T_FCAT,
WA_FIELDCATLIKELINEOFIT_FIELDCAT,
R_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER,
R_ALVTYPEREFTOCL_GUI_ALV_GRID.

*
*PBOINCLUDEZ_012_ALV_FIELDCATALOG_O01
*
*
*ModuleSTATUS_0101OUTPUT
*
MODULESTATUS_0101OUTPUT.
SETPFSTATUS'Z_012_STATUS'.
"SETTITLEBAR'xxx'.
ENDMODULE."STATUS_0101OUTPUT
*
*ModuleGET_DATAOUTPUT
*
MODULEGET_DATAOUTPUT.
PERFORMGET_DATA.
ENDMODULE."GET_DATAOUTPUT
*

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

20/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

*ModuleCREATE_OBJECTSOUTPUT
*
MODULECREATE_OBJECTSOUTPUT.
PERFORMCREATE_OBJECTS.
ENDMODULE."CREATE_OBJECTSOUTPUT
*
*ModuleCREATE_FIELDCATOUTPUT
*
MODULECREATE_FIELDCATOUTPUT.
PERFORMCREATE_FIELDCATALOG.
ENDMODULE."CREATE_FIELDCATOUTPUT
*
*ModuleDISPALY_ALVOUTPUT
*
MODULEDISPALY_ALVOUTPUT.
PERFORMDISPLAY_ALV.
ENDMODULE."DISPALY_ALVOUTPUT

*
*FORMINCLUDEZ_012_ALV_FIELDCATALOG_F01
*
*
*FORM:GET_DATA
*Created:26.03.200817:24:39
*
FORMGET_DATA.
SELECTCARRIDCONNIDCOUNTRYFRCOUNTRYTOFROMSPFLI
INTOCORRESPONDINGFIELDSOFTABLEIT_SPFLI.
ENDFORM."GET_DATA
*
*FORM:CREATE_FIELDCATALOG
*Created:26.03.200817:30:03
*
FORMCREATE_FIELDCATALOG.
WA_FIELDCATFIELDNAME='CARRID'.
WA_FIELDCATREF_FIELD='CARRID'.
WA_FIELDCATREF_TABLE='SPFLI'.
WA_FIELDCATCOL_POS=0.
WA_FIELDCATFIX_COLUMN='X'.
APPENDWA_FIELDCATtoIT_FIELDCAT.
CLEARWA_FIELDCAT.
WA_FIELDCATFIELDNAME='CONNID'.
WA_FIELDCATREF_FIELD='CONNID'.
WA_FIELDCATREF_TABLE='SPFLI'.
WA_FIELDCATCOL_POS=1.
WA_FIELDCATFIX_COLUMN='X'.
APPENDWA_FIELDCATtoIT_FIELDCAT.
CLEARWA_FIELDCAT.
WA_FIELDCATFIELDNAME='COUNTRYFROM'.
WA_FIELDCATREF_FIELD='COUNTRYFR'.
WA_FIELDCATREF_TABLE='SPFLI'.
WA_FIELDCATCOL_POS=2.
WA_FIELDCATFIX_COLUMN='X'.
APPENDWA_FIELDCATtoIT_FIELDCAT.

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

21/22

07/04/2015

ABAPOBJECTSSTEPBYSTEPGUIDEABAPDevelopmentSCNWiki

CLEARWA_FIELDCAT.
WA_FIELDCATFIELDNAME='COUNTRYTO'.
WA_FIELDCATREF_FIELD='COUNTRYTO'.
WA_FIELDCATREF_TABLE='SPFLI'.
WA_FIELDCATCOL_POS=3.
WA_FIELDCATFIX_COLUMN='X'.
APPENDWA_FIELDCATtoIT_FIELDCAT.
CLEARWA_FIELDCAT.
ENDFORM."CREATE_FIELDCATALOG

*
*FORM:DISPLAY_ALV
*Created:26.03.200817:24:19
*
FORMDISPLAY_ALV.
CALLMETHODR_ALV>SET_TABLE_FOR_FIRST_DISPLAY
*EXPORTING
*I_STRUCTURE_NAME='SFLIGHT'
CHANGING
IT_OUTTAB=IT_SPFLI
IT_FIELDCATALOG=IT_FIELDCAT.
ENDFORM."DISPLAY_ALV
*
*FormCREATE_OBJECTS
*
FORMCREATE_OBJECTS.
CREATEOBJECTR_CONTAINER
EXPORTINGCONTAINER_NAME='CC_ALV'.
CREATEOBJECTR_ALV
EXPORTINGI_PARENT=R_CONTAINER.
ENDFORM."CREATE_OBJECTS

Nolabels
ContactUs
Privacy

SAPHelpPortal
TermsofUse

LegalDisclosure

Copyright

http://wiki.scn.sap.com/wiki/display/ABAP/ABAP+OBJECTS++++STEPBYSTEP+GUIDE

FollowSCN

22/22

Você também pode gostar