Posts

  • My first game jam submission - js13kGames 2021

    Tags: Game development, Game jam, js13kgames

    A game jam is a competition where participants try to make a video game from scratch within a limited time frame. js13kGames is a JavaScript game jam running once a year since 2012. A fun and extremely challenging component of the js13kGames competition is that the file size is limited to 13 kilobytes. The competition ran between mid-August and mid-September 2021, and in this blog post I’ll share my experiences from participating.

  • Pass by value or pass by reference?

    Tag: ABAP

    When calling a method of an ABAP class, data can be passed from actual parameters to formal parameters either by value or by reference. In this blog post I’ll discuss the difference and highlight some important scenarios.

  • Using native SQL for case-insensitive search

    Tag: ABAP

    As I was developing an OData service related to contact persons in SAP CRM, I was faced with the scenario that the user wanted to search based on e-mail addresses of the contact persons. The e-mail addresses are stored in the database with a mixture of uppercase and lowercase letters. In this post, I’ll explain how the requirement can be met by using native SQL.

  • Wrong user used in backend when calling OData service through API Management with SAML2 token

    Tags: API management, OData

    I have developed an OData service that returns different results depending on which user is calling the service. I noticed that users often didn’t get the expected results, but rather the results of another user using the application at the same time. In this blog post I’ll describe the issue and the solution I found.

  • Every OData call through API Management transformed into a GET call

    Tags: API management, OData

    I recently struggled with a confusing issue related to SCP API Management, SAP NetWeaver Gateway, and OData. The issue was that irrespective of the HTTP verb used when calling the API through API Management, the OData service interpreted the call as a GET call. In this blog post I’ll provide some details on the issue as well as the solution implemented to remedy the issue.

  • Using Markdown to document ABAP code

    Tags: ABAP, Documentation

    Having worked in IT for about 17 years, mostly as a consultant, I’ve yet to see a company where the technical documentation is up-to-date and reliable. I think that a major reason for the documentation not being up-to-date is that documentation is maintained far away from the source code, for example in a plethora of Word documents stored in a separate Solution Manager system. In this post, I’ll explain how Markdown files being handled in a Git repository can bring the documentation much closer to the ABAP source code.

  • Converting UUID between hyphened representation and RAW16

    Tags: ABAP, OData

    If you’ve been testing OData services for example with Postman lately, you’ve most likely come across the scenario where you need to convert a UUID (Universal Unique Identifier) between hyphened representation and RAW16. I’ve previously done this manually, but today I decided to find a class that could help me with this.

  • My unit test local class templates

    Tags: ABAP, Unit testing

    I try to write unit tests for as much of my code as I think makes sense. To speed up the creation of my unit tests, I’ve set up two ABAP templates in eclipse which I want to share with you in this post.

  • Why ABAP exception handling isn’t like playing catch with your dog

    Tags: ABAP, ABAP fundamentals

    I’ve been cleaning up some legacy ABAP code lately, and a reoccurring theme is poor exception handling. In this post, I’ll explain why ABAP exception handling shouldn’t be treated like a game of catch with your dog. I’ll discuss some anti-patterns I’ve come across in the legacy code and give a few suggestions on how to improve your exception handling.

  • Why I prefer WYSIWYM for technical writing

    Tags: Jekyll, LaTeX, Markdown, WYSIWYM, Writing

    Last month I switched my blog from WordPress over to Jekyll. Jekyll is a static site generator, which transforms plain text files into a static website. I’ve also started writing a book using LaTeX, which is a document preparation system also using plain text. In this blog post, I’ll explain why I think the What You See Is What You Mean (WYSIWYM) approach is preferable for technical writing, at least for me.

  • HTTP status codes in ABAP

    Tags: ABAP, HTTP, OData

    I've been working a lot with OData and REST lately, outbound as well as inbound. Some of my code needs to handle HTTP status codes in different ways. Since I didn't want to hard-code the status codes in my code, I started looking around for standard classes and interfaces which could be of use to me. This blog post is a brief summary of what I found.

  • The progress indicator in ABAP reports

    Tags: ABAP, ABAP fundamentals

    I'm sure most of you have been asked to develop a report displaying a progress indicator during the execution of the report. I just developed a migration report which needs several minutes to execute, so I decided to put in a progress indicator.

  • My two first conference talks

    Tags: ABAP, Conference talks, Learning, Public speaking

    I held my two first conference talks earlier this week at the Swedish SAP user group conference SAPSA IMPULS 2019, and in this post I will share some of my experiences. SAPSA IMPULS is a yearly conference targeting people working with SAP solutions in the Nordics, and the event had more than 800 attendees this year. This was a two days event, and I was scheduled to hold two different presentations, one on each day of the conference.

  • Join Hacktoberfest and contribute to open-source software

    Tags: Hacktoberfest, Open-source software

    I first heard about Hacktoberfest on a podcast a couple of months ago, and it sparked my interest since I've become more involved in open-source software projects lately. Hacktoberfest is a month-long event with the purpose of celebrating open-source software. The event is run by DigitalOcean and dev.to. Having lived in Munich for a couple of years, I, of course, find the name of the event amusing as well.

  • Determine the current class and method names in ABAP

    Tags: ABAP, ABAP fundamentals

    In some situations, it can be useful to be able to determine the names of the current class and method dynamically instead of using hard-coded strings. I find this particularly useful for logging purposes. I have a helper class which writes to the system log when certain exceptions are triggered. As input to this helper class (or rather the method writing to the system log) I want to provide the names of the class and method where the exception was raised.

  • OData URL encoding of single quote ' (%27) in a search string

    Tags: OData, URL encoding

    When developing an OData service for searching for contact persons by name, I came across a scenario where the name contains the special character ' (single quote character). As an example, the user would like to search for contact persons with the last name O'Reilly.

  • What are pragmas and pseudo comments in ABAP?

    Tags: ABAP, ABAP fundamentals

    When using the ABAP Test Cockpit (ATC) for statically and dynamically checking the quality of your ABAP code and related repository objects, some of the warnings and errors identified by the ATC aren't relevant in your specific scenario. Leaving errors and warnings unaddressed might cause confusion at some future point-in-time when you or another developer needs to change the code. In order to reduce the confusion, ABAP pragmas and pseudo comments can be used to blend out irrelevant warnings and errors. Let us take a detailed look at what pseudo comments and pragmas are and how to use them.

  • What is the difference between ` and ' in ABAP?

    Tags: ABAP, ABAP fundamentals

    When defining a variable containing a text of some sort in ABAP, which of the following options do you typically use?

  • Grace Murray Hopper - A computer pioneer

    Tags: Computer history, Grace Hopper

    Grace Hopper was a computer pioneer and one of the first programmers. I just finished reading the book "Grace Murray Hopper: Working to create the future" by Carl J Schneider, and I'd like to share some of my takeaways with you.

  • How you can stay up-to-date through MOOCs

    Tags: Learning, MOOC, openSAP

    In this post, I'll share with you how you can use MOOCs to stay up-to-date with your field and acquire new skills. I'll also share some of my experiences after having completed about 30 MOOCs in the last year and a half.

  • Computer Science concepts you can learn from block-based programming

    Tags: Block-based programming, Computer Science, MOOC, Scratch, Snap!, openSAP

    I have signed up to volunteer for the Swedish nonprofit organization Kodcentrum this autumn. Kodcentrum introduces kids to programming and digital creation free-of-charge. We will be using Scratch in the coding labs, and I've played around with Scratch previously on a couple of occasions. In this post, I'll share what I learnt by taking a course on Snap!, which is closely related to Scratch.

  • Open-source project - SAP/styleguides - Clean ABAP

    Tags: ABAP, Clean code, Open-source

    A highly valuable resource for the ABAP developer is the clean ABAP guide available on GitHub.com under SAP/styleguides. The guide helps the ABAP developer in writing clean code.

  • SAP Fiori 3 - The next level of SAP's design system

    Tags: MOOC, SAP, SAP Fiori, UX, openSAP

    SAP launched the first version of its design system Fiori back in 2013. The first version was limited to self-service scenarios targeting the casual user. In 2016, Fiori 2.0 appeared on the scene, expanding the scope to targeting the power user. SAP is now presenting version 3 of Fiori, and I've just attended a MOOC on openSAP covering the topic. The course is Intelligent Enterprise User Experience with SAP Fiori 3, and it's available free of charge. In this post, I will summarize my main takeaways from the course.

subscribe via RSS