You are on page 1of 18

WebDynproforABAPTipsandTricks/

BestPractices
27.01.2010

Contents
Introduction............................................................................................................................................2
Summary.............................................................................................................................................2
WebDynproforABAP.........................................................................................................................2
Prerequisites.......................................................................................................................................2
Tipsandtricks.........................................................................................................................................3
Wheretostorebusinesslogic?...........................................................................................................3
Howtosimplifycontextreading/writing?..........................................................................................4
Usestructurevsfields.........................................................................................................................5
HandleDropdownByKey.....................................................................................................................6
HowtocallSmartformsfromWebDynpro?......................................................................................8
HowtocallAdobeFormsfromWebDynpro?..................................................................................10
Appendix...............................................................................................................................................12
Thehelperclass.................................................................................................................................12
Softwarecomponentsused..............................................................................................................18
Aboutthedevelopers.......................................................................................................................18
References........................................................................................................................................18
Keywords...........................................................................................................................................18

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Introduction

Summary
Thisisacollectionoftipsandtricksandsomebestpracticesweencounteredinourprojectsusing
WebDynproforABAP(WD4A).Mygoalisnottoexplaintheoreticbackground,buttogiveyoueasy
tousesolutionsyoucansparetimewithanthusdeliverbetterfunctionalitytoyourclients.
Afewyearspassedbysincethe2006publishingofWebDynproforABAP(PraxisbuchWeb
DynproforABAP)fromU.Hoffman.Asclientsreallystartedtousethisnewdevelopment
environmentthereisroomfornewexperiencetobeshared.

WebDynproforABAP
ThisdevelopmentenvironmentisabreviatedoftenlikeWD4A,butWDA,WDF4AorWDforABAP
canbeseenaswell.AccordingtoWikipedia,itisaproprietarywebapplicationuserinterface
technologydevelopedbySAPAG.ItexistsinaJava(WebDynproforJava,WDJorWD4J)andan
ABAPflavor.BasicallyyoucandevelopinternetorintranetapplicationsusinganIDEfullyintegrated
intothestandardSE80ObjectNavigator.InthissenseitissimilartoBusinessServerPages(BSP),but
itismuchmorerobustandhasabiggercollectionofstandardUIelements.

Prerequisites
Toclearlyunderstandthefollowingtextyouwillneed
1. GoodunderstandingofObjectOrientedABAP
2. BasicWebDynproconceptslikecontextorhookmethods
3. ExperienceinWD4Adevelopment

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Tipsandtricks
Wheretostorebusinesslogic?
AsabeginnerIstoredquitemuchlogicinmymaincomponentcontroller.NowItrytoseparate
reusablelogicawayfromthecomponenttoassistanceclassandtootherbusinessclassesasseenon
thefollowingillustration.

Thiswayyoucanusebusinessroutinesagainorevenchange/copyassitanceclassforanother
purpose.

Insteadofdeployingyourmethodshere

youputthemintotheassistanceclass.
Thiswayyouhaveagoodoverviewintheleftbrowser.
FormoreinformationoncodearchitecturereadWD4AfromU.HoffmannchapterModelofLayerSeparationp185.

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Howtosimplifycontextreading/writing?
About60%ormoreofsoftwarecostsismaintenance(BoehmB.SoftwareEngineeringEconomics).
Themorecodelinesyouhave,themoremaintenancecostsappearsinyourbudget.Soitmakes
sensetominimizethenumberofcodelines.SAPstandarddevelopersseemedtoignorethisfactby
developingcontextaccessforWD4A.ThisisthestandardwayusingWebDynproCodeWizardto
generatecode:
methodDEMO_READ_CONTEXT1.

DATAlo_nd_userTYPEREFTOif_wd_context_node.
DATAlo_nd_usr01TYPEREFTOif_wd_context_node.
DATAlo_el_usr01TYPEREFTOif_wd_context_element.
DATAls_usr01TYPEwd_this>element_usr01.
*navigatefrom<CONTEXT>to<USER>vialeadselection
lo_nd_user=wd_context>get_child_node(name=wd_this>wdctx_user).

