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

📄 zmmr0006.html

📁 SAPMM模块:按凭证返还入库实际处理 ABAP源码,大家请参考
💻 HTML
📖 第 1 页 / 共 2 页
字号:
  DATA:L_MENGE TYPE MENGE_D.
  REFRESH:ITAB_DATA.
  IF R_FLAG1 = 'X'.
    AUTHORITY-CHECK OBJECT 'M_MSEG_BMB' ID 'BWART' FIELD 'Z47'
                                        ID 'ACTVT' FIELD '*'.
    IF SY-SUBRC NE 0.
      MESSAGE '对Z47的移动类型没有操作权限!' TYPE 'E'.
    ENDIF.
  ELSE.
    AUTHORITY-CHECK OBJECT 'M_MSEG_BMB' ID 'BWART' FIELD 'Z33'
                                        ID 'ACTVT' FIELD '*'.
    IF SY-SUBRC NE 0.
      MESSAGE '对Z33的移动类型没有操作权限!' TYPE 'E'.
    ENDIF.
  ENDIF.
  IF R_FLAG1 = 'X'.
    SELECT A~MBLNR A~MJAHR A~ZEILE A~MATNR D~MAKTX A~LIFNR C~NAME1 A~WERKS A~MENGE E~MENGE AS MENGE2
      B~BLDAT
      INTO CORRESPONDING FIELDS OF TABLE ITAB_DATA
      FROM MSEG AS A
        JOIN MKPF AS B ON A~MBLNR = B~MBLNR AND A~MJAHR = B~MJAHR
        JOIN LFA1 AS C ON A~LIFNR = C~LIFNR
        JOIN MAKT AS D ON A~MATNR = D~MATNR AND D~SPRAS = '1'
        JOIN ZMM03 AS E ON A~MBLNR = E~MBLNR AND A~MJAHR = E~MJAHR
          AND A~ZEILE = E~ZEILE AND E~STATU = 'A'
      WHERE A~LIFNR IN S_LIFNR AND A~BWART = 'Z45'
        AND A~MATNR IN S_MATNR AND A~LGORT <> ''
        AND E~UDATE IN S_BLDAT ORDER BY A~LIFNR A~MATNR A~MBLNR.
    LOOP AT ITAB_DATA INTO WA_DATA.
      SELECT SUM( MENGE ) INTO L_MENGE FROM ZMM03
        WHERE MBLNR = WA_DATA-MBLNR AND MJAHR = WA_DATA-MJAHR
          AND ZEILE = WA_DATA-ZEILE AND STATU = 'C'.
        WA_DATA-LGORT = '1300'.
        WA_DATA-MENGE1 = L_MENGE.
      MODIFY ITAB_DATA FROM WA_DATA.
    ENDLOOP.
  ELSEIF C_SERNR = 'X'.
    SELECT A~MBLNR A~MJAHR A~ZEILE A~MATNR D~MAKTX A~GRUND A~WEMPF A~WERKS E~SERNR
      B~BLDAT A~SOBKZ A~KDAUF A~KDPOS
      INTO CORRESPONDING FIELDS OF TABLE ITAB_DATA
      FROM MSEG AS A
        JOIN MKPF AS B ON A~MBLNR = B~MBLNR AND A~MJAHR = B~MJAHR
        JOIN MAKT AS D ON A~MATNR = D~MATNR AND D~SPRAS = '1'
        JOIN ZMM03 AS E ON A~MBLNR = E~MBLNR AND A~MJAHR = E~MJAHR
          AND A~ZEILE = E~ZEILE AND E~STATU = 'A'
      WHERE A~LIFNR IN S_LIFNR AND A~BWART = 'Z31'
        AND A~MATNR IN S_MATNR AND A~XAUTO = 'X'
        AND E~UDATE IN S_BLDAT ORDER BY A~GRUND A~MATNR A~MBLNR.
    LOOP AT ITAB_DATA INTO WA_DATA.
      SELECT SINGLE GRTXT INTO WA_DATA-GRTXT
        FROM T157E WHERE BWART = 'Z31' AND GRUND = WA_DATA-GRUND AND SPRAS = '1'.
      WA_DATA-LGORT = '1300'.
      MODIFY ITAB_DATA FROM WA_DATA.
    ENDLOOP.
  ELSE.
    SELECT A~MBLNR A~MJAHR A~ZEILE A~MATNR D~MAKTX A~GRUND A~WEMPF A~WERKS A~MENGE E~MENGE AS MENGE2
      B~BLDAT
      INTO CORRESPONDING FIELDS OF TABLE ITAB_DATA
      FROM MSEG AS A
        JOIN MKPF AS B ON A~MBLNR = B~MBLNR AND A~MJAHR = B~MJAHR
        JOIN MAKT AS D ON A~MATNR = D~MATNR AND D~SPRAS = '1'
        JOIN ZMM03 AS E ON A~MBLNR = E~MBLNR AND A~MJAHR = E~MJAHR
          AND A~ZEILE = E~ZEILE AND E~STATU = 'A'
      WHERE A~LIFNR IN S_LIFNR AND A~BWART = 'Z31'
        AND A~MATNR IN S_MATNR AND A~XAUTO = 'X'
        AND E~UDATE IN S_BLDAT
        AND A~MBLNR NOT IN
            ( SELECT MBLNR FROM SER03 WHERE MBLNR = A~MBLNR AND ZEILE = A~ZEILE )
            ORDER BY A~GRUND A~MATNR A~MBLNR.
    LOOP AT ITAB_DATA INTO WA_DATA.
      SELECT SUM( MENGE ) INTO L_MENGE FROM ZMM03
        WHERE MBLNR = WA_DATA-MBLNR AND MJAHR = WA_DATA-MJAHR
          AND ZEILE = WA_DATA-ZEILE AND STATU = 'C'.
      SELECT SINGLE GRTXT INTO WA_DATA-GRTXT
        FROM T157E WHERE BWART = 'Z31' AND GRUND = WA_DATA-GRUND AND SPRAS = '1'.
      WA_DATA-LGORT = '1300'.
      WA_DATA-MENGE1 = L_MENGE.
      MODIFY ITAB_DATA FROM WA_DATA.
    ENDLOOP.
  ENDIF.

  DELETE ITAB_DATA WHERE FLAG = '1'.

