Etiquetas

20111229

ABAP: Utilizar Selection-Screens en un Dynpro

Visto en el blog del Blag:

Como sabemos, en los dynpros no existen controles para crear los tan necesarios Selection-Screen...Felizmente, podemos crearlos desde un programa ABAP.

http://atejada.blogspot.com/2007/02/utilizar-selection-screens-en-un-dynpro.html

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.

ABAP HR: Plantilla Reporte PNP con LVC

Reporte estándar HR con B.DD. PNP y salida en LVC


20111227

ABAP: Leer dominios (SE11)

Otra de esas funciones que no quiero tener que volver a buscar. Traer la lista de valores de un dominio.

*&---------------------------------------------------------------------*
*&      Form  LEE_DOMINIO
*&---------------------------------------------------------------------*

FORM lee_dominio  USING    dominio
                           valor
                  CHANGING texto.

  DATA t_dd07v TYPE TABLE OF dd07v WITH HEADER LINE.

  CALL FUNCTION 'TB_DOMAINVALUES_GET'
    EXPORTING
      domain  = dominio
    TABLES
      t_dd07v = t_dd07v.

  READ TABLE t_dd07v WITH KEY domvalue_l = valor.
  IF sy-subrc = 0.
    texto = t_dd07v-ddtext.
  ELSE.
    CLEAR texto.
  ENDIF.

ENDFORM.                    " LEE_DOMINIO

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

ABAP: Ejemplo de Batch Input con resumen en ALV

Un ejemplo para hacer copy/paste de un Batch Input con salida en LVC, donde hubo que hacer un split a la tabla ya que la misma función de carga GUI_UPLOAD no estaba separando los valores.

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.

20111213

ABAP: SUBMIT con SELECTION-TABLE

Para reportes que son máscaras de otros, y tienen los mismos parámetros de seleccion, éste es un buen método para no tener que llenar el SELECTION-TABLE.


    DATA: t_selhkont LIKE rsparams OCCURS 0 WITH HEADER LINE.

    CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
      EXPORTING
        curr_report           = sy-repid
*   IMPORTING
*     SP                    =
      TABLES
        selection_table       = t_selhkont
      EXCEPTIONS
        not_found             = 1
        no_report             = 2
        OTHERS                = 3.

      SUBMIT <reporte>
             WITH SELECTION-TABLE t_selhkont
      AND RETURN.

20111212

