Eliminar Simbolos Especiales en un string

Para eliminar simbolos especiales de una variable, utilizamos la subrutina «simbolos» realizando un llamado a la misma 

Perform simbolos USING variable_texto

                   CHANGING Salida.

FORM simbolos USING pi_input
CHANGING po_output.
DATA: lv_simbolos TYPE string VALUE ‘|+-*/=<>.,:;!?(){}[]@#$%^&*()_-{}[]:;»»<>./,’.
DATA: tamano TYPE i.
DATA: contador TYPE i.
DATA: cambio TYPE c.
tamano = strlen( lv_simbolos ).

WHILE contador < tamano.

cambio = lv_simbolos+contador(1).

REPLACE ALL OCCURRENCES OF cambio IN pi_input WITH space.

ADD 1 TO contador.

ENDWHILE.

po_output = pi_input.

ENDFORM.

Declaracion de Rangos / Ranges Declarations

Tenemos varias maneras para declarar los rangos

RANGES: rg_LFART FOR LIKP-LFART.

DATA: rg_LFART TYPE RANGE OF LIKP-lfart.

Podemos crear las areas de trabajo de las siguientes maneras

DATA rwa_lfart LIKE LINE OF ra_LFART.

Esta tabla contiene solo 4 campos escenciales

El campo SIGN solamente tiene 2 opciones para ingresar
I para incluir datos
E para excluir datos
rwa_lfart-sign = 'I'.

Para el campo Option se pueden utilizar los operadores logicos
«EQ», «NE», «GE», «GT», «LE», «LT», «CP» y «NP»
rwa_lfart-option = 'EQ'.

Los campos Low y High es en donde ingresaremos los datos que necesitamos en nuestro rango, podemos hacer una lista solamente llegando en campo LOW o hacer multiples rangos llegando ambos campos
rwa_lfart-low = 'Z001'.
rwa_lfart-high = 'Z010'.
append rwa_lfart to rg_lfart.

Contar cantidad de caracteres

Para contar la cantidad de caracteres de una variable se utiliza la palabra reservada STRLEN, esta te permite contar la cantidad de caracteres de una variable y llevarlo a un numero entero.

Por ejemplo

data: texto TYPE c LENGHT 6 VALUE ‘12345’,

contador_digitos TYPE I,

var_unpack(7) TYPE c.

contador_digitos = STRLEN( texto ).

IF contador_digitos LE 5 .

UNPACK texto TO var_unpack.

ENDIF.

WRITE var_unpack.

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