Función que obtiene el contenido/datos de un LAYOUT de ALV

17 12 2020

LT_DBDATA_READ_FROM_LTDX es una función que nos devuelve todo el contenido/datos que tiene un LAYOUT de un reporte ALV.

Para su ejecución hay que llenar la estructura IS_VARKEY con:
– Campo REPORT: completar nombre técnico del programa/reporte ALV.
– Campo VARIANT: completar con el nombre del LAYOUT.
– Campo Type: completar con F.

Tras la ejecución la función devuelve 4 tablas:

  • T_DBFIELDCAT: Devuelve toda la información del Field Catalog de ese Layout en particular. Por ejemplo qué columnas son visibles y cuáles ocultas, posición de las columnas, etc.
  • T_DBSORTINFO: Devuelve si para ese Layout en particular se aplicó algún tipo de SORT (ordenamiento) en el reporte.
  • T_DBFILTER: Devuelve si para ese Layout en particular se aplicó algún tipo de filtro en el reporte.
  • T_DBLAYOUT: Devuelve si el ALV tiene alguna configuración especial como ser la opción ZEBRA o Column Width Optimization, etc.


Technorati tags:





Función para cancelar/reversar facturaciones de ventas (SD)

28 02 2019

Con la bapi BAPI_BILLINGDOC_CANCEL1 podemos cancelar/reversar documentos de facturación del área de ventas (SAP SD).

Esta bapi cumple la misma labor que la transacción VF11.


Este es el código:

DATA:
lv_doc         LIKE bapivbrksuccessbill_doc,
lv_date       TYPE bf_datm1eb,
t_return      TYPE TABLE OF bapireturn1,
t_success    TYPE TABLE OF bapivbrksuccess.

lv_doc  = vbeln. «Número de factura SD que se quiere cancelar.
lv_date = fecha. «Fecha en la que se contabilizará la cancelación.

* Función que reversa el documento
CALL FUNCTION BAPI_BILLINGDOC_CANCEL1
EXPORTING
billingdocument = lv_doc
billingdate  = lv_date
*testrun         =
*no_commit   =
TABLES
return  = t_return
success = t_success.

*La tabla t_return devuelve todos los mensajes ocurridos durante la cancelación.
*La tabla t_succes devuelve, entre otros datos, el número de la cancelación.


Technorati tags:





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:





C14Z_DYNP_READ_FIELD – Función para leer campos de una DYNPRO

29 04 2010

La función C14Z_DYNP_READ_FIELD sirve para leer campos de una Dynpro o Pantalla.
No necesariamente de la dynpro en que nos encontramos. Puede ser de una pantalla anterior.

Esto nos puede ser muy útil, como fue en mi caso, para el desarrollo de Field Exits.


A continuación el código:

* A I_PROGRAM hay que pasarle el nombre del programa.
* A I_DYNPRO se le pasa el número de pantalla o dynpro.
* Y I_FIELDNAME el campo del cual queremos conocer su contenido.
* La función nos devuelve en la variable W_EVAL el valor encontrado.

DATA: W_EVAL LIKE DYNPREAD-FIELDVALUE.

CALL FUNCTION ‘C14Z_DYNP_READ_FIELD’                                    
EXPORTING                                                              
   I_PROGRAM       = ‘SAPF110O’                                         
   I_DYNPRO        = ‘0102’                                             
   I_FIELDNAME     = ‘REGUH-LAUFD’                                      
   I_FLG_STEPLOOP  = ‘X’                                                
CHANGING                                                               
   E_VALUE         = W_EVAL.   


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:





Cómo obtener los Status de Sistema y Usuario

28 06 2008

En todo tipo de órdenes… ya sean de fabricación, de trabajo, etc. Una de las cosas que identifican en qué estado se encuentran las órdenes son los status de sistema y de usuario:
image 

Para cuando tengan que programar reportes donde deben mostrar o saber los status de las órdenes pueden utilizar las siguientes 2 funciones:

  • Status de sistema: STATUS_TEXT_EDIT
  • Status de usuario: ALM_ME_READ_USER_STATUS

Technorati tags:





Enviar e-mails desde SAP

23 01 2008

Con la función SO_DOCUMENT_SEND_API1 se pueden enviar mails desde nuestros programas.
Hay que tener en cuenta que una vez que se ejecuta la función, el email debe ser liberado con la transacción SCOT (guía de configuración).


Technorati tags:





Leer campos de texto en SAP

24 11 2007

Para poder leer los campos de texto se usa la función read_text_inline. Esto generalmente lo usamos en formularios para mostrar textos de cabecera o de posición por ejemplo.


