SAP-销售发货装车

  1. 程序说明

2.1程序说明

         所用自定义表

ZTLORT

交货单对应库位 条码功能

ZTLIPS

条码功能 销售发货

ZTTBC

托条码

ZTMBC

物料条码

ZTMGL

依据库存地点设置条码管

ZTYSK

运输单抬头

ZTYSP

运输单项目

创建交货单,将交货单单号作为提货单条码;

交货单创建后,打印《发货计划汇总表》

按照规定,仓库提前3天根据交货计划执行发货出库准备.

扫描提货单号:扫描发货计划汇总表中的提货单号、扫描备货库位条码、扫描托条码,完成物料的下架备货动作。

托条码是否在销售订单内且可发货(入库标志为Y):ERP自动检查该托条码是否属于当前销售订单且可发货,如果不属于或不可发货(托条码表状态为“生效”),则报错提示。

该托条码物品号是否相符:ERP自动检查该托条码对应的物料物品号号是否和当前销售订单上的相同,如果不相同,则报错提示。

是否重复扫描:ERP自动判断该托条码是否重复扫描,如果已扫描过,则报错提示。

扫描完成,则上传ERP,托条码处于“捡配完成”状态,更新托条码表中状态为“出库”。

装车时,扫描提货单号,输入车辆号码,装车人为手持终端登录用户。

系统校验:托条码是否在发货单中:ERP自动检查所扫描的托条码是否属于该发货单,如果不属于该发货单,则报错提示。

是否重复扫描:ERP自动判断该条码是否重复扫描,如果已扫描过,则报错提示。

装车完成,托条码扫描完成后,上传;ERP自动更新交货单质检员与车辆信息,更新物料条码表中状态为“出库”,更新物料条码表车辆信息,

程序实现

2.2.1生成运输单号

FORM FRM_CREATE_3011 .
  DATA:L_NR_RANGE_NR LIKE  INRI-NRRANGENR,
       L_OBJECT      LIKE  INRI-OBJECT.

  DATA:RC         LIKE INRI-RETURNCODE,
       NUMBER(10) TYPE C.

2.2.2"生成运输单号

  L_NR_RANGE_NR = '01'.
  L_OBJECT = 'ZEYSO'.

  CLEAR:NUMBER,GFD_ZEYSO.
  PERFORM FRM_3011_INIT.

  CALL FUNCTION 'NUMBER_GET_NEXT'
    EXPORTING
      NR_RANGE_NR             = L_NR_RANGE_NR
      OBJECT                  = L_OBJECT
    IMPORTING
      NUMBER                  = NUMBER
      RETURNCODE              = RC
    EXCEPTIONS
      INTERVAL_NOT_FOUND      = 1
      NUMBER_RANGE_NOT_INTERN = 2
      OBJECT_NOT_FOUND        = 3
      QUANTITY_IS_0           = 4
      QUANTITY_IS_NOT_1       = 5
      INTERVAL_OVERFLOW       = 6
      BUFFER_OVERFLOW         = 7
      OTHERS                  = 8.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ELSE.
    GFD_ZEYSO = NUMBER.
    CALL SCREEN SCRN_ZVBLN_312.
  ENDIF.

ENDFORM.
*&------------

2.2.3"运输单进行交货单扫描时,检查运输单是否已经确认过

  NR_RANGE_NR = '01'.
  OBJECT = 'ZEYSO'.

  IF GFD_ZEYSO IS INITIAL.
    CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

    CONCATENATE '运输单未找到!' ''  INTO GFD_MES.
    CALL SCREEN SCRN_IMSG.
  ELSE.

    CLEAR:RC.
*    NUMBER        = GFD_ZEYSO.
*
*    CALL FUNCTION 'NUMBER_CHECK'
*      EXPORTING
*        OBJECT      = OBJECT
*        NR_RANGE_NR = NR_RANGE_NR
*        NUMBER      = NUMBER
*      IMPORTING
*        RETURNCODE  = RC.


    IF RC = 'X'.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '运输单编号不正确!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ELSE.

      SELECT SINGLE * INTO CORRESPONDING FIELDS OF GT_ZTYSK
        FROM ZTYSK
        WHERE ZEYSO = GFD_ZEYSO.

      IF GT_ZTYSK-KZERM = 'X'.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

        CONCATENATE '运输单已确认!' ''  INTO GFD_MES.
        CALL SCREEN SCRN_IMSG.
      ELSE.
        PERFORM FRM_3012_CLEAR .
        CALL SCREEN SCRN_ZVBLN_312.
      ENDIF.
    ENDIF.
  ENDIF.

2.2.4调用3012界面进行交货单扫描

FORM FRM_CHECK_VBELN_3012 .
  DATA:L_WBSTK LIKE VBUK-WBSTK.

  DATA:L_STRESS1(200) TYPE C,
       L_STRESS2(200) TYPE C.

  DATA:ID       LIKE  THEAD-TDID,
       LANGUAGE LIKE  THEAD-TDSPRAS,
       NAME     LIKE  THEAD-TDNAME,
       OBJECT   LIKE  THEAD-TDOBJECT.
  DATA:L_KUNNR LIKE VBAK-KUNNR.

  DATA:LINES  LIKE  TLINE OCCURS 0 WITH HEADER LINE.

  CLEAR:GFD_MARK,GFD_MTART.

  CLEAR:GFD_MATNR,GFD_LFIMG,GFD_ZVIMG,GFD_XVIMG,GFD_ZLIX,GFD_SUMLIX,GFD_WERKS,GFD_LGORT,GFD_MAKTX,GFD_MARK.
  CLEAR:GT_LIPS,GTDC,GTTC,TMBC.
  REFRESH:GT_LIPS,GTDC,GTTC,TMBC,GR_ZERFS.

  CLEAR:GR_ZERFS.
  GR_ZERFS-SIGN = 'I'.
  GR_ZERFS-OPTION = 'EQ'.
  GR_ZERFS-LOW = '06'.   "
  APPEND GR_ZERFS.

  CLEAR:GR_ZERFS.
  GR_ZERFS-SIGN = 'I'.
  GR_ZERFS-OPTION = 'EQ'.
  GR_ZERFS-LOW = '07'.   "
  APPEND GR_ZERFS.

  CLEAR:GFD_XVIMG.
  CLEAR:GT_ZTYSP.

  GFD_VBELN = GFD_VBEPO+0(10).
  GFD_POSNR = GFD_VBEPO+10(6).
  
2.2.5"根据交货单获取运输单项目信息

  SELECT SINGLE * INTO CORRESPONDING FIELDS OF GT_ZTYSP
    FROM ZTYSP
    WHERE VBELN = GFD_VBELN.

  IF SY-SUBRC = 0.
    
2.2.6"判断交货单是否已经装过车

    IF GT_ZTYSP-ZEYSO <> GFD_ZEYSO.

      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
      CONCATENATE '交货单' GT_ZTYSP-VBELN INTO GFD_MES.
      CONCATENATE '已经在运输单' GFD_ZEYSO '中' INTO GFD_MES1.
      CALL SCREEN SCRN_IMSG.
      CLEAR:GFD_VBELN.
    ENDIF.

  ELSE.
    CLEAR:GT_ZTYSP.
    
2.2.7"判断送达方是否一致

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF GT_ZTYSP  "送达方一致
      FROM ZTYSP
      WHERE ZEYSO = GFD_ZEYSO
      AND VBELN <> GFD_VBELN.

    IF SY-SUBRC = 0.
      CLEAR:GT_LIPS-VGBEL.
      SELECT SINGLE VGBEL INTO GT_LIPS-VGBEL
        FROM LIPS
        WHERE VBELN = GFD_VBELN.

      CLEAR:VBPA-KUNNR.
      SELECT SINGLE KUNNR INTO VBPA-KUNNR
        FROM VBPA
        WHERE VBELN = GT_LIPS-VGBEL
        AND PARVW = 'WE'.
*
      CLEAR:GT_LIPS-VGBEL.

      SELECT SINGLE VGBEL INTO GT_LIPS-VGBEL
        FROM LIPS
        WHERE VBELN = GT_ZTYSP-VBELN
        AND POSNR = GT_ZTYSP-POSNR.

      CLEAR:L_KUNNR.
      SELECT SINGLE KUNNR INTO L_KUNNR
        FROM VBPA
        WHERE VBELN = GT_LIPS-VGBEL
        AND PARVW = 'WE'.

      IF L_KUNNR NE VBPA-KUNNR.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
        CONCATENATE '交货单' GT_ZTYSP-VBELN INTO GFD_MES.
        CONCATENATE '的送达方与' GFD_ZEYSO  INTO GFD_MES1.
        CONCATENATE '的其它行不一致' GT_ZTYSP-VBELN  INTO GFD_MES1.
        CALL SCREEN SCRN_IMSG.
        CLEAR:GFD_VBELN.
      ENDIF.

      CLEAR:ID,LANGUAGE,NAME,OBJECT,L_STRESS1.
      REFRESH:LINES .

      
2.2.8"判断送货地址是否一致

      ID = 'Z001'.
      OBJECT = 'VBBK'.
      CONCATENATE GT_ZTYSP-VBELN '' INTO NAME.

      CALL FUNCTION 'READ_TEXT'
        EXPORTING
*         CLIENT                  = SY-MANDT
          ID                      = ID
          LANGUAGE                = SY-LANGU
          NAME                    = NAME
          OBJECT                  = OBJECT
        TABLES
          LINES                   = LINES
        EXCEPTIONS
          ID                      = 1
          LANGUAGE                = 2
          NAME                    = 3
          NOT_FOUND               = 4
          OBJECT                  = 5
          REFERENCE_CHECK         = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                  = 8.
      IF SY-SUBRC <> 0.
* Implement suitable error handling here
      ENDIF.


      LOOP AT LINES.
        CONCATENATE L_STRESS1 LINES-TDLINE INTO L_STRESS1.
        CLEAR:LINES.
      ENDLOOP.

      CLEAR:ID,LANGUAGE,NAME,OBJECT,L_STRESS2.
      REFRESH:LINES .

      ID = 'Z001'.
      OBJECT = 'VBBK'.
      CONCATENATE GFD_VBELN '' INTO NAME.

      CALL FUNCTION 'READ_TEXT'
        EXPORTING
*         CLIENT                  = SY-MANDT
          ID                      = ID
          LANGUAGE                = SY-LANGU
          NAME                    = NAME
          OBJECT                  = OBJECT
        TABLES
          LINES                   = LINES
        EXCEPTIONS
          ID                      = 1
          LANGUAGE                = 2
          NAME                    = 3
          NOT_FOUND               = 4
          OBJECT                  = 5
          REFERENCE_CHECK         = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                  = 8.
      IF SY-SUBRC <> 0.
* Implement suitable error handling here
      ENDIF.


      LOOP AT LINES.
        CONCATENATE L_STRESS2 LINES-TDLINE INTO L_STRESS2.
        CLEAR:LINES.
      ENDLOOP.

      IF L_STRESS2 <> L_STRESS1.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
        CONCATENATE '交货单' GFD_VBELN INTO GFD_MES.
        CONCATENATE '的送货地址与' GFD_ZEYSO  INTO GFD_MES1.
        CONCATENATE '的其它行不一致' GT_ZTYSP-VBELN  INTO GFD_MES2.
        CALL SCREEN SCRN_IMSG.
        CLEAR:GFD_VBELN.
      ENDIF.

    ENDIF.
  ENDIF.

  
