Also, why are you grouping?
Since you return no aggregated data, do not group by.
Code:
CREATE FUNCTION dbo.fnEarliestPO
(
@ItemCode INT
)
RETURNS TABLE
AS
RETURN (
SELECT TOP 1 t2.DocNum,
t2.DocDueDate,
@ItemCode AS ItemCode
FROM wbau.dbo.oitm AS t0
INNER JOIN wbau.dbo.por1 AS t1 ON t1.ItemCode = t0.ItemCode
INNER JOIN wbau.dbo.opor AS t2 ON t2.DocEntry = t1.DocEntry
WHERE t0.ItemCode = @ItemCode
ORDER BY t2.DocDueDate
)