首页 > 其他分享 >sap 参考内表

sap 参考内表

时间:2023-05-24 16:00:39浏览次数:40  
标签:MARD 内表 WA 参考 MARA sap TYPE OUT

参考内表

在SAP ABAP中,FOR ALL ENTRIES IN是一种优化内表处理的方法,它可以帮助您快速地从SAP数据表中选择和过滤一组记录。

使用FOR ALL ENTRIES IN,您可以选择一个与目标字段匹配的内表,并使用此内表的值来过滤数据表,以便只返回与内表中的值匹配的数据记录。

格式

SELECT <F1...FN>
	INTO CORRESPONDING FIELDS OF TABLE <itab1>
	FROM <dbtab>
	FOR ALL ENTRIES IN <itab2>
	WHERE<condation>.

上述参考内表取数时,要要先检查内表不能为空。

CHECK <itab2> IS NOT INITIAL.  "检查内表是否为空

示例

以下是一个使用FOR ALL ENTRIES IN的基本示例:

REPORT Z_EXAMPLE_REPORT.

TYPES: BEGIN OF t_sap_data,
         field1 TYPE string,
         field2 TYPE string,
         field3 TYPE string,
       END OF t_sap_data.
       
DATA: t_sap_data TYPE TABLE OF t_sap_data.

DATA: itab TYPE STANDARD TABLE OF t_sap_data,
      wa_sap_data TYPE t_sap_data,
      wa_filter TYPE t_sap_data.

START-OF-SELECTION.
  " Let's assume we have a filter table `itab` with some values
  wa_filter-field1 = 'Value1'.
  wa_filter-field2 = 'Value2'.
  APPEND wa_filter TO itab.

  " Now let's use `FOR ALL ENTRIES IN` to filter data from table `sap_data_table`
  SELECT field1 field2 field3
    FROM sap_data_table
    INTO TABLE t_sap_data
    FOR ALL ENTRIES IN itab
    WHERE field1 = itab-field1
      AND field2 = itab-field2.
  
  " Now we can process the filtered table `t_sap_data`
  LOOP AT t_sap_data INTO wa_sap_data.
    APPEND wa_sap_data TO itab.
  ENDLOOP.
  
  " Now you can do additional processing on the internal table `itab`

在上面的示例中,我们首先创建了一个过滤表itab,并将具有特定值的记录添加到该表中。然后,我们使用FOR ALL ENTRIES IN从表sap_data_table中选择具有特定值的记录,并将结果存储在内表t_sap_data中。接下来,我们使用循环将过滤后的记录复制到包含过滤器的新内表itab中,并可以在该表上执行其他处理或后续操作。

简单abap程序

REPORT Z_EXAMPLE_REPORT.

* 定义结构体
TYPES: begin of TY_MARD,
  MATNR TYPE MARD-MATNR, "物料号
  MTART TYPE MARA-MTART, "物料类型
  LABST TYPE MARD-LABST, "数量
  END OF TY_MARD.

TYPES: BEGIN OF TY_MARA,
  MATNR TYPE MARA-MATNR, "物料号
  MEINS TYPE MARA-MEINS, "单位
  END OF TY_MARA.

TYPES:BEGIN OF TY_OUT,
  MATNR TYPE MARD-MATNR, "物料号
  MTART TYPE MARA-MTART, "物料类型
  LABST TYPE MARD-LABST, "数量
  MEINS TYPE MARA-MEINS, "单位
  END OF TY_OUT.

* 定义变量和内表
DATA: WA_MARD TYPE TY_MARD.
DATA: IT_MARD TYPE STANDARD TABLE OF TY_MARD.

DATA: WA_MARA TYPE TY_MARA.
DATA: IT_MARA TYPE STANDARD TABLE OF TY_MARA.

DATA: WA_OUT TYPE TY_OUT.
DATA: IT_OUT TYPE STANDARD TABLE OF TY_OUT.

* 添加几条内表TY_MARD数据
WA_MARD-MATNR = 'S-201'.
WA_MARD-MTART = 'FERT'.
WA_MARD-LABST = 43.
APPEND WA_MARD TO IT_MARD.

WA_MARD-MATNR = 'S-203'."物料号
WA_MARD-MTART = 'HALB'. "物料类型
WA_MARD-LABST = 65.     "数量
COLLECT WA_MARD INTO IT_MARD.

WA_MARD-MATNR = 'S-208'."物料号
WA_MARD-MTART = 'HALB'. "物料类型
WA_MARD-LABST = 65.     "数量
INSERT WA_MARD INTO TABLE IT_MARD.

LOOP AT IT_MARD INTO WA_MARD.
  WRITE:/ WA_MARD-MATNR,"物料号
          WA_MARD-MTART,"物料类型
          WA_MARD-LABST."数量
ENDLOOP.

*-------------------------------------------
* 参考内表 IT_MARD 取物料的 单位
*-------------------------------------------
CHECK IT_MARD IS NOT INITIAL.  "检查内表是否为空
select MATNR
       MEINS
  INTO CORRESPONDING FIELDS OF TABLE IT_MARA
  FROM MARA
  FOR ALL ENTRIES IN IT_MARD  "参考内表
  WHERE MARA~MATNR = IT_MARD-MATNR.

