SAP: VL02N Enhancement FV50XF0B_BELEG_SICHERN / LIPW1F59 / MV50AF0S

本文档详细介绍了在SAP系统中针对VL02N交易代码的增强实现,包括FV50XF0B_BELEG_SICHERN、LIPW1F59和MV50AF0S等函数模块的增强内容。主要涉及货物移动的安全处理、序列号管理和位置到序列号的映射检查等业务流程。通过这些增强,实现了对销售订单行项目的库存移动、物料凭证创建和序列号验证的定制化功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FV50XF0B_BELEG_SICHERN:

ENHANCEMENT 1  ZPOSTGOODS.    "active version
*
  DATA: wa_lips LIKE LINE OF xlips.
  DATA: wa_mkpf TYPE bapi2017_gm_head_01,
        gt_fg   TYPE TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
        gt_sp   TYPE TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
        wa_mseg LIKE LINE OF gt_fg,
        l_vendor LIKE gt_sp-vendor,
        l_plant LIKE lips-werks,
        l_mblnr TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
  DATA: goodsmvt_code TYPE bapi2017_gm_code.
  DATA: gt_msg TYPE TABLE OF bapiret2,
        wa_msg LIKE LINE OF gt_msg,
        gs_zsd003 TYPE zsd003.
  DATA: wbs TYPE LENGTH 24,
        l_kunno LIKE likp-kunnr,                     "sold-to party
        l_kunni LIKE likp-kunnr,                     "ship-to party.
        l_lifnr LIKE zsd002-lifnr,
        l_tabix LIKE sy-tabix,
        regiogroup LIKE adrc-regiogroup,
        l_flag,
        l_skip.
  DATA: BEGIN OF gt_serial OCCURS 0,
        vbeln LIKE lips-vbeln,
        posnr LIKE lips-posnr,
        SERNR LIKE objk-SERNR,
        END OF gt_serial.
  DATA: gt_material TYPE ZMATERIAL WITH HEADER LINE.

  DATA: gt_serno TYPE TABLE OF BAPI2017_GM_SERIALNUMBER WITH HEADER LINE.

  DATA: BEGIN OF it_kunnr OCCURS 0,
        kunnr LIKE vbpa-kunnr,
        parvw LIKE vbpa-kunnr,
        END OF it_kunnr.
  CLEAR l_skip.
  IF gs_vbak-auart eq 'TA'.
    READ TABLE xvbpa WITH KEY parvw 'WE'.
    IF sy-subrc EQ 0.
      SELECT SINGLE regiogroup INTO regiogroup
        FROM kna1 AS JOIN adrc AS b
          ON a~adrnr b~addrnumber
        WHERE a~kunnr xvbpa-kunnr.
    ELSE.
      l_skip 'X'.
    ENDIF.
   IF regiogroup eq 'VTECH'.
   ELSE.
     l_skip 'X'.
   ENDIF.
   IF l_skip IS INITIAL.
    wa_mkpf-pstng_date xlikp-WADAT_IST.
    wa_mkpf-doc_date xlikp-WADAT_IST.
    wa_mkpf-PR_UNAME sy-uname.
    wa_mkpf-HEADER_TXT xlikp-vbeln.
    goodsmvt_code-gm_code '05'.

    IF gs_vbak-auart eq 'ZSP'.
      READ TABLE xvbpa WITH KEY parvw 'WE'.
      IF sy-subrc eq 0.
        l_kunni xvbpa-kunnr.
      ENDIF.
      READ TABLE xvbpa WITH KEY parvw 'AG'.
      IF sy-subrc eq 0.
        l_kunno xvbpa-kunnr.
      ENDIF.
      SELECT SINGLE lifnr flag FROM zsd002
        INTO (l_vendor,l_flag)
        WHERE kunno l_kunno
          AND kunni l_kunni
          AND VKORG gs_vbak-vkorg.
    ELSEIF gs_vbak-auart eq 'TA'.
