Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Select y Select a la misma tabla??

luis_gijon
Explorer
0 Kudos

Hola amigos,

os dejo este código por si alguien me puede ayudar:

SELECT SINGLE *

            FROM lfa1

            INTO ls_lfa1

           WHERE lifnr = ls_cesiones_aux-lifnr.

       IF sy-subrc = 0.

         TRANSLATE ls_lfa1-name1 TO UPPER CASE.

         MOVE-CORRESPONDING ls_lfa1 TO ls_cesiones.

         ls_cesiones-domicilio           = ls_lfa1-stras.

         IF t_cesiones-oksel = 'X'.

           ls_cesiones-oksel = 'X'.

         ENDIF.

         SELECT SINGLE *

            FROM lfa1

            INTO ls_lfa1

           WHERE lifnr = ls_cesiones_aux-contratista.

         IF sy-subrc = 0.

           TRANSLATE ls_lfa1-name1 TO UPPER CASE.

           MOVE ls_lfa1-name1 TO ls_cesiones-name_contra.

         ENDIF.




Estoy haciendo 2 select a la misma tabla de B.D. lfa1 y pero con distinto condiciones(en negrita) y en el primero si me encuentra el registro, pero en el segundo me da sy-subrc = 4. He mirado en la tabla con las SE16N y existen los 2 registros.


Alguien me puede ayudar???

Gracias y saludos

Luis.

8 REPLIES 8

dairolozano
Contributor
0 Kudos

Hola Luis.

Puede ser un tema de ceros a la izquierda o de espacios en blanco.  Revisa el contenido de la tabla por la transacción SE16 en lugar de la SE16N.  De igual forma,  confirma también que el valore en la variable ls_cesiones_aux-contratista corresponde exactamente con el valor que encuentras en la tabla. 

Puedes agregar los pantallazos de la se16 y el valor de la variable durante debug para compararlos ?

Saludos,

Dairo

0 Kudos

Hola Dario,

muchas gracias por tu pista!!!! me ha servido de mucho!!!. Tenia un código que no habia visto y que era lo que tu me habias dicho. Esta mañana me he puesto a buscar si pasaba algo de eso y lo he encontrado!!!. Este es el código:

lv_num_digitos = STRLEN( p_t_cesiones-lifnr ).

     lv_ciclos      = ( 10 - lv_num_digitos ).

     lv_lifnr_fix   = p_t_cesiones-lifnr.

     DO lv_ciclos TIMES.

       CONCATENATE '0' lv_lifnr_fix INTO lv_lifnr_fix.

     ENDDO.

     IF lv_lifnr_fix <> cte_ceros.

       p_t_cesiones-lifnr = lv_lifnr_fix.

     ENDIF.


Muchas gracias de nuevo Dario!!!

Saludos

Luis.


0 Kudos

Hola Luis,

Muchas gracias por plantearnos tus dudas y sobre todo a Dairo por sus muy buenas recomendaciones y ayuda. Si las respuestas dadas han sido de útiles o bien te han solucionado la duda, puedes cerrar este thread o hilo, marcando la respuesta como correcta en "Correct Answer". Así ayudaremos a otros compañeros para dudas o preguntas similares.

Muchas gracias por tu colaboración.

Un cordial saludo!

Jose Francisco Fernandes (Moderador SCN en Español).

0 Kudos

Hola Luis,

Me alegra mucho que te haya servido mi recomendación. Estamos a la orden.

0 Kudos

Hola Luis, no olvides marcar la respuesta como correcta y cerrar la discusión.

0 Kudos

y como se marca como correcta??

0 Kudos

Hola Luis. 


Utiliza estos botones:

Para la respuesta correcta (la que más te ayudó a resolver el problema) usas el verde.  Para las demas que te hayan resultado útiles también, usas el amarillo.

Si tienes otra pregunta me cuentas.

Un abrazo,

Dairo

luis_gijon
Explorer
0 Kudos

NO ME SALEN ESOS BOTONES!!!!!