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.
...
5 - En caso de haber creado un atributo virtual, tendremos que definir un código para mapear el valor de ese atributo. Para ello nos posicionamos sobre el atributo dentro de la jerarquía y hacemos clic en el botón superior de "Programa".
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.
...