<font color ="#0000FF">*根据凭证日期,算出离现在的天数</font>
      CLEAR WA_DATA.
  LOOP AT ITAB_DATA INTO WA_DATA.
    WA_DATA-F_DATE_NUMBER = SY-DATUM - WA_DATA-BLDAT.
     MODIFY ITAB_DATA FROM WA_DATA.
    CLEAR WA_DATA.
    ENDLOOP.
<font color ="#0000FF">*  IF ITAB_DATA IS INITIAL.</font>
<font color ="#0000FF">*    MESSAGE '满足条件的数据不存在!' TYPE 'E'.</font>
<font color ="#0000FF">*  ENDIF.</font>
ENDFORM.                    "SUB_SELECT_DATA

<font color ="#0000FF">*&-------------------------------------------------------------</font>
<font color ="#0000FF">*&      Form   SUB_DISPLAY_DATA</font>
<font color ="#0000FF">*&-------------------------------------------------------------</font>
FORM SUB_DISPLAY_DATA.
  type-pools slis.
  data: allfields type slis_t_fieldcat_alv.
  data: wa_allfields type lvc_s_fcat.
<font color ="#0000FF">*  myrepid = sy-repid.</font>
  CREATE OBJECT event_receiver.
  CREATE OBJECT go_grid EXPORTING i_parent = cl_gui_custom_container=&gt;screen0.
  clear wa_allfields.
    wa_allfields-fieldname  = 'SEL'."必须是大写
    wa_allfields-scrtext_l = '选择'.
    wa_allfields-checkbox = 'X'.
    wa_allfields-edit = 'X'.
    wa_allfields-outputlen = 4.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  IF R_FLAG1 = 'X'.
    clear wa_allfields.
      wa_allfields-fieldname  = 'LIFNR'.
      wa_allfields-scrtext_l = '供货商号'.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'NAME1'.
      wa_allfields-outputlen = 20.
      wa_allfields-scrtext_l = '供货商名称'.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  ELSE.
    clear wa_allfields.
      wa_allfields-fieldname  = 'GRTXT'.
      wa_allfields-outputlen = 20.
      wa_allfields-scrtext_l = '部门名称'.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'WEMPF'.
      wa_allfields-scrtext_l = '借用人'.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  ENDIF.
  clear wa_allfields.
    wa_allfields-fieldname  = 'MBLNR'.
    wa_allfields-scrtext_l = '物料凭证号'.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
      clear wa_allfields.
    wa_allfields-fieldname  = 'WERKS'.
    wa_allfields-scrtext_l = '工厂'.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
    wa_allfields-fieldname  = 'MJAHR'.
    wa_allfields-scrtext_l = '凭证年'.
    wa_allfields-outputlen = 6.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
    wa_allfields-fieldname  = 'ZEILE'.
    wa_allfields-scrtext_l = '行号'.
    wa_allfields-outputlen = 4.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
    wa_allfields-fieldname  = 'BLDAT'.
    wa_allfields-scrtext_l = '借用/送修 日期'.
    wa_allfields-outputlen = 10.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
      wa_allfields-fieldname  = 'F_DATE_NUMBER'.
    wa_allfields-scrtext_l = '借用/送修 天数'.
    wa_allfields-outputlen = 10.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
    wa_allfields-fieldname  = 'MATNR'.
    wa_allfields-scrtext_l = '物料号'.
    wa_allfields-outputlen = 18.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  clear wa_allfields.
    wa_allfields-fieldname  = 'MAKTX'.
    wa_allfields-scrtext_l = '物料描述'.
    wa_allfields-outputlen = 20.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  IF C_SERNR = 'X' AND R_FLAG2 = 'X'.
    clear wa_allfields.
      wa_allfields-fieldname  = 'SERNR'.
      wa_allfields-scrtext_l = '序列号'.
      wa_allfields-outputlen = 20.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'SOBKZ'.
      wa_allfields-scrtext_l = '特殊库存'.
      wa_allfields-outputlen = 8.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'KDAUF'.
      wa_allfields-scrtext_l = '销售订单'.
      wa_allfields-outputlen = 10.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'KDPOS'.
      wa_allfields-scrtext_l = '行项目'.
      wa_allfields-outputlen = 6.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  ELSE.
    clear wa_allfields.
      wa_allfields-fieldname  = 'MENGE'.
      wa_allfields-scrtext_l = '凭证数量'.
      wa_allfields-outputlen = 8.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'MENGE1'.
      wa_allfields-scrtext_l = '入库数量'.
      wa_allfields-outputlen = 8.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    clear wa_allfields.
      wa_allfields-fieldname  = 'MENGE2'.
      wa_allfields-scrtext_l = '计划入库'.
      wa_allfields-outputlen = 8.
      APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
  ENDIF.
  clear wa_allfields.
    wa_allfields-fieldname  = 'LGORT'.
    wa_allfields-scrtext_l = '库存地点'.
    wa_allfields-edit = 'X'.
    wa_allfields-outputlen = 8.
    APPEND wa_allfields TO event_receiver-&gt;gt_fieldcat.
    CALL METHOD event_receiver-&gt;show_grid
      EXPORTING
        grid         = go_grid
      CHANGING
        output_table = ITAB_DATA[].
  WRITE:/.

