2020-08-19 02:21发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有2个表VBAK和vBAP。 我想从vbak获取销售组织,客户和分销渠道,并从VBAP表获取matnr并与it_cond表进行比较。
我是ABAP的新手。 。 您能否让我知道如何从2个内部表vbak和vbap中获取唯一值。
有关以下信息,请参阅SAP帮助:删除Itab-重复项
如果您了解SQL,能否解释您尝试过的内容,以便澄清您的问题?
Prema S ,
您必须执行以下操作:
1)通过将两个表VBAK和 VBELN以VBELN作为要连接的关键字段。
2)一旦从两个表中检索了值,请删除上面提到的重复条目。
3)当您说出自己的名字时 想要获得唯一条目,这是什么意思? 可以在不同的销售订单中使用相同的物料,这里销售订单和物料的组合将是唯一的。 您是否要获取唯一的物料编号? 尝试重新查看您的业务目标并相应地前进。
下面的代码对于开始来说应该很好,但是您必须从选择查询中确定所需的内容并做出相应的决定。 如果只需要唯一的材料,则仅使用MATNR对内部表进行排序,然后删除MATNR的相邻重复项。 如果要对select语句中所有字段的组合进行唯一输入,则下面的代码应该会有所帮助。
SELECT h〜vbeln, h〜vkorg, h〜vtweg, h〜kunnr, 我〜 从vbak AS h 内联vbap AS i 在h〜vbeln = i〜vbeln 插入表@DATA(it_tab)。 如果sy-subrc EQ 0。 SORT it_tab。 从it_tab中删除相邻的重复项,并比较所有字段。 ENDIF。
您好,Prema
您想与条件表(it_cond)比较什么。
因此可以对查询进行陷害。 但是,我相信您想在ABAP程序中进行操作吗?
您需要更具体,或者至少要显示到目前为止所进行的操作以及卡在哪里的代码。 到目前为止,大家都在猜测! 现在,我假设您正在寻找下面的选项c),但是您可能已经能够使用选项a)解决您的问题。 因此,请看一下并提供一些反馈:
选项a)如果您的程序正在从数据库中选择数据,则应将DISTINCT选项与SELECT语句一起使用,这将仅基于
从dbtab1的INNER JOIN dbtab2的key1 = key1 WHERE ...上选择SELECTTINTINCT列...。
选项b)如果您的程序没有从菜单中选择数据 数据库,但是已经将数据连接到一个内部表中,则应使用SORT和DELETE ADJACENT DUPLICATES语句,在其中按需要唯一/唯一的键值进行排序,然后删除重复项。
选项c)如果您的程序未从数据库中选择数据,但是您有两个内部表,这些表包含属性引用的数据,但是这些 属性不是您想要的输出的一部分,您需要遍历主表,通过引用属性在第二张表中具有内部LOOP,从匹配的第三张表中创建并使用选项b)的解决方案来减少它
在itable1 ASSIGNING 处循环播放。 循环到itable2 ASSIGNEN ,其中key1 = -key1。 将移动到joinedline。将移动到joinedline。在表itable中插入joindline3。 ENDLOOP。 ENDLOOP。""使用选项b)将itable3减少为键值的不同行
还有许多其他方法可以解决您的问题,包括甚至具有更好性能的方法 ,但其中包括正确的数据/表定义和带有更多选项的更高级的语句。但是,现在,我正尝试为您简化操作,以便您更轻松地了解解决问题所需采取的措施。
Prema S ,请继续处理您的公开问题。
最多设置5个标签!
有关以下信息,请参阅SAP帮助:删除Itab-重复项
如果您了解SQL,能否解释您尝试过的内容,以便澄清您的问题?
Prema S ,
您必须执行以下操作:
1)通过将两个表VBAK和 VBELN以VBELN作为要连接的关键字段。
2)一旦从两个表中检索了值,请删除上面提到的重复条目。
3)当您说出自己的名字时 想要获得唯一条目,这是什么意思? 可以在不同的销售订单中使用相同的物料,这里销售订单和物料的组合将是唯一的。 您是否要获取唯一的物料编号? 尝试重新查看您的业务目标并相应地前进。
下面的代码对于开始来说应该很好,但是您必须从选择查询中确定所需的内容并做出相应的决定。 如果只需要唯一的材料,则仅使用MATNR对内部表进行排序,然后删除MATNR的相邻重复项。 如果要对select语句中所有字段的组合进行唯一输入,则下面的代码应该会有所帮助。
您好,Prema
您想与条件表(it_cond)比较什么。
因此可以对查询进行陷害。 但是,我相信您想在ABAP程序中进行操作吗?
您需要更具体,或者至少要显示到目前为止所进行的操作以及卡在哪里的代码。 到目前为止,大家都在猜测! 现在,我假设您正在寻找下面的选项c),但是您可能已经能够使用选项a)解决您的问题。 因此,请看一下并提供一些反馈:
选项a)如果您的程序正在从数据库中选择数据,则应将DISTINCT选项与SELECT语句一起使用,这将仅基于
选项b)如果您的程序没有从菜单中选择数据 数据库,但是已经将数据连接到一个内部表中,则应使用SORT和DELETE ADJACENT DUPLICATES语句,在其中按需要唯一/唯一的键值进行排序,然后删除重复项。
< pre> SORT itable BY key1 key2 ...。 从选项中删除相邻的重复项key1 key2...。选项c)如果您的程序未从数据库中选择数据,但是您有两个内部表,这些表包含属性引用的数据,但是这些 属性不是您想要的输出的一部分,您需要遍历主表,通过引用属性在第二张表中具有内部LOOP,从匹配的第三张表中创建并使用选项b)的解决方案来减少它
还有许多其他方法可以解决您的问题,包括甚至具有更好性能的方法 ,但其中包括正确的数据/表定义和带有更多选项的更高级的语句。但是,现在,我正尝试为您简化操作,以便您更轻松地了解解决问题所需采取的措施。
Prema S ,请继续处理您的公开问题。
一周热门 更多>