我不知道 ABAP - 但我的同事(也不知道)向我展示了他提出的一些代码,其中包含太多的 if 语句。在 JavaScript 中我可以改进它,但在 ABAP 中我有点迷失,因为我错过了我的数组;)。我发现使用的是内部表格。但我还是想不通。
代码放置在 EPI-USE 制作的查询管理器的列中。这只是一种调整查询结果的一种方法,我注意到如果我尝试创建报告(“已经在程序中”)并且如果我创建一个类或方法(“关闭 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-Block 并遵循以下规则:
条件:
如果PA0013-RVNUM
为空,则所有其他属性都必须设置为空。
如果-ValuePA0013
为空,则所有以下PA0013
-Values 都必须设置为空(而不是前面的)。
如果PA0013
-Value 为空,则必须将相应的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 填充它们。