abap program sample

****************************************************

*TITLE:BUY DOWN REPORT(RFQ PRICE DIFFERECE)

*TRANSACETION CODE:ZNC17

*AUTHOR:RICHARD L. CHANG

*DEVELPMENT DATE:2002.07.02~2002.07.03

****************************************************

REPORT ZRCO_NSG_0017 no standard page heading line-size 93.

 

TABLES:A902,KONP,MBEW,AMPL.

 

DATA:BEGIN OF ITAB OCCURS 0,

     MATNR LIKE A902-MATNR,             "MATERIAL NUMBER

     werks like a902-werks,

     CURRENT_KNUMH LIKE A902-KNUMH,

     PREVIOUS_KNUMH LIKE A902-KNUMH,

     CURRENT_KBETR LIKE KONP-KBETR,     "CURRENT RATE

     PREVIOUS_KBETR LIKE KONP-KBETR,    "PREVIOUS RATE

     KONWA LIKE KONP-KONWA,             "CURRENCY

     CURRENT_KPEIN LIKE KONP-KPEIN,     "CURRENT PRICE UNIT

     PREVIOUS_KPEIN LIKE KONP-KPEIN,    "PREVIOUS PRICE UNIT

     VARIA LIKE KONP-KBETR,

     LBKUM LIKE MBEW-LBKUM,             "STOCK

     SALK3 LIKE MBEW-SALK3,             "VALUE OF BUY DOWN

     DATBI LIKE A902-DATBI,           "TEMP DATE

     END OF ITAB.

DATA:TOTAL LIKE MBEW-SALK3.

*DATA:ITAB_VALID LIKE ITAB OCCURS 0 WITH HEADER LINE.

 

SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

parameters:    in_ekorg like a902-ekorg .

parameters:PLANT LIKE A902-WERKS DEFAULT 'ACEA'.

SELECT-OPTIONS:in_bklas FOR mbew-bklas." NO-EXTENSION NO INTERVALS.

SELECT-OPTIONS:MATERIAL FOR A902-MATNR.

SELECT-OPTIONS:DATE FOR A902-DATAB .

SELECTION-SCREEN:END OF BLOCK B1.

 

START-OF-SELECTION.

 

  clear itab. refresh itab.

 

  SELECT matnr bwkey sum( LBKUM )

     INTO (itab-matnr,itab-werks,ITAB-LBKUM)

     FROM MBEW

     WHERE MATNR in material

     and   BKLAS in in_bklas

     and   bwkey = plant

     group by matnr bwkey.

 

    if itab-lbkum > 0.

      append itab.

    endif.

  ENDSELECT.

  DELETE ADJACENT DUPLICATES FROM ITAB COMPARING MATNR.

 

*************************BEGIN TO SELECT DATA**********************

  loop at itab.

    SELECT single

           A902~KNUMH

*         A902~DATAB

           KONP~KBETR

           KONP~KONWA

           KONP~KPEIN

           INTO (ITAB-CURRENT_KNUMH,

*               ITAB-DATBI,

                 ITAB-CURRENT_KBETR,

                 ITAB-KONWA,

                 ITAB-CURRENT_KPEIN)

           FROM A902 INNER JOIN KONP ON KONP~KNUMH = A902~KNUMH

           WHERE matnr = itab-matnr AND

                 WERKS = itab-werks AND

                 A902~KSCHL = 'ZP01' AND

                 A902~DATBI >= DATE-HIGH AND

                 A902~DATAB <= DATE-HIGH and

                 a902~ekorg = in_ekorg.

    ITAB-CURRENT_KBETR = ITAB-CURRENT_KBETR * 1000 / ITAB-CURRENT_KPEIN.

