Difference between revisions of "SAP SD FAQ"
From SapWiki
| Line 29: | Line 29: | ||
ID del texto Z999 | ID del texto Z999 | ||
Idioma &CONTROL_PARAMETERS-LANGU& | Idioma &CONTROL_PARAMETERS-LANGU& | ||
| + | |||
| + | ==Factura Cuotas== | ||
| + | <nowiki>Para calcular el valor de la cuota es necesario llamar a function BILLING_SCHEDULE_CREATE_T052S y alimentar con los siguientes valores a los Parámetros p.import | ||
| + | |||
| + | ZTERM: VBRK-ZTERM | ||
| + | WERT: (suma de todas las posiciones XVBRP-KZWI2) – (suma de todas las posiciones del valor absoluto XVBRP -KZWI1), | ||
| + | WAERK: CLP | ||
| + | FKDAT: VBKD-FKDAT | ||
| + | SKFBT: 0,00 | ||
| + | VALTG: 00 | ||
| + | VALDT: (vacío) | ||
| + | I_COMPANY_CODE: VBRK-BUKRS | ||
| + | |||
| + | |||
| + | Nota: Para obtener el número total de cuotas (XX) filtrar la tabla VBKD por VBELN y traer el campo ZTERM, con este valor filtrar la tabla T052S y listar la tabla por orden ascendente del campo RATNR y trae el último valor. | ||
| + | |||
| + | En la tabla ZFPLT se muestra el valor de las cuotas en el campo ZFPLT -FAKWR . | ||
| + | Se aprecia que todos los registros de ZFPLT -FAKWR son iguales menos el último, por lo cual estos corresponderian a las (XX-1) cuotas y la última a la cuota que falta. | ||
| + | |||
| + | Al ejecutar la función en la tabla ZFPLT si aprece más de 2 registros y si es que estos registros tienen la misma fecha liquidación (ZFPLT-NFDAT) se debe sumar los registros del campo “Valor a Fact.” (ZFPLT-FAKWR). | ||
| + | |||
| + | |||
| + | types: begin of ty_sim_pos, | ||
| + | CUOTA_NRO type RATNR, | ||
| + | MONTO_CUOTA type KZWI1, | ||
| + | WAERK type WAERK, | ||
| + | end of ty_sim_pos. | ||
| + | |||
| + | types ty_t_sim_pos. type table of ty_sim_pos. | ||
| + | data gt_sim_pos type ty_t_sim_pos. | ||
| + | |||
| + | READ TABLE gt_xvbkd INTO g_xvbkd | ||
| + | WITH KEY vbeln = g_vbdka-vbeln | ||
| + | posnr = c_initial. "'000000'" | ||
| + | |||
| + | SELECT ratnr ratpz ratzt FROM t052s INTO TABLE gt_t052s | ||
| + | WHERE zterm = g_vbdka-zterm. | ||
| + | |||
| + | |||
| + | *MONTO_VENTA.MONTO_ABONO. | ||
| + | LOOP AT gt_xvbap INTO ls_xvbap. | ||
| + | ADD ls_xvbap-kzwi2 TO g_monto_venta. | ||
| + | g_monto_abono = g_monto_abono | ||
| + | + ABS( ls_xvbap-kzwi1 ). | ||
| + | ENDLOOP. | ||
| + | |||
| + | *MONTO_CREDITO. | ||
| + | g_monto_credito = g_monto_venta - g_monto_abono. | ||
| + | |||
| + | *WAERK. | ||
| + | READ TABLE gt_xvbap INTO ls_xvbap INDEX 1. | ||
| + | IF sy-subrc = 0. | ||
| + | g_waerk = ls_xvbap-waerk. | ||
| + | ENDIF. | ||
| + | |||
| + | |||
| + | * Calculo de Cuotas | ||
| + | DATA: lt_zfplt TYPE STANDARD TABLE OF fpltvb, | ||
| + | lt_zfplt_aux TYPE STANDARD TABLE OF fpltvb, | ||
| + | ls_zfplt TYPE fpltvb, | ||
| + | ls_zfplt_aux TYPE fpltvb, | ||
| + | ls_sim_pos TYPE ty_sim_pos. | ||
| + | |||
| + | REFRESH: pt_sim_pos. | ||
| + | |||
| + | CALL FUNCTION 'BILLING_SCHEDULE_CREATE_T052S' | ||
| + | EXPORTING | ||
| + | zterm = g_vbdka-zterm | ||
| + | wert = g_monto_cred | ||
| + | waerk = c_waerk "CLP" | ||
| + | fkdat = g_xvbkd-fkdat | ||
| + | skfbt = c_skfbt "0.00" | ||
| + | valtg = c_valtg "00" | ||
| + | valdt = c_valdt "space" | ||
| + | i_company_code = g_vbdka-bukrs_vf | ||
| + | TABLES | ||
| + | zfplt = lt_zfplt | ||
| + | EXCEPTIONS | ||
| + | no_entry_t052s = 1 | ||
| + | no_zfbdt = 2 | ||
| + | no_entry_t052 = 3 | ||
| + | no_billing_schedule = 4 | ||
| + | no_entry_in_t001r_found = 5 | ||
| + | OTHERS = 6. | ||
| + | IF sy-subrc NE 0 AND sy-subrc NE 4. | ||
| + | PERFORM protocol_update. | ||
| + | retcode = 1. | ||
| + | EXIT. | ||
| + | ENDIF. | ||
| + | |||
| + | IF g_vbdka-zterm = c_as01 | ||
| + | OR g_vbdka-zterm = c_ts01. | ||
| + | lt_zfplt_aux[] = lt_zfplt[]. | ||
| + | REFRESH lt_zfplt. | ||
| + | |||
| + | LOOP AT lt_zfplt_aux INTO ls_zfplt_aux. | ||
| + | CLEAR ls_zfplt. | ||
| + | la_zfplt-nfdat = ls_zfplt_aux-nfdat. | ||
| + | ls_zfplt-fakwr = ls_zfplt_aux-fakwr. | ||
| + | COLLECT ls_zfplt INTO lt_zfplt. | ||
| + | ENDLOOP. | ||
| + | |||
| + | ENDIF. | ||
| + | |||
| + | LOOP AT lt_zfplt INTO ls_zfplt. | ||
| + | |||
| + | AT NEW fakwr. | ||
| + | IF sy-tabix NE 1. | ||
| + | ls_sim_pos-cuota_nro = sy-tabix - c_1. | ||
| + | APPEND ls_sim_pos TO gt_sim_pos. | ||
| + | ENDIF. | ||
| + | ENDAT. | ||
| + | |||
| + | ls_sim_pos-monto_cuota = ls_zfplt-fakwr. | ||
| + | ls_sim_pos-waerk = g_waerk. | ||
| + | |||
| + | AT LAST. | ||
| + | *CUOTA_NRO. | ||
| + | IF gt_sim_pos IS NOT INITIAL. | ||
| + | ls_sim_pos-cuota_nro = c_1. | ||
| + | ELSE. | ||
| + | ls_sim_pos-cuota_nro = sy-tabix. | ||
| + | ENDIF. | ||
| + | **MONTO_CUOTA. | ||
| + | * ls_sim_pos-monto_cuota = ls_zfplt-fakwr. | ||
| + | **WAERK. | ||
| + | * ls_sim_pos-waerk = g_waerk. | ||
| + | APPEND ls_sim_pos TO gt_sim_pos. | ||
| + | ENDAT. | ||
| + | |||
| + | ENDLOOP. | ||
| + | |||
| + | ENDFORM. " F_FILL_ITEMS_SIM</nowiki> | ||
[[Category:SD]] | [[Category:SD]] | ||
Revision as of 19:45, 5 April 2020
Contents
Autorización grabar variante en Transacción VF05
Para que un usuario pueda grabar una variante, el parámetro de usuario SD_VARIANT_MAINTAIN, tiene que tener el valor ‘A’, los valores posibles son:
SD_VARIANT_MAINTAIN = ' ' => no variant maintenance allowed SD_VARIANT_MAINTAIN = 'U' => only user-specific variants can be maintained SD_VARIANT_MAINTAIN = 'X' => only standard variants can be maintained SD_VARIANT_MAINTAIN = 'A' => both standard variants and user-specific variants may be maintained
ver/actualizar todas las clases de mensaje
transacción: NACU Las clases de mensaje se pueden ver en la tabla T685B TNAPR Programa impresión de mensajes: RSNAST00 , RSNAST0D
Impresión Entregas
- Smartform entrega: LE_SHP_DELNOTE
- Programa impresion Entregas (Smartforms): RLE_DELNOTE
- BADI datos adicionales impresion Entrega: BADI_DLV_PRTDATA
Impresión Facturas
- Actualizar clases de mensaje factura: transacción V/40
- Programa de Impresión de facturas vía SMARTFORM: ver programa RLB_INVOICE
- Smartform Factura: LB_BIL_INVOICE
- Programa de Impresión de facturas vía Adobe forms: ver programa SD_BIL_PRINT01, adobe form SD_INVOICE_FORM01 (tran. SFP)
- Función de obtención de datos para impresión: LB_BIL_INV_OUTP_READ_PRTDATA, esta posee la badi BADI_INV_PRTDATA para adjuntar/modificar datos de la factura, si se desea agregar datos de la factura se debe ampliar la estructura LBBIL_INVOICE.
- Para agregar textos de factura utilizar Texto include como:
Nombre de texto &IS_BIL_INVOICE-HD_GEN-BIL_NUMBER& Objeto de texto VBBK ID del texto Z999 Idioma &CONTROL_PARAMETERS-LANGU&
Factura Cuotas
Para calcular el valor de la cuota es necesario llamar a function BILLING_SCHEDULE_CREATE_T052S y alimentar con los siguientes valores a los Parámetros p.import
ZTERM: VBRK-ZTERM
WERT: (suma de todas las posiciones XVBRP-KZWI2) – (suma de todas las posiciones del valor absoluto XVBRP -KZWI1),
WAERK: CLP
FKDAT: VBKD-FKDAT
SKFBT: 0,00
VALTG: 00
VALDT: (vacío)
I_COMPANY_CODE: VBRK-BUKRS
Nota: Para obtener el número total de cuotas (XX) filtrar la tabla VBKD por VBELN y traer el campo ZTERM, con este valor filtrar la tabla T052S y listar la tabla por orden ascendente del campo RATNR y trae el último valor.
En la tabla ZFPLT se muestra el valor de las cuotas en el campo ZFPLT -FAKWR .
Se aprecia que todos los registros de ZFPLT -FAKWR son iguales menos el último, por lo cual estos corresponderian a las (XX-1) cuotas y la última a la cuota que falta.
Al ejecutar la función en la tabla ZFPLT si aprece más de 2 registros y si es que estos registros tienen la misma fecha liquidación (ZFPLT-NFDAT) se debe sumar los registros del campo “Valor a Fact.” (ZFPLT-FAKWR).
types: begin of ty_sim_pos,
CUOTA_NRO type RATNR,
MONTO_CUOTA type KZWI1,
WAERK type WAERK,
end of ty_sim_pos.
types ty_t_sim_pos. type table of ty_sim_pos.
data gt_sim_pos type ty_t_sim_pos.
READ TABLE gt_xvbkd INTO g_xvbkd
WITH KEY vbeln = g_vbdka-vbeln
posnr = c_initial. "'000000'"
SELECT ratnr ratpz ratzt FROM t052s INTO TABLE gt_t052s
WHERE zterm = g_vbdka-zterm.
*MONTO_VENTA.MONTO_ABONO.
LOOP AT gt_xvbap INTO ls_xvbap.
ADD ls_xvbap-kzwi2 TO g_monto_venta.
g_monto_abono = g_monto_abono
+ ABS( ls_xvbap-kzwi1 ).
ENDLOOP.
*MONTO_CREDITO.
g_monto_credito = g_monto_venta - g_monto_abono.
*WAERK.
READ TABLE gt_xvbap INTO ls_xvbap INDEX 1.
IF sy-subrc = 0.
g_waerk = ls_xvbap-waerk.
ENDIF.
* Calculo de Cuotas
DATA: lt_zfplt TYPE STANDARD TABLE OF fpltvb,
lt_zfplt_aux TYPE STANDARD TABLE OF fpltvb,
ls_zfplt TYPE fpltvb,
ls_zfplt_aux TYPE fpltvb,
ls_sim_pos TYPE ty_sim_pos.
REFRESH: pt_sim_pos.
CALL FUNCTION 'BILLING_SCHEDULE_CREATE_T052S'
EXPORTING
zterm = g_vbdka-zterm
wert = g_monto_cred
waerk = c_waerk "CLP"
fkdat = g_xvbkd-fkdat
skfbt = c_skfbt "0.00"
valtg = c_valtg "00"
valdt = c_valdt "space"
i_company_code = g_vbdka-bukrs_vf
TABLES
zfplt = lt_zfplt
EXCEPTIONS
no_entry_t052s = 1
no_zfbdt = 2
no_entry_t052 = 3
no_billing_schedule = 4
no_entry_in_t001r_found = 5
OTHERS = 6.
IF sy-subrc NE 0 AND sy-subrc NE 4.
PERFORM protocol_update.
retcode = 1.
EXIT.
ENDIF.
IF g_vbdka-zterm = c_as01
OR g_vbdka-zterm = c_ts01.
lt_zfplt_aux[] = lt_zfplt[].
REFRESH lt_zfplt.
LOOP AT lt_zfplt_aux INTO ls_zfplt_aux.
CLEAR ls_zfplt.
la_zfplt-nfdat = ls_zfplt_aux-nfdat.
ls_zfplt-fakwr = ls_zfplt_aux-fakwr.
COLLECT ls_zfplt INTO lt_zfplt.
ENDLOOP.
ENDIF.
LOOP AT lt_zfplt INTO ls_zfplt.
AT NEW fakwr.
IF sy-tabix NE 1.
ls_sim_pos-cuota_nro = sy-tabix - c_1.
APPEND ls_sim_pos TO gt_sim_pos.
ENDIF.
ENDAT.
ls_sim_pos-monto_cuota = ls_zfplt-fakwr.
ls_sim_pos-waerk = g_waerk.
AT LAST.
*CUOTA_NRO.
IF gt_sim_pos IS NOT INITIAL.
ls_sim_pos-cuota_nro = c_1.
ELSE.
ls_sim_pos-cuota_nro = sy-tabix.
ENDIF.
**MONTO_CUOTA.
* ls_sim_pos-monto_cuota = ls_zfplt-fakwr.
**WAERK.
* ls_sim_pos-waerk = g_waerk.
APPEND ls_sim_pos TO gt_sim_pos.
ENDAT.
ENDLOOP.
ENDFORM. " F_FILL_ITEMS_SIM