SAP批量维护MRP视图

ZBCOR_006—物料会计视图周期价格维护
ZBFID_006—固定资产批量修改成本中心
ZCMM021—海关要素批量维护
*&---------------------------------------------------------------------*
*& Report ZBCOR_006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zbmmr_051 LINE-SIZE 500.

TYPE-POOLS : truxs,slis.

DATA: t_bdcdata TYPE STANDARD TABLE OF bdcdata.
DATA: w_bdcdata TYPE bdcdata.

DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: g_message TYPE char200.

TYPES:BEGIN OF ty_input,
seqno TYPE i,
matnr TYPE rmmg1-matnr ,"物料号
werks TYPE rmmg1-werks,"工厂
bstmi TYPE string,"最小批量大小
bstrf TYPE string,"舍入值
plifz TYPE string,"计划交货时间
END OF ty_input.

DATA:t_input TYPE STANDARD TABLE OF ty_input WITH HEADER LINE,
w_input TYPE ty_input.


TYPES:BEGIN OF ty_log,
seqno TYPE i,
msgtyp TYPE c,
message TYPE char200,
matnr TYPE marc-matnr,
END OF ty_log.

DATA:t_log TYPE STANDARD TABLE OF ty_log WITH HEADER LINE,
w_log TYPE ty_log.

PARAMETERS:p_impfil LIKE rlgrap-filename OBLIGATORY.
PARAMETERS p_mode TYPE c DEFAULT 'N'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_impfil.

CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
mask = '*.txt'
mode = 'O' "S为SAVE,O为OPEN
title = '选择文件'
IMPORTING
filename = p_impfil
* PATH =
* FILE =
EXCEPTIONS
selection_cancel = 1
selection_error = 2
OTHERS = 3
.
CASE sy-subrc.
WHEN 1.
MESSAGE 'Cancel' TYPE 'S' DISPLAY LIKE 'E'.
WHEN 2.
MESSAGE 'Cancel' TYPE 'S' DISPLAY LIKE 'E'.
WHEN OTHERS.
ENDCASE.


START-OF-SELECTION.
PERFORM f_upload_data USING p_impfil .


PERFORM f_modify_material.

* LOOP AT t_input INTO w_input.

* PERFORM f_modify_material USING w_input-seqno
* w_input-matnr
* w_input-werks
* w_input-bstmi
* w_input-bstrf
* w_input-plifz.
*
* ENDLOOP.

END-OF-SELECTION.

LOOP AT t_log INTO w_log.

WRITE: / w_log-seqno,w_log-msgtyp,w_log-message,w_log-matnr.

ENDLOOP.

*&---------------------------------------------------------------------*
*& Form f_modify_material
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SEQNO text
*

-->P_MATNR text
* -->P_WERKS text
* -->P_BSTMI text
* -->P_BSTRF text
* -->P_PLIFZ text
*----------------------------------------------------------------------*
FORM f_modify_material.
* USING p_seqno
* p_matnr
* p_werks
* p_bstmi
* p_bstrf
* p_plifz.


DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE.

DATA: l_num TYPE i,
l_char(2) TYPE c,
l_string TYPE string.

DATA: l_value(11) TYPE c,
l_mein(5) TYPE c.

DATA: l_tabix TYPE sy-tabix.

DATA: g_message TYPE string.

LOOP AT t_input.

l_tabix = sy-tabix.

CLEAR t_bdcdata[].
CLEAR lt_bdcdata[].
CLEAR :w_bdcdata.
CLEAR :messtab, messtab[].
PERFORM f_bdc_data USING : 'SAPLMGMM' '0060' 'X' '' '',
'' '' '' 'BDC_CURSOR' 'RMMG1-MATNR',
'' '' '' 'BDC_OKCODE' '=ENTR',
'' '' '' 'RMMG1-MATNR' t_input-matnr.
* 'SAPLMGMM' '0070' 'X' '' '',
* '' '' '' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(12)',
* '' '' '' 'BDC_OKCODE' '=SCHL',
* '' '' '' 'MSICHTAUSW-KZSEL(11)' 'X',
* '' '' '' 'MSICHTAUSW-KZSEL(12)' 'X',