ENDFORM.                    "SUB_DISPLAY_DATA

<font color ="#0000FF">*Text elements</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">* 001 供货商维修</font>
<font color ="#0000FF">* 002 借用归还</font>
<font color ="#0000FF">* 003 选择</font>
<font color ="#0000FF">* 004 查询条件</font>


<font color ="#0000FF">*Selection texts</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">* C_SERNR         按序列号处理</font>
<font color ="#0000FF">* R_FLAG1         供货商维修入库</font>
<font color ="#0000FF">* R_FLAG2         借用归还入库</font>
<font color ="#0000FF">* S_BLDAT         借用/送修 日期</font>
<font color ="#0000FF">* S_GRUND         借用部门</font>
<font color ="#0000FF">* S_LIFNR         供货商</font>
<font color ="#0000FF">* S_MATNR         物料号</font>
<font color ="#0000FF">* S_WEMPF         借用人</font>


<font color ="#0000FF">*Messages</font>
<font color ="#0000FF">*----------------------------------------------------------</font>
<font color ="#0000FF">*</font>
<font color ="#0000FF">* Message class: Hard coded</font>
<font color ="#0000FF">*   请选择同一个供货商的凭证!</font>
<font color ="#0000FF">*</font>
<font color ="#0000FF">* Message class: ZX</font>
<font color ="#0000FF">*007   & & & &</font>
<font color ="#0000FF">*YPE</font>
</pre>
<hr>
<font size="2" face = "Sans Serif">Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 700
</font>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -