Etiquetas

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