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 25/07/14, 11:36:13
cosagaucha cosagaucha is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 64
Buscar el NOMBRE del campo de una itab.

hola a todos!

consulta, en la pantalla de selección ingreso el campo MES(numérico), y luego, en mi reporte, debo buscar en la tabla faglflext, en los campos:

hsl01 hsl02 hsl03 ......... hasta hsl16

SEGUN el mes ingresado, debo ir al campo hslxx correspondiente, y tomar su valor.

Pero mi consulta es ahora el "Cómo" ???!!! ya que nunca me lleve bien con los flied-symbols, y no tengo mucha idea de como debo encararlo.

O de casualidad, habrá alguna función de sap que me permita saber ese dato pasando mes y año??..

muchas gracias de antemano!!
Responder Con Cita
  #2  
Viejo 25/07/14, 12:30:30
vanesamacri vanesamacri is offline
Senior Member
 
Fecha de Ingreso: jun 2011
Mensajes: 146
Hola.

Supongamos que tenemos la siguiente estructura:

DATA wa_faglflext TYPE faglflext.


En estructura se encontrará poblada con una línea de información de la tabla faglflext. Para ir al campo deseado, realizar lo siguiente (explicado de manera muy básica):

FIELD-SYMBOL <fs> TYPE any.
DATA v_campo TYPE string.

CONCATENATE 'WA_FAGLFLEXT-HSL' p_mes INTO v_campo. (Se entiende que en p_mes va a venir el valor del mes ingresado. De esta manera, si el mes ingresado fue 10, en v_campo te va a quedar el valor WA_FAGLFLEXT-HSL10).

ASSIGN (v_campo) TO <fs>. (se asigna el valor del campo al puntero)

IF <fs> IS ASSIGNED.

Si la asignación fue correcta, en <fs> vas a tener referenciado el valor del campo HSLXX de la estructura de la tabla faglflext que sea correspondiente al mes ingresado.

Probablemente tengas que verificar, en caso de ingresar un número de mes de un dígito, agregar el cero manualmente a la hora de concatenar el valor del campo para asignarlo al puntero (por ejemplo, para que te quede HSL01 y no HSL1).

ENDIF.


Si querés evitar el uso de punteros, podés utilizar la instrucción DO... VARYING la cual te permite recorrer registros de manera horizontal. Podés jugar con el índice de la iteración del DO...ENDDO para determinar el campo que se corresponde con el número del mes ingresado en pantalla de selección.


Espero que la explicación haya sido clara.

Un saludo.
Responder Con Cita
  #3  
Viejo 25/07/14, 12:39:06
cosagaucha cosagaucha is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 64
hola Vanesa, MUCHISIMAS GRACIAS por la mano!!!

Ahora me voy a poner a probar estos códigos, y buscar un poco más también sobre el DO, ya que se me había ocurrido el recorrer las columnas de la tabla "p_mes veces" (do p_mes times) pero no se me ocurria como variar las columnas y no las filas.

pruebo y comento.
Gracias!!
Responder Con Cita
  #4  
Viejo 25/07/14, 13:29:08
cosagaucha cosagaucha is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 64
aca vuelvo con una consulta relacionada..

hice tal cual decías:

FIELD-SYMBOLS <fs> TYPE ANY.
DATA v_campo TYPE string.

CONCATENATE 'WA_FAGLFLEXT-WTG0' p_monat INTO v_campo.

ASSIGN (v_campo) TO <fs>.
IF <fs> IS ASSIGNED.
ENDIF.

pero el tema, es que en (v_campo) no me toma ningún valor.. por lo tanto, no se asigna nada al fs, por más que el valor resultante del CONCATENATE es bien el nombre del campo...

por donde se me está escapando?..

GRACIAS de nuevo!
Responder Con Cita
  #5  
Viejo 25/07/14, 14:07:25
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
Las instrucciones están bien:

Asegurate que la estructura WA_FAGLFLEXT tiene datos.

Saludos
Responder Con Cita
  #6  
Viejo 25/07/14, 14:13:59
cosagaucha cosagaucha is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 64

hola Mauricio, debuggeando una vez más, me di cuenta que había tenido un error al nombrar el campo, pero ya lo solucione!

Consulta adicional.. es una posibilidad, que el valor del campo a buscar, venga en CERO, en ese caso.. daría error? O sólo decías por si la estructura estaba directamente vacía -y no el campo en 0-

Gracias!!!
Responder Con Cita
  #7  
Viejo 25/07/14, 15:03:24
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
No, no daría error si viene en blanco o cero. En realidad preguntaba por si tenias datos en la estructura no más.

Saludos
Responder Con Cita
  #8  
Viejo 25/07/14, 15:34:31
cosagaucha cosagaucha is offline
Member
 
Fecha de Ingreso: ago 2006
Mensajes: 64
Perfecto entonces. Y lo prometido es deuda,

acá el código de lo que anda, y me trae el valor buscado en <fs>

READ TABLE gt_faglflext INTO wa_faglflext WITH KEY ryear = p_gjahr
racct = wa_ctasbles-t_ctacble.
IF sy-subrc EQ 0.

**************
FIELD-SYMBOLS <fs> TYPE ANY.
DATA v_campo TYPE string.

CONCATENATE 'WA_FAGLFLEXT-HSL' p_monat INTO v_campo.

ASSIGN (v_campo) TO <fs>.

IF <fs> IS ASSIGNED.
ENDIF.

Gracias Vanesa y Mauricio!!
Saludos!
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 09:40:44.


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