|
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Modulo Programador ABAP INICIAL

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
1. CREACION DE FUNCIONES
========================================================
1.0
::> ALCANCE DE LAS VARIABLES DE IMPORTING
-------------------------------------------------------
El alcance de las variables de importing de las funciones
dentro del sector "Cód.Fte" es local.
Si no se los redefine como GLOBALES dentro del sector CAMPOS
se los deben pasar explicitamente a las rutinas que en
el código fuente existan.
Ej: Dentro del cod.fte de la función:
-------------------------------------
* Se les pasan los valores explicitamente a los valores
PERFORM ffnc_obtener_grupo_estado TABLES zerror
USING i_trata_canc
CHANGING returncode.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.1
::> HACER QUE UNA FUNCION RETORNE
UN RAISE CON UN TEXTO
------------------------------------------------------------------
Dentro del codigo fuente de un programa, si se desea que
se termine la ejecucion y se emita un mensaje colocar:
* Se envia el mensaje "Error en los parámetros de la llamada".
* Se generará una excepción ERROR_PARAMETROS + finaliza
el proceso.
message W001(ZSFW1) raising ERROR_PARAMETROS.
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* :: La mejor capacitación en SAP está a tu alcance. :: ESAP Posee el más avanzado y efectivo sistema de Capacitación SAP. Conocelo!

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
2. TRATAMIENTOS DE DINPROS.
========================================================
2.1
::> Averiguar valores de campos
dentro de una pantallade seleccion
-----------------------------------------------------------------------
Funcion: CALL FUNCTION 'DYNP_VALUES_READ'
USO: Averiguar valores de campos dentro de una pantallade seleccion
INFO: Le paso
- Numero de reporte.
- Id de la dynpro.
Me devuelve:
- Una tabla con los campos-valores de la dynpro.
> Ejemplo:
* Leo el campo P_REGION DE LA DINPRO.
* Util para levantar valores en una ayuda de busqueda
PERFORM parametro_region USING p_region.
*&---------------------------------------------------------------------*
*& Form PARAMETRO_REGION
*&---------------------------------------------------------------------*
FORM parametro_region USING p_region.
DATA: BEGIN OF t_valores OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA: END OF t_valores.
t_valores-fieldname = 'P_REGION'.
APPEND t_valores.
CLEAR t_valores.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'ZRDAOR009'
dynumb = '1000'
TABLES
dynpfields = t_valores
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc = 0.
LOOP AT t_valores WHERE fieldvalue NE space.
p_region = t_valores-fieldvalue.
ENDLOOP.
ENDIF.
ENDFORM. " PARAMETRO_REGION
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.2
::> Ventana POPUP para confirmar
acción
--------------------------------------------
Funcion: POPUP_TO_CONFIRM
Uso: Desplegar una ventana popup que hace un apregunta y muestra 2 opciones
posibles.
Le paso:
- El titulo de la ventana.
- El texto de la pregunta.
- Botón 1
- Botón 2
Me devuelve:
- Un entero que representa el boton presionado
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
3. TRATAMIENTO DE FICHEROS.
========================================================
3.1
::> Despliega FRONTEND para seleccion
de ficheros REMOTOS
---------------------------------------------------------------
FUNCION: CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
USO: Despliega FRONTEND para seleccion de ficheros REMOTOS
INFO: Le paso
- Directorio preseleccionado (Opcional).
- Tipos de archivos a mostrar
Me devuelve:
- Variable con el path + nombre del archivo que selecciono el usuario.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.2
::> FRONTEND para seleccion de ficheros
LOCALES
------------------------------------------------------
CALL METHOD cl_gui_frontend_services=>file_open_dialog
USO: FRONTEND para seleccion de ficheros LOCALES
INFO: Le paso
- Tipos de archivos a mostrar
Me devuelve:
- Tabla donde donde contiene (entre otros) el nombre + path del archivo.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.3
::> Apertura de ficheros REMOTOS
para lectura.
---------------------------------------------------
CALL METHOD cl_gui_frontend_services=>gui_upload
USO: Apertura de ficheros LOCALES para lectura.
se le pasa un path LOCAL y devuelve el fichero dentro de una tabla (CHANGING)
INFO: Le paso
- Nombre de archivo
- Tipo de archivo
Me devuelve:
- Tabla donde con el contenido del archivo.
IMPORTANTE! : REcordar llamar a la funcion que cierra el DATASET luego
de usarlo
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.4
::> Apertura de ficheros LOCALES
para lectura.
--------------------------------------------------
OPEN DATASET p_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
USO: Abrir Fichero MODO REMOTO
* Leo el fichero
DO.
READ DATASET p_path INTO w_fich.
ENDDO.
* Cierro el fichero
CLOSE DATASET p_path.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
4. INTERACCION CON LA BASE DE DATOS
========================================================
4.1
::> Obtengo los posibles valores
de un campo en una tabla diccionario
-------------------------------------------------------------------------
Funcion: CALL FUNCTION 'GET_DOMAIN_VALUES'
USO: Obtengo los posibles valores de un campo en una tabla diccionario
INFO: Le paso
- Nombre del dominio de un campo.
Me devuelve:
- Una tabla con los posibles valores (ENUM) de un campo.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Modulo Programador ABAP INICIAL

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
5. TRATAMIENTO DE FECHAS
========================================================
5.1
::> Agrego un mes a una fecha determinada
----------------------------------------------
Funcion: RE_ADD_MONTH_TO_DATE
USO: Se le pasa un mes y le suma un mes
INFO: Le paso
- una fecha.
- la cantidad de meses a incrementar
Me devuelve:
- la fecha tratada
CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
EXPORTING
months = '-1'
olddate = sy-datum
IMPORTING
newdate = s_datum-low.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
5.2
::> Diferencia de años transcurridos
entre dos fechas
--------------------------------------------------------
Funcion: RE_ADD_MONTH_TO_DATE
USO: Se le pasa un mes y le suma un mes
INFO: Le paso
- dos fechas.
Me devuelve:
- la cantidad de años transcurridos entre ellas
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = p_gbdat
i_date_to = p_fech
i_flg_separate = '1'
IMPORTING
e_days = p_dias
e_months = p_meses
e_years = p_anyos
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc NE 0.
MOVE 'X' TO p_err.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
5.3
::> Cantidad de días transcurridos
entre dos de fechas
---------------------------------------------------------
OBTENER DIAS TRANSCURRIDOS ENTRE 2 fechas.
>> PERFORM fotr_fnc_dias_transcurridos USING vl_fecha_ult
vl_fecha_actual
vl_dias_transc
*&---------------------------------------------------------------------*
*& Form fotr_fnc_dias_transcurridos
*&---------------------------------------------------------------------*
* Calcular los días transcurridos entre las dos fechas pasadas
*----------------------------------------------------------------------*
* -->P_VL_FECHA_ULT text
* -->P_VL_FECHA_ACTUAL text
* -->P_VL_DIAS_TRANSC text
*----------------------------------------------------------------------*
FORM fotr_fnc_dias_transcurridos USING p_vl_fecha_ult
p_vl_fecha_actual
p_vl_dias_transc .
DATA: vl_endda TYPE d,
vl_begda TYPE d.
vl_begda = p_vl_fecha_ult.
vl_endda = p_vl_fecha_actual.
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
EXPORTING
begda = vl_begda
endda = vl_endda
IMPORTING
days = p_vl_dias_transc.
ENDFORM. " fotr_fnc_dias_transcurridos
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* :: La mejor capacitación en SAP está a tu alcance. :: ESAP Posee el más avanzado y efectivo sistema de Capacitación SAP. Conocelo!

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
6. FINALIZACION DE UNA FUNCION y RECOLECCION DE ERRORES.
========================================================
6.1
::> Finalizacion de una funcion
en caso de error
--------------------------------------------------
EJEMPLO EN: ZMI_ALMACEN_USUMAT2
* Si el centro está en blanco se envia un error.
IF centro IS INITIAL.
PERFORM return_set TABLES return
USING 'E'
'014'
' '
' '
' '
' '.
EXIT.
ENDIF.
FORM RETURN_SET TABLES P_P_RETURN STRUCTURE BAPIRET2
USING P_A
P_B
P_C
P_D
P_E
P_F.
DATA: LDS_RETURN LIKE BAPIRET2.
* Log de errores
CLEAR: LDS_RETURN, P_P_RETURN.
LDS_RETURN-MESSAGE_V1 = P_C.
LDS_RETURN-MESSAGE_V2 = P_D.
LDS_RETURN-MESSAGE_V3 = P_E.
LDS_RETURN-MESSAGE_V4 = P_F.
CALL FUNCTION 'ZMEREP_RETURN_GET'
EXPORTING
ZTYPE = P_A
ID = 'ZMI'
NUMBER = P_B
PAR1 = LDS_RETURN-MESSAGE_V1
PAR2 = LDS_RETURN-MESSAGE_V2
PAR3 = LDS_RETURN-MESSAGE_V3
PAR4 = LDS_RETURN-MESSAGE_V4
IMPORTING
RETURN = LDS_RETURN.
MOVE-CORRESPONDING LDS_RETURN TO P_P_RETURN.
P_P_RETURN-LOG_MSG_NO = P_C.
P_P_RETURN-MESSAGE_V1 = P_D.
COLLECT P_P_RETURN.
ENDFORM. " return_set
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
V. VARIOS.
========================================================
V.1
::> Constructor de un mensaje de
err
---------------------------------------
Funcion: CALL FUNCTION 'MESSAGE_TEXT_BUILD'
USO: Constructor de un mensaje de err.
INFO: Le paso
- Numero de mensaje.
- ID de mensaje.
- TExtos de mensaje
Me devuelve:
- Una cadena con el el mensaje armado.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
V.2
::> Crea una ayuda de busqueda personalizada
--------------------------------------------------
Funcion: CALL function 'F4IF_INT_TABLE_VALUE_REQUEST'
USO: Crea una ayuda de busqueda personalizada.
Solo para tablas con referencias a campos de diccionario
INFO: Le paso:
- Se le pasa la tabla con los registros a mostrar en la ayuda de busqueda.
Los titulos de las columnas los toma referenciando a los campos dicc
(en el campo "value_tab" ).
- Definir "retfield" -> CAmpo de la ayuda de busqueda a
devolver cuando el usr selecciona.
- Definir "dynprofield" -> Contenedor donde devolverá
el valor seleccionado por el usuario (normalmente un parameter)
Me devuelve:
- Una ventanita de ayuda de busqueda, que muestra los registros pasados.
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* :: Capacitate en SAP con especialistas en el área :: No dejes tu carrera en manos impovisadas, ESAP es tu mejor elección.

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
|