MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 02/04/09, 14:11:50
RakelD RakelD is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 12
SapScript importar tablas DO TIMES

Hola!

Soy nueva en esto de los Sapscripts, y tengo que hacer uno que me liste una tabla que tengo en un Zprograma creado por mi, para obtener los datos que quiero que saque.

El problema es que a mi Sapscript lo llama un programa estándar de Sap, por lo que las llamadas a las ventanas y sus elementos no las controlo. Entonces, lo que me gustaría hacer es que una vez esté en el elemento de la main que quiero, me muestre la tabla.

E intentado hacer un do times, trayendome una variable con la cantidad de lineas que tiene la tabla y llamar al metodo que me obtiene los registros, pero aún así nada. Necesito algo para que me saque todos los datos de mi tabla y no sólo el primero.

Agradecería cualquier sugerencia ya que me urge la entrega.

Muchas gracias de antemano por todo.

Un saludo.
Responder Con Cita
  #2  
Viejo 02/04/09, 14:32:43
jcflores jcflores is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: Santiago de Chile
Mensajes: 55
Dentro de los elementos de texto del SAPScript hay algunos que hacen referencia a tablas y se imprimen de acuerdo a la cantidad de registro de cada una de ellas, podrias usar uno de ellos como "pivot" para hacer la impresion de tu tabla Z.

.
Responder Con Cita
  #3  
Viejo 02/04/09, 14:46:23
RakelD RakelD is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 12
Hola, no he entendido muy bien lo que me dices, sorry.

Yendo a donde, me coge la tabla interna i_tab que está en mi programa zprograma_sap por ejemplo... no es una tabla de diccionario, funciona tambien para eso...?
Responder Con Cita
  #4  
Viejo 02/04/09, 14:49:38
jcflores jcflores is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: Santiago de Chile
Mensajes: 55
Me gustaria saber con que tipo de formulario estas trabajando y desde donde es llamado.

Lo otro es que dentro del formulario deberias tener elementos de texto estandares con los cuales puedes hacer loop's a tablas estandares,

Tu puedes usar como referencia uno de esos elementos de texto y colgar tu tabla interna ahi.
Responder Con Cita
  #5  
Viejo 02/04/09, 14:56:59
RakelD RakelD is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 12
La llamada la hago desde el estandar de SAP f.18, me he creado un SapScript que es una copia de otro estandar, ya estaba todo creado, entonces las llamadas que hacia al otro las hace igual a este, por lo que yo no controlo las llamadas a las ventanas y a los elementos.

Entonces para hallar los datos que queria, me he creado un programa nuevo, unicamente para obtenerlos , un z_programa, y lo llamo desde las ventanas del main de mi SapScript con:
perform obtener in z_programa
using && ....
changing && ....
endperform
Lo que quiero es que me liste una i_tab que hay dentro de ese método obtener, pero que me liste toda la tabla, no solo la primera linea.

Espero haberme explicado....
Responder Con Cita
  #6  
Viejo 02/04/09, 15:42:32
jcflores jcflores is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: Santiago de Chile
Mensajes: 55
Dentro de los elementos de texto de la copia del formulario, uno de ellos debe hacer referencia alguna tabla estandar (puedes guiarte de acuerdo a los campos que se imprimen en la parte inferior del elemento de texto)... inclusive puede que uno de esos te sirva para la tabla z que intentas imprimir.
Responder Con Cita
  #7  
Viejo 02/04/09, 16:10:19
Avatar de edu_alo_martinez
edu_alo_martinez edu_alo_martinez is offline
Member
 
Fecha de Ingreso: ago 2007
Mensajes: 63
Puede ser?

Has intentado desde tu programa Z, usar las funciones OPEN_FORM y WRITE_FORM ????


Saludos,
Responder Con Cita
  #8  
Viejo 02/04/09, 16:15:58
RakelD RakelD is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 12
Si lo hago, pero cuando voy haciendo el debug al llamar a la funcion write_form se me queda en la siguiente instruccion:

check co_perform-active <> true.

teniendo ambas como valor X. por lo que sale de la funcion sin ir a ninguna instruccion mas de la funcion......
Responder Con Cita
  #9  
Viejo 02/04/09, 16:57:15
Avatar de edu_alo_martinez
edu_alo_martinez edu_alo_martinez is offline
Member
 
Fecha de Ingreso: ago 2007
Mensajes: 63
Post Usar un loop

