私は 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 を空に設定したと私に言いました。