点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨。 我是ABAP的新手,如果我使用的术语不正确或提出了一个非常简单的问题,请原谅。 我正在开发一个程序,该程序可以从电子表格上载数据并将其插入表格中。 我的工作原理很不错,但是现在我试图在将记录写入表之前进行一些检查。 例如,首先,我将电子表格中的所有记录放入一个内部表中。 然后,我想检查两个字段,以查看表MARC中是否存在植物和物料的组合。 因此,我将内部表循环到工作区中,我想在where子句中使用工作区中的字段。 那可能吗? 如果可以,我该怎么做? 我尝试使用列号(col3和col2),但是当我运行语法检查时,它不是那样的。
谢谢
乔恩
好的,是的,这是一个简单的问题,老实说,您在不先掌握内部表格的情况下就能够读取电子表格,对此我感到非常惊讶。
无论如何...由于您询问的是MARC表,因此我假设您使用的是不带HANA的ECC 6.0系统。 如果您使用的是HANA,请忽略并检查此博客以获取更好的建议。
不建议遍历内部表条目并在循环内从数据库中选择数据。 在这种情况下,我将使用可怕的SELECT ... FOR ALL ENTESES,就像Ravi试图建议的那样(尽管有点笨拙)。 确保阅读该命令的帮助(F1键),并事先检查内部表是否为空。
使用SELECT ... INTO TABLE ...,结果将在内部 表。 我建议为其使用HASHED表类型,并使用与MARC主键相同的键(此博客以了解其他 此任务的选项。
如果您使用的是ABAP 7.4及更高版本,则可以利用内联声明,否则,您需要定义一些要进行环回的内容。 文档中有可用的示例。 我建议您按照注释中的建议阅读ABAPDOCU的整个内部表部分,因为它非常重要。
请分享您的代码(直接将其添加到您的问题中,而不是 注释,而不是答案,请使用CODE按钮设置代码格式。)
您好 Jon Morozowski ,
我希望您只对电子表格中的有效条目感兴趣,要检查此有效性,您正在考虑如果条目存在于MARC表中,那么您可以决定该条目 是有效的。
对于这种情况,首先,对于我们而言,研究您的代码以提出任何有效的解决方案非常重要。 请使用"代码"按钮粘贴代码,以便我们轻松理解。
现在进入解决方案部分,我将简要概述如何满足您的要求。 但是,通过您的代码,我们可以帮助您确定代码中的错误以及克服该错误的步骤。 请注意,以下步骤对于初学者来说是非常基本的,但是使用现代语法可以进一步优化代码。
1)考虑您拥有内部表1,例如INT1,该表包含电子表格中的所有字段以及物料和工厂。
2)不知道您拥有哪些数据类型 如果将其分配给INT1中的这些字段(如果为字符串),则将数据传输到另一个具有正确数据类型的内部表中。 例如,材料的MATNR和工厂的WERKS。
3)现在,您的内部表INT2具有所有具有正确数据类型的条目,将这些值传递给临时表,并为所有表在MARC表上写入选择查询 临时表中的条目,然后将值提取到另一个内部表INT3中。 在申请所有条目之前,请确保在临时表上完成以下两个先决条件:
a)检查该表是否具有条目,ABAP中使用的键为" NOT INITIAL"
b)按MATNR和WERKS对INT2进行排序,并从INT2比较MATNR WERKS中删除相邻的重复项。
4)现在您有两个表,INT2具有来自电子表格的所有数据,而INT3具有基于INT2中的数据的MARC表中的所有有效条目。
5)现在,使用适当的Read语句 在INT3上,对于INT2中的数据,您可以找到该条目为有效(SY-SUBRC EQ 0)或无效(SY-SUBRC NE 0)。 确保使用MATNR和WERKS对INT3表进行排序,并在read语句中使用二进制搜索。
希望它会有所帮助! 如有需要,请告知我们进一步澄清!
致谢!
事务ABAPDOCU可以帮助您了解如何访问和查询内部表。
执行事务ABAPDOCU,然后使用以下导航:
ABAP-参考
->处理内部数据
->内部表
->处理内部表的语句
->在itab上环绕
当然,整个内部表主题也将提供很多信息。
交易ABAPDOCU是新手和有经验的ABAP者的宝贵资源,我强烈建议您熟悉使用它的所有不同方式。
使用以下代码。
Jelena,
感谢您的详细答复,对不起您的答复!
此致
Jon
Jelena Perfiljeva 谢谢你 指出并提供更准确的解决方案。 SAP总是有新的东西要学习。
美好的一天!
一周热门 更多>