VinceCoder
11/20/2019 - 3:21 PM

DUPLICATI cancellati da tabella con campi tipo stringa

Cancellare duplicati in tabella di tipo stringa per matchode

FUNCTION zdelete_duplicate_help.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  TABLES
*"      SHLP_TAB TYPE  SHLP_DESCT
*"      RECORD_TAB STRUCTURE  SEAHLPRES
*"  CHANGING
*"     VALUE(SHLP) TYPE  SHLP_DESCR
*"     VALUE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
*"----------------------------------------------------------------------

  DATA: ls_struct    TYPE zlfa1_block,
        ls_block     TYPE zlfa1_block,
        ls_temp      TYPE zlfa1_block,
        lt_zfa1block TYPE TABLE OF zlfa1_block.

  DATA: lv_tabix LIKE sy-tabix.

  CLEAR: ls_struct, lv_tabix.
  REFRESH lt_zfa1block.

  CASE callcontrol-step.
    WHEN 'DISP'.
      SORT record_tab.

      loop at record_tab into data(ls_record).

        lv_tabix = sy-tabix.

        ls_struct = ls_record-string.

        if not ls_temp is INITIAL.
          if ls_struct-lifnr = ls_temp-lifnr.
            ls_temp = ls_struct.
            delete record_tab index lv_tabix.
            continue.
          endif.
        endif.

        ls_temp = ls_struct.

        clear ls_struct.

      endloop.

*      DELETE ADJACENT DUPLICATES FROM record_tab.
*******      LOOP AT record_tab.
*******        MOVE record_tab TO ls_struct.
*******        APPEND ls_struct TO lt_zfa1block.
*******        CLEAR ls_struct.
*******      ENDLOOP.
*******
*******      SORT lt_zfa1block BY lifnr.
*******      SORT record_tab[].
*******      DELETE ADJACENT DUPLICATES FROM lt_zfa1block COMPARING lifnr.
*******      REFRESH record_tab[].
*******
*******      LOOP AT lt_zfa1block INTO ls_block.
*******
*******        CONCATENATE '   ' ls_block-bukrs(4) ls_block-lifnr(10) ls_block-name1(35) ls_block-mcod1(25) ls_block-stceg(20) INTO record_tab-string SEPARATED BY space RESPECTING BLANKS.
*******        APPEND record_tab.
*******
*******      ENDLOOP.



  ENDCASE.

ENDFUNCTION.