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
Programa ZBUS2012
***** 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.