⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zmmr0006.html

📁 SAPMM模块:按凭证返还入库实际处理 ABAP源码,大家请参考
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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-&gt;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-&gt;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-&gt;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 &lt;&gt; '0'.
              MESSAGE '请选择同一个供货商的凭证!' TYPE 'E'.
            ENDIF.
          ENDON.
          ON CHANGE OF WA_DATA-GRUND.
            IF L_FLAG &lt;&gt; '0'.
              MESSAGE '请选择同一个部门的凭证!' TYPE 'E'.
            ENDIF.
          ENDON.
          ON CHANGE OF WA_DATA-LGORT.
            IF L_FLAG &lt;&gt; '0'.
              MESSAGE '请选择同一个地点入库!' TYPE 'E'.
            ENDIF.
          ENDON.
          ON CHANGE OF WA_DATA-KDAUF.
            IF L_FLAG &lt;&gt; '0'.
              MESSAGE '请选择同一个销售订单的凭证!' TYPE 'E'.
            ENDIF.
          ENDON.
          ON CHANGE OF WA_DATA-KDPOS.
            IF L_FLAG &lt;&gt; '0'.
              MESSAGE '请选择同一个销售订单的凭证!' TYPE 'E'.
            ENDIF.
          ENDON.
          ON CHANGE OF WA_DATA-SOBKZ.
            IF L_FLAG &lt;&gt; '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 &lt;&gt; '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 &lt;&gt; 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-&gt;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-&gt;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 + -