2.2.9"获取交货单抬头信息

  IF GFD_VBELN IS NOT INITIAL.
    CLEAR:LIKP.
    SELECT SINGLE * INTO LIKP
      FROM LIKP
      WHERE VBELN = GFD_VBELN.

    
2.2.10"获取交货单是否过账

    CLEAR:L_WBSTK.
    SELECT SINGLE WBSTK INTO L_WBSTK
      FROM VBUK
      WHERE VBELN = GFD_VBELN.
    " IF LIKP-WADAT_IST <> '00000000'.
    IF L_WBSTK = 'C'.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '交货单已过账!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
      CLEAR:GFD_VBELN.
    ELSE.
      
2.2.11"获取交货单明细信息

      SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_LIPS
        FROM LIPS
        WHERE VBELN = GFD_VBELN
        AND POSNR = GFD_POSNR.

      DESCRIBE TABLE GT_LIPS LINES GFD_SUMLIX.
      IF GFD_SUMLIX NE 0.
        SORT GT_LIPS BY VBELN POSNR.

        GFD_ZLIX = 1.
        CLEAR:GT_LIPS.
        READ TABLE GT_LIPS INDEX  GFD_ZLIX.
        IF SY-SUBRC = 0.
          GFD_LGORT = GT_LIPS-LGORT.
         
2.2.12 "获取库存地

          IF GFD_LGORT IS INITIAL.
            SELECT SINGLE LGORT INTO GFD_LGORT
            FROM ZTLORT
            WHERE VBELN = GFD_VBELN
            AND POSNR = GFD_POSNR.
          ENDIF.
          "获取物料描述
          SELECT SINGLE MAKTX INTO GFD_MAKTX
            FROM MAKT
            WHERE MATNR = GT_LIPS-MATNR
            AND SPRAS = SY-LANGU.

          SELECT SINGLE MTART INTO GFD_MTART
            FROM MARA
            WHERE MATNR = GT_LIPS-MATNR.

          SELECT SINGLE ZMARK INTO GFD_MARK
            FROM ZTMGL
            WHERE WERKS = GT_LIPS-WERKS
            AND LGORT = GFD_LGORT.
          
2.2.14"如果不启用条码管理,则从ZTLIPS中获取装车数量,否则从ZTTBC获取装车数量

          IF GFD_MARK = 'X'.
            SELECT SUM( ZFIMG ) INTO GFD_XVIMG
            FROM ZTLIPS
            WHERE VBELN = GT_LIPS-VBELN
            AND POSNR = GT_LIPS-POSNR
           AND ZERFS IN GR_ZERFS.
          ELSE.
            CASE GFD_MTART.
              WHEN 'ND01' OR 'NDK1'.
                SELECT SUM( MENGE ) INTO GFD_XVIMG
                  FROM ZTTBC
                  WHERE VBELF = GT_LIPS-VBELN
                  AND POSNF = GT_LIPS-POSNR
                  AND ZERFS IN GR_ZERFS.
              WHEN OTHERS .
                SELECT SUM( ZFIMG ) INTO GFD_XVIMG
                  FROM ZTLIPS
                  WHERE VBELN = GT_LIPS-VBELN
                  AND POSNR = GT_LIPS-POSNR
                 AND ZERFS IN GR_ZERFS.
            ENDCASE.
          ENDIF.
        ENDIF.
      ELSE.
        CLEAR:GFD_VBELN.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

        CONCATENATE '交货单在SAP不存在!' ''  INTO GFD_MES.
        CALL SCREEN SCRN_IMSG.
      ENDIF.
    ENDIF.
  ENDIF.
  
2.2.15"判断是否进行条码扫描,如果扫码,调用3013界面,如果不扫托条码,则调用3014界面

  IF GFD_VBELN IS NOT INITIAL.
    IF GFD_ZECHL IS INITIAL.
      SET CURSOR FIELD 'GFD_ZECHL'.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '车辆信息为空!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ELSE.
      CASE GFD_MTART.
        WHEN 'ND01' OR 'NDK1'.
          IF GT_LIPS-MATNR+0(8) = '00000011' OR GFD_MARK = 'X'. "
            IF GFD_XVIMG >= GT_LIPS-LFIMG.
              MESSAGE  '此项已装车完!' TYPE 'W'.
              PERFORM FRM_3014_INIT.

              CALL SCREEN  SCRN_ZVBLN_314.
            ELSE.
              GFD_XVIMG = GT_LIPS-LFIMG.
              PERFORM FRM_3014_INIT.

              CALL SCREEN  SCRN_ZVBLN_314.
            ENDIF.
          ELSE.
            IF GFD_XVIMG >= GT_LIPS-LFIMG.
              MESSAGE  '此项已装车完!' TYPE 'W'.
              PERFORM FRM_3013_INIT.

              GFD_JVIMG = GT_LIPS-LFIMG - GFD_XVIMG.
              SELECT COUNT(*) INTO GFD_SMNGE
                FROM ZTTBC
                  WHERE VBELF = GFD_VBELN
                  AND POSNF = GFD_POSNR
                  AND ZERFS = '06'.

              SELECT * INTO CORRESPONDING FIELDS OF TABLE GTTC
                FROM ZTTBC
                WHERE VBELF = GFD_VBELN
                AND POSNF = GFD_POSNR
                AND ZERFS = '06'.

              CALL SCREEN  SCRN_ZVBLN_313.
            ELSE.
              PERFORM FRM_3013_INIT.
              GFD_JVIMG = GT_LIPS-LFIMG - GFD_XVIMG.
              SELECT COUNT(*) INTO GFD_SMNGE
                FROM ZTTBC
                  WHERE VBELF = GFD_VBELN
                  AND POSNF = GFD_POSNR
                  AND ZERFS = '06'.

              SELECT * INTO CORRESPONDING FIELDS OF TABLE GTTC
                FROM ZTTBC
                WHERE VBELF = GFD_VBELN
                AND POSNF = GFD_POSNR
                AND ZERFS = '06'.
              CALL SCREEN  SCRN_ZVBLN_313.
            ENDIF.
          ENDIF.
        WHEN OTHERS.
          IF GFD_XVIMG >= GT_LIPS-LFIMG.
            MESSAGE  '此项已装车完!' TYPE 'W'.
            PERFORM FRM_3014_INIT.

            CALL SCREEN  SCRN_ZVBLN_314.
          ELSE.
            GFD_XVIMG = GT_LIPS-LFIMG.
            PERFORM FRM_3014_INIT.

            CALL SCREEN  SCRN_ZVBLN_314.
          ENDIF.
      ENDCASE.
    ENDIF.
  ELSE.
    CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

    CONCATENATE '交货单未拣配或已过账!' ''  INTO GFD_MES.
    CALL SCREEN SCRN_IMSG.
  ENDIF.

  
