cancel
Showing results for 
Search instead for 
Did you mean: 

Rfc_Call_Transaction parameters

Former Member
0 Kudos

Hi:

I'm trying to perform a transaction with the RFC function Rfc_Call_Transaction, I put all the parameters: Transaction, Screen, dynpro, etc. But I'm missing something, I'm reciving 'Start screen does not exist in batch input data'

¿Can anyone help me?

Thanks.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Yes, it's solved (i can´t mark it, don't know why)

Ok, I made a funtion to create a record on the DBCDATA structure, simple:

private BDCDATA FillBDCDATA(string Program,

string Dynbegin,

string Dynpro,

string Fnam,

string Fval)

{

BDCDATA st_DATA = new BDCDATA();

st_DATA.Program = Program;

st_DATA.Dynbegin = Dynbegin;

st_DATA.Dynpro = Dynpro;

st_DATA.Fnam = Fnam;

st_DATA.Fval = Fval;

return st_DATA;

}

This result will be added in the tblBDCDATA table (this can be done in .NET based languages, thanks to the garbage collector, in other languages something like this could be very dangerous)

The calling funtion works like this, take special attention on the sequence sended to the above function, this order is exactly the same of a transaction register generated inside SAP, hope is usefull.

private void button3_Click(object sender, System.EventArgs e)

{

SAPProxy proxy = null;

txtMsg.Text = "";

try

{

proxy = new SAPProxy("ASHOST=" + txtHost.Text +

" SYSNR=" + txtSysnr.Text +

" CLIENT=" + txtMand.Text +

" LANG=" + txtLang.Text +

" USER=" + txtUser.Text +

" PASSWD=" + txtPass.Text);

}

catch(Exception excpt)

{

txtMsg.Text = excpt.Message;

}

if (proxy == null)

return;

BDCDATATable tblBDCDATA = new BDCDATATable();

MESSAGEINF infMessage = new MESSAGEINF();

// call to FillBDCDATA( Program, Dynbegin, Dynpro, Fnam, Fval)

tblBDCDATA.Add(FillBDCDATA("SAPMKBUA", "X", "0111", null, null));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BDC_OKCODE", "/00"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPDY-BLDAT", "30.12.2004"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPDY-VERSN", "0"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "FMPS-FIKRS", "ente"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPDY-JAHR", "2005"));

tblBDCDATA.Add(FillBDCDATA("SAPMKBUA", "X", "0320", null, null));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BDC_OKCODE", "=PERI"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "ERFA_ZEILE_IN", "1"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPFMPS-FISTL(01)", "GRCOMW"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPFMPS-FIPOS(01)", "G90230615"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPAK-WERT(01)", "2"));

tblBDCDATA.Add(FillBDCDATA("SAPLKBPP", "X", "0600", null, null));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BDC_OKCODE", "=CLOS"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPDY-PERI1(01)", "350953.44"));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BPDY-PERI1(02)", "350953.44"));

tblBDCDATA.Add(FillBDCDATA("SAPMKBUA", "X", "0320", null, null));

tblBDCDATA.Add(FillBDCDATA( null, null, null, "BDC_OKCODE", "=BUCH"));

try

{

proxy.Rfc_Call_Transaction("FR33" /"FM9J"/,"", out infMessage, ref tblBDCDATA);

}

catch(Exception excpt)

{

txtMsg.Text = excpt.Message;

}

/Document 0500106943 posted/

txtMsg.Text = infMessage.Msgtx;

}

Former Member
0 Kudos

Where you find the structure DBCDATA, and how?

How run the programe which you write. Could you give me some documents concerne. thanks a lot.

Former Member
0 Kudos

When you drag and drop the function Rfc_Call_Transaction over your .sapwsdl file, the BDCDATA structure is created, it´s also created the DBCDATATable and the MESSAGEINF structure; just take a look on your sapwsdl file.

Former Member
0 Kudos

I want to call rfc_call_transaction with parametre sm50, but I don't know what I can put in BDCTABLE, what is it used for?

Former Member
0 Kudos

I have the same problem. did you resolve it? could you propose to me some documents about it.

Former Member
0 Kudos

I think your usage of DYNBEGIN may be incorrect. Try putting an "X" in the first row and leave the rest blank. I think DYNBEGIN is intended to indicate that a new screen is to be started.