*navigatefrom<USER>to<USR01>vialeadselection
lo_nd_usr01=lo_nd_user>get_child_node(name=wd_this>wdctx_usr01).

*getelementvialeadselection
lo_el_usr01=lo_nd_usr01>get_element().

*getalldeclaredattributes
lo_el_usr01>get_static_attributes(
IMPORTING
static_attributes=ls_usr01).

endmethod.

Asusuallyeachviewmethodisreading/writingoneormorecontextnodes,youcanhavehundreds
ofunnecessarylinesinyourprogramandthousandsinyoursystem.
Insteadofthese14linesitispossibletoreadcontextintwo.
methodDEMO_READ_CONTEXT2.

DATAls_usr01TYPEwd_this>element_usr01.

wd_this>o_context_helper
>get_attributes(exportingpath='USER/USR01'importingvalues=ls_usr01).

endmethod.

Otherprogrammersdidtrytosimplifythiscodeclutter,butthenicestsolutionisfromMarc
Cawood.Hehadtheideaandthefirstsolutionofintegratingahelperclassandusingitto
reachthecontext.

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Youhaveapriceforthesesimplification:youneedahelperclass,whatyouneedtoinitializeinthe
WDOINIThookmethodofyourcomponent:

methodwddoinit.

createobjectwd_this>o_context_helperexportingcontext=wd_context.

endmethod.

Thishelperclassyoufindintheappendix.

Usestructurevsfields
Thisadvicemaynotbenewforyou,Istillfinditimportanttomentionit:Insteadofusingindividual
fieldsitissimplertousecomplerestructures.
methodINIT_USER_FIELDS1.
data:lv_bnametypexubname,
lv_datfmtypexudatfm,
lv_hdesttypexuhdest,
lv_menuetypexumenue,
lv_langutypexulangu.

wd_assist>init_user_fields1(exportingbname=lv_bname
datfm=lv_datfm
hdest=lv_hdest
menue=lv_menue
langu=lv_langu).

wd_this>o_context_helper>set_attribute(exportingpath='USER/USR01/BNAME'value=lv_bname).
wd_this>o_context_helper>set_attribute(exportingpath='USER/USR01/DATFM'value=lv_datfm).
wd_this>o_context_helper>set_attribute(exportingpath='USER/USR01/HDEST'value=lv_hdest).
wd_this>o_context_helper>set_attribute(exportingpath='USER/USR01/MENUE'value=lv_menue).
wd_this>o_context_helper>set_attribute(exportingpath='USER/USR01/LANGU'value=lv_langu).

endmethod.

Thiswayittakes15lines.
methodINIT_USER_FIELDS2.

data:ls_usr01typeusr01.
www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07


*Callassistanceclasstoinitfields
wd_assist>init_user_fields2(exportingusr01=ls_usr01).

*Setcontext

wd_this>o_context_helper>set_attributes(exportingpath='USER/USR01'values=ls_usr01).

endmethod.

Thiswaythesametakes3lines.

HandleDropdownByKey
DropdownlistarenotadvisedbyusabilityexpertsforexamplebyJakobNielseninHomepage
UsabilitystillitisastandardandwidelyusedtoolinWD4A.Youwillneeditforexamplefor
languageorcountryselection.

ToourgreatsurprisetheWD4Aengineisfillingdropdownbykeyforcertaindomains,forothersnot.
Fordomains,thathavedirectvaluesassignedeverythingisfilledautomatically.Ifadomainhas
valuesindirectlythroughatable,novaluesarefilled.

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Soifyouhaveadropdownbykeyfieldwiththisdomain,novalueswillbefilledautomatically.You
havetocallwellhiddenSET_ATTRIBUTE_VALUE_SETofIF_WD_CONTEXT_NODE_INFO,whatyou
findbycallingGET_NODE_INFOofthenodeobject.
methodSET_COUNTRY_VALUES1.

