ABAP - SOS: Conectarse de C a SAP

 
Vista:

SOS: Conectarse de C a SAP

Publicado por Aitor (2 intervenciones) el 03/02/2004 13:14:54
Hola a todos,

Alguién sabe como se llama desde C a un programa en SAP?

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

SOS: Conectarse de C a SAP

Publicado por Alejandro (226 intervenciones) el 11/04/2023 18:38:25
Para conectarse desde C a SAP, es necesario utilizar el SAP RFC SDK (Remote Function Call Software Development Kit). Este kit de desarrollo proporciona una serie de APIs para conectar y comunicarse con el sistema SAP.

Para llamar a un programa SAP desde C, se puede utilizar la función RFC_CALL_TRANSACTION. Esta función permite invocar una transacción SAP y pasarle los parámetros necesarios para su ejecución.

Aquí te dejo un ejemplo básico de cómo se puede utilizar RFC_CALL_TRANSACTION en C para invocar una transacción SAP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <sapnwrfc.h>
 
int main()
{
    RFC_CONNECTION_PARAMETER connectionParams[7];
    RFC_CONNECTION_HANDLE connectionHandle;
    RFC_FUNCTION_HANDLE functionHandle;
    RFC_ERROR_INFO errorInfo;
    RFC_TABLE_HANDLE tableHandle;
    RFC_RC rc;
 
    // Configuración de los parámetros de conexión
    connectionParams[0].name = "ASHOST";
    connectionParams[0].value = "SAP_SERVER_HOSTNAME";
    connectionParams[1].name = "SYSNR";
    connectionParams[1].value = "00";
    connectionParams[2].name = "CLIENT";
    connectionParams[2].value = "100";
    connectionParams[3].name = "USER";
    connectionParams[3].value = "SAP_USER";
    connectionParams[4].name = "PASSWD";
    connectionParams[4].value = "SAP_PASSWORD";
    connectionParams[5].name = "LANG";
    connectionParams[5].value = "EN";
    connectionParams[6].name = NULL;
    connectionParams[6].value = NULL;
 
    // Conexión al sistema SAP
    rc = RfcOpenConnection(connectionParams, 7, &errorInfo);
    if (rc != RFC_OK) {
        printf("Error al conectar a SAP: %s\n", errorInfo.message);
        exit(1);
    }
 
    // Obtención del handle de la función a invocar
    rc = RfcGetFunctionDescByName(connectionHandle, "NAME_OF_SAP_FUNCTION", &functionDesc, &errorInfo);
    if (rc != RFC_OK) {
        printf("Error al obtener la descripción de la función: %s\n", errorInfo.message);
        exit(1);
    }
 
    // Invocación de la transacción
    rc = RfcCallTransaction(connectionHandle, "SAP_TRANSACTION_CODE", NULL, &errorInfo);
    if (rc != RFC_OK) {
        printf("Error al invocar la transacción: %s\n", errorInfo.message);
        exit(1);
    }
 
    // Cierre de la conexión
    RfcCloseConnection(connectionHandle, &errorInfo);
 
    return 0;
}

Espero que esto te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar