ABAP学习的一些范例程序

来源:互联网 发布:淘宝点了退款怎么取消 编辑:程序博客网 时间:2024/06/13 22:53

**************************ZWTEST3**************************

REPORT  ZWTEST3 LINE-SIZE 50 NO STANDARD PAGE HEADING.
data: pos(2) type C,
        len  type c,
        FIVE TYPE P DECIMALS 2.
DO 20 TIMES.
  FIVE = SY-INDEX / 5.
  FIVE = FIVE MOD 2.
  IF FIVE = 1.
    CONTINUE.
  ENDIF.
  POS = SY-INDEX.
  LEN = SY-INDEX MOD 3.
  IF POS < 10.
    WRITE: /1 '|',10 POS.
  ELSE.
    WRITE: /1 '|',9 POS.
  ENDIF.
  IF LEN = '0'.
    WRITE: 20 '|', 30 LEN COLOR 6,40 '|'.
  ELSE.
    WRITE: 20 '|', 30 LEN, 40 '|'.
  ENDIF.
  ULINE /(40).
ENDDO.

TOP-OF-PAGE.
  ULINE /(40).
  WRITE: /1 '|', (38) 'my first report' CENTERED ,40 '|'.
  ULINE /(40).

**************************ZWTEST3**************************


**************************ZWTEST4************************
REPORT  ZWTEST4 NO STANDARD PAGE HEADING LINE-SIZE 50.
datA: BEGIN OF tab OCCURS 0,
         one(2) type c,
         two type c,
         END OF tab.
data: five type p DECIMALS 2.
DO 20 TIMES.
  tab-one = sy-index.
  tab-two = sy-index mod 3.
  append tab.CLEAR tab.
ENDDO.
LOOP AT tab.
  FIVE = tab-one / 5.
  FIVE = FIVE MOD 2.
  IF FIVE <> 1.
    IF tab-one < 10.
      WRITE: /1 '|',10 tab-one.
    ELSE.
      WRITE: /1 '|',9 tab-one.
    ENDIF.
    IF tab-two = '0'.
      WRITE: 20 '|', 30 tab-two COLOR 6,40 '|'.
    ELSE.
      WRITE: 20 '|', 30 tab-two, 40 '|'.
    ENDIF.
    ULINE /(40).
  ENDIF.
ENDLOOP.

TOP-OF-PAGE.
  ULINE /(40).
  WRITE: /1 '|', (38) 'my first report' CENTERED ,40 '|'.
  ULINE /(40).

**************************ZWTEST4**************************

 

 

**************************ZWTEST5**************************
REPORT  ZWTEST5 NO STANDARD PAGE HEADING.
TABLES: mara.
data: zmara like mara OCCURS 0 WITH HEADER LINE.
DATA: N TYPE I VALUE 1.
*SELECT MATKL MATNR FROM MARA INTO CORRESPONDING FIELDS OF  ZMARA WHERE MATKL = '1001'.
*  APPEND ZMARA.CLEAR ZMARA.
*ENDSELECT.
*
*
*SELECT MATKL MATNR FROM MARA INTO (ZMARA-MATNR,ZMARA-MATKL) WHERE MATKL = '1001'.
*  APPEND ZMARA.CLEAR ZMARA.
*ENDSELECT.
*

SELECT MATKL FROM MARA INTO CORRESPONDING FIELDS OF  TABLE ZMARA WHERE MATKL = '1001'.

SELECT MAX( BRGEW ) FROM MARA INTO ZMARA-BRGEW WHERE MTART = 'KROH'.
*APPEND zmara. CLEAR zmara.
SELECT MIN( ntgew ) FROM MARA INTO ZMARA-ntgew WHERE MEINS = 'CL'.
*APPEND zmara. CLEAR zmara.
SELECT avg( volum ) FROM MARA INTO ZMARA-volum WHERE MEINS = 'CL' AND MTART = 'KROH'.
APPEND zmara. CLEAR zmara.

LOOP AT ZMARA.

  IF N <> 6.
    ZMARA-BRGEW = N.
    CASE N.
      WHEN 1 OR 3 OR 5.
        ZMARA-NTGEW = 1.
      WHEN  2 OR 4.
        ZMARA-volum = 2.
    ENDCASE.
*    IF N = 1 OR N = 3 OR N = 5.
*      ZMARA-ntgew = 1.
*    ENDIF.
*    IF N = 2 OR N = 4.
*      ZMARA-volum = 2.
*    ENDIF.
    MODIFY ZMARA.
  ENDIF.
  N = N + 1.
ENDLOOP.

LOOP AT ZMARA.
  WRITE: / ZMARA-MATKL,ZMARA-BRGEW,ZMARA-ntgew,ZMARA-volum.
ENDLOOP.
**************************ZWTEST5**************************

 

学习体会:

ZWTEST4 这个程序,我写的方法和老师一样都是

select <itab> from <table> where .....

select <itab> from <table> where .....

select <itab> from <table> where .....

select <itab> from <table> where .....

但是奇怪的是我调试的时候总是提示我要加endselect。

ABAP语言的有些标点符号的应用和以前知道的程序还有和纯sql数据库里的select不大一样。

还在摸索学习中。

原创粉丝点击