0

問題があります。現在、私は 3 つのテーブルを持っています。最初のテーブルがメイン テーブルで、2 番目のテーブルにレコードがない場合は、それも書き込みます。ただし、2 番目のテーブルにレコードが存在する場合は、3 番目のテーブルから "dispo" 情報を表示します。

3 つの SAP テーブル (lagp、lqua、および marc) を使用したいと考えています。私の目標は、ラグからすべての株式ポジションを書き込むことです。

2x LEFT JOIN は機能しません: 「"B~MATNR" と比較できません。テーブルは、LEFT OUTER JOIN を使用して最大 1 つの他のテーブルと結合できます。

構造:

TYPES:
  BEGIN OF t_work,
    lgnum TYPE lgnum,
    lgtyp TYPE lgtyp,
    lgpla TYPE lgpla,
    bdatu TYPE lagp_bdatu,
    matnr TYPE matnr,
    verme TYPE lqua_verme,
    meins TYPE meins,
    dispo TYPE dispo,
  END OF t_work.
DATA:
  lt_work TYPE TABLE OF t_work INITIAL SIZE 0,
  ls_work LIKE LINE OF lt_work.

そしてSQLコマンド:

SELECT a~lgnum a~lgtyp a~lgpla a~bdatu b~matnr b~verme b~meins c~dispo FROM lagp AS a
   LEFT JOIN lqua AS b ON a~lgnum = b~lgnum AND a~lgtyp = b~lgtyp AND a~lgpla = b~lgpla
  INNER JOIN marc AS c ON b~matnr = c~matnr AND b~werks = c~werks
  INTO TABLE lt_work
   WHERE a~lgnum IN so_lgnum
     AND a~lgtyp IN so_lgtyp
     AND a~skzua EQ space
     AND a~skzue EQ space.

しかし、結果として、ストック ポジションは 1 つだけです - http://i.stack.imgur.com/1sEEo.png

SQL コードがどのようになっているのか教えていただけますか?

ありがとうございました

4

2 に答える 2

0

私はその素晴らしいコードを手に入れました:

  SELECT ma~matnr ma~mtart ma~ernam ma~ersda ma~laeda
  de~maktx as maktx_de fr~maktx as maktx_fr it~maktx as maktx_it
  FROM mara as ma
  LEFT JOIN MAKT as de ON de~matnr = ma~matnr AND de~spras = 'DE'
  LEFT JOIN MAKT as fr ON fr~matnr = ma~matnr AND fr~spras = 'FR'
  LEFT JOIN MAKT as it ON it~matnr = ma~matnr AND it~spras = 'IT'
  INTO CORRESPONDING FIELDS OF TABLE g_it_material
  WHERE ma~ernam IN so_ERNAM
  AND ma~laeda IN so_LAEDA
  AND ma~matnr IN so_MATNR.

そしてそれはうまくいきます。複数の左結合について何と言いましたか?

于 2015-08-14T12:56:08.990 に答える