*-------------------------------------------
* 数据整合  两个内表整合成新的内表
*-------------------------------------------
LOOP AT IT_MARD INTO WA_MARD.
  WA_OUT-MATNR = WA_MARD-MATNR.
  WA_OUT-MTART = WA_MARD-MTART.
  WA_OUT-LABST = WA_MARD-LABST.

  "读取内表 IT_MARA 上的一条数据 存入 WA_MARA 中
  READ TABLE IT_MARA INTO WA_MARA WITH KEY MATNR = WA_MARD-MATNR.
  IF sy-subrc = 0.
    WA_OUT-MEINS = WA_MARA-MEINS.
  ENDIF.

  APPEND WA_OUT TO IT_OUT.
  clear WA_OUT.  "清除变量存储的数据
ENDLOOP.

LOOP AT IT_OUT INTO WA_OUT.
  WRITE:/ WA_OUT-MATNR,"物料号
          WA_OUT-MTART,"物料类型
          WA_OUT-LABST,"数量
          WA_OUT-MEINS."单位
ENDLOOP.

image

标签:MARD,内表,WA,参考,MARA,sap,TYPE,OUT
From: https://www.cnblogs.com/itelephant/p/17428576.html

相关文章

  • SAP CODING BLOCK
    https://blog.csdn.net/m0_46145967/article/details/110954475  文章目录1.背景2.添加字段2.1普通模式2.2专家模式2.3新建MSEG的CDS视图3.添加字段到屏幕3.1需要更改的标准程序及屏幕3.2将拷贝出来的屏幕替换标准屏幕4.维护字段状态4.1维护字段状态变式4.2维护字段是......
  • 分割一切模型SAM首篇全面综述:28页、200+篇参考文献
    前言 作为首个全面介绍基于SAM基础模型进展的研究,本文聚焦于SAM在各种任务和数据类型上的应用,并讨论了其历史发展、近期进展,以及对广泛应用的深远影响。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟......
  • 【实践篇】领域驱动设计:DDD工程参考架构
    背景为什么要制定参考工程架构不同团队落地DDD所采取的应用架构风格可能不同,并没有统一的、标准的DDD工程架构。有些团队可能遵循经典的DDD四层架构,或改进的DDD四层架构,有些团队可能综合考虑分层架构、整洁架构、六边形架构等多种架构风格,有些在实践中可能引入CQRS解决读模型与......
  • 基于python实现-根据Excel表格指定的UniqueKey的顺序-到另一个参考表格中查找-补全与
    今天笔者在整理一份数据时,有这样一个需求,已知有多个ID是UniqueKey,每一个UniqueKey及与它相关的数据为一行,存放于Excel表格行中但他们相关的数据可能有误,而另一个表格Excel-02中的数据没有问题,但是UniqueKey顺序与第一个表格不一样现在主要是要修改第一个表格的数据,当然可以使用......
  • 数据列表管理-底部的自定义代码参考
    <!--做数据的流转状态操作001--><divclass="div_bottom_control_location_area"id="div_rejected_or_approved"><buttononclick="submit_or_reject_for_review(0)"type="button"class="am-btnam-btn-dangerbtn_......
  • 数据列表管理-顶部查询条件的自定义代码参考
     银行:<selectid="sl_bank"class="fsbpmserachcontrolsearch_select"myts="sl"></select>状态:<selectid="sl_status_filter"class="fsbpmserachcontrolsearch_select"myts="sl"><......
  • KONGSBERG运动参考装置 MRU-M-MB3
    W;① ⑧ 0③ 0① 7 ⑦ ⑦ 59KONGSBERG运动参考装置MRU-M-MB3,RMP201-8,MRU2,RCU502核心部分编辑播报运算器运算器是指计算机中进行各种算术和逻辑运算操作的部件,其中算术逻辑单元是中央处理核心的部分。[2](1)算术逻辑单元(ALU)。算术逻辑单元是指能实现多组......
  • 《安富莱嵌入式周报》第312期:开源磁场照相机,仿生神经元PCB,开源无线耳机,手机系统PalmOS
    更新一期视频教程:BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并茂,配合综合实战演练(2023-05-15)https://www.armbbs.cn/forum.php?mod=viewthread&tid=119189视频版:https://www.bilibili.com/video/BV1zL41167Ti 1、基于开放系统组装协议OSAP实现的简化硬件设......
  • RISE with SAP是什么?适合哪些企业使用!
    一直以来,企业的数字化转型被认为是一件极其复杂的事情。目前的市场信息环境快速变化,企业想通过数字化转型来实现业务价值的增长,然而在具体实践方面,企业仍然面临着许多挑战与难题。SAP作为全球的企业软件供应商,于今年全新推出RISEwithSAP。RISEwithSAP是一个解决方案包,该方案包......
  • 使用 FOR ALL ENTRIES 将 ABAP 内表内容作为数据库表的读取条件之一试读版
    本教程之前的文章,我们已经介绍了如何用ST05事务码,对一个ABAP报表进行性能分析和优化的步骤。94.使用事务码ST05对SAPABAP数据库表访问性能调优的一个具体例子重构后的代码:REPORTzdb_optimization.DATA:lt_orderTYPETABLEOFzmyorder,ls_orderLIKE......