Retenciones en la bapi BAPI_ACC_DOCUMENT_PO

Hola a todos…

Alguien sabe como puedo hacer para considerar retenciones al llamar a la bapi BAPI_ACC_DOCUMENT_POST?

Estoy generando un asiento contable vía la bapi BAPI_ACC_DOCUMENT_POST y funciona correctamente, ahora lo que deseo es que las posiciones ingresadas vía el parámetro ACCOUNTPAYABLE (Items para proveedores) estén sujetas a una retención

Aún no doy con la respuesta y quiero evitar usar Batch Inputs.

Cualquier sugerencia se los agradeciera…

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

:heavy_heart_exclamation: Importante :exclamation: La siguiente respuesta es generada por nuestro Robot AI de Consultoria-SAP denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales y usuarios del sistema podrían verificar la información. ¿Te animas a hacerlo? ¿Aceptas el reto? Puedes responder este debate si sigue abierto!

Si quieres aprender más sobre nuestros sistemas con AI, te esperamos en este artículo.


Hola colega, excelente pregunta. Trabajar con retenciones usando la BAPI BAPI_ACC_DOCUMENT_POST no es inmediato, pero sí es posible si se realiza correctamente la configuración previa y se alimentan los parámetros correctos. Te explico cómo.


:bullseye: Objetivo

Incluir retenciones de impuestos (Withholding Tax) en los documentos contables generados vía BAPI_ACC_DOCUMENT_POST usando posiciones de tipo ACCOUNTPAYABLE.

Esto aplica para documentos contables del módulo FI (Finanzas), como contabilizaciones directas (FB01, F-02) en SAP ERP o S/4HANA.


:white_check_mark: Pasos para considerar retenciones en la BAPI

1. Asegúrate que el proveedor tenga configuradas las retenciones

En el maestro de proveedores (FK02 / BP):

  • Pestaña de Retención de impuestos (Withholding tax)

  • Define el tipo de retención y código válido

  • Esto es obligatorio si vas a usar la BAPI sin batch input


2. Utiliza el parámetro: WITHHOLDINGTAX

La BAPI tiene una tabla interna para definir las retenciones:

WITHHOLDINGTAX STRUCTURE BAPIACWT

Debes poblarla por cada línea de cuenta de proveedor (ACCOUNTPAYABLE) que esté sujeta a retención.

Ejemplo de contenido de WITHHOLDINGTAX:

wa_withtax-itemno_acc = '0000000001'. " Match con ACCOUNTPAYABLE
wa_withtax-wt_type    = 'IR'         " Tipo de retención
wa_withtax-wt_code    = '01'         " Código (definido en customizing)
wa_withtax-wt_tax_base= '1000.00'.   " Base imponible
wa_withtax-wt_tax_amt = '100.00'.    " Monto retenido (opcional)
wa_withtax-wt_tax_rate= '10.00'.     " Porcentaje
APPEND wa_withtax TO it_withtax.

Y luego pasar WITHHOLDINGTAX = it_withtax a la BAPI.

:warning: El campo ITEMNO_ACC debe coincidir con la línea de ACCOUNTPAYABLE.


3. Configura correctamente el customizing de retenciones

En SPRO:

  • Financial Accounting > Accounts Payable > Withholding Tax

  • Asegúrate de que:

    • El tipo y código de retención están definidos

    • El país está correctamente configurado

    • Las cuentas de retención están asociadas a los códigos


4. Otras banderas importantes

Si en el proveedor las retenciones están configuradas como “automáticas”, puedes omitir WITHHOLDINGTAX y SAP las calculará. Pero si no, deberás alimentarla manualmente.


5. Llamado estándar a la BAPI

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    documentheader = wa_header
  TABLES
    accountgl      = it_gl
    accountpayable = it_vendor
    currencyamount = it_amount
    withholdingtax = it_withtax
    return         = it_return.


:hammer_and_wrench: Tips de debugging

  • Ejecuta una transacción FB01 con retención activada

  • Usa la herramienta ST05 (SQL Trace) o S_DEVELOP para ver qué estructuras alimenta SAP

  • O ejecuta en SE37 la BAPI con los mismos datos, y observa el comportamiento


:prohibited: ¿Qué pasa si no configuras esto?

  • SAP no calculará ninguna retención.

  • El documento se contabilizará completo sin deducciones.

  • O puede fallar si el proveedor espera una retención pero no se pasa nada.


Resumen Consultoria-SAP

  • Para aplicar retenciones en BAPI_ACC_DOCUMENT_POST, usa correctamente la tabla WITHHOLDINGTAX (BAPIACWT), vinculando con las líneas de ACCOUNTPAYABLE.

  • Asegúrate de que el proveedor y el customizing de retenciones estén correctamente configurados.

  • Esta solución evita el uso de Batch Input, y aplica a procesos de FI (Finanzas), AP (cuentas por pagar) y localizaciones fiscales.

¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!