data:lo_node_infotypereftoif_wd_context_node_info.
datalo_nd_t005typereftoif_wd_context_node.
data:ls_t005ttypet005t,
lt_t005ttypetableoft005t.
data:lt_valuesettypewdr_context_attr_value_list,
l_valuetypewdr_context_attr_value.

"Getnode
lo_nd_t005=wd_context>get_child_node(name=wd_this>wdctx_t005).
lo_node_info=lo_nd_t005>get_node_info().

"Selectcountrylines
select*fromt005tintotablelt_t005t
wherespras=sylangu.

"Putcountrylinesintovalueset
loopatlt_t005tintols_t005t.
l_valuevalue=ls_t005tland1.
l_valuetext=ls_t005tlandx.
insertl_valueintotablelt_valueset.
endloop.

"Assignvalueset
callmethodlo_node_info>set_attribute_value_set(exportingname='LAND1'
value_set=lt_valueset
).
endmethod.

ThiscodecanbefurtheroptimizedbyahelpermethodinZBITS_WD_CONTEXT_HELPER:
www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

methodset_country_values2.

data:lt_valuesettypewdr_context_attr_value_list,
l_valuetypewdr_context_attr_value.
data:ls_t005ttypet005t,
lt_t005ttypetableoft005t.

"Selectcountrylines
select*fromt005tintotablelt_t005t
wherespras=sylangu.

"Putcountrylinesintovalueset
loopatlt_t005tintols_t005t.
l_valuevalue=ls_t005tland1.
l_valuetext=ls_t005tlandx.
insertl_valueintotablelt_valueset.
endloop.

"Assignvalueset
wd_this>o_context_helper>set_attribute_value_set(exportingpath='T005'
name='LAND1'
value_set=lt_valueset).

endmethod.

HowtocallSmartformsfromWebDynpro?
AdobeFormsisthenewtechnology,butsometimesitisnotimplementedyetoryoujusthavethe
anexistingforminSmartforms.ThisiswhyIpreparedasimpleexampletocallaSmartformsin
WD4A.YouwillhaveabuttoncalledPrintFormorsomethinglikethatpointingontothismethod.
Thecallingaction/methodlookslikethis:
methodONACTIONSHOW_SMARTFORM.

data:l_pdfstringtypexstring.

"Selectforprint
wd_assist>prepare_smartforms(importingp_pdf=l_pdfstring).

"Callprint
cl_wd_runtime_services=>attach_file_to_response(
i_filename='smartform.pdf'
i_content=l_pdfstring
i_mime_type='application/pdf'
i_in_new_window=abap_false
i_inplace=abap_false).

endmethod.

www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Thereisanassistanceclassmethodbehind:
methodprepare_smartforms.
"###SMARTFORMSPDFCALL
data:lv_buffertypexstring.
data:lv_stringtypestring.
data:lv_fnamtypers38l_fnam.
data:lv_bytecounttypei.
data:lt_linestypetableoftline.
data:ls_linetypetline.
data:l_pdfstringtypexstring.
data:l_xlinetypexstring.

data:ls_ssfctrloptypessfctrlop."ControlParameters
data:ls_output_optionstypessfcompop."OutputOptions
data:ls_job_output_infotypessfcrescl."JobOutputInfo
data:ls_job_output_optionstypessfcresop."JobOutputOptions

"Smartformscustomerparameter
data:ls_booktypeppftbook.

callfunction'SSF_FUNCTION_MODULE_NAME'
exporting
formname='SPPFDEMO_BOOK'
importing
fm_name=lv_fnam.

ls_ssfctrlopno_dialog='X'.
ls_ssfctrlopgetotf='X'.
ls_ssfctrloppreview='X'.

ls_output_optionstdnoprev='X'.
ls_output_optionstdtitle=sytitle.
ls_output_optionstdnewid='X'.

"Callsmartforms
callfunctionlv_fnam
exporting
control_parameters=ls_ssfctrlop
output_options=ls_output_options
is_book=ls_book
importing
job_output_info=ls_job_output_info
job_output_options=ls_job_output_options
exceptions
formatting_error=1
internal_error=2
send_error=3
user_canceled=4
others=5.

