• SAP ABAP批次增强


      需要先等业务顾问配置之后,才生效。这里是按照移动类型类配置是否生成批次,这里以T156-CHNEU区分是否需要批次。

    一、MIGO过账BADI中,IF_EX_MB_MIGO_BADI~LINE_MODIFY

    DATA:nextnum   TYPE i,
           lv_numadd TYPE numc4.
      DATA: lv_xcharg TYPE mcha-charg.
      DATA i_item LIKE TABLE OF cs_goitem.
      DATA w_item LIKE cs_goitem.
    **自动填批次
    *  BREAK it0003.
    *  CASE cs_goitem-bwart.
    *    WHEN '101' OR '202' OR '501' OR '511' OR '561' OR '301'.
      SELECT SINGLE chneu
        INTO @DATA(lv_chneu)
        FROM t156
       WHERE bwart EQ @cs_goitem-bwart.
      CASE lv_chneu.
        WHEN 'A' OR 'B' OR 'C' OR 'D' OR 'E' OR 'F'.
          IF cs_goitem-charg EQ space ."AND cs_goitem-mblnr NE ''.
            IMPORT t1 TO i_item FROM MEMORY ID 'ITM'.
            SELECT SINGLE xchpf
              INTO @DATA(lv_xchpf)
              FROM mara
             WHERE matnr EQ @cs_goitem-matnr.
            IF sy-subrc EQ 0.
              IF lv_xchpf EQ 'X'.
                SELECT charg
                    INTO @lv_xcharg UP TO 1 ROWS
                    FROM mch1
                    WHERE
                          ersda EQ @sy-datum AND
                          matnr EQ @cs_goitem-matnr
    *                    AND werks EQ @x_bncom-werks
                    ORDER BY charg DESCENDING.
                ENDSELECT.
    
                IF lv_xcharg NE ''.
                  lv_numadd = lv_xcharg+6(4) + 1.
                ELSE.
                  lv_numadd = 1.
                ENDIF.
                cs_goitem-charg = |{ sy-datum+2(6) }{ lv_numadd ALPHA = IN }|.
              ENDIF.
            ENDIF.
            READ TABLE i_item INTO DATA(ls_item2) WITH KEY zeile = cs_goitem-zeile"
                                                           matnr = cs_goitem-matnr.
            IF sy-subrc NE 0.
              SORT i_item BY matnr charg DESCENDING.
              LOOP AT i_item INTO w_item WHERE matnr = cs_goitem-matnr
                                           AND charg NE space.
                IF lv_xcharg LT w_item-charg.
                  cs_goitem-charg = w_item-charg + 1.
                ENDIF.
                EXIT.
              ENDLOOP.
    
              APPEND cs_goitem TO i_item.
    
              EXPORT t1 FROM i_item TO MEMORY ID 'ITM'.
            ENDIF.
    *        CLEAR cs_goitem-charg.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.
    *        WHEN OTHERS.
    *        ENDCASE.
    *    ENDIF.
    View Code

    二、原本按照配置是在出口 SE38-> ZXVBZU02 中,但不知为什么,始终不进入该出口位置。

    下面四个出口是原本按照配置该进入的。

    ZXVBZU01
    ZXVBZU02
    ZXVBZU03
    ZXVBZU04

    回到出口调用处SE37->VB_NEXT_BATCH_NUMBER

      

    * 内部批次号增强 TYH
    *  break it0003.
      DATA: i_item LIKE TABLE OF GOITEM,
            LS_ITEM LIKE GOITEM.
      DATA:nextnum   TYPE i,
           lv_numadd TYPE numc4.
      DATA: lv_xcharg TYPE mcha-charg.
    *  CASE x_bncom-bwart.
    *    WHEN '101' OR '202' OR '501' OR '511' OR '561' OR '301'.
      SELECT SINGLE chneu
        INTO @DATA(lv_chneu)
        FROM t156
       WHERE bwart EQ @x_bncom-bwart.
      CASE lv_chneu.
        WHEN 'A' OR 'B' OR 'C' OR 'D' OR 'E' OR 'F'.
          IF new_charg+0(6) ne sy-datum+2(6).
            IMPORT t1 TO i_item FROM MEMORY ID 'ITM'.
              SELECT charg
                INTO @lv_xcharg UP TO 1 ROWS
                FROM mch1
                WHERE
                      ersda EQ @sy-datum AND
                      matnr EQ @x_bncom-matnr
    *              AND werks EQ @x_bncom-werks
                ORDER BY charg DESCENDING.
              ENDSELECT.
              IF lv_xcharg NE ''.
                lv_numadd = lv_xcharg+6(4) + 1.
              ELSE.
                lv_numadd = 1.
              ENDIF.
    
              new_charg = |{ sy-datum+2(6) }{ lv_numadd ALPHA = IN }|.
              allow_existing_batch = 0.
              SORT i_item BY matnr zeile charg DESCENDING.
    
              LOOP AT i_item INTO LS_ITEM WHERE matnr = x_bncom-matnr
                                           AND charg NE space.
    *            IF new_charg LT LS_ITEM-charg.
    *              new_charg = LS_ITEM-charg + 1.
    *            ENDIF.
                new_charg = LS_ITEM-charg.
                delete i_item[].
                EXIT.
              ENDLOOP.
              MOVE-CORRESPONDING X_BNCOM TO LS_ITEM.
              LS_ITEM-CHARG = new_charg.
              APPEND x_bncom TO i_item.
              EXPORT t1 FROM i_item TO MEMORY ID 'ITM'.
            ENDIF.
        WHEN OTHERS.
      ENDCASE.
    *  WHEN OTHERS.
    *  ENDCASE.
    View Code
  • 相关阅读:
    maven工程下 读取resource下配置文件
    js生成二维码以及点击下载二维码
    RGB颜色值与十六进制颜色码对照表
    用Java实现给图片添加文字
    CryptoAPI与openssl数字签名与验证交互
    CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
    openssl与cryptoAPI交互AES加密解密
    JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
    Java与.NET兼容的RSA密钥持久化方法
    .NET导入openssl生成的公钥之BEGIN RSA PUBLIC KEY
  • 原文地址:https://www.cnblogs.com/chaguoguo/p/16333088.html
Copyright © 2020-2023  润新知