Etiquetas

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

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