0% found this document useful (1 vote)
69 views

Changing An Idoc's Status With An Excel Upload: Main Program

This report allows updating the status of IDocs (electronic documents) stored in SAP by uploading an Excel file. The Excel file should contain a list of IDoc numbers in column A. The report will read the file, check that the listed IDoc numbers exist, and update each one to a new status specified by the user. It provides confirmation messages before and after processing.

Uploaded by

Krishna Mavuri
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
69 views

Changing An Idoc's Status With An Excel Upload: Main Program

This report allows updating the status of IDocs (electronic documents) stored in SAP by uploading an Excel file. The Excel file should contain a list of IDoc numbers in column A. The report will read the file, check that the listed IDoc numbers exist, and update each one to a new status specified by the user. It provides confirmation messages before and after processing.

Uploaded by

Krishna Mavuri
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 5

Changing an Idocs status with an Excel

upload
Author: Kevin Wilson

http://www.sapgenie.com

Report Description: The following report takes an Excel spreadsheet (maximum


2000 rows) with Idoc number in column A and nothing else, uploads it and
processes them with a new Idoc status that is entered as input when running the
program.
Table of Contents
Main program.......................................................................................................................1
Include Z_IDOC_STATUS_CHANGE_DATA.............................................................3
Include Z_IDOC_STATUS_CHANGE_FORMS...........................................................3

Main program
*&---------------------------------------------------------------------*
*& Report Z_IDOC_STATUS_CHANGE
*
*&---------------------------------------------------------------------*
*& AUTHOR: Kevin Wilson
*
*& DESCRIPTION: Reset Idoc statuses by uploading spreadsheet of IDocs *
*&---------------------------------------------------------------------*
report z_idoc_status_change message-id zedi.
*--- INCLUDES ---------------------------------------------------------*
include z_idoc_status_change_data.
include z_idoc_status_change_forms.
*--- SELECTION OPTIONS ------------------------------------------------*
selection-screen begin of block b1 with frame title text-001.
parameters: filename like sapb-sappfad.
selection-screen skip.
selection-screen begin of block b2 with frame title text-002.
parameters: status like edidc-status default '52',
msgty like edids-statyp default 'I',
msgid like edids-stamid default 'ZEDI',
msgno like edids-stamno default '029',
msgv1 like edids-stapa1 default sy-uname,
msgv2 like edids-stapa2 default sy-datum,
msgv3 like edids-stapa3,
msgv4 like edids-stapa4.
selection-screen end of block b2.
selection-screen end of block b1.

*--- Initialization ---------------------------------------------------*


initialization.
filename = 'C:\IDocs.xls'.
*--- START OF SELECTION TO DATABASE -----------------------------------*
start-of-selection.
* Check for XLS extension
if not filename cs '.XLS'.
* You wish to upload an Excel file &. It must have extension .XLS
message i078 with filename.
exit.
else.
clear: return.
perform upload_excel tables itab_idocs
using filename
changing return.
if return is initial.
* Confirm action
clear t_answer.
call function 'POPUP_TO_CONFIRM'
exporting
titlebar
= text-t01
text_question
= text-t02
text_button_1
= 'Yes'(t03)
text_button_2
= 'No'(t04)
default_button
= '2'
display_cancel_button = 'X'
importing
answer
= t_answer
exceptions
text_not_found
=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.
else.
if t_answer = '1'. "Yes
format color col_positive.
write: /5 'Choose to continue.'.
format color off.
perform process_idocs tables itab_idocs
using status msgty msgid msgno
msgv1 msgv2 msgv3 msgv4.
elseif t_answer = '2'. "No
format color col_negative.
write: /5 'Choose not to continue. No records changed'.
format color off.

else. "Cancel
format color col_negative.
write: /5 'Choose to cancel. No records changed'.
format color off.
endif.
endif.
endif.
endif.
*--- AT SELECTION SCREEN ACTION ---------------------------------------*
at selection-screen on value-request for filename.
call function 'AL_POPUP_FOR_LOCAL_PATH'
importing
filereturn = filename
exceptions
others
= 1.

