Validación BADI ME_PROCESS_PO_CUST

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Paola79
    Member
    • oct
    • 62

    #1

    Validación BADI ME_PROCESS_PO_CUST

    Hola buenas tardes,

    Ya me funciona la validación correctamente, desde hace ya días, el consultor ha echo pruebas, y le salta en el resto de tipo de pedidos, y solo queremos que salga en un determinado tipo de pedidos.

    La validación la estoy haciendo en las items, ya que es ahi que el importe no sea superior a 3000, pero ahi no tengo la clase de pedido, que en mi caso será tipo de pedido PD, ya que se encuentra este dato en la cabecera (header).

    Mi pregunta es: ¿Cómo puedo pasar el tipo de pedido en la BADI a las posiciones para que solo me salga en ese tipo de pedido?

    Muchas gracias
  • ballan
    Senior Member
    • oct
    • 671

    #2
    Para acceder a los datos de cabecera puedes hacer lo siguiente

    data: lo_header type ref to IF_PURCHASE_ORDER_MM.

    data: ls_header type mepoheader.

    lo_header = im_item->get_header( ).

    ls_header = lo_header->get_data( ).

    if ls_header-bsart = ...

    aqui harias tu chequeo

    Comentario

    • Paola79
      Member
      • oct
      • 62

      #3
      Muchas gracias Ballan,

      Me da error con el im_item, ya que de me dice que no existe.

      Un saludo,

      Comentario

      • Paola79
        Member
        • oct
        • 62

        #4
        Perdon Ballan, el error que me da es que LS_HEADER no tiene el BSART.
        Eso que puede ser,

        Un saludo

        Comentario

        • ballan
          Senior Member
          • oct
          • 671

          #5
          He supuesto que tu codigo lo querias meter en el metodo process_item

          Si no es en ese en que metodo quieres meterlo?¿

          Si pruebas a meter el chequeo en el metodo check ahi si tienes el objeto cabecera por lo que podrias hacer

          data: ls_header type mepoheader.

          ls_header = im_header->get_data( ).

          Comentario

          • Paola79
            Member
            • oct
            • 62

            #6
            Si claro lo quiero en el process_item, pero me da el error que te he comentado, el de bsart no existe.

            estoy ahi mirandolo, a ver si saco algo en claro. mira este es el codigo que tengo yo:

            DATA: ls_header TYPE REF TO if_purchase_order_mm.
            DATA: ls_item TYPE mepoitem.
            DATA: lo_header TYPE REF TO if_purchase_order_mm.

            ls_item = im_item->get_data( ).
            lo_header = im_item->get_header( ).
            ls_header = im_item->get_header( ).
            **en ls_item tengo los datos de la posicion
            IF ls_header-bsart = 'PD'.
            IF ls_item-netpr > '3000'.
            MESSAGE e002(zmm).
            ENDIF.
            endif.
            Alo mejor lo he puesto yo mal.

            muchas gracias

            Comentario

            • Paola79
              Member
              • oct
              • 62

              #7
              Ya esta solucionado, ya me di cuenta muchas gracias como siempre por tu ayuda.

              Un saludo

              Comentario

              Trabajando...