• 采购单未收货明细范例


    REPORT  Y001.
    TABLESEKKO,EKET,EKPO.
    * 定义内表
    DATABEGIN OF ITAB OCCURS 0,
          EBELN LIKE EKKO-EBELN,
          MENGE LIKE EKPO-MENGE,
          WEMNG LIKE EKET-WEMNG,
    END OF ITAB.

    * 定义数据
    DATAMATNR LIKE EKPO-MATNR,
        MENGE LIKE EKPO-MENGE,
          WEMNG LIKE EKET-WEMNG,
          EBELN LIKE EKPO-EBELN.

    * 定义选择屏幕
    SELECT-OPTIONSEBELN1 FOR EKKO-EBELN,
                    BEDAT FOR EKKO-BEDAT,
                    EKGRP FOR EKKO-EKGRP.
    PARAMETERSR1 RADIOBUTTON GROUP RADI,
                R2 RADIOBUTTON GROUP RADI,
                R3 RADIOBUTTON GROUP RADI.

    * 查询数据
    SELECT K~EBELN INTO CORRESPONDING FIELDS OF TABLE ITAB
    FROM EKKO AS K
    WHERE K~EBELN IN EBELN1
      AND K~BEDAT IN BEDAT
      AND K~EKGRP IN EKGRP.

    LOOP AT ITAB.
    SELECT SUMMENGE INTO ITAB-MENGE FROM EKPO
    WHERE EBELN EQ ITAB-EBELN.
    MODIFY ITAB.
    ENDLOOP

    LOOP AT ITAB.
    SELECT SUMWEMNG INTO ITAB-WEMNG FROM EKET
    WHERE EBELN EQ ITAB-EBELN.
    MODIFY ITAB.
    ENDLOOP.

    * 定义输出界面
    TOP-OF-PAGE .
    WRITE/'采购凭证号',
         22 '物料号码',
         47 '采购订单数量',
         77 '收到货物数量',
         95 '完成标志'.
    ULINE AT /1(130).
    END-OF-PAGE .

    START-OF-SELECTION.

    * 数据输出
    IF R1 'X'.
    LOOP AT ITAB.
    SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
    INTO (MATNRMENGEWEMNGEBELN)
    FROM EKPO AS S INNER JOIN EKET AS P
    ON S~EBELP P~EBELP AND S~EBELN P~EBELN
    WHERE S~EBELN ITAB-EBELN.
    IF ITAB-MENGE > ITAB-WEMNG.
    WRITE/2 EBELN,23 MATNR,41 MENGE,71 WEMNG,97 '否'.
    ULINE AT /1(130).
    CLEAREBELN,MATNR,MENGE,WEMNG.
    ENDIF.
    ENDSELECT.
    ENDLOOP.

    ELSEIF R2 'X'.
    LOOP AT ITAB.
    SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
    INTO (MATNRMENGEWEMNGEBELN)
    FROM EKPO AS S INNER JOIN EKET AS P
    ON S~EBELP P~EBELP AND S~EBELN P~EBELN
    WHERE S~EBELN ITAB-EBELN.
    IF ITAB-MENGE <= ITAB-WEMNG.
    WRITE/2 EBELN,23 MATNR,41 MENGE,71 WEMNG,97 '是'.
    ULINE AT /1(130).
    CLEAREBELN,MATNR,MENGE,WEMNG.
    ENDIF.
    ENDSELECT.
    ENDLOOP.
    ELSE.

    LOOP AT ITAB

    SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
    INTO (MATNRMENGEWEMNGEBELN)
    FROM EKPO AS S INNER JOIN EKET AS P
    ON S~EBELP P~EBELP AND S~EBELN P~EBELN
    WHERE S~EBELN ITAB-EBELNIF ITAB-MENGE > ITAB-WEMNG.
    WRITE/2 EBELN23 MATNR,41 MENGE,71 WEMNG,97 '否'.
    ULINE AT /1(130).
    CLEAREBELN,MATNR,MENGE,WEMNG.
    ENDIF.
    ENDSELECT.
    ENDLOOP.
    ENDIF.

    LOOP AT ITAB.
    IF R3 'X' AND ITAB-MENGE <= ITAB-WEMNG.
    SELECT S~MATNR S~MENGE P~WEMNG S~EBELN
    INTO (MATNRMENGEWEMNGEBELN)
    FROM EKPO AS S INNER JOIN EKET AS P
    ON S~EBELP P~EBELP AND S~EBELN P~EBELN
    WHERE S~EBELN ITAB-EBELN.
    WRITE/2 EBELN,23 MATNR,41 MENGE,71 WEMNG,97 '是'.
    ULINE AT /1(130).
    CLEAREBELN,MATNR,MENGE,WEMNG.
    ENDSELECT.
    ENDIF.
    ENDLOOP.

  • 相关阅读:
    Ch5 关联式容器(上)
    Ch4 序列式容器(下)
    Ch4 序列式容器(上)
    DNN模型学习笔记
    关于换博客的说明
    睡前一小时数学之导数的学习与证明
    OpenJudge 666:放苹果 // 瞎基本DP
    OpenJudge 2990:符号三角形 解析报告
    OpenJudge1700:八皇后问题 //不属于基本法的基本玩意
    BZOJ1088扫雷Mine 解析报告
  • 原文地址:https://www.cnblogs.com/sanlly/p/3520511.html
Copyright © 2020-2023  润新知