2017-06-04 2 views
0

は私がSAPに次の表を作成しましたか?テーブルからペアのない線をフィルタリングする方法は?私は従業員が(KOMMEN)に署名したが、出て署名していないこれらの行、(GEHEN)のみ印刷することができますどのように</p> <p><img src="https://i.stack.imgur.com/SaE6V.jpg" alt="My Table"></p> <p>:

この例では、最後の行だけを印刷します。

+0

開発が早い段階にある場合や、この表に基づいて開発されていないものが多い場合は、ソリューションを再設計し、「セッション」で考えるべきだと思います。あなたの人生ははるかに簡単になりますIMHO。 – szako

+0

私の大学の宿題です。その構造を変更する可能性はありません。 – doomsweb

+0

テーブルよりも条件付きループのコマンドがあります( 'LOOP ... WHERE')。しかし、これがDBタブであれば、 'WHERE'をあなたの' SELECT'に移動することができます –

答えて

0

使用する出力方法は、ABAPリスト出力と呼ばれます。 ABAPにはさまざまな出力メソッドがあります。リスト出力は1つだけです。あなたのケースでは、このリスト出力の悲しみは、フィルタを追加することは開発者次第であるということです。私。特定の値をフィルタリングするためのABAPリスト出力のデフォルト機能はありません。この出力方法は本当にシンプルに保たれています。

コメント欄にあるように、ABAPコードを変更してループ内で '手動で'フィルタリングする必要があります。例を挙げてみましょう:

内部テーブルの 'KOMMEN'値をフィルタリングすることも可能です。 LOOP内のIF文を考えることができます。とにかく、LOOP文でWHERE句を適用することは、内部テーブルをフィルタリングする最も効果的な方法の1つです。

さらに、コードを投稿していないので、コードスニペットで使用した名前をコードに転送する必要があります。仕事に、このソリューションのための前提条件を

SELECT PNR 
    FROM table 
    INTO TABLE @DATA(itab) 
GROUP BY PNR 
HAVING COUNT(*) = 1. 

さ:

0

あなたが対になっていないログイン(KOMMEN)イベントをカウントするための簡単なGROUP句を使用することができ、テーブルの構造は、あなたが提供する画面上と同様に簡単であると仮定しますユーザがセッションを終了した場合は偶数のレコード、ログインしていない場合は奇数である。

0
SORT lt_data BY datum ASCENDING 
        PNR ASCENDING 
        K_G DESCENDING. 

    LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<line>) WHERE k_g = 'KOMMEN'. 
     lv_tabix = sy-tabix + 1. 

     READ TABLE lt_data ASSIGNING FIELD-SYMBOL(<temp>) index lv_tabix. 

     IF sy-subrc IS NOT INITIAL 
     OR <line>-datum <> <temp>-datum 
     OR <line>-pnr <> <temp>-pnr. 
     APPEND <line> TO lt_output. 
     ENDIF. 
    ENDLOOP. 

次に、lt_outputに必要なすべての行があります。

関連する問題

 関連する問題