SAP ABAP 查表数据接口

news2024/12/27 11:02:54

查 SAP 表数据的接口
1.使用范例:

字段注释
QUERY_TABLE查询的表名
FIELDNAME查询的字段
ROWCOUNT查询的行数
ROWCOUNT查询的行数
OPTIONS查询条件
FIELDS查询字段的释义和字符长度
DATA查询的数据
TOTALROWS符合条件数据的行数

在这里插入图片描述
FIELDS 结果:
在这里插入图片描述
在这里插入图片描述
外围系统接口调用此接口,需要通过 FIELDS 的长度去划分 DATA 的字段内容。

2.传参内容:


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.详细源码:

FUNCTION zfm_query_table.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(QUERY_TABLE) TYPE  DD02L-TABNAME
*"     VALUE(FIELDNAME) TYPE  BAPI_MSG
*"     VALUE(DELIMITER) TYPE  SONV-FLAG DEFAULT SPACE
*"     VALUE(NO_DATA) TYPE  SONV-FLAG DEFAULT SPACE
*"     VALUE(ROWSKIPS) TYPE  SOID-ACCNT DEFAULT 0
*"     VALUE(ROWCOUNT) TYPE  SOID-ACCNT DEFAULT 0
*"     VALUE(OPTIONS) TYPE  CHAR300 OPTIONAL
*"  EXPORTING
*"     VALUE(TOTALROWS) TYPE  SOID-ACCNT
*"  TABLES
*"      FIELDS STRUCTURE  RFC_DB_FLD
*"      DATA STRUCTURE  CHAR8000
*"  EXCEPTIONS
*"      TABLE_NOT_AVAILABLE
*"      TABLE_WITHOUT_DATA
*"      OPTION_NOT_VALID
*"      FIELD_NOT_VALID
*"      NOT_AUTHORIZED
*"      DATA_BUFFER_EXCEEDED
*"----------------------------------------------------------------------

  CALL FUNCTION 'VIEW_AUTHORITY_CHECK'
    EXPORTING
      view_action                    = 'S'
      view_name                      = query_table
    EXCEPTIONS
      no_authority                   = 2
      no_clientindependent_authority = 2
      no_linedependent_authority     = 2
      OTHERS                         = 1.

  IF sy-subrc = 2.
    RAISE not_authorized.
  ELSEIF sy-subrc = 1.
    RAISE table_not_available.
  ENDIF.

* ----------------------------------------------------------------------
*  find out about the structure of QUERY_TABLE
* ----------------------------------------------------------------------
  DATA BEGIN OF table_structure OCCURS 10.
  INCLUDE STRUCTURE dfies.
  DATA END OF table_structure.
  "DATA TABLE_HEADER LIKE X030L.
  DATA table_type TYPE dd02v-tabclass.

  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname        = query_table
*     FIELDNAME      = ' '
*     LANGU          = SY-LANGU
*     LFIELDNAME     = ' '
*     ALL_TYPES      = ' '
*     GROUP_NAMES    = ' '
    IMPORTING
*     X030L_WA       =
      ddobjtype      = table_type
*     DFIES_WA       =
*     LINES_DESCR    =
    TABLES
      dfies_tab      = table_structure
*     FIXED_VALUES   =
    EXCEPTIONS
      not_found      = 1
      internal_error = 2
      OTHERS         = 3.
  IF sy-subrc <> 0.
    RAISE table_not_available.
  ENDIF.
  IF table_type = 'INTTAB'.
    RAISE table_without_data.
  ENDIF.

* ----------------------------------------------------------------------
*  isolate first field of DATA as output field
*  (i.e. allow for changes to structure DATA!)
* ----------------------------------------------------------------------
  DATA line_length TYPE i.
  FIELD-SYMBOLS <d>.
  ASSIGN COMPONENT 0 OF STRUCTURE data TO <d>.

* If this line leads to a syntax error
* please just delete the 'in character mode'
  DESCRIBE FIELD <d> LENGTH line_length IN CHARACTER MODE.


* ----------------------------------------------------------------------
*  if FIELDS are not specified, read all available fields
* ----------------------------------------------------------------------
  DATA number_of_fields TYPE i.
  DESCRIBE TABLE fields LINES number_of_fields.
  IF number_of_fields = 0.
    LOOP AT table_structure.
      MOVE table_structure-fieldname TO fields-fieldname.
      APPEND fields.
    ENDLOOP.
  ENDIF.

