Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

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:

Image Added

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:

Image Added

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.


Bloque de código
languagetext
firstline1
titlePrograma ZBUS2012
linenumberstrue
*****           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.

...