首页 > 其他分享 >SAP ABAP开发学习——代码优化

SAP ABAP开发学习——代码优化

时间:2024-11-03 09:17:24浏览次数:6  
标签:mard matnr mara ABAP 代码优化 lt SAP TYPE mtart

1.SELECT/ENDSELECT

首先用*取全部字段,比给定字段取数效率低

其次通过字段取数,给两个关键字要比只给一个效率高

' = '放在 ‘ in '选择界面的前面

2.READ

TRANSPORTING NO FIELDSZ只读取,不赋值,为了确定是否读取成功,就要使用SY-SUBRC

先排序,形成索引表,在二分法读取

使用field_symbols效率高

3.LOOP+SELECT

FOR ALL ENTRIES IN 读多条,可以让MAKT表取数时只取符合条件且内表GT_MARA中已经有的条目,可以避免全部数据取一遍,减少时间

4.判断某个字段的值,CASE语句比IF语句好。如果是多个不确定的条件,再使用IF判断

5.关于清空操作

依次读取,每次都会进行覆盖,所以不需要清空语句

只读一条,如果此时没有第二十条,工作区内是其原来的数据,所以需要提前清空

MAKT中没有MEINS字段,move-corresponding只会把相匹配字段值赋过去,其他的字段保持原来的值,这中间不应该加清空。

MAKT中没有MEINS字段,这种如果每次不需要保留上一行的MEINS值,就需要加上清空

6.LOOP+LOOP

对内层要读的表排序,实现数据分成小块,减少读取次数。

7.对四个表取数

GT_T134T

MATNR  SPRAS  MTBEZ

FORM get_data.
  DATA: BEGIN OF lt_mard OCCURS 0,
          werks TYPE mard-werks,
          lgort TYPE mard-lgort,
          matnr TYPE mard-matnr,
          labst TYPE mard-labst,
        END OF lt_mard.

  DATA: BEGIN OF lt_mara OCCURS 0,
          matnr TYPE mara-matnr,
          mtart TYPE mara-mtart,
          meins TYPE mara-meins,
        END OF lt_mara.

  DATA: BEGIN OF lt_makt OCCURS 0,
          matnr TYPE makt-matnr,
          spras TYPE makt-spras,
          maktx TYPE makt-maktx,
        END OF lt_makt.

  DATA: BEGIN OF lt_t134t OCCURS 0,
          mtart TYPE t134t-mtart,
          spras TYPE t134t-spras,
          mtbez TYPE t134t-mtbez,
        END OF lt_t134t.

*  取基本表
  SELECT *
    FROM mard
    INTO CORRESPONDING FIELDS OF TABLE lt_mard
    WHERE werks IN s_werks
    AND lgort IN s_lgort
    AND matnr IN s_matnr.

  CHECK lt_mard IS NOT INITIAL.
* 取MARA
  SELECT *
    FROM mara
    INTO CORRESPONDING FIELDS OF TABLE lt_mara
    FOR ALL ENTRIES IN lt_mard
    WHERE matnr = lt_mard-matnr
    AND mtart IN s_mtart.
  SORT lt_mara BY matnr.

* 取MAKT
  SELECT *
    FROM makt
    INTO CORRESPONDING FIELDS OF TABLE lt_makt
    FOR ALL ENTRIES IN lt_mard
    WHERE matnr = lt_mard-matnr.
  SORT lt_makt BY matnr.

* 取T134T
  SELECT *
    FROM t134t
    INTO CORRESPONDING FIELDS OF TABLE lt_t134t
    FOR ALL ENTRIES IN lt_mara
    WHERE mtart = lt_mara-mtart.
  SORT lt_t134t BY mtart.

* 循环MARD
  LOOP AT lt_mard.
    MOVE-CORRESPONDING lt_mard TO gs_total.

* 读取MARA
    READ TABLE lt_mara WITH KEY matnr = lt_mard-matnr
                                    BINARY SEARCH.
    IF sy-subrc = 0.
      "赋值.
      gs_total-matnr = lt_mara-mtart.
      gs_total-meins = lt_mara-meins.

    ELSE.
      "退出当前循环
      CONTINUE.
    ENDIF.
* 读MAKT
    READ TABLE lt_makt WITH KEY matnr = lt_mard-matnr
                                        BINARY SEARCH.
    IF sy-subrc = 0.
      "赋值.
      gs_total-spras = lt_mara-spras.
      gs_total-maktx = lt_mara-maktx.
    ENDIF.

