SQL is not a reporting tool. SQL is a language that asks for sets of data; typically either details or totals (GROUP BY). SQL will do totals if you specify GROUP BY WITH ROLLUP, but that doesn't apply here.
There are several approaches you can take.
1) Create a view or logical file that does the JOIN you've specified above. Then use Query/400 to generate the report you need, with totals.
2) Since SQL wants to return a set, return 2 sets and do a UNION. The first set is the details and the second set is the total. There's a bit of a trick, in that each column in the two sets needs to be the same data type, but something like this should work:
SELECT
ALL 'D', T02.IDSHP#*IDNTU$, T02.IDDOCD, T02.IDINV#, T02.IDPRT#
FROM DTALIB/OEIND1 T02 INNER JOIN
OKLIB/ICDET76OK T01
ON T02.IDCOM# = T01.ITCOM#
AND T02.IDIDC# = T01.ITTRN#
WHERE IDDOCD >= 20130101
union
SELECT
ALL 'T', sum(T02.IDSHP#*IDNTU$), ' ', 0, 0
FROM DTALIB/OEIND1 T02 INNER JOIN
OKLIB/ICDET76OK T01
ON T02.IDCOM# = T01.ITCOM#
AND T02.IDIDC# = T01.ITTRN#
WHERE IDDOCD >= 20130101
ORDER BY 1, 5, 4, 3, 2
See the second SELECT? It has the same columns as the first, and hopefully, the same data types. If your invoice number or part numbers are character columns, then use characters (' ') rather than numbers (0). Just to make sure the total comes AFTER the detail, I added another column that will sort the total last.
From a style perspective, I'd use meaningful correlation names. T01 and T02 aren't as easy to read (and debug in the future) as, say, INV and DTL. Yes, that's what RTVQMQRY generated, but you don't need to keep them that way.