Si necesitamos es requerido, es posible ampliar un objecto de negocio (BO - Business Object) para así ampliar sus atributos, lo haremos desde .
Para esto:
1.- Se accede a la transacción SWO1.Desde esta transacción informaremos , se informa el BO que queramos ampliar y luego haremos se será ampliado y se hace clic en el botón ‘Subtipo’:
Luego, nos pedirán estos datos. Los informaremos según nuestro criterio:
...
2.- Se abrirá una ventana emergente llamada ‘Crear tipo de objeto’ en la que se podrá informar distintos datos.
...
3.- Una vez creado el ‘Tipo de objeto’ se procederá a generar un nuevo atributo.
En este ejemplo estamos tratando con se trata un BO de pedido de compras por . Por tanto, la tabla maestra de datos es la EKKO si queremos .
Si por ejemplo se requiere obtener un campo de, por ejemplo, el tipo ‘NIF del proveedor crearemos proveedor’, se creará el atributo siguiendo los siguientes pasos:
1 - Accedemos Acceder al BO que hemos creado por la SWO1
2 - Nos posicionamos Posicionarse sobre los atributos del BO y hacemos hacer clic en crear.
3 - Se nos mostrará abrirá la siguiente ventana:
3.1 - Informamos la tabla origen de dónde queremos obtener el atributo, en este caso LFA1 (maestro de proveedores) y del campo STCD1.
4 - Hacemos ventana emergente llamada ‘Crear con valores de campo propuestos Data Dictionary’.
En esta ventana se deberá indicar la tabla origen desde la cual se obtendrá el atributo y seleccionar el campo específico que almacena el dato.
Para el ‘NIF del poveedor', estos serían:
Tabla: LFA1
Campo: STCD1
...
4 - Dar doble clic sobre el nuevo atributo generado y se mostrará para visualizar la siguiente ventana:
...
4.1 - Modificaremos la fuente si es necesario. Hay dos opciones:
Virtual - Se marcará en caso de que el atributo lo obtengamos de una tabla diferente a la fuente del BO (en este caso la tabla fuente del BO BUS2012 es la EKKO).
Campo de BD - Se marcará en el caso de que el atributo se obtenga directamente de la tabla fuente del BO.
En nuestro caso debemos poner virtual ya que accedemos a la LFA1.
...
El siguiente código es un ejemplo de como mapear el NIF del proveedor:
Programa ZBUS2012
Bloque de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
***** Implementation of object type ZBUS2012 ***** INCLUDE <object>. begin_data object. " Do not change.. DATA is generated * only private members may be inserted into structure private DATA: " begin of private, " to declare private attributes remove comments and " insert private attributes here ... " end of private, BEGIN OF key, purchaseorder LIKE ekko-ebeln, END OF key, taxnumber1 TYPE lfa1-stcd1, name TYPE lfa1-name1. end_data object. " Do not change.. DATA is generated TABLES lfa1. DATA gs_lfa1 TYPE lfa1. FORM update_lfa1. DATA: lv_order TYPE ekko-ebeln. lv_order = object-key-purchaseorder. CLEAR gs_lfa1. SELECT SINGLE * FROM ekko AS a INNER JOIN lfa1 AS b ON a~lifnr EQ b~lifnr INTO CORRESPONDING FIELDS OF gs_lfa1 WHERE a~ebeln EQ lv_order. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDFORM. get_property taxnumber1 changing container. IF gs_lfa1 IS INITIAL. PERFORM update_lfa1. ENDIF. IF gs_lfa1-stceg IS NOT INITIAL. object-taxnumber1 = gs_lfa1-stceg. ELSEIF gs_lfa1-stcd1 IS NOT INITIAL. object-taxnumber1 = gs_lfa1-stcd1. ELSEIF gs_lfa1-stcd2 IS NOT INITIAL. object-taxnumber1 = gs_lfa1-stcd2. ELSEIF gs_lfa1-stcd3 IS NOT INITIAL. object-taxnumber1 = gs_lfa1-stcd3. ELSEIF gs_lfa1-stcd4 IS NOT INITIAL. object-taxnumber1 = gs_lfa1-stcd4. ENDIF. swc_set_element container 'TaxNumber1' object-taxnumber1. end_property. |
6 - Una vez guardado el programa. Volvemos a la pantalla del BO con la jerarquía y hacemos clic en el botón de generar .
7 - Volvemos a la pantalla principal de la SWO1 e informamos el BO estándar del que creamos el subtipo Z y hacemos clic en Opciones/Delegación:
...
8 - Por último, crearemos una nueva entrada de delegación para el BO BUS2012 indicando que herede de la ZBUS2012 con los nuevos atributos.
...