Autor Tema: AYUDA - cojer 3 caracter del final de cadena.  (Leído 5901 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado FuryNocturn

  • Novato
  • *
  • Mensajes: 14
    • Ver Perfil
AYUDA - cojer 3 caracter del final de cadena.
« en: 11 de Diciembre de 2017, 04:59:55 pm »
buenas tengo que cojer el 3 caracter del final de una cadena.

el poblema es que el campo es de 15 posiciones typo c.
y lo que se registra en el valor que extrae de un XLS, el cual se corresponde con el sueldo del empleado.

el tema es que no todos ocupan lo mismo. uno cobra 750.25€ y otros cobra 2120.75€

lo que quiero es hacer que comprueve que el 3 caracter del final sea un '.' y si no lo es que ponga un '.'
aparte si contiene letras que no rellene ya que dara error.

este es el codigo que tengo por el momento.
Código: [Seleccionar]
FORM verificar_datos .
  CLEAR gs_datos_xls.
  LOOP AT gt_datos_xls INTO gs_datos_xls.
    REPLACE ',' WITH '.' INTO gs_datos_xls-sueldo.
    IF gs_datos_xls-sueldo CA '0123456789' "AND gs_datos_xls-sueldo NS ','
      .
      gs_datos-nombre     = gs_datos_xls-nombre.
      gs_datos-apellidos  = gs_datos_xls-apellidos.
      gs_datos-direccion  = gs_datos_xls-direccion.
      gs_datos-sueldo     = gs_datos_xls-sueldo.

    ELSE.
      gs_datos-nombre     = gs_datos_xls-nombre.
      gs_datos-apellidos  = gs_datos_xls-apellidos.
      gs_datos-direccion  = gs_datos_xls-direccion.
      gs_datos-sueldo     = ''.
      gs_datos-incorrecto = 'X'.
    ENDIF.

    APPEND gs_datos TO gt_datos.
    CLEAR: gs_datos, gs_datos_xls.
  ENDLOOP.
ENDFORM.                    " VERIFICAR_DATOS

Desconectado molaci

  • Usuario Sr.
  • ****
  • Mensajes: 113
    • Ver Perfil
Re:AYUDA - cojer 3 caracter del final de cadena.
« Respuesta #1 en: 12 de Diciembre de 2017, 09:40:23 am »
Hola, prueba con la instrucción STRLEN que te devuelve la longitud de tu campo.

El código podría ser algo así... Y como tienes en tu código comprueba antes si viene una coma (,) punto (.), etc...



DATA: lf_long TYPE i. 
DATA: lf_pos  TYPE i.
DATA: lf_part1(10).
DATA: lf_part2(10).

lf_long  = STRLEN( tu_importe ).
lf_pos   = lf_long - 3.
lf_part1 = tu_importe(lf_pos).
lf_part2 = tu_importe+lf_pos(3).

CONCATENATE lf_part1 '.' lf_part2 INTO tu_importe.






Desconectado FuryNocturn

  • Novato
  • *
  • Mensajes: 14
    • Ver Perfil
Re:AYUDA - cojer 3 caracter del final de cadena.
« Respuesta #2 en: 12 de Diciembre de 2017, 05:36:07 pm »
gracias ya lo resolvi. despues de darle una tarde entera al coco me salio esto codigo.

Código: [Seleccionar]
IF gs_datos_xls-sueldo CA '0123456789'.
    SHIFT gs_datos_xls-sueldo RIGHT DELETING TRAILING space.

    IF gs_datos_xls-sueldo+12(1) = ','.

      DO 2 TIMES.
        REPLACE '.' IN gs_datos_xls-sueldo WITH '' .
      ENDDO.

      SHIFT gs_datos_xls-sueldo RIGHT DELETING TRAILING space.
      REPLACE ',' IN gs_datos_xls-sueldo+12(1) WITH '.' .

      IF gs_datos_xls-sueldo+8(1) = ','.
        gv_nerror = 5.
        gs_datos-sueldo = ''.
      ELSE.
        gv_nerror = 3.
        gs_datos-sueldo = gs_datos_xls-sueldo.
      ENDIF.

    ELSEIF gs_datos_xls-sueldo+12(1) = '.'.

      DO 2 TIMES.
        REPLACE ',' IN gs_datos_xls-sueldo WITH '' .
      ENDDO.

      SHIFT gs_datos_xls-sueldo RIGHT DELETING TRAILING space.

      IF gs_datos_xls-sueldo+8(1) = '.'.
        gv_nerror = 5.
        gs_datos-sueldo = ''.
      ELSE.
        gv_nerror = 0.
        gs_datos-sueldo = gs_datos_xls-sueldo.
      ENDIF.

    ELSE.
      IF gs_datos_xls-sueldo = 0.
        gv_nerror = 4.
        gs_datos-sueldo = gs_datos_xls-sueldo.
      ELSE.
        gv_nerror = 0.
        gs_datos-sueldo = gs_datos_xls-sueldo.
      ENDIF.
    ENDIF.
  ELSE.
    IF gs_datos_xls-sueldo = ''.
      gv_nerror = 2.
    ELSE.
      gv_nerror = 1.
    ENDIF.
    gs_datos-sueldo = ''.
  ENDIF.

Desconectado FuryNocturn

  • Novato
  • *
  • Mensajes: 14
    • Ver Perfil
Re:AYUDA - cojer 3 caracter del final de cadena.
« Respuesta #3 en: 14 de Diciembre de 2017, 05:50:55 pm »
PODÉIS CERRAR TEMA RESUELTO.