* 读T134T
    READ TABLE lt_t134t WITH KEY mtart = lt_mard-mtart
                                        BINARY SEARCH.
    IF sy-subrc = 0.
      "赋值.
      gs_total-mtbez = lt_mara-mtbez.
    ENDIF.

* 赋给TOTAL
    APPEND gs_total TO lt_total.

  ENDLOOP.

ENDFORM.

标签:mard,matnr,mara,ABAP,代码优化,lt,SAP,TYPE,mtart
From: https://blog.csdn.net/m0_64077397/article/details/143369980

相关文章

  • 微信jsapi支付 退款接口
    微信官方退款接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4参数按照文档构造记录出现错误:System.Net.WebException:Theremoteserverreturnedanerror:(400)BadRequest这个是由于退款接口需要传证书证书的话是需要登录商户号进行下载a......
  • 软件系统设计 - 代码优化 代码重构 - 正确的重构方式 与 重构手法列表
    正确的重构方式:不会引入错误并有条不紊地改进程序结构熟练掌握众多重构手法,将思辨与实践结合,迭代持续开展重构工作。运用大量微小且保持软件行为的重构步骤,一步步达成大规模的修改。在开始重构前,我们需要先通读代码,并尝试理解代码如何工作,然后通过重构将这些理解从脑海里......
  • 如何用pbootcmsAPI接口开发微信小程序UNIAPP示例
    1.准备工作在开始开发小程序之前,你需要:搭建好PbootCMS环境,确保其正常运行。注册小程序并获取AppID和AppSecret。配置PbootCMS与小程序的接口。2.封装API//获取站点信息exportconstpostSite=(config={})=>http.post('/cms/site',config)//获取自定义标签ex......
  • SAP B1 三大主数据——业务伙伴主数据(一)
    文章目录概要一、业务伙伴主数据窗口1.业务伙伴主数据窗口-查找状态2.业务伙伴主数据窗口-添加状态二、业务伙伴主数据-部分字段解释1.常规区域2.常规页签小结概要SAPB1系统的三大主数据是指业务伙伴主数据、物料主数据和科目表。本文主要是业务伙伴主数据窗口的......
  • SAP B1 DI API 在调用时提示找不到COM
    SAPB1DIAPI在调用时提示找不到COM找到DIAPI的安装目录,尝试手工注册,组件提示失败通过Dependencies分析发现是缺少运行环境安装c++运行环境安装后,再次分析,没有缺少的组件再次手工注册组件成功!又提示数据库不支持,需要安装对应的NativeClient,Nativ......
  • SAP-ABAP开发学习-FUNCTION ALV
    ALV概览        ALV全称SAPListView,是SAP提供的一个强大的数据报表显示工具。ALV实质上是一个屏幕控件对象,它通过程序传递数据内表的方式来显示数据。实现方式:调用标准函数;优化接口:用户可以实现对字段的排序、筛选及统计等功能。显示方式:List类似于write语句输......
  • SAP-ABAP开发-按钮的三种调用方法
    1、自己创建调用在程序包中右击创建GUI状态,创建使用自己需要的按钮。注意的是,这里调用后会覆盖掉原来的系统的按钮。2、不覆盖系统的情况下加上自己创建的按钮并调用        右键GUI状态点击创建到界面后,点转到---》调整模板 。这里调整模板是指在系统基础上调整,......
  • SAP SD STO单重定价 BAPI
    问题描述STO单创建交货单接口中,由于STO单的公司间-结算价为0而不能创建交货单,此时需要成本同事维护好成本,然后我们在接口中做重定价处理解决方案:刚开始没找到合适的BAPI,尝试录BDC发现不可行,查阅资料发现可用BAPI_PO_CHANGE ls_poitem-po_item=ls_crt-ebelp.......
  • 如何通过WhatsApp高效打粉?提升用户量的关键技巧
    随着即时通讯软件在全球的普及,WhatsApp已成为品牌和商家联系客户、推广产品的重要渠道之一。尤其是对于跨境电商和社交媒体运营者来说,利用WhatsApp进行打粉(即通过各种方式吸引用户加入WhatsApp联系人列表或群组),已经成为高效增长用户量的关键手段之一。本文将详细介绍如何通过W......
  • 什么是SAP系统:企业管理的智能助手
      在当今快速发展的商业环境中,企业管理变得越来越复杂。如何有效整合资源,优化流程,提高效率,已经成为每个企业管理者必须面对的挑战。此时,SAP系统以其强大的功能和灵活性,成为企业实现数字化转型的理想选择。 什么是SAP系统? SAP是一个全面的企业资源规划。旨在提供实时数据......