*    APPEND ITAB.

    modify itab.

  endloop.

  LOOP AT ITAB.

    SELECT single A902~KNUMH

           KONP~KBETR

           KONP~KPEIN

        INTO (ITAB-PREVIOUS_KNUMH,

              ITAB-PREVIOUS_KBETR,

              ITAB-PREVIOUS_KPEIN)

        FROM A902 INNER JOIN KONP ON A902~KNUMH = KONP~KNUMH

        WHERE MATNR = ITAB-MATNR AND

              A902~DATBI >= DATE-LOW AND

              A902~DATAB <= DATE-LOW and

              a902~KSCHL = 'ZP01' and

              WERKS = itab-werks AND

              ekorg = in_ekorg.

     IF SY-SUBRC <> 0.

       SELECT MIN( DATBI )

         INTO ITAB-DATBI

         FROM A902

         WHERE A902~KSCHL = 'ZP01' AND

               DATBI > DATE-LOW AND

               MATNR = ITAB-MATNR.

 

        SELECT single A902~KNUMH

           KONP~KBETR

           KONP~KPEIN

        INTO (ITAB-PREVIOUS_KNUMH,

              ITAB-PREVIOUS_KBETR,

              ITAB-PREVIOUS_KPEIN)

        FROM A902 INNER JOIN KONP ON A902~KNUMH = KONP~KNUMH

        WHERE MATNR = ITAB-MATNR AND

              A902~DATBI = ITAB-DATBI AND

              a902~KSCHL = 'ZP01' and

              WERKS = itab-werks AND

              ekorg = in_ekorg.

    ENDIF.

 

    ITAB-PREVIOUS_KBETR = ITAB-PREVIOUS_KBETR * 1000 /

                          ITAB-PREVIOUS_KPEIN.

    ITAB-VARIA = ITAB-PREVIOUS_KBETR - ITAB-CURRENT_KBETR.

    ITAB-SALK3 = ITAB-VARIA * ITAB-LBKUM / 1000.

    MODIFY ITAB .

  ENDLOOP.

 

*LOOP AT ITAB.

*  SELECT BMATN

*         INTO ITAB-MATNR

*         FROM AMPL

*         WHERE AMPL~EMATN = ITAB-MATNR.

*         MODIFY ITAB .

*    ENDSELECT.

*ENDLOOP.

 

*  DELETE ADJACENT DUPLICATES FROM ITAB COMPARING MATNR.

 

*LOOP AT ITAB.

*

*ENDLOOP.

************************END OF SELECTION DATA**********************

 

  PERFORM OUTPUT.

*&---------------------------------------------------------------------*

*&      Form  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM OUTPUT.

 

  LOOP AT ITAB.

    WRITE:/ '|',

          ITAB-MATNR UNDER 'Material Number ',

          18 '|',

          (13) ITAB-PREVIOUS_KBETR UNDER 'Previous Price/KPC' ,

          33 '|',

          (13) ITAB-CURRENT_KBETR UNDER 'Current Price/KPC' ,

          47 '|',

          (10) ITAB-VARIA UNDER 'Variance/KPC' ,

          59 '|',

          (12) ITAB-LBKUM  unit 'ST' UNDER 'Total Stock/PC' ,

          72 '|',

          (13) ITAB-SALK3 UNDER 'Stock Variance/KPC' ,

          87 '|',

          ITAB-KONWA UNDER 'CUR.',93 SY-VLINE.

*     ULINE.

  ENDLOOP.

  ULINE.

*  WRITE: ' TOTAL(USD)', 12 ':',13 TOTAL .

*  write: / ' -----------------------------'.

ENDFORM.                    " OUTPUT

 

top-of-page.

  write:40 'Buy down Report'.

  write:/.

  uline.

    format color 1.

  WRITE:'|',

         2 'Material Number ' COLOR 1,

         18 '|',

         19 'Pre. Price/KPC' COLOR 1,

         33 '|',

         34 'Cur.Price/KPC' COLOR 1,

         47 '|',

         48 ' Var./KPC' COLOR 1,

         59 '|',

         60 'Total Stock' COLOR 1,

         72 '|',

         73 ' Stock Var.' COLOR 1,

         87 '|',

         88 'CUR.' COLOR 1,

         93 SY-VLINE.

  format color off.

  ULINE.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值