Hola Antonio, yo solo me he podido conectar via RFC, pero no directamente... tu ha podido conectar directamente????
Avisame .
Anexo te emvio como he podido extraer informacion desde MAXDB
oleobject objBAPICONTROL
oleobject sapConnection
oleobject objUserList
oleobject lo_obj_captura
oleobject objtabfield
integer il_sapok, i, ll_num_filas
string ls_datos, st_sociedad
Long ll_new, ll_ejercicio, ll_dias_vencido
objBAPICONTROL = create oleobject
il_sapok = objBAPIControl.ConnectToNewObject( "SAP.Functions" )
sapConnection = objBAPIControl.Connection
sapConnection.Client = "400"
sapConnection.Language = "ES"
sapConnection.System = "P01"
sapConnection.SystemNumber = "00"
sapConnection.Applicationserver = "192.168.101.11"
sapConnection.User = "dgiugliano"
sapConnection.Password = "valencia13"
sapConnection.AutoLogon = True
dw_1.reset()
dw_2.reset()
If sapConnection.Logon(0, True) <> True Then
MessageBox ("Cannot logon!","Logon Failed!")
Else
// MessageBox ("Logon!","Logon Successful!")
End If
objuserlist = objbapicontrol.add("RFC_READ_TABLE")
objuserlist.exports("QUERY_TABLE","BSID")
objtabfield = objuserlist.Tables("FIELDS")
objtabfield.AppendRow()
objtabfield.Value(1, "FIELDNAME", "BUKRS")
objtabfield.AppendRow()
objtabfield.Value(2, "FIELDNAME", "KUNNR")
objtabfield.AppendRow()
objtabfield.Value(3, "FIELDNAME", "BELNR")
objtabfield.AppendRow()
objtabfield.Value(4, "FIELDNAME", "BLART")
objtabfield.AppendRow()
objtabfield.Value(5, "FIELDNAME", "SHKZG")
objtabfield.AppendRow()
objtabfield.Value(6, "FIELDNAME", "ZBD1T")
objtabfield.AppendRow()
objtabfield.Value(7, "FIELDNAME", "BLDAT")
objtabfield.AppendRow()
objtabfield.Value(8, "FIELDNAME", "DMBTR")
IF objuserlist.call() = true then
lo_obj_captura = objuserlist.tables("Data")
ll_num_filas = lo_obj_captura.rowcount()
// dw_1.dataobject = "d_sap_bsid"
dw_1.setTransObject(sqlca)
for i = 1 to ll_num_filas
ls_datos = lo_obj_captura.value(i, 1)
st_sociedad = mid(ls_datos, 1, 4)
if st_sociedad = ls_cia then
ll_new = dw_1.insertrow(0)
dw_1.setitem(ll_new, "burkrs", mid(ls_datos, 1, 4))
dw_1.setitem(ll_new, "KUNNR", mid(ls_datos, 5, 10))
dw_1.setitem(ll_new, "BELNR", mid(ls_datos, 15, 10))
//dw_1.setitem(ll_new, "BLDAT", mid(ls_datos, 27, 10))
dw_1.setitem(ll_new, "BLART", mid(ls_datos, 25, 2))
dw_1.setitem(ll_new, "SHKZG", mid(ls_datos, 27, 1))
dw_1.setitem(ll_new, "ZBD1T", mid(ls_datos, 28, 3))
dw_1.setitem(ll_new, "BLDAT", mid(ls_datos, 31, 8))
dw_1.setitem(ll_new, "DMBTR", mid(ls_datos, 39, 12))
end if
next
end if
// Borra archivo de Credito y Cobranza
DELETE FROM tctxc ;
COMMIT;
Long j
String st_indicador
dec{2} ld_monto_deuda
ll_new =0
for j = 1 to dw_1.rowcount()
Long ll_dias, ll_fec_doc, ll_fec_venc
Date dd_dia_vencimiento
String st_fecha
ll_new = dw_2.insertrow(0)
ll_ejercicio = j
if ll_ejercicio > 9999 then
ll_ejercicio = 1
end if
dw_2.setitem(ll_new, "ccejer", ll_ejercicio)
dw_2.setitem(ll_new, "ccperi", 99)
dw_2.setitem(ll_new, "cctdoc", trim(dw_1.getitemstring(j,"blart")))
dw_2.setitem(ll_new, "ccndoc", trim(dw_1.getitemstring(j,"belnr")))
ll_fec_doc = long(dw_1.getitemstring(j,"bldat"))
st_fecha = mid(string(ll_fec_doc),7,2) + '/' +mid(string(ll_fec_doc),5,2) + '/' +mid(string(ll_fec_doc),1,4)
dw_2.setitem(ll_new, "ccfech", ll_fec_doc)
ll_dias = long(dw_1.getitemstring(j,"zbd1t"))
dd_dia_vencimiento = relativedate( date(st_fecha), ll_dias )
ll_fec_venc = long(mid(string(dd_dia_vencimiento),7,4) + mid(string(dd_dia_vencimiento),4,2) + mid(string(dd_dia_vencimiento),1,2) )
dw_2.setitem(ll_new, "ccfeve", ll_fec_venc)
dw_2.setitem(ll_new, "ccccli", trim(dw_1.getitemstring(j,"kunnr")))
st_indicador = trim(dw_1.getitemstring(j,"SHKZG"))
ld_monto_deuda = dec(dw_1.getitemstring(j,"dmbtr"))
if st_indicador = 'H' then
dw_2.setitem(ll_new, "ccpvta", ld_monto_deuda * -1 )
dw_2.setitem(ll_new, "ccpacu", 0 )
dw_2.setitem(ll_new, "ccsald", ld_monto_deuda * -1)
else
dw_2.setitem(ll_new, "ccpvta", ld_monto_deuda )
dw_2.setitem(ll_new, "ccpacu", 0 )
dw_2.setitem(ll_new, "ccsald", ld_monto_deuda )
end if
ll_dias_vencido = daysafter( dd_dia_vencimiento , today() )
dw_2.setitem(ll_new, "ccpado", ll_dias_vencido )
next
dw_2.SetTransObject(sqlca)
IF dw_2.Update() = 1 THEN
Commit;
ELSE
Rollback;
Messagebox("Advertencia","Error de Base de Datos")
END IF
Gracias.