Set de datos SAP

Los Set de datos sirven para guardar un grupo de datos o valores los cuales deberían ser constantes en una tabla estándar, con datos transportables a los diferentes mandantes

Crear Set de datos:
Para ello nos vamos a la transacción GS01

GS01_0

Lo común es utilizar el tipo de set «Set Básico», también cabe destacar que el set se crea por mandante, esto quiere decir que si en un mandante no llega a crearse tendrías problema con el desarrollo transportado.

Para leer los datos del set en un programa se utiliza la función «G_SET_FETCH» o buscando los datos directamente en la tabla «SETLEAF»

*Tablas internas que almacenarán los datos
DATA: it_formula_lines TYPE TABLE OF rgsbf,
it_set_lines_basic TYPE TABLE OF rgsbv,
it_set_lines_data TYPE TABLE OF rgsb3,
it_set_lines_multi TYPE TABLE OF rgsb2,
it_set_lines_single TYPE TABLE OF rgsb1,

* Estructuras creadas para ser usadas si es necesario el
wa_formula_lines TYPE rgsbf,
wa_set_lines_basic TYPE rgsbv,
wa_set_lines_data TYPE rgsb3,
wa_set_lines_multi TYPE rgsb2,
wa_set_lines_single TYPE rgsb1,

* Rango creado para hacer consultas o para ser usado como parte de una sentencia lógica
rg_belnr TYPE RANGE OF bkpf-belnr,
wa_belnr LIKE LINE OF rg_belnr.

* Esta función trae el rango llamado ZFI_00013
CALL FUNCTION ‘G_SET_FETCH’
EXPORTING
setnr = ‘ZFI_00013’
TABLES
formula_lines = it_formula_lines
set_lines_basic = it_set_lines_basic
set_lines_data = it_set_lines_data
set_lines_multi = it_set_lines_multi
set_lines_single = it_set_lines_single
EXCEPTIONS
no_authority = 1
set_is_broken = 2
set_not_found = 3
OTHERS = 4
.
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 it_set_lines_basic INTO wa_set_lines_basic.
wa_belnr-sign = ‘I’.
wa_belnr-option = ‘BT’.
wa_belnr-low = wa_set_lines_basic-from.
wa_belnr-high = wa_set_lines_basic-to.
APPEND wa_belnr TO rg_belnr.
ENDLOOP.

Buscar String dentro de cualquier código Z o Y

Para realizar la búsqueda de un String (cadena de caracteres) en cualquier programa, función, clase, entre otros utilizaremos el programa RPR_ABAP_SOURCE_SCAN.

Para realizar la ejecución vamos a la transacción SE38 o SA38 (Para el funcional) buscamos el programa RPR_ABAP_SOURCE_SCAN y ejecutamos.

Ejecutar_buscar_string

Ingresamos el String que necesitamos encontrar y ejecutamos
Recomendación: agregar un paquete de programas para reducir el tiempo de búsqueda.

Buscar_string_0

Una vez finalizado nos muestra una lista con los programas donde se encuentran el String deseado.

Buscar_string_1

Cargar Excel a SAP XSL – XSLX

DATA: it_raw TYPE TRUXS_T_TEXT_DATA.

PARAMETERS:
* archivo de entrada
p_arch LIKE rlgrap-filename OBLIGATORY.

CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
def_filename = ‘ ‘
def_path = p_arch
mask = ‘,..’
mode = ‘O’
title = ‘Archivo Excel’
IMPORTING
filename = p_arch
EXCEPTIONS
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.

CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP’
EXPORTING
* i_line_header = ‘X’
i_tab_raw_data = it_raw » WORK TABLE
i_filename = p_arch
TABLES
i_tab_converted_data = it_excel[] «ACTUAL DATA
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc ne 0.

ENDIF.

El customizing no esta bien actualizaso n° de mensaje: SE729

Para dar solución al siguiente mensaje en el sistema tras ejecutar la tx ML81N «EL CUSTOMIZING NO ESTA BIEN ACTUALIZADO N MENSAJE: SE729»

ELIMINAR LOS SIGUIENTES REGISTROS DE LA TABLA T162V POR LA SM30

0 118 ESLL-PER_SDATE
0 119 ESLL-PER_EDATE

1 118 ESLL-PER_SDATE
1 119 ESLL-PER_EDATE

2 118 ESLL-PER_SDATE
2 119 ESLL-PER_EDATE

3 119 ESLL-PER_EDATE
3 120 ESLL-EXTERNALID

4 118 ESLL-PER_SDATE
4 119 ESLL-PER_EDATE

5 118 ESLL-PER_SDATE
5 119 ESLL-PER_EDATE

Declarar work area o area de trabajo con sap hana

Para crear un área de trabajo dentro de un loop utilizando HANA, se declara con @DATA aunado a ello el nombre que se le quiere colocar al área de trabajo.

El area de trabajo solo existira dentro del loop, una vez termine su ejecución dejara de existir en memoria optimizando el código.

LOOP AT it_tabla INTO @DATA(wa_tabla).
*
ENDLOOP.

 

select hana o crear tabla interna en select

Ahora que SAP tiene la base de datos HANA podemos trabajar con mas libertad al momento de realizar querys, pasarle parametros y crear en memoria tablas internas al momento de ejecutar un query, esto nos permite mantener la memoria mas optimizadas.

SELECT *
INTO TABLE @DATA(it_knvp)
FROM knvp
WHERE kunnr IN @ra_kunnr
AND ( parvw = ‘ZS’ OR parvw = ‘VE’ ).

 

SELECT bukrs AS col01, belnr AS col02, gjahr AS col03,
budat AS col04, kursf AS col05 FROM bkpf
INTO TABLE @DATA(it_bkpf)
WHERE monat = @lv_monat
AND gjahr = @lv_gjahr.