Documento FI en distintos LEDGERS

19 10 2011

En esta ocasión comparto la función FAGL_GET_DOC_DETAILS_OF_LEDGER que nos servirá para conocer un documento FI en otro LEDGER.
Porque dependiendo de la configuración del sistema es posible que el número de un documento FI sea distinto según el LEDGER. E incluso puede hasta variar el ejercicio. 

A la función FAGL_GET_DOC_DETAILS_OF_LEDGER hay que pasarle el LEDGER de destino; y la sociedad, documento y ejercicio.

image

 

Como resultado, en la estructura ES_DETAILS, obtendremos: el ejercicio, período y número de documento del LEDGER de destino.

image


Technorati tags:





Función para obtener las cc-nóminas (sueldo) de un empleado

22 09 2011

En el mundo de SAP HR, la cc-nómina ("Clave Concepto Nómina") es cada uno de los conceptos que componen el sueldo de un trabajador.

Estos conceptos se ven muy claros en un recibo de sueldo. Cada renglón con código, descripción y monto es un concepto; y por ende una cc-nómina.

Es decir: el sueldo es un concepto, las horas extras es otro concepto, etc, etc.


Si alguna vez nos toca hacer un programa donde necesitemos conocer el sueldo y/o composición de un empleado. Entonces la función HRCM_PAYROLL_RESULTS_GET nos será de muchísima utilidad para evitar el uso de base de datos lógicas de HR y su “engorrosa” codificación.
Ya que con sólo pasarle el número de legajo del trabajador y una fecha de inicio y fin, obtendremos una estructura completa de tablas con información del sueldo y sus cc-nóminas.

image

Por ejemplo en la estructura payroll_result_tab tendremos la tabla RT con el listado de cc-nóminas con sus respectivos montos:

image


Technorati tags:





Función SAVE_TEXT – Crear y guardar Textos en SAP

15 08 2008

Con la función SAVE_TEXT vamos a poder crear y completar campos de textos en SAP. Podremos llenar, por ejemplo, textos de cabecera y posición en forma masiva.


Vamos a necesitar algo de información previa. Para eso hay que ir al lugar donde ponemos el texto y clickeamos en el menú Pasar a —> Cabecera…

 

El código que tenemos que agregar es:

*Declaraciones para los textos.
DATA: it_header  TYPE thead,
           it_lines      TYPE TABLE OF tline.

         REFRESH it_lines.
         CLEAR it_header.

*—–>Texto para agregar       
        it_lines-tdline = ‘Este es un texto de cabecera’.
        APPEND wa_lines TO it_lines.

*—–>Completamos con los datos que obtuvimos arriba 
        it_header-tdobject = ‘VBBK’.  “VG_OBJ
        it_header-tdname = ‘0000000057’.  “VG_NAME
        it_header-tdid   = ‘ZCER’.  “VG_ID
        it_header-tdspras = ‘E’.  “VG_LANG
        it_header-tdlinesize = ‘072’.

*—->Llamamos a la función que nos completa el texto
        CALL FUNCTION ‘SAVE_TEXT’
          EXPORTING
            header          = it_header
            insert          = ‘X’
            savemode_direct = ‘X’
          TABLES
            lines           = it_lines
          EXCEPTIONS
            id              = 1
            language        = 2
            name            = 3
            object          = 4
            OTHERS          = 5.
        IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.

Como resultado obtenemos:


Technorati tags:





Función RZL_READ_DIR_LOCAL – Conocer contenido de un directorio

14 08 2008

Con la función RZL_READ_DIR_LOCAL podemos saber cuál es el contenido de un directorio del servidor en SAP.

Este es el código:

*-Declaro un parameter en el cual se completa la ruta del servidor del que queremos conocer su contenido
PARAMETERS:
            p_file TYPE rlgrap-filename OBLIGATORY DEFAULT ‘/data/’.

*-Variable para pasarle la ruta a la función
DATA: lv_name TYPE salfile-longname.

*->Levanto la lista de directorios
    lv_name = p_file.
    CALL FUNCTION ‘RZL_READ_DIR_LOCAL’
      EXPORTING
        name           = lv_name
      TABLES
        file_tbl       = it_filedir
      EXCEPTIONS
        argument_error = 1
        not_found      = 2
        OTHERS         = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

*Como resultado en la tabla interna it_filedir obtenemos todo el contenido, *ya sean subcarpetas o archivos, de la ruta del servidor que ingresamos *por parámetro.


Technorati tags:





Matchcode Browser Server (buscador de directorios del servidor)

13 08 2008

Con la siguiente función vamos a poder habilitar el matchcode para que abra un browser file (explorador de directorios) del servidor. Esto nos va a servir para hacer upload y download de archivos.

Acá el código que debemos ingresar en nuestros programas:

* Constantes locales
  CONSTANTS:lc_p TYPE c VALUE ‘P’,
                      lc_a TYPE dxfields-location VALUE ‘A’.

* Variables locales
  DATA: li_host TYPE STANDARD TABLE OF msxxlist,
             lw_host TYPE msxxlist,
             lv_path TYPE dxfields-longpath,
             lv_ubicacion(1) TYPE c,
             lv_abend  TYPE c.

*En P_FILE va a quedar guardada la ruta del archivo del servidor
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME.

*- Machcode busqueda de archivo del servidor
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*-Nombre del servidor
  CALL FUNCTION ‘RFC_GET_LOCAL_SERVERS’
    TABLES
      hosts         = li_host
    EXCEPTIONS
      not_available = 1
      OTHERS        = 2.

  IF sy-subrc IS INITIAL.

