各位好!
我用Delphi写了一个DLL,该DLL主要作用是调用SAP RFC接口,取得对应值。但发现取过来的值如果字符长点就被截断了。我写的方法如下:
1、定义变量:Connection,Table,Table2,Funct : variant; r,iCount,iCount2,i: integer; s7: string;
2、连接SAP:
Connection.User := 'SAPWU';
Connection.System := 'PRD';
Connection.Client := '800';
Connection.ApplicationServer := 'UUUUUUUUU';
Connection.SystemNumber := '01';
Connection.Password := '111111';
Connection.Language := 'ZH' ;
Connection.CodePage := '8400';
3、给字符串赋值:
fun.Connection := connection;
Funct := fun.add('ZMIB33'); //函数名称 ZMIB33为RFC函数名
Table2 := Funct.tables.item('T_MARA_CFG'); s7 := Table2.value(r,'ATWTB'); // ATWTB 为SAP的一个表字段 --- 问题就出在这里了!! 在SAP中,有一个字符串:“Mortara饿死的份(热舞ARR+90导静电”,赋值后 s7='Mortara饿死的份(热舞ARR+90导ST'
我用Delphi写了一个DLL,该DLL主要作用是调用SAP RFC接口,取得对应值。但发现取过来的值如果字符长点就被截断了。我写的方法如下:
1、定义变量:Connection,Table,Table2,Funct : variant; r,iCount,iCount2,i: integer; s7: string;
2、连接SAP:
Connection.User := 'SAPWU';
Connection.System := 'PRD';
Connection.Client := '800';
Connection.ApplicationServer := 'UUUUUUUUU';
Connection.SystemNumber := '01';
Connection.Password := '111111';
Connection.Language := 'ZH' ;
Connection.CodePage := '8400';
3、给字符串赋值:
fun.Connection := connection;
Funct := fun.add('ZMIB33'); //函数名称 ZMIB33为RFC函数名
Table2 := Funct.tables.item('T_MARA_CFG'); s7 := Table2.value(r,'ATWTB'); // ATWTB 为SAP的一个表字段 --- 问题就出在这里了!! 在SAP中,有一个字符串:“Mortara饿死的份(热舞ARR+90导静电”,赋值后 s7='Mortara饿死的份(热舞ARR+90导ST'
我都是用AnsiString做RFC,还没出现过什么问题By the way,终于遇见用Delphi鼓捣SAP的同行啦!命苦啊!
我都是在前面设置FIELDS,然后s7 := Table2.value(r,1),在根据SAP中每一个字段长度截取的
我还真没这么用过
呵呵,看错了,你调的是自定义的函数啊,我还以为是READ_RFC_TABLE,这条回复当我没说过...
不过试一下用AnsiString类型代替String
你用的方法是什么??能发详细点的代码给我看看么
T_MARA_CFG应该是你们自定义的透明表吧,查一下表结构txt := Table2.value(r, 1);//跟一下看看txt是什么
s7:=Copy(txt,ATWTB前所有字段的长度和+1,ATWTB字段长度)