ABAP RegEx for ABAP Regular Expression to fetch Date from String
Regular expressions in ABAP can be handled by ABAP Regex using ABAP developers. The regular expression processor ABAP Regex is a powerful tool for developers to match particular patterns in a given text.
In this ABAP tutorial, I'ld like to give sample ABAP code which searches for dates in a given string variable. Date expressions can be in various forms like 29/02/2012 or 19.05.2011 or 20100706. Even dates can be written in format 1/1/2001 or 3/5/2012, etc. So the ABAP RegEx regular expression will return the list of dates in the given parametric string expression.
Please note that creating an regexp expression can be difficult and time consuming. So it is good to test regular expression in each step in your ABAP development process. During building complex ABAP Regex expressions in your coding, ABAP developers can use the regular expression tester Regex Toy to test and try their regular expression. Developers can run the Regex Toy ABAP regular expression tester application by running the ABAP report DEMO_REGEX_TOY using SE38 transaction.
In the below code I'll use a sample text (a dummy string) that includes dates in it.
Then within the user form uGetDatesRegEx where the ABAP regular expression function FIND ALL OCCURRENCES OF REGEX command is called to get all matching patterns into an internal table.
The contents of the internal table is written on the screen.
Before running the below sample ABAP report I want to explain the ABAP RegEx pattern '(\d{1,2}[.|/]\d{1,2}[.|/]\d{4})|(\d{4}[.|/]\d{1,2}[.|/]\d{1,2})'
Please note that the regular expression pattern "\d" is for matching any number from 0 to 9.
\d{1,2} means the pattern matches for text with 1 or 2 digit number. It can be day number or month expression of the date
Similar to this the pattern \d{4} matches exactly with a string with 4 digit number.
This pattern is used to fetch the year part of the date.
the regular expression pattern [.|/] means, we are looking for "." character or "/" character. Only one character is allowed here.
You might already know that "|" is logically OR expression.
The pattern is actually formed of two parts seperated by logical OR "|" expression.
The first part of the RegExp checks for dd/dd/dddd format (or d/dd/dddd, dd/d/dddd or d/d/dddd)
And the second part check similar where the year part is at the beginning of the date expression.
When you execute the above ABAP report Z_RegEx_Fetch_Date_from_Text, the user form uGetDatesRegEx will return a list of date values that matches the given pattern "(\d{1,2}[.|/]\d{1,2}[.|/]\d{4})|(\d{4}[.|/]\d{1,2}[.|/]\d{1,2})" shown in below screenshot
Recently in a Smart Form development, we have implemented this solution to get date from ZTERM text field. We have placed the uGetDatesRegEx form codes in the Smartform Form tab, so that any where within the SAP Smartform codes we could call this regular expression performing form routine. Then in a code block (Program Lines element of Smartform), we assigned the date value returned by the user form function to a text element and displayed the date on the output document.
I believe developers can use this regular expression in ABAP reports of their own by making changes according to their regular expression requirements. Don't forget to make RegEx test using the regular expressions RegEx pattern tester ABAP tool Regex Toy (tcode demo_regex_toy)