Función para obtener múltiples HRFORM de un empleado (o de múltiples si se desea) y que permite imprimir en pantalla y exportar el binario para Web Dynpro. Puede ser mejorado sin duda.
FUNCTION zhr_sgu_liquidaciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_PERNR) TYPE PERSNO
*" VALUE(I_MES_INI) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_INI) TYPE PABRJ OPTIONAL
*" VALUE(I_MES_FIN) TYPE PABRP OPTIONAL
*" VALUE(I_ANO_FIN) TYPE PABRJ OPTIONAL
*" EXPORTING
*" VALUE(E_RETURN) TYPE BAPIRET2
*" VALUE(E_BIN_FILE) TYPE XSTRING
*"----------------------------------------------------------------------
(Esos pequeños tips que no quiero volver a buscar) By Daniel F. Ruiz, Santiago, Chile.
Mostrando entradas con la etiqueta API / Funciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta API / Funciones. Mostrar todas las entradas
20170329
20150703
ABAP Tips: ALV vía Submit to Spool
Problema: Al ejecutar un reporte vía SUBMIT TO SPOOL el cual imprime un ALV, éste no se imprime en la salida, por ser ejecutado vía Job de Fondo (Batch). Esto se soluciona con la función GET_PRINT_PARAMETERS, como se ve en el siguiente ejemplo:
IF sy-batch = 'X'.
CLEAR print_parameters.
report = sy-repid.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
report = report
archive_mode = '1'
mode = 'BATCH'
no_dialog = 'X'
IMPORTING
out_parameters = print_parameters
valid = valid_flag
EXCEPTIONS
invalid_print_params = 2
OTHERS = 4.
IF valid_flag = 'X' AND sy-subrc = 0.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
TO SAP-SPOOL
SPOOL PARAMETERS print_parameters.
ENDIF.
ELSE.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
AND RETURN.
ENDIF.
IF sy-batch = 'X'.
CLEAR print_parameters.
report = sy-repid.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
report = report
archive_mode = '1'
mode = 'BATCH'
no_dialog = 'X'
IMPORTING
out_parameters = print_parameters
valid = valid_flag
EXCEPTIONS
invalid_print_params = 2
OTHERS = 4.
IF valid_flag = 'X' AND sy-subrc = 0.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
TO SAP-SPOOL
SPOOL PARAMETERS print_parameters.
ENDIF.
ELSE.
SUBMIT zhr_rpuaud00
* WITH SELECTION-TABLE gt_rspar
AND RETURN.
ENDIF.
20130107
ABAP TIPS: Algoritmo para Matchcodes dinámicos
El clásico algoritmo que permite generar un matchcode por pantalla, cuando no se tiene uno definido, y que se puede encontrar en cualquier blog:
PARAMETERS p_subty TYPE p9901-subty OBLIGATORY.
*----------------------------------------------------------------------*
* Eventos de Pantalla *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_subty.
DATA: BEGIN OF gt_matchcode OCCURS 0,
subty TYPE subty,
stext TYPE t591s-stext,
END OF gt_matchcode.
DATA lt_return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
IF gt_matchcode[] IS INITIAL.
SELECT subty stext FROM t591s
APPENDING CORRESPONDING FIELDS OF TABLE gt_matchcode
WHERE sprsl = sy-langu
AND infty = '9901'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SUBTY'
window_title = 'Conceptos'
value_org = 'S'
TABLES
value_tab = gt_matchcode
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_return_tab INDEX 1.
MOVE lt_return_tab-fieldval TO p_subty.
ENDIF.
* Eventos de Pantalla *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_subty.
DATA: BEGIN OF gt_matchcode OCCURS 0,
subty TYPE subty,
stext TYPE t591s-stext,
END OF gt_matchcode.
DATA lt_return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
IF gt_matchcode[] IS INITIAL.
SELECT subty stext FROM t591s
APPENDING CORRESPONDING FIELDS OF TABLE gt_matchcode
WHERE sprsl = sy-langu
AND infty = '9901'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SUBTY'
window_title = 'Conceptos'
value_org = 'S'
TABLES
value_tab = gt_matchcode
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_return_tab INDEX 1.
MOVE lt_return_tab-fieldval TO p_subty.
ENDIF.
20121221
ABAP Tips: Indicador de Progreso
Algoritmo de ejemplo para crear correctamente un indicador de progreso en ABAP.
Primero se debe obtener el total de registros o procesos (lv_total), y dentro de un LOOP a los registros a procesar, realizar el algoritmo siguiendo el ejemplo a continuacion :
DATA:
lv_total(7) TYPE n,
lv_actua(7) TYPE n,
lv_porce TYPE i,
lv_resto TYPE i,
lv_texto(40) TYPE c.
lv_total = <cantidad de registros>
lv_actua = 0.
LOOP AT <registros>...
* Progress Indicator
lv_actua = lv_actua + 1.
lv_resto = lv_actua MOD 8.
CONCATENATE 'Procesando partida' lv_actua 'de' lv_total
INTO lv_texto SEPARATED BY space.
IF lv_resto IS INITIAL. "Para no perder tanto performance con el mje
lv_porce = ( lv_actua * 100 ) / lv_total.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = lv_porce
text = lv_texto.
ENDIF.
ENDLOOP.
Primero se debe obtener el total de registros o procesos (lv_total), y dentro de un LOOP a los registros a procesar, realizar el algoritmo siguiendo el ejemplo a continuacion :
DATA:
lv_total(7) TYPE n,
lv_actua(7) TYPE n,
lv_porce TYPE i,
lv_resto TYPE i,
lv_texto(40) TYPE c.
lv_total = <cantidad de registros>
lv_actua = 0.
LOOP AT <registros>...
* Progress Indicator
lv_actua = lv_actua + 1.
lv_resto = lv_actua MOD 8.
CONCATENATE 'Procesando partida' lv_actua 'de' lv_total
INTO lv_texto SEPARATED BY space.
IF lv_resto IS INITIAL. "Para no perder tanto performance con el mje
lv_porce = ( lv_actua * 100 ) / lv_total.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = lv_porce
text = lv_texto.
ENDIF.
ENDLOOP.
20121107
ABAP HR Tips: Inscribir Persona a Tipo de Evento
Esta función permite realizar la inscripción de una Persona a un Tipo de Evento de HR
Transacción: PV00 / PV07
FUNCTION Z_HR_UC35_INSCRIPCIONES.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" T_INSCRIPCIONES STRUCTURE ZXTV_INSCRIPCIONES
*"----------------------------------------------------------------------
Transacción: PV00 / PV07
FUNCTION Z_HR_UC35_INSCRIPCIONES.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" T_INSCRIPCIONES STRUCTURE ZXTV_INSCRIPCIONES
*"----------------------------------------------------------------------
ABAP HR Tips: Función para crear Tipo de Evento
Esta función permite crear una Instancia o Tipo de Evento de HR
Transacción: PSV2
FUNCTION z_hr_uc34_secciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(OBJETO_PADRE) TYPE HROBJID
*" VALUE(DATUM) TYPE DATUM
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
Transacción: PSV2
FUNCTION z_hr_uc34_secciones.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(OBJETO_PADRE) TYPE HROBJID
*" VALUE(DATUM) TYPE DATUM
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
ABAP HR Tips: Función para crear Maestro de Evento
Esta función permite crear una Evento de HR
Transacción: S_AHR_61011887
FUNCTION z_hr_uc33_curso_sap.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(BEGDA) TYPE BEGDA OPTIONAL
*" VALUE(ENDDA) TYPE ENDDA OPTIONAL
*" VALUE(OBJETO_PADRE) TYPE HROBJID OPTIONAL
*" VALUE(DES_BREVE) TYPE SHORT_D OPTIONAL
*" VALUE(DES_LARGA) TYPE STEXT OPTIONAL
*" VALUE(DIAS) TYPE DAYCT
*" VALUE(HORAS) TYPE HRSCT
*" VALUE(CAP_MIN) TYPE KAPZ1 DEFAULT '1'
*" VALUE(CAP_OPT) TYPE KAPZ2
*" VALUE(CAP_MAX) TYPE KAPZ3
*" VALUE(PRECIO_INTERNO) TYPE IKOST
*" VALUE(PRECIO_EXTERNO) TYPE EXKOS
*" VALUE(SENCE) TYPE TEXT10
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*" TABLES
*" PTXT1002 STRUCTURE PT1002
*"----------------------------------------------------------------------
Transacción: S_AHR_61011887
FUNCTION z_hr_uc33_curso_sap.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(BEGDA) TYPE BEGDA OPTIONAL
*" VALUE(ENDDA) TYPE ENDDA OPTIONAL
*" VALUE(OBJETO_PADRE) TYPE HROBJID OPTIONAL
*" VALUE(DES_BREVE) TYPE SHORT_D OPTIONAL
*" VALUE(DES_LARGA) TYPE STEXT OPTIONAL
*" VALUE(DIAS) TYPE DAYCT
*" VALUE(HORAS) TYPE HRSCT
*" VALUE(CAP_MIN) TYPE KAPZ1 DEFAULT '1'
*" VALUE(CAP_OPT) TYPE KAPZ2
*" VALUE(CAP_MAX) TYPE KAPZ3
*" VALUE(PRECIO_INTERNO) TYPE IKOST
*" VALUE(PRECIO_EXTERNO) TYPE EXKOS
*" VALUE(SENCE) TYPE TEXT10
*" EXPORTING
*" VALUE(OBJETO_CREADO) TYPE OBJID
*" VALUE(E_RETURN) TYPE BAPIRET2
*" TABLES
*" PTXT1002 STRUCTURE PT1002
*"----------------------------------------------------------------------
ABAP Tips: Calcular días hábiles entre dos fechas
Esta es una función bastante interesante que permite obtener la cantidad de días hábiles y no hábiles entre dos fechas, donde se contabilizan aparte los sábados, domingos y festivos según el calendario SAP (transacción SCAL).
Cortesía de @AleMadriaza
FUNCTION z_tv_08_dias_habiles.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_FECHA_INI) TYPE BEGDA
*" VALUE(I_FECHA_FIN) TYPE ENDDA
*" EXPORTING
*" VALUE(E_DIAS_HABILES) TYPE I
*" VALUE(E_DIAS_NO_HABILES) TYPE I
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
Cortesía de @AleMadriaza
FUNCTION z_tv_08_dias_habiles.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_FECHA_INI) TYPE BEGDA
*" VALUE(I_FECHA_FIN) TYPE ENDDA
*" EXPORTING
*" VALUE(E_DIAS_HABILES) TYPE I
*" VALUE(E_DIAS_NO_HABILES) TYPE I
*" VALUE(E_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------
20120130
ABAP: Calcular edad
Para no tener que pensarlo dos veces ...
DATA begda TYPE begda.
DATA endda TYPE endda.
DATA handler TYPE REF TO if_hrpa_message_handler.
DATA i_edad TYPE num2.
DATA endda TYPE endda.
DATA handler TYPE REF TO if_hrpa_message_handler.
DATA i_edad TYPE num2.
endda = sy-datum.
CALL FUNCTION 'HR_ECM_GET_PERIOD_BETW_DATES'
EXPORTING
begda = begda
endda = endda
message_handler = handler
IMPORTING
num_years = i_edad.
20120120
ABAP: Rutina para llamar Smartform
Este es un ejemplo extendido del método para llamar a un Smartform, con la variante de exportar a PDF o a Xstring (comentado porque la función no me trae la tabla llena, hay que cambiar de método dependiendo del requerimiento) y con la variante de HTML, pero aun no he experimentado con esa salida.
20120110
ABAP HR: Macro para leer Infotipos de OM
Es increible cuántas veces hice SELECT a las tablas de OM por no investigar un poco. Supongo que existe una macro estándar para leer los Infotipos de OM así como existe para HR, pero mientras no la encuentre, ocuparé esta pequeña macro de ejemplo para leer esos registros.
*&---------------------------------------------------------------------*
*& Define RH_READ_INFTY
*&---------------------------------------------------------------------*
*& Define RH_READ_INFTY
*&---------------------------------------------------------------------*
DEFINE rh_read_infty.
*&1 otype
*&2 objid
*&3 infty
*&4 innnn
*&5 begda
*&6 endda
refresh &4.
call function 'RH_READ_INFTY'
exporting
plvar = '01'
otype = &1
objid = &2
infty = '&3'
istat = '1'
* SUBTY = ' '
begda = &5
endda = &6
tables
innnn = &4
* OBJECTS =
exceptions
all_infty_with_subty = 1
nothing_found = 2
no_objects = 3
wrong_condition = 4
wrong_parameters = 5
others = 6
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
END-OF-DEFINITION.
*&1 otype
*&2 objid
*&3 infty
*&4 innnn
*&5 begda
*&6 endda
refresh &4.
call function 'RH_READ_INFTY'
exporting
plvar = '01'
otype = &1
objid = &2
infty = '&3'
istat = '1'
* SUBTY = ' '
begda = &5
endda = &6
tables
innnn = &4
* OBJECTS =
exceptions
all_infty_with_subty = 1
nothing_found = 2
no_objects = 3
wrong_condition = 4
wrong_parameters = 5
others = 6
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
END-OF-DEFINITION.
* proceso de ejemplo
DATA p1001 TYPE TABLE OF p1001 WITH HEADER LINE.
rh_read_infty 'O' <objid> 1001 p1001 sy-datum sy-datum.
20120104
ABAP: Enviar correo HTML con adjunto
Un form que utilicé para enviar correo en formato HTML y que además adjuntaba el mismo mensaje como archivo en Excel.
20111229
ABAP HR: Buscar el jefe directo de una persona
Una función que lee mediante vías de evaluación el jefe más cercano de una persona, considerando que su Unidad Organizativa no tiene jefe directo.
*&---------------------------------------------------------------------**& Form BUSCA_JEFE
*&---------------------------------------------------------------------*
FORM busca_jefe USING pernr TYPE persno
CHANGING idjefe TYPE persno
nombrejefe TYPE pad_cname.
20111220
ABAP: Buen ejemplo de uso de ICONS
Este ejemplo de TenkodaTips grafica muy bien el uso de ICONS en un Dynpro.
Uso de Iconos de estado (“Status Icons”) en programas de diálogo
Uso de Iconos de estado (“Status Icons”) en programas de diálogo
ABAP: Popup estándar para desplegar mensajes
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Popup To Inform'
txt1 = 'Linea 1'
txt2 = 'Linea 2'
* TXT3 = ' '
* TXT4 = ' '
.
EXPORTING
titel = 'Popup To Inform'
txt1 = 'Linea 1'
txt2 = 'Linea 2'
* TXT3 = ' '
* TXT4 = ' '
.
20111215
ABAP: Popup estándar para solicitar valores
Función para solicitar valores en pantalla en una dynpro.
DATA: t_fields TYPE TABLE OF sval,
w_fields TYPE sval,
l_return,
l_datum like sy-datum.
w_fields TYPE sval,
l_return,
l_datum like sy-datum.
CLEAR t_fields. REFRESH t_fields.
w_fields-tabname = 'SYST'.
w_fields-fieldname = 'DATUM'.
APPEND w_fields TO t_fields.
APPEND w_fields TO t_fields.
CALL FUNCTION 'POPUP_GET_VALUES_DB_CHECKED'
EXPORTING
check_existence = ' '
popup_title = text-ti1 "titulo popup
IMPORTING
returncode = l_return
TABLES
fields = t_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
EXPORTING
check_existence = ' '
popup_title = text-ti1 "titulo popup
IMPORTING
returncode = l_return
TABLES
fields = t_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
l_fecha = w_fields-value.
EXIT.
ENDLOOP.
IF l_return = 'A' OR l_fecha IS INITIAL.
EXIT.
ENDIF.
20111212
Cachureos SAP.: Textos descriptivos en ABAP HR.
Texto copiado casi literalmente desde el blog Cachureos SAP.: Textos descriptivos en ABAP HR.
En muchas ocasiones durante desarrollos me he encontrado con
programas para el modulo de SAP HR, en que el desarrollador se complico de gran
forma en la búsqueda de textos descriptivos, como con la nacionalidad, Centro
de Costo, Molga, entre otros.
Ahora esto es mucho más simple si se conoce el grupo de
funciones HRWPC_GENERAL_TEXTS, en
este grupo se encuentran definidas casi todas las funciones necesarias para
estos textos. Para hacerlo fácil y de la mejor forma.
ABAP: Capturar resultado de pantalla en tabla interna
Permite ejecutar un programa determinado mediante SUBMIT y capturar el resultado de la salida en una tabla interna, para procesar los resultados.
ABAP HR Tips: Mis Programas / Transacciones Interesantes
HR Cross
OM
PA
- PC_PAYRESULT Resultados de Nómina
- PM01 Tratar Infotipos
OM
- PP01 Infotipo Objetos OM
- PPOM Visualizar Estructura Unidad Organizativa
- PPOME Arbol Jerárquico Full OM
- PO03 Funcicones
- PO10 Visualizar Objetos OM
- PO13 Actualizar Objetos OM
PA
- PA10 Infogrupo Contratación Colaboradores
- PA20 Visualizar Colaboradores
- PA30 Actualizar Colaboradores
- PA40 Infogrupo Colaboradores (Infotipo 0)
- PM01 Crear Infotipos
- PA10 Infogrupo Contratación Candidatos
- PB20 Visualizar Candidatos
- PB30 Actualizar Candidatos
- PB40 Infogrupo Candidatos (Infotipo 4000)
- PU90 Eliminar Candidatos
- PE01 Esquema de Nómina
- PE02 Reglas de Nómina
- PE03 Características
- PE04 Funciones de Nómina
- PC_PAYRESULT Consultar resultados de nómina
- APPCREATE Evaluar Colaboradores
- APPSEARCH Visualizar Evaluaciones (Infotipo 0024)
- PEPP Evaluación Perfiles IT0024
- PPQD Catálogo de Cualificaciones
Suscribirse a:
Entradas (Atom)