我不知道ABAP - 但我的同事(也不知道它)向我展示了他提出的一些代码,它包含了太多if-statements . 在JavaScript中,我可以改进它但在ABAP中我有点迷失,因为我错过了我的数组;) . 我发现使用了内部表格 . 但我仍然无法弄明白 .
代码放在由EPI-USE制作的查询管理器的列中 . 这只是一种调整查询结果的方法,我注意到如果我尝试创建报告("already in a program")并且创建一个类或方法("close try-catch-block before declaring new Class"),我会收到错误 .
问题非常简单:
有一个人有很多属性,值是数字 . 这些是属性
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并遵循以下规则:
Conditions:
如果 PA0013-RVNUM
为空,则必须将所有其他属性设置为空 .
如果 PA0013
-Value为空,则必须将 PA0013
-Values设置为空(不是前面的值) .
如果 PA0013
-Value为空,则必须将相应的 PA0000
-Value设置为空 .
After the first Loop:
如果任何 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填充它们 .
1 回答
以下是该程序的外观 . 完全不保证它的工作原理和JavaScript的功能 .