当前位置:文档之家› SAP MM库存初始化以及批量扩充库位

SAP MM库存初始化以及批量扩充库位

SAP MM 库存初始化和批量扩充物料仓位 .
分类: SAP-ALL ABAP 2011-12-19 10:19 1418人阅读 评论(0) 收藏 举报
sapparametersheaderinsertpathuser
库存初始化和批量扩充物料仓位 这两个功能合在一个程序里。

SAP刚上线时这两功能很管用。



*&---------------------------------------------------------------------*
*& Report ZR_KTK_MM_0017
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZR_KTK_MM_0017.

TABLES: MKPF,RM07M,MSEG,T100,RM03M.

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: E_GROUP_OPENED,
E_KEEP(1) TYPE C,
SMALLLOG(1) TYPE C.

DATA: BEGIN OF RECORD OCCURS 0,
BLDAT LIKE MKPF-BLDAT, "创建日期
BUDAT LIKE MKPF-BUDAT, "过账日期
SOBKZ LIKE RM07M-SOBKZ, "特殊库存
WERKS LIKE RM07M-WERKS, "工厂
LGORT LIKE MSEG-LGORT, "仓码
MATNR LIKE MSEG-MATNR, "料号
* ERFMG LIKE MSEG-ERFMG, "数量
ERFMG(13) type c, "数量
ERFME LIKE MSEG-ERFME, "单位
END OF RECORD.

DATA: BEGIN OF RECORD1 OCCURS 0,
MATNR LIKE RM03M-MATNR, "料号
WERKS LIKE RM03M-WERKS, "工厂
LGORT LIKE RM03M-LGORT, "仓码
END OF RECORD1.

SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME.
****** N > A
PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N' NO-DISPLAY.
* PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'P'.
PARAMETERS CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L' NO-DISPLAY.
PARAMETERS E_GROUP(12) NO-DISPLAY. "group name of error-session
PARAMETERS: E_USER(12) DEFAULT SY-UNAME NO-DISPLAY. "user for error-session
* PARAMETERS: E_KEEP AS CHECKBOX. "' ' = delete session if finished
"'X' = keep session if finished
PARAMETERS: E_HDATE LIKE SY-DATUM NO-DISPLAY.
*SELECTION-SCREEN SKIP.
PARAMETERS: NODATA DEFAULT ' ' LOWER CASE NO-DISPLAY. "nodata
* PARAMETERS: SMALLLOG AS CHECKBOX. "' ' = log all transactions
"'X' = no transaction logging
PARAMETERS: p_qty RADIOBUTTON GROUP g1.
PARAMETERS: p_mat RADIOBUTTON GROUP g1.
PARAMETERS: FILENAME(132) LOWER CASE DEFAULT
'C:\data.xls'.
SELECTION-SCREEN END OF BLOCK BLOCK1.

*&------------------------------------------------------------------*
*& AT SELECTION-SCREEN ON VALUE-REQUEST FOR
*&------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILE

NAME = 'c:\test.xls' "default selected file
DEF_PATH = 'c:' "Default path
* MASK = ',*.txt,*.txt.'
MASK = ',*.xls,*.xls.'
MODE = '0'
TITLE = 'Select a file to open'
IMPORTING
FILENAME = FILENAME
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.

*&------------------------------------------------------------------*

START-OF-SELECTION.

IF P_QTY = 'X'.
PERFORM INITIALIZE_QTY.
ELSE.
PERFORM INITIALIZE_MAT.
ENDIF.

PERFORM CLOSE_GROUP.

END-OF-SELECTION.

FORM INITIALIZE_QTY.

DATA: FILENAME1 LIKE RLGRAP-FILENAME.
FILENAME1 = FILENAME.

TYPE-POOLS:truxs.
DATA:l_raw_data TYPE truxs_t_text_data.


CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = l_raw_data
i_filename = filename1
TABLES
i_tab_converted_data = record
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE E398(00) WITH '数据在导入内表时出错!'.
ENDIF.

LOOP AT RECORD.

perform bdc_dynpro using 'SAPMM07M' '0400'.
perform bdc_field using 'BDC_CURSOR'
'RM07M-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MKPF-BLDAT'
RECORD-BLDAT.
perform bdc_field using 'MKPF-BUDAT'
RECORD-BUDAT.
perform bdc_field using 'RM07M-BWARTWA'
'561'.
perform bdc_field using 'RM07M-WERKS'
RECORD-WERKS.
perform bdc_field using 'XFULL'
'X'.
perform bdc_field using 'RM07M-WVERS2'
'X'.
perform bdc_dynpro using 'SAPMM07M' '0421'.
perform bdc_field using 'BDC_CURSOR'
'MSEG-LGORT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'MSEG-MATNR(01)'
RECORD-MATNR.
perform bdc_field using 'MSEG-ERFMG(01)'
RECORD-ERFMG.
perform bdc_field using 'MSEG-ERFME(01)'
RECORD-ERFME.
perform bdc_field using 'MSEG-LGORT(01)'
RECORD-LGORT.
perform bdc_field using 'MSEG-WERKS(01)'
RECORD-WERKS.
perform bdc_field using 'DKAC

B-FMORE'
'X'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_transaction using 'MB1C'.

ENDLOOP.
ENDFORM.

FORM INITIALIZE_MAT.

DATA: FILENAME1 LIKE RLGRAP-FILENAME.
FILENAME1 = FILENAME.

TYPE-POOLS:truxs.
DATA:l_raw_data TYPE truxs_t_text_data.


CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = l_raw_data
i_filename = filename1
TABLES
i_tab_converted_data = record1
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE E398(00) WITH '数据在导入内表时出错!'.
ENDIF.

LOOP AT RECORD1.

perform bdc_dynpro using 'SAPMM03M' '0105'.
perform bdc_field using 'BDC_CURSOR'
'RM03M-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RM03M-MATNR'
RECORD1-MATNR.
perform bdc_field using 'RM03M-WERKS'
RECORD1-WERKS.
perform bdc_field using 'RM03M-LFLAG'
'X'.
perform bdc_dynpro using 'SAPMM03M' '0195'.
perform bdc_field using 'BDC_CURSOR'
'RM03M-LGORT(09)'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'RM03M-LGORT(09)'
RECORD1-LGORT.
perform bdc_transaction using 'MMSC'.

ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.

* call transaction using
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.
L_SUBRC = SY-SUBRC.
IF SMALLLOG <> 'X'.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA

AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
SKIP.
ENDIF.
** Erzeugen fehlermappe ************************************************
IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = E_GROUP
USER = E_USER
KEEP = E_KEEP
HOLDDATE = E_HDATE.
E_GROUP_OPENED = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE
TABLES DYNPROTAB = BDCDATA.
ENDIF.

REFRESH BDCDATA.

endform. " BDC_TRANSACTION

*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.


*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
form CLOSE_GROUP.
IF E_GROUP_OPENED = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /.
WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
ENDIF.
endform. " CLOSE_GROUP


相关主题
文本预览
相关文档 最新文档