User Exit??

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jaqs00
    Junior Member
    • sep
    • 11

    #1

    User Exit??

    Buenos dias a todos, mi problema es el siguiente:

    La consultora de MM de mi empresa, ha añadido un nuevo tipo de imputacion, para las solicitudes de pedido (ME51N), y quiere que cuando se utilice esta imputacion nueva, obligue a los usuarios a rellenar 2 campos en una pestaña de los detalles de posicion.

    Para ello, creo que lo mas sencillo seria hacer un "warrnig", que no les dejara grabar la solicitud, mediante una user exit de la transaccion, pero el problema es que soy algo novato en esto de las user exit, y ando un poco perdido.

    Muchas gracias a todos de antemano.
  • agv1976
    Member
    • jun
    • 66

    #2
    User exit

    Puedes hacer una user-exit, pero en la transacción de pedidos yo haria una validación, transaccion ggb0, en donde indicas el nombre de la transacción sobre la que quieres validar y el mensaje que quieras, warning o error, si tienes dudas, es facil, me comentas

    Comentario

    • caralbgro
      Senior Member
      • sep
      • 478

      #3
      usa esta exit

      MEREQ001

      EXIT_SAPLMEREQ_001
      EXIT_SAPLMEREQ_002
      EXIT_SAPLMEREQ_003
      EXIT_SAPLMEREQ_004
      EXIT_SAPLMEREQ_005
      EXIT_SAPLMEREQ_006
      EXIT_SAPLMEREQ_007
      EXIT_SAPLMEREQ_008
      EXIT_SAPLMEREQ_009
      EXIT_SAPLMEREQ_010

      espero que te sirva!!
      Consultor FI-CO

      Comentario

      • jaqs00
        Junior Member
        • sep
        • 11

        #4
        gracias

        Muchas gracias, por las respuestas, pero no me han servido de mucho, ya que al ser novato en las user, no se que userexit usar.
        Y en cuano a la tx ggb0, tampoco se como meter los datos.

        Comentario

        • agv1976
          Member
          • jun
          • 66

          #5
          Copia y pega este programa, te busca las user por transaccion

          *&---------------------------------------------------------------------*
          *& Modulpool ZBC_USER_EXIT *
          *& *
          *&---------------------------------------------------------------------*
          *& *
          *& *
          *&---------------------------------------------------------------------*

          PROGRAM zbc_user_exit NO STANDARD PAGE HEADING.

          INCLUDE zbc_user_exit_top. "


          *& Parameters
          PARAMETERS: p_tcode LIKE tstc-tcode OBLIGATORY.

          INCLUDE zbc_user_exit_f01.

          *& Main Process
          START-OF-SELECTION.

          PERFORM print_projects.

          END-OF-SELECTION.

          *& User commands
          AT LINE-SELECTION.

          GET CURSOR FIELD field1.

          CHECK field1(4) EQ 'JTAB'.

          SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).

          CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

          *----------------------------------------------------------------------*
          * INCLUDE ZBC_USER_EXIT_F01 *
          *----------------------------------------------------------------------*

          *&---------------------------------------------------------------------*
          *& Form print_projects
          *&---------------------------------------------------------------------*
          * text
          *----------------------------------------------------------------------*
          * --> p1 text
          * <-- p2 text
          *----------------------------------------------------------------------*

          FORM print_projects.

          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:/ 'Numero de User Exits:' , sy-tfill.
          ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(95) 'No existe ningun User Exit'.
          ENDIF.
          ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(95) 'El codigo de transaccion no existe'.
          ENDIF.

          ENDFORM. " print_projects

          *&---------------------------------------------------------------------*
          *& Include ZBC_USER_EXIT_TOP *
          *& *
          *&---------------------------------------------------------------------*

          *& Tables
          TABLES :
          tstc, " SAP Transaction Codes
          tadir, " Directory of Repository Objects
          modsapt, " SAP Enhancements - Short Texts
          modact, " Modifications
          trdir, " System Table TRDIR
          tfdir, " Function Module
          enlfdir. " Additional Attributes for Function Modules

          TABLES: tstct.

          *& Variables
          DATA: jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
          DATA: field1(30).
          DATA: v_devclass LIKE tadir-devclass.

          Comentario

          • jaqs00
            Junior Member
            • sep
            • 11

            #6
            User

            Hasta aqui bien, tengo un programa muy parecido para encontrar las user exit, por transaccion, el problema que tengo es que la transaccion ME51N, tiene 10 user, y no se en cual de ellas tengo que meter el codigo.

            Muchas gracias

            Comentario

            • agv1976
              Member
              • jun
              • 66

              #7
              ¿Que user exit usar?

              Quieres modificar el tipo de imputacion cierto?, vale pues por el nombre del campo se puede sacar cual es, sino ponle un break point, pero por el menu, no break-point por sentencia, y ves donde se para y si tiene la estructura con el campo que tu quieres modificar, sino me dices y te lo hago yo

              Comentario

              • agv1976
                Member
                • jun
                • 66

                #8
                Listado de user

                Puedes pasarme la lista con las 10 user-exit, y te digo cual es?

                Comentario

                • agv1976
                  Member
                  • jun
                  • 66

                  #9
                  Encontre una

                  A mi solo me encuentra esta MEREQ001, y puede servirte pero si me pasas las 10 que te salen te puedo decir cual es y como se hace

                  Comentario

                  • agv1976
                    Member
                    • jun
                    • 66

                    #10
                    dentro de la user que te envie, el primer modulo de funciones que aparece doble click, pinchas sobre el Z que te aparece, lo creas, y mira este codigo no es lo mismo que tienes que hacer porque cambia el campo pero te puede servir, porque te dice a que estructura va cuando grabas la solicitud del pedido,

                    * Obtener modo
                    CALL METHOD im_req_item->get_activity
                    RECEIVING
                    re_aktvt = gv_trtyp_11.

                    CLEAR: gv_idimpexp.

                    CONCATENATE gc_modo_ejec sy-uname INTO gv_idimpexp.

                    EXPORT gv_trtyp FROM gv_trtyp_11 TO MEMORY ID gv_idimpexp.

                    *se recupera datos de la solicitud
                    CALL METHOD im_req_item->get_data
                    receiving
                    re_data = gs_mereq_item
                    .

                    CALL METHOD im_req_item->get_persistent_data
                    receiving
                    re_data = gs_eban_11
                    .

                    *Al grabar la solicitud los datos estarán en la estructura gs_eban_11
                    CLEAR gv_idimpexp.
                    CONCATENATE gc_eban sy-uname INTO gv_idimpexp.

                    EXPORT gv_banfn FROM gs_eban_11-banfn TO MEMORY ID gv_idimpexp.

                    Comentario

                    • jaqs00
                      Junior Member
                      • sep
                      • 11

                      #11
                      Te explico: Antes habia 2 tipos de imputacion de pedido (Cto.de coste y cliente) y ahora hay un tercer tipo (Mixto), pues lo que quiero hacer es que cuando el tipo de imputacion campo KNTTP de la tabla MEREQ3211GRID, obligue al usuario a rellenar los campos Contrato y Posicion de la pestaña Datos de cliente ( Contrato: ZICE-VBELN, Posicion: ZICE-VBELP)

                      Como te puedo mandar un pantallazo

                      Estas son las user que me da el programa que me encuentra las user, por transaccion:

                      MEREQ001

                      EXIT_SAPLMEREQ_001
                      EXIT_SAPLMEREQ_002
                      EXIT_SAPLMEREQ_003
                      EXIT_SAPLMEREQ_004
                      EXIT_SAPLMEREQ_005
                      EXIT_SAPLMEREQ_006
                      EXIT_SAPLMEREQ_007
                      EXIT_SAPLMEREQ_008
                      EXIT_SAPLMEREQ_009
                      EXIT_SAPLMEREQ_010

                      Comentario

                      • jaqs00
                        Junior Member
                        • sep
                        • 11

                        #12
                        Me he fijado que el programador anterior a mi (que por cierto no ha comentado nada de nada), las validaciones de los campos de la transaccion ME51N, las hace con los siguientes programas (creo que son badis):

                        ZCL_IM_ME_PROCESS_REQ_CUST====CM001
                        IF_EX_ME_PROCESS_REQ_CUST~INITIALIZE

                        ZCL_IM_ME_PROCESS_REQ_CUST====CM002
                        IF_EX_ME_PROCESS_REQ_CUST~OPEN

                        ZCL_IM_ME_PROCESS_REQ_CUST====CM003
                        IF_EX_ME_PROCESS_REQ_CUST~PROCESS_HEADER

                        ZCL_IM_ME_PROCESS_REQ_CUST====CM004
                        IF_EX_ME_PROCESS_REQ_CUST~PROCESS_ITEM

                        Comentario

                        Trabajando...