*&---------------------------------------------------------------------* *& Report ZQS1 *& *&---------------------------------------------------------------------* *& Author : Zhang.JM *& Written : 2007.12.18 *&---------------------------------------------------------------------* REPORT zqs1 LINE-SIZE 157 . DATA: BEGIN OF itab OCCURS 20, matnr(18) TYPE c, maktx(35) TYPE c, lifnr(10) TYPE c, name1(35) TYPE c, bukrs(4) TYPE c, netpr TYPE p DECIMALS 2, differ TYPE i, sign TYPE i, END OF itab.
DATA: count TYPE i. START-OF-SELECTION. PERFORM read_data. END-OF-SELECTION. PERFORM write_data. *&---------------------------------------------------------------------* *& Form WRITE_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* *--> p1 text *<-- p2 text *----------------------------------------------------------------------* FORM write_data. DATA: l_matnr LIKE itab-matnr, l_lifnr LIKE itab-lifnr, length_uline TYPE i , pos TYPE i. * 处理无数据的情况 DESCRIBE TABLE itab LINES count. IF count =0. MESSAGE 'No data!.' TYPE 'I'. EXIT. ENDIF. SORT itab BY matnr lifnr netpr. * 循环并处理 LOOP AT itab. * 根据物料和供应商是否相同来确定横线和竖线的位置 IF itab-matnr <> l_matnr AND itab-lifnr <> l_lifnr. l_matnr = itab-matnr. l_lifnr = itab-lifnr. length_uline =156. pos =0. ELSEIF itab-matnr = l_matnr AND itab-lifnr <> l_lifnr. l_matnr = itab-matnr. l_lifnr = itab-lifnr. CLEAR: itab-matnr,itab-maktx. length_uline =92. pos =65. ELSEIF itab-matnr = l_matnr AND itab-lifnr = l_lifnr. l_matnr = itab-matnr. l_lifnr = itab-lifnr. CLEAR: itab-matnr,itab-maktx,itab-lifnr,itab-name1. length_uline =46. pos =111. ENDIF. * 根据前面确定的位置画竖线和横线 IF sy-tabix >1. IF pos >0 . WRITE:/ sy-vline,(18) '',sy-vline,(40) '', sy-vline,(15) '',sy-vline. ENDIF. ULINE AT pos(length_uline). ENDIF. * 输出所需信息 WRITE:/ sy-vline,(18) itab-matnr LEFT-JUSTIFIED,sy-vline, (40) itab-maktx LEFT-JUSTIFIED,sy-vline, (15) itab-lifnr LEFT-JUSTIFIED,sy-vline, (25) itab-name1 LEFT-JUSTIFIED,sy-vline, (10) itab-bukrs LEFT-JUSTIFIED,sy-vline, (11) itab-netpr RIGHT-JUSTIFIED,sy-vline. * 处理不同情况的颜色 IF itab-sign =1."blue FORMAT COLOR 1 . ELSEIF itab-sign =2."red FORMAT COLOR 6 . ENDIF. WRITE: (15) itab-differ RIGHT-JUSTIFIED,sy-vline. FORMAT COLOR OFF . ENDLOOP. ULINE AT (156). ENDFORM. " WRITE_DATA *&---------------------------------------------------------------------* *& Form READ_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* *--> p1 text *<-- p2 text *----------------------------------------------------------------------* FORM read_data . * 做一些模拟数据 itab-matnr ='AA0'. itab-maktx ='Name of AA0'. itab-lifnr ='BB0'. itab-name1 ='Vonder BB0'. itab-bukrs ='TST1'. itab-netpr =129. itab-differ =2. APPEND itab. itab-matnr ='AA0'. itab-lifnr ='BB1'. itab-name1 ='Vonder name BB1'. itab-netpr =134. itab-differ =3. APPEND itab. itab-matnr ='AA0'. itab-lifnr ='BB1'. itab-differ =4. itab-netpr =229. itab-sign =2. APPEND itab. itab-matnr ='AA1'. itab-maktx ='Description of AA1'. itab-lifnr ='BB'. itab-name1 ='BB''s name'. itab-netpr =78. itab-differ =5. itab-sign =1. APPEND itab. itab-matnr ='AA1'. itab-lifnr ='BB'. itab-differ =6. itab-netpr =72. itab-sign =2. APPEND itab. ENDFORM. " READ_DATA