ABAP - Cambio de LOG ALV estándar en SAP

 
Vista:

Cambio de LOG ALV estándar en SAP

Publicado por Pablo Fernández (1 intervención) el 20/11/2006 18:28:42
Hola,

Estoy utilizando las funciones

BAL_LOG_CREATE, BAL_LOG_MSG_ADD, DDIF_FIELDINFO_GET y
BAL_DSP_LOG_DISPLAY para listar un log ALV tras una ejecución de
programa.

Estas funciones estándares acaban sacando un log pero con un sólo campo.
Quiero que el log me salga con dos campos.

¿Teneis idea de hacerlo de una manera sencilla? Quiero decir, sin tener
que copiar y modificar toda la retaíla de funciones y código.

Gracias de antemano!
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

Cambio de LOG ALV estándar en SAP

Publicado por Alejandro (226 intervenciones) el 12/04/2023 01:53:48
Para cambiar el log ALV estándar en SAP y mostrar dos campos en lugar de uno, puedes seguir los siguientes pasos:

1. Crea una estructura de datos Z que contenga los dos campos que deseas mostrar en el log.
2. Dentro de tu programa, crea un objeto de tipo BALHDR para la cabecera del log y un objeto de tipo BALMSG para cada entrada del log.
3. Utiliza la función BAL_LOG_CREATE para crear el objeto BALHDR para la cabecera del log.
4. Utiliza la función BAL_LOG_MSG_ADD para agregar cada entrada del log utilizando el objeto BALMSG. En el parámetro "msg_id" de esta función, proporciona el identificador de mensaje que deseas utilizar para la entrada del log.
5. Antes de llamar a la función BAL_DSP_LOG_DISPLAY, llama a la función DDIF_FIELDINFO_GET para obtener la información sobre los campos que deseas mostrar en el ALV.
6. Utiliza la función REUSE_ALV_GRID_DISPLAY para mostrar el log ALV con los dos campos que deseas.

Aquí tienes un ejemplo de código que puedes usar como guía:

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
45
46
47
48
49
50
51
52
TYPES: BEGIN OF ty_log_entry,
         field1 TYPE char10,
         field2 TYPE char10,
       END OF ty_log_entry.
 
DATA: lt_log_entries TYPE TABLE OF ty_log_entry,
      ls_log_entry TYPE ty_log_entry,
      lo_balhdr TYPE REF TO cl_bals_log_header,
      lo_balmsg TYPE REF TO cl_bals_log_msg,
      lv_msg_id TYPE balmsg-msgid.
 
* Crear el objeto de cabecera del log
CREATE OBJECT lo_balhdr.
 
* Agregar cada entrada del log
LOOP AT lt_log_entries INTO ls_log_entry.
  CREATE OBJECT lo_balmsg.
  lo_balmsg->msgty = 'I'.
  lo_balmsg->msgno = '001'.
  lo_balmsg->msgv1 = ls_log_entry-field1.
  lo_balmsg->msgv2 = ls_log_entry-field2.
  CALL FUNCTION 'BAL_LOG_MSG_ADD'
    EXPORTING
      i_obj_descr = lo_balmsg
      i_s_msg_id  = lv_msg_id
    EXCEPTIONS
      error_occurred = 1
      OTHERS         = 2.
  IF sy-subrc <> 0.
    * Manejar el error
  ENDIF.
ENDLOOP.
 
* Obtener información sobre los campos que deseas mostrar
CALL FUNCTION 'DDIF_FIELDINFO_GET'
  EXPORTING
    tabname  = 'TU_TABLA'
    langu    = sy-langu
  TABLES
    dfies    = lt_dd_fields
  EXCEPTIONS
    not_found = 1
    OTHERS    = 2.
 
* Mostrar el log ALV con dos campos
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = sy-repid
    i_callback_top_of_page = 'TOP-OF-PAGE'
    i_structure_name   = 'ZCL_LOG_ENTRY'
  TABLES
    t_outtab           = lt_log_entries.

En este ejemplo, 'TU_TABLA' es el nombre de la tabla que estás procesando y 'ZCL_LOG_ENTRY' es el nombre de la estructura de datos que has creado para mostrar los dos campos en el log ALV. Asegúrate de reemplazar estos valores con los nombres adecuados para tu programa.
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