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 22/07/10, 21:23:50
Avatar de Fabian leonardo velasquez
Fabian leonardo velasquez Fabian leonardo velasquez is offline
Member
 
Fecha de Ingreso: sep 2007
Localización: Facatativa
Mensajes: 62
Lightbulb Premisas

Programar es un arte. Compañero para tu experiencia, cuando se programa se hace mas o menos así:

1. Definir lo elementos a utilizar
2. Inicializar variables i son necesarias.
3. CONSULTAS A LA BASE DE DATOS ( en tu ejemplo ), para esto debes utilizar areas de trabajo, tablas internas. el select *** end select consume mucho mas tiempo que hacer un FOR ALL Entries (Primero organiza las tablas por campos clave) para poderlos organizar en un area de trabajo, luego no tendras que acceder a la base de datos( ahorro de tiempo) , si requieres un dato ya esta en la TI. y para eso puedes aplicar read tables o loop los cuales tambien puedes anidar pero para manejar la eficiencia debes discriminar con sentencias where y/o check para evitar quedar inmerso en ciclos innecesarios.

4. Luego de tener los datos listos y organizados ya puedes imprimir o hacer lo que requieras.
Responder Con Cita
  #2  
Viejo 23/07/10, 09:57:46
jarabas jarabas is offline
Senior Member
 
Fecha de Ingreso: ene 2010
Mensajes: 109
evita los into corresponding field. create estructuras internas con los campos en el mismo orden en el que los pongas en la select.

TYPES: BEGIN OF ty_ejemplo,
campo1 TYPE el_que_sea,
campo2 type el_que_sea,
....
END OF ty_ejemplo.

data: it_ejemplo type standard table of ty_ejemplo.

select campo1 campo2 ...
into table it_ejemplo
from tabla
where condicion.

Evita las tablas con cabeceras, procura utilizar workings.

no uses los Select ... endselect.


tú código:
SELECT *
FROM eket
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
banfn = t_eban-banfn AND
bnfpo = t_eban-bnfpo.
MOVE eket-eindt TO w_eindt.
EXIT.
ENDSELECT.

si sólo quieres el campo "eindt", haz lo siguiente:
SELECT eindt
INTO w_eindt
FROM eket
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp AND
banfn = t_eban-banfn AND
bnfpo = t_eban-bnfpo.

tú código:
SELECT SINGLE * FROM ekpo WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp.
IF sy-subrc EQ 0.
MOVE ekpo-ebeln TO w_ebeln.
MOVE ekpo-ebelp TO w_ebelp.
MOVE ekpo-txz01 TO w_txz01.
MOVE ekpo-netwr TO w_netwr.
MOVE ekpo-loekz TO w_loekz.

Mejor así:
TYPES: BEGIN OF ty_ekpo,
ebeln TYPE EBELN,
ebelp TYPE EBELP,
txz01 TYPE TXZ01,
netwr TYPE BWERT,
loekz TYPE eloek,
END OF ty_ekpo.

data: wa_ekpo type ty_ekpo.

SELECT SINGLE ebeln ebelp txz01 netwr loekz
INTO wa_ekpo
FROM ekpo
WHERE ebeln = t_eban-ebeln AND
ebelp = t_eban-ebelp.

IF sy-subrc EQ 0.
ya tienes los datos en la working area (WA_EKPO)
ENDIF.


Espero haberte ayudado.

Úlima edición por jarabas fecha: 23/07/10 a las 10:07:12.
Responder Con Cita
  #3  
Viejo 26/07/10, 22:53:01
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola Yessica, aki he mejorado un poco el codigo ... con los tips que comentaron jarabas, Fabian y mysmb2 ademas algunos tips mas ...

Primero: declarar bien las variables, asumi que t_ekbe, t_ekbe1, t_ekbe2 y t_ekbe3 tenian la misma estructura y todos se trabajaban para construir la informacion en t_ekbe

Segundo: ahi va la modificacion de las subrutinas, como te aconsejaron les quite los CORRESPONDING FIELDS y uni las tablas EKKO, EKPO, LFA1 ya que esas 3 tablas estan relacionadas directamente a excepcion de la tabla EKKN porque una orden de compra no necesariamente tiene datos de imputacion

Primera Subrutina

Segunda Subrutina

Espero te pueda ayudar
__________________
David Carballido Córdova
Responder Con Cita
  #4  
Viejo 26/01/17, 22:00:11
Karla V. Karla V. is offline
Senior Member
 
Fecha de Ingreso: may 2011
Mensajes: 101
-_-

Hola, todo el mundo dice que no usen "into corresponding fields of table" yo lo uso todo el tiempo porque no se que otra cosa usar, ¿me pueden dar un ejemplo de un codigo que sustituya al "into corresponding fields of table" ?
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 10:52:03.


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