#1
|
|||
|
|||
Urgente! Duda
Hola Amigos, como hago para eliminar registos duplicados en una tabla declarada como FIELD-SYMBOLS TYPE ANY TABLE??
intenté con: DELETE ADJACENT DUPLICATES FROM <lt_data> COMPARING LIFNR BELNR. Pero me da error que dice The specified type has no structure and therefore no component called "LIFNR". . Yo pensé que era por el nombre del campo pero ese campo si existe en la tabla.... |
#2
|
|||
|
|||
Hola como vas?...
intenta a hacer el borrado de la siguiente forma: DELETE ADJACENT DUPLICATES FROM <lt_data> COMPARING ('LIFNR BELNR'). Los field symbol como tal tienen la referencia en memoria de la tabla que hayas asignado, por lo tanto, no puedes acceder directamente al campo que desees. |
#3
|
|||
|
|||
:) :(
Hola!
al principio no me dio error de compilación pero cuando lo ejecuté me salio este error: - "LIFNR BELNR" contains a specification of the form "A->B" for a dynamic access to an object attribute. This type of attribute access is only permitted statically at this point in time. - "LIFNR BELNR" contains significant closing spaces (only possible for the type STRING). Es una tabla dinámica no se q mas hacerle |
#4
|
|||
|
|||
La tabla es completamente dinamica? o la creaste a partir de otra tabla interna?
|
#5
|
|||
|
|||
Bueno yo realmente estoy modificando el codigo que hizo otra persona, yo soy nueva programando en esto y no entiendo bien qué hizo, te envío lo que creo que es el centro de todo, según entiendo creo toda una tabla dinamica llamada gt_data y después no entiendo que hace el ASSIGN gt_data->* TO <lt_data>.? copia toda la información con estructura y todo?
*&-- CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fcat IMPORTING ep_table = gt_data EXCEPTIONS generate_subpool_dir_full = 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. ASSIGN gt_data->* TO <lt_data>. CREATE DATA ls_data LIKE LINE OF <lt_data>. ASSIGN ls_data->* TO <ls_data>. |
#6
|
|||
|
|||
:)
Bueno lo resolvi de otra manera, vacié una variable que era lo que hacia que se me duplicaran los registros, gracias de todos modos.
|
#7
|
|||
|
|||
si, efectivamente es una tabla dinamica....
aca creas la tabla dinamica segun un catalogo de tabla (gt_fcat) CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fcat IMPORTING ep_table = gt_data EXCEPTIONS generate_subpool_dir_full = 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. Y la tabla o estructura creada queda en gt_data. Haz el intento de eliminar la tabla a gt_data y no al field symbol. Hice la prueba, y el DELETE ADJACENT DUPLICATES FROM <fs> COMPARING ALL FIELDS. Si funciona, no se si te servira la comparacion por todos los campos. |
#8
|
|||
|
|||
OK...con gusto, la idea es colaborar
|
#9
|
|||
|
|||
Gracias, si lo probé con el ALL pero tenia que ordenar la tabla y me desconfiguraba la presentación, lo que estaba pasando es que una tabla quedaba llena con informacion vieja y por eso repetia los registros, lo que hice fue vaciar la tabla y listo, Gracias! ahora no se si sabes como me copio una clase de objeto?
es que necesito probar la clase original que hizo el programador para ir comparando si me falta algo, yo pense que servia presionando boton derecho sobre el nombre de la clase y copiandola pero cuando hago eso, pareciera que lo copiara todo con sus metodos, pero al ejecutar la transaccion dice que no encuentra los metodos de la clase. |
#10
|
|||
|
|||
mmm... la verdad las clases no son mi fuerte, pero valida la transaccion SE24.
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|