Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Home
Changing an Idoc’s status with an Excel upload PDF Print E-mail
User Rating: / 2
PoorBest 
Written by Kevin Wilson   
Tuesday, 13 February 2007

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.

Main Program

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.

Data Include

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.

Forms / Subroutines Include

 

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 1

    bdidocstat-msgv2  = p_msgv2.               "Message variable 2

    bdidocstat-msgv3  = p_msgv3.               "Message variable 3

    bdidocstat-msgv4  = p_msgv4.               "Message variable 4

    append bdidocstat.

 

    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

 


Related Items:

Last Updated ( Tuesday, 13 March 2007 )
 
< Prev   Next >

Google Search

Google Ads

Shared Bottom Border

Contact Us | Polls | Add URL | Contribute | Privacy | Terms | Feedback

Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum
GenieHoldings.COM, Inc. | Genie Press | WorkflowGenie | ESAGenie | ERPTopSites | ABAP Tips and Tricks | SAP Solutions Database

EDIGenie | Searching Survivor