* ----------------------------------------------------------------------
*  for each field which has to be read, copy structure information
*  into tables FIELDS_INT (internal use) and FIELDS (output)
* ----------------------------------------------------------------------
  DATA: BEGIN OF fields_int OCCURS 10,
          fieldname  LIKE table_structure-fieldname,
          type       LIKE table_structure-inttype,
          decimals   LIKE table_structure-decimals,
          length_src LIKE table_structure-intlen,
          length_dst LIKE table_structure-leng,
          offset_src LIKE table_structure-offset,
          offset_dst LIKE table_structure-offset,
        END OF fields_int,
        line_cursor TYPE i.
*--------insert by Steve at23.05.2017 22:09:58 Begin-------*
  DATA: BEGIN OF it_fldnm OCCURS 0,
          fieldname(500) TYPE c,
        END OF it_fldnm.
  SPLIT fieldname AT ',' INTO TABLE it_fldnm.

*--------insert by Steve at23.05.2017 22:09:58 End----------*

  line_cursor = 0.
*  for each field which has to be read ...
  LOOP AT fields.
*--------insert by Steve at23.05.2017 22:10:17 Begin-------*
    READ TABLE it_fldnm WITH KEY fieldname = fields-fieldname.
    IF sy-subrc NE 0.
      DELETE fields.
      CONTINUE.
    ENDIF.
*--------insert by Steve at23.05.2017 22:10:17 End----------*


    READ TABLE table_structure WITH KEY fieldname = fields-fieldname.
    IF sy-subrc NE 0.
      RAISE field_not_valid.
    ENDIF.

* compute the place for field contents in DATA rows:
* if not first field in row, allow space for delimiter
    IF line_cursor <> 0.
      IF no_data EQ space AND delimiter NE space.
        MOVE delimiter TO data+line_cursor.
      ENDIF.
      line_cursor = line_cursor + strlen( delimiter ).
    ENDIF.

* ... copy structure information into tables FIELDS_INT
* (which is used internally during SELECT) ...
    fields_int-fieldname  = table_structure-fieldname.
    fields_int-length_src = table_structure-intlen.
*  FIELDS_INT-LENGTH_DST = TABLE_STRUCTURE-LENG.
* modified by Theobald, 2007-11-20
    fields_int-length_dst = table_structure-outputlen.

    fields_int-offset_src = table_structure-offset.
    fields_int-offset_dst = line_cursor.
    fields_int-type       = table_structure-inttype.
    fields_int-decimals   = table_structure-decimals.

* compute the place for contents of next field in DATA rows
*  LINE_CURSOR = LINE_CURSOR + TABLE_STRUCTURE-LENG.
* modified by Theobald, 2007-11-20
    line_cursor = line_cursor + table_structure-outputlen.



    IF line_cursor > line_length AND no_data EQ space.
      RAISE data_buffer_exceeded.
    ENDIF.
    APPEND fields_int.

* ... and into table FIELDS (which is output to the caller)
    fields-fieldtext = table_structure-fieldtext.
    fields-type      = table_structure-inttype.
    fields-length    = fields_int-length_dst.
    fields-offset    = fields_int-offset_dst.
    MODIFY fields.

  ENDLOOP.
* end of loop at FIELDS

* ----------------------------------------------------------------------
*  read data from the database and copy relevant portions into DATA
* ----------------------------------------------------------------------
* output data only if NO_DATA equals space (otherwise the structure
* information in FIELDS is the only result of the module)
  IF no_data EQ space.

    DATA: BEGIN OF work, buffer(30000), f TYPE f, END OF work.
    DATA:lv_rowcount TYPE i.

    FIELD-SYMBOLS: <wa>   TYPE any, <comp> TYPE any.
    ASSIGN work TO <wa> CASTING TYPE (query_table).

    IF rowcount > 0.
      rowcount = rowcount + rowskips.
      lv_rowcount = rowcount + 1.
    ENDIF.

    SELECT * FROM (query_table) INTO <wa> WHERE (options).

      IF sy-dbcnt GT rowskips.

        IF rowcount > 0 AND sy-dbcnt GE lv_rowcount.
          CONTINUE.
        ENDIF.