2.2.16"进行拖条码扫描,获取旧条码号

  IF GFD_ZECHL IS INITIAL.
    SET CURSOR FIELD 'GFD_ZECHL'.
    CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

    CONCATENATE '车辆信息为空!' ''  INTO GFD_MES.
    CALL SCREEN SCRN_IMSG.
  ELSE.
    DATA L_ZZTBC TYPE ZETBC.

    IF TMBC-ZETBC IS NOT INITIAL.
      CONDENSE TMBC-ZETBC.
      LEN = STRLEN( TMBC-ZETBC ).
      IF LEN < 25.
        SELECT SINGLE ZETBC
        INTO L_ZZTBC
        FROM ZTTBC
        WHERE ZEOBC = TMBC-ZETBC.
        IF SY-SUBRC NE 0.
          PERFORM ZZ_MESSAGE USING EMSG G_MOTYP '021' TMBC-ZETBC '' '' '' CHANGING G_ANS.
          RETURN.
        ELSE.
          TMBC-ZETBC = L_ZZTBC.
        ENDIF.
      ENDIF.
    ENDIF.

    IF G_COB = 'X'.   "删除
      PERFORM FRM_DELETE_3013.
    ELSE.
      PERFORM FRM_CHECK_ZETBC_3013.
    ENDIF.
  ENDIF.


2.2.17"检查装车数量与需求数量

  IF GFD_JVIMG = GFD_ZVIMG.
    CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

    CONCATENATE '装车数量与需求数一样,不能扫描' ''  INTO GFD_MES.
    CALL SCREEN SCRN_IMSG.
  ELSE.

2.2.18"获取托条码信息并进行物料检查

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF GTTC
      FROM ZTTBC
      WHERE ZETBC = TMBC-ZETBC
      AND VBELF = GFD_VBELN
      AND POSNF = GFD_POSNR.
    IF SY-SUBRC = 0.
      IF GTTC-MATNR NE GT_LIPS-MATNR AND GTTC-VBELN IS NOT INITIAL.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

        CONCATENATE '物料不一致!' ''  INTO GFD_MES.
        CALL SCREEN SCRN_IMSG.
        CLEAR GTTC.
      ELSE.

        IF GTTC-VBELN NE GT_LIPS-VGBEL AND GTTC-VBELN IS NOT INITIAL.
          CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

          CONCATENATE '销售单不一致!' ''  INTO GFD_MES.
          CALL SCREEN SCRN_IMSG.
          CLEAR GTTC.
        ELSE.

2.2.19"如果托条码状态为05,才进行装车,否则,反馈条码状态信息

          CASE GTTC-ZERFS.
            WHEN '05'.

            WHEN '06'.
              IF GTTC-VBELF NE GT_LIPS-VBELN.

                CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

                CONCATENATE '托条码已在提货单' GTTC-VBELF '中!' ''  INTO GFD_MES.
                CALL SCREEN SCRN_IMSG.
              ELSE.
                CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

                CONCATENATE '托条码已扫描!' ''  INTO GFD_MES.
                CALL SCREEN SCRN_IMSG.
              ENDIF.
              CLEAR GTTC.
            WHEN OTHERS.
              CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

              CONCATENATE '托条码未拣配!' ''  INTO GFD_MES.
              CALL SCREEN SCRN_IMSG.
              CLEAR GTTC.
          ENDCASE.

          IF GTTC-ZETBC IS NOT INITIAL.
            " IF GTTC-CHARG IS NOT INITIAL.
            SELECT SINGLE CHARG INTO GTTC-CHARG
              FROM MSKA"MCHB
              WHERE MATNR = GT_LIPS-MATNR
              AND WERKS = GT_LIPS-WERKS
              AND LGORT = GFD_LGORT
              AND CHARG = GTTC-CHARG
              AND VBELN = GTTC-VBELN
              AND POSNR = GTTC-POSNR.
            IF SY-SUBRC <> 0  AND GTTC-VBELN IS NOT INITIAL.
              CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

              CONCATENATE '销售订单库存不正确' ''  INTO GFD_MES.
              CALL SCREEN SCRN_IMSG.
            ELSE.
              READ TABLE GTTC INTO ZTTBC WITH KEY ZETBC = GTTC-ZETBC.
              IF SY-SUBRC = 0.
                CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

                CONCATENATE '托条码已扫描!' ''  INTO GFD_MES.
                CALL SCREEN SCRN_IMSG.
              ELSE.

2.2.20"更新托条码状态

                IF GTTC-ZERFS = '05'.
                  GFD_ZVIMG = GFD_ZVIMG + GTTC-MENGE.
                ENDIF.

                GFD_SMNGE = GFD_SMNGE + 1.
                APPEND GTTC.

