Que tal usuarios del foro reciban saludos de su servidor desde mexico y ojala haya alguien que pueda ayudarme en lo siguiente:
Deseamos saber de traer datos de una tabla de SAP llamada MARA desde un desarrollo .net que estamos haciendo pero no tenemos idea de como hacerlo, podrian apoyarme dandome guia o algun consejo, mil gracias por el apoyo
RfcDestination destination = mDestinationManager.GetDestination("MYDESTINATION"); IRfcFunction readTable = destination.Repository.CreateFunction("RFC_READ_TABLE"); // leer la tabla MARA readTable.SetValue("QUERY_TABLE", "MARA"); // campos separados por punto y coma readTable.SetValue("DELIMITER", ";");
Ya despues tendrías que adecuar esto, con los campos de la MARA:
// Parameter table FIELDS contains the columns you want to receive
// here we query 2 fields, KUNNR and NAME1
IRfcTable fieldsTable = readTable.GetTable("FIELDS");
fieldsTable.Append();
fieldsTable.SetValue("FIELDNAME", "KUNNR");
fieldsTable.Append();
fieldsTable.SetValue("FIELDNAME", "NAME1");
// the table OPTIONS contains the WHERE condition(s) of your query
// here a single condition, KUNNR is to be 0012345600
// several conditions have to be concatenated in ABAP syntax, for instance with AND or OR
IRfcTable optsTable = readTable.GetTable("OPTIONS");
optsTable.Append();
optsTable.SetValue("TEXT", "KUNNR = '0012345600'");
Llamar a la función readTable.Invoke(destination);
Procesar los datos:
IRfcTable dataTable = readTable.GetTable("DATA");
foreach(var dataRow in dataTable)
{
string data = dataRow.GetValue("WA");
string[] columns = data.Split(';');
}
nosotros lo hacemos a través de servicios web. Como es SAP el que proporciona los datos, es necesario hacer un módulo de función de tipo RFC y luego crear un Enterprise service del tipo definición de servicio, y luego se configura en la soamanager. De ahí se coge el wsdl que se pasa a los de .NET para que generen su consumidor del mismo.
Mira también este tema que lo mismo te puede dar ideas: