Importante
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.
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.
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.
El campo ITEMNO_ACC debe coincidir con la línea de ACCOUNTPAYABLE.
3. Configura correctamente el customizing de retenciones
En SPRO:
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.
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
¿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!