*      SELECT SINGLE * FROM vbpa
*        WHERE vbeln = gs_lips-VGBEL
*          AND PARVW = 'WE'.
      READ TABLE xvbpa WITH KEY parvw 'WE'.
      SELECT SINGLE werks FROM zsd001
        INTO l_plant
        WHERE KUNNR xvbpa-kunnr
          AND VKORG gs_vbak-vkorg.
    ENDIF.

    SELECT SERNR LIEF_NR AS vbeln posnr
      INTO CORRESPONDING FIELDS OF TABLE gt_serial
      FROM ser01 AS JOIN objk AS b
        ON a~obknr b~obknr
      WHERE b~TASER 'SER01'
        AND a~LIEF_NR xlikp-vbeln.

    CLEAR l_tabix.
    LOOP AT xlips INTO wa_lips.
      IF wa_lips-lfimg eq 0.
        CONTINUE.
      ENDIF.
      l_tabix l_tabix + 1.
      gt_material-vbeln wa_lips-vgbel.
      gt_material-posnr wa_lips-vgpos.
      gt_material-matnr wa_lips-matnr.
      APPEND gt_material.
      wa_mseg-material wa_lips-matnr.
      wa_mseg-stge_loc wa_lips-lgort.
      wa_mseg-batch wa_lips-charg.
      wa_mseg-entry_qnt wa_lips-lfimg.
      wa_mseg-entry_uom wa_lips-meins.
      LOOP AT gt_serial WHERE posnr wa_lips-posnr.
        gt_serno-MATDOC_ITM l_tabix.
        gt_serno-SERIALNO gt_serial-SERNR.
        APPEND gt_serno.
        CLEAR gt_serno.
      ENDLOOP.

      CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
        EXPORTING
          input         wa_lips-PS_PSP_PNR
        IMPORTING
          OUTPUT        wbs.

      wa_mseg-val_wbs_elem wbs.
      wa_mseg-wbs_elem wbs.
      IF gs_vbak-AUART eq 'TA'.
        MOVE-CORRESPONDING wa_mseg to gt_fg.
        gt_fg-spec_stock 'Q'.
        gt_fg-plant l_plant.
        gt_fg-move_type '901'.
        APPEND gt_fg.
      ELSEIF gs_vbak-AUART eq 'ZSP'.
        MOVE-CORRESPONDING wa_mseg to gt_sp.
        gt_sp-vendor l_vendor.
        gt_sp-move_type '901'.
        gt_sp-spec_stock 'K'.
        gt_sp-plant wa_lips-werks.
        APPEND gt_sp.
      ENDIF.
      CLEAR wa_mseg.
    ENDLOOP.
    IF gs_vbak-auart eq 'ZSP'.
      CALL FUNCTION 'ZSD_PIR'
          EXPORTING
            l_vendor       l_vendor
            flag           l_flag
          tables
            it_material    gt_material
                  .
    ENDIF.
    IF gt_fg[] IS NOT INITIAL.
      CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
        EXPORTING
          goodsmvt_header               wa_mkpf
          goodsmvt_code                 goodsmvt_code
        IMPORTING
          MATERIALDOCUMENT              l_mblnr
        TABLES
          goodsmvt_item                 gt_fg
          GOODSMVT_SERIALNUMBER         gt_serno
          return                        gt_msg.
      REFRESH: gt_fg,gt_serno.
      READ TABLE gt_msg INTO wa_msg WITH KEY type 'E' .
      IF sy-subrc 0.
*    - call back
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        gs_zsd003-datum sy-datum.
        gs_zsd003-UZEIT sy-uzeit.
        gs_zsd003-vbeln xlikp-vbeln.
        gs_zsd003-mark 'Failure'.
        LOOP AT gt_msg INTO wa_msg.
         CONCATENATE gs_zsd003-message wa_msg-message
           INTO gs_zsd003-message SEPARATED BY space.
        ENDLOOP.
        INSERT zsd003 FROM gs_zsd003.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
        gs_zsd003-datum sy-datum.
        gs_zsd003-UZEIT sy-uzeit.
        gs_zsd003-vbeln xlikp-vbeln.
        gs_zsd003-mblnr l_mblnr.
        gs_zsd003-mark 'Success'.
        LOOP AT gt_msg INTO wa_msg.
         CONCATENATE gs_zsd003-message wa_msg-message
           INTO gs_zsd003-message SEPARATED BY space.
        ENDLOOP.
        INSERT zsd003 FROM gs_zsd003.
      ENDIF.
      REFRESH gt_msg.
    ENDIF.
    IF gt_sp[] IS NOT INITIAL.
      CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
        EXPORTING
          goodsmvt_header               wa_mkpf
          goodsmvt_code                 goodsmvt_code
          IMPORTING
          MATERIALDOCUMENT              l_mblnr
        TABLES
          goodsmvt_item                 gt_sp
          GOODSMVT_SERIALNUMBER         gt_serno
          return                        gt_msg.
      REFRESH: gt_sp,gt_serno.
      READ TABLE gt_msg INTO wa_msg WITH KEY type 'E' .
      IF sy-subrc 0.
*    - call back
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        gs_zsd003-datum sy-datum.
        gs_zsd003-UZEIT sy-uzeit.
        gs_zsd003-vbeln xlikp-vbeln.
        gs_zsd003-mark 'Failure'.
        LOOP AT gt_msg INTO wa_msg.
         CONCATENATE gs_zsd003-message wa_msg-message
           INTO gs_zsd003-message SEPARATED BY space.
        ENDLOOP.
        INSERT zsd003 FROM gs_zsd003.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
        gs_zsd003-datum sy-datum.
        gs_zsd003-UZEIT sy-uzeit.
        gs_zsd003-vbeln xlikp-vbeln.
        gs_zsd003-mblnr l_mblnr.
        gs_zsd003-mark 'Success'.
        LOOP AT gt_msg INTO wa_msg.
         CONCATENATE gs_zsd003-message wa_msg-message
           INTO gs_zsd003-message SEPARATED BY space.
        ENDLOOP.
        INSERT zsd003 FROM gs_zsd003.
      ENDIF.
      REFRESH gt_msg.
    ENDIF.
   ENDIF.
  ENDIF.
ENDENHANCEMENT.

 

FUNCTION zsd_pir.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(L_VENDOR) LIKE  EINA-LIFNR
*"     REFERENCE(FLAG) LIKE  ZSD002-FLAG OPTIONAL
*"  TABLES
*"      IT_MATERIAL TYPE  ZMATERIAL
*"----------------------------------------------------------------------

  flag_free flag.
  l_lifnr l_vendor.
  APPEND LINES OF it_material TO it_matnr.
  SELECT FROM vbap
    INTO CORRESPONDING FIELDS OF TABLE gt_vbap
    FOR ALL ENTRIES IN it_matnr
    WHERE vbeln it_matnr-vbeln
      AND posnr it_matnr-posnr.
  LOOP AT it_matnr.
    READ TABLE gt_vbap WITH KEY vbeln it_matnr-vbeln
                                posnr it_matnr-posnr.
    l_netpr gt_vbap-netpr.
    l_vpein gt_vbap-kpein.
    l_vonwa gt_vbap-waerk.
    l_vkmein gt_vbap-kmein.
    SELECT SINGLE FROM eina
      WHERE matnr it_matnr-matnr
        AND lifnr l_lifnr.
    IF sy-subrc EQ 0.
      SELECT SINGLE FROM eine
        WHERE infnr eina-infnr
          AND esokz EQ '2'
          AND werks NE ''.
      IF sy-subrc EQ 0.
        IF flag_free EQ 'X'.
        ELSE.
          PERFORM change_consignment.
        ENDIF.
      ELSE.
        PERFORM create_pir.
      ENDIF.
    ELSE.
      PERFORM create_pir.
    ENDIF.
  ENDLOOP.

ENDFUNCTION.

 

FORM change_consignment .
  PERFORM get_conditions.

  PERFORM bdc_dynpro      USING 'SAPMM06I' '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINA-LIFNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'EINA-LIFNR'
                                l_lifnr.
  PERFORM bdc_field       USING 'EINA-MATNR'
                                it_matnr-matnr.
  PERFORM bdc_field       USING 'EINE-EKORG'
                                eine-ekorg.
  PERFORM bdc_field       USING 'EINE-WERKS'
                                eine-werks.
  PERFORM bdc_field       USING 'RM06I-KONSI'
                                'X'.
  PERFORM bdc_dynpro      USING 'SAPMM06I' '0101'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINA-MAHN1'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=EINE'.
*    PERFORM bdc_field       USING 'EINA-URZLA'
*                                  record-urzla_005.
*    PERFORM bdc_field       USING 'EINA-MEINS'
*                                  record-meins_006.
*    PERFORM bdc_field       USING 'EINA-UMREZ'
*                                  record-umrez_007.
*    PERFORM bdc_field       USING 'EINA-UMREN'
*                                  record-umren_008.
  PERFORM bdc_dynpro      USING 'SAPMM06I' '0102'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINE-APLFZ'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=KO'.
*    PERFORM bdc_field       USING 'EINE-APLFZ'
*                                  record-aplfz_009.
*    PERFORM bdc_field       USING 'EINE-EKGRP'
*                                  record-ekgrp_010.
*    PERFORM bdc_field       USING 'EINE-NORBM'
*                                  record-norbm_011.
*    PERFORM bdc_field       USING 'EINE-WEBRE'
*                                  record-webre_012.
*    PERFORM bdc_field       USING 'EINE-MHDRZ'
*                                  record-mhdrz_013.
*    PERFORM bdc_field       USING 'EINE-IPRKZ'
*                                  record-iprkz_014.
  PERFORM bdc_dynpro      USING 'SAPLV14A' '0102'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                l_datab.
*                                'VAKE-DATAB(01)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=NEWR'.
  PERFORM bdc_dynpro      USING 'SAPMV13A' '0201'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                l_kbetr.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=SICH'.
*    PERFORM bdc_field       USING 'RV13A-DATAB'
*                                  record-datab_015.
*    PERFORM bdc_field       USING 'RV13A-DATBI'
*                                  record-datbi_016.
  PERFORM bdc_field       USING l_kbetr
                                l_netpr.
  PERFORM bdc_field       USING l_kpein
                                l_vpein.
  PERFORM bdc_field       USING l_konwa
                                l_vonwa.
  PERFORM bdc_field       USING l_kmein
                                l_vkmein.

  PERFORM bdc_transaction USING 'ME12'.

  CALL TRANSACTION 'ME12'
    USING bdcdata
    MODE 'N'
    UPDATE 'S'
    MESSAGES INTO messtab.
ENDFORM.                    " CHANGE_CONSIGNMENT

*&---------------------------------------------------------------------*
*&      Form  CREATE_PIR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_pir .
  SELECT SINGLE FROM lfm1 WHERE lifnr l_lifnr.
  SELECT SINGLE FROM marc WHERE matnr it_matnr-matnr
                              AND werks gt_vbap-werks.
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
    EXPORTING
      input          mara-meins
      language       sy-langu
    IMPORTING
*     LONG_TEXT      =
      output         mara-meins
*     SHORT_TEXT     =
    EXCEPTIONS
      unit_not_found 1
      OTHERS         2.
  IF marc-ekgrp is INITIAL.
     marc-ekgrp '101'.
  ENDIF.

  PERFORM bdc_dynpro      USING 'SAPMM06I' '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINA-LIFNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'EINA-LIFNR'
                                l_lifnr.
  PERFORM bdc_field       USING 'EINA-MATNR'
                                it_matnr-matnr.
  PERFORM bdc_field       USING 'EINE-EKORG'
                                lfm1-ekorg.
  PERFORM bdc_field       USING 'EINE-WERKS'
                                marc-werks.
  PERFORM bdc_field       USING 'RM06I-KONSI'
                                'X'.
  PERFORM bdc_dynpro      USING 'SAPMM06I' '0101'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINA-MAHN1'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=EINE'.
*perform bdc_field       using 'EINA-URZLA'
*                              record-URZLA_006.
*perform bdc_field       using 'EINA-REGIO'
*                              record-REGIO_007.
*perform bdc_field       using 'EINA-TELF1'
*                              record-TELF1_008.
  PERFORM bdc_field       USING 'EINA-MEINS'
                                gt_vbap-kmein.
*perform bdc_field       using 'EINA-UMREZ'
*                              record-UMREZ_010.
*perform bdc_field       using 'EINA-UMREN'
*                              record-UMREN_011.
  PERFORM bdc_dynpro      USING 'SAPMM06I' '0102'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'EINE-APLFZ'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=KO'.
  PERFORM bdc_field       USING 'EINE-APLFZ'
                                '1'.
  PERFORM bdc_field       USING 'EINE-EKGRP'
                                marc-ekgrp.
  PERFORM bdc_field       USING 'EINE-NORBM'
                          '1'.
*perform bdc_field       using 'EINE-WEBRE'
*                              record-WEBRE_014.
*perform bdc_field       using 'EINE-IPRKZ'
*                              record-IPRKZ_015.
*perform bdc_field       using 'EINE-WAERS'
*                              l_vonwa.
*perform bdc_field       using 'EINE-PEINH'
*                              record-PEINH_017.
*perform bdc_field       using 'EINE-BPRME'
*                              record-BPRME_018.
*perform bdc_field       using 'EINE-BPUMZ'
*                              record-BPUMZ_019.
*perform bdc_field       using 'EINE-BPUMN'
*                              record-BPUMN_020.
  PERFORM bdc_dynpro      USING 'SAPMV13A' '0201'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                                'KONP-KBETR(01)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=SICH'.
*perform bdc_field       using 'RV13A-DATAB'
*                              record-DATAB_021.
*perform bdc_field       using 'RV13A-DATBI'
*                              record-DATBI_022.
  IF flag_free NE 'X'.
    PERFORM bdc_field       USING 'KONP-KBETR(01)'
                                  l_netpr.
    PERFORM bdc_field       USING 'KONP-KPEIN(01)'
                                  l_vpein.
    PERFORM bdc_field       USING 'KONP-KONWA(01)'
                                  l_vonwa.
  endif.

    PERFORM bdc_transaction USING 'ME11'.

    CALL TRANSACTION 'ME11'
    USING bdcdata
    MODE 'N'
    UPDATE 'S'
    MESSAGES INTO messtab.
  ENDFORM.                    " CREATE_PIR

 

*&---------------------------------------------------------------------*
*&      Form  GET_CONDITIONS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_conditions .
  DATA: pos1(2),
        pos2(2),
        l_tabix LIKE sy-tabix.
  CLEAR gt_mir_1.
  REFRESH gt_mir_1.
  SELECT FROM a017
    INTO CORRESPONDING FIELDS OF TABLE gt_mir
    WHERE kappl 'M'
      AND kschl 'PB00'
      AND lifnr l_lifnr
      AND matnr it_matnr-matnr
      AND ekorg eine-ekorg
      AND werks eine-werks
      AND esokz '2'.
  APPEND LINES OF gt_mir TO gt_mir_1.
  SORT gt_mir_1 BY datbi DESCENDING.
  READ TABLE gt_mir_1 INDEX 1.
  READ TABLE gt_mir WITH KEY datbi gt_mir_1-datbi.
  IF sy-subrc EQ 0.
    pos1 sy-tabix.
  ELSE.
    pos1 '01'.
  ENDIF.
  CONCATENATE 'VAKE-DATAB(' pos1 ')' INTO l_datab.

  SELECT FROM konp
    INTO CORRESPONDING FIELDS OF TABLE gt_con
    WHERE knumh gt_mir_1-knumh.

*  READ TABLE gt_con WITH KEY kschl = 'PB00'
*                             loevm_ko = ''.
  LOOP AT gt_con.
    IF gt_con-kschl 'PB00' AND gt_con-loevm_ko ''.
      l_tabix sy-tabix.
    ENDIF.
  ENDLOOP.
  IF l_tabix NE 0.
    pos2 l_tabix.
  ELSE.
    pos2 '01'.
  ENDIF.
  CONCATENATE 'KONP-KBETR(' pos2 ')' INTO l_kbetr.
  CONCATENATE 'KONP-KPEIN(' pos2 ')' INTO l_kpein.
  CONCATENATE 'KONP-KONWA(' pos2 ')' INTO l_konwa.
  CONCATENATE 'KONP-KMEIN(' pos2 ')' INTO l_KMEIN.
