ABAP 将EXECL数据导入SAP内表的几个步骤。

您所在的位置:网站首页 sap导入数据 ABAP 将EXECL数据导入SAP内表的几个步骤。

ABAP 将EXECL数据导入SAP内表的几个步骤。

2023-12-02 21:36| 来源: 网络整理| 查看: 265

经常遇到将外部数据大批量的导出sap中。今天的需求是:批量导入BOM分配,然后批量删除。

将execl导入sap内表的函数:ALSM_EXCEL_TO_INTERNAL_TABLE,很好用,不过听说这个函数只能导入1万行以内的数据,具体没有验证。

Step1:声明变量:

TYPES: BEGIN OF ITAB1, MATNR LIKE MARA-MATNR, WERKS LIKE MARC-WERKS, END OF ITAB1. DATA:ITAB TYPE STANDARD TABLE OF ITAB1 WITH HEADER LINE. DATA:WA_UPLOAD TYPE ITAB1. DATA:IT_DATA1 TYPE STANDARD TABLE OF ALSMEX_TABLINE WITH HEADER LINE. DATA:FLG_WARNING LIKE CAPIFLAG-FLWARNING. FIELD-SYMBOLS: TYPE ALSMEX_TABLINE. Step2:画屏:

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001. PARAMETERS: FNAME1 TYPE RLGRAP-FILENAME OBLIGATORY. SELECTION-SCREEN END OF BLOCK BLK1. Step3:控制级语句:

INITIALIZATION. AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME1." SEACH HELP * CALL FUNCTION 'F4_FILENAME' * EXPORTING * FIELD_NAME = 'FNAME1' * IMPORTING * FILE_NAME = FNAME1. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING MASK = ',EXCEL FILE,*.XLS;*.XLSX;' MODE = 'O' "S为保存,O为打开 IMPORTING FILENAME = FNAME1 EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5. START-OF-SELECTION. PERFORM INTERNAL_TABLE. END-OF-SELECTION.

上面有2个函数,第一个函数(注释的):F4_FILENAME ,它是获取所有后缀的文件,如图:

第2个函数:WS_FILENAME_GET,它打开的文件仅仅锁定xls。如图:

Step 4:获取数据,转化到内表

FORM INTERNAL_TABLE. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING FILENAME = FNAME1 I_BEGIN_COL = '1' I_BEGIN_ROW = '2' I_END_COL = '2' I_END_ROW = '65535' TABLES INTERN = IT_DATA1 EXCEPTIONS INCONSISTENT_PARAMETERS = 1 UPLOAD_OLE = 2 OTHERS = 3 . IF IT_DATA1[] IS INITIAL. MESSAGE '清单中无数据' TYPE 'E'. ENDIF. SORT IT_DATA1 BY ROW. *格式转化 LOOP AT IT_DATA1 ASSIGNING . CASE -COL. WHEN '0001'. WA_UPLOAD-WERKS = -VALUE. WHEN '0002'. WA_UPLOAD-MATNR = -VALUE. ENDCASE. AT END OF ROW. APPEND WA_UPLOAD TO ITAB. CLEAR WA_UPLOAD. ENDAT. ENDLOOP. ENDFORM.

Step5. 批量删除BOM分配

FORM BOM_DELETE. LOOP AT ITAB. CALL FUNCTION 'CSAP_MAT_BOM_ALLOC_DELETE' EXPORTING MATERIAL = ITAB-MATNR PLANT = ITAB-WERKS BOM_USAGE = '1' * ALTERNATIVE = * FL_NO_CHANGE_DOC = ' ' * FL_COMMIT_AND_WAIT = ' ' IMPORTING FL_WARNING = FLG_WARNING BOM_NO = BOM_NO * TABLES * T_PLANT = EXCEPTIONS ERROR = 1 OTHERS = 2 . IF FLG_WARNING = 'X'. WRITE :/ ITAB-WERKS,ITAB-MATNR , '删除成功'. ELSE. WRITE :/ ITAB-WERKS,ITAB-MATNR , '删除失败'. ENDIF. ENDLOOP. ENDFORM.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3