打开SAP 客户端工具

ABAP 中 创建包(SE80)

创建函数组

展开ABAP 工作台,双击ABAP Dictionary 字典:

选择第三个data type,输入数据结构名称ZSQL_CLAUSE_ELEMENTS,点击创建:

选中Structure结构,点击确定:

输入简称,增加一个数据元素TEXT,类型为SO_TEXT

同样的方法,我们创建Structure结构ZTABLEROWS,增加一条数据元素,名字任意如ZTABLEROWS,数据元素 CHAR2000

保存这两个structure,然后点击上方的结构树按钮,打开Structure所在包目录

展开Structure目录,就可以看到我们定义的那两个结构了,分别右击>Activate激活

FUNCTION HHDI_EXTRACT_TABLE_DATA.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  TABLES

*"      FIELDS STRUCTURE  ZSQL_CLAUSE_ELEMENTS

*"      FROMCLAUSE STRUCTURE  ZSQL_CLAUSE_ELEMENTS

*"      WHERECLAUSE STRUCTURE  ZSQL_CLAUSE_ELEMENTS

*"      DATA STRUCTURE  ZTABLEROWS

*"----------------------------------------------------------------------

*"----------------------------------------------------------------------

*" Copy selected fields from QUERY_TABLE to DATA_STRUCTURE

*"----------------------------------------------------------------------

TYPE-POOLS: abap.

DATA:

columnName TYPE SO_TEXT,

fieldDataDescrRef  TYPE REF TO abap_componentdescr,

numberFields TYPE i,

fieldDescr TYPE abap_componentdescr,

fieldname TYPE string,

fieldDescrTab TYPE abap_component_tab,

rowStructDescr TYPE REF TO cl_abap_structdescr,

rowReference TYPE REF TO data,

returnRowString TYPE string,

dataFieldString TYPE string,

dataline LIKE data,

fromClauseRow TYPE ZSQL_CLAUSE_ELEMENTS,

fromClauseString TYPE string,

whereClauseRow TYPE ZSQL_CLAUSE_ELEMENTS,

whereClauseString TYPE string,

fieldsRow TYPE ZSQL_CLAUSE_ELEMENTS.

FIELD-SYMBOLS:

<datarow> TYPE ANY,

<datafield> TYPE ANY.

* CREATE DataStructure with field names

* Datatypes are read from fieldnames of FIELDS input table

DESCRIBE TABLE FIELDS LINES numberFields.

LOOP AT FIELDS INTO fieldsRow.

fieldname = SY-TABIX.

* names need to be unique and must start with a char

CONCATENATE 'string' fieldname INTO fieldname.

CONDENSE fieldname.

fieldDescr-name = fieldname.

* for dictionary lookup we need to change columnnames from Open SQL

* to dictionary notation

columnName = fieldsRow-TEXT.

REPLACE FIRST OCCURRENCE OF SUBSTRING '~' IN columnName WITH '-' RESPECTING CASE.

fieldDescr-type ?= cl_abap_typedescr=>describe_by_name( columnName ).

APPEND fieldDescr TO fieldDescrTab.

ENDLOOP.

rowStructDescr = cl_abap_structdescr=>create( fieldDescrTab ).

* now we create the actual data structure in memory

create data rowReference type HANDLE rowStructDescr.

* finally we assign it to the Field-symbol used by the select statement

ASSIGN rowReference->* TO <datarow>.

* End Create DataStructure

* to simplify calls we concatenate from and whereclause into strings

* this way caller doesn't need to check word wrappings

fromClauseString = ''.

LOOP AT FROMCLAUSE INTO fromClauseRow.

CONCATENATE fromClauseString fromClauseRow-TEXT INTO fromClauseString.

ENDLOOP.

whereClauseString = ''.

LOOP AT WHERECLAUSE INTO whereClauseRow.

CONCATENATE whereClauseString whereClauseRow-TEXT INTO whereClauseString.

ENDLOOP.

* Now start actual select operation

SELECT (FIELDS) FROM (fromClauseString) INTO <datarow> WHERE (whereClauseString).

* we read all fields of the current row, cast it to string and

* concatenate it into a dataline with division chars.

CLEAR: returnRowString.

DO numberFields TIMES.

ASSIGN component sy-index of structure <datarow> to <datafield>.

dataFieldString = <datafield>.

CONCATENATE returnRowString '|' datafieldstring INTO returnRowString.

ENDDO.

dataline = returnRowString.

* finally dataline is added to the return table.

INSERT dataline INTO TABLE data.

ENDSELECT.

ENDFUNCTION.

函数

l  新建abap function

注意函数的名称一定为:HHDI_EXTRACT_TABLE_DATA

先把HHDI_EXTRACT_TABLE_DATA的源码贴进去

