‎2009 Feb 10 8:16 AM
guys i have written the following code: The sy-subrc for the modify command = 0.But the records are not modified in the data base? why do we need to have table maintainanve generatot to use modify/insert
for DB?
REPORT zcic_gcs_upd NO STANDARD PAGE HEADING.
*&--------------------------------------------------------------------*
*& Program Name : zcic_gcs_upd
*& Description : To update the Tracking No. & Tracking Type
*&--------------------------------------------------------------------*
* ----------------------------------------------------------------------
*TABLES
* ----------------------------------------------------------------------
TABLES zest0_extension. "Warranty Extension Table.
* ----------------------------------------------------------------------
*INTERNAL TABLE
* ----------------------------------------------------------------------
DATA: BEGIN OF itab OCCURS 0,
company LIKE zest0_extension-company,
customer LIKE zest0_extension-customer,
bill_no LIKE zest0_extension-bill_no,
tr_no LIKE zest0_extension-tr_no,
tr_type LIKE zest0_extension-tr_type,
END OF itab,
BEGIN OF ITAB_ERROR OCCURS 0,
CUSTOMER LIKE ZEST0_EXTENSION-CUSTOMER,
BILL_NO LIKE ZEST0_EXTENSION-BILL_NO,
END OF ITAB_ERROR.
DATA: ITAB1 LIKE zest0_extension OCCURS 0 WITH HEADER LINE.
DATA: TBL_ERROR LIKE ITAB_ERROR OCCURS 0 WITH HEADER LINE.
DATA : gt_upd LIKE zest0_extension occurs 0 WITH HEADER LINE.
DATA : gt_upd1 LIKE zest0_extension occurs 0 WITH HEADER LINE.
DATA: gt_final LIKE zest0_extension OCCURS 0 WITH HEADER LINE.
* ----------------------------------------------------------------------
*WORK AREA DECLARATION
* ----------------------------------------------------------------------
DATA: WS_ITAB LIKE ITAB.
DATA: WS_ITAB1 LIKE ITAB1.
* ----------------------------------------------------------------------
*VARIABLE DECLARATION
* ----------------------------------------------------------------------
*data count buffer
DATA: read_cnt(6) TYPE p, "Find read record
update_cnt(6) TYPE p, "OK record
error_cnt(6) TYPE p. "Error record
*----------------------------------------------------------------------*
* S E L E C T I O N S C R E E N *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
PARAMETERS: p_comp LIKE zest0_extension-company
OBLIGATORY DEFAULT 'C710'.
PARAMETERS: pcfile LIKE rlgrap-filename OBLIGATORY LOWER CASE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK box WITH FRAME.
SELECTION-SCREEN: COMMENT /2(40) TEXT-111,
ULINE,
COMMENT /2(40) text-001,
COMMENT /2(40) text-002,
COMMENT /2(40) text-003,
COMMENT /2(40) text-004,
COMMENT /2(40) text-005.
SELECTION-SCREEN END OF BLOCK box.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pcfile.
PERFORM get_filename.
*----------------------------------------------------------------------*
* S T A R T O F S E L E C T I O N *
*----------------------------------------------------------------------*
START-OF-SELECTION.
CLEAR: read_cnt, update_cnt, error_cnt.
PERFORM upload_data.
PERFORM update_zest0_ext.
*&---------------------------------------------------------------------*
*& Form GET_FILENAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_filename.
*Get the file to be uploaded
DATA: l_fname LIKE ibipparms-path .
DATA : p_name LIKE sy-repid.
p_name = sy-repid.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = p_name
dynpro_number = sy-dynnr
field_name = ''
IMPORTING
file_name = l_fname.
pcfile = l_fname.
ENDFORM. " GET_FILENAME
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_data.
DATA : l_filename LIKE rlgrap-filename.
REFRESH : itab,gt_upd,gt_final.
IF pcfile IS INITIAL.
WRITE: / 'SELECT UPLOAD FILE !'.
ELSE.
MOVE pcfile TO l_filename.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = l_filename
filetype = 'DAT'
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc NE 0.
WRITE: / 'FILE UPLOAD NOT SUCESSFULL '.
STOP.
ENDIF.
SORT itab.
DELETE ADJACENT DUPLICATES FROM itab.
LOOP AT ITAB INTO WS_ITAB.
ADD 1 TO read_cnt.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = WS_ITAB-customer
importing
output = WS_ITAB-customer.
WS_ITAB1-COMPANY = WS_ITAB-COMPANY.
WS_ITAB1-CUSTOMER = WS_ITAB-CUSTOMER.
WS_ITAB1-BILL_NO = WS_ITAB-BILL_NO.
WS_ITAB1-TR_NO = WS_ITAB-TR_NO.
WS_ITAB1-TR_TYPE = WS_ITAB-TR_TYPE.
APPEND WS_ITAB1 TO ITAB1.
ENDLOOP.
IF NOT itab1[] IS INITIAL.
SELECT company customer bill_no
FROM zest0_extension
INTO CORRESPONDING FIELDS OF TABLE gt_upd
FOR ALL ENTRIES IN itab1
WHERE company = p_comp
AND customer = itab1-customer
AND bill_no = itab1-bill_no.
IF sy-subrc EQ 0.
SORT gt_upd.
ENDIF.
LOOP AT itab1.
READ TABLE gt_upd WITH KEY company = p_comp
customer = itab1-customer
bill_no = itab1-bill_no
BINARY SEARCH.
IF sy-subrc <> 0.
tbl_error-customer = itab1-customer.
tbl_error-bill_no = itab1-bill_no.
append tbl_error.
* CONTINUE.
ELSE.
MOVE-CORRESPONDING itab1 TO gt_final.
APPEND gt_final.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form UPDATE_ZEST0_EXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM update_zest0_ext.
SORT gt_final.
MODIFY zest0_extension FROM TABLE gt_final.
IF sy-subrc EQ 0.
COMMIT WORK.
DESCRIBE TABLE gt_final LINES update_cnt.
error_cnt = read_cnt - update_cnt.
ELSE.
ROLLBACK WORK.
error_cnt = read_cnt - update_cnt.
ENDIF.
ULINE.
FORMAT COLOR 3.
WRITE: / 'Read count :', read_cnt.
WRITE: / 'Insert/Update count :', update_cnt.
WRITE: / 'Error count :', error_cnt.
FORMAT COLOR OFF.
IF NOT TBL_ERROR IS INITIAL.
ULINE.
SKIP.
FORMAT COLOR 3.
WRITE: / 'ERROR RECORDS'.
WRITE: /(10) 'CUSTOMER',
'BILL_NO'.
FORMAT COLOR OFF.
LOOP AT TBL_ERROR.
WRITE: /(10) TBL_ERROR-CUSTOMER ,
TBL_ERROR-BILL_NO.
ENDLOOP.
ENDIF.
ENDFORM. " UPDATE_ZEST0_EXT
‎2009 Feb 10 8:22 AM
>
> why do we need to have table maintainanve generatot to use modify/insert
> for DB?
You don't.
‎2009 Feb 10 8:22 AM
>
> why do we need to have table maintainanve generatot to use modify/insert
> for DB?
You don't.
‎2009 Feb 10 8:31 AM
‎2009 Feb 10 8:47 AM
>
> HI sudha,
>
> Y can't use UPDATE database table.
>
> Thanks,
Wrong
To original poster: are you sure your internal table contains something?
Edited by: Matt on Feb 10, 2009 9:47 AM
‎2009 Feb 10 8:43 AM
Hi,
You can not use table maintainence generator for database table updation.
But you can use UPDATE statement.
Regards,
Jyothi CH.