Variable Compuesta

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Irua
    Member
    • jun
    • 83

    #1

    Variable Compuesta

    Hola

    Si por favor alguien me puede orientar de como se estructura una variable que me traiga solo algunos caracteres de otras variables,es decir necesito que la variable x de solo 12 caracteres este compuesta por Inicial del nombre, codigo de empleado y el resto con el apellido, ejemplo: ISandov15830, que hace referencia a Nombre: Ignacio, Apellido: Sandoval, Codigo: 15830


    saludos y mil gracias
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    hola, podes usar una tabla interna.

    ejemplo

    data: begin of t_persona occurs 0,
    inicial type c,
    codigo(6) type c,
    apellido(6) type c,
    end of t_persona.


    t_persona-inicial = 'I'.
    t_persona-codigo = 'Sandov'.
    t_persona-apellido = '15830'.
    append t_persona.
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • Garces
      Senior Member
      • ago
      • 321

      #3
      Originalmente publicado por Irua
      Hola

      Si por favor alguien me puede orientar de como se estructura una variable que me traiga solo algunos caracteres de otras variables,es decir necesito que la variable x de solo 12 caracteres este compuesta por Inicial del nombre, codigo de empleado y el resto con el apellido, ejemplo: ISandov15830, que hace referencia a Nombre: Ignacio, Apellido: Sandoval, Codigo: 15830


      saludos y mil gracias

      Hola Irua...

      Mira... lo que tienes que hacer es lo siguente...
      La instrucción genérica para obtener caracteres de una cadena es:

      destino = origen+a(b).

      donde:
      'origen' es la cadena de donde quieres obtener los caracteres.
      'destino' es la cadena donde quieres depositar tu subcadena.
      'a' es la posición inicial desde donde quieres obtener los caracteres.
      'b' es el número de caracteres a extraer.

      Para tu caso, el código sería algo así:

      DATA:
      v_nombre TYPE STRING,
      v_inicial TYPE C,
      v_apellido TYPE STRING,
      v_ap_corto(5) TYPE C,
      v_codigo(5) TYPE C,
      v_x(12) TYPE C.

      v_nombre = 'Ignacio'.
      v_apellido = 'Sandoval'.
      v_codigo = '15830'.

      v_inicial = v_nombre+0(1).
      v_ap_corto = v_apellido+0(5).

      CONCATENATE v_inicial v_ap_corto v_codigo INTO x.


      Espero haya sido de tu ayuda...
      Saludos...
      Miguel Ángel Garcés Ramírez

      Comentario

      • Irua
        Member
        • jun
        • 83

        #4
        gracias funciono perfecto

        Comentario

        • Irua
          Member
          • jun
          • 83

          #5
          otra variable

          Estoy tratando de realizar otra variable compuesta, tomando los datos de otra tabla o variable, es decir de la variable o del campo de la tabla x solo quiero el primer caracter, se que la sintaxis
          DATA: BEGIN OF T_PA0002 OCCURS 0,
          T_NACHN LIKE PA0002-NACHN,
          T_PERNR LIKE PA0002-PERNR,
          T_VORNA LIKE PA0002-VORNA,
          T_inicial = T_NACHN+0(1).
          END OF T_PA0002.

          pero me da error


          gracias

          Comentario

          • Garces
            Senior Member
            • ago
            • 321

            #6
            Originalmente publicado por Irua
            Estoy tratando de realizar otra variable compuesta, tomando los datos de otra tabla o variable, es decir de la variable o del campo de la tabla x solo quiero el primer caracter, se que la sintaxis
            DATA: BEGIN OF T_PA0002 OCCURS 0,
            T_NACHN LIKE PA0002-NACHN,
            T_PERNR LIKE PA0002-PERNR,
            T_VORNA LIKE PA0002-VORNA,
            T_inicial = T_NACHN+0(1).
            END OF T_PA0002.

            pero me da error


            gracias
            Lo que pasa es que abap no permite asignar ningún valor a una varible en su declaración.

            Lo que deberías hacer es lo siguiente:

            * Declaración de la tabla
            DATA: BEGIN OF T_PA0002 OCCURS 0,
            T_NACHN LIKE PA0002-NACHN,
            T_PERNR LIKE PA0002-PERNR,
            T_VORNA LIKE PA0002-VORNA,
            T_inicial TYPE C,
            END OF T_PA0002.

            * Luego debes llenar la tabla interna con los datos correspondientes excepto T_inicial que la llenarás después...
            * Después debes hacerle un LOOP a la tabla interna...

            LOOP AT T_PA0002.
            T_inicial = T_NACHN+0(1).
            MODIFY T_PA0002 INDEX sy-tabix.
            ENDLOOP.

            Saludos...
            Miguel Ángel Garcés Ramírez

            Comentario

            • Irua
              Member
              • jun
              • 83

              #7
              Muchas Gracias Miguel Me Sacaste De Un Apuro

              Comentario

              Trabajando...