Etiquetas

Mostrando entradas con la etiqueta API / Funciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta API / Funciones. Mostrar todas las entradas

20170329

ABAP Tips: Imprimir múltiples HRFORM

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
*"----------------------------------------------------------------------


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.

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.

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.

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
*"----------------------------------------------------------------------

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
*"----------------------------------------------------------------------
 

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
*"----------------------------------------------------------------------

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
*"----------------------------------------------------------------------

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.

    begda = e_invpers_iotab-birthdate.
    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.
*&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: Ejemplo de Excel con propiedades

Visto en el Blog de Blag:

http://atejada.blogspot.com/2009/02/excel-ole-y-abap.html

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

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          = ' '
          .

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.

CLEAR t_fields. REFRESH t_fields.
w_fields-tabname   = 'SYST'.
w_fields-fieldname = 'DATUM'.
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.
IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT t_fields INTO w_fields.
      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
  • 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
PB

  • PA10        Infogrupo Contratación Candidatos
  • PB20        Visualizar Candidatos
  • PB30        Actualizar Candidatos
  • PB40        Infogrupo Candidatos (Infotipo 4000)
  • PU90        Eliminar Candidatos
PY
  • 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
PD
  • APPCREATE        Evaluar Colaboradores
  • APPSEARCH        Visualizar Evaluaciones (Infotipo 0024)
  • PEPP            Evaluación Perfiles IT0024
  • PPQD            Catálogo de Cualificaciones