检验批过账冲销函数.docx

上传人:b****2 文档编号:2618594 上传时间:2023-05-04 格式:DOCX 页数:21 大小:21.17KB
下载 相关 举报
检验批过账冲销函数.docx_第1页
第1页 / 共21页
检验批过账冲销函数.docx_第2页
第2页 / 共21页
检验批过账冲销函数.docx_第3页
第3页 / 共21页
检验批过账冲销函数.docx_第4页
第4页 / 共21页
检验批过账冲销函数.docx_第5页
第5页 / 共21页
检验批过账冲销函数.docx_第6页
第6页 / 共21页
检验批过账冲销函数.docx_第7页
第7页 / 共21页
检验批过账冲销函数.docx_第8页
第8页 / 共21页
检验批过账冲销函数.docx_第9页
第9页 / 共21页
检验批过账冲销函数.docx_第10页
第10页 / 共21页
检验批过账冲销函数.docx_第11页
第11页 / 共21页
检验批过账冲销函数.docx_第12页
第12页 / 共21页
检验批过账冲销函数.docx_第13页
第13页 / 共21页
检验批过账冲销函数.docx_第14页
第14页 / 共21页
检验批过账冲销函数.docx_第15页
第15页 / 共21页
检验批过账冲销函数.docx_第16页
第16页 / 共21页
检验批过账冲销函数.docx_第17页
第17页 / 共21页
检验批过账冲销函数.docx_第18页
第18页 / 共21页
检验批过账冲销函数.docx_第19页
第19页 / 共21页
检验批过账冲销函数.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

检验批过账冲销函数.docx

《检验批过账冲销函数.docx》由会员分享,可在线阅读,更多相关《检验批过账冲销函数.docx(21页珍藏版)》请在冰点文库上搜索。

检验批过账冲销函数.docx

检验批过账冲销函数

 FUNCTION ZRFC.

*"----------------------------------------------------------------------

*"*"Local interface:

*"  IMPORTING

*"     VALUE(PI_PRUEFLOS) TYPE  QALS-PRUEFLOS

*"  EXPORTING

*"     VALUE(PO_TYPE) TYPE  CHAR1

*"     VALUE(PO_MESS) TYPE  BAPI_MSG

*"----------------------------------------------------------------------

   DATA prueflos TYPE qals-prueflos.

   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

     EXPORTING

       input  = pi_prueflos

     IMPORTING

       output = prueflos.

   CALL FUNCTION 'ENQUEUE_EQQALS1'

     EXPORTING

       prueflos       = prueflos

     EXCEPTIONS

       foreign_lock   = 1

       system_failure = 2

       OTHERS         = 3.

  CLEAR g_qals.

   CALL FUNCTION 'QPSE_LOT_READ'

     EXPORTING

       i_prueflos  = prueflos

       i_reset_lot = 'X'

     IMPORTING

       e_qals      = g_qals

     EXCEPTIONS

       no_lot      = 1.

   IF sy-subrc = 0.

     PERFORM check_lot USING g_qals

                           g_subrc.

     IF NOT g_subrc IS INITIAL.

       CASE g_subrc.

         WHEN 256.

           g_msgv1 = 'Lot & does not refer to a material doc'.

         WHEN 128.

           g_msgv1 = 'Material & is serialized'.

           REPLACE '&' WITH g_qals-matnr INTO g_msgv1.

         WHEN  64.

           g_msgv1 = 'Lot & is not stock relevant'.

         WHEN  32.

           g_msgv1 = 'Lot &:

 No stock transferred'.

         WHEN  16.

           g_msgv1 = 'Lot & is cancelled'.

         WHEN   8.

           g_msgv1 = 'Lot & is archived'.

         WHEN   4.

           g_msgv1 = 'Lot & is blocked'.

         WHEN   2.

           g_msgv1 = 'Lot & is HU managed'.

       ENDCASE.

       REPLACE '&' WITH prueflos INTO g_msgv1.

       po_type = 'E'.

       po_mess = g_msgv1.

     ENDIF.

   ELSE.

     po_type = 'E'.

     po_mess = '检验批不存在'.

   ENDIF.

   IF po_mess IS INITIAL.

     CLEAR g_qamb_tab[].

     SELECT * FROM qamb INTO TABLE g_qamb_tab

       WHERE prueflos =  g_qals-prueflos

         AND typ   = '3'.

     IF sy-subrc <> 0.

       po_type = 'E'.

       po_mess = '检验批尚未过账'.

     ELSE.

       CLEAR  g_mkpf_tab[].

       PERFORM read_mkpf USING g_qamb_tab

                        g_mkpf_tab

                        g_subrc.

      CLEAR g_mseg_tab[].

       PERFORM read_mseg USING g_mkpf_tab

                      g_mseg_tab

                      g_subrc.

       PERFORM check_mseg USING g_mseg_tab

                        g_qamb_tab

                        g_subrc.

       PERFORM create_goods_movement USING g_qals

                                   g_mseg_tab

                                   g_subrc

                                   po_mess.

       IF po_mess IS INITIAL.

         PERFORM post_goods_movement.

         PERFORM post_data USING g_qals

                                 g_qals_leiste

                                 g_qamb_tab

                                 g_qamb_vb_tab

                                 g_subrc .

         IF NOT g_subrc IS INITIAL.

           po_mess = 'E'.

           MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno

            INTO po_mess

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         ELSE.

          COMMIT WORK AND WAIT.

           po_type = 'S'.

           po_mess = '冲销成功'.

         ENDIF.

       ELSE.

         po_type = 'E'.

       ENDIF.

     ENDIF.

   ENDIF.

 ENDFUNCTION.

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

*&      Form  CHECK_LOT

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

*       text

*----------------------------------------------------------------------*

*      -->P_QALS     text

*      -->P_SUBRC    text

*----------------------------------------------------------------------*

 FORM check_lot USING p_qals  LIKE qals

                     p_subrc LIKE sy-subrc.

   DATA:

     l_stat      LIKE jstat,

     l_stat_tab  LIKE jstat OCCURS 0 WITH HEADER LINE.

   p_subrc = 256.

*/No reference to material document

   IF p_qals-zeile IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 128.

   ENDIF.

*/Serialized Material

   IF NOT p_qals-sernp IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 64.

   ENDIF.

*/BERF

   CALL FUNCTION 'STATUS_CHECK'

     EXPORTING

       objnr             = p_qals-objnr

       status            = 'I0203'

     EXCEPTIONS

       status_not_active = 2.

   IF NOT sy-subrc IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 32.

   ENDIF.

*/BTEI & BEND

   CLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.

   l_stat-stat = 'I0219'. APPEND l_stat TO l_stat_tab. "BTEI

   l_stat-stat = 'I0220'. APPEND l_stat TO l_stat_tab. "BEND

   CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'

     EXPORTING

       objnr        = p_qals-objnr

     TABLES

       status_check = l_stat_tab.

   IF l_stat_tab[] IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 16.

   ENDIF.

*/LSTO & LSTV

   CLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.

   l_stat-stat = 'I0224'. APPEND l_stat TO l_stat_tab. "LSTO

   l_stat-stat = 'I0232'. APPEND l_stat TO l_stat_tab. "LSTV

   CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'

     EXPORTING

       objnr        = p_qals-objnr

     TABLES

       status_check = l_stat_tab.

   IF NOT l_stat_tab[] IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 8.

   ENDIF.

*/ARSP & ARCH & REO1 & REO2 & REO3

   CLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.

   l_stat-stat = 'I0225'. APPEND l_stat TO l_stat_tab. "ARSP

   l_stat-stat = 'I0226'. APPEND l_stat TO l_stat_tab. "ARCH

   l_stat-stat = 'I0227'. APPEND l_stat TO l_stat_tab.      "REO3

   l_stat-stat = 'I0228'. APPEND l_stat TO l_stat_tab.      "REO2

   l_stat-stat = 'I0229'. APPEND l_stat TO l_stat_tab.      "REO1

   CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'

     EXPORTING

       objnr        = p_qals-objnr

     TABLES

       status_check = l_stat_tab.

   IF NOT l_stat_tab[] IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 4.

   ENDIF.

*/SPER

   CALL FUNCTION 'STATUS_CHECK'

     EXPORTING

       objnr             = p_qals-objnr

       status            = 'I0043'

     EXCEPTIONS

       status_not_active = 2.

   IF sy-subrc IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 2.

   ENDIF.

*/HUM

   CALL FUNCTION 'STATUS_CHECK'

     EXPORTING

       objnr             = p_qals-objnr

       status            = 'I0443'

     EXCEPTIONS

       status_not_active = 2.

   IF sy-subrc IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 0.

   ENDIF.

 ENDFORM.                               " CHECK_LOT

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

*&      Form  READ_MKPF

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

*       text

*----------------------------------------------------------------------*

*      -->P_QAMB_TAB text

*      -->P_MKPF_TAB text

*      -->P_SUBRC    text

*----------------------------------------------------------------------*

 FORM read_mkpf USING p_qamb_tab TYPE qambtab

                     p_mkpf_tab TYPE t_mkpf_tab

                     p_subrc    LIKE sy-subrc.

   DATA:

     BEGIN OF l_mkpf_key_tab OCCURS 0,

       mblnr LIKE mkpf-mblnr,

       mjahr LIKE mkpf-mjahr,

     END   OF l_mkpf_key_tab.

   DATA:

     l_qamb   LIKE qamb,

     l_mkpf   LIKE mkpf,

     l_trtyp  LIKE t158-trtyp VALUE 'A',

     l_vgart  LIKE t158-vgart VALUE 'WQ',

     l_xexit  LIKE qm00-qkz.

   p_subrc = 4.

   LOOP AT p_qamb_tab INTO l_qamb.

     l_mkpf_key_tab-mblnr = l_qamb-mblnr.

     l_mkpf_key_tab-mjahr = l_qamb-mjahr.

     COLLECT l_mkpf_key_tab.

   ENDLOOP.

   LOOP AT l_mkpf_key_tab.

     CALL FUNCTION 'ENQUEUE_EMMKPF'

       EXPORTING

         mblnr          = l_mkpf_key_tab-mblnr

         mjahr          = l_mkpf_key_tab-mjahr

       EXCEPTIONS

         foreign_lock   = 1

         system_failure = 2

         OTHERS         = 3.

     IF NOT sy-subrc IS INITIAL.

       l_xexit = 'X'.

       EXIT.

     ENDIF.

     CLEAR:

 l_mkpf.

     CALL FUNCTION 'MB_READ_MATERIAL_HEADER'

       EXPORTING

         mblnr         = l_mkpf_key_tab-mblnr

         mjahr         = l_mkpf_key_tab-mjahr

         trtyp         = l_trtyp

         vgart         = l_vgart

       IMPORTING

         kopf          = l_mkpf

       EXCEPTIONS

         error_message = 1.

     IF NOT sy-subrc IS INITIAL.

       l_xexit = 'X'.

       EXIT.

     ELSE.

       APPEND l_mkpf TO p_mkpf_tab.

     ENDIF.

   ENDLOOP.

   IF NOT l_xexit IS INITIAL.

     EXIT.

   ELSE.

     p_subrc = 0.

   ENDIF.

 ENDFORM.                               " READ_MKPF

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

*&      Form  READ_MSEG

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

*       text

*----------------------------------------------------------------------*

*      -->P_MKPF_TAB text

*      -->P_MSEG_TAB text

*      -->P_SUBRC    text

*----------------------------------------------------------------------*

 FORM read_mseg USING p_mkpf_tab TYPE t_mkpf_tab

                     p_mseg_tab TYPE t_mseg_tab

                     p_subrc    LIKE sy-subrc.

   DATA:

     l_mkpf     LIKE mkpf,

     l_mseg_tab LIKE mseg OCCURS 0 WITH HEADER LINE,

     l_trtyp    LIKE t158-trtyp VALUE 'A',

     l_xexit    LIKE qm00-qkz.

   p_subrc = 4.

   LOOP AT p_mkpf_tab INTO l_mkpf.

     CLEAR:

 l_mseg_tab. REFRESH:

 l_mseg_tab.

     CALL FUNCTION 'MB_READ_MATERIAL_POSITION'

          EXPORTING

               mblnr  = l_mkpf-mblnr

               mjahr  = l_mkpf-mjahr

               trtyp  = l_trtyp

*/            ZEILB  = P_ZEILE

*/            ZEILE  = P_ZEILE

          TABLES

             seqtab = l_mseg_tab

        EXCEPTIONS

             error_message = 1.

     IF NOT sy-subrc IS INITIAL.

       l_xexit = 'X'.

       EXIT.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2