"ConverttoPDF
callfunction'CONVERT_OTF'
exporting
format='PDF'
importing
bin_filesize=lv_bytecount
tables
otf=ls_job_output_infootfdata
lines=lt_lines
www.zbalai.com

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

exceptions
err_conv_not_possible=1
err_bad_otf=2.

loopatlt_linesintols_line."intol_line.
lv_string=ls_line.
exportmy_data=lv_stringtodatabufferlv_buffer.
importmy_datatol_xlinefromdatabufferlv_bufferinchartohexmode.

concatenatel_pdfstringl_xlineintol_pdfstringinbytemode.
endloop.

p_pdf=l_pdfstring.

endmethod."prepare_smartforms

TheSmartformsfunctioniscalledtogeneratetheforminOTFformat.ThenthisOTFisconvertedto
PDFandstoredinparameterp_pdf.

HowtocallAdobeFormsfromWebDynpro?
Youcanfindmanydifferentmethodstocallanadobeform.Ifitisenoughtohaveaprintform
button,thatdeliversyouaPDF,youcanusethefollowingtwomethods.
Thecallingaction/methodlookslikethis:
methodONACTIONSHOW_ADOBE_FORM.

data:l_pdfstringtypexstring.

"Selectforprint
wd_assist>prepare_adobe_forms(importingp_pdf=l_pdfstring).

"Callprint
cl_wd_runtime_services=>attach_file_to_response(
i_filename='adobe_form.pdf'
i_content=l_pdfstring
i_mime_type='application/pdf'
i_in_new_window=abap_false
i_inplace=abap_false).

endmethod.

Theuserclickingontheprintformbuttonhastohaveadefaultprinter.(UsuallyLOCL)

www.zbalai.com

10

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Thereisanassistanceclassmethodbehind:
methodprepare_adobe_forms.
*"###ADOBEFORMSPDFCALL
data:lv_funcnametypefuncname.
data:ls_outputparamstypesfpoutputparams.
data:ls_formoutputtypefpformoutput.

callfunction'FP_FUNCTION_MODULE_NAME'
exporting
i_name='FP_TEST_DATE'
importing
e_funcname=lv_funcname.

ls_outputparamsnodialog='X'."suppressprinterdialogpopup
ls_outputparamsgetpdf='X'."launchprintpreview
callfunction'FP_JOB_OPEN'
changing
ie_outputparams=ls_outputparams
exceptions
cancel=1
usage_error=2
system_error=3
internal_error=4
others=5.

callfunctionlv_funcname
*exporting
*/1bcdwb/docparams=fp_docparams
importing
/1bcdwb/formoutput=ls_formoutput
exceptions
usage_error=1
system_error=2
internal_error=3
others=4.

callfunction'FP_JOB_CLOSE'
exceptions
usage_error=1
system_error=2
internal_error=3
others=4.

p_pdf=ls_formoutputpdf.

endmethod."prepare_adobe_forms

www.zbalai.com

11

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Appendix
Thehelperclass
Youalsofindthesepartsintextfiles:
http://www.zbalai.com/_abap/content/420_web_dynpro_for_abap_tips_and_tricks/HELPER.txt
http://www.zbalai.com/_abap/content/420_web_dynpro_for_abap_tips_and_tricks/HELPER_METHODS.txt

Toeasilyuploadthehelperclassyouneedtoswitchtoimplementationpublicandprivatesection.
Publicsection:
*"*publiccomponentsofclassZBITS_WD_CONTEXT_HELPER
*"*donotincludeothersourcefileshere!!!
publicsection.

dataO_CONTEXTtypereftoIF_WD_CONTEXT_NODE.

