Etiquetas

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.

20140423

ABAP Tips: Programa que carga cualquier tabla desde un excel (.csv)

Este programa lo encontré hace mil años en una página en chino, permite cargar cualquier tabla "Z"! desde un excel exportado a .csv con los mismos campos que la estructura de la misma, especificándole el nombre de tabla y archivo con datos.


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_rol LIKE ztv_01_roles-id_rol OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_rol.
  DATA: BEGIN OF gt_roles OCCURS 0,
                id_rol TYPE ztv_01_roles-id_rol,             

                descripcion TYPE ztv_01_roles-descripcion,
        END OF gt_roles.


  DATA lt_return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.


  SELECT id_rol descripcion FROM ztv_01_roles
    APPENDING CORRESPONDING FIELDS OF TABLE gt_roles
    WHERE tipo = '1'.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'ID_ROL'
      window_title    = 'Roles'
      value_org       = 'S'
    TABLES
      value_tab       = gt_roles
      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_rol.
  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
*"----------------------------------------------------------------------