Dudas tablas en ABAP

Hola, como estoy comenzando con abap me han surgido algunas dudas básicas, en especial sobre el uso de DB y consultas en ABAP/SAP:

  1. En una tabla interna con 4 registros dos de ellos son iguales, solo varían en los montos. ¿Como hacer para que solo muestre uno con la suma de los dos montos?

  2. En dos tablas, vamos a llamarlas t_entregas y t_doc_aux.

Ambas tablas tienen la siguiente estructura:

DATA: BEGIN OF t_entregas OCCURS 0,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
sernr LIKE equi-sernr,
matnr LIKE equi-matnr,
werks LIKE vbap-werks,
lgort LIKE lips-lgort.
DATA: END OF t_entregas.

DATA: BEGIN OF n_doc_aux OCCURS 0,
vbeln LIKE n_docu-vbeln,
num_pos LIKE n_docu-num_pos.
DATA: END OF n_doc_aux.

Ahora imaginemos que n_doc_aux esta ordenada por num_pos, de menor a mayor.

Necesito ordenar t_entregas en función de n_doc_aux. ¿Es esto posible?

Gracias!

Para el caso de la suma aqui tienes la explicacion de collect y sum para que apliques la que mejor te venga
h_tps://archive.sap.com/discussions/thread/654477

Para el caso de ordenar si haces un join de ambas ?? ya podrias ordenar directamente por num_pos. Depende del uso que vayas a dar …

3 Me gusta

Depende de como llenes la tablas internas; si haces el SELECT directamente ya puedes tener la tabla con la suma de los campos que puedas necesitar.

Por ejemplo, el siguiente código te suma todas las entradas de mercancías de un pedido diferenciando debe/haber y tipo de moneda, adicionando información de los pedidos.

TABLES: ekko.

TYPES: BEGIN OF st_ekbe,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
shkzg TYPE ekbe-shkzg,
vgabe TYPE ekbe-vgabe,
waers TYPE ekbe-waers,
menge TYPE ekbe-menge,
wrbtr TYPE ekbe-wrbtr,
menge_ekpo TYPE ekpo-menge,
netwr_ekpo TYPE ekpo-netwr,
lifnr TYPE ekko-lifnr,
END OF st_ekbe.

DATA: it_ekbe TYPE STANDARD TABLE OF st_ekbe.
SELECTION-SCREEN BEGIN OF BLOCK sel WITH FRAME TITLE text-001.

SELECT-OPTIONS:
s_ebeln FOR ekko-ebeln. " Documento de compras

SELECTION-SCREEN END OF BLOCK sel.

SELECT be~ebeln be~ebelp be~shkzg be~vgabe be~waers SUM( be~menge ) SUM( be~wrbtr )
INTO TABLE it_ekbe FROM ekbe AS be
INNER JOIN ekko AS ko ON ko~ebeln = be~ebeln
INNER JOIN ekpo AS po ON po~ebeln = be~ebeln AND po~ebelp = be~ebelp
WHERE be~ebeln IN s_ebeln AND be~vgabe = ‘1’ AND
ko~bstyp = ‘F’ AND
po~loekz = ’ ’ AND po~elikz <> ‘X’
GROUP BY be~ebeln be~ebelp be~shkzg be~vgabe be~waers .

BREAK-POINT.

Espero que te sirva… :slight_smile:

2 Me gusta

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.