ENDFORM.                    " GET_CONDITIONS

 

 

ENHANCEMENT 2  OI0_FV50XF0B_BELEG_SICHERN.    "active version
  IF v50agl-no_commit ' '  AND
     v50agl-sofauftrag NE charx.
*   Bei Aufruf aus Verpacken wird der Commit extern gesetzt
    PERFORM sd_monitor_protocol_save.
    IF G_OIKIMPORT-APPLIC C_APPLIC_TAS OR               "SOTK000026 DN
       G_OIKIMPORT-APPLIC C_APPLIC_TPI OR               "SOTK000026 DN
       G_OIKIMPORT-APPLIC C_APPLIC_TSW_TIC OR           "SOGK004056 DN
       G_OIKIMPORT-APPLIC C_APPLIC_TSW_REV.             "SOGK004056 DN
    ELSE.                                                 "SOTK000026 DN
      IF v50agl-synchron NE charx.
        import  ROIO_SP_PARAM                             "RLM-Packing
            to  ls_oio_sp_param                           "RLM-Packing
          from  memory id 'ROIO_SP_PARAM'.                "RLM-Packing
        IF G_OIK_TAS_GISSUE C_CHARX.                    "SOTK000026 DN
          COMMIT WORK AND WAIT.                           "SOTK000026 DN
        elseif not ls_oio_sp_param-calld is initial.      "RLM-Packing
          commit work and wait.                           "RLM-Packing
        ELSE.                                             "SOTK000026 DN
          if TVLK-OIDELDCM EQ CHARX.                      "SDP-Billing.
            COMMIT WORK AND WAIT.                         "SDP-Billing.
          ELSE.                                           "SDP-Billing.
           COMMIT WORK.
          endif.                                          "SDP-Billing.
        ENDIF.
      ELSE.
        COMMIT WORK AND WAIT.
      ENDIF.
    endif.
*Updating version number for DCM.
    IF T180-TRTYP EQ CHARV AND TVLK-OIDELDCM EQ CHARX.         "SDP-Billing.
      PERFORM DOCUMENT_VERSION_UPDATE(SAPMV50AUSING JOB_DATE."SDP-Billing.
    ENDIF.                                                     "SDP-Billing.
  ENDIF.
ENDENHANCEMENT.
ENHANCEMENT 1  ZCOMMIT.    "active version
  DATA: gs_lips LIKE LINE OF xlips,
        gs_vbak TYPE vbak.
  IF v50agl-no_commit ' '  AND
     v50agl-sofauftrag NE charx.
*   Bei Aufruf aus Verpacken wird der Commit extern gesetzt
    PERFORM sd_monitor_protocol_save.
    IF v50agl-synchron NE charx.
      READ TABLE xlips INTO gs_lips INDEX 1.
      SELECT SINGLE INTO CORRESPONDING FIELDS OF gs_vbak
        FROM vbak
        WHERE vbeln gs_lips-VGBEL.
      IF gs_vbak-auart eq 'TA'.
         COMMIT WORK AND WAIT.
      ELSE.
        COMMIT WORK.
      ENDIF.
    ELSE.
      COMMIT WORK AND WAIT.
    ENDIF.
  ENDIF.
ENDENHANCEMENT.

 

 LIPW1F59:

 

ENHANCEMENT 1  IUID_APPL_01_LIPW1F59.    "active version

*   Ermitteln des IUID-Typs des gegebenen Materials
    try.
      call method cl_uid_iuid=>get_iuid_type
        exporting
          iv_matnr     p-material
          iv_uii_plant p-m_werk
        receiving
          rv_iuid_type da_iuid_type.
      catch cx_uii_not_existing.
      catch cx_iuid_mat_data_not_found.
      catch cx_iuid_import_param_missing.
    endtry.

ENDENHANCEMENT.
ENHANCEMENT 1  ZCHANGE_SERIAL.    "active version
*
  IF sy-tcode 'VL02N'.
    DATA: gt_serial TYPE TABLE OF zserial WITH HEADER LINE,
          l_ZSNDOC  LIKE zserial-ZSNDOC,
          l_snno    LIKE zserial-zsnno,
          l_sernr   LIKE equi-sernr,
          l_index   TYPE sy-tabix,
          l_matnr   LIKE zserial-zmodel.

      CLEAR: da_tab_sernr,l_index.
      REFRESH da_tab_sernr.
      l_zsndoc p-document.
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
        EXPORTING
          input         p-material
        IMPORTING
          OUTPUT        l_matnr
                .
       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
         EXPORTING
           input         p-document
         IMPORTING
           OUTPUT        l_zsndoc
                 .

       SELECT FROM zserial
         INTO CORRESPONDING FIELDS OF TABLE gt_serial
         WHERE zsndoc l_zsndoc
           AND zmodel l_matnr.

       LOOP AT gt_serial.
         CALL FUNCTION 'CONVERSION_EXIT_GERNR_INPUT'
           EXPORTING
             input         gt_serial-zsnno
           IMPORTING
             OUTPUT        l_snno
                   .
         SELECT SINGLE sernr FROM V_EQUI_EQBS_SML
           INTO l_sernr
           WHERE matnr    p-material
             AND sernr    l_snno
             AND b_werk   p-m_werk
             AND b_lager  p-m_lager
             AND b_charge p-m_charge.

         IF sy-subrc eq 0.
           da_tab_sernr-sernr gt_serial-ZSNNO.
           APPEND da_tab_sernr.
           add to l_index.
           IF l_index ge p-quantity.
             EXIT.
           ENDIF.
         ENDIF.
       ENDLOOP.

*      SELECT * FROM ZSERIAL AS a
*        JOIN V_EQUI_EQBS_SML as b
*          on a~zmodel = b~matnr AND a~zsnno = b~SERNR
*        INTO CORRESPONDING FIELDS OF gt_serial
*        WHERE ZSNDOC   = l_zsndoc
*          AND zmodel   = l_matnr
*          AND B_WERK   = p-m_werk
*          AND b_LAGER  = p-m_lager
*          and b_CHARGE = p-m_charge.
*
*        da_tab_sernr-sernr = gt_serial-ZSNNO.
*        APPEND da_tab_sernr.
*      ENDSELECT.
  ENDIF.
ENDENHANCEMENT.
*$*$-End:   EHP603_LIPW1F59_01------------------------------------------------------------------$*$*

 

MV50AF0S:

ENHANCEMENT 1  ZGET_LOCATION_TO_SERIAL.    "active version

* take over valuation type into batch                      "v_n_1059918
  lf_charg is_lips-charg.
  IF NOT is_lips-bwtex IS INITIAL AND NOT is_lips-xchar IS INITIAL AND
         is_lips-xchpf IS INITIAL AND     is_lips-charg IS INITIAL AND
     NOT is_lips-bwtar IS INITIAL.
    lf_charg is_lips-bwtar.
  ENDIF.                                                   "^_n_1059918

* Get plant and location from LIPS
  lf_werks is_lips-werks.
  lf_lgort is_lips-lgort.

  CALL FUNCTION 'SERIALPROFILE_CHECK'
    EXPORTING
      operation     lf_xopera
      j_vorgang     if_status
      activity      if_trtyp
      document      is_likp-vbeln
      item          is_lips-posnr
      material      is_lips-matnr
*     m_charge      = is_lips-charg
      m_charge      lf_charg                              "n_1059918
      profile       is_lips-serail
      quantity      lf_xanzsn
      debitor       is_likp-kunnr
      cuobj         lf_cuobj                              "n_930204
      vbtyp         is_likp-vbtyp
      bwart         is_lips-bwart
      m_werk        lf_werks
      m_lager       lf_lgort
      iuid_relevant lf_iuid_relevant                         "EHP603 IUID
    IMPORTING
      anzsn         cf_anzsn
      serial_commit cf_dataloss.
ENDENHANCEMENT.
*$*$-End:   MV50AF0S_04-------------------------------------------------------------------------$*$*

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  serialnumber_checks                              n_598948
*&---------------------------------------------------------------------*
FORM serialnumber_checks

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值