Ayuda SAP

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.