wip

FORM. GETDATA_MAIN.
  DATA: L_BUKRS LIKE T001-BUKRS,
        L_WKG(6) TYPE C,
        L_QTY LIKE COSB-WKG001,
        L_LEN  TYPE I,
        L_BTRQTY LIKE COEP-WKGBTR,
        L_COUNT TYPE I.

  DATA: STRCOND(50)  TYPE C,
        ISTRCOND LIKE TABLE OF STRCOND(50).

  RANGES R_OBJNR FOR COEP-OBJNR.
  RANGES R_BUKRS FOR T001-BUKRS.

    IF P_BUKRS <> ''.
      L_BUKRS = P_BUKRS.
    ELSE.
      SELECT SINGLE BUKRS INTO L_BUKRS FROM COEP
      WHERE WERKS = P_WERKS AND OBJNR LIKE 'OR%'
            AND GJAHR = P_GJAHR AND PERIO = P_PERIO.
    ENDIF.

    SELECT SINGLE WAERS SAKLN INTO (L_WAERS,L_SAKLN)
    FROM T001 INNER JOIN T004 ON T001~KTOPL = T004~KTOPL
    WHERE BUKRS = L_BUKRS.

    R_BUKRS-SIGN = 'I'.
    R_BUKRS-OPTION = 'EQ'.
    R_BUKRS-LOW = L_BUKRS.
    APPEND R_BUKRS.

    IF L_WAERS = 'NTD'.
      EXCHANGE_R = 100.
    ELSE.
      EXCHANGE_R = 1.
    ENDIF.


    IF P_AUFNR <> ''.
       LOOP AT P_AUFNR.
          IF P_AUFNR-LOW <> '' AND P_AUFNR-HIGH <> ''.
            R_OBJNR-LOW = 'OR'.
            R_OBJNR-HIGH = 'OR'.
            R_OBJNR-LOW+2 = P_AUFNR-LOW.
            R_OBJNR-HIGH+2 = P_AUFNR-HIGH.
            R_OBJNR-SIGN = 'I'.
            R_OBJNR-OPTION = 'BT'.
          ELSEIF P_AUFNR-LOW <> '' AND P_AUFNR-HIGH = ''.
            R_OBJNR-LOW = 'OR'.
            R_OBJNR-LOW+2 = P_AUFNR-LOW.
            R_OBJNR-SIGN = 'I'.
            R_OBJNR-OPTION = 'EQ'.
          ENDIF.

          APPEND R_OBJNR.


          SELECT DISTINCT OBJNR INTO ITAB-OBJNR
          FROM COEP
          WHERE WERKS = P_WERKS AND GJAHR = P_GJAHR AND OBJNR LIKE 'OR%'
                AND PERIO = P_PERIO AND BUKRS IN R_BUKRS
                AND MATNR IN P_MATNR AND OBJNR IN R_OBJNR.
            APPEND ITAB.

          ENDSELECT.
          CLEAR R_OBJNR.
          REFRESH R_OBJNR.
      ENDLOOP.

    ELSE.
        SELECT DISTINCT OBJNR INTO ITAB-OBJNR
          FROM COEP
          WHERE WERKS = P_WERKS AND GJAHR = P_GJAHR AND OBJNR LIKE 'OR%'
                AND PERIO = P_PERIO AND BUKRS IN R_BUKRS
                AND MATNR IN P_MATNR AND OBJNR IN R_OBJNR.
            APPEND ITAB.

          ENDSELECT.
    ENDIF.
    CLEAR R_OBJNR .
    REFRESH R_OBJNR.

    L_LEN = STRLEN( P_PERIO ).
    CONCATENATE 'WKG' P_PERIO INTO L_WKG.

    DATA:ICOUNT TYPE I,
          INUM TYPE I,
          IRECORD TYPE I,
          LINECOUNT TYPE I.

    CLEAR:ITMP,ITMP_E.
    REFRESH:ITMP,ITMP_E.

    LOOP AT ITAB.
      ICOUNT = ICOUNT + 1.
      R_OBJNR_1-SIGN = 'I'.
      R_OBJNR_1-OPTION = 'EQ'.
      R_OBJNR_1-LOW = ITAB-OBJNR.
      APPEND R_OBJNR_1.

      IF ICOUNT = 2000.
        IF R1 = 'X'.
          PERFORM. GET_WKG_FIRST USING L_WKG .
          PERFORM. GET_WKG_END USING L_WKG .
        ELSE.
          PERFORM. GET_MEG_WKG.
        ENDIF.

        PERFORM. GET_BTR USING 'MAT'.
        PERFORM. GET_BTR USING 'SUB'.
        PERFORM. GET_BTR USING 'OVH'.

        CLEAR:ICOUNT,R_OBJNR_1.
        REFRESH R_OBJNR_1.

      ENDIF.
    ENDLOOP.

    IF ICOUNT > 0 AND ICOUNT < 2000.
       IF R1 = 'X'.
          PERFORM. GET_WKG_FIRST USING L_WKG .
          PERFORM. GET_WKG_END USING L_WKG .
        ELSE.
          PERFORM. GET_MEG_WKG.
        ENDIF.

        PERFORM. GET_BTR USING 'MAT'.
        PERFORM. GET_BTR USING 'SUB'.
        PERFORM. GET_BTR USING 'OVH'.

        CLEAR:ICOUNT,R_OBJNR_1.
        REFRESH R_OBJNR_1.

    ENDIF.

    CLEAR: L_COUNT,L_PAGENO.

    DESCRIBE TABLE ITAB LINES IRECORD.
    LINECOUNT = 25.
    IRECORD = IRECORD - LINECOUNT + 1.

    LOOP AT ITAB.
      INUM = INUM + 1.
      L_COUNT = L_COUNT + 1.
      IF INUM < IRECORD.
        IF L_COUNT > LINECOUNT.
          L_PAGENO = L_PAGENO + 1.
          L_COUNT = 1.
        ENDIF.
      ELSEIF INUM = IRECORD.
          L_PAGENO = L_PAGENO + 2.
      ENDIF.

      ITAB_MAIN-PAGENO = L_PAGENO.

      ITAB_MAIN-AUFNR = ITAB-OBJNR+2(12).

      IF R1 = 'X'.

        LOOP AT ITMP WHERE ZLNID = 'MAT' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGFMAT = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.

        LOOP AT ITMP WHERE ZLNID = 'SUB' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGFSUB = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.

        LOOP AT ITMP WHERE ZLNID = 'OVH' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGFOVH = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.

        LOOP AT ITMP_E WHERE ZLNID = 'MAT' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGEMAT = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.

        LOOP AT ITMP_E WHERE ZLNID = 'SUB' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGESUB = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.

        LOOP AT ITMP_E WHERE ZLNID = 'OVH' AND BJNR = ITAB-OBJNR.
            ITAB_MAIN-WKGEOVH = ITMP-WKGQTY * EXCHANGE_R.
        ENDLOOP.
      ELSE.

        SELECT SINGLE MATNR INTO (ITAB_MAIN-MATNR)
        FROM AFPO WHERE AUFNR = ITAB_MAIN-AUFNR.

        LOOP AT ITAB_MEG_WKG WHERE BJNR = ITAB-OBJNR.
            ITAB_MAIN-MEGBTRALL = ITAB_MEG_WKG-MEGBTR.
            ITAB_MAIN-WKGBTRALL = ITAB_MEG_WKG-WKGBTR * EXCHANGE_R.
        ENDLOOP.

      ENDIF.

      LOOP AT ITAB_BTR_MAT WHERE BJNR = ITAB-OBJNR.
        ITAB_MAIN-BTRMAT = ITAB_BTR_MAT-WKGBTR * EXCHANGE_R.
      ENDLOOP.
      LOOP AT ITAB_BTR_SUB WHERE BJNR = ITAB-OBJNR.
        ITAB_MAIN-BTRSUB = ITAB_BTR_SUB-WKGBTR * EXCHANGE_R.
      ENDLOOP.
      LOOP AT ITAB_BTR_OVH WHERE BJNR = ITAB-OBJNR.
        ITAB_MAIN-BTROVH = ITAB_BTR_OVH-WKGBTR * EXCHANGE_R.
      ENDLOOP.


      APPEND ITAB_MAIN.
      CLEAR ITAB_MAIN.
    ENDLOOP.
ENDFORM.                    " GETDATA_MAIN

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666308/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14397246/viewspace-666308/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值