* ====================================================================== * Stefanos Moschidis - SAP Certified Technical Consultant * ====================================================================== * ====================================================================== * This program converts Data from Legacy System * in a structure compatible to the structure of input file required by * the standard SAP Program : RMDATIND * ---------------------------------------------------------------------- * Reminder : * Transaction of Data Transfer Workbench : SXDA * Transaction of Manage Data Transfers : bmv0 * ====================================================================== REPORT Z_CONVERT_DATA_FOR_DINP_MM . * ====================================================================== * DATA DECLARATIONS * ====================================================================== data : begin of my_work_area occurs 1000 , mline(3000) type c . data : end of my_work_area . DATA : BEGIN OF MY_LOCAL_DATA OCCURS 1000 , MATNR LIKE MARA-MATNR , MBRSH LIKE MARA-MBRSH , MTART LIKE MARA-MTART , MEINS LIKE MARA-MEINS , MAKTX LIKE MAKT-MAKTX . DATA : END OF MY_LOCAL_DATA . DATA : MYFILENAME(255) TYPE C . * ---------------------------------------------------------------------- * STANDARD SAP DATA STRUCTURES : * ---------------------------------------------------------------------- TABLES : BGR00 , BMM00 , BMMH1 . CONSTANTS : BUTTONSELECTED TYPE C VALUE 'X' . * ====================================================================== * SELECTION SCREEN DEFAULT * ====================================================================== SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(33) TSHOWINP. PARAMETERS : SHOW_INP RADIOBUTTON GROUP GRP1 DEFAULT 'X' USER-COMMAND UCOMM . SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(33) TSHOWLOC . PARAMETERS : SHOW_LOC RADIOBUTTON GROUP GRP1 . SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(33) TCONVLOC. PARAMETERS : CONV_LOC RADIOBUTTON GROUP GRP1 . SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(33) TDN_MARA. PARAMETERS : DOWNMARA RADIOBUTTON GROUP GRP1 . SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(33) Tlocalfl. PARAMETERS : LOCALFIL LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Stefanos\TEST\MARA.txt' . SELECTION-SCREEN END OF LINE. * ====================================================================== * AT SELECTION SCREEN OUTPUT * ====================================================================== AT SELECTION-SCREEN OUTPUT . LOOP AT SCREEN . IF SCREEN-NAME = 'LOCALFIL' . IF SHOW_LOC = 'X' OR CONV_LOC = 'X' . SCREEN-INPUT = 1 . ELSE . SCREEN-INPUT = 0 . ENDIF . MODIFY SCREEN . ENDIF . ENDLOOP . * ====================================================================== * AT SELECTION SCREEN ON VALUE REQUEST * ====================================================================== AT SELECTION-SCREEN ON VALUE-REQUEST FOR LOCALFIL . CHECK SHOW_LOC = 'X' . CALL FUNCTION 'WS_FILENAME_GET' EXPORTING DEF_FILENAME = ' ' DEF_PATH = 'C:\STEFANOS\TEST' MASK = ',*.*,*.*.' MODE = '0' TITLE = 'LOCAL FILE' IMPORTING FILENAME = LOCALFIL * RC = EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5 . * ====================================================================== INITIALIZATION . * ====================================================================== TSHOWINP = 'Show input file (SAP format)' . TSHOWLOC = 'Show Local File' . TCONVLOC = 'Convert Local File to SAP format' . TDN_MARA = 'Download MARA Table' . Tlocalfl = 'Local File ' . CALL FUNCTION 'FILE_GET_NAME' EXPORTING LOGICAL_FILENAME = 'MATERIAL_MASTER_BTCI' IMPORTING FILE_NAME = MYFILENAME EXCEPTIONS FILE_NOT_FOUND = 1 OTHERS = 2. PERFORM FIND_STRUCT_FILL_WITH_NODATA USING 'BMM00' . BMM00 = MY_WORK_AREA-MLINE . PERFORM FIND_STRUCT_FILL_WITH_NODATA USING 'BMMH1' . BMMH1 = MY_WORK_AREA-MLINE . * ====================================================================== START-OF-SELECTION . * ====================================================================== CASE BUTTONSELECTED . WHEN SHOW_INP . PERFORM SHOW_INPUT . WHEN SHOW_LOC . PERFORM READ_LOCAL . PERFORM SHOW_LOCAL . WHEN CONV_LOC . PERFORM READ_LOCAL . PERFORM CONVERT_LOCAL_TO_SAP_FORMAT . PERFORM SHOW_INPUT . WHEN DOWNMARA . PERFORM DOWNLOAD_MARA . WHEN OTHERS . ENDCASE . *&---------------------------------------------------------------------* *& Form SHOW_INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SHOW_INPUT. OPEN DATASET MYFILENAME FOR INPUT IN TEXT MODE . IF SY-SUBRC NE 0 . MESSAGE E398(00) WITH 'ERROR OPENING FILE' . ENDIF . CLEAR : MY_WORK_AREA[] . DO . CLEAR MY_WORK_AREA . READ DATASET MYFILENAME INTO MY_WORK_AREA . APPEND MY_WORK_AREA . IF SY-SUBRC NE 0 . EXIT . ENDIF . ENDDO . LOOP AT MY_WORK_AREA . WRITE : / MY_WORK_AREA-MLINE . ENDLOOP . ENDFORM. " SHOW_INPUT *&---------------------------------------------------------------------* *& Form SHOW_LOCAL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SHOW_LOCAL. DATA : MYINDEX TYPE I . MYINDEX = 1 . LOOP AT MY_LOCAL_DATA . IF MYINDEX GE 2 . WRITE : / MY_LOCAL_DATA-MATNR COLOR COL_TOTAL , MY_LOCAL_DATA-MBRSH COLOR COL_TOTAL , MY_LOCAL_DATA-MTART COLOR COL_TOTAL , MY_LOCAL_DATA-MEINS COLOR COL_TOTAL , MY_LOCAL_DATA-MAKTX COLOR COL_TOTAL . ENDIF . MYINDEX = MYINDEX + 1 . ENDLOOP . ULINE . WRITE : '*** END OF LIST *** ' COLOR COL_POSITIVE . . ULINE . ENDFORM. " SHOW_LOCAL *&---------------------------------------------------------------------* *& Form READ_LOCAL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM READ_LOCAL. CLEAR : MY_LOCAL_DATA , MY_LOCAL_DATA[] . CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = LOCALFIL FILETYPE = 'DAT' TABLES DATA_TAB = MY_LOCAL_DATA 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. ENDFORM. " READ_LOCAL *&---------------------------------------------------------------------* *& Form CONVERT_LOCAL_TO_SAP_FORMAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CONVERT_LOCAL_TO_SAP_FORMAT. DATA MYINDEX TYPE I . CLEAR : MY_WORK_AREA , MY_WORK_AREA[] . * ---------> STEP 1 : FILL Structure BGR00 BGR00-STYPE = '0' . BGR00-GROUP = SY-UNAME . BGR00-MANDT = SY-MANDT . BGR00-USNAM = SY-UNAME . BGR00-START = '00000000' . BGR00-XKEEP = ' ' . BGR00-NODATA = '/' . CLEAR MY_WORK_AREA . MY_WORK_AREA = BGR00 . APPEND MY_WORK_AREA . MYINDEX = 1 . LOOP AT MY_LOCAL_DATA . IF MYINDEX GE 2 . * ---------> STEP 2 : FILL Structure BMM00 CLEAR MY_WORK_AREA . BMM00-STYPE = '1' . BMM00-TCODE = 'MM01' . BMM00-MATNR = MY_LOCAL_DATA-MATNR . BMM00-MBRSH = MY_LOCAL_DATA-MBRSH . BMM00-MTART = MY_LOCAL_DATA-MTART . BMM00-XEIK1 = 'X' . BMM00-A_VPSTA = 'K' . BMM00-A_PSTAT = 'K' . MY_WORK_AREA = BMM00 . APPEND MY_WORK_AREA . * ---------> STEP 3 : FILL Structure BMMH1 CLEAR MY_WORK_AREA . BMMH1-STYPE = '2' . BMMH1-MEINS = MY_LOCAL_DATA-MEINS . BMMH1-MAKTX = MY_LOCAL_DATA-MAKTX . BMMH1-MTPOS_MARA = 'NORM' . MY_WORK_AREA = BMMH1 . APPEND MY_WORK_AREA . ENDIF . MYINDEX = MYINDEX + 1 . ENDLOOP . OPEN DATASET MYFILENAME FOR OUTPUT IN TEXT MODE . LOOP AT MY_WORK_AREA . TRANSFER MY_WORK_AREA-MLINE TO MYFILENAME . ENDLOOP . ENDFORM. " CONVERT_LOCAL_TO_SAP_FORMAT *&---------------------------------------------------------------------* *& Form FIND_STRUCT_FILL_WITH_NODATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FIND_STRUCT_FILL_WITH_NODATA USING MYTABNAME . DATA : NAMETAB LIKE DNTAB OCCURS 100 WITH HEADER LINE . DATA : QUOTE(6) TYPE C VALUE '"/" . ' . DATA : MYFIELDNAME(60) TYPE C . DATA : TABNAME LIKE DNTAB-TABNAME . TABNAME = MYTABNAME . CALL FUNCTION 'NAMETAB_GET' EXPORTING LANGU = SY-LANGU TABNAME = TABNAME TABLES NAMETAB = NAMETAB[] EXCEPTIONS INTERNAL_ERROR = 1 TABLE_HAS_NO_FIELDS = 2 TABLE_NOT_ACTIV = 3 NO_TEXTS_FOUND = 4 OTHERS = 5. CLEAR MY_WORK_AREA . LOOP AT NAMETAB . MY_WORK_AREA-MLINE+NAMETAB-OFFSET(1) = '/' . ENDLOOP . ENDFORM. " FIND_STRUCT_FILL_WITH_NODATA *&---------------------------------------------------------------------* *& Form DOWNLOAD_MARA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM DOWNLOAD_MARA. DATA : BEGIN OF I_MARA OCCURS 0 . INCLUDE STRUCTURE MARA . DATA : END OF I_MARA . SELECT * INTO CORRESPONDING FIELDS OF TABLE I_MARA FROM MARA . CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = 'C:\STEFANOS\TEST\MARADATA.XLS' FILETYPE = 'DAT' TABLES DATA_TAB = I_MARA EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_WRITE_ERROR = 2 INVALID_FILESIZE = 3 INVALID_TYPE = 4 NO_BATCH = 5 UNKNOWN_ERROR = 6 INVALID_TABLE_WIDTH = 7 GUI_REFUSE_FILETRANSFER = 8 CUSTOMER_ERROR = 9 OTHERS = 10 . ENDFORM. " DOWNLOAD_MARA * --------------------------------------------------------- * SAMPLE FILE * --------------------------------------------------------- * Mat Nr industry mat type unit descr * --------------------------------------------------------- *mmmr3 1 NOF1 ST BLACK PENCIL HB 3 *mmmr4 1 NOF1 ST BLACK PENCIL HB 4 *mmmr5 1 NOF1 ST BLACK PENCIL HB 5 *mmmr6 1 NOF1 ST BLACK PENCIL HB 6 *mmmr7 1 NOF1 ST BLACK PENCIL HB 7 *mmmr8 1 NOF1 ST BLACK PENCIL HB 8 *mmmr9 1 NOF1 ST BLACK PENCIL HB 9 *mmmr10 1 NOF1 ST BLACK PENCIL HB 10 *mmmr11 1 NOF1 ST BLACK PENCIL HB 11 *mmmr12 1 NOF1 ST BLACK PENCIL HB 12 *mmmr13 1 NOF1 ST BLACK PENCIL HB 13 *mmmr14 1 NOF1 ST BLACK PENCIL HB 14 *mmmr15 1 NOF1 ST BLACK PENCIL HB 15 *mmmr16 1 NOF1 ST BLACK PENCIL HB 16 *mmmr17 1 NOF1 ST BLACK PENCIL HB 17 *mmmr18 1 NOF1 ST BLACK PENCIL HB 18 *mmmr19 1 NOF1 ST BLACK PENCIL HB 19 *mmmr20 1 NOF1 ST BLACK PENCIL HB 20 *mmmr21 1 NOF1 ST BLACK PENCIL HB 21 *mmmr22 1 NOF1 ST BLACK PENCIL HB 22 *mmmr23 1 NOF1 ST BLACK PENCIL HB 23 *mmmr24 1 NOF1 ST BLACK PENCIL HB 24 *mmmr25 1 NOF1 ST BLACK PENCIL HB 25 *mmmr26 1 NOF1 ST BLACK PENCIL HB 26 *mmmr27 1 NOF1 ST BLACK PENCIL HB 27