SUBMIT no recibe datos correctos de Prog H99CWTR0

sap-abap
Etiquetas: #<Tag:0x00007f114c7ce610>

#1

Hola a todos, queria consultarles este caso que se me esta presentando, en un programa Z se realiza el submit al programa H99CWTR0 y los valores que estan memoria al retornar veo que llegan saltandose campos.

El codigo lo tengo asi:

SUBMIT h99cwtr0 USING SELECTION-SET 'REP_ARCH_PREST'
WITH pnppernr EQ pernr-pernr
WITH begd_cal = fecha_inicio_proceso_real
WITH endd_cal = fecha_fin_proceso_real
WITH SELECTION-TABLE seltab1
EXPORTING LIST TO MEMORY AND RETURN.

CLEAR: itab_list, it_text1.
REFRESH: itab_list[], it_text1[].

* extraer lista del programa
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = itab_list
EXCEPTIONS
not_found = 4
OTHERS = 8.

IF sy-subrc = 0.

** COnvertir lista del programa
CALL FUNCTION 'LIST_TO_ASCI'
TABLES
listasci = it_text1
listobject = itab_list
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.

Al debugear y observa que valores obtengo me muestra:

Donde los valores quee stan debajo del titulo importe en realidad es la cantidad, ya que ejecutando directamente ese programa me muestra:
image

Le cree una variante nueva al programa H99CWTR0 con una nueva disposicion ALV de los 6 campos que necesito extraer pero igual me da el detalle, la estructira la tengo asi igual que la disposicio que cree:

image

Que podria revisar por favor.

Muchas Gracias

Ana


#2

La imagen del Debug, es después de la función LIST_TO_ASCI ó LIST_FROM_MEMORY?


#3

si despus de esas funciones


#4

Cambia la estructura de IT_TEXT1 a string o char con una longitud grande y analiza tu resultado. Es tema de formato de datos.


#5

Hola amigo gracias por contestar, y para realizar calculos como haria si es char.Porque necesito acumular el importe, y demas campos de importe.

Seria algo asi?
DATA: BEGIN OF it_text1 OCCURS 0,
agpai(6) type C,
cc_n(6) type C,
texto_expl_cc_nomina(26) type C,
ctd(25) type C,
importe(25) type C,
mon(6) type C,

END OF it_text1.

Luego tengo que hacer este calculo, :

LOOP AT it_zhrt_r_arch_pres WHERE zid_columna = ‘2’.

LOOP AT it_text1 WHERE cc_n+1(5) = it_zhrt_r_arch_pres-zlgart.
monto_char = it_text1-importe+1(21).
REPLACE ALL OCCURRENCES OF ‘.’ IN monto_char WITH ’ '.
REPLACE ALL OCCURRENCES OF ‘,’ IN monto_char WITH ‘.’.
REPLACE ALL OCCURRENCES OF ‘|’ IN monto_char WITH ’ '.
CONDENSE monto_char NO-GAPS.
wa_salida_detalle-sueldo_salario = wa_salida_detalle-sueldo_salario + monto_char.
ENDLOOP.

ENDLOOP.

wa_salida_detalle-sueldo_salario = wa_salida_detalle-sueldo_salario / 2.
Gracias

Ana


#6

Primero convierte la tabla a string o de tipo caracter largo. Después haces un split por ‘|’. Comienza en el reglon 4 en la lectura, y termina tu lectura en el antepenultimo registro.


#7

Cuando me dices que empiece con el renglon 4 eso seria de que forma?

Gracias

Ana


#8

@aalvarez2605, Ana :pray: no es la primera vez que te pido por favor que cuando pongas código, le pongas formato. Lee: Cómo usar el foro de Consultoria-SAP si no sabes cómo hacer.

Ayudanos a mantener la calidad de la comunidad.


#9

LOOP AT it_tabla FROM 4.


#10

Hola Amigo, coloque el codigo de esta manera para que me comience en la linea 4 como me indicaste pero al debugear veo que no me toma cierta informacion:

LOOP AT it_text1 FROM 4.
SPLIT it_text1 AT ‘|’ INTO: agpai
cc_n
texto_expl_cc_nomina
ctd
importe
mon.

it_text1_sal-agpai = agpai.
it_text1_sal-cc_n = cc_n.
it_text1_sal-texto_expl_cc_nomina = texto_expl_cc_nomina.
it_text1_sal-ctd = ctd.
it_text1_sal-importe = importe.
it_text1_sal-mon = mon.
APPEND it_text1_sal.
ENDLOOP.

La salida que me arroja debugeando es:

image

image

Y veo que el registro lo tiene en su linea 4:

image

Que detalle me esta faltando?

Muchas Gracias

Ana


#11

A todos, si no usan el foro correctamente, se eliminarán los mensajes y los usuarios serán suspendidos o sus mensajes quedarán bajo moderación. Usen el foro como corresponde… :pray:

No peguen código ABAP como imagen! :angry:


#12

Mi estimado, quita el primer y el último ‘|’.


#13

pero con el SPLIT que tiene ya no lo estaria haciendo?


#14

Esta tomando como dato aquello que esta antes del primer ‘|’, imagina un archivo CSV pero separado por ‘|’.


#15

Muchas Gracias Amigo, ya solucione con su apoyo.

Saludos

Ana


#16