Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

program on duplicate entries

Former Member
0 Likes
481

hi everybody,

I hv done with a program to delete duplicate entries.... an the code is as below.

TYPES : BEGIN OF TY_LFA1,

LIFNR TYPE LFA1-LIFNR,

LAND1 TYPE LFA1-LAND1,

NAME1 TYPE LFA1-NAME1,

PSTLZ TYPE LFA1-PSTLZ,

END OF TY_LFA1.

DATA : IT_FIRST TYPE STANDARD TABLE OF TY_LFA1 WITH HEADER LINE,

IT_SECOND TYPE STANDARD TABLE OF TY_LFA1 WITH HEADER LINE,

V_FILE TYPE STRING,

V_COUNT TYPE I,

V_COUNTER TYPE I.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

PARAMETERS : P_FILE LIKE RLGRAP-FILENAME.

SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM GET_FILE.

START-OF-SELECTION.

IF P_FILE IS NOT INITIAL.

V_FILE = P_FILE.

PERFORM GUI_UPLOAD.

ENDIF.

IF IT_FIRST[] = IT_SECOND[].

ELSE.

MESSAGE E001(ZHEMANTH).

ENDIF.

SORT IT_FIRST BY LIFNR.

SORT IT_SECOND BY LIFNR.

DELETE ADJACENT DUPLICATES FROM IT_FIRST.

LOOP AT IT_FIRST.

LOOP AT IT_SECOND WHERE LIFNR = IT_FIRST-LIFNR.

V_COUNT = V_COUNT + 1.

ENDLOOP.

V_COUNTER = V_COUNT + 1.

WRITE : /10 IT_FIRST-LIFNR,

15 IT_FIRST-LAND1,

50 IT_FIRST-NAME1,

60 IT_FIRST-PSTLZ,

70 V_COUNT,

80 V_COUNTER.

CLEAR V_COUNT.

ENDLOOP.

&----


*& Form GET_FILE

&----


FORM GET_FILE .

CALL FUNCTION 'F4_FILENAME'

  • EXPORTING

  • PROGRAM_NAME = SYST-CPROG

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

IMPORTING

FILE_NAME = P_FILE.

.

ENDFORM. " GET_FILE

&----


*& Form GUI_UPLOAD

&----


FORM GUI_UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = IT_FIRST

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17

.

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. " GUI_UPLOAD

when iam excuting the program iam getting a error mesage as i mentiod in prog(ie no data found)

so any one tell hw to gv flatfile for this program.... an hw can i over cm the probs.

3 REPLIES 3
Read only

Clemenss
Active Contributor
0 Likes
445

Hi satish,

go home and sleep about it.

Maybe tomorrow you can explain your question.

Regards,

Clemens

Read only

Former Member
0 Likes
445

I don't see IT_SECOND being populated.

You probably want something like:

REPORT ztest MESSAGE-ID 00.

TYPES : BEGIN OF ty_lfa1,
          lifnr TYPE lfa1-lifnr,
          land1 TYPE lfa1-land1,
          name1 TYPE lfa1-name1,
          pstlz TYPE lfa1-pstlz,
        END OF ty_lfa1.

DATA: it_first TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE,
      it_second TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE,
      v_file TYPE string,
      v_count TYPE i,
      v_counter TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS : p_file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM get_file.

START-OF-SELECTION.
  PERFORM get_db_data.           "<====
  IF p_file IS NOT INITIAL.
    v_file = p_file.
    PERFORM gui_upload.
  ENDIF.
  IF it_first[] = it_second[].
  ELSE.
    MESSAGE e001(zhemanth).
  ENDIF.

  SORT it_first BY lifnr.
  SORT it_second BY lifnr.

  DELETE ADJACENT DUPLICATES FROM it_first.
  LOOP AT it_first.
    LOOP AT it_second WHERE lifnr = it_first-lifnr.
      v_count = v_count + 1.
    ENDLOOP.
    v_counter = v_count + 1.

    WRITE : /10 it_first-lifnr,
    15 it_first-land1,
    50 it_first-name1,
    60 it_first-pstlz,
    70 v_count,
    80 v_counter.
    CLEAR v_count.
  ENDLOOP.
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
FORM get_file .
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.

ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form GUI_UPLOAD
*&---------------------------------------------------------------------*
FORM gui_upload .
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = v_file
      filetype                = 'ASC'
      has_field_separator     = 'X'
    TABLES
      data_tab                = it_first
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.
  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. " GUI_UPLOAD

*&---------------------------------------------------------------------*
*&      Form  get_db_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_db_data .               "<====

  TYPES : BEGIN OF ty_lfa1,
  lifnr TYPE lfa1-lifnr,
  land1 TYPE lfa1-land1,
  name1 TYPE lfa1-name1,
  pstlz TYPE lfa1-pstlz,
  END OF ty_lfa1.

  SELECT  lifnr land1 name1 pstlz
    FROM  lfa1
    INTO TABLE it_second.

ENDFORM.                    " get_db_data

Rob

Message was edited by:

Rob Burbank

Read only

former_member191735
Active Contributor
0 Likes
445

IF IT_FIRST[] = IT_SECOND[].

ELSE.

MESSAGE E001(ZHEMANTH).

ENDIF.

assign values to it_second then compare it. In the above statement, always you get message in case you dont copy values to it_second.

Well, if you want to delete duplicate records, i dont think you need to assign.

instead write code like this

if it_first is initial.

message.

else.

delete adjusent duplicates from it_first comparing field1 fields2(if you want).

endif.

that statement deletes the duplicate records if there are entries in it_First.