ABAP程序可以把sql中的数据导入sap table吗

ABAP程序可以把sql中的数据导入sap table吗,第1张

可以用JCO导入数据:

import com.sap.mw.jco.*

public class SAP extends Object

{

public static void main (String str[])

{

SAP app=new SAP()

}

int count

JCO.Client mConnection

JCO.Repository mRepository

String[] SAPInterfaces

public SAP()

{

try {

// Logon info

mConnection = JCO.createClient("300", // SAP client

"if1", // userid

"801104", // password

null, // language

"172.16.98.20", // application server host name

"00")// system number

mConnection.connect()

mRepository = new JCO.Repository("ARAsoft", mConnection)

System.out.println("SAP连接成功")

} catch (Exception ex) {

ex.printStackTrace()

System.exit(1)

}

JCO.Function function = null

JCO.Table codes = null

JCO.Table DATA=null

try

{

function=this.createFunction("ZRFC_READ_TABLE")

if (function == null)

{

System.out.println(

"BAPI_MATERIAL_GETLIST" + " not found in SAP.")

System.exit(1)

}

codes = function.getTableParameterList().getTable("FIELDS")

DATA =function.getTableParameterList().getTable("DATA")

JCO.ParameterList input=function.getImportParameterList()

input.setValue("MSEG", "QUERY_TABLE")

input.setValue(20,"ROWCOUNT")

mConnection.execute(function)

System.out.println(Integer.toString(codes.getNumRows()))

for (int i = 0i <DATA.getNumRows()i++)

{

DATA.setRow(i)

System.out.println(DATA.getString("WA"))

}

}

catch (Exception ex)

{

ex.printStackTrace()

System.exit(1)

}

}

public JCO.Function createFunction(String name) throws Exception

{

try {

IFunctionTemplate ft =

mRepository.getFunctionTemplate(name.toUpperCase())

if (ft == null)

return null

return ft.getFunction()

} catch (Exception ex)

{

throw new Exception("Problem retrieving JCO.Function object.")

}

}

}

ABAP 中可以定义结构来包含多个基本类型,便于整理及 *** 作;

结构体不属于数据字典对象(数据字典中可以定义结构体,但不能存储数据),在程序运行时会被作为临时对象存储在内存空间;

在创建内表时,可参考直接定义的结构体作为 内表结构 。

结构体的定义,可以通过两种方式实现:

1.第一种方式

语法:

如:

比如tables: mseg.就创建了一个跟表MSEG类型一样的工作区。还可以创建一个一模一样的工作区tables: *mseg。

tables的最源大好处是取单条数据的时候,可以不加加into语句zd,如:

select single * from mseg.

select single * from *mseg.

如果没有tables语句,则不加into会报错

结构体也就是工作区,结构体是由几个字段组成的一个结构,相当于内表的一行数据。内表是内存中的表可以有多行数据。

SY-SUBRC = 0 代表成功。

其中corresponding表示将查询出来的字段装进表kna1和内表GT_KNA1 共有的字段到内表GT_KNA1

CL_DEMO_OUTPUT=>DISPLAY( GT_KNA1 ). 输出

LOOP AT 表名 INTO 结构名

CLEAR 结构名

ENDLOOP

APPEND 结构体 TO 表名. (向内表的最后一行插入一行,APPEND只能用于标准表中)

APPEND LINES OF表2 FROM 1 TO 3 TO 表1.(向内表1插入内表2中的n行)

INSERT 结构体 INTO 表名 INDEX 索引.(向内表insert数据到指定index,如果不指定插入到的index则功能和APPEND一样)

INSERT LINES OF 表 FROM 1 TO 3 INTO TABLE 表1.

READ TABLE 表名 INTO 结构体 INDEX 索引.(在结构体中读一个表)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9686597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存