logo资料库

SAP 批量导出BOM的代码实现.docx

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
REPORT zpp015. TABLES:stko,stpo,mast,makt,stpox,cstmat,tc04. TYPE-POOLS: slis. DATA: ws_fieldcat TYPE lvc_t_fcat, "slis_t_fieldcat_alv WITH HEADER L INE, ws_layout TYPE lvc_s_layo. "lvc_s_layo DATA: BEGIN OF itab_mast OCCURS 0, "物料号 "物料描述 "BOM matnr LIKE mast-matnr, maktx LIKE makt-maktx, stlnr LIKE stko-stlnr, stlal LIKE mast-stlal, "可选BOM stktx LIKE stko-stktx, "可选文本 bmeng LIKE stko-bmeng, bmein LIKE stko-bmein, stlan LIKE mast-stlan, "基本用量 "BOM 用途 END OF itab_mast. DATA: BEGIN OF itab_ok OCCURS 0, fmatnr vmatnr vmaktx LIKE mast-matnr, LIKE mast-matnr, LIKE makt-maktx,
"BOM 层次 " item "物料单,上级,所属 "物料单,下级,所辖 " 子节点编号level "BOM 用途 "BOM 物料显示 "BOM 组件号 "组件号描述 "物料号 "组件计量单位 LIKE stpox-stufe, LIKE stpo-posnr, LIKE stpo-sortf, LIKE stpo-stlnr, LIKE stpo-stlnr, LIKE stpo-stlkn, LIKE mast-stlan, stufe stufex(10) TYPE c, posnr sortf ustlnr dstlnr stlkn stlan idnrkx(50) TYPE c, idnrk maktxx matnr brgew ntgew gewei maktx meins menge ausch potx1 potx2 POSTP lgort sanka aennr beikz datuv datub labst zxmlb xcolor(4) bmeng bmein stlnr stlal stktx ewahr alprf alpgr alpst stvkn LIKE stpo-idnrk, LIKE makt-maktx, LIKE mast-matnr, LIKE mara-brgew, LIKE mara-ntgew, LIKE mara-gewei, "重量单位 LIKE makt-maktx, LIKE stpo-meins, LIKE stpo-menge, LIKE stpo-ausch, LIKE stpo-potx1, LIKE stpo-potx2, LIKE STPO-POSTP, LIKE stpo-lgort, LIKE stpo-sanka, LIKE stpo-aennr, LIKE stpo-beikz, LIKE stpo-datuv, LIKE stpox-datub, TYPE mard-labst, "非限制性库存 TYPE c, TYPE c, LIKE stko-bmeng, LIKE stko-bmein, LIKE mast-stlnr, LIKE mast-stlal, "可选BOM LIKE stko-stktx, "可选文本 LIKE stpo-ewahr, "使用可能性 LIKE stpo-alprf, "策略 LIKE stpo-alpgr, "优先级 LIKE stpo-alpst, "替代项目组 LIKE stpo-stvkn, "基本用量 "替代BOM END OF itab_ok. "L 为供应商,空为自供 "有效起始日期
DATA:s_capid LIKE tc04-capid, no time node lines TYPE i, TYPE i, TYPE i, TYPE i. "每张BOM 中的最大子节点数 "子节点,层次 "循环次数 LIKE TABLE OF stpox WITH HEADER LINE, DATA: bom_itab LIKE TABLE OF stpox WITH HEADER LINE, bom_itab1 LIKE TABLE OF itab_ok WITH HEADER LINE, lt_itab gt_itab LIKE TABLE OF itab_ok WITH HEADER LINE, wa_gt_itab LIKE TABLE OF itab_ok WITH HEADER LINE, i_topmat cstmat. LIKE *---------------------Selection screen------------------------------- --- SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-010. SELECT-OPTIONS: s_matnr FOR mast-matnr . SELECT-OPTIONS: s_matnr1 FOR mast-matnr . PARAMETERS PARAMETERS 用途 SELECT-OPTIONS: s_date FOR stko-datuv. SELECTION-SCREEN : END OF BLOCK b1. : s_werks LIKE mast-werks OBLIGATORY : s_stlan LIKE mast-stlan OBLIGATORY DEFAULT '1'." BOM MEMORY ID wrk. *--------------------Start of selection------------------------------ --- INITIALIZATION. START-OF-SELECTION. IF s_matnr1 IS NOT INITIAL. PERFORM frm_getdata. IF gt_itab[] IS INITIAL . MESSAGE '所查询的物料没有 BOM 清单.' TYPE 'I'. EXIT. ENDIF. ELSE. PERFORM frm_get_headdata. IF NOT itab_mast[] IS INITIAL. PERFORM frm_get_bomdata. ELSE. MESSAGE '所查询的物料没有 BOM 清单.' TYPE 'I'. EXIT. ENDIF.
ENDIF. END-OF-SELECTION. PERFORM modify_data. PERFORM alv_data. text Form FRM_GETDATA *&------------------------------------------------------------------- --* *& *&------------------------------------------------------------------- --* * *-------------------------------------------------------------------- --* * * *-------------------------------------------------------------------- --* FORM frm_getdata . text text --> <-- p1 p2 DATA:wultb LIKE STANDARD TABLE OF stpov WITH HEADER LINE, equicat LIKE STANDARD TABLE OF cscequi WITH HEADER LINE, LIKE STANDARD TABLE OF cscknd WITH HEADER LINE, kndcat matcat LIKE STANDARD TABLE OF cscmat WITH HEADER LINE, LIKE STANDARD TABLE OF cscstd WITH HEADER LINE, stdcat LIKE STANDARD TABLE OF csctpl WITH HEADER LINE, tplcat prjcat LIKE STANDARD TABLE OF cscprj WITH HEADER LINE. DATA:gt_mara LIKE STANDARD TABLE OF mara WITH HEADER LINE. DATA:topmat TYPE mc29s. DATA:BEGIN OF lt_mara1 OCCURS 0, matnr LIKE mara-matnr, END OF lt_mara1. DATA:BEGIN OF lt_mara OCCURS 0, matnr LIKE mara-matnr, END OF lt_mara. SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE lt_mara FROM m ara WHERE matnr IN s_matnr1. LOOP AT lt_mara. CLEAR:wultb,wultb[]. CALL FUNCTION 'CS_WHERE_USED_MAT'
EXPORTING datub datuv matnr werks mclmt IMPORTING topmat TABLES wultb equicat kndcat matcat stdcat tplcat prjcat = sy-datum = sy-datum = lt_mara-matnr = s_werks = '00000000' = topmat = wultb = equicat = kndcat = matcat = stdcat = tplcat = prjcat EXCEPTIONS call_invalid =1 material_not_found = 2 no_where_used_rec_found = 3 no_where_used_rec_selected = 4 no_where_used_rec_valid = 5. IF wultb[] IS NOT INITIAL. LOOP AT wultb. MOVE-CORRESPONDING wultb TO gt_itab. gt_itab-vmatnr = wultb-matnr . gt_itab-idnrkx = wultb-idnrk . gt_itab-zxmlb = wultb-postp . gt_itab-stvkn = wultb-stlkn . gt_itab-stlal = wultb-vwalt . SELECT SINGLE maktx INTO gt_itab-vmaktx FROM makt WHERE matnr SELECT SINGLE maktx INTO gt_itab-maktxx FROM makt WHERE matnr = gt_itab-matnr AND spras = 1. = gt_itab-idnrk AND spras = 1. APPEND gt_itab.CLEAR gt_itab. ENDLOOP. ENDIF. ENDLOOP. DELETE ADJACENT DUPLICATES FROM gt_itab. IF s_matnr IS NOT INITIAL . DELETE gt_itab WHERE vmatnr NOT IN s_matnr. ENDIF.
ENDFORM. Form frm_get_headdata *&------------------------------------------------------------------- --* *& *&------------------------------------------------------------------- --* * *-------------------------------------------------------------------- --* FORM frm_get_headdata. text SELECT a~matnr a~stlan b~stlnr b~bmeng b~bmein a~stlal b~stktx "INTO CORRESPONDING FIELDS OF TABLE itab_mast FROM mast AS a INNER JOIN stko AS b ON b~stlnr = a~stlnr AND b~stla l = a~stlal INTO CORRESPONDING FIELDS OF TABLE itab_mast WHERE a~werks = s_werks AND a~matnr IN s_matnr AND a~stlan = s_stlan AND b~datuv IN s_date AND b~lkenz EQ '' AND b~loekz EQ ''. LOOP AT itab_mast INTO itab_mast. SELECT SINGLE maktx INTO itab_mast-maktx FROM makt WHERE matnr = itab_mast-matnr AND spras = 1. MODIFY itab_mast . ENDLOOP. ENDFORM. "frm_get_headdata *&------------------------------------------------------------------- --* *& *&------------------------------------------------------------------- --* modify_data Form
text * *-------------------------------------------------------------------- --* FORM modify_data. * sort gt_itab by FMATNR STUFE. gt_itab[] = wa_gt_itab[]. LOOP AT gt_itab. AT NEW fmatnr. * * * * * * * * = gt_itab-fmatnr AND spras = 1. ** from mara where matnr = gt_itab-fmatnr. CLEAR: itab_ok. itab_ok-xcolor = 'C310'. itab_ok-vmatnr = gt_itab-fmatnr. SELECT SINGLE maktx INTO itab_ok-vmaktx FROM makt WHERE matnr SELECT SINGLE brgew ntgew INTO (itab_ok-brgew,itab_ok-ntgew ) * * * * INSERT itab_ok INTO gt_itab. ENDAT. ENDLOOP. delete gt_itab where STUFE ne '1'. "以后拿掉 ENDFORM. "modify_data Form ALV_DATA *&------------------------------------------------------------------- --* *& *&------------------------------------------------------------------- --* * *-------------------------------------------------------------------- --* * * *-------------------------------------------------------------------- --* FORM alv_data . text text --> <-- PERFORM f_input_fieldcat USING: text p1 p2 'VMATNR' 'VMAKTX' 'BMENG' 'BMEIN' 'STLAL' '物料号', '物料描述', '基本数量', '物料单位' , '替代 BOM' ,
* * * * * * * * * * 'STKTX' 'POSNR' 'IDNRKX' 'MAKTXX' '可选文本' , '序号', '组件料号', '组件物料描述', '计量单位', '组件数量', '项目 ID', '毛重', '净重', '重量单位', 'ROHSMS 有效期', '子件文本1', '子件文本2', '子件仓库代码', '供应标识符', '部件废品(%)', '成本核算与否', '项目类别', 'MEINS' 'MENGE' 'STVKN' 'BRGEW' 'NTGEW' 'GEWEI' 'SORTF' 'POTX1' 'POTX2' 'LGORT' 'BEIKZ' 'AUSCH' 'SANKA' 'ZXMLB' 'POTX1' '部件描述', '替代组', 'ALPGR' '策略', 'ALPST' 'ALPRF' '优先级', '使用可能性', 'EWAHR' 'ECN 更改号', 'AENNR' 'DATUV' '有效起始日期'. ws_layout-cwidth_opt = 'X'. ws_layout-zebra = 'X'. ws_layout-info_fname = 'XCOLOR'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program is_layout_lvc it_fieldcat_lvc i_default i_save i_callback_user_command = 'USER_COMMAND' = sy-repid = ws_layout = ws_fieldcat[] = 'X' = 'A' TABLES t_outtab EXCEPTIONS program_error OTHERS ENDFORM. = gt_itab[] = 1 = 2. " ALV_DATA
分享到:
收藏