gpt4 book ai didi

javascript - HR infotype itab 行的条件循环清除?

转载 作者:行者123 更新时间:2023-12-02 14:57:11 24 4
gpt4 key购买 nike

我对ABAP一无所知——但我的同事(也对此一无所知)向我展示了他想出的一些代码,其中包含太多的if语句。在 JavaScript 中我可以改进它,但在 ABAP 中我有点迷失,因为我丢失了我的数组;)。我发现改为使用内部表。但我还是想不通。

代码放置在 EPI-USE 制作的查询管理器的一栏中。这只是调整查询的某些结果的一种方法,我注意到如果我尝试创建一个报告(“已经在程序中”)并且如果我创建一个类或方法< em>(“在声明新类之前关闭 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 为空,则所有其他属性都必须设置为空。

如果 PA0013- 值为空,则所有后续 PA0013- 值都必须设置为空(而不是之前的值)。

如果 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 填充它们。

最佳答案

该程序的外观如下。完全不能保证它能正常工作并完成您的 JavaScript 的工作。

REPORT ZZZ.

CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main,
reject.
PRIVATE SECTION.
TYPES:
BEGIN OF t_num,
num TYPE string,
END OF t_num.
CLASS-DATA:
pa0013_01 TYPE t_num,
pa0013_02 TYPE t_num,
pa0013_03 TYPE t_num,
pa0013_04 TYPE t_num,
pa0013_05 TYPE t_num,
pa0013_06 TYPE t_num,
pa0000_01 TYPE t_num,
pa0000_02 TYPE t_num,
pa0000_03 TYPE t_num,
pa0000_04 TYPE t_num,
pa0000_05 TYPE t_num,
pa0000_06 TYPE t_num,
pa0005 TYPE t_num.
ENDCLASS.

CLASS lcl_main IMPLEMENTATION.
METHOD main.
DATA(lt_pa0013) = VALUE string_table(
( pa0013_01-num ) ( pa0013_02-num ) ( pa0013_03-num )
( pa0013_04-num ) ( pa0013_05-num ) ( pa0013_06-num )
).
DATA(lt_pa0000) = VALUE string_table(
( pa0000_01-num ) ( pa0000_02-num ) ( pa0000_03-num )
( pa0000_04-num ) ( pa0000_05-num ) ( pa0000_06-num )
).
DATA: lt_pa0000_hash TYPE SORTED TABLE OF string WITH NON-UNIQUE KEY TABLE_LINE.
DATA(l_flg_empty_rest) = COND #( WHEN pa0005-num <> 0 THEN abap_false ELSE abap_true ).

LOOP AT lt_pa0013 ASSIGNING FIELD-SYMBOL(<fs_pa0013>).
IF <fs_pa0013> IS INITIAL.
l_flg_empty_rest = abap_true.
ENDIF.
IF l_flg_empty_rest = abap_true.
CLEAR <fs_pa0013>.
lt_pa0000[ sy-tabix ] = space.
ENDIF.
ENDLOOP.

lt_pa0000_hash = lt_pa0000.

IF lt_pa0000_hash[ `3` ] IS INITIAL.
reject( ).
ENDIF.
ENDMETHOD.

METHOD reject.
ASSERT 0 = 0.
ENDMETHOD.
ENDCLASS.

关于javascript - HR infotype itab 行的条件循环清除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com