Ayuda con Dynpros ME21N

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Rodolfo SAP
    Member
    • jun
    • 89

    #1

    Ayuda con Dynpros ME21N

    Buenos Dias.

    Amigos espero me puedan ayudar y es que me han dejado algo un poquito laborioso.

    En la trx ME21N existen unos botoncitos con forma de embudito y un cuadrito azul, estos sirven por ejemplo para dibujo y texto Cabecera y le das click te despliegua los Tab de Cabecera y el de abajo dibujito y texto Resumen de posiciones y te despliega el Table Control entonces es eso lo que tengo que hacer que este como que ( minimizado , oculto ) un Table Control y que con click en el boton se ( maximize despliegue ) en la dynpro.

    De antemano muchas gracias por su ayuda y sus tips.

    Saludos.







  • zonanet
    Senior Member
    • mar
    • 195

    #2
    te comento que yo tenía esa inquietud más que requerimiento, debuggeando la me21n me di cuenta que son distintas pantalla con contenedores diferentes, y se utiliza una función para ello, ahorita no te puedo decir más porque no tengo acceso a sap, pero dale una revisada al código de esa tx, tal vez logres algo.

    Saludos.

    Comentario

    • Groon
      Junior Member
      • oct
      • 1

      #3
      Coye amigo si lograste resolver eso de los pliegues de sub screens , tengo exactamente el mismo caso que debor realizar esos pliegues de subscreens

      Comentario

      • Rodolfo SAP
        Member
        • jun
        • 89

        #4
        Respondiendome a mi mismo

        Bueno pienso que si encontre la solución sería bueno postearla asi que os dejo el truquito de la ME21N con los botoncitos...

        Bueno pues el chiste de todo son las SUBSCREEN y lo que realmente se necesita es entender como trabajan entre si...

        Primeramente os dejo como tip checar el programa RM_MEPO_GUI --> despues seguir el proceso que hace en la llamada a funcion 'MEGUI_MAINTAIN' --> y dentro de la funcion cuando manda a ejecutar el metodo CALL METHOD default_view->send... esto nos lleva hasta el grupo de funciones MEGUI...

        Bueno la solucion.

        1.- El principio basico es crear una pantalla inicial que sirva como layout, en ella ubicaremos todos nuestros subscreen.

        En el PBO indicaremos la parte funcional del llamado de la siguiente forma:

        Código:
        PROCESS BEFORE OUTPUT.
        
          MODULE status.
        
          MODULE var_subscreen.
        
          CALL SUBSCREEN sub01 INCLUDING call_prog call_subscreen_sub01.
        
          CALL SUBSCREEN sub02 INCLUDING call_prog call_subscreen_sub02.
        
        ***************************************************
        
        PROCESS AFTER INPUT.
        
          MODULE user_command.
        Donde el module var_subscreen es el importante...

        Código:
        MODULE var_subscreen OUTPUT.
        
          IF sy-dynnr EQ 2000.
            IF off NE 'X' .  "off es una variable para indicar x diferente off - visible
        *     SUB01
              call_subscreen_sub01 = 2200. " la sub 2200 contiene los botones
            ELSEIF off EQ 'X'.    " x igual a off - oculto
              CASE ok_code.
        *     SUB01
              call_subscreen_sub01 = 2300. " la sub 2300 contiene un subcreen vacio
            ENDIF.
          ENDIF.
        
          IF sy-dynnr EQ 2200.
            call_subscreen = 2001.
          ENDIF.
        
          IF sy-dynnr EQ 2300.
            call_subscreen = 2002.
          ENDIF.
        
        ENDMODULE.                 " VAR_SUBSCREEN  OUTPUT


        2.- Despues de esto debemos de crear otra capa de subscreens en ellas presentaremos el boton de ocultar dynpro 2200 /desplegar dynpro 2300.

        Hasta aqui tenemos un flujo similar a este

        Inicio Dynpro 2000 -> Call Dynpro 2200 -> Boton Ocultar -> Dynpro 2000 -> Call Dynpro 2300.

        En estas dynpro solo pondremos un boton ocultar y un area subscreen y haremos un dynpro parecido a este (2300) pero con un boton diferente.

        Como dije se crea un area subscreen y para ello necesitamos ambien poner en la parte de PBO una llamada a la siguiente screen, checar que realizo otra llamada al module var_subcreen.

        Código:
        PROCESS BEFORE OUTPUT.
        
          MODULE var_subscreen.
        
          CALL SUBSCREEN sub2200 INCLUDING call_prog call_subscreen.



        3.- Al final ya nuestra tercera capa de dynpro pondremos definitivamente lo que queremos presentar en pantalla ejemplo nuestro table control, input field, radiobutton, etc...

        .. El cambio para ocultar y desplegar lo hace la parte del user_command este user se ejecuta en nuestra dynpro inicial manipulando la variable off.

        Código:
        MODULE user_command  INPUT.
        
          CLEAR ok_code.
        
          ok_code = sy-ucomm.
        
          CASE ok_code.
        
            WHEN 'BACK'.
        
              LEAVE PROGRAM.
        
            WHEN 'OCULTAR'. " codigo de funcion asignado al boton en dynpro 2200.
              off = 'X'.
        
            WHEN 'DESPLEGAR' . " codigo de funcion asignado al boton en dynpro 2300.
              CLEAR off.
        
          ENDCASE.
        
        ENDMODULE.
        Con esto y con el MODULE var_subscreen tenemos nuestro llamado ocultar/desplegar...realmente solo es un flujo de subscreen en capas donde la subscreen vacia se sobrepone a la subscreen de objetos.. y pues finalmente tenemos lo que hace la ME21N con el botoncito..

        Me imagino habra varias formas de realizar esto utilizando clases tal y como lo hace la ME21N pero esta es la forma mas simple de poder realizar o simular el ocultar y desplegar esas partes....

        Espero les sirva.

        Comentario

        Trabajando...