methodsGET_ATTRIBUTE
importing
!PATHtypeSTRING
exporting
value(VALUE)typeDATA.
methodsGET_ATTRIBUTES
importing
!PATHtypeSTRING
exporting
!VALUEStypeDATA.
methodsSET_ATTRIBUTE
importing
!PATHtypeSTRING
!VALUEtypeDATA.
methodsSET_ATTRIBUTES
importing
!PATHtypeSTRING
!VALUEStypeDATA.
methodsGET_STATIC_ATTRIBUTES_TABLE
importing
!PATHtypeSTRING
!FROMtypeIdefault1
!TOtypeIdefault2147483647
exporting
!TABLEtypeANYTABLE.
typepoolsABAP.
methodsBIND_TABLE
importing
!PATHtypeSTRING
!NEW_ITEMStypeANYTABLE
!SET_INITIAL_ELEMENTStypeABAP_BOOLdefaultABAP_TRUE
!INDEXtypeIoptional.
methodsIS_CHANGED_BY_CLIENT
importing
!PATHtypeSTRING
returning
value(FLAG)typeABAP_BOOL.
methodsGET_NODE
importing
!PATHtypeSTRING
returning
value(RESULT)typereftoIF_WD_CONTEXT_NODE.
www.zbalai.com

12

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

methodsSET_CONTEXT
importing
!CONTEXTtypereftoIF_WD_CONTEXT_NODE.
methodsCONSTRUCTOR
importing
!CONTEXTtypereftoIF_WD_CONTEXT_NODEoptional.
methodsSET_LEAD_SELECTION
importing
!PATHtypeSTRING
!ELEMENTtypereftoIF_WD_CONTEXT_ELEMENT.
methodsRESET_CHANGED_BY_CLIENT
importing
!PATHtypeSTRING.
methodsSET_CHANGED_BY_CLIENT
importing
!PATHtypeSTRING
!FLAGtypeABAP_BOOL.

Privatesection:
privatesection.

methodsGET_ELEMENT_PATH
importing
!PATHtypeSTRING
exporting
!ELPATHtypeSTRING
!ATTRIBUTEtypeDATA.
methodsGET_ELEMENT
importing
!PATHtypeSTRING
returning
value(ELEMENT)typereftoIF_WD_CONTEXT_ELEMENT.

Methods:
methodbind_table.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>bind_table(exportingnew_items=new_itemsset_initial_elements=
set_initial_elementsindex=index).

endmethod.

methodCONSTRUCTOR.

o_context=context.

endmethod.

methodGET_ATTRIBUTE.
*********************************************************************
www.zbalai.com

13

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

DATA:lv_elpathTYPEstring,
lv_attributeTYPEstring,
lo_elementTYPEREFTOif_wd_context_element.
*********************************************************************

"Validatenecessaryobjectinitialisation
CHECKo_contextISBOUND.

"Determineelementpathandattributename
get_element_path(EXPORTINGpath=pathIMPORTINGelpath=lv_elpathattribute
=lv_attribute).

"Gettheelement
lo_element=get_element(lv_elpath).
lo_element>get_attribute(EXPORTINGname=lv_attributeIMPORTINGvalue=
value).

endmethod.

methodget_attributes.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>get_static_attributes(importingstatic_attributes=values).

endmethod.

methodGET_NODE.
*********************************************************************
DATA:lv_pathTYPEstring,
lt_pathTYPETABLEOFstring,
lv_indexTYPEi,
lv_lengthTYPEi,
lo_nodeTYPEREFTOif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
CHECKme>o_contextISBOUND.

"Readthepathintoatable
SPLITpathAT'/'INTOTABLElt_path.

"Getthepathdepth
DESCRIBETABLElt_pathLINESlv_length.

"Rootattributes
IFlv_length=0.
lo_node=me>o_context.
ENDIF.

"Followthepath
lv_index=0.
LOOPATlt_pathINTOlv_path.
lv_index=lv_index+1.
www.zbalai.com

14

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

IFlv_index=1.
"Getfirstnodeinthepath
lo_node=me>o_context>get_child_node(lv_path).
ELSE.
"Getnextnodedownthepath
lo_node=lo_node>get_child_node(lv_path).
ENDIF.
ENDLOOP.