*-Nombre del servidor a la estructura
    CLEAR lw_host.
    READ TABLE li_host
               INTO lw_host
               INDEX 1.

*-Obtengo el path
    CALL FUNCTION ‘F4_DXFILENAME_TOPRECURSION’
      EXPORTING
        i_location_flag = lc_a
        i_server        = lw_host-name
      IMPORTING
        o_location_flag = lv_ubicacion
        o_path          = lv_path
        abend_flag      = lv_abend
      EXCEPTIONS
        rfc_error       = 1
        error_with_gui  = 2
        OTHERS          = 3.

*-Si se obtiene un path
    IF sy-subrc    IS INITIAL AND
       NOT lv_path IS INITIAL AND
       lv_abend    IS INITIAL.

*-Devuelvo ruta al parametro de selección
      p_file = lv_path.

    ENDIF.

  ENDIF.


Technorati tags:





Crear Matchcodes (ayudas) con una tabla interna.

28 11 2007

El próximo ejemplo sirve para crear ayudas (matchcodes) con una tabla interna de nuestro programa.
Así de simple, hacemos una búsqueda a alguna tabla y el resultado lo guardamos en una tabla interna que se la pasamos a la función F4IF_INT_TABLE_VALUE_REQUEST que nos va a mostrar la ayuda.

Quiero agradecer esta forma de crear ayudas a mi compañero y amigo Rodrigo (http://ramgv-sap.blogspot.com).


*En este ejemplo creo un select-option para un material. Cuya ayuda será *el nº de material para VBELN =  ‘0000000001’ y POSNR = ‘000010’.

TABLES: VBAP,
             DDSHRETVAL.

DATA: BEGIN OF IT_MATNR OCCURS 0,
               MATNR LIKE VBAP-MATNR,
               ARKTX LIKE VBAP-ARKTX,
           END OF IT_MATNR.

DATA: BEGIN OF IT_MATCH OCCURS 0,  “Esta tabla nos devuelve la ayuda
               SHLPNAME  LIKE DDSHRETVAL-SHLPNAME,
               FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
               RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
               FIELDVAL  LIKE DDSHRETVAL-FIELDVAL,
               RETFIELD  LIKE DDSHRETVAL-RETFIELD,
           END OF IT_MATCH.

SELECTION-SCREEN BEGIN OF BLOCK BLQ1 WITH FRAME TITLE TEXT-T01.
  SELECT-OPTIONS: S_MATNR FOR VBAP-MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLQ1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MATNR-LOW.
  SELECT MATNR
              ARKTX
      FROM VBAP
        INTO TABLE IT_MATNR
        WHERE VBELN EQ ‘0000000001’ AND
                    POSNR EQ ‘000010’.

  CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
    EXPORTING
      RETFIELD        = ‘MATNR’
      WINDOW_TITLE    = ‘Material’
      VALUE_ORG       = ‘S’
    TABLES
      VALUE_TAB       = IT_MATNR
      RETURN_TAB      = IT_MATCH
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.

  IF SY-SUBRC EQ 0.
    READ TABLE IT_MATCH INDEX 1.
    MOVE IT_MATCH-FIELDVAL TO S_MATNR-LOW.
  ENDIF.


Technorati tags:





Ayudas (matchcodes) para entradas en base al tipo de datos

27 11 2007

Generalmente cuando queremos agregar ayudas (matchcodes) vamos a la transacción SE11 y nos fijamos qué “Ayuda para búsqueda” tiene asociado el campo.

Pero muchas veces el matchcode es del tipo “Ayudas para entradas en base al tipo de datos”. En esos casos la ayuda se genera con una función.
Por tal motivo la solución es buscar alguna transacción que tenga el matchcode del campo que necesitamos y debuggueamos al momento de abrir la ayuda para encontrar la función.

A continuación voy a dejar un ejemplo para los campos LAUFD (Fecha de Ejecución) y LAUFI (ID Ejecución). Son parámetros muy comunes (Ej: transacción F110).


DATA: TLAUFK LIKE ILAUFK OCCURS 0 WITH HEADER LINE.

PARAMETERS:
            P_LAUFD LIKE F110V-LAUFD OBLIGATORY,   “Fecha de Ejecución
            P_LAUFI LIKE F110V-LAUFI OBLIGATORY.     “ID Ejecución

**Habilito con la tecla F4 el matchcode para el campo LAUFI
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAUFI.
  REFRESH TLAUFK.
  TLAUFK-LAUFK = SPACE.
  TLAUFK-SIGN = ‘I’.
  APPEND TLAUFK. 

  CALL FUNCTION ‘F4_ZAHLLAUF’
    EXPORTING
      F1TYP = ‘D’
      F2NME = ‘P_LAUFI’
    IMPORTING
      LAUFD = P_LAUFD
      LAUFI = P_LAUFI
    TABLES
      LAUFK = TLAUFK.

 

**Habilito con la tecla F4 el matchcode para el campo LAUFD
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAUFD.
  REFRESH TLAUFK.
  TLAUFK-LAUFK = SPACE.
  TLAUFK-SIGN = ‘I’.
  APPEND TLAUFK. 

CALL FUNCTION ‘F4_ZAHLLAUF’
    EXPORTING
      F1TYP = ‘D’
      F2NME = ‘P_LAUFI’
    IMPORTING
      LAUFD = P_LAUFD
      LAUFI = P_LAUFI
    TABLES
      LAUFK = TLAUFK.


Technorati tags: