MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   User Exit?? (foro/showthread.php?t=39619)

jaqs00 28/10/10 11:16:08

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 28/10/10 16:29:58

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

caralbgro 28/10/10 20:19:18

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!!

jaqs00 02/11/10 11:36:47

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.:confused:

agv1976 02/11/10 13:43:58

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.

jaqs00 02/11/10 13:52:04

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

agv1976 02/11/10 13:55:17

¿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

agv1976 02/11/10 14:03:41

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

agv1976 02/11/10 14:11:24

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

agv1976 02/11/10 14:18:13

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.


Husos Horarios son GMT. La hora en este momento es 04:31:02.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web