Yo te recomendaria que coloques dentro de un loop la funcion write_form, para que no solo te muestre el primer elemento y puedas ver todo el contenido de la tabla interna.

LOOP AT itab.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'CAB'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
Responder Con Cita
  #10  
Viejo 02/04/09, 17:08:08
RakelD RakelD is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 12
Ya lo tengo así, he intentado hacerlo poniendo antes un open_form y nada la cuestion es que
check co_perform-active <> true
tienen el mismo valor, por lo que no ejecuta las siguientes instrucciones..., estando ya en el codigo de la funcion write_form.

Pasa del primer rojo al ultimo, porque tienen los dos el valor X.

function write_form.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(ELEMENT) DEFAULT SPACE
*" VALUE(FUNCTION) DEFAULT 'SET'
*" VALUE(TYPE) DEFAULT 'BODY'
*" VALUE(WINDOW) DEFAULT 'MAIN'
*" EXPORTING
*" VALUE(PENDING_LINES)
*" EXCEPTIONS
*" ELEMENT
*" FUNCTION
*" TYPE
*" UNOPENED
*" UNSTARTED
*" WINDOW
*" BAD_PAGEFORMAT_FOR_PRINT
*" SPOOL_ERROR
*" CODEPAGE
*"----------------------------------------------------------------------
data:
create type i,
etype like itcca-tdetype.

check co_perform-active <> true.

pending_lines = false.

if rstxc-tddebug = true.
perform debug_write_form using element function type window.
endif.
if rstxc-tdopen = false.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 423
v1 = 'WRITE_FORM'.
perform exception.
message a423 with 'WRITE_FORM' raising unopened.
endif.
if rstxc-tdclose = true.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 443
v1 = 'WRITE_FORM'.
perform exception.
message a443 with 'WRITE_FORM' raising unstarted.
endif.
* Start Parser, if not started
if type = 'BODY' or window ne system_window_main.
if rstxc-tdwinopen = false.
perform pa_open_windows.
endif.
if rstxc-tdstarted = false and window = system_window_main.
perform pa_open.
if rstxc-tddebug = true.
perform debug_write_form using element function type window.
endif.
endif.
endif.
* Type
case type.
when 'TOP'.
if window ne 'MAIN'.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 424
v1 = 'TOP'.
perform exception.
message a424 with 'TOP' raising type.
endif.
etype = etype_top.
when 'BOTTOM'.
if window ne 'MAIN'.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 424
v1 = 'BOTTOM'.
perform exception.
message a424 with 'BOTTOM' raising type.
endif.
etype = etype_bottom.
when 'BODY'.
etype = etype_current.
when others.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 425
v1 = type.
perform exception.
message a425 with type raising type.
endcase.
* Read Windows
read table windows with key tdwindow = window
tdetype = etype
binary search.
if sy-subrc ne 0.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 426
v1 = window
v2 = rstxc-tdform.
perform exception.
message a426 with window rstxc-tdform raising window.
endif.
* Read ELEMENTS
read table elements with key tdwindow = window
tdevent = element
binary search.
if sy-subrc ne 0.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 427
v1 = element
v2 = window
v3 = rstxc-tdform.
perform exception.
message a427 with element window rstxc-tdform raising element.
endif.
perform tx_set using tx_form_txtind.
if tx_catalog-tdastyle ne space.
clear tx_catalog-tdastyle.
modify tx_catalog index tx_catalog-tdtxtind.
endif.
* Function
case function.
when ev_func_set.
perform ev_set_element using etype create.
when ev_func_append.
if window = system_window_main and etype = etype_current.
perform ev_set_element using etype create.
else.
perform ev_append_element using etype create.
endif.
when ev_func_delete.
perform ev_delete_element.
when others.
call function 'SAPSCRIPT_MESSAGE_DEF'
exporting no = 428
v1 = function.
perform exception.
message a428 with function raising function.
endcase.
if rstxc-tddebug = true.
perform debug_func using elements-tdfromline.
debug-break. "#EC NOBREAK
endif.
* Main
check window = system_window_main.

case etype.
when etype_current.
ev_actual = create.
perform pa_body.
when etype_bottom.
perform pa_bottom.
if pc_bottom_height > ft-bot_height.
pending_lines = true.
endif.
when etype_top.
endcase.

endfunction.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 18:38:49.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web