2.2.21"时时保存装车信息

                PERFORM FRM_SAVALIV3013.
  DATA:LT_ZTLORT TYPE ZTLORT.

  IF GTTC-ZERFS = '05'.
    GFD_XVIMG = GFD_XVIMG + GTTC-MENGE.
    GFD_JVIMG = GFD_JVIMG - GTTC-MENGE.
  ENDIF.

  IF GFD_XVIMG > GT_LIPS-LFIMG.
    GFD_XVIMG = GFD_XVIMG - GTTC-MENGE.
    GFD_JVIMG = GFD_JVIMG + GTTC-MENGE.

    DELETE GTTC WHERE ZETBC = GTTC-ZETBC.
    CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

    CONCATENATE '装车数量大于需求数'  ''  INTO GFD_MES.
    CALL SCREEN SCRN_IMSG.

  ELSE.
    GTTC-ZERFS = '06'.

    MODIFY ZTTBC FROM GTTC.
    IF SY-SUBRC = 0.
      REFRESH:GTDC.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE GTDC
        FROM ZTMBC
        WHERE ZETBC = GTTC-ZETBC
        AND ZERFS = '05'.

      LOOP AT GTDC INTO ZTMBC.
        ZTMBC-VBELF = GT_LIPS-VBELN.
        ZTMBC-POSNF = GT_LIPS-POSNR.
        ZTMBC-ZERFS = '06'.
        MODIFY GTDC FROM ZTMBC.
        CLEAR:ZTMBC.
      ENDLOOP.

      MODIFY ZTMBC FROM TABLE GTDC.

      DATA RFL TYPE ZTRFL.
      DATA RFP LIKE TABLE OF ZTRFP WITH HEADER LINE.

      CLEAR:RFL.
      REFRESH:RFP.

      PERFORM FRM_GET_NUMBER USING RFL-ZEOBJ.
      RFL-ZEOTP = 'E'.
      RFL-ERNAM = G_UNAME.
      RFL-ERZET = SY-UZEIT.
      RFL-ERDAT = SY-DATUM.
      RFL-ZETMN = GFD_SMNGE.
      RFP-ZEOBJ = RFL-ZEOBJ.
      RFP-ZPOSI = SY-TABIX.
      RFP-MATNR = GTTC-MATNR.
      RFP-ZETBC = GTTC-ZETBC.
      RFP-AUFNR = GTTC-ZEBAF.
      RFP-VBELN = GTTC-VBELN.
      RFP-POSNR = GTTC-POSNR.
      RFP-WERKS = GTTC-WERKS.
      RFP-LGORT = GTTC-LGORT.
      RFP-CHARG = GTTC-CHARG.
      RFP-VBELF = GTTC-VBELF.
      RFP-POSNF = GTTC-POSNF.
      RFP-EBELN = GTTC-EBELN.
      RFP-EBELP = GTTC-EBELP.
*ZEFMN = ZEFMN
*ZITEM = ZITEM.
*ZEYSO = ZEYSO.
      RFP-ZERFS = GTTC-ZERFS.
      MODIFY ZTRFL FROM RFL.
      MODIFY ZTRFP FROM RFP.

      PERFORM FRM_SAVEYSK_3013.

    ELSE.
      GFD_XVIMG = GFD_XVIMG - GTTC-MENGE.
      GFD_JVIMG = GFD_JVIMG + GTTC-MENGE.
    ENDIF.
  ENDIF.
ENDFORM.
              ENDIF.

            ENDIF.
*          ELSE.
*            READ TABLE GTTC INTO ZTTBC WITH KEY ZETBC = GTTC-ZETBC.
*            IF SY-SUBRC = 0.
*              CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
*
*              CONCATENATE '托条码已扫描!' ''  INTO GFD_MES.
*              CALL SCREEN SCRN_IMSG.
*            ELSE.
*
*              IF GTTC-ZERFS = '05'.
*                GFD_ZVIMG = GFD_ZVIMG + GTTC-MENGE.
*              ENDIF.
*
*              GFD_SMNGE = GFD_SMNGE + 1.
*              APPEND GTTC.
*            ENDIF.
*
*          ENDIF.
          ENDIF.
*        SELECT SINGLE MAKTX INTO GFD_MAKTX
*          FROM MAKT
*          WHERE MATNR = GTTC-MATNR
*          AND SPRAS = SY-LANGU.
        ENDIF.
      ENDIF.
    ELSE.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '托条码未拣配!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ENDIF.
  ENDIF.


2.2.22"删除装车托条码,获取托条码信息

  SELECT SINGLE * INTO CORRESPONDING FIELDS OF GTTC
  FROM ZTTBC
  WHERE ZETBC = TMBC-ZETBC
  AND VBELF = GFD_VBELN
  AND POSNF = GFD_POSNR.

  IF SY-SUBRC = 0.
    IF GTTC-MATNR NE GT_LIPS-MATNR AND GTTC-VBELN IS NOT INITIAL.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '物料不一致!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ELSE.
*      SELECT SINGLE MAKTX INTO GFD_MAKTX
*        FROM MAKT
*        WHERE MATNR = GTTC-MATNR
*        AND SPRAS = SY-LANGU.

      IF GTTC-VBELN NE GT_LIPS-VGBEL AND GTTC-VBELN IS NOT INITIAL.
        CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

        CONCATENATE '销售单不一致!' ''  INTO GFD_MES.
        CALL SCREEN SCRN_IMSG.
      ELSE.
        CASE GTTC-ZERFS.
          WHEN  '05' .
            DELETE GTTC WHERE ZETBC = GTTC-ZETBC.
            IF SY-SUBRC = 0.
              MESSAGE  '删除成功!' TYPE 'S' .
              GFD_SMNGE = GFD_SMNGE - 1.
              GFD_ZVIMG = GFD_ZVIMG - GTTC-MENGE.
            ENDIF.
          WHEN '06'.
            
            "将托条码状态更新为05状态
            GTTC-ZERFS = '05'.
            GTTC-ZECHL = ''.
            UPDATE ZTTBC FROM GTTC.


            REFRESH:GTDC.

            SELECT * INTO CORRESPONDING FIELDS OF TABLE GTDC
              FROM ZTMBC
              WHERE ZETBC = GTTC-ZETBC
              AND ZERFS = '06'.

            LOOP AT GTDC INTO ZTMBC.
              ZTMBC-ZERFS = '05'.
              MODIFY GTDC FROM ZTMBC.
              CLEAR:ZTMBC.
            ENDLOOP.

            MODIFY ZTMBC FROM TABLE GTDC.

            DELETE GTTC WHERE ZETBC = GTTC-ZETBC.
            IF SY-SUBRC = 0.
              GFD_SMNGE = GFD_SMNGE - 1.
              GFD_XVIMG = GFD_XVIMG  - GTTC-MENGE.
            ELSE.
              GFD_XVIMG = GFD_XVIMG - GTTC-MENGE.  "已保存扫描数
              GFD_ZVIMG = GFD_ZVIMG - GTTC-MENGE.

            ENDIF.
            GFD_JVIMG = GFD_JVIMG + GTTC-MENGE.

            PERFORM FRM_DEL3013_LOG.

            MESSAGE  '删除成功!' TYPE 'S' .
          WHEN OTHERS.
            CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

            CONCATENATE '托条码未装车!' ''  INTO GFD_MES.
            CALL SCREEN SCRN_IMSG.
        ENDCASE.
      ENDIF.
    ENDIF.
  ELSE.
    DELETE GTTC WHERE ZETBC = TMBC-ZETBC.
    IF SY-SUBRC = 0.

      SELECT SINGLE * INTO CORRESPONDING FIELDS OF GTTC
        FROM ZTTBC
        WHERE ZETBC = TMBC-ZETBC.

      GFD_SMNGE = GFD_SMNGE - 1.
      GFD_ZVIMG = GFD_ZVIMG - GTTC-MENGE.
      MESSAGE  '删除成功!' TYPE 'S' .
    ELSE.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '条码未装车!' ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ENDIF.
  ENDIF.


2.2.23 "不进行条码管理,则只对数量进行确认装车

  DATA:L_ZTLIPS TYPE ZTLIPS.
  SELECT SINGLE * INTO CORRESPONDING FIELDS OF L_ZTLIPS
    FROM ZTLIPS
    WHERE VBELN = GFD_VBELN
    AND POSNR = GFD_POSNR.

  CASE L_ZTLIPS-ZERFS.
    WHEN '05'.
      L_ZTLIPS-ZFIMG = GFD_XVIMG.
      L_ZTLIPS-ZERFS = '06'.

      MODIFY ZTLIPS FROM L_ZTLIPS.

      PERFORM FRM_SAVEYSK_3013.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '交货单未拣配!' '' INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
  ENDCASE.


2.2.24"对运输单进行最终确认

  DATA:L_CONT TYPE C.
  DATA:L_LINX TYPE I.
  DATA:L_ETENR TYPE ZTYSD-ETENR.

  DATA:L_ZTTBC_C LIKE ZTTBC_C OCCURS 0 WITH HEADER LINE.
  DATA:T_LIKP LIKE LIKP OCCURS 0 WITH HEADER LINE.

  DATA:ZLINX TYPE I.

  ZLINX = 0.


  DATA:ID       LIKE  THEAD-TDID,
       LANGUAGE LIKE  THEAD-TDSPRAS,
       NAME     LIKE  THEAD-TDNAME,
       OBJECT   LIKE  THEAD-TDOBJECT.

  DATA:LINES  LIKE  TLINE OCCURS 0 WITH HEADER LINE.

  CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
  GFD_MES = TITLE_XSZC.
  GFD_MES1 = '是否确认运输单'.

  CALL SCREEN SCRN_WMSG.

  IF G_ANS = 'Y'.

    REFRESH:L_ZTTBC_C,T_LIKP.

    REFRESH:GR_ZERFS.

    CLEAR:GR_ZERFS.
    GR_ZERFS-SIGN = 'I'.
    GR_ZERFS-OPTION = 'EQ'.
    GR_ZERFS-LOW = '06'.   "装车
    APPEND GR_ZERFS.

    CLEAR:GT_ZTYSK.
    REFRESH:GT_ZTYSP.

2.2.25"获取运输单抬头信息

    SELECT SINGLE * INTO CORRESPONDING FIELDS OF GT_ZTYSK
      FROM ZTYSK
      WHERE ZEYSO = GFD_ZEYSO.
    IF SY-SUBRC <> 0.
      CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

      CONCATENATE '运输单不存在'  ''  INTO GFD_MES.
      CALL SCREEN SCRN_IMSG.
    ELSE.
      IF GT_ZTYSK-KZERM = 'X'.
        MESSAGE '运输单已经确认' TYPE 'S'.
      ELSE.
        CLEAR:L_CONT.

2.2.26"获取运输单行项目信息

        SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_ZTYSP
          FROM ZTYSP
          WHERE ZEYSO = GFD_ZEYSO.

        DESCRIBE TABLE GT_ZTYSP LINES ZLINX.
        IF ZLINX <> 0.
          REFRESH:GT_LIPS.

2.2.27"获取交货单明细信息

          SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_LIPS
            FROM LIPS
            FOR ALL ENTRIES IN GT_ZTYSP
            WHERE VBELN = GT_ZTYSP-VBELN.
        ELSE.
          CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

          CONCATENATE '运输单没有行项目' ''  INTO GFD_MES.
          CALL SCREEN SCRN_IMSG.
          L_CONT = 'X'.
        ENDIF.
"更新库存地
        LOOP AT GT_LIPS.
          CLEAR:GFD_MARK,GFD_MTART.

          GFD_LGORT = GT_LIPS-LGORT.

          IF GFD_LGORT IS INITIAL.
            SELECT SINGLE LGORT INTO GFD_LGORT
            FROM ZTLORT
            WHERE VBELN = GT_LIPS-VBELN
            AND POSNR = GT_LIPS-POSNR.
          ENDIF.

          CLEAR:GFD_XVIMG.
          SELECT SINGLE MTART INTO GFD_MTART
            FROM MARA
            WHERE MATNR = GT_LIPS-MATNR.

          SELECT SINGLE ZMARK INTO GFD_MARK
            FROM ZTMGL
            WHERE WERKS = GT_LIPS-WERKS
            AND LGORT = GFD_LGORT.

          IF GFD_MARK = 'X'.
            SELECT SUM( ZFIMG ) INTO GFD_XVIMG
              FROM ZTLIPS
              WHERE VBELN = GT_LIPS-VBELN
              AND POSNR = GT_LIPS-POSNR
              AND ZERFS IN GR_ZERFS.
          ELSE.

2.2.28"获取装车数量,并进行校验

            CASE GFD_MTART.
              WHEN 'ND01' OR 'NDK1'.
                SELECT SUM( MENGE ) INTO GFD_XVIMG
                  FROM ZTTBC
                  WHERE VBELF = GT_LIPS-VBELN
                  AND POSNF = GT_LIPS-POSNR
                  AND ZERFS IN GR_ZERFS.
              WHEN OTHERS .
                SELECT SUM( ZFIMG ) INTO GFD_XVIMG
                  FROM ZTLIPS
                  WHERE VBELN = GT_LIPS-VBELN
                  AND POSNR = GT_LIPS-POSNR
                  AND ZERFS IN GR_ZERFS.
            ENDCASE.
          ENDIF.

          IF GFD_XVIMG <>  GT_LIPS-LFIMG.
            L_CONT = 'X'.
            CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.

            CONCATENATE '运输单' ''  INTO GFD_MES.
            CONCATENATE '交货单' GT_LIPS-VBELN INTO GFD_MES1.
            CONCATENATE '项目' GT_LIPS-POSNR '装车数量不足!' INTO GFD_MES2.
            CALL SCREEN SCRN_IMSG.
            L_CONT = 'X'.
          ELSE.

          ENDIF.

          CLEAR:GT_LIPS.
        ENDLOOP.

2.2.29"获取托条码信息,并更新托条码

        IF L_CONT IS INITIAL.
          SELECT * INTO CORRESPONDING FIELDS OF TABLE L_ZTTBC_C
            FROM ZTTBC
            FOR ALL ENTRIES IN GT_ZTYSP
            WHERE VBELF = GT_ZTYSP-VBELN
            AND POSNF = GT_ZTYSP-POSNR
            AND VBELN EQ ''.

          SORT GT_LIPS BY VBELN POSNR.

          LOOP AT L_ZTTBC_C.
            CLEAR:GT_LIPS.
            READ TABLE GT_LIPS WITH KEY VBELN = L_ZTTBC_C-VBELF POSNR = L_ZTTBC_C-POSNF BINARY SEARCH.
            L_ZTTBC_C-VBELN = GT_LIPS-VGBEL.
            L_ZTTBC_C-POSNR = GT_LIPS-VGPOS.
            L_ZTTBC_C-ZZMAT = GT_LIPS-MATNR.

            CLEAR:GT_ZTYSP.
            READ TABLE GT_ZTYSP WITH KEY VBELN = L_ZTTBC_C-VBELF POSNR = L_ZTTBC_C-POSNF.
            L_ZTTBC_C-JSORT = GT_ZTYSP-LGORT.
            IF L_ZTTBC_C-JSORT IS INITIAL.
              L_ZTTBC_C-JSORT = L_ZTTBC_C-LGORT.
            ENDIF.

            T_LIKP-VBELN = L_ZTTBC_C-VBELF.
            COLLECT T_LIKP.

            MODIFY L_ZTTBC_C.
            CLEAR:L_ZTTBC_C.
          ENDLOOP.

          MODIFY ZTTBC_C FROM TABLE L_ZTTBC_C.

          WAIT UP TO 1 SECONDS.

          IF LINES( L_ZTTBC_C ) <> 0.
            CALL FUNCTION 'ZMM_TRANS_MATNR' STARTING NEW TASK 'ZMM_TRANS_MATNR'
*              IMPORTING
*                O_FLAG = L_CONT
              TABLES
                T_LIKP = T_LIKP.

            IF L_CONT IS NOT INITIAL.

              CLEAR:L_CONT.

*              CLEAR:GFD_MES,GFD_MES1,GFD_MES2,GFD_MES3,GFD_MES4.
*
*              CONCATENATE '运输单' ''  INTO GFD_MES.
*              CONCATENATE '库存不足' '不能确认!' INTO GFD_MES1.
*              CALL SCREEN SCRN_IMSG.
            ENDIF.
          ENDIF.
        ENDIF.

        IF L_CONT IS INITIAL.
          GT_ZTYSK-KZERM = 'X'.

2.2.30"获取装车重量,用以计算运费

          SELECT SUM( BRGEW ) INTO GT_ZTYSK-BRGEW
            FROM ZTYSP
            WHERE ZEYSO = GFD_ZEYSO
            ."AND MTART IN ('ND01','NDK1').

          GT_ZTYSK-PRSDT = SY-DATUM.

          READ TABLE GT_ZTYSP INDEX 1.

          CLEAR:ID,LANGUAGE,NAME,OBJECT.
          REFRESH:LINES .

2.2.31"获取送货地址及电话

          ID = 'Z001'.
          OBJECT = 'VBBK'.
          CONCATENATE GT_ZTYSP-VBELN '' INTO NAME.

          CALL FUNCTION 'READ_TEXT'
            EXPORTING
*             CLIENT                  = SY-MANDT
              ID                      = ID
              LANGUAGE                = SY-LANGU
              NAME                    = NAME
              OBJECT                  = OBJECT
            TABLES
              LINES                   = LINES
            EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
          IF SY-SUBRC <> 0.
