📄 zmmr0006.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>ZMMR0006</title>
</head>
<body bgcolor="#FFFFE0">
<font size="3" face = "Arial" color="#000000"><b>Code listing for: ZMMR0006</b></font>
<br>
<font size="3" face = "Arial" color="#000000"><b>Description: 按凭证返还入库实际处理</b></font>
<hr>
<pre width="100">
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*& Report ZMMR0006</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&</font>
<font color ="#0000FF">*&---------------------------------------------------------------------*</font>
REPORT ZMMR0006 "NO STANDARD PAGE HEADING
MESSAGE-ID ZX.
TABLES:MSEG,MKPF.
TYPES:BEGIN OF T_DATA,
SEL TYPE C,
LIFNR LIKE ZPP02-LIFNR,
NAME1 LIKE LFA1-NAME1,
GRUND LIKE MSEG-GRUND,
GRTXT LIKE T157E-GRTXT,
WEMPF LIKE MSEG-WEMPF,
MBLNR LIKE ZPP02-MBLNR,
MJAHR LIKE ZPP02-MJAHR,
ZEILE LIKE ZPP02-ZEILE,
BLDAT LIKE MKPF-BLDAT,
MATNR LIKE ZPP02-MATNR,
MAKTX LIKE MAKT-MAKTX,
WERKS LIKE MSEG-WERKS,
MENGE LIKE MSEG-MENGE,
MENGE1 LIKE MSEG-MENGE,
MENGE2 LIKE MSEG-MENGE,
LGORT LIKE MSEG-LGORT,
FLAG TYPE C,
SOBKZ LIKE MSEG-SOBKZ,
KDAUF LIKE MSEG-KDAUF,
KDPOS LIKE MSEG-KDPOS,
SERNR LIKE OBJK-SERNR,
F_DATE_NUMBER TYPE I, "根据凭证日期,算出离现在的天数(YAOWEI)
END OF T_DATA.
DATA:ITAB_DATA TYPE TABLE OF T_DATA,
WA_DATA TYPE T_DATA,
s_refresh TYPE C,
go_grid TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO zalv_event_receiver.
DATA: goodsmvt_code(2),
goodsmvt_header LIKE bapi2017_gm_head_01,
goodsmvt_headret LIKE bapi2017_gm_head_ret,
materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
matdocumentyear TYPE bapi2017_gm_head_ret-doc_year,
return type BAPIRET2 OCCURS 0 WITH HEADER LINE,
goodsmvt_item LIKE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE,
goodsmvt_serialnumber like BAPI2017_GM_SERIALNUMBER occurs 0 with header line.
<font color ="#0000FF">********************************************************************</font>
<font color ="#0000FF">* SELECT-OPTIONS</font>
<font color ="#0000FF">********************************************************************</font>
SELECTION-SCREEN BEGIN OF BLOCK BLK4 WITH FRAME TITLE TEXT-003.
PARAMETER:R_FLAG1 RADIOBUTTON GROUP GRP7,
R_FLAG2 RADIOBUTTON GROUP GRP7.
SELECTION-SCREEN END OF BLOCK BLK4.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_LIFNR FOR MSEG-LIFNR.
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:
S_GRUND FOR MSEG-GRUND,
S_WEMPF FOR MSEG-WEMPF.
PARAMETER:C_SERNR AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLK2.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
SELECT-OPTIONS:
S_MATNR FOR MSEG-MATNR,
S_BLDAT FOR MKPF-BLDAT.
SELECTION-SCREEN END OF BLOCK BLK3.
INITIALIZATION.
S_BLDAT-SIGN = 'I'.
S_BLDAT-LOW = SY-DATUM - 30.
S_BLDAT-HIGH = SY-DATUM.
APPEND S_BLDAT.
<font color ="#0000FF">***************************************************************</font>
<font color ="#0000FF">* AT SELECTION-SCREEN</font>
<font color ="#0000FF">***************************************************************</font>
AT SELECTION-SCREEN.
PERFORM SUB_SELECT_DATA.
<font color ="#0000FF">***************************************************************</font>
<font color ="#0000FF">* START-OF-SELECTION</font>
<font color ="#0000FF">***************************************************************</font>
START-OF-SELECTION.
PERFORM SUB_DISPLAY_DATA.
<font color ="#0000FF">***************************************************************</font>
<font color ="#0000FF">* END-OF-SELECTION</font>
<font color ="#0000FF">***************************************************************</font>
END-OF-SELECTION.
SET PF-STATUS 'MAIN'.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SELA'.
LOOP AT ITAB_DATA INTO WA_DATA.
WA_DATA-SEL = 'X'.
MODIFY ITAB_DATA FROM WA_DATA.
ENDLOOP.
CALL METHOD event_receiver->show_grid
EXPORTING
grid = go_grid
CHANGING
output_table = ITAB_DATA[].
WHEN 'CSEAL'.
LOOP AT ITAB_DATA INTO WA_DATA.
WA_DATA-SEL = ''.
MODIFY ITAB_DATA FROM WA_DATA.
ENDLOOP.
CALL METHOD event_receiver->show_grid
EXPORTING
grid = go_grid
CHANGING
output_table = ITAB_DATA[].
WHEN 'SAVE'.
DATA:L_FLAG TYPE C,
L_MENGE TYPE MENGE_D,
L_HTYPE(4) TYPE C.
CALL METHOD go_grid->check_changed_data
IMPORTING
e_valid = s_refresh.
CLEAR:goodsmvt_item[],goodsmvt_serialnumber[].
L_FLAG = '0'.
LOOP AT ITAB_DATA INTO WA_DATA WHERE SEL = 'X'.
ON CHANGE OF WA_DATA-LIFNR.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个供货商的凭证!' TYPE 'E'.
ENDIF.
ENDON.
ON CHANGE OF WA_DATA-GRUND.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个部门的凭证!' TYPE 'E'.
ENDIF.
ENDON.
ON CHANGE OF WA_DATA-LGORT.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个地点入库!' TYPE 'E'.
ENDIF.
ENDON.
ON CHANGE OF WA_DATA-KDAUF.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个销售订单的凭证!' TYPE 'E'.
ENDIF.
ENDON.
ON CHANGE OF WA_DATA-KDPOS.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个销售订单的凭证!' TYPE 'E'.
ENDIF.
ENDON.
ON CHANGE OF WA_DATA-SOBKZ.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个特殊库存标记的凭证!' TYPE 'E'.
ENDIF.
ENDON.
SELECT SINGLE WERKS CHARG LGORT INTO (goodsmvt_item-PLANT,
goodsmvt_item-batch,goodsmvt_item-STGE_LOC) FROM MSEG
WHERE MBLNR = WA_DATA-MBLNR
AND MJAHR = WA_DATA-MJAHR AND ZEILE = WA_DATA-ZEILE.
IF R_FLAG1 = 'X'.
goodsmvt_item-STGE_LOC = WA_DATA-LGORT.
goodsmvt_item-MOVE_TYPE = 'Z47'.
goodsmvt_item-VENDOR = WA_DATA-LIFNR.
ELSE.
goodsmvt_item-MOVE_TYPE = 'Z33'.
goodsmvt_item-GR_RCPT = WA_DATA-WEMPF.
goodsmvt_item-MOVE_REAS = WA_DATA-GRUND.
goodsmvt_item-MOVE_STLOC = WA_DATA-LGORT.
ENDIF.
goodsmvt_item-MATERIAL = WA_DATA-MATNR.
goodsmvt_item-REF_DOC_YR = WA_DATA-MJAHR.
goodsmvt_item-REF_DOC = WA_DATA-MBLNR.
goodsmvt_item-REF_DOC_IT = WA_DATA-ZEILE.
IF C_SERNR = 'X' AND R_FLAG2 = 'X'.
ON CHANGE OF WA_DATA-MATNR.
IF L_FLAG <> '0'.
MESSAGE '请选择同一个物料号的凭证!' TYPE 'E'.
ENDIF.
ENDON.
goodsmvt_item-SPEC_STOCK = WA_DATA-SOBKZ.
goodsmvt_item-VAL_SALES_ORD = WA_DATA-KDAUF.
goodsmvt_item-VAL_S_ORD_ITEM = WA_DATA-KDPOS.
goodsmvt_item-ENTRY_QNT = goodsmvt_item-ENTRY_QNT + 1.
goodsmvt_serialnumber-MATDOC_ITM = '0001'.
goodsmvt_serialnumber-SERIALNO = WA_DATA-SERNR.
APPEND goodsmvt_serialnumber.
ELSE.
goodsmvt_item-ENTRY_QNT = WA_DATA-MENGE2.
APPEND goodsmvt_item.
ENDIF.
L_FLAG = '1'.
ENDLOOP.
IF C_SERNR = 'X' AND R_FLAG2 = 'X'.
APPEND goodsmvt_item.
ENDIF.
IF L_FLAG = 1.
goodsmvt_code = '04'.
goodsmvt_header-PSTNG_DATE = SY-DATUM.
goodsmvt_header-DOC_DATE = SY-DATUM.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = goodsmvt_code
IMPORTING
goodsmvt_headret = goodsmvt_headret
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = goodsmvt_item
goodsmvt_serialnumber = goodsmvt_serialnumber
return = return.
READ TABLE return WITH KEY type = 'E'.
if sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
MESSAGE return-message TYPE 'E'.
ENDIF.
PERFORM SUB_SELECT_DATA.
CALL METHOD event_receiver->show_grid
EXPORTING
grid = go_grid
CHANGING
output_table = ITAB_DATA[].
MESSAGE S007 WITH '凭证号' MATERIALDOCUMENT '已保存!'.
LEAVE TO SCREEN 0.
ENDIF.
WHEN 'SHOW'.
CALL METHOD go_grid->check_changed_data
IMPORTING
e_valid = s_refresh.
CLEAR WA_DATA.
READ TABLE ITAB_DATA INTO WA_DATA WITH KEY SEL = 'X'.
SET PARAMETER ID 'MBN' FIELD WA_DATA-MBLNR.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
<font color ="#0000FF">*&-------------------------------------------------------------</font>
<font color ="#0000FF">*& Form SUB_SELECT_DATA</font>
<font color ="#0000FF">*&-------------------------------------------------------------</font>
FORM SUB_SELECT_DATA.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -