PDA

Ver la Versión Completa : Ayuda con Items en un pedido


JELR87
18/11/10, 22:21:39
buenas tardes Abapers

Tengo el siguiente problema espero que alguien me pueda apoyar estoy dando de alta pedidos de ventas con la bapi BAPI_SALESDOCUMENT_CREATFROMDAT2 para esto claro todo funciona de maravilla si el pedido tiene un item, pero si tiene dos pues ahi es donde camina, la carga es desde un archivo csv separado por lineas y despues por campos en cada coma, el detalle es que aun no encuentro la manera de ordenar la informacion para que para un mismo pedido se agregen dos o mas items a la bapi, tratare de imitar el archivo de carga de la siguiente manera:

Clase Org div canal Solicitante N.pedido Fecha Material cantidad
ZTA 2200 1 1 100000000 190 13.17.2010 300000000 1
ZTA 2200 1 1 100000000 190 13.17.2010 400000000 10
ZTA 2200 1 1 100000000 190 13.17.2010 800000000 15
ZTA 2200 1 1 100000000 20 25.10.2010 300000000 6
ZTA 2200 1 1 100000000 30 05.5.2010 300000000 9
ZTA 2200 1 1 100000000 800 26.01.2009 300000000 17
ZTA 2200 1 1 100000000 100 02.10.2008 300000000 90
ZTA 2200 1 1 100000000 10 27.01.1987 300000000 100

hasta el momento tengo todo en una Tabla Interna pero al momento de meterlo a la bapi, no encuentro la manera de enviarle varios materiales en un solo Loop porque el loop me lee linea por linea de la TI, alguien que tenga alguna recomendacion, me dijeorn que podia usar Loop At End y con eso quedaba pero aun no encuentro ejemplos consisos a mi escenario, pero sigo investigando, ovbio no hace falta mencionar que soy Jr y novato en el Lenguaje ABAP.

Este es parte del codigo que llevo:

Form para llenar la TI.

Form llenatabla_pedido.

LOOP AT it_datatab ASSIGNING <fs_string>.
SPLIT <fs_string> AT c_comma INTO
wa_record-p_auart
wa_record-p_vkorg
wa_record-p_vtweg
wa_record-p_spart
wa_record-p_sold
"wa_record-p_ship
wa_record-p_ordnum
wa_record-p_pdate
wa_record-p_matnr
wa_record-p_menge.

MOVE sy-tabix TO wa_record-llave.
MOVE sy-tabix TO wa_error-llave.
MOVE 0 TO wa_record-estatus.


*Cambia el formato fecha de DD.MM.AAAA a AAAAMMDD.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = wa_record-p_pdate
IMPORTING
DATE_INTERNAL = wa_record-p_pdate
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2.

*Rellena con ceros a la izquierda el campo de solicitante.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = wa_record-p_sold
IMPORTING
OUTPUT = wa_record-p_sold.

*Rellena con ceros a la izquierda el campo de material.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = wa_record-p_matnr
IMPORTING
OUTPUT = wa_record-p_matnr.

APPEND wa_record to it_record.
endloop.
sort it_record by p_ordnum.

ENDFORM.

y con lo que estoy trabado es el form para pasar lOS DIFERENTES ITEMS A UNA BAPI.

Saludos

PD si no me explique bien diganme para re-plantearlo.

bisonye
19/11/10, 06:52:40
Pues no acabo de entender tu duda, pero creo que es por que es viernes y estoy espesito...

A ver, según veo tu tabla tienes mezclados los datos de cabecera y posición y entiendo que tu problema es separarlos.

Como el primer campo que cambia es la posición puedes utilizar at new (cuando cambia la entrada) y at end of (en la última línea antes del cambio).

Creo que puedes hacer el control de cabeceras con la fecha. At new fecha sería la primera línea de posición de esa cabecera at end of fecha sería la última línea de posición de esa cabecera.

No se si me explico.

Saludos

Dennis Urbano E.
21/11/10, 15:40:30
Lo que entendí es que debes hacer esto:



Loop at it_data.

AT NEW Pedido.
Llenas datos de cabecera para la bapi
endat.

Llenas datos de posiciones

At end of pedido.

CALL BAPI

endat.

endloop.


Espero sea eso lo que busques, es algo asi como lo que dijo Bisonye