Soy nuevo en este foro, necesitaría que me aclaren una duda… con qué base datos se puede conectar ABAP? y si se puede, cómo sería la conexión?
ABAP Conectar? SAP se coonecta con bases de datos, abap es un lenguaje de manejo del negocio.
Separa las preguntas en varios hilos, para mantener la organizacion con los hitos.
En nuestro sistema, antes de publicar servicios web, la conexión con la BBDD SQL Server 2014 la hacíamos de la siguiente forma:
En la transacción DBCO, definíamos la cadena de conexión:
En enlace BD poníamos un nombre para poder luego referenciarlo en el código ABAP.
El SGBD (sistema de gestión de base de datos) viene dado por el sistema tal como te indicó @smota. En nuestro caso es MSS.
El usuario debe ser un usuario creado en dicho SGBD que te tiene que dar el DBA junto con la clave de acceso.
El campo Info con. es la cadena de conexión en la que viene el nombre de la máquina donde está la BBDD y el nombre de la propia base de datos.
Una vez hecho eso, ya se puede comenzar con el desarrollo:
1. Conexión
DATA: exc_ref TYPE REF TO cx_sy_native_sql_error,
error_text TYPE string.
TRY.
EXEC SQL.
CONNECT TO 'EUROPARE_CON' AS 'V2'
ENDEXEC.
EXEC SQL.
SET CONNECTION 'V2'
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exc_ref.
error_text = exc_ref->get_text( ).
ENDTRY.
2. Por ejemplo, abrir el cursor:
TRY.
EXEC SQL.
OPEN C1 FOR
SELECT aux1,
numefact,
cif,
fefact,
NombrProv,
codpromo,
dsdescri,
tipofact,
ptobra,
ptiva,
porciva,
referenciaEMV,
CodigoOperacion,
NumeroRegistro
from conexconf_SAP
WHERE estado = :'0'
ENDEXEC.
CATCH cx_sy_native_sql_error INTO c_error.
v_error = c_error->get_text( ).
RAISE system_failure.
ENDTRY.
3. Operar con el cursor:
DO.
EXEC SQL.
FETCH NEXT C1
into :ti_sql_factu-aux1,
:ti_sql_factu-numefact,
:ti_sql_factu-cif,
:ti_sql_factu-fefact,
:ti_sql_factu-NombrProv,
:ti_sql_factu-codpromo,
:ti_sql_factu-dsdescri,
:ti_sql_factu-tipofact,
:ti_sql_factu-ptobra,
:ti_sql_factu-ptiva,
:l_porciva,
:ti_sql_factu-CodigoOperacion,
:ti_sql_factu-NumeroRegistro
ENDEXEC.
IF sy-subrc ne 0.
EXIT.
ENDIF.
ENDDO.
4. Desconexión.
TRY.
EXEC SQL.
DISCONNECT 'V2'
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exc_ref.
error_text = exc_ref->get_text( ).
ENDTRY.
Donde:
DATA: BEGIN OF ti_sql_factu OCCURS 0,
aux1 TYPE string,
numefact TYPE string,
cif TYPE string,
fefact TYPE string,
nombrprov TYPE string,
codpromo TYPE string,
dsdescri TYPE string,
tipofact TYPE string,
ptobra TYPE string,
ptiva TYPE string,
porciva TYPE string,
codigooperacion TYPE string,
numeroregistro TYPE string,
END OF ti_sql_factu.
Hola @ebarboza,
SAP funciona como un sistema de tres capas (presentación, aplicacion, DB/OS), esto hace que SAP sea independiente de la base de datos y sistema operativo. Esto quiere decir que SAP soporta las conexiones a cualquier Base de datos (con algunas restricciones). Las restricciones van del cliente desarrollado para la conexión y si el kernel de SAP soporta la base de datos.
Ahora bien si necesitas conectar una base de datos en especial verifica la lista que te pasa @smota donde se muestran las bases de datos soportadas y si es así luego puedes crear una conexión por la DBCO como te menciona @Salco y utilizarla en tu programa ABAP.
La DBCO usa ODBC para las conexiones por lo cual aunque la base de datos este soportada por SAP, es probable que no este soportada por el OS. Por ejemplo, tienes tu SAP en AIX/Oracle y quieres conectar a una MSS en windows, no conseguiras un ODBC ya que no existe un ODBC para AIX/MSS. Si llega a darse un caso como éste puedes usar UDConnect por medio de JDBC, aunque no sé como se usa en los programas ABAP estoy seguro que puede usarse.
Cordial Saludo,
William Neira
Buenas,
Muchas gracias por sus respuestas, me han sido de utilidad.
Saludos,