ABAP - Batch Input para Transacción F-51

 
Vista:
sin imagen de perfil

Batch Input para Transacción F-51

Publicado por Carolina (2 intervenciones) el 11/07/2018 00:22:00
Buenas Tardes.
Muchas gracias por el apoyo. Me gustaría que alguien pudiese ayudarme con una solución para Compensar Automáticamente Partidas Restantes por la Transacción F-51. Empecé con la programación de un Batch Input, pero he tenido muchos inconvenientes y resulta bastante inestable.
Gracias de nuevo por sus respuestas... Pleaseeee
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Batch Input para Transacción F-51

Publicado por Alejandro (226 intervenciones) el 13/04/2023 22:20:50
¡Hola Carolina! Para compensar automáticamente partidas restantes por la transacción F-51, hay una forma más estable y segura de hacerlo mediante el uso de la función RFC "BAPI_ACC_DOCUMENT_POST".

Primero, deberás crear un programa ABAP que llame a la función BAPI_ACC_DOCUMENT_POST con los datos necesarios para la compensación. Aquí te dejo un ejemplo de cómo podrías hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
REPORT z_compensar_partidas_rest.
 
DATA: lt_return    TYPE bapiret2_t,
      ls_document  TYPE bapi_acc_document_post,
      lt_accountgl TYPE bapi_acgl_item_t,
      ls_accountgl TYPE bapi_acgl_item.
 
* Datos para la cabecera del documento
ls_document-doc_date  = sy-datum. "Fecha del documento
ls_document-pstng_date = sy-datum. "Fecha de contabilización
ls_document-doc_type  = 'SA'.     "Tipo de documento
ls_document-comp_code = 'XXXX'.   "Código de sociedad
 
* Datos para la cuenta contable
ls_accountgl-itemno_acc = '0001'.         "Número de cuenta"
ls_accountgl-gl_account  = 'XXXXXXXXXX'. "Cuenta de mayor"
ls_accountgl-item_text  = 'Compensación automática'. "Texto"
 
APPEND ls_accountgl TO lt_accountgl.
 
* Datos para la posición del documento
ls_document-item_data-acct  = 'XXXXXXXXXX'. "Cuenta de mayor"
ls_document-item_data-wt_val = 100.         "Valor de la posición"
ls_document-item_data-wt_cur = 'USD'.       "Moneda de la posición"
ls_document-item_data-currency_amount = 100. "Importe en moneda local"
ls_document-item_data-acctit_tax = ' '.     "Impuesto"
 
ls_document-accountgl = lt_accountgl.
 
* Llamada a la función BAPI_ACC_DOCUMENT_POST
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    documentheader = ls_document
  IMPORTING
    return         = lt_return.
 
IF lt_return[] IS NOT INITIAL.
  WRITE: / 'Error al compensar partidas restantes:'.
  LOOP AT lt_return INTO DATA(ls_return).
    WRITE: / ls_return-type, ls_return-id, ls_return-number, ls_return-message.
  ENDLOOP.
ELSE.
  WRITE: / 'Partidas restantes compensadas correctamente'.
ENDIF.

En este ejemplo, se define la cabecera del documento con la fecha, el tipo de documento y el código de sociedad. Luego, se definen los datos de la cuenta contable y los datos de la posición del documento. Finalmente, se llama a la función "BAPI_ACC_DOCUMENT_POST" con los datos necesarios y se verifica si ha habido algún error mediante la tabla "lt_return".

Este es solo un ejemplo básico y deberás adaptar los datos según tus necesidades. Espero que esto te ayude a compensar automáticamente partidas restantes de manera más estable y segura.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar