Professional Documents
Culture Documents
Una RFC solo es una funcin que se puede llamar desde un sistema externo a SAP, el
cual puede ser otro SAP u otro tipo de sistema. Vamos que se definen en la SE37
igualmente con la diferencia de que en la pestaa de atributos se pincha el radiobutton
"Modulo de acceso remoto". Las aplicaciones de una RFC si que son mas extensas, pero
vamos, que por ejemplo, permiten intercambiar datos entre SAP y el sistema
llamante...infinidad de cosas. Has de mucho cuidado es con los destinos RFC
(transaccin SM59) y los usuarios que estn ligados a ellos. Hay varios tipos de
usuarios, y normalmente el que se utiliza para pasar informacin es el CPIC (lo puedes
ver por la transaccin SU01 y la pestaa logon data). Has de tener en cuenta que el
usuario CPIC no pide logon, porque slo se pasa informacin, pero si el usuario es
DIALOG pide pantalla de logon y normalmente se utiliza para pasar pantallas, o sea,
conectarse en remoto a una transaccin. En teoria este tema lo gestionan los de sistemas,
que se encargan de crear los destinos y los usuarios asociados a ellos, por lo que para t
debera ser transparente. Por lo dems, es una funcin como cualquier otra, y si la
llaman desdel exterior de SAP, mientras le pasen los parmetros correctamente, no hay
problema. Espero que te sirva de ayuda hasta que alguien te pase la documentacin.
CREAR GRUPO DE FUNCIONES
Antes de crear un RFC se debe crear un Grupo de Funciones y para esto hay 2 formas
de crearlo:
1. Transaccin SE80/Edit Object/Function Group
EJM DE RFC:
Para crear las RFC se debe ir a la transaccin SE37
:
:
:
Es el nombre de la RFC.
Es el nombre de la Funcin
Es la descripcin que le queremos dar.
EJEMPLOS:
TODAS LAS TABLAS QUE VAMOS A UTILIZAR DEL DICCIONARIO DE
DATOS SE DECLARAN EN UN INCLUDE QUE YA ESTA DEFINIDO POR
DEFECTO CUANDO SE CREA LA FUNCION. (LZPRUEBATOP)
*----------------------------------------------------------------------*
***INCLUDE LZFPRUEBAF01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_MATERIAL text
*----------------------------------------------------------------------*
FORM SELECCIONAR USING
VALUE(P_I_MATERIAL) LIKE Y23TAB01-MATERIAL.
SELECT SINGLE MATERIAL INTO Y23TAB01 -MATERIAL FROM Y23TAB01 WHERE
MATERIAL = P_I_MATERIAL.
IF SY-SUBRC <> 0.
RAISE MATERIAL_INEXISTENTE.
ENDIF.
ENDFORM.
" SELECCIONAR
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_PROVEEDOR
*&---------------------------------- -----------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_MATERIAL text
*
-->P_I_PROVEE text
*----------------------------------------------------------------------*
FORM SELECCIONAR_PROVEEDOR USING
VALUE(P_I_MATERIAL) LIKE Y23TAB01-MATERIAL
P_I_PROVEE LIKE Y23TAB01-FABRICANTE
E_TIPO LIKE Y23TAB01-TIPO.
SELECT SINGLE TIPO INTO Y23TAB01-TIPO FROM Y23TAB01 WHERE
FABRICANTE = P_I_PROVEE AND MATERIAL = Y23TAB01-MATERIAL.
IF SY-SUBRC = 0.
E_TIPO = Y23TAB01-TIPO.
ELSE.
E_TIPO = 'EL TIPO SE ENCUENTRA VACIO'.
ENDIF.
ENDFORM.
" SELECCIONAR_PROVEEDOR
EJECUTAR LA FUNCION
Nos aparecer la pantalla para colocar el cdigo del proveedor y el cd igo Del
material.
Lo ejecutamos:
*----------------------------------------------------------------------*
***INCLUDE LZFPRUEBAF02 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_FABRICANTE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_FABRICANTE text
*----------------------------------------------------------------------*
FORM SELECCIONAR_FABRICANTE USING
VALUE(P_I_FABRICANTE) LIKE Y23TAB01 -FABRICANTE.
SELECT SINGLE FABRICANTE INTO Y23TAB01-FABRICANTE FROM Y23TAB01
WHERE FABRICANTE = P_I_FABRICANTE.
ENDFORM.
" SELECCIONAR_FABRICANTE
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_NOMBRE_PROVEEDOR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_FABRICANTE text
*
-->P_E_NOMBRE text
*----------------------------------------------------------------------*
FORM SELECCIONAR_NOMBRE_PROVEEDOR USING
VALUE(P_I_FABRICANTE) LIKE Y23TAB01-FABRICANTE
E_NOMBRE LIKE Y23TAB02-NOMBREPROVEEDOR
E_NRORUC LIKE Y23TAB02-NRORUC.
SELECT SINGLE NOMBREPROVEEDOR INTO Y23TAB02-NOMBREPROVEEDOR FROM
Y23TAB02 WHERE PROVEEDOR = P_I_FABRICANTE.
IF SY-SUBRC = 0.
E_NOMBRE = Y23TAB02-NOMBREPROVEEDOR.
SELECT SINGLE NRORUC INTO Y23TAB02-NRORUC FROM Y23TAB02
WHERE PROVEEDOR = P_I_FABRICANTE.
IF SY-SUBRC = 0.
E_NRORUC = Y23TAB02-NRORUC.
ELSE.
RAISE RUC_INEXISTENTE.
ENDIF.
ELSE.
RAISE NOMBRE_INEXISTENTE.
ENDIF.
ENDFORM.
" SELECCIONAR_NOMBRE_PROVEEDOR
*----------------------------------------------------------------------*
***INCLUDE LZFPRUEBAF04 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_MATERIAL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_MATERIAL text
*----------------------------------------------------------------------*
FORM SELECCIONAR_MATERIAL USING
P_I_MATERIAL E_FABRICANTE.
SELECT SINGLE FABRICANTE INTO Y23TAB01-FABRICANTE FROM Y23TAB01 WHERE
MATERIAL = P_I_MATERIAL.
IF SY-SUBRC = 0.
E_FABRICANTE = Y23TAB01-FABRICANTE.
ELSE.
RAISE MATERIAL_INEXISTENTE.
ENDIF.
ENDFORM.
" SELECCIONAR_MATERIAL
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_TABLA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_MATERIAL text
*
-->P_E_MATERIAL text
*
-->P_TI_Y23TAB01 text
*----------------------------------------------------------------------*
FORM SELECCIONAR_TABLA TABLES ZTABLA STRUCTURE Y23TAB01 USING
P_I_MATERIAL.
SELECT * INTO CORRESPONDING FIELDS OF TI_Y23TAB01 FROM Y23TAB01.
ENDSELECT.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING TI_Y23TAB01 TO ZTABLA.
APPEND ZTABLA.
ENDIF.
ENDFORM.
" SELECCIONAR_TABLA
EJECUCION
Colocamos el Cdigo de material
Datos de la tabla.
*----------------------------------------------------------------------*
***INCLUDE LZFPRUEBAF04 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECCIONAR_NOMBREPROVEEDOR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_I_FABRICANTE text
*
-->P_E_NOMBREPROVEEDOR text
*----------------------------------------------------------------------*
FORM SELECCIONAR_NOMBREPROVEEDOR USING
VALUE(P_I_FABRICANTE) LIKE Y23TAB01-FABRICANTE
E_NOMBREPROVEEDOR LIKE Y23TAB02 -NOMBREPROVEEDOR.
SELECT SINGLE NOMBREPROVEEDOR INTO Y23TAB02-NOMBREPROVEEDOR FROM
Y23TAB02 WHERE PROVEEDOR = P_I_FABRICANTE.
IF SY-SUBRC = 0.
E_NOMBREPROVEEDOR = Y23TAB02-NOMBREPROVEEDOR.
ELSE.
RAISE NO_OK.
ENDIF.
ENDFORM.
" SELECCIONAR_NOMBREPROVEEDOR
*&---------------------------------------------------------------------*
*&
Form EXPORTAR_TABLA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_ZTABLA1 text
*
-->P_ZTABLA text
*
-->P_2 text
*
-->P_I_FABRICANTE text
*----------------------------------------------------------------------*
FORM EXPORTAR_TABLA TABLES
ZTABLA1 STRUCTURE Y23TAB01
ZTABLA2 STRUCTURE Y23TAB02
USING
P_I_FABRICANTE.
SELECT * INTO CORRESPONDING FIELDS OF TI_Y23TAB01 FROM Y23TAB01 WHERE
FABRICANTE = P_I_FABRICANTE.
ENDSELECT.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING TI_Y23TAB01 TO ZTABLA1.
APPEND ZTABLA1.
ENDIF.
Lo ejecutamos:
Colocamos el cdigo de fabricante:
ZTABLA1:
ZTABLA2:
LISTA DE OBJETOS: