es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo unir 2 tablas con un campo UUID convertido?

En SAP EWM, el ID del material se almacena en las tablas /SAPAPO/ utilizando el elemento de datos /SAPAPO/MATID, que es un CHAR 22. Por otro lado, las tablas /SCWM/ utilizan el elemento de datos /SCWM/DE_MATID, que es un RAW 16. Todo el código estándar que he visto utiliza la clase CL_SYSTEM_UUID y, por ejemplo, el método IF_SYSTEM_UUID_STATIC~CONVERT_UUID_C22 para asignar un ID de material C22 a un X16.

Esto me impide unir las tablas directamente sin seleccionar primero, convertir el ID del material y luego seleccionar.

¿Existe alguna manera de ejecutar una SELECT para unir dos tablas con diferentes tipos de ID?

El sistema ejecuta una base de datos HANA y ABAP 7.50.

Las dos tablas que quiero unir son: /SAPAPO/MATKEY y /SCWM/PVPAKC.

Me gustaría ejecutar una SELECT similar a esta:

SELECT FROM /scwm/pvpakc AS pack_spec
  INNER JOIN /sapapo/matkey AS material ON material~matid = pack_spec~matid
  FIELDS pack_spec~pvguid  as ps_guid,
         material~matnr    as material_num
  INTO TABLE @DATA(lt_pack_spec_material).

Por supuesto, la unión anterior no es posible ya que el MATID entre las tablas necesita ser convertido.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Dado que el ID del material se almacena usando diferentes elementos de datos en las tablas /SAPAPO/ y /SCWM/, no es posible unir directamente estas tablas basadas en el ID del material. Sin embargo, dado que el sistema funciona en una base de datos HANA, es posible aprovechar la potencia de HANA para unir estas tablas.

    Una opción es crear una vista HANA que una las dos tablas y realice la conversión necesaria del ID del material. Luego, la vista se puede utilizar en el código ABAP para realizar la unión.

    Aquí hay un ejemplo de cómo crear una vista HANA que une /SAPAPO/MATKEY y /SCWM/PVPAKC tablas de acuerdo al ID del material:

    CREAR VISTA mi_vista COMO 
    SELECCIONAR 
      pk~pvguid COMO ps_guid,
      mat~matnr COMO num_material
    DE 
      /SCWM/PVPAKC AS pk
      UNIRSE A /SAPAPO/MATKEY AS mat 
        EN mat.matid = CL_SYSTEM_UUID=>CONVERT_UUID_X16_C22( pk.matid ).
    

    En esta vista, estamos utilizando el método CONVERT_UUID_X16_C22 de la clase CL_SYSTEM_UUID para convertir el ID del material de X16 a C22 antes de unir las tablas.

    Una vez que se crea la vista, se puede usar en el código ABAP como cualquier otra tabla. Aquí hay un ejemplo de cómo usar la vista para unir las tablas:

    SELECCIONAR ps_guid, num_material
    DENTRO DE LA TABLA @DATA(lt_pack_spec_material)
    DE mi_vista.
    

    Al utilizar una vista HANA, podemos unir las dos tablas aunque tengan diferentes formatos de ID de material, sin tener que realizar ninguna conversión manual en el código ABAP.

Comments are closed.