MUNDOSAP

Regresar   MUNDOSAP > CONSULTORIA > FI - CONTABILIDAD FINANCIERA
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 16/01/09, 07:48:03
raulgar raulgar is offline
Junior Member
 
Fecha de Ingreso: dic 2007
Mensajes: 28
Realizar Abono mediante BAPI BAPI_ACC_DOCUMENT_POST

Hola,

Tengo el siguiente problema. Cuando utilizo esta bapi para crear el documento, si la cantidad de la factura es negativa, me tiene que realizar un abono cargando en la primera posición un 31. Sin embargo me realiza un cargo, introduciendo un 21. He estado mirando si hay algún parámetro para indicarle que realice el asiento al 31 pero no encuentro nada.

Os pongo el link a dos capturas, una con el abono mal al 21 y otra que sería correcta al 31:


A continuación os pego el código usado para rellenar las estructuras que le paso a la BAPI:

*&---------------------------------------------------------------------*
*& Form cargar_datos_documentheader
*&---------------------------------------------------------------------*
* Carga de la estructura DOCUMENTHEADER
*----------------------------------------------------------------------*
form cargar_documentheader.

"Clase de documento
wt_documentheader-doc_type = w_clfac.
"Fecha de documento
wt_documentheader-doc_date = sy-datum.
"Fecha Contabilizacion
wt_documentheader-pstng_date = wp_fechc.
"Referencia
wt_documentheader-ref_doc_no = wt_factura-vbeln.
"Sociedad
if wp_mmpp = 'X'.
wt_documentheader-comp_code = '0101'.
else.
wt_documentheader-comp_code = wt_factura-kunrg+1(4).
endif.
"Texto cabecera documento
if wp_mmpp = 'X'.
concatenate 'FARLINE' ' ' sy-datum+4(2) '/' sy-datum(4) into
wt_documentheader-header_txt.
elseif wp_sum = 'X'.
concatenate 'Suministro COFARES' ' ' sy-datum+4(2) '/'
sy-datum(4) into wt_documentheader-header_txt.
else.
concatenate 'Servicio Suministro' ' ' sy-datum+4(2) '/'
sy-datum(4) into wt_documentheader-header_txt.
endif.
"Usuario
wt_documentheader-username = sy-uname.

append wt_documentheader.

endform. " cargar_datos_documentheader

*&---------------------------------------------------------------------*
*& Form CARGAR_DATOS_ACOUNTPAYABLE
*&---------------------------------------------------------------------*
* Carga de la estructura ACCOUNTPAYABLE
*----------------------------------------------------------------------*
form cargar_acountpayable.

w_posicion = 1.
"Posicion
wt_accountpayable-itemno_acc = w_posicion.
"Acreedor
if wp_ic = 'X'.
concatenate 'P' wt_factura-vkorg into wt_accountpayable-vendor_no.
else.
if wp_acree is initial.
concatenate 'P' wt_factura-vkorg into wp_acree.
endif.
wt_accountpayable-vendor_no = wp_acree.
endif.
"Fecha base
wt_accountpayable-bline_date = sy-datum.
"Texto
select name1 into wt_accountpayable-item_text from kna1
where kunnr = wt_factura-kunag.
endselect.

append wt_accountpayable.

endform. " CARGAR_DATOS_ACOUNTPAYABLE


*&---------------------------------------------------------------------*
*& Form CARGAR_DATOS_ACCOUNTGL
*&---------------------------------------------------------------------*
* Cargo la estructura ACCOUNTGL
*----------------------------------------------------------------------*
form cargar_accountgl.

loop at wt_posiciones_normal.

w_posicion = w_posicion + 1.
"Posicion
wt_accountgl-itemno_acc = w_posicion.
"Indicador de impuestos
wt_accountgl-tax_code = wt_posiciones_normal-mwskz.
replace wt_accountgl-tax_code(1) with 'S'
into wt_accountgl-tax_code.
"Cuenta de mayor
wt_accountgl-gl_account = wp_cuent.
"Centro de coste
if wp_mmpp = 'X'.
select single cencos
from ztb_mm_07
into wt_accountgl-costcenter
where centro = '0301'.
else.
select single cencos
from ztb_mm_07
into wt_accountgl-costcenter
where sociedad = wt_factura-kunrg+1(4)
and centro = wt_posiciones_normal-werks.
endif.
"Centro de beneficio
if wp_mmpp <> 'X'.
select single cebe
from ztb_mm_07
into wt_accountgl-profit_ctr
where sociedad = wt_factura-kunrg+1(4)
and centro = wt_posiciones_normal-werks.
endif.
"Segmento
wt_accountgl-segment = wt_posiciones_normal-segment.

append wt_accountgl.
clear wt_accountgl.

endloop.