Para saber como llenar los campos, vamos al lugar donde cargamos el texto:
image

Una vez ahí clickeamos en el menú Pasar a —> Cabecera…
image

VG_INLINE  suele tener el valor 1 (VG_INLINE = ‘1’.)

 

El código que tenemos que agregar es:

TYPES: it_lin LIKE tline .

DATA:   VG_INLINE TYPE CHAR1,
             VG_NAME LIKE THEAD-TDNAME,
             IT_LINES TYPE TABLE OF IT_LIN,
             IT_INLINE TYPE TABLE OF IT_LIN,
             VG_ID LIKE THEAD-TDID,
             VG_LANG LIKE THEAD-TDSPRAS,
             VG_OBJ LIKE THEAD-TDOBJECT,

CALL FUNCTION ‘READ_TEXT_INLINE’
  EXPORTING
    ID                        = VG_ID
    INLINE_COUNT    = VG_INLINE
    LANGUAGE          = VG_LANG
    NAME                  =  VG_NAME
    OBJECT               = VG_OBJ
  TABLES
    INLINES               = IT_INLINE
    LINES                  = IT_LINES
EXCEPTIONS
   ID                              = 1
   LANGUAGE                = 2
   NAME                        = 3
   NOT_FOUND              = 4
   OBJECT                     = 5
   REFERENCE_CHECK   = 6
   OTHERS                     = 7.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* En la tabla IT_LINES nos queda el texto guardado


Technorati tags:





Matchcode Browser (buscador de directorios)

22 11 2007

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


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

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

*Llamamos a la función que abre el browser apretando el matchcode
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
   CALL FUNCTION ‘F4_FILENAME’
      EXPORTING
         PROGRAM_NAME = SY-REPID
         DYNPRO_NUMBER = SY-DYNNR
         FIELD_NAME = ‘PATH’
      IMPORTING
         FILE_NAME = P_FILE .


Technorati tags:





Download de archivo con formato CSV (campos separados por coma)

21 11 2007

Usando el módulo de función SAP_CONVERT_TO_CSV_FORMAT vamos a poder convertir nuestra tabla interna en una tabla con formato de separación por coma. Para luego poder generar un archivo.


Veamos el siguiente ejemplo:

*Declaramos el Type pool para la tabla de salida
TYPE-POOLS: truxs.

*Declaración de la tabla interna donde vamos poner los datos
DATA: BEGIN OF IT_TABLA1 OCCURS 0,
                  campo1  LIKE tabla-campo1,
                  campo2  LIKE tabla-campo2,
                  campo3  LIKE tabla-campo3,
           END OF IT_TABLA1.

*Declaración de la tabla con formato CSV
DATA: IT_TABLA2 TYPE truxs_t_text_data.

 

*Luego de llenar la tabla IT_TABLA1 con los datos
*Convertimos la tabla a formato CSV
CALL FUNCTION ‘SAP_CONVERT_TO_CSV_FORMAT’
    EXPORTING
       i_field_seperator = ‘;’
    TABLES
       i_tab_sap_data = IT_TABLA1

    CHANGING
       i_tab_converted_data = IT_TABLA2
    EXCEPTIONS
       conversion_failed = 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.

*Hacemos la bajada del archivo utilizando la tabla
*que obtuvimos en el paso anterior.
CALL FUNCTION ‘GUI_DOWNLOAD’
    EXPORTING
       filename = ‘C:\prueba.txt’
    TABLES
       data_tab = IT_TABLA2

    EXCEPTIONS
       FILE_WRITE_ERROR = 1
       NO_BATCH = 2
       GUI_REFUSE_FILETRANSFER = 3
       INVALID_TYPE = 4
       NO_AUTHORITY = 5
       UNKNOWN_ERROR = 6.


Technorati tags:





Mostrar importe en letras

20 11 2007

A la siguiente función vamos a poder pasarle en una variable un monto (importe) y la misma nos devolverá en una estructura el importe escrito en letras (el monto en texto).

Esto suele ser muy útil sobre todo en formularios donde debemos dejar explícitos los precios en letras


DATA: IMPORTE_LETRAS TYPE SPELL.

CALL FUNCTION ‘SPELL_AMOUNT’
     EXPORTING
        AMOUNT = VG_MONTO    «importe
        CURRENCY = ‘USD’           «moneda
        LANGUAGE = SY-LANGU   «idioma en que devuelve el texto
     IMPORTING
        IN_WORDS = IMPORTE_LETRAS
     EXCEPTIONS
        NOT_FOUND = 1
        TOO_LARGE = 2
        OTHERS = 3.

