Mass Upload DMS Originals and Set Status
Hello
Mass Upload DMS Originals and Set Status: Sometimes DIR have more than one origin LSMW is poor to upload more than one originals fllowing code upload orginals and set Status.
Excel Structure must :
Doc number | Doc type | Part | Version | Document Status | Original format * | Origin Description | Path |
---|---|---|---|---|---|---|---|
0000000000060000000026926 | ENG | 000 | 00 | NC | PDF file | z: ew foldra.pdf |
|
0000000000060000000026926 | ENG | 000 | 00 | NC | XLS | native file | z: ew foldra.xlsx |
0000000000060000000026926 | ENG | 000 | 01 | RW | WRD | native file | z: ew foldr.docx |
0000000000060000000026926 | ENG | 000 | 02 | RW | PDF file | z: ew foldr.pdf |
* Original format : Must Capital and format must similar in customizing t.code:dc30 (for example word file in dc30 is WRD you must write WRD in this filed)
*&---------------------------------------------------------------------* *& Report ZDMS_SET_ORIGINAL_STATUS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZDMS_SET_ORIGINAL_STATUS. "CONSTANTS STORAGE_NAME TYPE CV_STORAGE_CAT VALUE 'DMS_C1_ST'. TYPES: BEGIN OF ST_DIR, DOKAR TYPE DOKAR, DOKNR TYPE DOKNR, DOKVR TYPE DOKVR, DOKTL TYPE DOKTL, DOKST TYPE DOKST, DOKTYPE TYPE CHAR3, ORGDES TYPE CHAR40, ORGPATH TYPE FILEP, VISITED TYPE CHAR1, END OF ST_DIR, BEGIN OF ST_ERROR_DOCS, DOKAR TYPE DOKAR, DOKNR TYPE DOKNR, DOKVR TYPE DOKVR, DOKTL TYPE DOKTL, ERRORMSG TYPE CHAR100, END OF ST_ERROR_DOCS. PARAMETERS BEG_ROW TYPE i DEFAULT 2. PARAMETERS END_ROW TYPE i DEFAULT 101. PARAMETERS FILEPATH LIKE RLGRAP-FILENAME DEFAULT 'c:phase1.xlsx'. PARAMETERS STRGNAME TYPE CV_STORAGE_CAT DEFAULT 'PPL-PROJ'. DATA: it_documents TYPE TABLE OF st_dir, wa_documents TYPE st_dir. DATA: it_error_docs TYPE TABLE OF ST_ERROR_DOCS WITH HEADER LINE. *DATA it_file_content TYPE TABLE OF ALSMEX_TABLINE WITH HEADER LINE. *CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' DATA it_file_content TYPE TABLE OF ZKCDE_CELLS WITH HEADER LINE. CALL FUNCTION 'ZKCD_EXCEL_OLE_TO_INT_CONVERT' EXPORTING FILENAME = FILEPATH I_BEGIN_COL = 1 I_BEGIN_ROW = BEG_ROW I_END_COL = 8 I_END_ROW = END_ROW TABLES INTERN = it_file_content * EXCEPTIONS * INCONSISTENT_PARAMETERS = 1 * UPLOAD_OLE = 2 * OTHERS = 3 . IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. DATA: current_row TYPE i VALUE 1, rowCount TYPE i. rowCount = LINES( it_file_content ). WHILE current_row <= rowCount. LOOP AT it_file_content FROM CURRENT_ROW TO CURRENT_ROW + 7. CASE it_file_content-COL. WHEN '1'. WA_DOCUMENTS-DOKNR = it_file_content-VALUE. WHEN '2'. WA_DOCUMENTS-DOKAR = it_file_content-VALUE. WHEN '3'. WA_DOCUMENTS-DOKTL = it_file_content-VALUE. WHEN '4'. WA_DOCUMENTS-DOKVR = it_file_content-VALUE. WHEN '5'. WA_DOCUMENTS-DOKST = it_file_content-VALUE. WHEN '6'. WA_DOCUMENTS-DOKTYPE = it_file_content-VALUE. WHEN '7'. WA_DOCUMENTS-ORGDES = it_file_content-VALUE. WHEN '8'. WA_DOCUMENTS-ORGPATH = it_file_content-VALUE. ENDCASE. ENDLOOP. APPEND WA_DOCUMENTS TO IT_DOCUMENTS. CLEAR WA_DOCUMENTS. current_row = current_row + 8. ENDWHILE. "Pepare error file REFRESH IT_ERROR_DOCS. IT_ERROR_DOCS-DOKAR = 'TYP'. IT_ERROR_DOCS-DOKNR = 'DOC NO'. IT_ERROR_DOCS-DOKTL = 'PRT'. IT_ERROR_DOCS-DOKVR = 'VR'. IT_ERROR_DOCS-ERRORMSG = 'Error Message'. APPEND IT_ERROR_DOCS. LOOP AT IT_DOCUMENTS INTO WA_DOCUMENTS. PERFORM ADD_ORG USING WA_DOCUMENTS. ENDLOOP. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = FILENAME = 'D:Error.xls' FILETYPE = 'DAT' APPEND = 'X' * WRITE_FIELD_SEPARATOR = ' ' * HEADER = '00' * TRUNC_TRAILING_BLANKS = ' ' * WRITE_LF = 'X' * COL_SELECT = ' ' * COL_SELECT_MASK = ' ' * DAT_MODE = ' ' * CONFIRM_OVERWRITE = ' ' * NO_AUTH_CHECK = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * WRITE_BOM = ' ' * TRUNC_TRAILING_BLANKS_EOL = 'X' * WK1_N_FORMAT = ' ' * WK1_N_SIZE = ' ' * WK1_T_FORMAT = ' ' * WK1_T_SIZE = ' ' * WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE * SHOW_TRANSFER_STATUS = ABAP_TRUE * IMPORTING * FILELENGTH = TABLES DATA_TAB = IT_ERROR_DOCS * FIELDNAMES = * EXCEPTIONS * FILE_WRITE_ERROR = 1 * NO_BATCH = 2 * GUI_REFUSE_FILETRANSFER = 3 * INVALID_TYPE = 4 * NO_AUTHORITY = 5 * UNKNOWN_ERROR = 6 * HEADER_NOT_ALLOWED = 7 * SEPARATOR_NOT_ALLOWED = 8 * FILESIZE_NOT_ALLOWED = 9 * HEADER_TOO_LONG = 10 * DP_ERROR_CREATE = 11 * DP_ERROR_SEND = 12 * DP_ERROR_WRITE = 13 * UNKNOWN_DP_ERROR = 14 * ACCESS_DENIED = 15 * DP_OUT_OF_MEMORY = 16 * DISK_FULL = 17 * DP_TIMEOUT = 18 * FILE_NOT_FOUND = 19 * DATAPROVIDER_EXCEPTION = 20 * CONTROL_FLUSH_ERROR = 21 * OTHERS = 22 . IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. FORMAT COLOR COL_BACKGROUND INTENSIFIED. WRITE:/ 'Finished!!'. " Show errors in ALV DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE, GD_LAYOUT TYPE SLIS_LAYOUT_ALV, GD_REPID LIKE SY-REPID, G_VARIANT TYPE DISVARIANT . " Remove header row in excel file DELETE IT_ERROR_DOCS INDEX 1. PERFORM field_cat. GD_REPID = SY-REPID. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = GD_REPID * I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' "see FORM * I_CALLBACK_USER_COMMAND = 'USER_COMMAND' IT_FIELDCAT = FIELDCATALOG[] I_SAVE = 'X' IS_VARIANT = G_VARIANT TABLES T_OUTTAB = IT_ERROR_DOCS EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. *&---------------------------------------------------------------------* *& Form FIELD_CAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FIELD_CAT . FIELDCATALOG-FIELDNAME = 'DOKNR'. FIELDCATALOG-SELTEXT_M = 'SAP Doc No.'. FIELDCATALOG-OUTPUTLEN = '27'. FIELDCATALOG-COL_POS = 0. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'DOKVR'. FIELDCATALOG-SELTEXT_M = 'Doc Version'. FIELDCATALOG-COL_POS = 1. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'DOKAR'. FIELDCATALOG-SELTEXT_M = 'Doc Cat.'. FIELDCATALOG-COL_POS = 2. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'DOKTL'. FIELDCATALOG-SELTEXT_M = 'Doc Part'. FIELDCATALOG-COL_POS = 3. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'ERRORMSG'. FIELDCATALOG-SELTEXT_M = 'Error Message'. FIELDCATALOG-OUTPUTLEN = '50'. FIELDCATALOG-COL_POS = 4. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. ENDFORM. " FIELD_CAT FORM ADD_ORG USING wa_documents TYPE st_dir. DATA: it_old_originals TYPE TABLE OF BAPI_DOC_FILES2 WITH HEADER LINE, wa_old_originals TYPE BAPI_DOC_FILES2, ret TYPE BAPIRET2, ls_doc LIKE bapi_doc_draw2, ls_docx LIKE bapi_doc_drawx2, wa_documents2 TYPE st_dir. IF WA_DOCUMENTS-VISITED = 'X'. RETURN. ENDIF. ls_doc-DOCUMENTNUMBER = wa_documents-doknr. ls_doc-DOCUMENTPART = wa_documents-doktl. ls_doc-DOCUMENTTYPE = wa_documents-dokar. ls_doc-DOCUMENTVERSION = wa_documents-dokvr. * CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2' * EXPORTING * DOCUMENTTYPE = ls_doc-DOCUMENTTYPE * DOCUMENTNUMBER = ls_doc-DOCUMENTNUMBER * DOCUMENTPART = LS_DOC-DOCUMENTPART * DOCUMENTVERSION = ls_doc-DOCUMENTVERSION ** GETOBJECTLINKS = ' ' ** GETCOMPONENTS = ' ' ** GETSTATUSLOG = ' ' ** GETLONGTEXTS = ' ' * GETACTIVEFILES = 'X' * GETDOCDESCRIPTIONS = 'X' * GETDOCFILES = 'X' ** GETCLASSIFICATION = ' ' ** GETSTRUCTURE = ' ' ** GETWHEREUSED = ' ' ** HOSTNAME = ' ' * INHERITED = 'X' * IMPORTING ** DOCUMENTDATA = * RETURN = ret * TABLES ** OBJECTLINKS = ** DOCUMENTDESCRIPTIONS = ** LONGTEXTS = ** STATUSLOG = * DOCUMENTFILES = it_old_originals ** COMPONENTS = ** CHARACTERISTICVALUES = ** CLASSALLOCATIONS = ** DOCUMENTSTRUCTURE = ** WHEREUSEDLIST = * . * REFRESH IT_OLD_ORIGINALS. LOOP AT IT_DOCUMENTS INTO WA_DOCUMENTS2 WHERE DOKAR = WA_DOCUMENTS-DOKAR AND DOKNR = wa_documents-DOKNR AND DOKVR = wa_documents-DOKVR AND DOKTL = wa_documents-DOKTL. CLEAR IT_OLD_ORIGINALS. it_old_originals-DOCFILE = wa_documents2-ORGPATH. "it_old_originals-DOCPATH = 'C:'. it_old_originals-STORAGECATEGORY = STRGNAME. it_old_originals-WSAPPLICATION = WA_DOCUMENTS2-DOKTYPE. it_old_originals-DESCRIPTION = WA_DOCUMENTS2-ORGDES. it_old_originals-ACTIVE_VERSION = 'X'. "WA_OLD_ORIGINALS-CHECKEDIN = 'X'. "WA_OLD_ORIGINALS-ORIGINALTYPE = '1'. it_old_originals-LANGUAGE = 'E'. APPEND it_old_originals TO IT_OLD_ORIGINALS. * Make document dirty WA_DOCUMENTS2-VISITED = 'X'. MODIFY IT_DOCUMENTS FROM WA_DOCUMENTS2. ENDLOOP. " Setting status of document ls_doc-STATUSEXTERN = WA_DOCUMENTS-DOKST. ls_docx-STATUSEXTERN = 'X'. CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2' EXPORTING DOCUMENTTYPE = ls_doc-DOCUMENTTYPE DOCUMENTNUMBER = ls_doc-DOCUMENTNUMBER DOCUMENTPART = LS_DOC-DOCUMENTPART DOCUMENTVERSION = ls_doc-DOCUMENTVERSION DOCUMENTDATA = LS_DOC DOCUMENTDATAX = LS_DOCX * HOSTNAME = * DOCBOMCHANGENUMBER = * DOCBOMVALIDFROM = * DOCBOMREVISIONLEVEL = * SENDCOMPLETEBOM = ' ' * PF_FTP_DEST = ' ' * PF_HTTP_DEST = ' ' * CAD_MODE = ' ' * ACCEPT_EMPTY_BOM = ' ' IMPORTING RETURN = ret TABLES * CHARACTERISTICVALUES = * CLASSALLOCATIONS = * DOCUMENTDESCRIPTIONS = * OBJECTLINKS = * DOCUMENTSTRUCTURE = DOCUMENTFILES = it_old_originals * LONGTEXTS = * COMPONENTS = . DATA msg TYPE char100. IF ret-type CA 'EA'. ROLLBACK WORK. * MESSAGE ID '26' TYPE 'I' NUMBER '000' * WITH ret-message. CONCATENATE 'ERROR: ' ret-MESSAGE ' :: ' INTO msg SEPARATED BY SPACE. WRITE:/ msg. CONCATENATE 'Document: ' ls_doc-DOCUMENTNUMBER ls_doc-DOCUMENTTYPE ls_doc-DOCUMENTPART ls_doc-DOCUMENTVERSION ' NOT Updated!.' INTO msg SEPARATED BY SPACE. WRITE:/ msg. MOVE-CORRESPONDING WA_DOCUMENTS TO IT_ERROR_DOCS. IT_ERROR_DOCS-ERRORMSG = ret-MESSAGE. APPEND IT_ERROR_DOCS. ELSE. COMMIT WORK. CONCATENATE 'Document: ' ls_doc-DOCUMENTNUMBER ls_doc-DOCUMENTTYPE ls_doc-DOCUMENTPART ls_doc-DOCUMENTVERSION ' Updated.' INTO msg SEPARATED BY SPACE. WRITE:/ msg. ENDIF. ENDFORM.
New NetWeaver Information at SAP.com
Very Helpfull