Sentencia Read Table entre tablas internas

buenas tardes,

Estoy usando un read table y un loop entre dos tablas internas y tengo entendido que con el SY-SUBRC puedo sacar lo que “concuerda” entre las dos tablas para mostrarlo pero…como hago para que me muestre solamente lo que no concuerde entre las dos tablas internas, por ejemplo.

TABLA A

1 - pizza 100
2 - zapato 200
3 - anillo 500

TABLA B

1 - pizza 100
2 - dinero 50
3 - anillo 500

Resultado con Read Table usando el SY-SUBRC = 0.

1 - pizza 100
3 - anillo 500

Resultado que quiero

2 - zapato 200.

quiza lo que esperaria es una idea de como realizarlo.

muchas gracias por leerme, saludos.

Luis, deduzco que esto es ABAP… o es una consulta para B1 ?

En ABAP no conozco esta funcionalidad para el read table.
Pondrias codigo de ejemplo para verlo?

pues yo lo estoy usando en queries (SBO) pero pues tambien se utiliza en ABAP tengo entendido pero en efecto es una consulta que estoy queriendo hacer

Por favor citá un ejemplo de lo que estás haciendo en SBO.
Lee aquí como pegar código formateado, aca en el foro :slight_smile:

Gracias.

PD: muevo el tema para los de @businessone :thumbsup:

es algo mas de logica y creo que vas por el sy-subrc distintto de 0, puede ser 4.

Tendrias que recorrer tabla A y preguntar si el registro en tabla A existe en tabla B, pero eso lo haces por un index o por una una clave…

read table tabla A into ls_a with key comida eq ls_b-comida.

if sy-subrc diferente de 4.

lo guardas en donde quieras

Sera eso lo que quieres hacer ???

Si Exacto!!! eso es que quiero, un problema de logica pero no entiendo quiza tengo problemas de concepto.

tengo entendido que el SY-SUBRC cuando es cero (0) es porque si encontro mas de un registro, dos (2) cuando encontro mas de dos registros y cuatro (4) es cuando no encontro registros para hacer el enlace. Entonces estaba viendo tu codigo pero donde le diria que los que no estan se guarden en X tabla, te pego el codigo de como voy :frowning:

LOOP AT T_VBAK "loop a primera tabla WHERE VDATU+4(2) = VAR1 "meses AND VDATU+0(4) = '2016' "año AND VBELN+0(2) EQ '11'. "pedido READ TABLE T_VBAK INTO TEMP_VBAK "leyendo 1era tabla WITH TABLE KEY VBELN = T_VBRPK-AUBEL. "llave entre dos tablas IF SY-SUBRC = 0. "si se cumple

cualquier duda me avisas

entiendo que la tabla T_VBAK vendria siendo tu tabla A, ahi ya haces el loop y esta bien.

pero para que la vuelves a leer ?? deberias es leer tu tabla B con la clave de la tabla A

READ TABLE T_VBRPK INTO TEMP_T_VBRPK "leyendo 1era tabla
WITH TABLE KEY VBELN = T_VBAK-AUBEL. "llave entre dos tablas

algo asi, es lo que entiendo

IF SY-SUBRC = 4

append T_VBAK to nueva_tabla.

algo asi…porque ahi lo que estas verificando que el registro que tienes en la tabla A no existe en tu tabla B y por no existir lo guardas en una tabla X que al final lo que va a contener son los registros de tabla A que no se repiten en la tabla B, yo explico medio enredado…sera eso ???

Un poco de trabalenguas al final, lo lei como tres veces pero entendi jajajajajaja seria mas o menos asi??

READ TABLE T_VBRPK INTO TEMP_VBRPK WITH TABLE KEY AUBEL = T_VBAK-VBELN. IF SY-SUBRC = 4. APPEND T_VBAK TO T_NE_VBAK.

lo pruebo y te cuento.

1 me gusta

oye pero para mostrarlo, esta tabla nueva (T_NE_VBAK) tiene los mismos campos que la original (T_VBAK) ?? perdon pro mis preguntas pero es mi primera vez jajaja creo que la tengo que declarar tambien vdd

tranquilo !!! Claro, tienes que declararla y del mismo tipo de la que estas sacando los datos…debes unas cervezas a los panas de la comunidad que esten cerca jajajajaja !! o tu estas por chile ?? jajaja

ahora yo no entiendo…me perdi !!! no es abap ?? porque las sentencias que te estoy dando son propias de abap :s

Si si si… ahora ya modifique un poco el codigo y me quedo mas o menos asi

READ TABLE T_VBRPK WITH KEY AUBEL = T_VBAK-VBELN. IF SY-SUBRC = 4. APPEND T_VBAK TO T_NE_VBAK. ENDIF. CASE VAR1. WHEN '01'. IT_DATA-VALOR1 = IT_DATA-VALOR1 + T_NE_VBAK-NETWR2.

al probar el resultado no me muestra datos, agregue un poco del codigo porque vaya, grabe lo de la tabla T_VBAK a la T_NE y para mostrar los datos estoy usando de referencia esta ultima tabla (T_NE_VBAK), lo otro es que use WITH KEY ya que AUBEL no es llave de tabla.

Estas trabjando con ABAP para SAP ECC, o estas en SBO, SAP Business Object?

juela jajaja no se, no se ni que significan esos gerogrificos :tired_face: pero todo lo que me ha puesto @canuto me ha servido bastante bien

Tengo poco mas de un año de estar en el ambito productivo de la empresa,
 que los procesos se cumplan como debe dentro de modulos MM y WM, 
ahorita me encuentro cerca de meterme al rio ABAP.

Ya entiendo. Estas lanzando codigo ABAP, pero no sabes del todo lo que estas haciendo, hazlo mas facil y hablanos de lo que estas modificando, estas creando un reporte, o estas dando un soporte, o estas practicando codigo abap?

1 me gusta

Nahhhhh yo ya me perdi mi pana…resolviste ?? no entiendo, si resolviste comentanos y si algo de aca te sirvio marca una solucion !!

Lo otro es…lo que yo te estando dando es codigo abap, para que modulo o que parte de sap lo estas usando tu ?? esto para definir la categoria

Hmmm…Esto NO es Sap Business One, esto es ABAP puro y duro…

Esta pregunta solo hizo ruido, esperemos que haya encontrado solucion.

La movere al apartado de consultas generales.

1 me gusta

No no he podido resolver, hay algo que no me esta dando bien. Estoy trabajando en un reporte para los dueños, que te puedo decir…es sobre facturacion, lo que la empresa factura anualmente y ya mas o menos lo tengo casi completo solo me faltan unas cositas, te muestro como va el reporte hasta el momento:

lo que me falta es que los Pedidos facturados tienen que restar a los pedidos planificados y para eso estoy usando las tablas VBAK (pedidos planificados) vs VBRP (pedidos facturados) es por eso que yo te pedia una forma de que en un cruce poder quedarme solamente los que no estan en una segunda tabla, asi solo mantengo vivos los pedidos planificados que no han sido facturados segun el mes.

pero nose porque no me toma en cuenta con el read table :frowning: :frowning: :frowning: