Utilizando BADI's

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • kelvin.acosta
    Member
    • ago
    • 37

    #1

    Utilizando BADI's

    Hola amigos;

    Senores tengo algo urgente que necesito que ustedes mis amigos necesito que me expliquen.

    me han pedido que haga un exit-user o un BADI en el modulo de inversiones - Transaccion TM01. con la intension de que yo pueda verificar que tipo de producto se quiere crear y despues realice unos calculos para finalmente realizar un asiento contable.

    lo que necesito es que me ayuden a saber como se donde tengo un BADI en esta transaccion y como puedo moficiarla para hacer los calculos y procesos que quiero.

    agradecere me puedan colaborar.

    saludos,
    kmeoi
  • DCErick
    Moderator
    • mar
    • 1090

    #2
    Te dejo este post, está muy bueno.

    Todo acerca de la BADI's

    Y te dejo este código para sacar las BADIS y/o User Exit de X transaccion.

    Código:
    *&---------------------------------------------------------------------*
    *& Report  ZBADI
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    REPORT  zbadi.
    TABLES : tstc,
    tadir,
    modsapt,
    modact,
    trdir,
    tfdir,
    enlfdir,
    sxs_attrt ,
    tstct.
    
    DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
    DATA : field1(30).
    DATA : v_devclass LIKE tadir-devclass.
    
    PARAMETERS : p_tcode LIKE tstc-tcode,
    p_pgmna LIKE tstc-pgmna .
    
    
    
    
    DATA wa_tadir TYPE tadir.
    
    START-OF-SELECTION.
    
      IF NOT p_tcode IS INITIAL.
        SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
    
      ELSEIF NOT p_pgmna IS INITIAL.
        tstc-pgmna = p_pgmna.
      ENDIF.
    
      IF sy-subrc EQ 0.
        SELECT SINGLE * FROM tadir
        WHERE pgmid = 'R3TR'
        AND object = 'PROG'
        AND obj_name = tstc-pgmna.
    
        MOVE : tadir-devclass TO v_devclass.
    
        IF sy-subrc NE 0.
          SELECT SINGLE * FROM trdir
          WHERE name = tstc-pgmna.
          IF trdir-subc EQ 'F'.
            SELECT SINGLE * FROM tfdir
            WHERE pname = tstc-pgmna.
    
            SELECT SINGLE * FROM enlfdir
            WHERE funcname = tfdir-funcname.
    
            SELECT SINGLE * FROM tadir
            WHERE pgmid = 'R3TR'
            AND object = 'FUGR'
            AND obj_name EQ enlfdir-area.
    
            MOVE : tadir-devclass TO v_devclass.
          ENDIF.
        ENDIF.
    
        SELECT * FROM tadir INTO TABLE jtab
        WHERE pgmid = 'R3TR'
        AND object IN ('SMOD', 'SXSD')
        AND devclass = v_devclass.
    
    
        SELECT SINGLE * FROM tstct
        WHERE sprsl EQ sy-langu
        AND tcode EQ p_tcode.
    
        FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
        WRITE:/(19) 'Transaction Code - ',
        20(20) p_tcode,
        45(50) tstct-ttext.
        SKIP.
        IF NOT jtab[] IS INITIAL.
          WRITE:/(105) sy-uline.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.
    
    * Sorting the internal Table
          SORT jtab BY object.
          DATA : wf_txt(60) TYPE c,
          wf_smod TYPE i ,
          wf_badi TYPE i ,
          wf_object2(30) TYPE c.
          CLEAR : wf_smod, wf_badi , wf_object2.
    * Get the total SMOD.
    
    
    
    
          LOOP AT jtab INTO wa_tadir.
            AT FIRST.
              FORMAT COLOR COL_HEADING INTENSIFIED ON.
    
              WRITE:/1 sy-vline,
              2 'Enhancement/ Business Add-in',
              41 sy-vline ,
              42 'Description',
              105 sy-vline.
              WRITE:/(105) sy-uline.
            ENDAT.
            CLEAR wf_txt.
            AT NEW object.
              IF wa_tadir-object = 'SMOD'.
                wf_object2 = 'Enhancement' .
              ELSEIF wa_tadir-object = 'SXSD'.
                wf_object2 = ' Business Add-in'.
    
              ENDIF.
              FORMAT COLOR COL_GROUP INTENSIFIED ON.
    
              WRITE:/1 sy-vline,
    
              2 wf_object2,
              105 sy-vline.
            ENDAT.
    
            CASE wa_tadir-object.
              WHEN 'SMOD'.
                wf_smod = wf_smod + 1.
                SELECT SINGLE modtext INTO wf_txt
                FROM modsapt
                WHERE sprsl = sy-langu
                AND name = wa_tadir-obj_name.
                FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    
              WHEN 'SXSD'.
    * For BADis
                wf_badi = wf_badi + 1 .
                SELECT SINGLE text INTO wf_txt
                FROM sxs_attrt
                WHERE sprsl = sy-langu
                AND exit_name = wa_tadir-obj_name.
                FORMAT COLOR COL_NORMAL INTENSIFIED ON.
    
            ENDCASE.
    
    
    
            WRITE:/1 sy-vline,
            2 wa_tadir-obj_name HOTSPOT ON,
            41 sy-vline ,
            42 wf_txt,
            105 sy-vline.
            AT END OF object.
              WRITE : /(105) sy-uline.
            ENDAT.
    
    
          ENDLOOP.
    
          WRITE:/(105) sy-uline.
    
    
    
          SKIP.
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          WRITE:/ 'No.of Exits:' , wf_smod.
          WRITE:/ 'No.of BADis:' , wf_badi.
    
        ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(105) 'No userexits or BADis exist'.
        ENDIF.
      ELSE.
        FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
        WRITE:/(105) 'Transaction does not exist'.
      ENDIF.
    
    AT LINE-SELECTION.
    
      DATA : wf_object TYPE tadir-object.
      CLEAR wf_object.
    
    
      GET CURSOR FIELD field1.
      CHECK field1(8) EQ 'WA_TADIR'.
      READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).
      MOVE jtab-object TO wf_object.
    
      CASE wf_object.
        WHEN 'SMOD'.
          SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
    
          CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
        WHEN 'SXSD'.
          SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
          CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
      ENDCASE.
    -------------------
    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

    Comentario

    • kelvin.acosta
      Member
      • ago
      • 37

      #3
      Badi's

      Hola,

      muchas gracias por la respuesta!!

      He utilizado el programa que me enviste y en los parametros de solicita llene P_TCODE y coloque el codigo de la transaccion que me interesa la cual es : TM01 el otro parametro lo deje vacio P_PGMNA. a pinchar el boton de ejecucion me salio un mensaje diciendo : No userexits or BADis exist.

      dime si es que debo colocar algo mas en el parametro que deje vacio o si es que realmente no tiene BADI esta transaccion.

      saludos,
      kmeoi

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #4
        Yo creo que no tiene, tambien usé este otro programa y no me regresó nada.

        Código:
        REPORT zuserexit NO STANDARD PAGE HEADING.
        TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
        TABLES : tstct.
        DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
        DATA : field1(30).
        DATA : v_devclass LIKE tadir-devclass.
        PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
        
        SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
        IF sy-subrc EQ 0.
          SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR'
                           AND object = 'PROG'
                           AND obj_name = tstc-pgmna.
          MOVE : tadir-devclass TO v_devclass.
          IF sy-subrc NE 0.
            SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna.
            IF trdir-subc EQ 'F'.
              SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna.
              SELECT SINGLE * FROM enlfdir WHERE funcname =
              tfdir-funcname.
              SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR'
                                 AND object = 'FUGR'
                                 AND obj_name EQ enlfdir-area.
        
              MOVE : tadir-devclass TO v_devclass.
            ENDIF.
          ENDIF.
          SELECT * FROM tadir INTO TABLE jtab
                        WHERE pgmid = 'R3TR'
                          AND object = 'SMOD'
                          AND devclass = v_devclass.
          SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND
                                           tcode EQ p_tcode.
          FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
          WRITE:/(19) 'Transaction Code - ',
               20(20) p_tcode,
               45(50) tstct-ttext.
          SKIP.
          IF NOT jtab[] IS INITIAL.
            WRITE:/(95) sy-uline.
            FORMAT COLOR COL_HEADING INTENSIFIED ON.
            WRITE:/1 sy-vline,
                   2 'Nombre Exit',
                  21 sy-vline ,
                  22 'Descripcion',
                  95 sy-vline.
            WRITE:/(95) sy-uline.
            LOOP AT jtab.
              SELECT SINGLE * FROM modsapt
                     WHERE sprsl = sy-langu AND
                            name = jtab-obj_name.
              FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
              WRITE:/1 sy-vline,
                     2 jtab-obj_name HOTSPOT ON,
                    21 sy-vline ,
                    22 modsapt-modtext,
                    95 sy-vline.
            ENDLOOP.
            WRITE:/(95) sy-uline.
            DESCRIBE TABLE jtab.
            SKIP.
            FORMAT COLOR COL_TOTAL INTENSIFIED ON.
            WRITE:/ 'Número de Exits:' , sy-tfill.
          ELSE.
            FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
            WRITE:/(95) 'No existe ninguna user exit'.
          ENDIF.
        ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(95) 'El código de transacción no existe'.
        ENDIF.
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        Trabajando...