*   copy all relevant fields into DATA (output) table
        LOOP AT fields_int.
          IF fields_int-type = 'P'.
            ASSIGN COMPONENT fields_int-fieldname
            OF STRUCTURE <wa> TO <comp>
            TYPE     fields_int-type
            DECIMALS fields_int-decimals.
          ELSE.
            ASSIGN COMPONENT fields_int-fieldname
            OF STRUCTURE <wa> TO <comp>
            TYPE     fields_int-type.
          ENDIF.
          MOVE <comp> TO
          <d>+fields_int-offset_dst(fields_int-length_dst).
        ENDLOOP.
*   end of loop at FIELDS_INT
        APPEND data.

      ENDIF.

    ENDSELECT.
    totalrows = sy-dbcnt.

  ENDIF.

ENDFUNCTION.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像像素操作与二值化

目录 1、图像像素比较 1.1 比较函数 1.2 图像最大值最小值寻找 2、图像像素逻辑操作 3、图像二值化 3.1 固定阈值二值化 3.2 自适应阈值二值化 1、图像像素比较 1.1 比较函数 1.2 图像最大值最小值寻找 Mat img imread("F:/testMap/bijiao.png");Mat white i…

Bootstrap - 【echart】 统计图表基本使用

一. 前言 Bootstrap是一个流行的前端框架&#xff0c;而ECharts是一个流行的可视化库。 Bootstrap可以用来设计网站和应用程序的用户界面&#xff0c;而ECharts可以用来创建交互式和可视化的图表。 chart.js中文文档&#xff1a;http://www.bootcss.com/p/chart.js/docs/ 二.…

MYSQL的基础架构

了解MySQL&#xff08;超详细的MySQL工作原理 体系结构&#xff09; 1.MySQL体系结构 2.MySQL内存结构 3.MySQL文件结构 4.innodb体系结构 一、了解MySQL前你需要知道的 引擎是什么: MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同…

现货白银投资技巧实战教程

交易的实战技巧是指一些能让交易者获利的方法&#xff0c;当中一般都包含重要的操作纪律以及资金的配置策略&#xff0c;目标是要让投资者以合理的风险控制&#xff0c;来赢得持续的利润。现货白银投资技巧实战教程主要有以下几方面的内容&#xff1a; 1、充分了解交易细则。交…

腾讯云服务器新手入门_省钱入口_搭建网站全流程

腾讯云服务器新手指南从云服务器创建、远程连接到云服务器、安装操作系统、使用阿里云服务器建站教程等全流程&#xff0c;腾讯云服务器网分享腾讯云服务器从创建、使用到搭建网站全流程指南&#xff1a; 目录 一&#xff1a;腾讯云服务器创建 二&#xff1a;腾讯云服务器远…

leetcode84. 柱状图中最大的矩形(单调栈-java)

柱状图中最大的矩形 leetcode84. 柱状图中最大的矩形题目描述单调栈加数组优化栈结构解题代码演示用数组来优化栈结构,时间会更快 单调栈专题 leetcode84. 柱状图中最大的矩形 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/prob…

01、Linux运维发展与学习路线图

目录 一、Linux运维行业前景二、运维相关岗位三、Linux运维岗位薪酬四、Linux运维岗知识框架4.1、常见站点系统架构演变1 单机2 多机3 缓存4 向外扩展5 Docker 4.2 知识体系框架图4.3 技术人员成长的阶段4.4 方法论 一、Linux运维行业前景 流程化、标准化的工作越来越依赖于信…

结构光三维测量几种比较成熟的方法

1.飞行时间发 原理:通过直接测量光传播的时间,确定物体的面型。发射脉冲信号,接受发射回的光,计算距离。 精度:毫米级 优点:原理简单,可避免阴影和遮挡等问题,且仪器便携化。 缺点:精度相对较低 2.莫尔条纹法 原理:采用两组光栅,一个主光栅,一个基准光栅,通过…

vue + element 笔记

1.安装nodejs&#xff0c;cmd中运行 node -v 验证是否成功 2.安装cnpm&#xff0c;cmd中运行 npm install -g cnpm --registryhttps://registry.npm.taobao.org&#xff0c;cmd中 cnpm -v 验证是否成功 3.安装vue-cli&#xff0c;cmd中运行 cnpm install --global vue-cli&…