点击左边的table表格tab,新增4个表,FIELDS /FROMCLAUSE /WHERECLAUSE /DATA,类型都为LIKE,后面的结构类型按照文档源码,前三个输入ZSQL_CLAUSE_ELEMENTS,最后一个输入ZTABLEROW

like报参数过时的错误,回车再回车即可。

再次check

没有错误则表示function 可以了,注意还需要设置函数可以远程访问

最后再激活一下。

在HHDI中SAP数据连接配置:

数据抽取任务的配置:

SELECT语句参考:

select KNA1~NAME2,KNVV~KUNNR,KNA1~LAND1 from KNA1 INNER JOIN KNVV ON KNA1~KUNNR = KNVV~KUNNR where KNA1~NAME2 <>'' AND KNA1~LAND1 = 'US'

注意OPENSQL不支持SELECT *

簇表数据量太大会导致SAP报缓存溢出的错误,可用WHERE语句控制其数据范围,数据量过大时,可以再HHDI的作业流程中采用循环方式取数。

如何从SAP ECC中抽取簇表数据的更多相关文章

  1. MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502

    错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...

  2. Oracle GoldenGate 支持 从SAP HANA database抽取或者复制数据到SAP HANA database 吗?

    Oracle GoldenGate 支持 从SAP  HANA database抽取或者复制数据到SAP HANA database 吗? 来源于: Does Oracle GoldenGate Su ...

  3. SAP HANA SLT 将Oracle表 数据同步到HANA数据库

    简单介绍SLT 同步数据的整个配置过程: 在SLT系统中创建与Oracle的链接 在HANA监控平台上,创建Configuration 创建表的同步作业 ——————————————BEGIN———— ...

  4. 定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。

    package com.shawnway.trade.marketdata.constants; import java.sql.SQLException; import java.util.Cale ...

  5. 查看SqlAzure和SQLServer中的每个表数据行数

    SqlAzure中的方式: select t.name ,s.row_count from sys.tables t join sys.dm_db_partition_stats s ON t.obj ...

  6. oracle中字符串与表数据拼接的用法--“||”

    测试过程中,经常需要批量删除或者插入.修改一些表数据或结构,使用手工复制.粘贴其实很麻烦,所以这是我们就可以使用拼接成sql语句的方法来实现操作数据.下面先讲讲oracle中拼接符 || 的用法,如下 ...

  7. 如何从mysql备份中提取单张表数据

    1.先提取备份数据中的前50行出来,查看一下备份数据格式    head -50 bakdb.sql > head50.txt        类似下面的数据是我们所需要提取的:        / ...

  8. 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie

    昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...

  9. 误删除SAP ECC中的profile文件

    环境:ECC6.0 EHP4  FOR ORACLE ON WINDWS X64下 今天在RZ10配置系统参数文件的时候,不小心错删除了instance profile文件,这下惨了,这是操作系统层级 ...

随机推荐

  1. CentOS 安装 OpenResty

    方案一 1.在 CentOS 系统中添加 openresty 资源库sudo yum-config-manager --add-repo https://openresty.org/yum/cn/ce ...

  2. SQL点点滴滴_SQL分页查询

    假如tb_customer表中的数据量非常大,在显示时要分页显示而且每页只显示10条信息.为了效果我们取第三页的数据. 方法一:遍历两次表,取不同的数据. select top 10 * from t ...

  3. 秒杀多线程第一篇 多线程笔试面试题汇总 ZZ 【多线程】

    http://blog.csdn.net/morewindows/article/details/7392749 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些 ...

  4. Unity IOC/DI使用

    一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创 ...

  5. MVC Controller的激活

    各Controller的继承关系 Controller最重要的是对Execute方法的调用,当目标Controller对象被激活后,对请求的后续处理和最终响应均是通过执行这个Execute方法来完成. ...

  6. JQuery学习---JQuery基础知识

    JQuery介绍: [官网]http://jquery.com [参考API]http://jquery.cuishifeng.cn/ JQuery的低版本支持IE低版本,JQuery的2版本不太支持 ...

  7. Nginx学习---企业级nginx环境搭建

    1.1. nginx安装环境 1.系统要求 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. 1-1 安装 GCC 源码安装nginx需要依赖gcc环境,需要 ...

  8. DRAM(动态)存储器

    一.DRAM的存储元电路 常见的DRAM存储元电路有四管式和单管式两种,它们的共同特点是靠电容存储电荷的原理来存储信息.电容上存有足够多的电荷表示“1”,电容上无电荷表示“0”. 由于电容存储的电荷会 ...

  9. Linux命令--系统管理

    shutdown命令 Linux shutdown命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机. 使用权限:系统管理者. 语法 shu ...

  10. TCP/IP 协议图--网络层中的 IP 协议

    IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层——网络层.网络层的主要作用是“实现终端节点之间的通信”.这种终端节点之间的通信也叫“点对点通信”. 网络的下一层——数据链路层的主要作用是 ...