Anuncio

Colapsar
No hay anuncio todavía.

En blanco con la select.

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • En blanco con la select.

    Hola buenas me encuentro ejecutando lo siguiente, pero en la select me he quedado en blanco ahora mismo, la condición que quiero para que en base la pantalla de selección me muestre la cantidad de registros máximos que quiero sacar y no sacarlos todos de esa tabla, de mara.:
    Código:
    &---------------------------------------------------------------------*
    *& Report ZALV_MARA *
    *&---------------------------------------------------------------------*
    
    REPORT zalv_mara NO STANDARD PAGE HEADING.
    
    *&---------------------------------------------------------------------*
    *& Definición de la tabla Interna en relación con MARA. *
    *&---------------------------------------------------------------------*
    
    TABLES: mara.
    
    TYPES: BEGIN OF ty_mara,
    estado_mat TYPE string.
    INCLUDE STRUCTURE mara.
    TYPES: END OF ty_mara.
    
    
    DATA: lt_alv_lista TYPE TABLE OF ty_mara WITH HEADER LINE,
    ls_alv_lista TYPE ty_mara.
    
    *&---------------------------------------------------------------------*
    *& Definición de la Pantalla de selección correspondiente. *
    *&---------------------------------------------------------------------*
    
    SELECTION-SCREEN BEGIN OF BLOCK b1.
    SELECT-OPTIONS: s_mantr FOR mara-matnr.
    PARAMETERS: p_selec TYPE i.
    SELECTION-SCREEN END OF BLOCK b1.
    
    *&---------------------------------------------------------------------*
    *& Tratamiento de los datos de la tabla mara, el select que me devuel- *
    *& va los datos de la tabla mara pero volcados sobre la lt_alv_lista *
    *&---------------------------------------------------------------------*
    
    SELECT *
    FROM mara
    INTO CORRESPONDING FIELDS OF TABLE lt_alv_lista
    WHERE .
    
    *IF lt_alv_lista IS NOT INITIAL.
    *
    *ENDIF.
    
    *&---------------------------------------------------------------------*
    *& Establecer condición para comprobar/validar si liqdt es > fecha hoy-*
    *& y añadir así un estado 'DESFASADO' o 'COMERCIABLE' en el campo nuevo*
    *&-------------------------de la tabla---------------------------------*
    *&---------------------------------------------------------------------*
    *
    LOOP AT lt_alv_lista INTO ls_alv_lista.
    IF ls_alv_lista-liqdt LT sy-datum.
    *// 'Introducir en el campo nuevo DESFASADO'.
    ls_alv_lista-estado_mat = 'DESFASADO'.
    MODIFY lt_alv_lista FROM ls_alv_lista.
    ELSE.
    *// 'Introducir en el campo nuevo COMERCIABLE'.
    ls_alv_lista-estado_mat = 'COMERCIABLE'.
    MODIFY lt_alv_lista FROM ls_alv_lista.
    ENDIF.
    ENDLOOP.
    
    
    *
    *&---------------------------------------------------------------------*
    *& Definición posterior de la ALV correspondiente *
    *&---------------------------------------------------------------------*
    *
    Tengo que reconocer que estoy bastante tierno con el tema.


    Gracias de antemano a todos.

    Un saludo.
    Editado por última vez por koken; 15/06/2017, 17:22:16.

  • #2
    Hola,

    entiendo que lo que quieres hacer es esto:

    Código:
    SELECT *
    FROM mara
    INTO CORRESPONDING FIELDS OF TABLE lt_alv_lista
    WHERE matnr in s_matnr.
    en ese caso la tabla será filtrada por lo que has seleccionado en la pantalla inicial.

    Espero que te haya servido.

    Comentario


    • #3
      Hola buenas!

      Creo que sí, tiene sentido.

      luego lo que pretendo montar tras conocer todo esto es un ALV correspondiente para hacer todo este proceso. A cual llamo concretamente para este tipo de casos?.

      Gracias de antemano por el tiempo para responder. Estoy agradecido por compartir conocimiento.

      un saludo.

      Comentario


      • #4
        Hola! excelente que te sirva, después podés usar la función REUSE_ALV_GRID_DISPLAY, dentro del foro encontrarás mucho esa función. Si tienes dudas nos avisas.

        Comentario


        • #5
          Documentandome encuentro que los parámetros:

          I_CALLBACK_PROGRAM, IT_FIELDCAT y T_OUTTAB son obligatorios definirlos. Salvo cuando se han definido los campos en data, que no será necesario IT_FIELDCAT, sólo se indica el nombre de la estructura y la tabla interna con I_STRUCTURE_NAME. Pero para éste ejercicio concreto que más necesito definir? Gracias-

          Comentario


          • #6
            Acá te dejo un ejemplo que seguramente te vaya a servir para la declaración:

            Código:
             REPORT zalv_simple.  
            * Jorge Serra (AbapLife) [URL="http://abaplife.bitacoras.com/"]http://abaplife.bitacoras.com[/URL]  
            * Se trata de un pequeño ejemplo de listado ALV para aquellos que nunca
            * han creado uno. Por supuesto, a los que ya sepáis algo de ALV, no
            * creo que os sirva de mucho  
            * Propósito: * --------- * Voy mostrar un listado de posiciones de pedidos de compras  
            * Pasos esenciales (Buscar el simbolo '§')
            * ----------------
            * 1. Definición estructuras y tablas necesarias
            * 2. Definimos la tabla con los datos de salida
            * 3. Toma de datos
            * 4. Definición estructura y formato de salida
            *5. Mostrar listado  *<-- § Paso 1. Definicion estructuras y tablas necesarias  
            * Type Pool donde vienen definidas todas las estructuras y tablas TYPE-POOLS: slis.
            * Catálogo de campos: contiene la descripción de los campos de salida
            DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
            * Especificaciones de la disposición de la lista: descripción de la
            * estructura de salida  gs_layout TYPE slis_layout_alv,
            * Nombre del programa g_repid LIKE sy-repid.  
            *<-- § Paso 2. Definimos la tabla con los datos de salida TYPES: BEGIN OF st_output.  INCLUDE STRUCTURE ekpo. TYPES: END OF st_output.  DATA: gt_output TYPE STANDARD TABLE OF st_output WITH HEADER LINE.  INITIALIZATION. g_repid = sy-repid.  START-OF-SELECTION.  *<-- § Paso 3. Toma de datos  PERFORM toma_datos.  *<-- § Paso 4. Estructura y formato de salida  PERFORM init_fieldcat.  PERFORM init_layout.  *<-- § Paso 5. Mostrar listado  PERFORM listado.  *&&-----------------------------------------------------------------&&* * SUBRUTINAS DEL PROGRAMA* *&&-----------------------------------------------------------------&& *  *---------------------------------------------------------------------* * FORM INIT_FIELDCAT * *---------------------------------------------------------------------* FORM init_fieldcat.  * Mediante esta tabla vamos a definir los campos que queremos mostrar * en el listado de salida.  gt_fieldcat-fieldname = 'EBELN'.  gt_fieldcat-ref_tabname = 'EKPO'.  APPEND gt_fieldcat. CLEAR gt_fieldcat.  gt_fieldcat-fieldname = 'EBELP'.  gt_fieldcat-ref_tabname = 'EKPO'.  APPEND gt_fieldcat. CLEAR gt_fieldcat.  gt_fieldcat-fieldname = 'MATNR'. gt_fieldcat-ref_tabname = 'EKPO'.  APPEND gt_fieldcat. CLEAR gt_fieldcat.  gt_fieldcat-fieldname = 'WERKS'. gt_fieldcat-ref_tabname = 'EKPO'.  APPEND gt_fieldcat. CLEAR gt_fieldcat.  gt_fieldcat-fieldname = 'MENGE'. gt_fieldcat-ref_tabname = 'EKPO'.  APPEND gt_fieldcat. CLEAR gt_fieldcat. gt_fieldcat-fieldname = 'MEINS'.  gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.  ENDFORM.  *---------------------------------------------------------------------* * FORM INIT_LAYOUT * *---------------------------------------------------------------------* FORM init_layout.  * Mediante esta estructura podemos definir el formato de salida  gs_layout-zebra = 'X'.  gs_layout-f2code = '&ETA'.  gs_layout-detail_popup = 'X'.  ENDFORM.  *---------------------------------------------------------------------* * FORM TOMA_DATOS * *---------------------------------------------------------------------* FORM toma_datos.  * Los datos deben guardarse en la tabla interna de salida  SELECT * FROM ekpo UP TO 100 ROWS INTO TABLE gt_output. ENDFORM. " TOMA_DATOS  *---------------------------------------------------------------------* * FORM LISTADO * *---------------------------------------------------------------------* FORM listado.  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'  EXPORTING  i_callback_program = g_repid  is_layout = gs_layout  it_fieldcat = gt_fieldcat[]  TABLES t_outtab = gt_output  EXCEPTIONS program_error = 1  OTHERS = 2 .  IF sy-subrc <> 0.  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  ENDIF.  ENDFORM. " LISTADO
            No tengo un SAP a mano en este momento así que copié este realizado en este página:

            http://misprogramasabap.blogspot.com...lv-simple.html

            Espero que te sea de ayuda.
            Editado por última vez por koken; 19/06/2017, 17:19:30.

            Comentario


            • #7
              Me piden hacer lo siguiente:

              ALV, con los datos de la tabla MARA, con todos sus campos, y que el campo de "Fecha de creación" sea editable.

              He investigado por ahi y me hablan de hacer lo siguiente:

              declarar una variable del tipo lc_glay TYPE lvc_s_glay, después iniciar en alguna parte del programa lc_glay-edt_cll_cb = 'X' y después si quiero modificar un campo que tire de it_fieldcat-edit = 'X'. Pero como defino con la sintaxis correcta y en donde se define, dentro de la función del REUSE_ALV_GRID_DISPLAY o previamente en los data?

              Gracias por todo de verdad. También miraré esa página.

              Gracias.

              Comentario


              • #8
                Hola raul,

                pudiste resolverlo? como bien dijiste tienes que definirlo en los DATA, cualquier cosa avise y pongo un ejemplo de campo editable.

                Saludos!

                Comentario

                Trabajando...
                X