Mapeo de campos

Introducción #

En este grupo se irán poniendo las distintas sentencias que nos permiten hacer mapeo de campos, digamos que son las que sustituyen al MOVE-CORRESPODING.

Estas sentencias se pueden utilizar para crear nuevas variables o ponerlas como entrada de parámetro en clases.

Ejemplo 1 #

La clase CL_ABAP_CORRESPONDING permite crear mapeos entre tablas y estructuras. En este ejemplo se construye la tabla de mapeos en base a una tabla interna. Nota: Los campos que se informan en el mapeo deben de existir ya que sino se provoca una excepción.

 cl_abap_corresponding=>create(
   source            = is_header
   destination       = es_header_crud
   mapping           = VALUE cl_abap_corresponding=>mapping_table( FOR ls_mapping IN mt_mapping_crud
                                                            WHERE ( area = 'HEADER_NEGOTIATION' AND id_nivel1 = cv_level1 )
                                                            ( level = 0
                                                              kind = cl_abap_corresponding=>mapping_component
                                                              srcname = ls_mapping-field_from
                                                              dstname = ls_mapping-field_to ) ) )->execute( EXPORTING source      = is_header
                                                                                                            CHANGING  destination = es_header_crud ).

Ejemplo 2 #

<ls_summary_all> = CORRESPONDING #( BASE ( <ls_summary_all> ) <ls_datos> ).

Se mueven los campos de <ls_datos> a <ls_summary_all>. Esto por defecto hace que los campos que están en <ls_summary_all> pero no en <ls_datos> se dejan en blanco aunque tengan valores. Para eso hay que usar la cláusula BASE y entre paréntesis la estructura destino para que no limpie los campos que no tiene.