Documentación SAP
Documentación SAP
Contenido
MODULO VENTAS........................................................................................................................2
Pedidos de Ventas:...................................................................................................................2
Transacción:.........................................................................................................................2
Tablas:..................................................................................................................................2
Estructuras:..........................................................................................................................2
Programas:...........................................................................................................................2
Ejemplo:...............................................................................................................................2
Report Painting............................................................................................................................2
Registrar cambios en el log de modificaciones (CDHDR y CDPOS)...............................................2
ALV...............................................................................................................................................4
Clase CL_SALV_TABLE:.............................................................................................................4
Introducción.........................................................................................................................4
CL_SALV_TABLE a pantalla completa:..................................................................................5
CL_SALV_TABLE dentro de una dynpro:...............................................................................6
Modificar atributos de las columnas..................................................................................14
MODULO VENTAS
Pedidos de Ventas:
Transacción:
VA01 – Alta Pedido de Ventas
VA02 – Modificación Pedido de Ventas
VA03 – Visualización Pedido de Ventas
Tablas:
VBKD (Documento de ventas: Datos comerciales)
VBAK (Documento de ventas: Datos de cabecera)
VBEP (Documento de ventas: Datos de reparto)
Estructuras:
KUWEV (Vista destinatario de mercancía del maestro de clientes)
Programas:
SAPMV45A - UserExit
Rutinas Exit:
o USEREXIT_MOVE_FIELD…. (Mapeo de Datos en Alta y
Modificación)
USEREXIT_MOVE_FIELD_TO_VBKD
Ejemplo:
FORM userexit_move_field_to_vbkd.
**/*** ORP PE-2013-027 BEGIN
IF xvbap-pstyv = 'ZVAP'.
vbkd-kurrf = vbkd-kursk.
ENDIF.
**/*** ORP PE-2013-027 END
* VBKD-zzfield = xxxx-zzfield2.
Report Painting
Transacciones:
Registrar cambios en el log de modificaciones (CDHDR y CDPOS)
Algunas veces se modifica el valor de una tabla estándar mediante una exit y esta modificación no queda
registrado en el log de modificaciones. Para estos casos lo que se debe hacer es lo siguiente:
En primer lugar abrimos el documento de cambios, para esto utilizamos la siguiente función, a la misma,
le pasamos la clase y el ID del objeto:
EXPORTING
Luego, se llama a la función que identifica los campos modificados. Para esto se le tiene que pasar como
parámetros el indicador de cambio, la tabla modificada, los valores modificados y los valores antes de la
modificación:
EXPORTING
EXPORTING
IMPORTING
Se adjuntan los registros de las tablas CDHDR y CDPOS actualizados con las funciones anteriormente
mencionadas:
ALV
Clase CL_SALV_TABLE:
Introducción
La clase CL_SALV_TABLE es una aproximación basada en el paradigma de la programación orienta objetos para el
desarrollo de listados ALV en aplicaciones SAP. La clase CL_SALV_TABLE forma parte del modelo basado en objetos para
ALV ( ALV Object Model ) que agrupa diferentes clases globales para la implementación de listados ALV y que esta incluido a
partir de la versión 6.40 de SAP.
CL_SALV_TABLE se utiliza para crear listados ALV de dos dimensiones y con un estilo de hoja de calculo de forma fácil y
rápida en nuestras aplicaciones ABAP.
La única limitación de esta clase es que no existe ningún método para crear ALV editables.
Una vez creado, para mostrar por pantalla el ALV por primera vez invocamos el método DISPLAY
Para refrescar los datos del ALV en la pantalla, invocamos al método REFRESH
*&--------------------------------------------------------------------
-*
*& Report: ZZCL_SALV_TABLE_FULL_SCREEN
*& Fecha : 29.07.2015
*& Autor : David Rueda Barrón
*&--------------------------------------------------------------------
-*
*& Creacion de ALV a pantalla completa con la clase CL_SALV_TABLE
*&--------------------------------------------------------------------
-*
REPORT ZZCL_SALV_TABLE_FULL_SCREEN.
try.
cl_salv_table=>factory(
importing
r_salv_table = gr_table
changing
t_table = ti_mara ).
catch cx_salv_msg INTO cx_salv.
* gestionamos las excepciones que puedan suceder
gr_msg = cx_salv->get_text( ).
MESSAGE gr_msg TYPE 'E'.
endtry.
gr_table->display( ).
Como hemos comentado, en este caso, el ALV va ha estar contenido en una dynpro.
*&--------------------------------------------------------------------
-*
*& Report: ZZCL_SALV_TABLE_DYNPRO
*& Fecha : 29.07.2015
*& Autor : David Rueda Barrón
*&--------------------------------------------------------------------
-*
*& Creación de ALV dentro de Dynpro con la clase CL_SALV_TABLE
*&--------------------------------------------------------------------
-*
REPORT ZZCL_SALV_TABLE_DYNPRO.
Para crear la dynpro, tenéis que hacer doble click sobre el número de dynpro 4001.
Doble click sobre el número de dynpro para crearla
Como cualquier dynpro, lo primero es introducir una descripción, el resto de campos los dejamos como están, no hace falta
modificarlos para esta prueba .
descripción de la dynpro
En la pestaña Lista Elementos, escribimos OK_CODE en la única celda que hay editable.
Nota: OK_CODE es una variable global del programa principal de tipo SY-UCOMM.
OK_CODE para recoger el código de función de cada evento de la dynpro
Después hay que implementar los módulos STATUS y USER_COMMAND en la pestaña Lóg. proceso.
5. Sustituimos las XXXXXXX por el nombre de nuestro status, por ejemplo: ZZSTATUS_4001
6. Doble click sobre el nombre del status y creamos un nuevo Status diálogo.
wl_command = ok_code.
clear ok_code.
CASE wl_command.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
Con esto ya tenemos creada una dynpro y las funcione para poder cerrarla.
1. Volvemos ala dynpro 4001 y pulsamos el boton LAYOUT en la barra de herramientas.
if ( sy-subrc <> 0 ).
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
cl_salv_table=>factory(
exporting
r_container = gr_container
list_display = ' '
importing
r_salv_table = gr_table
changing
t_table = ti_mara ).
gr_table->display( ).
else.
* Si ya estan instanciadas las clases, pues refrescamso los datos de
la pantalla
gr_table->refresh( ).
endif.
A diferencia de los ALV generados con la bapi REUSE_ALV_GRID_DISPLAY o con la clase CL_GUI_ALV_GRID la clase
CL_SALV_TABLE no utiliza un catalogo de campos o fieldcat para determinar las características de las columnas del listado
ALV. Cada columna del ALV debe ser tratada como un objeto individual con métodos que nos permitirán modificar sus
atributos y características como su descripción, longitud, ocultar la columna, etc...
Para modificar las características y atributos propios de cada columna del ALV instanciaremos un objeto
CL_SALV_COLUMN_TABLE utilizando el metodo GET_COLUMN de la clase CL_SALV_COLUMNS_TABLE. Este método
recibe como parámetro de entrada el nombre de una columna del ALV y retorna un objeto de la clase
CL_SALV_COLUMN_TABLE que nos permite con sus métodos cambiar las características y atributos de la columna.
Transacción SE24 -> Clase CL_SALV_COLUMN_TABLE
Desde la transacción SE24 -> Pasar a -> Documentación -> Clase podéis ver todos los métodos de la clase
CL_SALV_COLUMN y que atributos nos permiten modificar. Los métodos que mas se suelen utiliza son:
A continuación, ampliamos el código del anterior post para modificar las características de algunas columnas.
*&--------------------------------------------------------------------
-*
*& Report: ZZCL_SALV_TABLE_FULL_SCREEN
*& Fecha : 29.07.2015
*& Autor : David Rueda Barrón
*&--------------------------------------------------------------------
-*
*& Creacion de ALV a pantalla completa con la clase CL_SALV_TABLE
*& Modificacion de los atributos de la columnas con las clases:
*& - CL_SALV_COLUMNS_TABLE
*& - CL_SALV_COLUMN_TABLE
*&--------------------------------------------------------------------
-*
report zzcl_salv_table_full_screen.
types: begin of type_matnr,
matnr type mara-matnr,
maktx type makt-maktx,
mtart type mara-mtart,
matkl type mara-matkl,
meins type mara-meins,
box type c,
end of type_matnr.
try.
cl_salv_table=>factory(
importing
r_salv_table = gr_table
changing
t_table = ti_mara ).
catch cx_salv_msg into cx_salv.
* Gestionamos las excepciones que puedan suceder
gr_msg = cx_salv->get_text( ).
message gr_msg type 'E'.
endtry.
try.
gr_columns ?= gr_table->get_columns( ).
* gr_columns->set_optimize( 'X' ). "Optimizar automa. abcho de
TODAS las columnas
gr_table->display( ).
Ejemplo
*&---------------------------------------------------------------------*
*& Report ZAHM_ALV_TABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zahm_alv_table.
DATA:
it_mara TYPE STANDARD TABLE OF mara.
START-OF-SELECTION.
SELECT * FROM mara INTO TABLE it_mara UP TO 100 ROWS.
PERFORM mostrar_alv USING it_mara 'Tabla MARA'.
*&---------------------------------------------------------------------*
*& Form MOSTRAR_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM mostrar_alv USING p_itab TYPE STANDARD TABLE p_titulo TYPE data.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = alv
CHANGING
t_table = p_itab ).
CATCH cx_salv_msg INTO message.
" error handling
ENDTRY.
"desplegar el reporte
alv->display( ).