工藝路線批導程式開發
阿新 • • 發佈:2020-12-23
技術標籤:ABAP開發學習
可直接拿過來使用
*&---------------------------------------------------------------------* *& Report ZRPP_001 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZRPP_001. INCLUDE ZRPP_001TOP. INCLUDE ZRPP_001F01. INITIALIZATION. PERFORM FRM_INIT. AT SELECTION-SCREEN. CASE SSCRFIELDS-UCOMM. WHEN 'FC01'. PERFORM FRM_DOWNLOAD_TEMP. WHEN 'FC02'. G_STATUS = '0'. WHEN 'FC03'. G_STATUS = '1'. ENDCASE. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. PERFORM FRM_GET_EXCEL. AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF G_STATUS EQ '0'. IF SCREEN-GROUP1 EQ 'MD1'. SCREEN-ACTIVE = '1'. ELSEIF SCREEN-GROUP1 EQ 'MD2'. SCREEN-ACTIVE = '0'. ENDIF. ELSE. IF SCREEN-GROUP1 EQ 'MD2'. SCREEN-ACTIVE = '1'."顯示 ELSEIF SCREEN-GROUP1 EQ 'MD1'. SCREEN-ACTIVE = '0'."隱藏 ENDIF. ENDIF. MODIFY SCREEN. ENDLOOP. START-OF-SELECTION. PERFORM FRM_GET_DATA. END-OF-SELECTION . CHECK G_STATUS EQ '1'. IF GT_DATA IS NOT INITIAL. PERFORM FRM_DISPLAY_ALV. ELSE. MESSAGE '未查到業務資料!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF.
*&---------------------------------------------------------------------* *& 包含 ZRPP_001TOP *&---------------------------------------------------------------------* TABLES SSCRFIELDS. *定義結構型別 TYPES:BEGIN OF TY_EXCEL, COL01 TYPE STRING, COL02 TYPE STRING, COL03 TYPE STRING, COL06 TYPE STRING, COL07 TYPE STRING, COL08 TYPE STRING, COL09 TYPE STRING, COL10 TYPE STRING, COL11 TYPE STRING, COL12 TYPE STRING, COL13 TYPE STRING, COL14 TYPE STRING, COL15 TYPE STRING, COL16 TYPE STRING, COL17 TYPE STRING, COL18 TYPE STRING, COL19 TYPE STRING, COL20 TYPE STRING, COL21 TYPE STRING, COL22 TYPE STRING, COL23 TYPE STRING, COL24 TYPE STRING, COL25 TYPE STRING, COL26 TYPE STRING, END OF TY_EXCEL, BEGIN OF TY_DATA, MATNR TYPE MATNR, "物料號 WERKS TYPE WERKS_D, "工廠 KTEXT TYPE PLANTEXT, "工藝描述 CNJX TYPE CHAR40, "廠內機型 BRAND TYPE CHAR40, "品牌 VERWE TYPE VERWE, "用途 STATU TYPE STATU, "狀態 PLNME TYPE PLNME, "單位 VORNR TYPE VORNR, "工序號碼 ARBPL TYPE ARBPL, "工作中心 STEUS TYPE STEUS, "控制碼 LTXA1 TYPE LTXA1, "工序描述 BMSCH TYPE BMSCH, "工序數量 SFFG TYPE CHAR1, "是否分割 FGS TYPE CHAR6, "分割數 VGE01 TYPE VGWRTEH, "人工工時單位 VGW01 TYPE VGWRT, "人工工時 LAR01 TYPE LSTAR, "人工作業型別 VGE02 TYPE VGWRTEH, "機器工時單位 VGW02 TYPE VGWRT, "機器工時 LAR02 TYPE LSTAR, "機器作業型別 VGE03 TYPE VGWRTEH, "制費工時單位 VGW03 TYPE VGWRT, "制費工時 LAR03 TYPE LSTAR, "制費作業型別 SEL TYPE ABAP_BOOL, END OF TY_DATA. *定義工作區 DATA: GS_EXCEL TYPE TY_EXCEL, GS_DATA TYPE TY_DATA, GS_FUNCTXT TYPE SMP_DYNTXT, GS_LAYOUT TYPE SLIS_LAYOUT_ALV, GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. *定義內表 DATA: GT_EXCEL TYPE TABLE OF TY_EXCEL, GT_DATA TYPE TABLE OF TY_DATA, GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. *定義欄位符號 FIELD-SYMBOLS: <FS_EXCEL> TYPE TY_EXCEL, <FS_DATA> TYPE TY_DATA. *定義全域性變數 DATA: G_STATUS TYPE CHAR1, G_TITLE TYPE LVC_TITLE. *選擇介面 SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN FUNCTION KEY 2. SELECTION-SCREEN FUNCTION KEY 3. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS P_FILE TYPE RLGRAP-FILENAME MODIF ID MD1. SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. PARAMETERS: CB_1 AS CHECKBOX DEFAULT 'X' MODIF ID MD1. SELECTION-SCREEN END OF BLOCK B2. SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003. SELECT-OPTIONS: S_WERKS FOR GS_DATA-WERKS MODIF ID MD2 OBLIGATORY DEFAULT 'GX10', S_MATNR FOR GS_DATA-MATNR MODIF ID MD2. SELECTION-SCREEN END OF BLOCK B3.
*&---------------------------------------------------------------------* *& 包含 ZRPP_001F01 *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form FRM_INIT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_INIT . G_STATUS = 0. CLEAR GS_FUNCTXT. GS_FUNCTXT-ICON_ID = ICON_EXPORT. GS_FUNCTXT-ICON_TEXT = '下載模板'. GS_FUNCTXT-QUICKINFO = '下載模板'. SSCRFIELDS-FUNCTXT_01 = GS_FUNCTXT. CLEAR GS_FUNCTXT. GS_FUNCTXT-ICON_ID = ICON_IMPORT. GS_FUNCTXT-QUICKINFO = '匯入'. GS_FUNCTXT-ICON_TEXT = '匯入'. SSCRFIELDS-FUNCTXT_02 = GS_FUNCTXT. CLEAR GS_FUNCTXT. GS_FUNCTXT-ICON_ID = ICON_START_VIEWER. GS_FUNCTXT-QUICKINFO = '檢視'. GS_FUNCTXT-ICON_TEXT = '檢視'. SSCRFIELDS-FUNCTXT_03 = GS_FUNCTXT. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DOWNLOAD_TEMP *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_DOWNLOAD_TEMP . DATA: L_FNAME TYPE STRING, L_FILENAME TYPE STRING, L_PATH TYPE STRING, L_FULLPATH TYPE STRING, LS_WWWDATA TYPE WWWDATATAB. CONCATENATE '工藝路線批導模板-' SY-DATUM SY-UZEIT INTO L_FNAME. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING * WINDOW_TITLE = DEFAULT_EXTENSION = 'XLS' DEFAULT_FILE_NAME = L_FNAME * WITH_ENCODING = FILE_FILTER = 'Microsoft Excel 檔案 (*.XLS)' * INITIAL_DIRECTORY = * PROMPT_ON_OVERWRITE = 'X' CHANGING FILENAME = L_FILENAME PATH = L_PATH FULLPATH = L_FULLPATH * USER_ACTION = * FILE_ENCODING = EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 INVALID_DEFAULT_FILE_NAME = 4 OTHERS = 5. IF L_FULLPATH IS NOT INITIAL. SELECT SINGLE * INTO CORRESPONDING FIELDS OF LS_WWWDATA FROM WWWDATA WHERE OBJID EQ 'ZPP001'. IF SY-SUBRC EQ 0 . P_FILE = L_FULLPATH. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING KEY = LS_WWWDATA DESTINATION = P_FILE. * IMPORTING * RC = * CHANGING * TEMP = ELSE . MESSAGE '模板檔案:ZPP001.XLS不存在,請用TCODE:SMW0進行載入' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ELSE. MESSAGE '取消選擇!' TYPE 'S' DISPLAY LIKE 'E' . ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_EXCEL *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_GET_EXCEL . CALL FUNCTION 'WS_FILENAME_GET' EXPORTING * DEF_FILENAME = ' ' * DEF_PATH = ' ' MASK = ',Microsoft Excel 檔案 (*.XLS;),*.XLS;' MODE = 'O' TITLE = '選擇檔案' IMPORTING FILENAME = P_FILE * RC = EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5. IF SY-SUBRC EQ 3 . MESSAGE '取消選擇!' TYPE 'S' DISPLAY LIKE 'E' . ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_GET_DATA . IF G_STATUS EQ '0'. PERFORM FRM_IMPORT_DATA. ELSE. PERFORM FRM_SEARCH_DATA. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_DISPLAY_ALV *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_DISPLAY_ALV . PERFORM FRM_SET_FIELDCAT. PERFORM FRM_SET_LAYOUT. PERFORM FRM_SET_TITLE. PERFORM FRM_SET_ALV. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_SET_FIELDCAT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_SET_FIELDCAT . DEFINE %%FILL_FIELDCAT. CLEAR GS_FIELDCAT. GS_FIELDCAT-FIELDNAME = &1. GS_FIELDCAT-SELTEXT_M = &2. GS_FIELDCAT-OUTPUTLEN = &3. IF &1 EQ 'PLNME'. GS_FIELDCAT-EDIT_MASK = '==CUNIT'. ELSEIF &1 EQ 'MATNR' OR &1 EQ 'WERKS' OR &1 EQ 'VORNR'. GS_FIELDCAT-KEY = 'X'. ENDIF. APPEND GS_FIELDCAT TO GT_FIELDCAT. END-OF-DEFINITION. %%FILL_FIELDCAT 'MATNR' '物料號' 40. %%FILL_FIELDCAT 'WERKS' '工廠' 4. %%FILL_FIELDCAT 'VORNR' '工序號碼' 6. %%FILL_FIELDCAT 'KTEXT' '工藝描述' 40. %%FILL_FIELDCAT 'VERWE' '用途' 3. %%FILL_FIELDCAT 'STATU' '狀態' 3. %%FILL_FIELDCAT 'PLNME' '單位' 3. %%FILL_FIELDCAT 'ARBPL' '工作中心' 8. %%FILL_FIELDCAT 'STEUS' '控制碼' 4. %%FILL_FIELDCAT 'LTXA1' '工序描述' 20. %%FILL_FIELDCAT 'BMSCH' '工序數量' 8. %%FILL_FIELDCAT 'SFFG' '是否分割' 3. %%FILL_FIELDCAT 'FGS' '分割數' 3. %%FILL_FIELDCAT 'VGW01' '人工工時單位' 5. %%FILL_FIELDCAT 'VGE01' '人工工時' 5. %%FILL_FIELDCAT 'LAR01' '人工作業型別' 5. %%FILL_FIELDCAT 'VGW02' '機器工時單位' 5. %%FILL_FIELDCAT 'VGE02' '機器工時' 5. %%FILL_FIELDCAT 'LAR02' '機器作業型別' 5. %%FILL_FIELDCAT 'VGW03' '制費工時單位' 5. %%FILL_FIELDCAT 'VGE03' '制費工時' 5. %%FILL_FIELDCAT 'LAR03' '制費作業型別' 5. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_SET_LAYOUT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_SET_LAYOUT . CLEAR GS_LAYOUT. GS_LAYOUT-ZEBRA = 'X'. GS_LAYOUT-BOX_FIELDNAME = 'SEL'. GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_SET_TITLE *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_SET_TITLE . DATA L_LINE TYPE NUMC5 . DESCRIBE TABLE GT_DATA LINES L_LINE . SHIFT L_LINE LEFT DELETING LEADING '0'. CONCATENATE '總計' L_LINE '行' INTO G_TITLE. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_SET_ALV *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_SET_ALV . CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET' * I_CALLBACK_USER_COMMAND = 'USER_COMMAND' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' I_GRID_TITLE = G_TITLE * I_GRID_SETTINGS = IS_LAYOUT = GS_LAYOUT IT_FIELDCAT = GT_FIELDCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' I_SAVE = 'A' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES T_OUTTAB = GT_DATA EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. *&---------------------------------------------------------------------* *& Form ALV_STATUS *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB. DATA LS_EXTAB TYPE SLIS_EXTAB. LS_EXTAB-FCODE = 'PRINT'. APPEND LS_EXTAB TO RT_EXTAB. SET PF-STATUS 'ALV_STANDARD' EXCLUDING RT_EXTAB. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_MARA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> <FS_DATA>_MATNR *& <-- L_FLAG *&---------------------------------------------------------------------* FORM FRM_CHECK_MARA USING P_MATNR CHANGING P_FLAG. SELECT COUNT(*) FROM MARA WHERE MATNR EQ P_MATNR AND LVORM EQ SPACE. IF SY-SUBRC NE 0. P_FLAG = 'X'. ELSE. CLEAR P_FLAG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_MARC *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> <FS_DATA>_MATNR *& <-- L_FLAG *&---------------------------------------------------------------------* FORM FRM_CHECK_MARC USING P_MATNR P_WERKS CHANGING P_FLAG. SELECT COUNT(*) FROM MARC WHERE MATNR EQ P_MATNR AND WERKS EQ P_WERKS AND LVORM EQ SPACE. IF SY-SUBRC NE 0. P_FLAG = 'X'. ELSE. CLEAR P_FLAG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_MEINS *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> <FS_DATA>_MATNR *& --> <FS_DATA>_PLNME *& <-- L_FLAG *&---------------------------------------------------------------------* FORM FRM_CHECK_MEINS USING P_MATNR P_PLNME CHANGING P_FLAG. SELECT COUNT(*) FROM MARA WHERE MATNR EQ P_MATNR AND MEINS EQ P_PLNME AND LVORM EQ SPACE. IF SY-SUBRC NE 0. P_FLAG = 'X'. ELSE. CLEAR P_FLAG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_ARBPL *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> <FS_DATA>_ARBPL *& <-- L_FLAG *&---------------------------------------------------------------------* FORM FRM_CHECK_ARBPL USING P_ARBPL CHANGING P_FLAG. SELECT COUNT(*) FROM CRHD WHERE ARBPL EQ P_ARBPL AND LVORM EQ SPACE. IF SY-SUBRC NE 0. P_FLAG = 'X'. ELSE. CLEAR P_FLAG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_MAPL *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> <FS_DATA>_MATNR *& --> GS_DATA_WERKS *& <-- L_FLAG *&---------------------------------------------------------------------* FORM FRM_CHECK_MAPL USING P_MATNR P_WERKS CHANGING P_FLAG. SELECT COUNT(*) FROM MAPL WHERE MATNR EQ P_MATNR AND WERKS EQ P_WERKS AND LOEKZ NE 'X'. IF SY-SUBRC EQ 0. P_FLAG = 'X'. ELSE. CLEAR P_FLAG. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_ADD_MES *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> LT_ERRORMSG *& --> L_ZEILE *& --> LT_RETURN_TYPE *& --> LT_RETURN_ID *& --> LT_RETURN_NUMBER *& --> LT_RETURN_MESSAGE_V1 *& --> LT_RETURN_MESSAGE_V2 *& --> LT_RETURN_MESSAGE_V3 *& --> LT_RETURN_MESSAGE_V4 *&---------------------------------------------------------------------* FORM FRM_ADD_MES TABLES PT_ERRORMSG STRUCTURE SMESG USING P_ZEILE P_TYPE P_ID P_NUMBER P_MESSAGE_V1 P_MESSAGE_V2 P_MESSAGE_V3 P_MESSAGE_V4. DATA LS_ERRORMSG TYPE SMESG. LS_ERRORMSG-ZEILE = P_ZEILE + 1. LS_ERRORMSG-MSGTY = P_TYPE. LS_ERRORMSG-ARBGB = P_ID. LS_ERRORMSG-TXTNR = P_NUMBER. LS_ERRORMSG-MSGV1 = P_MESSAGE_V1. LS_ERRORMSG-MSGV2 = P_MESSAGE_V2. LS_ERRORMSG-MSGV3 = P_MESSAGE_V3. LS_ERRORMSG-MSGV4 = P_MESSAGE_V4. APPEND LS_ERRORMSG TO PT_ERRORMSG. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_IMPORT_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_IMPORT_DATA . DATA LT_RDATA TYPE TRUXS_T_TEXT_DATA. CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING I_TAB_RAW_DATA = LT_RDATA I_FILENAME = P_FILE TABLES I_TAB_CONVERTED_DATA = GT_EXCEL EXCEPTIONS CONVERSION_FAILED = 1 OTHERS = 2. IF SY-SUBRC NE 0. MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. ENDIF. LOOP AT GT_EXCEL ASSIGNING <FS_EXCEL> FROM 4. CLEAR GS_DATA. CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' EXPORTING INPUT = <FS_EXCEL>-COL01 IMPORTING OUTPUT = GS_DATA-MATNR EXCEPTIONS NUMBER_NOT_FOUND = 0 LENGTH_ERROR = 0 OTHERS = 0. GS_DATA-WERKS = <FS_EXCEL>-COL02. GS_DATA-KTEXT = <FS_EXCEL>-COL03. GS_DATA-CNJX = <FS_EXCEL>-COL06. GS_DATA-BRAND = <FS_EXCEL>-COL07. GS_DATA-VERWE = <FS_EXCEL>-COL08. GS_DATA-STATU = <FS_EXCEL>-COL09. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = <FS_EXCEL>-COL10 LANGUAGE = SY-LANGU IMPORTING OUTPUT = GS_DATA-PLNME EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. GS_DATA-VORNR = <FS_EXCEL>-COL11. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = <FS_EXCEL>-COL11 IMPORTING OUTPUT = GS_DATA-VORNR. GS_DATA-ARBPL = <FS_EXCEL>-COL12. GS_DATA-STEUS = <FS_EXCEL>-COL13. GS_DATA-LTXA1 = <FS_EXCEL>-COL14. GS_DATA-BMSCH = <FS_EXCEL>-COL15. GS_DATA-SFFG = <FS_EXCEL>-COL16. GS_DATA-FGS = <FS_EXCEL>-COL17. GS_DATA-VGE01 = <FS_EXCEL>-COL18. GS_DATA-VGW01 = <FS_EXCEL>-COL19. GS_DATA-LAR01 = <FS_EXCEL>-COL20. GS_DATA-VGE02 = <FS_EXCEL>-COL21. GS_DATA-VGW02 = <FS_EXCEL>-COL22. GS_DATA-LAR02 = <FS_EXCEL>-COL23. GS_DATA-VGE03 = <FS_EXCEL>-COL24. GS_DATA-VGW03 = <FS_EXCEL>-COL25. GS_DATA-LAR03 = <FS_EXCEL>-COL26. APPEND GS_DATA TO GT_DATA. ENDLOOP. SORT GT_DATA BY MATNR WERKS VORNR. DATA: L_FLAG TYPE ABAP_BOOL, L_ZEILE TYPE SMESG-ZEILE, L_LEN TYPE NUMC5, L_MATNR TYPE MATNR, L_TESTRUN TYPE BAPIFLAG, L_PLNNR TYPE PLNNR, "任務清單組鍵值 L_PLNAL TYPE PLNAL. "組計數器 DATA:LT_TSK TYPE TABLE OF BAPI1012_TSK_C WITH HEADER LINE, "任務清單頭資料 LT_MTK TYPE TABLE OF BAPI1012_MTK_C WITH HEADER LINE, "物料任務清單分配 LT_OPR TYPE TABLE OF BAPI1012_OPR_C WITH HEADER LINE, "工序 LT_TMP TYPE TABLE OF BAPI1012_OPR_C WITH HEADER LINE, "工序 LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE, "返回引數 LT_ZPPT001 TYPE TABLE OF ZPPT001 WITH HEADER LINE, LT_ERRORMSG TYPE TABLE OF SMESG. L_TESTRUN = CB_1. LOOP AT GT_DATA ASSIGNING <FS_DATA>. DESCRIBE TABLE LT_ERRORMSG LINES L_LEN. SHIFT L_LEN LEFT DELETING LEADING '0'. L_ZEILE = L_LEN. CLEAR L_FLAG. PERFORM FRM_CHECK_MARA USING <FS_DATA>-MATNR CHANGING L_FLAG. IF L_FLAG EQ 'X'. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE 'E' '00' '001' <FS_DATA>-MATNR '物料不存在!' '' ''. CONTINUE. ENDIF. CLEAR L_FLAG. PERFORM FRM_CHECK_MARC USING <FS_DATA>-MATNR <FS_DATA>-WERKS CHANGING L_FLAG. IF L_FLAG EQ 'X'. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE 'E' '00' '001' <FS_DATA>-MATNR '物料不存在' <FS_DATA>-WERKS '工廠資料!'. CONTINUE. ENDIF. CLEAR L_FLAG. PERFORM FRM_CHECK_MEINS USING <FS_DATA>-MATNR <FS_DATA>-PLNME CHANGING L_FLAG. IF L_FLAG EQ 'X'. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE 'E' '00' '001' <FS_DATA>-MATNR '物料單位' <FS_DATA>-PLNME '與基本單位不一致!'. CONTINUE. ENDIF. CLEAR L_FLAG. PERFORM FRM_CHECK_ARBPL USING <FS_DATA>-ARBPL CHANGING L_FLAG. IF L_FLAG EQ 'X'. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE 'E' '00' '001' <FS_DATA>-ARBPL '工作中心不存在!' '' ''. CONTINUE. ENDIF. CLEAR L_FLAG. PERFORM FRM_CHECK_MAPL USING <FS_DATA>-MATNR GS_DATA-WERKS CHANGING L_FLAG. IF L_FLAG EQ 'X'. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE 'E' '00' '001' <FS_DATA>-MATNR '已存在工藝路線!' '' ''. CONTINUE. ENDIF. CLEAR: GS_DATA,L_MATNR. MOVE <FS_DATA> TO GS_DATA. L_MATNR = <FS_DATA>-MATNR. AT NEW MATNR. REFRESH: LT_TSK,LT_MTK,LT_OPR,LT_RETURN. CLEAR: L_PLNNR,LT_TSK,LT_MTK. SELECT SINGLE PLNNR FROM MAPL INTO L_PLNNR WHERE WERKS EQ GS_DATA-WERKS AND MATNR EQ GS_DATA-MATNR AND PLNTY EQ 'N' AND LOEKZ NE 'X'. IF SY-SUBRC EQ 0. LT_TSK-TASK_LIST_GROUP = L_PLNNR."任務清單組碼 ENDIF. LT_TSK-PLANT = GS_DATA-WERKS . "工廠 LT_TSK-TASK_LIST_USAGE = GS_DATA-VERWE. "用途 LT_TSK-TASK_LIST_STATUS = GS_DATA-STATU. "狀態 LT_TSK-VALID_FROM = SY-DATUM. "有效起始日期 LT_TSK-VALID_TO_DATE = '99991231'. "有效截止日期 LT_TSK-LOT_SIZE_FROM = '00000000'. "從批量 LT_TSK-LOT_SIZE_TO = '99999999'. "至批量 LT_TSK-DESCRIPTION = GS_DATA-KTEXT. "工藝描述 LT_TSK-TASK_MEASURE_UNIT = GS_DATA-PLNME. "計量單位 APPEND LT_TSK. LT_MTK-PLANT = GS_DATA-WERKS. "工廠 LT_MTK-MATERIAL = GS_DATA-MATNR. "產品編號 LT_MTK-MATERIAL_EXTERNAL = GS_DATA-MATNR. "產品編號 LT_MTK-VALID_FROM = SY-DATUM. "有效起始日期 LT_MTK-VALID_TO_DATE = '99991231'. "有效截止日期 APPEND LT_MTK. ENDAT. " 工序 CLEAR LT_OPR. LT_OPR-SEQUENCE_NO = '000000'. "序列 LT_OPR-ACTIVITY = <FS_DATA>-VORNR. "工序編碼 LT_OPR-CONTROL_KEY = <FS_DATA>-STEUS. "控制碼 LT_OPR-WORK_CNTR = <FS_DATA>-ARBPL. "工作中心 LT_OPR-PLANT = <FS_DATA>-WERKS. "工廠 LT_OPR-DESCRIPTION = <FS_DATA>-LTXA1. "工序描述 LT_OPR-BASE_QUANTITY = <FS_DATA>-BMSCH. "基礎數量 LT_OPR-COST_RELEVANT = 'X'. "與成本核算相關標誌 LT_OPR-OPERATION_MEASURE_UNIT = <FS_DATA>-PLNME. "計量單位 LT_OPR-STD_UNIT_01 = <FS_DATA>-VGE01."人工工時單位 LT_OPR-STD_VALUE_01 = <FS_DATA>-VGW01."人工工時 LT_OPR-STD_UNIT_02 = <FS_DATA>-VGE02."機器工時單位 LT_OPR-STD_VALUE_02 = <FS_DATA>-VGW02."機器工時 LT_OPR-STD_UNIT_03 = <FS_DATA>-VGE03."制費工時單位 LT_OPR-STD_VALUE_03 = <FS_DATA>-VGW03."制費工時 LT_OPR-VALID_FROM = SY-DATUM. "有效起始日期 LT_OPR-VALID_TO_DATE = '99991231'."有效截止日期 LT_OPR-DENOMINATOR = 1. LT_OPR-NOMINATOR = 1. * LT_OPR-IND_SPLITTING_REQRD = 'X'. "是否拆分 * LT_OPR-MAX_NO_OF_SPLITS = 999. "最大拆分數 APPEND LT_OPR. AT END OF MATNR. MOVE LT_OPR[] TO LT_TMP[]. CALL FUNCTION 'BAPI_ROUTING_CREATE' EXPORTING TESTRUN = L_TESTRUN IMPORTING GROUP = L_PLNNR GROUPCOUNTER = L_PLNAL TABLES TASK = LT_TSK MATERIALTASKALLOCATION = LT_MTK OPERATION = LT_OPR RETURN = LT_RETURN. LOOP AT LT_RETURN WHERE TYPE EQ 'E' OR TYPE EQ 'A'. EXIT. ENDLOOP. IF SY-SUBRC EQ 0. IF CB_1 NE 'X'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. LOOP AT LT_RETURN WHERE TYPE EQ 'E' OR TYPE EQ 'A'. DESCRIBE TABLE LT_ERRORMSG LINES L_LEN. SHIFT L_LEN LEFT DELETING LEADING '0'. L_ZEILE = L_LEN. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE LT_RETURN-TYPE LT_RETURN-ID LT_RETURN-NUMBER LT_RETURN-MESSAGE_V1 LT_RETURN-MESSAGE_V2 LT_RETURN-MESSAGE_V3 LT_RETURN-MESSAGE_V4. ENDLOOP. ELSE. IF CB_1 NE 'X'. LOOP AT LT_TMP. READ TABLE GT_DATA INTO GS_DATA WITH KEY MATNR = L_MATNR WERKS = LT_TMP-PLANT VORNR = LT_OPR-ACTIVITY BINARY SEARCH. IF SY-SUBRC EQ 0. MOVE-CORRESPONDING GS_DATA TO LT_ZPPT001. LT_ZPPT001-CNAME = SY-UNAME. LT_ZPPT001-CDATE = SY-DATUM. LT_ZPPT001-CTIME = SY-UZEIT. APPEND LT_ZPPT001. ENDIF. ENDLOOP. MODIFY ZPPT001 FROM TABLE LT_ZPPT001. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ENDIF. LOOP AT LT_RETURN WHERE TYPE EQ 'S' OR TYPE EQ 'W'. DESCRIBE TABLE LT_ERRORMSG LINES L_LEN. SHIFT L_LEN LEFT DELETING LEADING '0'. L_ZEILE = L_LEN. PERFORM FRM_ADD_MES TABLES LT_ERRORMSG USING L_ZEILE LT_RETURN-TYPE LT_RETURN-ID LT_RETURN-NUMBER LT_RETURN-MESSAGE_V1 LT_RETURN-MESSAGE_V2 LT_RETURN-MESSAGE_V3 LT_RETURN-MESSAGE_V4. ENDLOOP. ENDIF. ENDAT. ENDLOOP. IF LT_ERRORMSG[] IS NOT INITIAL. CALL FUNCTION 'FB_MESSAGES_DISPLAY_POPUP' EXPORTING IT_SMESG = LT_ERRORMSG[] * ID_SEND_IF_ONE = 'X' EXCEPTIONS NO_MESSAGES = 1 POPUP_CANCELLED = 2 OTHERS = 3. ELSE. MESSAGE '暫未發現錯誤,可直接匯入資料!' TYPE 'S'. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_SEARCH_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM FRM_SEARCH_DATA . SELECT MAPL~MATNR MAPL~WERKS PLKO~KTEXT PLKO~VERWE PLKO~STATU PLKO~PLNME PLPO~VORNR CRHD~ARBPL PLPO~STEUS PLPO~LTXA1 PLPO~BMSCH PLPO~VGE01 PLPO~VGW01 PLPO~LAR01 PLPO~VGE02 PLPO~VGW02 PLPO~LAR02 PLPO~VGE03 PLPO~VGW03 PLPO~LAR03 INTO CORRESPONDING FIELDS OF TABLE GT_DATA FROM MAPL INNER JOIN PLKO ON MAPL~PLNTY EQ PLKO~PLNTY AND MAPL~PLNNR EQ PLKO~PLNNR AND MAPL~PLNAL EQ PLKO~PLNAL AND MAPL~ZAEHL EQ PLKO~ZAEHL INNER JOIN PLPO ON PLKO~PLNTY EQ PLPO~PLNTY AND PLKO~PLNNR EQ PLPO~PLNNR AND PLKO~ZAEHL EQ PLPO~ZAEHL INNER JOIN CRHD ON PLPO~ARBID EQ CRHD~OBJID WHERE MAPL~LOEKZ NE 'X' AND MAPL~MATNR IN S_MATNR AND MAPL~WERKS IN S_WERKS. SORT GT_DATA BY MATNR WERKS VORNR. ENDFORM.
模板格式