diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/expression/MethodOperator.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/expression/MethodOperator.java
index f0f9638..b16fe31 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/expression/MethodOperator.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/expression/MethodOperator.java
@@ -27,7 +27,7 @@
   ENDSWITH("endswith"), INDEXOF("indexof"), STARTSWITH("startswith"), TOLOWER("tolower"), TOUPPER("toupper"), TRIM(
       "trim"), SUBSTRING("substring"), SUBSTRINGOF("substringof"), CONCAT("concat"), LENGTH("length"), YEAR("year"),
   MONTH("month"), DAY("day"), HOUR("hour"), MINUTE("minute"), SECOND("second"), ROUND("round"), FLOOR("floor"),
-  CEILING("ceiling");
+  CEILING("ceiling"), REPLACE("replace");
 
   private String syntax;
   private String stringRespresentation;
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
index 2741d50..6623a75 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
@@ -862,6 +862,12 @@
     combination.add(new ParameterSet(boolean_, string, string));
     lAvailableMethods.put(MethodOperator.SUBSTRINGOF.toUriLiteral(), new InfoMethod(MethodOperator.SUBSTRINGOF, 1, -1,
         combination));
+    
+    // replace
+    combination = new ParameterSetCombination.PSCflex();
+    combination.add(new ParameterSet(string, string, string, string));
+    lAvailableMethods.put(MethodOperator.REPLACE.toUriLiteral(), new InfoMethod(MethodOperator.REPLACE, 3, 3,
+        combination));
 
     // concat
     combination = new ParameterSetCombination.PSCflex();
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
index 0b9c17c..7e13ff2 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
@@ -385,6 +385,8 @@
     // lcl_helper=>veri_type( iv_expression = `second(datetimeoffset'2002-10-10T12:00:00-05:00')` io_expected_type =
     // lo_simple_type ).
     GetPTF("second(datetimeoffset'2002-10-10T12:00:00-05:00')").aEdmType(EdmInt32.getInstance());
+    
+    GetPTF("replace('aBa','B','CCC')").aEdmType(EdmString.getInstance());
   }
 
   @Test
@@ -595,22 +597,16 @@
     // iv_expected_textid = /iwcor/cx_ds_expr_syntax_error=>function_invalid
     // iv_expected_msg = `Invalid function 'replace' detected` ).
     // -->see test method abapMethodRleplaceNotAllowed()
-  }
-
-  @Test
-  public void abapMethodRleplaceNotAllowed() // copy of ABAP method test_filter_parser
-  {
-    // Filter method is NOT allowed
-    // lcl_helper=>veri_expression_ex(
-    // iv_expression = `replace('aBa','B','CCC')`
-    // iv_expected_textid = /iwcor/cx_ds_expr_syntax_error=>function_invalid
-    // iv_expected_msg = `Invalid function 'replace' detected` ).
-
-    // http://services.odata.org/Northwind/Northwind.svc/Products/?$filter=replace('aBa','B','CCC')
-    // -->Unknown function 'replace' at position 0.
-    GetPTF("replace('aBa','B','CCC')").aExMsgText(
-        "Unknown function \"replace\" at position 1 in \"replace('aBa','B','CCC')\".");
-
+    
+    GetPTF("replace('a','b')")
+    .aExMsgText(
+        "No applicable method found for \"replace\" at position 1 in \"replace('a','b')\" "
+        + "with the specified arguments. Method \"replace\" requires exact 3 argument(s).");
+    
+    GetPTF("replace('a',1,2)")
+    .aExMsgText(
+        "No applicable method found for \"replace\" at position 1 in "
+        + "\"replace('a',1,2)\" for the specified argument types.");
   }
 
 }
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
index 637287c..7d1bb5a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
@@ -179,6 +179,7 @@
     GetPTF("startswith('Test','Te')").aSerialized("{startswith('Test','Te')}");
     GetPTF("startswith('Test', concat('A','B'))").aSerialized("{startswith('Test',{concat('A','B')})}");
     GetPTF("substring('Test', 1 add 2)").aSerialized("{substring('Test',{1 add 2})}");
+    GetPTF("replace('Test', ' ', '')").aSerialized("{replace('Test',' ','')}");
   }
 
   @Test
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
index a64ab9a..913f1b4 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
@@ -1471,6 +1471,8 @@
           final int offset = second.length() == 0 ? 0 : Integer.parseInt(second);
           final int length = third.length() == 0 ? 0 : Integer.parseInt(second);
           return first.substring(offset, offset + length);
+        case REPLACE:
+          return first.replace(second, third);
       case SUBSTRINGOF:
         return Boolean.toString(second.contains(first));
       case CONCAT:
