Campo editable en ALV

Colapsar
Este tema está cerrado
X
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • felix_cid
    Member
    • mar
    • 73

    #1

    Campo editable en ALV

    Amigos:

    Tengo un reporte ALV, en donde uno de los campos está como editable. Hasta aqui todo bien, pero es necesario que este campo sea editable siempre y cuando el valor del campo sea blanco, de lo contario no me debe dejar modificar o editar el campo. Lo traté de hacer a nivel del catálogo, dejé el campo editable, pero no sé como poder controlar la situación antes descrita.

    Les agradeceré sus comentarios y ayuda.

    Muchas gracias.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola Felix, creo q en un ALV toda la columna tiene los mismos atributos que se definen en el catalogo, esa aplicacion que quieres si la hay con tablas de control, ....
    David Carballido Córdova

    Comentario

    • nenuke
      Member
      • sep
      • 87

      #3
      Hola,

      si que puedes hacerlo. Mira este código de ejemplo, donde la celda se vuelve editable cuando el valor es <= 10.

      Espero que te sirva.

      Un saludo.

      Código:
      *&---------------------------------------------------------------------*
      *& Report  ZDEMO_ALVGRID_EDIT                                          *
      *&                                                                     *
      *&---------------------------------------------------------------------*
      *&                                                                     *
      *& Example of a simple ALV Grid Report                                 *
      *& ...................................                                 *
      *&                                                                     *
      *& The basic ALV grid, Enhanced to display specific fields as          *
      *& editable depending on field value                                   *
      *&---------------------------------------------------------------------*
      
      REPORT  ZDEMO_ALVGRID_EDIT                 .
      
      TABLES:     ekko.
      
      TYPE-POOLS: slis.                                 "ALV Declarations
      *Data Declaration
      *----------------
      TYPES: BEGIN OF t_ekko,
        ebeln TYPE ekpo-ebeln,
        ebelp TYPE ekpo-ebelp,
        statu TYPE ekpo-statu,
        aedat TYPE ekpo-aedat,
        matnr TYPE ekpo-matnr,
        menge TYPE ekpo-menge,
        meins TYPE ekpo-meins,
        netpr TYPE ekpo-netpr,
        peinh TYPE ekpo-peinh,
        field_style  TYPE lvc_t_styl, "FOR DISABLE
       END OF t_ekko.
      
      DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
            wa_ekko TYPE t_ekko.
      
      *ALV data declarations
      DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
      DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,
            wa_fieldcat TYPE lvc_s_fcat,
      
            gd_tab_group TYPE slis_t_sp_group_alv,
            gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
            gd_repid     LIKE sy-repid.
      
      
      ************************************************************************
      *Start-of-selection.
      START-OF-SELECTION.
      
        PERFORM data_retrieval.
        PERFORM set_specific_field_attributes.
        PERFORM build_fieldcatalog.
        PERFORM build_layout.
        PERFORM display_alv_report.
      
      
      *&---------------------------------------------------------------------*
      *&      Form  BUILD_FIELDCATALOG
      *&---------------------------------------------------------------------*
      *       Build Fieldcatalog for ALV Report
      *----------------------------------------------------------------------*
      FORM build_fieldcatalog.
      
        wa_fieldcat-fieldname   = 'EBELN'.
        wa_fieldcat-scrtext_m   = 'Purchase Order'.
        wa_fieldcat-col_pos     = 0.
        wa_fieldcat-outputlen   = 10.
        wa_fieldcat-emphasize   = 'X'.
        wa_fieldcat-key         = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'EBELP'.
        wa_fieldcat-scrtext_m   = 'PO Item'.
        wa_fieldcat-col_pos     = 1.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'STATU'.
        wa_fieldcat-scrtext_m   = 'Status'.
        wa_fieldcat-col_pos     = 2.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'AEDAT'.
        wa_fieldcat-scrtext_m   = 'Item change date'.
        wa_fieldcat-col_pos     = 3.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'MATNR'.
        wa_fieldcat-scrtext_m   = 'Material Number'.
        wa_fieldcat-col_pos     = 4.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'MENGE'.
        wa_fieldcat-scrtext_m   = 'PO quantity'.
        wa_fieldcat-col_pos     = 5.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'MEINS'.
        wa_fieldcat-scrtext_m   = 'Order Unit'.
        wa_fieldcat-col_pos     = 6.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'NETPR'.
        wa_fieldcat-scrtext_m   = 'Net Price'.
        wa_fieldcat-edit        = 'X'. "sets whole column to be editable
        wa_fieldcat-col_pos     = 7.
        wa_fieldcat-outputlen   = 15.
        wa_fieldcat-datatype     = 'CURR'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      
        wa_fieldcat-fieldname   = 'PEINH'.
        wa_fieldcat-scrtext_m   = 'Price Unit'.
        wa_fieldcat-col_pos     = 8.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR  wa_fieldcat.
      ENDFORM.                    " BUILD_FIELDCATALOG
      
      
      *&---------------------------------------------------------------------*
      *&      Form  BUILD_LAYOUT
      *&---------------------------------------------------------------------*
      *       Build layout for ALV grid report
      *----------------------------------------------------------------------*
      FORM build_layout.
      * Set layout field for field attributes(i.e. input/output)
        gd_layout-stylefname = 'FIELD_STYLE'.
        gd_layout-zebra             = 'X'.
      ENDFORM.                    " BUILD_LAYOUT
      
      
      *&---------------------------------------------------------------------*
      *&      Form  DISPLAY_ALV_REPORT
      *&---------------------------------------------------------------------*
      *       Display report using ALV grid
      *----------------------------------------------------------------------*
      FORM display_alv_report.
        gd_repid = sy-repid.
      
      *  call function 'REUSE_ALV_GRID_DISPLAY'
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
             EXPORTING
                  i_callback_program      = gd_repid
      *            i_callback_user_command = 'USER_COMMAND'
                  is_layout_lvc               = gd_layout
                  it_fieldcat_lvc             = it_fieldcat
                  i_save                  = 'X'
             TABLES
                  t_outtab                = it_ekko
             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.                    " DISPLAY_ALV_REPORT
      
      
      *&---------------------------------------------------------------------*
      *&      Form  DATA_RETRIEVAL
      *&---------------------------------------------------------------------*
      *       Retrieve data form EKPO table and populate itab it_ekko
      *----------------------------------------------------------------------*
      FORM data_retrieval.
        SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
         UP TO 10 ROWS
          FROM ekpo
          INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
      
      ENDFORM.                    " DATA_RETRIEVAL
      
      
      *&---------------------------------------------------------------------*
      *&      Form  set_specific_field_attributes
      *&---------------------------------------------------------------------*
      *       populate FIELD_STYLE table with specific field attributes
      *----------------------------------------------------------------------*
      form set_specific_field_attributes .
        DATA ls_stylerow TYPE lvc_s_styl .
        DATA lt_styletab TYPE lvc_t_styl .
      
      * Populate style variable (FIELD_STYLE) with style properties
      *
      * The NETPR field/column has been set to editable in the fieldcatalog...
      * The following code sets it to be disabled(display only) if 'NETPR'
      * is gt than 10.
        LOOP AT it_ekko INTO wa_ekko.
          IF wa_ekko-netpr GT 10.
            ls_stylerow-fieldname = 'NETPR' .
            ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                                   "set field to disabled
            APPEND ls_stylerow  TO wa_ekko-field_style.
            MODIFY it_ekko FROM wa_ekko.
          ENDIF.
        ENDLOOP.
      
      endform.                    " set_specific_field_attributes

      Comentario

      • robert_milan
        Senior Member
        • jun
        • 315

        #4
        Chulada!!!!

        Originalmente publicado por nenuke
        Hola,

        si que puedes hacerlo. Mira este código de ejemplo, donde la celda se vuelve editable cuando el valor es <= 10.

        Espero que te sirva.

        Un saludo.

        Código:
        *&---------------------------------------------------------------------*
        *& Report  ZDEMO_ALVGRID_EDIT                                          *
        *&                                                                     *
        *&---------------------------------------------------------------------*
        *&                                                                     *
        *& Example of a simple ALV Grid Report                                 *
        *& ...................................                                 *
        *&                                                                     *
        *& The basic ALV grid, Enhanced to display specific fields as          *
        *& editable depending on field value                                   *
        *&---------------------------------------------------------------------*
        
        REPORT  ZDEMO_ALVGRID_EDIT                 .
        
        TABLES:     ekko.
        
        TYPE-POOLS: slis.                                 "ALV Declarations
        *Data Declaration
        *----------------
        TYPES: BEGIN OF t_ekko,
          ebeln TYPE ekpo-ebeln,
          ebelp TYPE ekpo-ebelp,
          statu TYPE ekpo-statu,
          aedat TYPE ekpo-aedat,
          matnr TYPE ekpo-matnr,
          menge TYPE ekpo-menge,
          meins TYPE ekpo-meins,
          netpr TYPE ekpo-netpr,
          peinh TYPE ekpo-peinh,
          field_style  TYPE lvc_t_styl, "FOR DISABLE
         END OF t_ekko.
        
        DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
              wa_ekko TYPE t_ekko.
        
        *ALV data declarations
        DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
        DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,
              wa_fieldcat TYPE lvc_s_fcat,
        
              gd_tab_group TYPE slis_t_sp_group_alv,
              gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
              gd_repid     LIKE sy-repid.
        
        
        ************************************************************************
        *Start-of-selection.
        START-OF-SELECTION.
        
          PERFORM data_retrieval.
          PERFORM set_specific_field_attributes.
          PERFORM build_fieldcatalog.
          PERFORM build_layout.
          PERFORM display_alv_report.
        
        
        *&---------------------------------------------------------------------*
        *&      Form  BUILD_FIELDCATALOG
        *&---------------------------------------------------------------------*
        *       Build Fieldcatalog for ALV Report
        *----------------------------------------------------------------------*
        FORM build_fieldcatalog.
        
          wa_fieldcat-fieldname   = 'EBELN'.
          wa_fieldcat-scrtext_m   = 'Purchase Order'.
          wa_fieldcat-col_pos     = 0.
          wa_fieldcat-outputlen   = 10.
          wa_fieldcat-emphasize   = 'X'.
          wa_fieldcat-key         = 'X'.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'EBELP'.
          wa_fieldcat-scrtext_m   = 'PO Item'.
          wa_fieldcat-col_pos     = 1.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'STATU'.
          wa_fieldcat-scrtext_m   = 'Status'.
          wa_fieldcat-col_pos     = 2.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'AEDAT'.
          wa_fieldcat-scrtext_m   = 'Item change date'.
          wa_fieldcat-col_pos     = 3.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'MATNR'.
          wa_fieldcat-scrtext_m   = 'Material Number'.
          wa_fieldcat-col_pos     = 4.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'MENGE'.
          wa_fieldcat-scrtext_m   = 'PO quantity'.
          wa_fieldcat-col_pos     = 5.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'MEINS'.
          wa_fieldcat-scrtext_m   = 'Order Unit'.
          wa_fieldcat-col_pos     = 6.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'NETPR'.
          wa_fieldcat-scrtext_m   = 'Net Price'.
          wa_fieldcat-edit        = 'X'. "sets whole column to be editable
          wa_fieldcat-col_pos     = 7.
          wa_fieldcat-outputlen   = 15.
          wa_fieldcat-datatype     = 'CURR'.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        
          wa_fieldcat-fieldname   = 'PEINH'.
          wa_fieldcat-scrtext_m   = 'Price Unit'.
          wa_fieldcat-col_pos     = 8.
          APPEND wa_fieldcat TO it_fieldcat.
          CLEAR  wa_fieldcat.
        ENDFORM.                    " BUILD_FIELDCATALOG
        
        
        *&---------------------------------------------------------------------*
        *&      Form  BUILD_LAYOUT
        *&---------------------------------------------------------------------*
        *       Build layout for ALV grid report
        *----------------------------------------------------------------------*
        FORM build_layout.
        * Set layout field for field attributes(i.e. input/output)
          gd_layout-stylefname = 'FIELD_STYLE'.
          gd_layout-zebra             = 'X'.
        ENDFORM.                    " BUILD_LAYOUT
        
        
        *&---------------------------------------------------------------------*
        *&      Form  DISPLAY_ALV_REPORT
        *&---------------------------------------------------------------------*
        *       Display report using ALV grid
        *----------------------------------------------------------------------*
        FORM display_alv_report.
          gd_repid = sy-repid.
        
        *  call function 'REUSE_ALV_GRID_DISPLAY'
          CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
               EXPORTING
                    i_callback_program      = gd_repid
        *            i_callback_user_command = 'USER_COMMAND'
                    is_layout_lvc               = gd_layout
                    it_fieldcat_lvc             = it_fieldcat
                    i_save                  = 'X'
               TABLES
                    t_outtab                = it_ekko
               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.                    " DISPLAY_ALV_REPORT
        
        
        *&---------------------------------------------------------------------*
        *&      Form  DATA_RETRIEVAL
        *&---------------------------------------------------------------------*
        *       Retrieve data form EKPO table and populate itab it_ekko
        *----------------------------------------------------------------------*
        FORM data_retrieval.
          SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
           UP TO 10 ROWS
            FROM ekpo
            INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
        
        ENDFORM.                    " DATA_RETRIEVAL
        
        
        *&---------------------------------------------------------------------*
        *&      Form  set_specific_field_attributes
        *&---------------------------------------------------------------------*
        *       populate FIELD_STYLE table with specific field attributes
        *----------------------------------------------------------------------*
        form set_specific_field_attributes .
          DATA ls_stylerow TYPE lvc_s_styl .
          DATA lt_styletab TYPE lvc_t_styl .
        
        * Populate style variable (FIELD_STYLE) with style properties
        *
        * The NETPR field/column has been set to editable in the fieldcatalog...
        * The following code sets it to be disabled(display only) if 'NETPR'
        * is gt than 10.
          LOOP AT it_ekko INTO wa_ekko.
            IF wa_ekko-netpr GT 10.
              ls_stylerow-fieldname = 'NETPR' .
              ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                                     "set field to disabled
              APPEND ls_stylerow  TO wa_ekko-field_style.
              MODIFY it_ekko FROM wa_ekko.
            ENDIF.
          ENDLOOP.
        
        endform.                    " set_specific_field_attributes
        Este codigo es la neta!!!!
        Un Huevon No Inútil


        Solo di lo que piensas, a la mejor tienes la mejor respuesta....

        Si alguien ya lo hizo, copialo y cambiale las variables total es un codigo nuevo.....

        Si SAP lo hace se puede hacer, no me pidas hacer algo que SAP no ha hecho.....

        Consultor FI jr/ABAP Sr.

        Comentario

        • ksper
          Junior Member
          • nov
          • 13

          #5
          Ese codigo es bueno...

          Pero despues como actualizas la tabla interna para posteriormente actualizar la tabla Z????
          Octavio Sánchez Arce
          SAP Consultant / Capgemini / Mexico
          www.capgemini.com

          Comentario

          • lilisarment
            Junior Member
            • abr
            • 12

            #6
            Gardar Datos De Alv Editable

            Hola a todos,

            Ojala puedan ayudarme.

            he creado un alv editable, no tengo problema con eso pero a la hora de guardar mis datos es donde tengo el problema,

            Cuando quiero actualizar los nuevos registros a las 4 tablas que uso me duplica el registro y me crea uno nuevo con los datos modificados en las tablas. Lo que necesito es que me actualice solo los registros que yo modifique sobre los registros que me muestra y no quiero que me agregue un registro nuevo con los datos.

            les muestro el codigo que uso para guardar:

            *&---------------------------------------------------------------------*
            *& Form GUARDAR_DATOS
            *&---------------------------------------------------------------------*
            FORM GUARDAR_DATOS.
            ***Estas son las 4 tablas que actualizare .
            data: it_alv_zcdoctlacc_temp l ike zop3acciones OCCURS 0 WITH HEADER LINE,
            wa_alv_zcdoctlacc_temp TYPE zop3accioneS,
            it_alv_zcdoctlacc1_temp like zop3dndp OCCURS 0 WITH HEADER LINE,
            wa_alv_zcdoctlacc1_temp TYPE zop3dndp,
            it_alv_zcdoctlacc2_temp like zop3ndp OCCURS 0 WITH HEADER LINE,
            wa_alv_zcdoctlacc2_temp TYPE zop3ndp,
            it_alv_zcdoctlacc3_temp like zPRO OCCURS 0 WITH HEADER LINE,
            wa_alv_zcdoctlacc3_temp TYPE zPRO,
            it_alv_zcdoctlacc4_temp like ZCTOCOSTOS OCCURS 0 WITH HEADER LINE,
            wa_alv_zcdoctlacc4_temp TYPE ZCTOCOSTOS.
            try.
            clear: it_alv_zcdoctlacc_temp.
            clear: it_alv_zcdoctlacc1_temp.
            clear: it_alv_zcdoctlacc2_temp.
            clear: it_alv_zcdoctlacc3_temp.

            ** datos anteriores = a nuevos

            it_alv_zcdoctlacc_old[] = it_alv_zcdoctlacc[].


            LOOP AT it_alv_zcdoctlacc INTO wa_alv_zcdoctlacc.
            MOVE-CORRESPONDING:
            wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc_temp,
            wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc1_temp,
            wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc2_temp,
            wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc3_temp,
            wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc4_temp.
            IF NOT wa_alv_zcdoctlacc_temp IS INITIAL.
            APPEND wa_alv_zcdoctlacc_temp TO it_alv_zcdoctlacc_temp.
            APPEND wa_alv_zcdoctlacc1_temp TO it_alv_zcdoctlacc1_temp.
            APPEND wa_alv_zcdoctlacc2_temp TO it_alv_zcdoctlacc2_temp.
            APPEND wa_alv_zcdoctlacc3_temp TO it_alv_zcdoctlacc3_temp.
            APPEND wa_alv_zcdoctlacc4_temp TO it_alv_zcdoctlacc4_temp.
            clear: wa_alv_zcdoctlacc_temp.
            clear: wa_alv_zcdoctlacc1_temp.
            clear: wa_alv_zcdoctlacc2_temp.
            clear: wa_alv_zcdoctlacc3_temp.
            clear: wa_alv_zcdoctlacc4_temp.

            MODIFY zop3acciones FROM TABLE it_alv_zcdoctlacc_temp[].
            MODIFY zop3dndp FROM TABLE it_alv_zcdoctlacc1_temp.
            MODIFY zop3ndp FROM TABLE it_alv_zcdoctlacc2_temp.
            MODIFY zPRO FROM TABLE it_alv_zcdoctlacc3_temp.
            MODIFY ZCTOCOSTOS FROM TABLE it_alv_zcdoctlacc4_temp.
            ENDIF.
            ENDLOOP.
            clear: it_alv_zcdoctlacc.
            clear: it_alv_zcdoctlacc_temp.
            clear: it_alv_zcdoctlacc1_temp.
            clear: it_alv_zcdoctlacc2_temp.
            clear: it_alv_zcdoctlacc3_temp.
            clear: it_alv_zcdoctlacc4_temp.
            ENDTRY.
            ENDFORM.

            *-----------------

            Ojala puedan ayudarme.
            Gracias

            Comentario

            • jrrojas21
              Junior Member
              • ago
              • 1

              #7
              Buen Dia


              Los datos q se graban en las tablas z dependen de la llave de la misma si graba un registro nuevo el por q la llave cambio.

              podrias primero borrar y luego grabar el registro modificado o revisar los campos q tienes definidos como llave en la tabla z.



              Originalmente publicado por lilisarment
              Hola a todos,

              Ojala puedan ayudarme.

              he creado un alv editable, no tengo problema con eso pero a la hora de guardar mis datos es donde tengo el problema,

              Cuando quiero actualizar los nuevos registros a las 4 tablas que uso me duplica el registro y me crea uno nuevo con los datos modificados en las tablas. Lo que necesito es que me actualice solo los registros que yo modifique sobre los registros que me muestra y no quiero que me agregue un registro nuevo con los datos.

              les muestro el codigo que uso para guardar:

              *&---------------------------------------------------------------------*
              *& Form GUARDAR_DATOS
              *&---------------------------------------------------------------------*
              FORM GUARDAR_DATOS.
              ***Estas son las 4 tablas que actualizare .
              data: it_alv_zcdoctlacc_temp l ike zop3acciones OCCURS 0 WITH HEADER LINE,
              wa_alv_zcdoctlacc_temp TYPE zop3accioneS,
              it_alv_zcdoctlacc1_temp like zop3dndp OCCURS 0 WITH HEADER LINE,
              wa_alv_zcdoctlacc1_temp TYPE zop3dndp,
              it_alv_zcdoctlacc2_temp like zop3ndp OCCURS 0 WITH HEADER LINE,
              wa_alv_zcdoctlacc2_temp TYPE zop3ndp,
              it_alv_zcdoctlacc3_temp like zPRO OCCURS 0 WITH HEADER LINE,
              wa_alv_zcdoctlacc3_temp TYPE zPRO,
              it_alv_zcdoctlacc4_temp like ZCTOCOSTOS OCCURS 0 WITH HEADER LINE,
              wa_alv_zcdoctlacc4_temp TYPE ZCTOCOSTOS.
              try.
              clear: it_alv_zcdoctlacc_temp.
              clear: it_alv_zcdoctlacc1_temp.
              clear: it_alv_zcdoctlacc2_temp.
              clear: it_alv_zcdoctlacc3_temp.

              ** datos anteriores = a nuevos

              it_alv_zcdoctlacc_old[] = it_alv_zcdoctlacc[].


              LOOP AT it_alv_zcdoctlacc INTO wa_alv_zcdoctlacc.
              MOVE-CORRESPONDING:
              wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc_temp,
              wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc1_temp,
              wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc2_temp,
              wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc3_temp,
              wa_alv_zcdoctlacc TO wa_alv_zcdoctlacc4_temp.
              IF NOT wa_alv_zcdoctlacc_temp IS INITIAL.
              APPEND wa_alv_zcdoctlacc_temp TO it_alv_zcdoctlacc_temp.
              APPEND wa_alv_zcdoctlacc1_temp TO it_alv_zcdoctlacc1_temp.
              APPEND wa_alv_zcdoctlacc2_temp TO it_alv_zcdoctlacc2_temp.
              APPEND wa_alv_zcdoctlacc3_temp TO it_alv_zcdoctlacc3_temp.
              APPEND wa_alv_zcdoctlacc4_temp TO it_alv_zcdoctlacc4_temp.
              clear: wa_alv_zcdoctlacc_temp.
              clear: wa_alv_zcdoctlacc1_temp.
              clear: wa_alv_zcdoctlacc2_temp.
              clear: wa_alv_zcdoctlacc3_temp.
              clear: wa_alv_zcdoctlacc4_temp.

              MODIFY zop3acciones FROM TABLE it_alv_zcdoctlacc_temp[].
              MODIFY zop3dndp FROM TABLE it_alv_zcdoctlacc1_temp.
              MODIFY zop3ndp FROM TABLE it_alv_zcdoctlacc2_temp.
              MODIFY zPRO FROM TABLE it_alv_zcdoctlacc3_temp.
              MODIFY ZCTOCOSTOS FROM TABLE it_alv_zcdoctlacc4_temp.
              ENDIF.
              ENDLOOP.
              clear: it_alv_zcdoctlacc.
              clear: it_alv_zcdoctlacc_temp.
              clear: it_alv_zcdoctlacc1_temp.
              clear: it_alv_zcdoctlacc2_temp.
              clear: it_alv_zcdoctlacc3_temp.
              clear: it_alv_zcdoctlacc4_temp.
              ENDTRY.
              ENDFORM.

              *-----------------

              Ojala puedan ayudarme.
              Gracias

              Comentario

              • hramirezpa
                Junior Member
                • jul
                • 17

                #8
                Excelente, gracias por el aporte.

                Excelente, gracias por el aporte.

                ---------------------------------
                A veces
                B uenos programadores
                A yudan a
                P rimiparos

                Comentario

                • grandnomade
                  Junior Member
                  • ene
                  • 18

                  #9
                  Muchas gracias nenuke, me ha servido.

                  Saludos

                  Comentario

                  Trabajando...