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




 
 
 
Herramientas Buscar en Tema Desplegado
Prev Mensaje Previo   Próximo Mensaje Próx
  #2  
Viejo 30/05/24, 01:46:29
laureano59 laureano59 is offline
Junior Member
 
Fecha de Ingreso: ene 2012
Mensajes: 8
Re: BAPI para crear factura a partir de una entrega YA contabilizada

Debido a que nadie ha dado una respuesta, les dejo la soluci%u00F3n por si alguien lo requiere:

FUNCTION z_mfsd_gdc0079.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(REF_DOC) TYPE VGBEL
*" EXPORTING
*" VALUE(NUM_FACTURA) TYPE BILL_DOC
*" TABLES
*" LT_RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------

* Declaraci%u00F3n de tablas internas
DATA: lt_billing_data_in TYPE TABLE OF bapivbrk,
lt_success TYPE TABLE OF bapivbrksuccess,
lt_entrega TYPE TABLE OF lips.

* Declaraci%u00F3n de estructuras
DATA: ls_billing_data_in TYPE bapivbrk,
ls_success TYPE bapivbrksuccess,
ls_return TYPE bapiret1,
ls_entrega TYPE lips.

* Declaraci%u00F3n de variables
DATA: lv_cliente TYPE vbak-kunnr, " Cliente
lv_pedido TYPE lips-vgbel, "Pedido
lv_vkorg TYPE likp-vkorg, "Organizaci%u00F3n de ventas
lv_auart TYPE vbak-auart, "Clase de documento de ventas
lv_fkara TYPE tvak-fkara, "Clase de factura propuesta para una factura por pedido
lv_vbtyp TYPE vbak-vbtyp. "Tipo de documento


* Obtener el cliente desde la entrega
CLEAR: lv_cliente, lv_vkorg.
SELECT SINGLE kunnr vkorg
INTO (lv_cliente, lv_vkorg)
FROM likp
WHERE vbeln = ref_doc. " N%u00FAmero de entrega

* Recupero el n%u00FAmero de pedido a partir de la entrega
CLEAR lv_pedido.
SELECT SINGLE vgbel
INTO lv_pedido
FROM lips
WHERE vbeln = ref_doc.

* Recupero datos de la tabla VBAK este es la clase de doc de ventas
CLEAR: lv_auart, lv_vbtyp.
SELECT SINGLE auart vbtyp
INTO (lv_auart, lv_vbtyp)
FROM vbak
WHERE vbeln = lv_pedido.

" Obtener la clase de factura propuesta (Order Billing Type) desde la tabla TVAK
CLEAR lv_fkara.
SELECT SINGLE fkara
INTO lv_fkara
FROM tvak
WHERE auart = lv_auart.

* Recupero los datos del pedido
REFRESH lt_entrega.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_entrega
FROM lips
WHERE vbeln = ref_doc.

IF sy-subrc = 0.
LOOP AT lt_entrega INTO ls_entrega.
CLEAR: ls_billing_data_in.
ls_billing_data_in-salesorg = lv_vkorg. " Organizaci%u00F3n de ventas
ls_billing_data_in-distr_chan = ls_entrega-vtweg. " Canal de distribuci%u00F3n
ls_billing_data_in-division = ls_entrega-spart. " Divisi%u00F3n (Sector)
ls_billing_data_in-doc_type = lv_auart. " Tipo de documento de facturaci%u00F3n - Clase de documento de venta ZTA
ls_billing_data_in-ref_doc = ls_entrega-vbeln. " N%u00FAmero de entrega
ls_billing_data_in-item_categ = ls_entrega-pstyv. "Tipo de posici%u00F3n de documento comercial
ls_billing_data_in-doc_number = ls_entrega-vbeln. "Entrega
ls_billing_data_in-itm_number = ls_entrega-posnr. "Posici%u00F3n del documento de venta
ls_billing_data_in-ordbilltyp = lv_fkara. "Clase de factura propuesta para una factura por pedido
ls_billing_data_in-price_date = sy-datum. "Fecha para la determinaci%u00F3n de precios y tipo de cambio
ls_billing_data_in-ref_doc_ca = lv_vbtyp. "Categor%u00EDa del documento comercial anterior
ls_billing_data_in-sold_to = lv_cliente. "Solicitante
ls_billing_data_in-material = ls_entrega-matnr. " Material
ls_billing_data_in-plant = ls_entrega-werks. " Planta
ls_billing_data_in-ref_doc_ca = 'J'.
"ls_billing_data_in-req_qty = ls_entrega-kwmeng. "Cantidad de pedido acumulada en unidades de ventas
"ls_billing_data_in-sales_unit = ls_entrega-vrkme. "Unidad de ventas
"ls_billing_data_in-currency = ls_entrega-waerk. "Moneda del documento SD (SD document currency)
APPEND ls_billing_data_in TO lt_billing_data_in.
ENDLOOP.
ENDIF.

* Llamar a la BAPI para crear la factura
CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
TABLES
billingdatain = lt_billing_data_in
return = lt_return
success = lt_success.

* Guarda si no hay errores
CLEAR: ls_return.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
* Mostrar el n%u00FAmero de la factura creada
LOOP AT lt_success INTO ls_success.
num_factura = ls_success-bill_doc.
ENDLOOP.
ENDIF.

ENDFUNCTION.
Responder Con Cita
 


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 07:26:23.


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