loop at wt_posiciones_iva.
data: w_indicador type bapiacgl09-tax_code.

w_indicador = wt_posiciones_iva-mwskz.
replace w_indicador(1) with 'S'
into w_indicador.
read table wt_indicadores with key indicador = w_indicador.
if sy-subrc <> 0.
clear wt_indicadores.
wt_indicadores-indicador = w_indicador.
wt_indicadores-netwr = wt_posiciones_iva-hwbas.
wt_indicadores-mwsbp = wt_posiciones_iva-dmbtr.
append wt_indicadores.
else.
wt_indicadores-netwr = wt_indicadores-netwr +
wt_posiciones_iva-hwbas.
wt_indicadores-mwsbp = wt_indicadores-mwsbp +
wt_posiciones_iva-dmbtr.
modify wt_indicadores index sy-tabix.
endif.
endloop.
endform. " CARGAR_DATOS_ACCOUNTGL

*&---------------------------------------------------------------------*
*& Form CARGAR_DATOS_ACCOUNTTAX
*&---------------------------------------------------------------------*
* Cargo la estructura ACCOUNTTAX
*----------------------------------------------------------------------*
form cargar_accounttax.

loop at wt_indicadores.

w_posicion = w_posicion + 1.
"Posicion
wt_accounttax-itemno_acc = w_posicion.
"Condicion
select single a003~kschl
from konp inner join a003
on konp~knumh = a003~knumh
into wt_accounttax-cond_key
where aland = 'ES' and
mwskz = wt_indicadores-indicador.
"Tipo de impuesto
wt_accounttax-tax_code = wt_indicadores-indicador.

append wt_accounttax.
clear wt_accounttax.

endloop.

endform. " CARGAR_DATOS_ACCOUNTTAX

*&---------------------------------------------------------------------*
*& Form CARGAR_DATOS_CURRENCYAMOUNT
*&---------------------------------------------------------------------*
* Carga de la estructura CURRENCYAMOUNT
*----------------------------------------------------------------------*
form cargar_currencyamount.
data: w_netwr like vbrk-netwr,
w_mwsbk like vbrk-mwsbk.


"---------------POSICION 1-------------------------------------
w_posicion = 1.
"Posicion
wt_currencyamount-itemno_acc = w_posicion.
"Importe
wt_currencyamount-amt_doccur = ws_posicion1-dmbtr * ( - 1 ) .
"Moneda
wt_currencyamount-currency = 'EUR'.

append wt_currencyamount.
clear wt_currencyamount.

"---------------POSICION 2-------------------------------------
loop at wt_posiciones_normal.
w_posicion = w_posicion + 1.
"Posicion
wt_currencyamount-itemno_acc = w_posicion.
"Importe
if wt_posiciones_normal-shkzg = 'S'.
wt_currencyamount-amt_doccur = wt_posiciones_normal-dmbtr * ( -1 ).
else.
wt_currencyamount-amt_doccur = wt_posiciones_normal-dmbtr.
endif.
"Moneda
wt_currencyamount-currency = 'EUR'.

append wt_currencyamount.
clear wt_currencyamount.
endloop.

"---------------POSICION 3-------------------------------------
loop at wt_indicadores.
w_posicion = w_posicion + 1.
"Posicion
wt_currencyamount-itemno_acc = w_posicion.
"Base
wt_currencyamount-amt_base = wt_indicadores-netwr.
"Importe
wt_currencyamount-amt_doccur = wt_indicadores-mwsbp.
"Moneda
wt_currencyamount-currency = 'EUR'.

append wt_currencyamount.
clear wt_currencyamount.
endloop.

endform. " CARGAR_DATOS_CURRENCYAMOUNT


call function 'BAPI_ACC_DOCUMENT_POST'
exporting
documentheader = wt_documentheader
* CUSTOMERCPD =
* CONTRACTHEADER =
* IMPORTING
* OBJ_TYPE =
* OBJ_KEY =
* OBJ_SYS =
tables
accountgl = wt_accountgl
* ACCOUNTRECEIVABLE =
accountpayable = wt_accountpayable
accounttax = wt_accounttax
currencyamount = wt_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = wt_retorno
* PAYMENTCARD =
* CONTRACTITEM =
* EXTENSION2 =
* REALESTATE =
* ACCOUNTWT =
.
Responder Con Cita
  #2  
Viejo 07/04/11, 14:56:18
nyolo nyolo is offline
Junior Member
 
Fecha de Ingreso: may 2006
Mensajes: 4
Me imagino que a nadie le importará, pero respondo para que sirva.

La clave contable la deriva del tipo de cuenta (acreedor, deudor, mayor,...), y del signo del importe. En tu caso, tendrás que multiplicar *-1 para que te de le resultado correcto.
Responder Con Cita
Respuesta


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 00:15:36.


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