Volver al mismo programa???

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tate
    Senior Member
    • feb
    • 106

    #1

    Volver al mismo programa???

    Buenas amigos tengo un problemilla, aber si me ayudais.

    Tengo un report, que tiene una pantalla de seleccion con SELECTION-SCREEN , entonces despues de eso, hace una select, y si toda va bien, sigue el programa, pero si falla, hace esto:

    IF sy-subrc <> 0.
    MESSAGE e398(00) WITH text-001.
    ENDIF.

    Lo que necesito esque si entra en ese if, saque el mensaje de error, pero vuelva a la pantalla de selecion.
    He probado poniendo el submit y no hace nada, ya que saca el mensaje de error y se keda la pantalla en azul y solo deja darle a "esc", asi q ue no se, aber si alguien me puede ayudar.
  • ppchico
    Senior Member
    • oct
    • 144

    #2
    Hola:

    Si lo que quieres, es que salga erl mensaje de error, sin dejar el programa bloqueado, lo que puedes hacer es lanzarlo como un mensaje de estatus, pero con el formato de Error, es decir:

    message sxxx(Clase_mensaje) display like 'E'.

    Con eso te debería ir bien.

    Espero que te valga.

    Un saludo.

    Comentario

    • Mauricio Hidalgo
      Senior Member
      • may
      • 481

      #3
      Y no te sirve poner esa validación en el evento AT SELECTION-SCREEN ?.

      Comentario

      • Ddscerezo
        Junior Member
        • feb
        • 17

        #4
        Set Screen 0

        Quizá lo que quieres es volver a la dynpro de la que partes (SELECT-OPTION).
        Si es así usa:

        SET SCREEN 0.

        Ya me contarás.

        sugerencia: prueba a ponerlo justo antes del mensaje de error.

        Comentario

        • melerogalan
          Senior Member
          • nov
          • 142

          #5
          Originalmente publicado por ppchico
          Hola:

          Si lo que quieres, es que salga erl mensaje de error, sin dejar el programa bloqueado, lo que puedes hacer es lanzarlo como un mensaje de estatus, pero con el formato de Error, es decir:

          message sxxx(Clase_mensaje) display like 'E'.

          Con eso te debería ir bien.

          Espero que te valga.

          Un saludo.
          Gracias por lo del display, no lo sabía y me viene de lujo para unas cosillas y no joder el flujo del programa, gracias colega.
          Cada vez que un programador hace una hora extra, Dios mata a un gatito...tenlo en cuenta

          Comentario

          • ppchico
            Senior Member
            • oct
            • 144

            #6
            Me alegra saber, que a alguien le ha venido bien... La verdad es que este foro nos ayuda mucho en la ardua tarea diaria del trato con nuestro particular lenguaje ABAP IV. Muchas gracias a todos los que hacéis posible que cada día saquemos proyectos a delante difíciles de sacar.

            Un saludo a todos.

            Comentario

            • tate
              Senior Member
              • feb
              • 106

              #7
              buenas, priemro muchas gracias por las contestaciones, pero os cuento:

              E puesto MESSAGE s398(00) WITH text-001 DISPLAY LIKE 'e'.
              y al verificar me sale:

              *****Field "DISPLAY" is unknown. It is neither in one of the specified
              tables nor defined by a "DATA" statement.*****

              Y tmb e probado el stop y nada, saca el mensaje de error, y ya no me deja acer nada, solo al escape y ya esta.

              Comentario

              • melerogalan
                Senior Member
                • nov
                • 142

                #8
                Originalmente publicado por tate
                buenas, priemro muchas gracias por las contestaciones, pero os cuento:

                E puesto MESSAGE s398(00) WITH text-001 DISPLAY LIKE 'e'.
                y al verificar me sale:

                *****Field "DISPLAY" is unknown. It is neither in one of the specified
                tables nor defined by a "DATA" statement.*****

                Y tmb e probado el stop y nada, saca el mensaje de error, y ya no me deja acer nada, solo al escape y ya esta.
                La instruccion es asi:
                MESSAGE s398(00) DISPLAY LIKE 'E' WITH text-001.

                Asi me funciona a mi, espero que a ti tambien, por cierto, intenta poner siempre entre comillas, los caracteres en mayúsculas, evitaras errores absurdos.
                Por cierto el error qeu te da es que cuando pones la instrucción 'WITH' las palabras que le sigue los considera nombres de variables si van sin comillas y si va con comillas lo considera literales , ambos para mostrar en el mensaje, asi que 'WITH' tiene que ser lo ultimo. Por eso el error te dice que el campo 'DISPLAY' no esta declarado, porque lo considera como si fuera una variable.
                Si quieres alguna otra aclaración, aqui estoy.
                Editado por última vez por melerogalan; 27/09/2007, 07:47:08.
                Cada vez que un programador hace una hora extra, Dios mata a un gatito...tenlo en cuenta

                Comentario

                • ppchico
                  Senior Member
                  • oct
                  • 144

                  #9
                  Efectivamente meloregalan lleva razón, el error es por motivos sintácticos de la Instrucción MESSAGE, Me olvide de ponerte la instrucción exacta, ya que no vi que querías incluirle un parámetro al mensaje.

                  Prueba con el formato que ha puesto meloregalan, y debería de funcionar correctamente.

                  Un saludo.

                  Comentario

                  • melerogalan
                    Senior Member
                    • nov
                    • 142

                    #10
                    Originalmente publicado por ppchico
                    Efectivamente meloregalan lleva razón, el error es por motivos sintácticos de la Instrucción MESSAGE, Me olvide de ponerte la instrucción exacta, ya que no vi que querías incluirle un parámetro al mensaje.

                    Prueba con el formato que ha puesto meloregalan, y debería de funcionar correctamente.

                    Un saludo.
                    meloregalan ?? !! ......... melerogalan

                    jeje, es broma. Saludos
                    Cada vez que un programador hace una hora extra, Dios mata a un gatito...tenlo en cuenta

                    Comentario

                    • tate
                      Senior Member
                      • feb
                      • 106

                      #11
                      acabo de probarlo y me dice esto:
                      "DISPLAY LIKE 'E'" is not expected.

                      que tendria que hacer????

                      Comentario

                      • ppchico
                        Senior Member
                        • oct
                        • 144

                        #12
                        Jajajajaja, las malas jugadas que nos gasta la vista, he leido lo que quería leer, y no lo que ponía, A partir de ahora seguro que nop me confundo MELEROGALAN. jejejeje.

                        Comentario

                        • ppchico
                          Senior Member
                          • oct
                          • 144

                          #13
                          Tate, podrías poner un trozo de código algo más extenso del contexto de la instrucción, para hacernos una idea de donde puede estar el fallo?

                          Gracias.

                          Comentario

                          • tate
                            Senior Member
                            • feb
                            • 106

                            #14
                            SELECTION-SCREEN BEGIN OF BLOCK sc_params.

                            SELECT-OPTIONS s_matnr FOR ekpo-matnr.

                            PARAMETERS p_werks LIKE marc-werks OBLIGATORY.

                            SELECT-OPTIONS p_bstyp FOR ekpo-bstyp OBLIGATORY DEFAULT 'L'.

                            SELECT-OPTIONS p_lgort FOR ekpo-lgort NO-EXTENSION NO INTERVALS.

                            SELECT-OPTIONS p_dispo FOR marc-dispo NO-EXTENSION NO INTERVALS.

                            SELECTION-SCREEN END OF BLOCK sc_params.

                            ************************
                            * Main Code Area
                            ************************
                            START-OF-SELECTION.

                            PERFORM get_data.
                            PERFORM field_catalog.
                            PERFORM alv_display.


                            *&---------------------------------------------------------------------*
                            *& Form get_data
                            *&---------------------------------------------------------------------*
                            FORM get_data.

                            SELECT e~matnr e~txz01 m~lbkum e~effwr e~matkl m~stprs m~salk3 k~lifnr
                            e~aedat e~menge e~ktmng k~ebeln k~bstyp m~verpr e~meins k~waers m~peinh e~peinh e~netpr e~pstyp e~infnr e~werks

                            INTO (gt_outtab-matnr, gt_outtab-txz01, gt_outtab-lbkum,

                            gt_outtab-effwr, gt_outtab-matkl, gt_outtab-stprs, gt_outtab-salk3,
                            gt_outtab-lifnr, gt_outtab-aedat, gt_outtab-menge, gt_outtab-ktmng,
                            gt_outtab-ebeln, gt_outtab-bstyp, gt_outtab-verpr, gt_outtab-meins,
                            gt_outtab-waers, gt_outtab-peinh2, gt_outtab-peinh, gt_outtab-netpr,
                            gt_outtab-pstyp, gt_outtab-infnr, gt_outtab-werks)

                            FROM marc AS a INNER JOIN mbew AS m ON a~matnr EQ m~matnr
                            INNER JOIN ekpo AS e ON a~matnr EQ e~matnr
                            INNER JOIN ekko AS k ON k~ebeln EQ e~ebeln
                            WHERE a~beskz EQ 'F'
                            and a~werks EQ p_werks
                            AND a~matnr IN s_matnr
                            AND m~bwkey EQ p_werks
                            AND m~lbkum NE ''
                            AND e~werks EQ p_werks
                            AND e~bstyp IN p_bstyp
                            AND e~loekz EQ ''
                            AND e~lgort IN p_lgort
                            AND a~dispo IN p_dispo.

                            APPEND gt_outtab.
                            ENDSELECT.

                            ***********aqui es donde tendria que sacar el mensaje y luego volver a la pantalla de seleccion***********

                            IF sy-subrc <> 0.
                            MESSAGE e398(00) WITH text-001.
                            ENDIF.

                            Comentario

                            • ppchico
                              Senior Member
                              • oct
                              • 144

                              #15
                              Has probado a poner esto en la sentencia MESSAGE?

                              MESSAGE s398(00) DISPLAY LIKE 'E' WITH text-001.

                              Acabo de probarlo en un programita de prueba, y compila perfectamente.

                              Comentario

                              Trabajando...