Un Usuario hizo la siguiente pregunta
Dígame cómo usar «para cada entrada» para vincular dos
envía tablas para recuperar información utilizando los campos correspondientes en ambos tables.plz.
7 respuestas
Ex miembro
Hola,
diga si desea mostrar el contenido y su texto. puede utilizar este concepto.
~ de la tabla maestra estoy seleccionando los materiales basados en la entrada s_matnr.
~ entonces, para los temas seleccionados anteriormente, necesito obtener la descripción correspondiente.
es decir:
seleccione matnr de marine en la tabla i_matnr
coloque matnr en s_matnr.
más sy-subrc = 0.
seleccione matnr maktx
de makt a la tabla i_makt
para todas las entradas en i_matnr
place matnr = i_mara-matnr.
terminara si.
Esto es similar al concepto de INNER JOIN. obtenga los datos comunes de 2 tablas basadas en la entrada. A veces, Join dará un rendimiento deficiente, puede usar PARA TODAS LAS ENTRADAS.
Ex miembro
ALTA.
La instrucción SELECT contiene una alternativa especial a la cláusula PLACE que le permite derivar condiciones de las líneas y columnas internas de la tabla:
SELECCIONAR … PARA TODAS LAS ENTRADAS
DÓNDE … Mayo
formulado como se describe anteriormente. Si especifica un campo de la tabla interna como trabajador en posición, aborda todas las líneas de la tabla interna. A continuación, se realiza la comparación para cada línea de la tabla interna. Para cada línea, el sistema selecciona las líneas de la tabla de la base de datos que satisfacen la condición. El conjunto de resultados de la instrucción SELECT es la unión de selecciones individuales para cada línea de la tabla interna. Las líneas duplicadas se eliminan automáticamente del conjunto de resultados. Si es así vacío, el complemento PARA TODAS LAS ENTRADAS se ignora y se leen todas las entradas. La tabla interna debe contener un tipo de línea estructurada
, y todas las áreas que ocurren en la condición deben ser compatible con la columna de la base de datos que se está comparando. No utilice los operadores LIKE, BETWEEN e IN en comparaciones con campos de tabla internos. No puede usar la cláusula ORDER BY en la misma instrucción SELECT. Puede usar la opción TODAS LAS ENTRADAS para reemplazar los bucles anidados seleccionados con operaciones en tablas internas. Esto puede mejorar en gran medida el rendimiento de grandes conjuntos de datos seleccionados.
Por ejemplo –
DETALLES: TABLA DE TIPO TAF_SPFLI de SPFLI,
TAB_SFLIGHT TYPE CLASIFICADO TABLA DE VUELO
TODA LA LÍNEA CLAVE DE LA MESA,
WA COMO LÍNEA DE TAB_SFLIGHT.
SELECCIÓN DE CARRID CONNID
EN AREAS CORRESPONDIENTES DE TABLA TAB_SPFLI
De SPFLI
CITYFROM LOCATION = ‘NUEVA YORK’.
SELECCIONAR CARRID CONNID FLRATE
EN LAS ZONAS CORRESPONDIENTES DE TABLE TAB_SFLIGHT
De SFLIGHT
PARA CADA ENTRADA EN TAB_SPFLI
LUGAR CARRID = TAB_SPFLI-CARRID Y
CONNID = TAB_SPFLI-CONNID.
BUCLE EN TAB_SFLIGHT EN WA.
AG NEW CONNID.
ESCRIBA: / WA-CARRID, WA-CONNID.
TERMINA EN.
ESCRIBIR: / WA-FLDATE.
ENDLOOP.
Cuando use TODA SU ENTRADA, debe asegurarse de que la tabla que está usando no se deje en blanco. SELECCIONE todos los datos de esa tabla.
Espero que ayude.
Premie todas las respuestas útiles.
Sobre.
Arrendajo
Ex miembro
Hola,
Código de muestra:
* Seleccione Número de pedido y fecha de la última acción para Desconectar número de documento
SELECT discno discact actdate ordernum
Oh ediscact
EN LA TABLA lt_disc_act
PARA CADA ENTRADA EN lt_status
DONDE discno = lt_status-discno
Y ordernum = espacio.
Este código seleccionará datos para todos los valores que ya están en la tabla interna lt_status donde discno = lt_status-discno.
Esto aumenta la eficiencia del código.
Recompense los puntos si la respuesta es útil.
Ex miembro
Hola,
Puedes ver el código de muestra.
SELECCIONAR bukrs
belnr
gjahr
blart
bldat
budat
monitor
xblnr
Ó bkpf
EN LA TABLA it_header
DONDE bukrs EN ccode Y
belnr IN docno Y
blart en doctype Y
gjahr en el año Y
budat IN período.
SI it_header ESTÁ INICIADO.
SELECCIONAR bukrs
belnr
buzei
zuonr
budat
bschl
wrbtr
kostl
gjahr
shkzg
hkont
obleas
Oh bsis
EN LA TABLA it_item
PARA CADA ENTRADA EN it_header
DONDE bukrs = it_header-bukrs Y
gjahr = it_header-gjahr Y
belnr = it_header-belnr.
aquí, verificando la condición si no es la INICIATIVA it_header. de lo contrario obligatorio si es inicial
resultará en un vertido breve.
Editado por: Srikanth Kadiyala el 2 de junio de 2008 12:48 p.m.
Ex miembro
INFORME YVCHIERSEQ.
TIPO-PISCINAS: SLIS.
DETALLES: T_VBAK TIPO TABLA TIPO INICIATIVA TAMAÑO VBAK 0,
T_VBAP TIPO TABLA TIPO VBAP INICIATIVA TAMAÑO 0,
W_VBAK TIPO VBAK,
V_AP TYPE W_VBAP,
G_VBELN TIPO VBAK-VBELN,
TIPO W_FIELDCAT SLIS_FIELDCAT_ALV,
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
TIPO W_KEYINFO SLIS_KEYINFO_ALV.
SELECCIONANDO BLOQUE B1 CON MARCO.
SELECCIONAR OPCIONES: S_VBELN PARA G_VBELN.
BLOQUE DE SELECCIÓN DE PANTALLA FINAL B1.
INICIATIVA.
BORRAR: W_VBAK,
W_VBAP.
ACTUALIZAR: T_VBAK,
T_VBAP.
INICIO-SELECCIONAR.
REALIZAR SUB_GET_VBAK.
REALIZAR SUB_GET_VBAP.
REALIZAR SUB_DISP_OUTPUT.
FORM SUB_GET_VBAK.
SELECCIONE * DE VBAK EN LA TABLA T_VBAK DONDE ES S_VBELN.
ENDFORM.
FORM SUB_GET_VBAP.
SELECCIONAR * DE VBAP EN LA TABLA T_VBAP PARA TODAS LAS ENTRADAS EN EL LUGAR T_VBAK
VBELN = T_VBAK-VBELN.
ENDFORM.
FORM SUB_DISP_OUTPUT.
W_FIELDCAT-COL_POS = 1.
W_FIELDCAT-FIELDNAME = ‘VBELN’.
W_FIELDCAT-SELTEXT_M = ‘PEDIDO DE VENTA’.
W_FIELDCAT-TABNAME = ‘VBAK’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 2.
W_FIELDCAT-FIELDNAME = ‘ERNAM’.
W_FIELDCAT-SELTEXT_M = ‘NOMBRE’.
W_FIELDCAT-TABNAME = ‘VBAK’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 3.
W_FIELDCAT-FIELDNAME = ‘VBTYP’.
W_FIELDCAT-SELTEXT_M = ‘CATEGORÍA SD’.
W_FIELDCAT-TABNAME = ‘VBAK’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 4.
W_FIELDCAT-FIELDNAME = ‘KUNNR’.
W_FIELDCAT-SELTEXT_M = ‘VENDIDO EN PARTE’.
W_FIELDCAT-TABNAME = ‘VBAK’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 5.
W_FIELDCAT-FIELDNAME = ‘NETWR’.
W_FIELDCAT-SELTEXT_M = ‘VALOR NÚMERO’.
W_FIELDCAT-TABNAME = ‘VBAK’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
******************************
W_FIELDCAT-COL_POS = 1.
W_FIELDCAT-FIELDNAME = ‘POSNR’.
W_FIELDCAT-SELTEXT_M = ‘ARTÍCULO DE VENTA’.
W_FIELDCAT-TABNAME = ‘VBAP’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 2.
W_FIELDCAT-FIELDNAME = ‘MATNR’.
W_FIELDCAT-SELTEXT_M = ‘SIN MATERIAL’.
W_FIELDCAT-TABNAME = ‘VBAP’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 3.
W_FIELDCAT-FIELDNAME = ‘MATKL’.
W_FIELDCAT-SELTEXT_M = ‘COLCHONETA DE GRUPO’.
W_FIELDCAT-TABNAME = ‘VBAP’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 4.
W_FIELDCAT-FIELDNAME = ‘NETWR’.
W_FIELDCAT-SELTEXT_M = ‘VALOR NÚMERO’.
W_FIELDCAT-TABNAME = ‘VBAP’.
APÉNDICE W_FIELDCAT A T_FIELDCAT.
BORRAR W_FIELDCAT.
W_KEYINFO-HEADER01 = ‘VBELN’.
W_KEYINFO-ITEM01 = ‘VBELN’.
FUNCIÓN DE APLICACIÓN ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’
EXPORTACIONES
I_INTERFACE_CHECK = »
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = »
I_CALLBACK_USER_COMMAND = »
IS_LAYOUT =
IT_FIELDCAT = T_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = ‘X’
I_SAVE = » ‘
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = «VBAK»
i_tabname_item = ‘VBAP’
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = W_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTANTE
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
mesas
t_outtab_header = T_VBAK
t_outtab_item = T_VBAP
Excepciones
PROGRAM_ERROR = 1
OTRO = 2
.
SI sy-subrc <> 0.
TIPO DE ID DE MENSAJE SY-MSGID SY-MSGNO NÚMERO SY-MSGNO
LE SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
TERMINARA SI.
ENDFORM.
Ex miembro
Hola
‘PARA TODAS LAS ENTRADAS’ se utiliza para mejorar el rendimiento de nuestros sistemas
su buena práctica es escribir código que use menos acceso a la base de datos.
‘PARA TODAS LAS ENTRADAS’ se utiliza con tablas internas. donde se requieren datos de tres tablas. puedes hacerlo de dos formas.
1) obtenga datos para itab individual y utilícelos con ‘PARA TODAS LAS ENTRADAS’
y el número de otras tablas.
o
2) use uniones internas para tomar datos de dos tablas y colocarlos en itab1. ahora use ‘PARA TODAS LAS ENTRADAS’ con otra selección de statmt y use el itab1 y complete el tercer itab
mismo código de muestra:
seleccione vbeln
posnr
matwa
matkl
de vbap a la tabla vbap_it donde vbeln está en salesdoc.
seleccione vbeln
erdat
ernam
de vbak a la tabla vbap_it1 para todas las entradas en vbap_it
donde vbeln = vbap_it-vbeln.
utilizar dentro de su prog. y la población itab1
luego use cada entrada en la siguiente pregunta seleccionada
puntos de recompensa si es útil
Sobre
mano
Ex miembro
Hola,
Consulte el código adjunto.
SELECCIONAR belnr
gjahr
bukrs
awkey
EN LA TABLA i_bkpf
Ó bkpf
PARA TODAS LAS ENTRADAS EN i_bsak
DONDE belnr = i_bsak-belnr
Y gjahr = i_bsak-gjahr
Y bukrs = i_bsak-bukrs.