首页 > 其他分享 >SAP ABAP 对工作区列遍历或按条件访问

SAP ABAP 对工作区列遍历或按条件访问

时间:2024-05-31 10:22:37浏览次数:24  
标签:区列 sum adrc kna1 ABAP street SAP TYPE kunnr

需要对字段数量多的工作区或动态工作区进行数据处理时,列遍历可使代码更加的简洁高效。
(๑¯ω¯๑)重新发一遍,丢合集里
示例代码:

点击查看代码
TYPES:BEGIN OF typ_kna1,
        kunnr       TYPE kna1-kunnr,    "客户编号
        name1       TYPE kna1-name1,    "送达方名称
        stras       TYPE kna1-stras,    "街道
        telf1       TYPE kna1-telf1,    "送达方电话
        telfx       TYPE kna1-telfx,    "售达方传真
        street(220) TYPE c,             "加长街道
      END OF typ_kna1.

DATA it_kna1 TYPE TABLE OF typ_kna1.
SELECT kunnr,                               "客户编号
       name1,                               "送达方名称
       stras,                               "街道
       telf1,                               "送达方电话
       telfx                                "售达方传真
  FROM kna1
  WHERE stras IS NOT INITIAL
  ORDER BY kunnr
  INTO TABLE @it_kna1
  UP TO 10 ROWS.

SELECT
  a~kunnr,       "客户名
  b~adrnr,       "编号
  c~street,      "街道1
  c~str_suppl1,  "街道2
  c~str_suppl2,  "街道3
  c~str_suppl3,  "街道4
  c~location     "街道5
  FROM adrc AS c
  INNER JOIN kna1     AS b ON b~adrnr = c~addrnumber
  INNER JOIN @it_kna1 AS a ON a~kunnr = b~kunnr
  ORDER BY a~kunnr
  INTO TABLE @DATA(lt_adrc).

在DO循环中,用ASSIGN COMPONENT OF STRUCTURE可以循环获取工作区中各字段的值,DO循环中无法使用SY-TABIX,但是可以使用SY-INDEX,SY-INDEX初始值为1,每次循环+1,通过EXIT结束循环.

点击查看代码
LOOP AT lt_adrc INTO DATA(ls_adrc).

  READ TABLE  it_kna1 ASSIGNING FIELD-SYMBOL(<it_kna1>) WITH KEY kunnr = ls_adrc-kunnr BINARY SEARCH.
  IF  sy-subrc  EQ  0.
"sy-index可以在DO循环使用,初始值为1,每次循环+1
    DO.
      
      ASSIGN COMPONENT SY-INDEX + 2 OF STRUCTURE ls_adrc TO <fs>.
      IF sy-subrc EQ 0.
        <it_kna1>-street = <it_kna1>-street && <fs>.
      ELSE.
        EXIT.
      ENDIF.
      
    ENDDO.
WRITE : <it_kna1>-street.
ENDIF.

ENDLOOP.

不使用SY-INDEX,自行调整SUM和EXIT条件

点击查看代码
DATA sum TYPE i.
LOOP AT lt_adrc INTO DATA(ls_adrc).

  READ TABLE  it_kna1 ASSIGNING FIELD-SYMBOL(<it_kna1>) WITH KEY kunnr = ls_adrc-kunnr BINARY SEARCH.
  IF  sy-subrc  EQ  0.

    "不使用sy-index,自行调整SUM和EXIT条件
    "sum代表的是第几列
    sum = 3.
    DO.

      ASSIGN COMPONENT sum OF STRUCTURE ls_adrc TO <fs>.

      IF sy-subrc EQ 0.
        <it_kna1>-street = <it_kna1>-street && <fs>.
        sum += 1.
      ENDIF.

      IF sum = 8.
        EXIT.
      ENDIF.

    ENDDO.
    CLEAR sum.
    WRITE : <it_kna1>-street.
  ENDIF.

ENDLOOP.
效果展示:

内表数据:

输出数据:

标签:区列,sum,adrc,kna1,ABAP,street,SAP,TYPE,kunnr
From: https://www.cnblogs.com/SAPMXB/p/18223964