* Implement suitable error handling here
          ENDIF.

          CLEAR:GT_ZTYSK-SHADR.

          LOOP AT LINES.
            CONCATENATE GT_ZTYSK-SHADR LINES-TDLINE INTO GT_ZTYSK-SHADR.
            CLEAR:LINES.
          ENDLOOP.

          CLEAR:ID,LANGUAGE,NAME,OBJECT.
          REFRESH:LINES .

          ID = 'Z005'.
          OBJECT = 'VBBK'.
          CONCATENATE GT_ZTYSP-VBELN '' INTO NAME.

          CALL FUNCTION 'READ_TEXT'
            EXPORTING
*             CLIENT                  = SY-MANDT
              ID                      = ID
              LANGUAGE                = SY-LANGU
              NAME                    = NAME
              OBJECT                  = OBJECT
            TABLES
              LINES                   = LINES
            EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
          IF SY-SUBRC <> 0.
* Implement suitable error handling here
          ENDIF.

          CLEAR:GT_ZTYSK-CATNM.
          LOOP AT LINES.
            CONCATENATE GT_ZTYSK-CATNM LINES-TDLINE INTO GT_ZTYSK-CATNM.
            CLEAR:LINES.
          ENDLOOP.

          CLEAR:ID,LANGUAGE,NAME,OBJECT.
          REFRESH:LINES .

          ID = 'Z006'.
          OBJECT = 'VBBK'.
          CONCATENATE GT_ZTYSP-VBELN '' INTO NAME.

          CALL FUNCTION 'READ_TEXT'
            EXPORTING
*             CLIENT                  = SY-MANDT
              ID                      = ID
              LANGUAGE                = SY-LANGU
              NAME                    = NAME
              OBJECT                  = OBJECT
            TABLES
              LINES                   = LINES
            EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
          IF SY-SUBRC <> 0.
* Implement suitable error handling here
          ENDIF.

          CLEAR:GT_ZTYSK-CATNO.
          LOOP AT LINES.
            CONCATENATE GT_ZTYSK-CATNO LINES-TDLINE INTO GT_ZTYSK-CATNO.
            CLEAR:LINES.
          ENDLOOP.

          CLEAR:ID,LANGUAGE,NAME,OBJECT.
          REFRESH:LINES .

          ID = 'Z007'.
          OBJECT = 'VBBK'.
          CONCATENATE GT_ZTYSP-VBELN '' INTO NAME.

          CALL FUNCTION 'READ_TEXT'
            EXPORTING
*             CLIENT                  = SY-MANDT
              ID                      = ID
              LANGUAGE                = SY-LANGU
              NAME                    = NAME
              OBJECT                  = OBJECT
            TABLES
              LINES                   = LINES
            EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
          IF SY-SUBRC <> 0.
* Implement suitable error handling here
          ENDIF.

          CLEAR:GT_ZTYSK-KTEXT.
          LOOP AT LINES.
            CONCATENATE GT_ZTYSK-KTEXT LINES-TDLINE INTO GT_ZTYSK-KTEXT.
            CLEAR:LINES.
          ENDLOOP.

          MODIFY ZTYSK FROM GT_ZTYSK.
          IF SY-SUBRC = 0.

            REFRESH:GTTC.
            L_LINX = 0.

            DESCRIBE TABLE GT_ZTYSP LINES L_LINX.

            IF L_LINX <> 0.
              SORT GT_ZTYSP BY VBELN POSNR.

2.2.32"通过托条码,获取交货单的批次信息

              SELECT * INTO CORRESPONDING FIELDS OF TABLE GTTC
                FROM ZTTBC
                FOR ALL ENTRIES IN GT_ZTYSP
                WHERE VBELF = GT_ZTYSP-VBELN
                AND POSNF = GT_ZTYSP-POSNR.

              REFRESH:GT_ZTYSD.
              SORT GT_LIPS BY VBELN POSNR.

              LOOP AT GTTC.
                CLEAR:GT_ZTYSD.
                GT_ZTYSD-ZEYSO = GFD_ZEYSO.

                CLEAR:GT_ZTYSP.
                READ TABLE GT_ZTYSP WITH KEY VBELN = GTTC-VBELF POSNR = GTTC-POSNF.
                GT_ZTYSD-ZITEM = GT_ZTYSP-ZITEM.

                GT_ZTYSD-CHARG = GTTC-CHARG.
                GT_ZTYSD-LFIMG = GTTC-MENGE.
                GTTC-LGORT = GT_ZTYSP-LGORT.
                GTTC-ZZMAT = GTTC-MATNR.

                COLLECT GT_ZTYSD.

                CLEAR:GT_LIPS.
                READ TABLE GT_LIPS WITH KEY VBELN = GTTC-VBELF POSNR = GTTC-POSNF BINARY SEARCH.
                GTTC-VBELN = GT_LIPS-VGBEL.
                GTTC-POSNR = GT_LIPS-VGPOS.
                GTTC-MATNR = GT_LIPS-MATNR.


                MODIFY GTTC.
                CLEAR:GTTC.
              ENDLOOP.

              MODIFY ZTTBC FROM TABLE GTTC.

              SORT GT_ZTYSD BY ZEYSO ZITEM CHARG.

              L_ETENR = '0001'.

              LOOP AT GT_ZTYSD.
                AT NEW ZITEM.
                  L_ETENR = '0001'.
                ENDAT.

                GT_ZTYSD-ETENR = L_ETENR.
                L_ETENR = L_ETENR + 1.

                MODIFY GT_ZTYSD.
              ENDLOOP.

              DELETE FROM ZTYSD WHERE ZEYSO = GFD_ZEYSO.

              MODIFY ZTYSD FROM TABLE GT_ZTYSD.

            ENDIF.
            PERFORM FRM_3011LOG.

            MESSAGE '运输单确认成功' TYPE 'S'.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.

 

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值