Skip to main content

Het gebruik van standaards

Vorige week was ik een dagje geld verdienen bij een klant. Even een stukje extra functionaliteit bijbouwen op een eerder ontwikkeld stuk maatwerk. Dat was niet zomaar een stuk maatwerk, maar een bijzonder stuk. Bijzonder omdat er op zijn minst al 4 ontwikkelaars mij voor waren gegaan, maar ook omdat de functionaliteit (het zoeken naar het juiste delivery item) erg complex in elkaar zit.
Op momenten zoals toen realiseer ik me weer dat het hanteren van de development standards zeer belangrijk is. Want als elke developer zijn eigen standaards toepast, wordt het programma erg onleesbaar. Klein voorbeeld:

DATA:
lt_xvbplp TYPE ts_xvbplp OCCURS 0 WITH HEADER LINE,
lt_vbplp TYPE vbplp OCCURS 0 WITH HEADER LINE.

LOOP AT xvbplp.
MOVE-CORRESPONDING xvbplp TO lt_xvbplp.
APPEND lt_xvbplp.
ENDLOOP.


Laten we afspreken dat we de OCCURS niet meer gebruiken. In plaats daarvan naast de tabel definitie direct de definitie van een structuur die als work-area dient. Dan krijg je het volgende:

TYPES:
ts_xvbplp TYPE xvbplp,
tt_vbplp TYPE TABLE OF ts_xvbplp.

DATA:
ls_xvbplp TYPE ts_xvbplp,
lt_xvbplp TYPE tt_vbplp.

LOOP AT xvbplp INTO ls_xvbplp.
... "Doe iets met ls_xvbplp
APPEND ls_xvbplp TO lt_xvbplp.
ENDLOOP. "xvbplp


Laten we ook meteen afspreken dat spaghetti constructies als onderstaande niet gebruikt worden, deze zijn zeeeer ondoorzichtig en eigenlijk alleen te begrijpen door de ontwikkelaar die het gemaakt heeft. In het voorbeeld wordt binnen een routine (find_delpos) diezelfde routine weer aangeroepen wanneer er nog niets gevonden is.

*&---------------------------------------------------------------------*
*& Form find_delpos
*&---------------------------------------------------------------------*
FORM find_delpos USING uv_venum TYPE venum
uv_matnr TYPE matnr
ut_xvbplp TYPE tt_vbplp
CHANGING cs_vbplp TYPE vbplp.

LOOP AT lt_xvbplp
INTO ls_xvbplp
WHERE venum = uv_venum.

* search until delivery item is found
IF NOT ls_xvbplp-vbeln IS INITIAL AND
ls_xvbplp-matnr = uv_matnr.
* delivery item found !
cs_vbplp = ls_xvbplp.
EXIT.
ENDIF.

* search with higher level
IF ls_xvbplp-posnr IS INITIAL.
lv_venum = ls_xvbplp-unvel.
PERFORM find_delpos USING lv_venum
uv_matnr
lt_xvbplp[]
CHANGING cs_vbplp.


Het document Capgemini standards SAP Development is recent nog door Evert-Jan aangepast. Gebruik het alsjeblieft bij je werkzaamheden!

Comments

Popular posts from this blog

SAP Fiori and SAP Screen Personas finally free for SAP customers

This week the SAPPHIRENOW event takes place in Orlando, a yearly event where SAP announces its strategy and new products. On Tuesday Bill McDermott, the CEO from SAP, did some major announcements . All with regard to making SAP simpler. In this blog I will describe the license changes for SAP Fiori and SAP Screen Personas. These new UI innovations are now part of SAP’s maintenance fee. SAPPHIRENOW keynote

Thank you @CiberNL and hello @TheNextView

Another strange moment in my professional life, I will leave Ciber to join The Next View  March 1st. Time to have a short retrospective . Team picture at outing 2010 First of all I am proud , proud on our SAP NetWeaver team: Alice, Arnaut, Bernard, Dave, Dennis, Frank, Guido, Harrie, Iemke, Igor, Jeroen, Juan-Jose, Laurens, Leo, Marc, Michael, Ravi, Roel, Ronan, Sanket, Steven, Ted, Tim, Wim and Vladimir. 

SAP TechEd 2013, the best and strangest experience ever

SAP TechEd 2013 - The best but also the strangest SAP TechEd ever Together with 10 colleagues I visited SAP TechEd in November 2013. Tim Burchartz - Jaap van de Mheen - Frank Hammen - Michael Hardenbol - Steven Spronk Twan van den Broek - Roel van den Berge - Ted Castelijns - Maarten Kreijveld (Missing on the pic: Leo van Hengel and Wim Snoep, who attended one day due to busy customer schedule) Best Team CloudSitter won the SAP InnoJam on Monday with an app that monitors new born baby’s on their wellbeing. Premature babies have an higher risk on Sudden Infant Death Syndrome , that’s why we came up with a sensor that tracks heartbeat, temperature and breathing. Information is stored in a central database in which thresholds can be validated. If there is reason to warn, the mobile app sends an alarm and changes color. Time to check upon your child. Matt presenting at InnoJam. Winning InnoJam meant that we could also participate in DemoJam , the ultimate stage for