1

私は ABAP について何も知りませんが、私の同僚 (それについてもまったく知りません) は、彼が思いついたいくつかのコードを見せてくれました。JavaScript では改善できたかもしれませんが、ABAP では配列が見つからないため少し迷っています;)。代わりに内部テーブルが使用されていることがわかりました。しかし、私はまだそれを理解することはできません。

コードは、EPI-USE 製の Query Manager の列に配置されます。これは、クエリの結果を調整する方法にすぎず、レポートを作成しようとすると(「既にプログラム内に」)、クラスまたはメソッドを作成すると(「try-catch-block を閉じます」)、エラーが発生することに気付きました。新しいクラスを宣言する前」)。

問題は非常に単純です。

多くのプロパティを持つ人がいます。値は数値です。これらはプロパティです

PA0013-RVNUM

PA0013_01-PERNR    
PA0013_02-PERNR
PA0013_03-PERNR
PA0013_04-PERNR
PA0013_05-PERNR    
PA0013_06-PERNR

PA0000_01-STAT2    
PA0000_02-STAT2
PA0000_03-STAT2    
PA0000_04-STAT2
PA0000_05-STAT2
PA0000_06-STAT2

PA0013 ブロックをループして次のルールに従いたい:

条件:

が空の場合PA0013-RVNUM、他のすべてのプロパティを空に設定する必要があります。

PA0013-Value が空の場合、後続のすべてのPA0013-Values を空に設定する必要があります (前のものではありません)。

-Value が空の場合PA0013、対応するPA0000-Value を空に設定する必要があります。

最初のループの後:

いずれかのPA0000-Values の値が 3 の場合REJECT.、その行を結果から除外するためにコマンドを実行します。

このための私の JS コードは次のようになります。

var pa0013Array=[    
    PA0013_01-NUM
    PA0013_02-NUM
    PA0013_03-NUM
    PA0013_04-NUM
    PA0013_05-NUM
    PA0013_06-NUM];
var pa0000Array=[ 
    PA0000_01-NUM
    PA0000_02-NUM
    PA0000_03-NUM
    PA0000_04-NUM
    PA0000_05-NUM
    PA0000_06-NUM];
var emptyRest = (PA0005-NUM) ? false : true;

for (var i = 0;i < pa0013Array.length;i++)
{
    if (pa0013Array[i] == "") {
        emptyRest = true;
    }
    if (emptyRest) {
        pa0013Array[i]="";
        pa0000Array[i]="";
    }
}
if (pa0000Array.indexOf(3) != -1) { 
    reject();
}

誰かが私のjsコードをABAPに「翻訳」することで私を助けることができますか?

私の同僚は、すべての条件に対して次のようなことをしました。

IF PA0013-RVNUM is INITIAL.
  PA0013_01-PERNR = ''.
  PA0013_02-PERNR = ''.
  PA0013_03-PERNR = ''.
  PA0013_04-PERNR = ''.
  PA0013_05-PERNR = ''.
  PA0013_06-PERNR = ''.
ENDIF.
IF PA0013_01-PERNR = ''.
  PA0013_02-PERNR = ''.
  PA0013_03-PERNR = ''.
  PA0013_04-PERNR = ''.
  PA0013_05-PERNR = ''.
  PA0013_06-PERNR = ''.
ENDIF.

...

IF PA0013_01-PERNR = ''.
  PA0000_01-STAT2 = ''.
ENDIF.

...

IF PA0000_01-STAT2 = 03.
    REJECT.
ENDIF.

彼は、クエリが間違った PERNR で満たされないように、PERNR を空に設定したと私に言いました。

4

2 に答える 2