How to feed a table per timestamp to LSTM neural network?
Your data format is

                         feature1   feature2   target
             product1    1          12         2
 timestamp   product2    2          6          3
             product3    4          3          4


There are two designs for two assumptions:


Products are not related to each other. Therefore, each product could be modeled separately. That is, each timestamp is X(t) = [feature1, feature2] or, including the target, X(t)|y(t) = [feature1, feature2, target]. And we build a model for each product separately. In summary, LSTM receives two  1 x 3 sequences for t-1 and t, and outputs a 1 x 1 target for t + 1. In notation:
$$(\overbrace{X_{t-1}|y_{t-1}}^{1 \times 3}, \overbrace{X_{t}|y_{t}}^{1 \times 3}) \rightarrow \overbrace{y_{t+1}}^{1 \times 1}$$
Products are related to each other, meaning product1 can help product2 to predict its target. For this, we just need to flatten the 3 x 2 matrix to a 1 x 6 vector, where the order of values does not matter. That is,

X(t) = [product1_feature1, product1_feature2, ..., product3_feature2]


or

X(t) = [product1_feature1, product2_feature1, ..., product3_feature2]


We can also add the targets, for example

X(t)|y(t) = [product1_feature1, product2_feature1, ..., product3_feature2, target1, ..., target3]


This way, dimension of each timestamp would be 9 (6 + 3), and a sequence of two timestamps would be

[
  [product1_feature1, product2_feature1, ..., product3_feature2, target1, ..., target3], # t-1
  [product1_feature1, product2_feature1, ..., product3_feature2, target1, ..., target3]  # t
]


corresponding to a three dimensional target [target1, ..., target3] at t + 1.

In summary, LSTM receives two 1 x 9 sequences for t-1 and t, and outputs a 1 x 3 target for t + 1. In notation:
$$(\overbrace{X_{t-1}|y_{t-1}}^{1 \times 9}, \overbrace{X_{t}|y_{t}}^{1 \times 9}) \rightarrow \overbrace{y_{t+1}}^{1 \times 3}$$