PERFORM f_bdc_data USING : 'SAPLMGMM' '0070' 'X' '' '',
'' '' '' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(12)',
'' '' '' 'BDC_OKCODE' '=SCHL'.

"MRP视图位置

CALL FUNCTION 'MATERIAL_BTCI_SELECTION_NEW'
EXPORTING
material = t_input-matnr
materialart = 'Z001'
selection = 'D'
tcode = 'MM02'
* IMPORTING
* SELSTATUS =
* SELSTATUS_IN =
TABLES
btci_d0070 = lt_bdcdata.


LOOP AT lt_bdcdata WHERE fval = 'X'.
APPEND lt_bdcdata TO t_bdcdata.
EXIT.
ENDLOOP.

PERFORM f_bdc_data USING : 'SAPLMGMM' '0080' 'X' '' '',
'' '' '' 'BDC_CURSOR' 'RMMG1-WERKS',
'' '' '' 'BDC_OKCODE' '=ENTR',
'' '' '' 'RMMG1-WERKS' t_input-werks,
'SAPLMGMM' '4000' 'X' '' '',
'' '' '' 'BDC_OKCODE' '=SP13',
* '' '' '' 'BDC_CURSOR' 'SAPLMGD1 2483SUB4',
'' '' '' 'BDC_CURSOR' 'MARC-BSTRF',
'' '' '' 'MARC-BSTMI' t_input-bstmi,
'' '' '' 'MARC-BSTRF' t_input-bstrf,

'SAPLMGMM' '4000' 'X' '' '',
'' '' '' 'BDC_OKCODE' '=BU',
'' '' '' 'BDC_CURSOR' 'MARC-PLIFZ',
'' '' '' 'MARC-PLIFZ' t_input-plifz .

CALL TRANSACTION 'MM02' USING t_bdcdata
MODE p_mode
MESSAGES INTO messtab.

LOOP AT messtab WHERE msgtyp = 'A' OR msgtyp = 'E'.
EXIT.
ENDLOOP.
LOOP AT messtab.
CLEAR g_message.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = g_message.
ENDLOOP.
IF sy-subrc = 0.
CLEAR w_log.
w_log-seqno = t_input-seqno.
w_log-msgtyp = messtab-msgtyp.
w_log-message = g_message.
w_log-matnr = t_input-matnr.
APPEND w_log TO t_log.

ELSE.

CLEAR w_log.
w_log-seqno = t_input-seqno.
w_log-msgtyp = 'S'.
w_log-message = 'SUCCESS'.
w_log-matnr = t_input-matnr.
APPEND w_log TO t_log.
ENDIF.
ENDLOOP.
ENDFORM. "f_modify_material

*&---------------------------------------------------------------------*
*& Form F_BDC_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0383 text
* -->P_0384 text
* -->P_0385 text
* -->P_0386 text
* -->P_0387 text
*----------------------------------------------------------------------*
FORM f_bdc_data USING p_program
p_dynpro
p_dynbegin
p_fnam
p_fval.
CLEAR w_bdcdata.


w_bdcdata-program = p_program.
w_bdcdata-dynpro = p_dynpro.
w_bdcdata-dynbegin = p_dynbegin.
w_bdcdata-fnam = p_fnam.
w_bdcdata-fval = p_fval.

APPEND w_bdcdata TO t_bdcdata.


ENDFORM. " F_BDC_DATA
*&---------------------------------------------------------------------*
*& Form F_UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_IMPFIL text
*----------------------------------------------------------------------*
FORM f_upload_data USING p_p_impfil.
DATA: l_name TYPE string.
l_name = p_impfil.
CLEAR t_input.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_name
filetype = 'ASC'
has_field_separator = 'X'
* HEADER_LENGTH = 0

read_by_line = 'X'
* DAT_MODE = ' '
codepage = '8400'
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = t_input
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " F_UPLOAD_DATA

相关文档
最新文档