Si necesitamos ampliar un BO para ampliar sus atributos, lo haremos desde la transacción SWO1.
Desde esta transacción informaremos el BO que queramos ampliar y luego haremos clic en Subtipo:
Luego, nos pedirán estos datos. Los informaremos según nuestro criterio:
Una vez creado, generaremos un nuevo atributo. En este ejemplo estamos tratando con un BO de pedido de compras por tanto la tabla maestra de datos es la EKKO si queremos obtener un campo de, por ejemplo, el NIF del proveedor crearemos el atributo siguiendo los siguientes pasos:
1 - Accedemos al BO que hemos creado por la SWO1
2 - Nos posicionamos sobre los atributos del BO y hacemos clic en crear.
3 - Se nos mostrará 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 doble clic sobre el nuevo atributo generado y se mostrará 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.
***** 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.