显示4个表格中的信息

2020-08-19 02:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我仍在尝试自己学习ABAP-我正在尝试创建一个程序,在该程序中我可以在一个表中搜索值,就像我在检查其他三个表后,它会为我提供值 在SE16N中。

当前,我在SE16N中执行以下步骤。

1ºSE16N:表AGR_1251并满足以下条件:AGR_1251-OBJECT = S_TCODE; AGR_1251-FIELD = TCD; AGR_1251-LOW =我要查找有权访问所有事务的用户(超过1个)的事务。 在这里,我要获取" AGR_1251-AGR_NAME"的结果。

2ºSE16N:表AGR_1016包含先前搜索的结果,并满足以下条件:AGR_1016-AGR_NAME =(第一次搜索的结果)。 在这里,我想获取信息AGR_1016-PROFILE。

3ºSE16N:将在步骤2中找到的结果与表UST04结合起来,如下所示:UST04-PROFILE =(第二次搜索的结果)。 在这里,我想获取信息UST04-BNAME。

4ºSE16N:表USR02及其第3步的结果如下:USR02-BNAME =(第三次搜索的结果),USR02-CLASS = TEST。

目标是找到可以访问多重交易的通用测试用户,因为SUIM可以一一检查,有时我需要这些用户可以访问5个或6个以上的交易。

我已经开始了,但是据我所知,我将在下面分享我的知识,我知道这将需要很多时间,但是如果有人可以帮助我会很有帮助。

报告ZUSERTEST。

表:USR02,UST04,AGR_1016,AGR_1251。

数据:USR02的T_USR02类型表。
数据:UST04的T_UST04类型表。
数据:AGR_1016的T_AGR_1016类型表。
数据:AGR_1251的T_AGR_1251类型表。 br> DATA:W_AREAUSR02类型USR02。

选择选项:A__1251-LOW的S_TCODE。

开始选择。
SELECT *
从AGR_1251到表T_AGR_1251 LOW = S_TCODE。
如果sy-subrc EQ0。
按AGR_NAME排序T_AGR_1251。
从T_AGR_1251的AGR_NAME中删除相邻重复项。
ENDIF。

选择*
INTO 表T_AGR_1016来自AGR_1016,用于T_AGR_1251中所有条目,其中AGR_NAME EQ T_AGR_1251-AGR_NAME。
如果sy-subrc EQ0。
SORT T_AGR_1016按概要文件。
从PROJECT_PROFILE中删除相邻的副本,从T_AGR_1016中复制。

选择*
从UST04到T_AGR_1016中所有条目的表T_UST04 PROFILE EQ T_AGR_1016-PROFILE。
如果sy-subrc EQ0。
按BNAME排序T_UST04。
从T_UST04比较BNAME中删除相邻的副本。
ENDIF。

选择*
>将US_02的表T_USR02插入T_UST04中BNAME EQ T_UST04-BNAME和USR02-CLASS EQ TEST中的所有条目。
IF sy-subrc EQ0。
按BNAME排序T_USR02。
ENDIF。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我仍在尝试自己学习ABAP-我正在尝试创建一个程序,在该程序中我可以在一个表中搜索值,就像我在检查其他三个表后,它会为我提供值 在SE16N中。

当前,我在SE16N中执行以下步骤。

1ºSE16N:表AGR_1251并满足以下条件:AGR_1251-OBJECT = S_TCODE; AGR_1251-FIELD = TCD; AGR_1251-LOW =我要查找有权访问所有事务的用户(超过1个)的事务。 在这里,我要获取" AGR_1251-AGR_NAME"的结果。

2ºSE16N:表AGR_1016包含先前搜索的结果,并满足以下条件:AGR_1016-AGR_NAME =(第一次搜索的结果)。 在这里,我想获取信息AGR_1016-PROFILE。

3ºSE16N:将在步骤2中找到的结果与表UST04结合起来,如下所示:UST04-PROFILE =(第二次搜索的结果)。 在这里,我想获取信息UST04-BNAME。

4ºSE16N:表USR02及其第3步的结果如下:USR02-BNAME =(第三次搜索的结果),USR02-CLASS = TEST。

目标是找到可以访问多重交易的通用测试用户,因为SUIM可以一一检查,有时我需要这些用户可以访问5个或6个以上的交易。

我已经开始了,但是据我所知,我将在下面分享我的知识,我知道这将需要很多时间,但是如果有人可以帮助我会很有帮助。

报告ZUSERTEST。

表:USR02,UST04,AGR_1016,AGR_1251。

数据:USR02的T_USR02类型表。
数据:UST04的T_UST04类型表。
数据:AGR_1016的T_AGR_1016类型表。
数据:AGR_1251的T_AGR_1251类型表。 br> DATA:W_AREAUSR02类型USR02。

