Olá Karthik,
Isso ocorre porque, embora você tenha especificado um filtro que presume conter todos os quatro campos-chave da sua entidade, você ainda realiza uma solicitação GET no recurso /sap/opu/odata/SAP/ZMWM_SAMPLE/TagPrintSet.
Como resultado, o GET_ENTITYSET é chamado e, se estiver implementado, você poderá recuperar o filtro e procurar os itens para os quais o filtro se aplica.
Para obter um único item, você deve especificar a chave entre parênteses da seguinte maneira:
/sap/opu/odata/SAP/ZMWM_SAMPLE/TagPrintSet(f1='11111',f2='811',f3='11M1',f4='1')
Neste caso, o método GET_ENTITY será chamado.
Sugiro que você implemente tanto o GET_ENTITYSET quanto o método GET_ENTITY.
Então você pode realizar uma solicitação GET no conjunto de entidades, obter uma lista e selecionar uma única entrada da carga útil.
https://sapes5.sapdevcenter.com/sap/opu/odata/iwbep/GWSAMPLE_BASIC/SalesOrderLineItemSet(SalesOrderID='0500000001',ItemPosition='0000000010')
Retornará a seguinte resposta (uma única entrada)
Enquanto
https://sapes5.sapdevcenter.com/sap/opu/odata/iwbep/GWSAMPLE_BASIC/SalesOrderLineItemSet?$filter=SalesOrderID%20eq%20'0500000001'%20and%20ItemPosition%20eq%20'0000000010'
Retorna uma lista com apenas uma entrada, mas uma lista (um feed em termos ATOM).
Para mais detalhes sobre como implementar GET_ENTITY e GET_ENTITYSET, consulte o seguinte blog:
https://blogs.sap.com/2016/05/31/odata-service-development-with-sap-gateway-code-based-service-devel...
Cumprimentos,
Andre