相关文章

  • SAP ABAP 字符串去除重复字符的两种方法
    ABAP里如何去除字符串内的重复字符,在这提供两种方法。第一种是直接对字符串多次循环进行排除,但考虑到性能问题要尽量减少循环次数。第二种是把字符串里字符转成内表一列,去重后拼回一个字符串。方法一示例代码:点击查看代码DATAmarkTYPEc.......
  • SpringBoot直连SAP,IJ IDEA开发与Windows,linux部署
    一、sapjco引入1.1、sapjco介绍sapjco3.jar,连接SAP所需的jar包,linux与windows系统通用libsapjco3.so,linux系统下连接sap所需的动态链接库sapjeco3.dll,windows系统下连接sap所需的动态链接库我使用的版本为sapjco3.0.10<dependency><groupId>com.sap</groupId> <artif......
  • java版微信公众号开发(八)获取jsapi_ticket,生产JS-SDK签名
    jsapi_ticket是公众号用于调用微信JS接口的临时票据。只用正确的签名才能使用JS调用微信接口,小编在这里整理一个一套完整的获取方法。废话不多说,直接上干货。//importjava.security.MessageDigest;/***获取位置信息签名*@AuthorFM_南风*@Date2024......
  • SAP:观察I_CALLBACK_USER_COMMAND 参数(按钮点击事件)
    1、从函数级SLVC_FULLSCREEN里复制 一个在”GUI状态“ 下的“STANDARD_FULLSCREEN”标准全屏幕到 程序Z16_04里。 标准工具添加 定义按钮(关闭、保存)主程序代码:*&---------------------------------------------------------------------**&ReportZ16_04*&利用......
  • ASAP7nm PDK介绍
    ASAP7nmPDK介绍概述最近在调研后面教学用的PDK,考虑到需要给学生发的PDK尽量绕开版权问题,因此FoundryPDK是不敢用的,大概把Synopsys家的SAED28_32nm,Cadence家的GPDK45nm,以及几个开源PDK都大概看了一下,目前倾向于用ASAP7nm这个PDK。来说一下主要的分析和考量,首先C家和S家给的PDK......
  • 4 SAP前台操作手册-MM模块-采购管理-采购申请创建、修改、显示-ME51N ME52N ME53N
    0总体说明SAP实施项目中,到了第3个阶段-系统实现,在这个阶段,因为蓝图汇报已经结束,配置也差不多完成了,自开发还在进行中,SAP标准功能下,可以进行基础业务的前台操作了,在实现阶段的尾端,客户指定的关键用户(俗称KU-KeyUser)会进行前台业务操作和练习,提高熟练程度,同时需要在外部SAP顾......
  • 2 SAP前台操作手册-MM模块-采购管理-(标准/委外/寄售)采购信息记录创建、修改、显示、
    0总体说明SAP实施项目中,到了第3个阶段-系统实现,在这个阶段,因为蓝图汇报已经结束,配置也差不多完成了,自开发还在进行中,SAP标准功能下,可以进行基础业务的前台操作了,在实现阶段的尾端,客户指定的关键用户(俗称KU-KeyUser)会进行前台业务操作和练习,提高熟练程度,同时需要在外部SAP顾......
  • SAP:REUSE_ALV_LIST_DISPLAY 函数实现此类型ALV
    *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_LIST_DISPLAY函数实现此类型ALV。*&---------------------------------------------------------------------**&Report......
  • SAP: REUSE_ALV_GRID_DISPLAY 函数实现此类型ALV
     *&Report-1类型程序的主要功能是通过WRITE语句为用户提供方便的报表数据.*&与此功能类似的就是利用FUNCTIONALV创建的报表。利用*&REUSE_ALV_GRID_DISPLAY函数实现此类型ALV。*----------------------------------------------------------------------**&-----......
  • SAP: ALV GRID 控制之 单元格按钮
    工作区域(或内部表)“GT_SFLIGHT”不是扁平的,或者包含参考或内部表作为组件。Isnotflat,orcontainsReferenceorinternaltablesascomponentsorinternaltablesascomponents.Ascomponents.解决方式:将SELECT*FROMSFLIGHTINTOTABLEgt_sflightUPTO......