【Spark】介绍,部署与快速入门

文章目录 介绍核心模块Spark CoreSpark SQLSpark StreamingSpark MLlibSpark GraphX 部署命令行Web UI提交应用Local 模式Standalone配置文件添加 JAVA_HOME 环境变量和集群对应的 master 节点启动集群配置历史服务添加日志存储路径添加日志配置webui 配置高可用 Yarn模式配置文…

老照片修复:模糊褪色有划痕的老旧照片如何修复?

在我们的生活中&#xff0c;照片是记录我们生活的重要方式之一。无论是在手机相册里还是在家中的相册里&#xff0c;我们都有很多珍贵的照片&#xff0c;但是随着时间的推移&#xff0c;照片也会老化&#xff0c;甚至出现褪色、划痕、折痕、破损、发霉等情况&#xff0c;这些情…

java多线程使用与踩坑

SpringBoot使用多线程简单方法&#xff1a;地址 线程安全查阅资料参考&#xff1a;地址 背景&#xff1a; 经过上述资料查看&#xff0c;我想写个方法&#xff08;依靠notify()唤醒&#xff0c;依靠wait()等待&#xff09;实现两个线程轮流打印。 实现&#xff1a; 1.线程池配…

HCIA复习二---7月4

路由&#xff1a; 按照路由条目&#xff0c;逻辑选址。 控制层面&#xff1a;路由条目的加表&#xff1a;AD metric&#xff08;华为 priority cost&#xff09;&#xff1b; 数据层面&#xff1a;按照路由条目转发数据包---与操作---最长匹配---递归查找&#xff1b; 静态…

第四十三周周报

学习目标&#xff1a; latent-diffusion 代码 学习时间&#xff1a; 2023.06.17 - 2023.06.30 学习产出&#xff1a; 一、代码 1、前置知识&#xff1a;PyTorch Lightning执行顺序 执行顺序&#xff1a; trainer.fit(model)&#xff1a;开始训练模型。 prepare_data()&a…

教你如何将纬地数据与实景三维模型进行叠加

概述&#xff1a; 纬地是公路设计的常用软件&#xff0c;在国内的普及率很高。传统的纬地数据文件以二维线条形式呈现在CAD中。本文提出了一种新思路、新方法&#xff0c;即将纬地的设计成果与无人机航拍的高精度倾斜摄影模型叠加在一起&#xff0c;辅助设计方案复核。 ​纬地…

SpringBoot第19讲:SpringBoot 如何保证接口幂等

SpringBoot第19讲&#xff1a;SpringBoot 如何保证接口幂等 在以SpringBoot开发Restful接口时&#xff0c;如何防止接口的重复提交呢&#xff1f; 本文是SpringBoot第19讲&#xff0c;主要介绍接口幂等相关的知识点&#xff0c;并实践常见基于Token实现接口幂等。 文章目录 Spr…

培训报名小程序实战开发

目录 1 需求描述2 原型绘制2.1 首页2.2 报名列表页2.3 报名页2.4 支付页面2.5 支付成功页面2.6 我的页面2.7 我的报名页面2.8 报名详情页面 3 数据源设计4 数据源开发5 创建模型应用6 录入测试数据7 创建自定义应用8 创建页面总结 经常有人问&#xff0c;低代码学习容易么&…

c语言进阶-枚举、联合(共用体)

枚举 枚举项也有值属性 修改枚举项值属性 枚举的优点 define的实现过程 实际在预处理已经完成了M - 100 的替换&#xff0c;实际执行是int m 100&#xff1b; enum调试的时候更方便&#xff0c;代码变化过程都可以看到。 联合&#xff08;共用体&#xff09; 打印出来的三个…

前端学习——HTML5

新增语义化标签 新增布局标签 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

无限极 × 盖雅工场|劳动力管理系统项目正式启动,为多工厂管理保驾护航

6月12日&#xff0c;无限极盖雅工场劳动力管理系统启动大会在广东江门举行。无限极IT供应链系统负责人毛松和、智能制造总监胡波、新会生产中心负责人胡流云、营口生产中心负责人源博恩和人才资源共享服务负责人林岳&#xff0c;以及盖雅工场华南总经理潘磊等出席了启动大会。 …