result=lo_node.

endmethod.

methodget_static_attributes_table.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>get_static_attributes_table(exportingfrom=fromto=toimporting
table=table).

endmethod.

methodIS_CHANGED_BY_CLIENT.

*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
flag=lo_node>IS_CHANGED_BY_CLIENT().

endmethod.

methodRESET_CHANGED_BY_CLIENT.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>RESET_CHANGED_BY_CLIENT().

endmethod.

methodSET_ATTRIBUTE.
*********************************************************************
DATA:lv_elpathTYPEstring,
www.zbalai.com

15

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

lv_attributeTYPEstring,
lo_elementTYPEREFTOif_wd_context_element.
*********************************************************************

"Validatenecessaryobjectinitialisation
CHECKo_contextISBOUND.

"Determineelementpathandattributename
get_element_path(EXPORTINGpath=pathIMPORTINGelpath=lv_elpathattribute
=lv_attribute).

"Gettheelement
lo_element=get_element(lv_elpath).
lo_element>set_attribute(EXPORTINGname=lv_attributevalue=value).

endmethod.

methodset_attributes.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>set_static_attributes(exportingstatic_attributes=values).

endmethod.

methodSET_CHANGED_BY_CLIENT.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
lo_node=get_node(path).
lo_node>SET_CHANGED_BY_CLIENT(flag).

endmethod.

methodSET_CONTEXT.

o_context=context.

endmethod.

methodset_lead_selection.
*********************************************************************
data:lo_nodetypereftoif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
checko_contextisbound.

"Gettheelement
www.zbalai.com

16

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

lo_node=get_node(path).
lo_node>set_lead_selection(exportingelement=element).

endmethod.

methodGET_ELEMENT.
*********************************************************************
DATA:lo_nodeTYPEREFTOif_wd_context_node.
*********************************************************************

"Validatenecessaryobjectinitialisation
CHECKme>o_contextISBOUND.

lo_node=get_node(path).

element=lo_node>get_element().

endmethod.

methodGET_ELEMENT_PATH.

*********************************************************************
DATA:lv_pathTYPEstring,
lt_pathTYPETABLEOFstring,
lv_indexTYPEi,
lv_lengthTYPEi,
lv_lengm1TYPEi.
*********************************************************************

"Readthepathintoatable
SPLITpathAT'/'INTOTABLElt_path.

"Getthepathdepth
DESCRIBETABLElt_pathLINESlv_length.
lv_lengm1=lv_length1.

"Followthepath
lv_index=0.
LOOPATlt_pathINTOlv_path.
lv_index=lv_index+1.
IFlv_index<lv_length.
CONCATENATEelpathlv_pathINTOelpath.
IFlv_index<lv_lengm1.
CONCATENATEelpath'/'INTOelpath.
ENDIF.
ELSE.
attribute=lv_path.
ENDIF.
ENDLOOP.

endmethod.

www.zbalai.com

17

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

Softwarecomponentsused
SAPECC6.0
SAPFrontend7.10

Aboutthedevelopers
MarcCawoodisanexperiencedSAPdeveloperwithreferencesinWD4Afield.
ZsoltBalai(zbalai@zbalai.com)authorofthisdocumentisanSAP/Internettechnicalconsultant
anddeveloperworkinginHR/FI/CO/MM/SDmodules.HeiscurrentlyemployedbyBitsAGandis
availableforprojectsinSwitzerland.

References
[1]HoffmanUlliWebDynproforABAP,SAP/GalileoPress(2006).
[2]BoehmB.SoftwareEngineeringEconomics,PrenticeHall(1981).
[3]JakobNielsen&MarieTahirHomepageUsablityNewRiders(2001).

Keywords
WD4A,WDA,WDF4A,WebDynproforABAP,tipsandtricks,bestpractices,simplecontextreading

www.zbalai.com

18

Web_Dynpro_for_ABAP_Tips_and_Tricks_V07

You might also like