FBL5N consulta artículos pendientes del cliente
Método de compensación
Liquidación estándar: se han liquidado todas las líneas pendientes
Parcialmente despejado: la línea que está parcialmente despejada todavía está pendiente, y las otras líneas están despejadas, y se genera una línea sin despejar. Consulte la línea parcialmente despejada
Liquidación restante: todas las líneas de pedido originales se liquidan y se genera un nuevo comprobante de artículo sin liquidar
Hay dos formas de pago para los clientes
Recibo normal de compensación de pago: factura al cliente, el cliente paga directamente, al hacerlo, los comprobantes contables se compensarán automáticamente. Primero borre la cuenta en fb05 y luego ingrese la línea de asunto manual.
Compensación de pago temporal: compensación con pago anticipado (utilice comprobantes y facturas contables de pago anticipado al compensar las cuentas).
Teneduría de libros en el momento del recibo anticipado, débito a clientes (clientes de facturas fijas) facturas de aceptación del libro mayor general especiales , recibo anticipado de crédito;
Libro mayor especial para debitar cuentas de clientes recibidas por adelantado
Otro claro
Cuentas por cobrar y por pagar de clientes
El cliente debe ser un cobro del proveedor.
Borrar con BDC
Si desea completar el artículo de línea en la compensación, la pantalla del artículo de línea puede ser diferente. Puede usar NEXT_DYNPRO_SEARCH para determinar la pantalla. Hay 4 pantallas adicionales en total, que también se pueden calcular. Consulte la función ZFM_AR_03_16.
Puede ubicar el artículo de línea del comprobante abierto, consulte ZFM_AR_03_16.
Para pantallas dinámicas, campos obligatorios, etc., se puede utilizar un procesamiento alternativo
DEMOSTRACIÓN DE BDC
formulario frm_acc_clear_bdc.
datos: el comienzo de lt_alv_c ocurre 0,
bukrs como gt_alv-bukrs,
waers como gt_alv-waers,
socio como gt_alv-socio,
dimensión como gt_alv-dimension,
wrbtr como gt_alv-wrbtr,
wrbtr_s como gt_alv-wrbtr,
wrbtr_h como gt_alv-wrbtr,
augbl como gt_alv-augbl,
rtype como gt_alv-rtype,
rtmsg como gt_alv-rtmsg,
final de lt_alv_c.
datos:
* lt_ztfi048b como tabla de ztfi048b con línea de encabezado,
lv_blart como bkpf-blart,
lv_wrbtr_s como gt_alv-wrbtr,
lv_wrbtr_h como gt_alv-wrbtr,
lv_abpos escriba abpos_f05a, "el número de artículo para comenzar a mostrar
lv_s, "La línea S ha alcanzado la cantidad objetivo
lv_h. "La línea H ha alcanzado la cantidad objetivo
* si p_d = 'X' ..
* lv_blart = 'Z1'.
* demás.
* lv_blart = 'Z2'.
* terminara si.
lv_blart = 'AB'.
bucle en gt_alv donde sel = 'X'.
claro: lt_alv_c.
lt_alv_c-bukrs = gt_alv-bukrs.
lt_alv_c-partner = gt_alv-partner.
lt_alv_c-waers = gt_alv-waers.
lt_alv_c-dimension = gt_alv-dimension.
si gt_alv-shkzg = 'S'.
lt_alv_c-wrbtr_s = gt_alv-wrbtr.
elseif gt_alv-shkzg = 'H'.
lt_alv_c-wrbtr_h = gt_alv-wrbtr.
terminara si.
recopilar lt_alv_c.
endloop.
si sy-subrc ne 0.
mensaje e001 (00) con 'Seleccionar al menos una fila'.
terminara si.
elimine lt_alv_c donde wrbtr_s es inicial o wrbtr_h es inicial.
bucle en lt_alv_c.
si lt_alv_c-wrbtr_s <= lt_alv_c-wrbtr_h.
lt_alv_c-wrbtr = lt_alv_c-wrbtr_s.
demás.
lt_alv_c-wrbtr = lt_alv_c-wrbtr_h.
terminara si.
claro: lv_wrbtr_s, lv_wrbtr_h, lv_abpos, lv_s, lv_h.
realice frm_bdc_init.
* buscar
realice frm_bdc_dynnr usando 'SAPMF05A' '0122'.
ejecute frm_bdc_field usando 'DATS' 'BKPF-BLDAT' sy-datum.
ejecute frm_bdc_field usando el espacio 'BKPF-BLART' lv_blart.
ejecute frm_bdc_field usando el espacio 'BKPF-BUKRS' lt_alv_c-bukrs.
ejecute frm_bdc_field usando el sy-datum 'DATS' 'BKPF-BUDAT'.
realice frm_bdc_field usando el espacio 'BKPF-WAERS' lt_alv_c-waers.
* realizar frm_bdc_field usando el espacio 'BKPF-BKTXT' is_head-bktxt. "El número de la orden de trabajo se escribe en el texto del encabezado
* si is_head-kursf no es inicial.
* realice frm_bdc_field usando 'NUM' 'BKPF-KURSF' is_head-kursf. "汇率
* terminara si.
* si is_head-wwert no es inicial.
* realice frm_bdc_field usando'DATS''BKPF-WWERT 'is_head-wwert. "Fecha de conversión
* terminara si.
realice frm_bdc_field usando el espacio'BDC_OKCODE '' = SL '. "Seleccione elementos abiertos
bucle en gt_alv donde socio = lt_alv_c-socio y dimensión = lt_alv_c-dimensión y sel = 'X'.
lv_abpos = lv_abpos + 1.
datos (lv_str) = gt_alv-belnr && gt_alv-gjahr && gt_alv-buzei.
si gt_alv-shkzg = 'S'.
lv_wrbtr_s = lv_wrbtr_s + gt_alv-wrbtr.
demás.
lv_wrbtr_h = lv_wrbtr_h + gt_alv-wrbtr.
terminara si.
* Seleccione el banco de corte para préstamos pendientes
si (lv_s = 'X' y gt_alv-shkzg = 'S') o (lv_h = 'X' y gt_alv-shkzg = 'H').
Seguir.
terminara si.
if (lv_wrbtr_s> = lt_alv_c-wrbtr_h y gt_alv-shkzg = 'S'). "Después de marcar esta línea, no se puede borrar
lv_s = 'X'.
terminara si.
if (lv_wrbtr_h> = lt_alv_c-wrbtr_s y gt_alv-shkzg = 'H').
lv_h = 'X'.
terminara si.
* Seleccionar partidas abiertas
realice frm_bdc_dynnr usando 'SAPMF05A' '0710'.
realice frm_bdc_field usando el espacio'RF05A-AGKOA 'gv_agkoa. "Tipo de cuenta
realice frm_bdc_field usando el espacio'RF05A-AGUMS 'gt_alv-umskz. "ID de libro mayor general especial
*Seleccione
ejecute frm_bdc_field usando el espacio 'BDC_OKCODE' '/ 05'. "选择
realice frm_bdc_dynnr usando'SAPMF05A '' 0733 '. "Seleccione las credenciales en el cuadro emergente
ejecute frm_bdc_field usando el espacio 'RF05A-FELDN (01)' 'BELNR'.
ejecute frm_bdc_field usando el espacio 'RF05A-SEL01 (01)' lv_str.
realice frm_bdc_field usando el espacio'BDC_OKCODE '' = PA '. "Procesar elementos pendientes
* Calcule hasta la última línea y comience a limpiar
si lt_alv_c-wrbtr_s <lt_alv_c-wrbtr_h.
si lv_wrbtr_s = lt_alv_c-wrbtr_s y lv_wrbtr_s <lv_wrbtr_h.
datos (lv_exit) = 'X'.
terminara si.
elseif lt_alv_c-wrbtr_s> lt_alv_c-wrbtr_h.
if lv_wrbtr_h = lt_alv_c-wrbtr_h y lv_wrbtr_s> lv_wrbtr_h.
lv_exit = 'X'.
terminara si.
elseif lt_alv_c-wrbtr_s = lt_alv_c-wrbtr_h.
si lv_wrbtr_h = lt_alv_c-wrbtr_h y lv_wrbtr_s = lv_wrbtr_h.
lv_exit = 'X'.
terminara si.
terminara si.
si lv_exit = 'X'.
* Banco de compensación parcial / restante
si lv_wrbtr_s ne lv_wrbtr_h.
* si p_d = 'X'. "Borrado parcialmente
datos (lv_okcode) = '= PARTE'.
datos (lv_fname) = 'DF05B-PSZAH (01)'.
* elseif p_k = 'X'. "Liquidación restante
lv_okcode = 'DESCANSO'.
lv_fname = 'DF05B-PSDIF (01)'.
* terminara si.
* Manejar elementos abiertos
realice frm_bdc_dynnr usando 'SAPDF05X' '3100'.
ejecute frm_bdc_field usando el espacio 'BDC_OKCODE' lv_okcode.
realice frm_bdc_dynnr usando 'SAPDF05X' '3100'.
ejecute frm_bdc_field usando el espacio 'RF05A-ABPOS' lv_abpos. "定位
realice frm_bdc_field usando el espacio 'BDC_OKCODE' '= / 00'.
realice frm_bdc_dynnr usando 'SAPDF05X' '3100'.
realice frm_bdc_field usando el espacio 'BDC_CURSOR' lv_fname.
realice frm_bdc_field usando el espacio 'BDC_OKCODE' '= PI'. "双击
terminara si.
* Compensación estándar
Salida.
terminara si.
*Visión general
realice frm_bdc_dynnr usando 'SAPDF05X' '3100'.
realice frm_bdc_field usando el espacio 'BDC_OKCODE' '= AB'. "概览
realice frm_bdc_dynnr usando 'SAPMF05A' '0700'.
realice frm_bdc_field usando el espacio'BDC_OKCODE '' = SL '. "Seleccione elementos abiertos
endloop.
*Visión general
realice frm_bdc_dynnr usando 'SAPDF05X' '3100'.
realice frm_bdc_field usando el espacio 'BDC_OKCODE' '= AB'. "概览
realice frm_bdc_dynnr usando 'SAPMF05A' '0700'.
realice frm_bdc_field usando el espacio 'BDC_OKCODE' '= BU'. "保存
realice frm_bdc_call usando 'FB05' 'F5' '312' cambiando lt_alv_c-rtype lt_alv_c-rtmsg.
lt_alv_c-augbl = gt_messtab-msgv1.
modificar lt_alv_c.
endloop.
bucle en gt_alv donde sel = 'X'.
lea la tabla lt_alv_c con socio clave = dimensión gt_alv-socio = dimensión gt_alv.
si sy-subrc = 0.
gt_alv-augbl = lt_alv_c-augbl.
gt_alv-rtype = lt_alv_c-rtype.
gt_alv-rtmsg = lt_alv_c-rtmsg.
modificar gt_alv.
terminara si.
endloop.
endform.
Borrar con función (abandonado, BDC resuelve todos los problemas)
Solo se puede realizar una compensación estándar y restante, no una compensación parcial (no estoy seguro)
form frm_posting_interface_clearing usando uv_hkont cambiando us_alv como gt_alv.
datos: tabla de tipo it_blntab de blntab con línea de encabezado,
it_ftclear tipo de tabla de ftclear con línea de encabezado,
it_ftpost tipo tabla de ftpost con línea de encabezado,
it_fttax tipo tabla de fttax con línea de encabezado.
exportar ebr_id de us_alv-ebr_id a la identificación de memoria 'EBR_POST'.
llamar a la función 'POSTING_INTERFACE_START'
exportador
i_function = 'C' "B = BDC, C = Llamar Trans.
i_keep = 'X' "El indicador de eliminación de cola para la sesión procesada
i_mode = 'N'
excepciones
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
otros = 6.
* Procesamiento de fecha
escribir sy-datum en sy-datum.
escriba us_alv-bank_date a us_alv-bank_date.
populated_ftpost:
'K' 1 'BKPF-BUKRS' us_alv-bukrs, "Código de la empresa
'K' 1 'BKPF-BLART' 'AB',
'K' 1 'BKPF-BLDAT' sy-datum,
'K' 1 'BKPF-BUDAT' us_alv-bank_date,
'K' 1 'BKPF-WAERS' us_alv-currency,
* 'K' 1 'BKPF-XBLNR' 'Prueba',
'P' 1 'RF05A-NEWBS' '40',
'P' 1'BSEG-HKONT 'uv_hkont, "Cuenta bancaria
'P' 1'BSEG-SGTXT '': Efectivo recibido por la venta de bienes y la prestación de servicios laborales ',
'P' 1'BSEG-VBUND '' 1000 ', "Para probar
'P' 1 'COBL-PRCTR' us_alv-prctr.
si us_alv-rstgr no es inicial.
populate_ftpost'P '1'BSEG-RSTGR' us_alv-rstgr. "Código de motivo
terminara si.
* 'P' 1 'BSEG-WRBTR' us_alv-amt_claimed,
* Tramitación bdc del importe
it_ftpost-fnam = 'BSEG-WRBTR'.
escriba us_alv-amt_claimed en it_ftpost-fval (16).
añadir it_ftpost.
*Artículos abiertos
bucle en gt_epic_ebr_seg en datos (ls_epic_ebr_seg) donde ebr_id = us_alv-ebr_id.
data (lv_str) = ls_epic_ebr_seg-belnr && ls_epic_ebr_seg-gjahr && ls_epic_ebr_seg-buzei.
si ls_epic_ebr_seg-part_type = 'K'.
seleccionar solo umskz
en @data (lv_umskz)
de bsik
donde gjahr = @ ls_epic_ebr_seg-gjahr y bukrs = @ ls_epic_ebr_seg-bukrs
y belnr = @ ls_epic_ebr_seg-belnr y buzei = @ ls_epic_ebr_seg-buzei.
elseif ls_epic_ebr_seg-part_type = 'D'.
seleccionar solo umskz
en lv_umskz
de bsid
donde gjahr = ls_epic_ebr_seg-gjahr y bukrs = ls_epic_ebr_seg-bukrs
y belnr = ls_epic_ebr_seg-belnr y buzei = ls_epic_ebr_seg-buzei.
terminara si.
populate_ftclear lv_str us_alv-bukrs lv_umskz ls_epic_ebr_seg-part_type. "concatenar número de documento + año fiscal + número de línea
endloop.
llamar a la función 'POSTING_INTERFACE_CLEARING'
exportador
* i_auglv = 'CAMBIO DE RESERVA'
i_auglv = 'AUSGZAHL'
i_tcode = 'FB05'
* i_sgfunct = 'C'
importador
e_msgid = sy-msgid
e_msgno = sy-msgno
e_msgty = sy-msgty
e_msgv1 = sy-msgv1
e_msgv2 = sy-msgv2
e_msgv3 = sy-msgv3
e_msgv4 = sy-msgv4
* E_SUBRC = SY-SUBRC
mesas
t_blntab = it_blntab
t_ftclear = it_ftclear
t_ftpost = it_ftpost
t_fttax = it_fttax
excepciones
clearing_procedure_invalid = 1
clearing_procedure_missing = 2
table_t041a_empty = 3
transaccion_code_invalid = 4
amount_format_error = 5
too_many_line_items = 6
company_code_invalid = 7
screen_not_found = 8
no_authorization = 9
otros = 10.
si sy-msgty = 'S' y sy-msgid = 'F5' y sy-msgno = '312'.
us_alv-rtype = 'S'.
* us_alv-belnr_clearing = sy-msgv1.
us_alv-belnr = sy-msgv1.
us_alv-rtmsg = us_alv-rtmsg && 'Eliminando correctamente:' && ';'.
us_alv-status_desc = 'Publicado'.
elseif sy-subrc <> 0 o sy-msgty = 'E'.
us_alv-rtype = 'E'.
ID de mensaje sy-msgid tipo sy-msgty número sy-msgno
con sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 en datos (lv_msg).
us_alv-rtmsg = us_alv-rtmsg && '清账 失败 :' && lv_msg && ';'.
terminara si.
llamar a la función 'POSTING_INTERFACE_END'
excepciones
session_not_processable = 1
otros = 2.
si us_alv-rtype = 'S'.
* Reclamado parcialmente y luego hacer un recibo anticipado
si us_alv-status = '025'.
realice frm_acc_post_advance_receipt usando uv_hkont cambiando gt_alv.
terminara si.
terminara si.
endform.
Función restante de compensación
Posición mejorada
El programa principal SAPLFIPI incluye LFIPIF00 formulario transaktion_beenden
FORMULARIO end_transaction USANDO p_no_auth TYPE c.
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" $ "$ \ SE :( 1) Formulario TRANSAKTION_BEENDEN, Iniciar A
* $ * $ - Inicio: (1) ---------------------------------------- ----------------------------------------- $ * $ *
MEJORA 1 ZFI_DOC_POST_CLEAR. "versión activa
"Lógica de compensación parcial
DATOS: GV_ID TYPE CHAR20. "ID DE MEMORIA
DATOS: LT_BDCDATA TIPO TABLA DE BDCDATA.
DATOS: LS_BDCDATA TIPO BDCDATA.
BORRAR: LT_BDCDATA, GV_ID.
CONCATENAR SY-UNAME 'ADD_SCR' EN GV_ID.
IMPORTAR LT_BDCDATA a LT_BDCDATA DESDE LA ID DE MEMORIA GV_ID. "Datos de pantalla suplementarios
SI LT_BDCDATA NO ES INICIAL.
APÉNDICE LÍNEAS DE lt_bdcdata a ft.
BUCLE EN FT DONDE FVAL = '/ 11'.
FT-FVAL = '= PA'.
MODIFICAR PIES
ENDLOOP.
TERMINARA SI.
MEJORA.
demostración de Minth