* IMPORTE_LETRAS-WORD = tendrá el texto de la parte entera
* IMPORTE_LETRAS-IN_WORDS = tendrá el texto de la parte decimal.


Technorati tags:





Función para sumarle meses a una fecha

17 11 2007

La siguiente función sirve para sumarle/agregarle meses a una fecha.

A la función le pasamos como parámetros una fecha de entrada (inicial) y un número de meses. La función nos devolverá una fecha que será el resultado de agregar el número de meses a la fecha inicial.


*——————————————————————————-
*LV_DATE_ENT : Fecha de entrada a la que le calculo los meses
*LV_MES: Cantidad de meses que le sumo a LV_DATE_ENT
*LV_DATE_SAL : Fecha que me devuelve la función

*——————————————————————————-

CALL FUNCTION ‘HR_PSD_DATES_ADD_MONTHS’
    EXPORTING
      V_DATE       = LV_DATE_ENT
      V_MONTHS     = LV_MES
    IMPORTING
      E_DATE       = LV_DATE_SAL
    EXCEPTIONS
      NOT_POSITIVE = 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.


Technorati tags:





WS_EXECUTE – Función para ejecutar un programa desde SAP

7 11 2007

WS_EXECUTE es una función que nos permite ejecutar cualquier programa instalado en nuestra computadora desde SAP. Cabe aclarar que aquel programa que queramos correr debe permitir parámetros MS-DOS.

En el siguiente ejemplo voy a mostrar como zippear (comprimir) dos archivos desde SAP. Como resultado obtendremos un archivo WinZip que contendrá dos archivos de texto.
Comprimiremos el archivo 1.txt y el archivo 2.txt, y el resultado será el archivo destino.zip.

Parámetros que acepta WinZip desde MS-DOS: http://www.memecode.com/docs/winzip.html

Rutas de los archivos:

  • C:1.txt
  • C:2.txt
  • C:destino.zip

 

Código:

CALL FUNCTION ‘WS_EXECUTE’
    EXPORTING
       * DOCUMENT = ‘ ‘
       * CD = ‘ ‘
       COMMANDLINE = ‘ -min -a c:destino.zip c:1.txt c:2.txt’
       * INFORM = ‘ ‘
       PROGRAM = ‘winzip32.exe’
       * STAT = ‘ ‘
       * WINID = ‘ ‘
       * OSMAC_SCRIPT = ‘ ‘
       * OSMAC_CREATOR = ‘ ‘
       * WIN16_EXT = ‘ ‘
       * EXEC_RC = ‘ ‘
    * IMPORTING
       * RBUFF =
    EXCEPTIONS
       FRONTEND_ERROR = 1
       NO_BATCH = 2
       PROG_NOT_FOUND = 3
       ILLEGAL_OPTION = 4
       GUI_REFUSE_EXECUTE = 5
       OTHERS = 6 .

IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.


Technorati tags:





Calcula fecha a futuro o pasado

20 10 2007

Esta función calcula una fecha según la cantidad de días que se le pase por parametro al campo ANZAHL_TAGE. Se pueden calcular días anteriores o futuros.


WRITE P_FECHA TO LV_FECHA DD/MM/YYYY.
PERFORM RESTAR_DIA CHANGING LV_FECHA LV_FECHA_SAL.

*&———————————————————————*
*& Form RESTAR_DIA
*&———————————————————————*
* llamo a la función que le resta un día a la fecha
* pasada por parámetro
*———————————————————————-*
* –>P_LV_FECHA text
*———————————————————————-*
FORM RESTAR_DIA CHANGING P_LV_FECHA P_LV_FECHA_SAL.

   CALL FUNCTION ‘DATE_IN_FUTURE’
    EXPORTING
     ANZAHL_TAGE = ‘-1’ «un día atrás
     IMPORT_DATUM = P_LV_FECHA «fecha a la que le quiero restar un dia
    IMPORTING
     * EXPORT_DATUM_EXT_FORMAT = P_LV_FECHA_SAL
     EXPORT_DATUM_INT_FORMAT = P_LV_FECHA_SAL. «fecha que se obtiene

ENDFORM. » RESTAR_DIA


Technorati tags:





Completar o quitar ceros a la izquierda de una variable

17 10 2007

* Función que saca los ceros a la izquierda de una variable
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
 EXPORTING
  INPUT = VG_VARIABLE
 IMPORTING
  OUTPUT = VG_VARIABLE.

* Función que completa con ceros a la izquierda de una variable
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
 EXPORTING
  INPUT = VG_VARIABLE
 IMPORTING
  OUTPUT = VG_VARIABLE.


Technorati tags: