Badi no trae todos los datos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • sebapap
    Junior Member
    • jul
    • 11

    #1

    Badi no trae todos los datos

    Hola, necesito implementar esta Badi para derivación de lote (fechas), al ponerle un stop, entro a la badi, pero no me reconoce todas las variables y tablas que son necesarias para determinar la derivación del lote como lo piden, alguien sabe como ir a buscar variables y tablas que si están antes de entrar a la badi.

    tcode:'MFBF'
    method IF_EX_DERIVATION~SENDER_VALUES_CHANGE

    Gracias....
  • jtristan
    Senior Member
    • oct
    • 240

    #2
    Yo creo que no se puede. Una badi tiene unos parámetros de entrada y no vas a poder acceder a otros datos del programa que no se estén pasando como parámetros a la badi.

    Un saludo.

    Comentario

    • K-MUS
      Member
      • feb
      • 87

      #3
      Originalmente publicado por sebapap
      Hola, necesito implementar esta Badi para derivación de lote (fechas), al ponerle un stop, entro a la badi, pero no me reconoce todas las variables y tablas que son necesarias para determinar la derivación del lote como lo piden, alguien sabe como ir a buscar variables y tablas que si están antes de entrar a la badi.

      tcode:'MFBF'
      method IF_EX_DERIVATION~SENDER_VALUES_CHANGE

      Gracias....
      Este método solo sirve para leer y no modificarlos dentro de una BADI. Si cuando la BADI es ejecutada la estructura existe y tiene datos. PERO no esta definida en la BADI podes usar lo siguiente:


      Código:
      DATA:l_field(60)         TYPE C VALUE '(SAPLCOIH)RESBD', 
                ls_resbd                 TYPE resbd.
      
      FIELD-SYMBOLS: <fs_resbd>          TYPE ANY. 
      ASSIGN (l_field) to <fs_resbd>. 
      if sy-subrc eq 0. 
            ls_resbd = <fs_resbd>. 
            UNASSIGN <fs_resbd>. 
      endif.
      Lo unico que necesitas es reemplazar el programa SAPLCOIH y la estructura RESBD por las que vos desees.

      Saludos

      Comentario

      • sebapap
        Junior Member
        • jul
        • 11

        #4
        Originalmente publicado por K-MUS
        Este método solo sirve para leer y no modificarlos dentro de una BADI. Si cuando la BADI es ejecutada la estructura existe y tiene datos. PERO no esta definida en la BADI podes usar lo siguiente:


        Código:
        DATA:l_field(60)         TYPE C VALUE '(SAPLCOIH)RESBD', 
                  ls_resbd                 TYPE resbd.
        
        FIELD-SYMBOLS: <fs_resbd>          TYPE ANY. 
        ASSIGN (l_field) to <fs_resbd>. 
        if sy-subrc eq 0. 
              ls_resbd = <fs_resbd>. 
              UNASSIGN <fs_resbd>. 
        endif.
        Lo unico que necesitas es reemplazar el programa SAPLCOIH y la estructura RESBD por las que vos desees.

        Saludos

        Me explico, antes de entrar al breakpoint de la badi tengo una tabla cowb_comp que tiene los lotes involucrados en la notificación (componentes), sigo avanzando y cuando entro a la badi no me reconoce esa tabla, y en los datos que tiene la badi utiliza como parametro estan los lotes de otros consumos asociados a la misma orden previsional (incluidos los componentes actuales), entonces no tengo como diferenciar los lotes que estoy consumiendo actualmente con los que ya consumí en la orden previsional.

        Comentario

        • calanis
          Senior Member
          • oct
          • 147

          #5
          Hola Seba

          Veamos si te comprendemos, por lo que explicas la cosa seria así:
          Al momento de llegar a la BADI no tienes acceso a la tabla COWB_COMP(por el nombre creo que es una estructura y no tabla) que se encuentra justo antes de entrar a la BADI, ya que considero es la que te interesa para poder completar tú lógica, verdad?

          Si es así K-MUS te dio la respuesta.
          Dado que lo que posees en la pila de llamada ABAP, la tabla cowb_comp esta fuera del entorno de la BADI en donde estas parado.
          Por lo que tendríamos lo siguiente:
          PILA ABAP
          Función A Prog.Control: PROG_A-->Accede Variables Globales de PROG_A y Locales de la Función A
          Función B Prog.Control: PROG_A-->Accede Variables Globales de PROG_A y Locales de la Función:B, pero no puede acceder a las Variables locales de la Funcón B
          Función C Prog.Control: PROG_B-->Tabla cowb_comp Accesible
          BADI---> Prog.Control: PROG_C-->Tabla cowb_comp no Accesible
          Bueno te fijas en la pila y llamas la tabla/estructura/variable que necesites:
          Te paras en modo debug en la BADI y pones (PROG_C)cowb_comp en la parte de visualización de variables del Debugy veras la estructura.
          Mira prueba el siguiente código y pon un break-point para ver si te sirve.
          Código:
          DATA:
          lv_objeto(60)     TYPE C VALUE '([B]ACA_PONE_EL_PROG_DE_CONTROL_Q_CORRESPONDA[/B])COWB_COMP', 
          ls_cowb_comp    TYPE cowb_comp.
          
          FIELD-SYMBOLS: <fs_cowb_comp> TYPE cowb_comp. 
          ASSIGN (lv_objeto) to <fs_cowb_comp>. 
          *Verificas que se asigno correctamente
          check sy-subrc = 0. 
          ls_cowb_comp = <fs_cowb_comp>. 
          * De aca en más podes usar la referencia o la estructura local
          *<fs_cowb_comp>-bldat<---Referencia
          *ls_cowb_comp-bldat<---Estructura local
          * Tus operaciones
          UNASSIGN <fs_cowb_comp>. "Para sacar la referencia de Memoria
          .
          Si no es como lo interpretamos, explica un poco más para ver si te cazamos la idea.

          Espero que la data te sea de utilidad
          Saludos
          Carlos D. Alanis
          Editado por última vez por calanis; 31/08/2010, 23:01:14.
          Carlos D. Alanis
          <=<< Compartir conocimiento es una manera de innovar >>=>

          Comentario

          • sebapap
            Junior Member
            • jul
            • 11

            #6
            Carlos, no me funciona lo que me dices.

            cuando estoy dentro del programa donde esta la estructura cowb_comp , en el debug ....--> variables escribo (SAPLBARM)cowb_comp y me funciona, pero cuando entro a la badi y no me la reconoce... estaré haciendo algo mal.

            tambien cambio el nombre del field symbol en la badi pero al momento del assing , el sy-subrc me da 4.


            Ayuda por favor..

            saludos...

            Comentario

            Trabajando...