Include Z_IDOC_STATUS_CHANGE_DATA
*----------------------------------------------------------------------*
***INCLUDE Z_IDOC_STATUS_CHANGE_DATA .
*----------------------------------------------------------------------*
*--- TABLES DEFINITIONS ----------------------------------------------*
tables: edidc.
*--- STRUCTURE DEFINITIONS -------------------------------------------*
types: begin of itab_idoc_structure,
docnum like edidc-docnum.
types: end of itab_idoc_structure.
*--- INTERNAL TABLE AND WORK AREA DEFINITIONS -------------------------*
data: itab_idocs type standard table of itab_idoc_structure,
wa_idocs type itab_idoc_structure.
*--- VARIABLES --------------------------------------------------------*
data: return like sy-subrc,
t_answer.

Include Z_IDOC_STATUS_CHANGE_FORMS
*----------------------------------------------------------------------*
***INCLUDE Z_IDOC_STATUS_CHANGE_FORMS .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form upload_excel
*&---------------------------------------------------------------------*
* Only handles Excel file upload - Column A has a list of IDoc numbers
* Maximum 2000 IDocs passed
*&---------------------------------------------------------------------*
form upload_excel tables p_itab_idoc like itab_idocs
using p_filename
changing p_return.
data: file_name like rlgrap-filename,
file_type like rlgrap-filetype,
itab_excel like alsmex_tabline occurs 0 with header line.

move p_filename to file_name.


move 'XLS'
to file_type.
refresh itab_excel.
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename
= file_name
i_begin_col
=1
i_begin_row
=1
i_end_col
=1
i_end_row
= 2000
tables
intern
= itab_excel
exceptions
inconsistent_parameters = 1
upload_ole
=2
others
= 3.
if sy-subrc <> 0.
p_return = sy-subrc.
message i060 with sy-subrc file_name.
else.
loop at itab_excel.
wa_idocs-docnum = itab_excel-value.
select single docnum into edidc-docnum
from edidc
where docnum = wa_idocs-docnum.
if sy-subrc = 0.
collect wa_idocs into p_itab_idoc.
write: /5 'IDoc', wa_idocs-docnum, 'added for processing.'.
else.
write: /5 wa_idocs-docnum, 'IGNORED for processing.'.
endif.
endloop.
if sy-subrc <> 0.
p_return = sy-subrc.
message i061 with file_name.
endif.
endif.
endform.
" upload_excel
*&---------------------------------------------------------------------*
*&
Form process_idocs
*&---------------------------------------------------------------------*
form process_idocs tables p_itab_idocs like itab_idocs
using p_status
p_msgty
p_msgid
p_msgno
p_msgv1
p_msgv2
p_msgv3
p_msgv4.
data: bdidocstat like bdidocstat occurs 0 with header line.
loop at p_itab_idocs into wa_idocs.
refresh bdidocstat.

bdidocstat-docnum = wa_idocs-docnum.
"IDoc number
bdidocstat-status = p_status.
"IDoc status
bdidocstat-msgty = p_msgty.
"Message type
bdidocstat-msgid = p_msgid.
"Message ID
bdidocstat-msgno = p_msgno.
"Message number
bdidocstat-msgv1 = p_msgv1.
"Message variable
bdidocstat-msgv2 = p_msgv2.
"Message variable
bdidocstat-msgv3 = p_msgv3.
"Message variable
bdidocstat-msgv4 = p_msgv4.
"Message variable
append bdidocstat.

1
2
3
4

call function 'IDOC_STATUS_WRITE_TO_DATABASE'


exporting
idoc_number
= wa_idocs-docnum
no_dequeue_flag
= 'X'
tables
idoc_status
= bdidocstat
exceptions
idoc_foreign_lock
=1
idoc_not_found
=2
idoc_status_records_empty = 3
idoc_status_invalid
=4
db_error
=5
others
= 6.
if sy-subrc <> 0.
format color col_negative.
write: /10 'IDoc', wa_idocs-docnum, 'had NO status update!'.
format color off.
else.
write: /10 'IDoc', wa_idocs-docnum,
'has had it''s status updated'.
endif.
endloop.
endform.

" process_idocs

You might also like