Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI From ORACLE

Former Member
0 Likes
377

Hi all,

Here is my code of oracle....

declare

-- constant for user identification

cstrMUsrClient constant char(3) := '100';

cstrMUsrUser constant varchar2(10) := 'UPPLDEV';

cstrMUsrPassword constant varchar2(10) := 'UPPLSTAR';

cstrMUsrLanguage constant varchar2(10) := 'EN';

-- constant for system identification

cstrMSysSystem constant varchar2(10):= 'DEV';

cstrMSysMessageServer constant varchar2(10):= 'ECCDEV';

cstrMSysGroupName constant varchar2(10):= 'PUBLIC';

-- constant values for reading message texts

cstrMMsgId constant varchar2(10):= 'SX';

cstrMMsgNumber constant varchar2(10):= '101';

cstrMMsgVariable1 constant varchar2(10):= 'var1';

cstrMMsgVariable2 constant varchar2(10):= 'var2';

cstrMMsgVariable3 constant varchar2(10):= 'var3';

cstrMMsgVariable4 constant varchar2(10):= 'var4';

cstrMMsgLanguage constant varchar2(10):= 'DE';

-- other constant

cstrMPathfile constant varchar2(30):= 'D:\saptext.rtf';

-- password for login in R/3

strMUsrPassword varchar2(10);

-- define object for BAPI ActiveX control

oBAPICtrl oleobj;

-- define object for R/3 logon control

oLogonCtrl oleobj;

oConCtrl oleobj;

-- business object ZMATINFO

boZmatInfo oleobj;

-- for BAPI: BapiService.MessageGetDetail

oMsgReturn oleobj;

oMsgText oleobj;

intCounter Integer;

-- to open the file you need a file channel

intChannel Integer;

hWnd olevar;

islogin number;

oParaIm oleobj;

oParaEx oleobj;

oParaTab oleobj;

oMatItem oleobj;

--oRows oleobj;

--oAdd oleobj;

o_args OLE2.LIST_TYPE;

begin

-- create BAPI ActiveX control object

oBAPICtrl := ole2.Create_Obj('SAP.BAPI.1');

-- create R/3 logon control object

oLogonCtrl := ole2.Create_Obj('SAP.Logoncontrol.1');

oConCtrl :=SAP_CSAPLogonControl.NewConnection(oLogonCtrl);

--setting the property of new connection object

-- fill logon parameters for system to use

SAP_CSAPLogonConnection.SYSTEM(oConCtrl,cstrMSysSystem);

SAP_CSAPLogonConnection.MessageServer(oConCtrl,cstrMSysMessageServer);

SAP_CSAPLogonConnection.GroupName(oConCtrl,cstrMSysGroupName);

-- fill logon parameter for user

SAP_CSAPLogonConnection.Client(oConCtrl,cstrMUsrClient);

SAP_CSAPLogonConnection.User(oConCtrl,cstrMUsrUser);

SAP_CSAPLogonConnection.Password(oConCtrl,cstrMUsrPassword);

SAP_CSAPLogonConnection.Language(oConCtrl,cstrMUsrLanguage);

SAP_CWdoAuto.Connection(oBAPICtrl,oConCtrl);

if SAP_CSAPLogonConnection.Logon(oConCtrl,hWnd,0) = 0 then

MESSAGE('SAP Logon Fail');message('SAP Logon Fail');

else

message('SAP Logon Success');message('SAP Logon Success');

end if;

-


-- create BAPI ZmatInfo object

boZMatInfo := SAP_CWdoAuto.GetSAPObject(oBAPICtrl,'zmaterialInfo');

<b>oParaIm := SAP_CWdoAuto.DimAs (oBAPICtrl,boZMatInfo,'ZbapiMatInfo','BapiIn');</b>

oParaEx := SAP_CWdoAuto.DimAs(oBAPICtrl,boZMatInfo,'ZbapiMatInfo','Return');

oParaTab := SAP_CWdoAuto.DimAs (oBAPICtrl,boZMatInfo,'ZbapiMatInfo','BapiOut');

SAP_IStructure.Value(oParaIm,to_variant('91'),to_variant('MATNR'));

oMatItem := SAP_CSAPTaFacTable.AppendRow(oParaIm);

o_args := OLE2.CREATE_ARGLIST;

OLE2.ADD_ARG_OBJ(o_args, oParaIm);

OLE2.ADD_ARG_OBJ(o_args, oParaEx);

OLE2.ADD_ARG_OBJ(o_args, oParaTab);

OLE2.INVOKE(boZMatInfo, 'ZbapiMatInfo',o_args);

end;

i have created one BAPI in which i have one import parameter in which i am passing Material Number, one Export Parameter Return,and one table Zbapi_out

in which i am collecting all my data.

now my method name is <b>'ZbapiMatInfo'</b>

and its parameters are <b>BapiIn,BapiOut,Return.</b>

Now i am getting error at DimAs Method shown Bold in Code, and error is

<b>AN OLE Error Occured : 0x80020005</b>

can anyone please help me out...

Its bit urgent.

Thanks in advance....

1 REPLY 1
Read only

Former Member
0 Likes
338

Not yet Answered