Error en captura de datos

Buenas tengo un programa con smartform que no me esta imprimiendo unas cosas en mi smartform pero es porque en el programa lo debuggee y no me esta capturando unos datos. Luego de que verifico que me haya traido datos

( SELECT SINGLE maktx FROM makt`
INTO gv_maktx
WHERE matnr EQ p_matnr.

 SPLIT gv_maktx AT '-' INTO gv_maktx gv_maktx2.

IF sy-subrc EQ 0.) 

No hace nada y salta todo eso porque no me trae nada alguna idea?? Anexo parte del codigo:

SELECT SINGLE maktx FROM makt
INTO gv_maktx
WHERE matnr EQ p_matnr.

SPLIT gv_maktx AT '-' INTO gv_maktx gv_maktx2.

IF sy-subrc EQ 0.

select charg menge hsdat vfdat
from mseg
into (gv_charg, gv_menge, gv_hsdat, gv_vfdat)
WHERE matnr EQ p_matnr
  AND werks EQ p_werks
  AND aufnr EQ p_aufnr
  AND bwart EQ '101'.
ENDSELECT.

IF sy-subrc EQ 0.

  SELECT SINGLE KILOS FROM ZPESO_SACOS
  INTO gv_kg_saco
    WHERE matnr EQ p_matnr.

  IF sy-subrc EQ 0.

    gv_cant_sacos = gv_menge / gv_kg_saco.

    gv_cant_sacos_s = gv_cant_sacos.

    SPLIT gv_cant_sacos_s AT '.' INTO gv_cant_sacos_e gv_cant_sacos_d.

    gv_cant_sacos_aux = gv_cant_sacos_e.

    gv_cant_tot_sacos = gv_cant_sacos_aux * gv_kg_saco.

    gv_cant_saco_extra = gv_menge - gv_cant_tot_sacos.
  ENDIF.
ENDIF.

gs_datos-matnr = p_matnr.
gs_datos-werks = p_werks.
gs_datos-maktx = gv_maktx.
gs_datos-charg = gv_charg.
gs_datos-sacos = gv_cant_sacos_aux.
gs_datos-menge = gv_menge.
gs_datos-hsdat = gv_hsdat.
gs_datos-vfdat = gv_vfdat.

gs_datos-kilos = gv_kg_saco.

ENDIF.

A ver si entendi, me dices que este query no retorna nada?
ve a la SE16N y coloca la tabla makt luego en el campo matnr coloca el codigo del material.
Verifica si te retorna valor.

Por otro lado, tienes el sy-subrc despues de otra operacion SPLIT y esta operacion te puede alterar el sy-subrc.

Cuando realizas la bifurcacion la estas haciendo a la operacion del SPLIT y no al resultado de la busqueda a la base de datos.
Intenda colocar el SPLIT dentro de la bifurcacion, hace mas sentido alla.

1 me gusta

Si ya la busque por la se16n con el numero de material y si me retorna valores :confused:

Saludos,

Antes de tu 1er SELECT ejecuta esta función:

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = p_matnr
IMPORTING
OUTPUT = p_matnr
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2

Es para ponerle los ceros a la izquierda a tu variable material para que no falle el select.

Segundo, debes confirmar que tu variable gv_maktx cumpla con la nomenclatura para poder hacerle un SPLIT en el Guión “-”.

Como dice Smota, ese Split no va ahi, va después del SY-SUBRC.

Verifica el formato, y sigue la indicacion que te dieron para poner los ceros a la izquierda.

Tambien para los ceros, podrias usar el keywork
####UNPACK

unpack p_matnr to p_matnr.

SELECT SINGLE maktx FROM makt`
INTO gv_maktx
WHERE matnr EQ p_matnr.

Golpeenme xD, muchas gracias por sus respuestas ajajjajaj luego de casi un día viendo que era, es sorprendete que el error mas sencillo conlleve a tan malos ratos, cuando probaba ponia uno de los datos el orden (el parametro) mal jajaj tenia un 0 de mas :c

Hola @abapero si te solucionaron el tema, recuerda marcar la respuesta que más te ayudó.

1 me gusta

Excelente, siempre lo hacia manual jeje, no conocia la función, gracias nuevamente
@Haden_Yasser_ y @smota

Saludos.

1 me gusta

Yo cuando veo que una select no me devuelve nada, y voy por la se16 y si tiene datos, lo que hago es mirar si tiene rutina de conversion y para ello, entro en el elemento de datos del campo que querio, por ejemplo, matnr, y voy a su dominio:

y vemos si tiene rutina de conversion:

Doble click sobre MATN1, y te saldran las rutinas;

Un saludo.

3 Me gusta

Excelente gracias @davidsh.

no sabia eso jejeje que bueno que siempre se aprenda algo.