Supply of 0 at a node just forces inflow to be equal to outflow at that node. There is no upper bound for the flow on each arc, but the minimization objective will drive it to be as small possible, according to the arc costs. If you post your simple example, I'll take a look. One thing you might have missed is that the two-way arcs should be replaced with two one-way arcs in the input data.
The undirected version of the problem is addressed in Application 19.15 of Network Flows. The solution approach does compute all-pairs shortest paths as the first step (as you mentioned), and this is also available in PROC OPTNET or PROC OPTMODEL. Note here that the shortest paths are with respect to the sum of arc distances, not the number of arcs. But the second step is a weighted matching problem on a complete graph consisting of the odd-degree nodes, where the new cost of edge (i,j) is the shortest path distance between i and j in the original graph. You can solve this problem by using the MILP solver in PROC OPTMODEL. There is a binary decision variable for each edge, and if the solver returns a value of 1 for edge (i,j), it means that all the arcs in the shortest path between i and j in the original network should be added. In fact, you can call the network solver and then the MILP solver in the same PROC OPTMODEL session.
... View more