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:
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:
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.
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.
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.
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…