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.