选择选项:A__1251-LOW的S_TCODE。

开始选择。
SELECT *
从AGR_1251到表T_AGR_1251 LOW = S_TCODE。
如果sy-subrc EQ0。
按AGR_NAME排序T_AGR_1251。
从T_AGR_1251的AGR_NAME中删除相邻重复项。
ENDIF。

选择*
INTO 表T_AGR_1016来自AGR_1016,用于T_AGR_1251中所有条目,其中AGR_NAME EQ T_AGR_1251-AGR_NAME。
如果sy-subrc EQ0。
SORT T_AGR_1016按概要文件。
从PROJECT_PROFILE中删除相邻的副本,从T_AGR_1016中复制。

选择*
从UST04到T_AGR_1016中所有条目的表T_UST04 PROFILE EQ T_AGR_1016-PROFILE。
如果sy-subrc EQ0。
按BNAME排序T_UST04。
从T_UST04比较BNAME中删除相邻的副本。
ENDIF。

选择*
>将US_02的表T_USR02插入T_UST04中BNAME EQ T_UST04-BNAME和USR02-CLASS EQ TEST中的所有条目。
IF sy-subrc EQ0。
按BNAME排序T_USR02。
ENDIF。

付费偷看设置
发送
5条回答
宇峰Kouji
1楼-- · 2020-08-19 02:52

让我知道这是否有效,如果无效,您会遇到什么语法错误,拥有什么NW版本(7.4x或7.5x)。

开始选择。

 SELECT DISTINCT a.AGR_NAME,b.PROFILE和c.BNAME",如有必要,添加更多列
 从AGR_1251作为

 内联接AGR_1016为b
    在b.agr_name = a.agr_name上

 内联接UST04 as c
    在c.profile = b.profile

 INNER JOIN USR02 as d
    在d.bname = c.bname上
   和d.class = @'TEST'

 低位@S_TCODE
 进入表@DATA(itable)。

一旦在一张表中有了所需的信息,就可以使用OO SALV来显示它。 请参阅报告SALV_DEMO_TABLE_REAL_SIMPLE进行演示,并使用以下代码:

数据gr_table类型REF TO cl_salv_table。

 调用方法cl_salv_table => factory
   输入
     r_salv_table = gr_table
   改变
     t_table = itable。

 gr_table-> display()。
奄奄一息的小鱼
2楼-- · 2020-08-19 02:48

感谢您访问SAP社区以获取问题的答案。 由于您是第一次在这里提出问题,因此建议您熟悉 https ://community.sap.com/resources/questions-and-answers (如果您还没有的话),因为它提供了准备问题的技巧,这些问题引起了我们成员的反馈。

如果您愿意,可以先选择"操作",然后再"编辑"来修改您的问题(尽管一旦有人回答了您的问题,您将失去编辑问题的能力-但是,如果发生这种情况,您可以在" 评论)。 在编辑时,还可以使用"插入代码"按钮使问题的这一部分更易于阅读。 您将在问题工具栏中找到该按钮-右侧的最后选择。

最后,如果您希望与读者建立联系,请考虑在您的个人资料中添加图片。 操作方法如下: https://www.youtube.com/watch?v = F5JdUbyjfMA&list = PLpQebylHrdh5s3gwy-h6RtymfDpoz3vDS 。 通过使用您的照片来个性化您的个人资料,可以鼓励读者做出回应。

亲切的问候,

-Jerry

jovirus
3楼-- · 2020-08-19 02:57

首先,学习ABAP的案例研究非常奇怪。 接下来,您基本上希望我们查看整个代码!!

提示:首先是select语句。当您使用选择选项中的数据从表中进行选择时。您需要使用" IN"而不是 'EQ'...

从AGR_1251到S_TCODE都很低的INT表T_AGR_1251。

那么我只能说您需要调试并在自己的代码中查找问题。/p>

绿领巾童鞋
4楼-- · 2020-08-19 02:42

乔斯·戈麦斯,请继续回答您提出的问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
CPLASF-自律
5楼-- · 2020-08-19 03:03

Jose Gomes

建议您从简单的程序开始 学习ABAP,可以使用很多材料。

关于您的程序行,除了上面给出的更正之外,还请考虑以下几点:

1)试试

2)仅在SELECT字段中仅获取必需的字段,请勿使用select *。

2)寻找用于联接表的选项,始终尝试最小化数据库提取。 p>

3)在编写"所有条目"之前,请检查表是否不是初始表。 这非常重要,因为如果内部表不包含任何值,则您的select语句将从表中获取所有条目。

既然您现在就开始使用,我建议您注意一下

注意:当您将代码粘贴到SCN中时,请下次使用CODE选项。

注意!

一周热门 更多>