2016-05-16 103 views
0

SAPクエリのコーディングが遅れています。私はABAPを初めて使用しています。SAPクエリ。選択画面の入力に基づいて値を取得する

私が達成したいのは、テーブルESLL、EKPO、EKKO間の結合です。 は、具体的にこれらは私が達成したい手順です。

  1. 選択パラメータに私は ESLL-EXTSRVNOに異なる値を与えるクエリを入力しますたびに。
  2. この値に基づいて、ESLL-EXTSRVNOに基づいてESLL-PACKNOが自動的に選択されます。
  3. このクエリでは、ESLL-SUB_PACKNOは と等しくなり、前のステップのESLL-PACKNOの値になります。
  4. この場合、クエリでは に新しいESLL-PACKNOの値をEKPO-PACKNOと同じにして、 のフィールド(EKPO-EBELN、EKPO-EBELP、EKPO-MATKL)を取得する必要があります。

私はすでにインフォセット内にいくつかのコードを書いていますが、修正方法はわかりません。

SELECT packno 
    FROM esll 
    INTO TABLE it_esll. 
IF sy-subrc EQ 0. 
SELECT packno FROM esll 
    into TABLE it_esll2 
    for ALL ENTRIES IN it_esll 
    where sub_packno EQ it_esll-packno. 
IF sy-subrc EQ 0. 
    SELECT ebeln ebelp bukrs werks matkl menge netpr peinh 
     FROM ekpo 
     into TABLE it_ekpo 
     for ALL ENTRIES IN it_esll2 
     WHERE packno EQ it_esll2-packno. 
endif. 
endif. 

そして、全て表示するために:私が書いた「開始の選択」セクションで

DATA: it_esll TYPE TABLE OF esll. 
DATA: it_esll2 TYPE TABLE OF esll. 
DATA: it_ekpo TYPE TABLE OF ekpo. 

:私が書いた「データ」セクションで

私が欲しい情報が、私は次のことを入れているジョイン: ESLL-PACKNO - > EKPO-PACKNO - > EKPO-EBELN - > EKKO-EBELN

をで、私はこれらの情報を表示したいと思い終わる:

  1. EKPO-EBELN
  2. EKPO-EBELP
  3. EKPO-MATKL
  4. EKKO-BSART
  5. EKPO-PACKNO

あなたは私を助けていただけますか?

+1

を避けることができ、質問はここで回答することがあまりにも広いです。真剣なトレーニングが必要なように見えます。これは謙虚になることを意図したものではありませんが、おそらく本当にあなたのために行く最善の方法です。あなたの試みには複数の重大な問題があります(最初の選択のためのWHERE条件の欠如、FAEの過剰使用、結合なし、出力への明白なアプローチはありません)。 – vwegert

+0

SQL結合を使用していないのはなぜですか?あなたはSQLの初心者ですか? – Jagger

+0

こんにちは、コードを修正してください。私はABAPの新人だと言いました...私はちょうど助けを求めました... – hammerman

答えて

1

一つのオプションは、あなたの情報セットで別名テーブルを使用することができ、このような何か:

  • まずテーブル:ESLL。
  • 2番目の表ZESLL-PACKNO = ESLL-SUB_PACKNOのZESLL(ESLLのエイリアス)。
  • 第3テーブル:EKPO-PACKNO = ZESLL-PACKNOで参加しているEKPO。
  • 第4テーブル:EBELNで参加しているEKKO。

ですから、この状態ではABAP

Infoset Join

+0

ありがとう、あなたは私の問題を解決しました – hammerman

関連する問題