Cachureos SAP.: Respaldar Programas ABAP de Forma FULL (incluyendo...

Copiado de:
Cachureos SAP.: Respaldar Programas ABAP de Forma FULL (incluyendo Dynpros):

Siempre es recomendable respaldar lo que uno Desarrolla en SAP, ya que nunca se sabe que  puede ocurrir, a mí ya me paso que en un cliente se cayeron las maquinas y fue necesario levantar un backup algo desactualizado,  pero bueno, aquí les dejo una forma de prevenir.
Los amigos de http://www.dalestech.com, tienen una excelente aplicación de uso gratuito en la opción solutions “MASS DOWNLOAD”, aprovecho de dar gracias a dalestech por esta excelente herramienta.


UPDATE: Página oficial del desarrollador: http://www.dalestech.com/products/massdownload.htm



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

ABAP HR: Mis tips en construcción de Infotipos

User Command.
IF psyst-ioper EQ 'INS' OR "INSERTAR (F5)
   psyst-ioper EQ 'MOD' OR "MODIFICAR (F6)
   psyst-ioper EQ 'DIS' OR "VISUALIZAR (F7)
   psyst-ioper EQ 'DEL'.   "BORRAR (SHIFT+F2)

...
ENDIF.


Manejo de Enlaces Temporales (todos los Infotipos)
IMG:
Gestión de personal
    Adaptación de procesos de trabajo
        Infotipos
            (X) Infotipos


Enlaces Temporales: Tabla T528A - ZEITB
    1: El infotipo debe existir continuamente, sin espacios en blanco y sólo una vez por vez.
    Ej: 0002.
    T: El enlace temporal depende del subtipo y se ha de extraer de la tabla de subtipos. (Sólo puede existir 1 por vez, con espacio en blanco)
    Ej: 0014, 0015.   
    Z: Se trata en este caso de los infotipos de la Gestión de tiempos. Su enlace temporal se determina (entre otros) mediante la vista Absentismo: Control     general (V_T554S_I) y la verificación de colisión de la vista Reacción de enlace temporal para infotipos de la Gestión de tiempos (V_T554Y).
    (Pueden existir multiples simultaneamente, saltados)
    Ej: 2012, 2001.
     

ABAP Tips: Leer Ordenes de Transporte y Status

Función que permite obtener órdenes de transporte y su status según parámetros de selección indicados en las tablas titular, ordenes, con retorno en status_ordenes.

ABAP HR Tips: Liquidación Standard a PDF

Tomar la liquidación obtenida desde el resultado de nómina y pasarlo a PDF.

ABAP HR: Leer Vías de Evaluación

Leer Vías de evaluación

CALL FUNCTION 'RH_STRUC_GET'
  EXPORTING
    act_otype              = <tipo objeto padre>
    act_objid              = <id objeto padre>
    act_wegid              = <vía de evaluación>
   ACT_PLVAR              = '01'
*   ACT_BEGDA              = SY-DATUM
*   ACT_ENDDA              = SY-DATUM
   ACT_TDEPTH             = <0: Todos los niveles ; 2 - N: Profundidad>
*   ACT_TFLAG              = 'X'
*   ACT_VFLAG              = 'X'
*   AUTHORITY_CHECK        = 'X'
*   TEXT_BUFFER_FILL       =
*   BUFFER_MODE            =
 TABLES
   RESULT_TAB             =
   RESULT_OBJEC           =
   RESULT_STRUC           =
 EXCEPTIONS
   NO_PLVAR_FOUND         = 1
   NO_ENTRY_FOUND         = 2
   OTHERS                 = 3.


La ruta IMG para conocer las vías de evaluación es:

- Gestión de Personal
  - Gestión de Organización
    - Parametrizaciones Básicas
      x Actualizar Vías de Evaluación

ABAP HR: Leer infotipos anidados (Ej: IT0041)

Método alternativo para leer ese tipo de Infotipos sin tener que ocupar el DO ... VARING ...NEXT


    DATA: cadena(15),
          conta(2) TYPE n VALUE 00.
    FIELD-SYMBOLS: <dar> LIKE p0041-dar01,
                   <dat> LIKE p0041-dat01.
    DO 12 TIMES.
      ADD 1 TO conta.
      CONCATENATE 'p0041-dar' conta INTO cadena.
      ASSIGN (cadena) TO <dar>.
      CHECK <dar> = '01'.
      CLEAR cadena.
      CONCATENATE 'p0041-dat' conta INTO cadena.
      ASSIGN (cadena) TO <dat>.
      ti_details-fpago = <dat>.
    ENDDO.

ABAP Tips: Volver a abrir una Orden de Transporte

Un truco sucio pero necesario a veces (considere las limitaciones del mandante) para devolver una OT a su estado original.


report ztest999.
tables e070.


PARAMETERS s_trkorr LIKE e070-trkorr OBLIGATORY.

update e070
set trstatus = 'D' where trkorr = s_trkorr.

write sy-subrc.

Macros en ABAP HR

La utilización de macros en el código de un objeto, consigue encapsular ciertas sentencias y mejora la modularización. Originariamente, una macro (o macroinstrucción) se puede definir con un conjunto de sentencias más sencillas que quedan alojadas en memoria cuando se ejecuta el programa (a diferencia de una función, que es llamada de forma dinámica).


Para ver el código de una macro en SAP, se debe acceder a la transacción SE11 y visualizar el contenido de la tabla TRMAC. Una vez visualizado el código, es frecuente que dentro se hagan llamadas a rutinas de programa estándar (perform f_rutina (programa_estandard) ).
 

ABAP Tips: Mis Programas / Transacciones Interesantes

Algunos programas y transacciones interesantes, que se van encontrando en Internet (siempre en proceso de ampliación).


REPORTES:

  • RSTXTRAN: Enviar textos standard (SO10) a Orden de Transporte
  • RSTXTCPY: Copiar textos standard (SO10) entre mandantes
  • RSRSCAN1: permite obtener la lista de programas que contienen el string, como también la lista de apariciones del mismo dentro de un programa selecccionado. 
  • RSBTCDEL: Este programa permite borrar jobs ya programados.

TRANSACCIONES:

  • SO10   Manejar Textos Standard
  • SE30    Análisis de Rendimiento
  • SE51    Screen Painter (ModulPool)
  • SE71    Form Painter (Sapscript)
  • SE41    Copiar Status-Gui entre programas
  • SE78    Imágenes
  • SE91    Clase de Mensajes 
  • SCC1   Copiar Datos de OT entre Mandantes
  • SM04   Ver sesiones de usuario activas
  • SM50   Ver procesos activos
  • SM12    Desbloquear objetos
  • SU53    Verificar objetos no autorizados

NOTAS MENTALES
  • SQL: MODIFY (Crear o Actualizar) ; UPDATE (Sólo Actualizar)

    ABAP Tips: Capturar Spool a PDF

    Reporte que procesa otros y muestra la salida en PDF.

    ABAP Tips: Programa para carga masiva de cualquier tabla

    Este programa carga los datos en cualquier Tabla especificados en la pantalla de selección.
    El Archivo debe ser txt, delimitado por TAB y el orden de los campos en el archivo plano debe
    corresponder con los campos de la tabla.
    Valores en pesos sin puntos ni comas
    Fechas sin puntos

    ABAP: Descargar tabla en archivo CSV

    Un sencillo ejemplo de descarga de tabla interna en formato CSV. En la Plantilla de Batch Input aparece un ejemplo para la búsqueda de archivo en el equipo (P_FILE).

    *&---------------------------------------------------------------------*
    *&      Form  DESCARGA_ARCHIVO
    *&---------------------------------------------------------------------*
    FORM descarga_archivo .
      DATA: t_csv TYPE truxs_t_text_data.

      CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
        TABLES
          i_tab_sap_data       = t_salida2 "datos origen
        CHANGING
          i_tab_converted_data = t_csv
        EXCEPTIONS
          conversion_failed    = 1
          OTHERS               = 2.
      IF sy-subrc <> 0.
        MESSAGE 'Error CSV' TYPE 'E'.
      ENDIF.


      DATA archivo TYPE string.
      archivo = p_file.  "ruta archivo leído en selection-screen

      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          filename                = archivo
          write_field_separator   = ';'
        TABLES
          data_tab                = t_csv
        EXCEPTIONS
          file_write_error        = 1
          no_batch                = 2
          gui_refuse_filetransfer = 3
          invalid_type            = 4
          no_authority            = 5
          unknown_error           = 6.

    ENDFORM.                    " DESCARGA_ARCHIVO

    ABAP: Plantilla ALV LVC editable con ejemplos básicos

    Esta plantilla contiene las rutinas básicas para utilizar un LVC modificable, además de unos ejemplos de bloqueo de registros y captura de modificaciones en pantalla y PF-STATUS.

    Debido a que es ejemplo, muchas partes no compilarán si se copia/pega.

    ABAP: Traspasar montos a Currency independiente del formato.

    Método para mover un monto desde pantalla a formato interno Currency.


    *&---------------------------------------------------------------------*
    *&      Form  mueve_monto
    *&---------------------------------------------------------------------*
    FORM mueve_monto USING a waers
    CHANGING b.

      DATA: input TYPE bapicurr-bapicurr.
      DATA: l_dcpfm TYPE usr01-dcpfm.
      DATA: output(15) TYPE p DECIMALS 2.
      DATA: l_a TYPE string.

      l_a = a.
      CONDENSE l_a NO-GAPS.

      IF NOT l_a IS INITIAL.

        SELECT SINGLE dcpfm
        INTO l_dcpfm
        FROM usr01
        WHERE bname = sy-uname.

        IF l_dcpfm = 'X'. " Separador decimal es punto
          TRANSLATE l_a USING ', ' .
          CONDENSE l_a NO-GAPS.
        ELSE. " Separador decimal es coma
          TRANSLATE l_a USING '. ' .
          CONDENSE l_a NO-GAPS.
          TRANSLATE l_a USING ',.'.
        ENDIF.

        input = l_a.

        CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
          EXPORTING
            currency             = waers
            amount_external      = input
            max_number_of_digits = 20
          IMPORTING
            amount_internal      = output.

        MOVE output TO b.
      ENDIF.

    ENDFORM. "mueve_monto

    ABAP: Plantilla Batch Input

    Ejemplo simple que sirve de plantilla para cargas mediante Batch Input