如何解决使用FOR ALL ENTESES验证多行
我对ABAP中的所有条目声明有疑问。 我知道它的功能类似于 Select Distinct (删除不同)并删除重复的条目。
就我而言,我想为表输入编写一个验证。由于您可以输入多个行,因此我必须检查其中的每一行。 带有选择的循环不是一个选项。替代方法是所有条目。遗憾的是需要验证相同的公司代码,FoE只会退回一个条目。因此,我没有机会确定错误出在哪里(如果有的话)。
以下是验证代码:
ColorBarItemHoverArray!: Array<SC>;
AdjustColorContainer!: SC;
HandleHover!: SC;
DivContainer!: SC;
ATag!: SC;
SpanTag1!: SC;
SpanTag2!: SC;
SpanTag3!: SC;
SpanTag4!: SC;
StyledLabelSide!: SC;
StyledRangeSide!: SC;
StyledInputSide!: SC;
StyledLabelRatio!: SC;
StyledRangeRatio!: SC;
StyledInputRatio!: SC;
StyledLabelAngle!: SC;
StyledRangeAngle!: SC;
StyledInputAngle!: SC;
StyledLabelSpeed!: SC;
StyledRangeSpeed!: SC;
StyledInputSpeed!: SC;
StyledButtonInverse!: SC;
StyledButtonAbstract!: SC;
StyledButtonArrow!: SC;
ArrowLeft!: SC;
ArrowRight!: SC;
也许你们中的一个有想法或想法。 谢谢您的所有回答!
解决方法
考虑到公司代码表不应太长(在任何合理配置的系统中),我将其加载到应用程序服务器中,并在ABAP层而不是数据库层上进行比较。
SELECT bukrs
FROM t001
INTO TABLE @DATA(lt_all_bukrs).
LOOP AT lt_check_bukrs REFERENCE INTO DATA #(lr_check_bukrs).
IF NOT line_exists( lt_all_bukrs[ lr_check_burks->bukrs ] )
MESSAGE |Document { lv_check_bukrs->belnr } has invalid company code { lr_check_burks->bukrs }| TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENLOOP.
在另一种情况下,由于您要与之进行比较的表太大而导致TSV_TNEW_PAGE_ALLOC_FAILED
,这是不可行的,那么我将回到您获取原始数据并执行OUTER JOIN的位置与比较表:
SELECT bkpf~opbel,bkpf~bukrs
FROM bseg
LEFT OUTER JOIN t001 ON bkpf-burks = t001~bukrs
INTO TABLE
WHERE t001~bukrs IS NULL.
结果表应该是带有无效公司代码的所有财务单据编号。
这是否也是不可能的,因为源数据不是来自数据库(手动输入,从文件中读取,从Web服务接收到的东西,等等),那么最后一个选项将是将这些数据传递给ABAP管理的数据库过程。因为SQLScript可以在数据库表和内存中的表之间进行JOIN。但这确实需要您使用SAP HANA数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。