zoukankan      html  css  js  c++  java
  • 自己的一个ALV隐藏列例子

      1 *&---------------------------------------------------------------------*
      2 *& Report  ZR_FI_01
      3 *&
      4 *&---------------------------------------------------------------------*
      5 *&----------  6 *&
      7 *&---------------------------------------------------------------------*
      8 
      9 REPORT  zr_fi_ma.
     10 
     11 
     12 TABLES: bseg,t001,bkpf ,skat.
     13 
     14 *定义ALV相关变量
     15 
     16 TYPE-POOLS : slis.
     17 DATA: afield TYPE slis_fieldcat_alv.
     18 DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
     19 DATA: fieldcat TYPE slis_t_fieldcat_alv.
     20 DATA: gs_layout TYPE slis_layout_alv.
     21 DATA: g_repid TYPE sy-repid.
     22 DATA: i_layout TYPE slis_layout_alv.
     23 DATA gridlsl TYPE lvc_s_glay.
     24 DATA itab1 LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
     25 *DATA itab2 LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
     26 DATA itab LIKE zstr_pz OCCURS 0 WITH HEADER LINE.
     27 DATA: c1(2) TYPE c VALUE '',c2(2) TYPE c VALUE '',c3(2) TYPE c VALUE '',
     28       c4(4) TYPE c ,c5(2) TYPE c ,c6(2) TYPE c ,c7(20) TYPE c .
     29 *DATA LEN TYPE I.
     30 *定义内表字段
     31 
     32 DATA:BEGIN OF itab_skat OCCURS 0,
     33   txt50 LIKE skat-txt50,
     34   saknr LIKE skat-saknr,
     35   END OF itab_skat.
     36 
     37 DATA:BEGIN OF itab_bkpf OCCURS 0,
     38     bktxt LIKE bkpf-bktxt, "凭证抬头文本
     39     usnam LIKE bkpf-usnam, "用户名
     40     budat LIKE bkpf-budat, "过账日期
     41     belnr LIKE bkpf-belnr, "会计凭证
     42     gjahr LIKE bkpf-gjahr, "会计年度
     43     bukrs LIKE bkpf-bukrs, "代码公司
     44     monat LIKE bkpf-monat, "会计期间
     45     blart LIKE bkpf-blart,  "凭证类型
     46     bldat LIKE bkpf-bldat,  "凭证日期
     47     numpg LIKE bkpf-numpg,  "页数
     48     STBLG LIKE BKPF-STBLG,  "冲销凭证号
     49     WAERS LIKE BKPF-WAERS,  "货币
     50     KURSF LIKE BKPF-KURSF,   "汇率
     51     BSTAT LIKE BKPF-BSTAT,   "凭证状态
     52   END OF itab_bkpf.
     53 
     54 
     55 DATA:BEGIN OF itab_t001 OCCURS 0,
     56   butxt LIKE t001-butxt,  "公司代码
     57   bukrs LIKE t001-bukrs,  "代码公司
     58   END OF itab_t001.
     59 
     60 DATA: BEGIN OF wa_alv OCCURS 0,
     61     flag(1) ,
     62     augdt01 LIKE zstr_pz-augdt01,
     63     bukrs LIKE bseg-bukrs,"代码公司
     64     belnr LIKE bseg-belnr,"会计凭证
     65     gjahr LIKE bseg-gjahr,"会计年度
     66     butxt LIKE t001-butxt,"公司代码
     67     augdt LIKE bseg-augdt,"清帐日期
     68     hkont LIKE bseg-hkont,"总分类帐帐目
     69     bktxt LIKE bkpf-bktxt,"凭证抬头文本
     70     buzei LIKE bseg-buzei,"会计凭证中的行项目数
     71     txt50 LIKE skat-txt50,"总账科目成文本
     72     wrbtr LIKE bseg-wrbtr,"凭证货币金额
     73     shkzg LIKE bseg-shkzg,"借方/贷方标识
     74     wrbtr01 LIKE bseg-wrbtr,"凭证货币金额
     75     shkzg01 LIKE bseg-shkzg,"借方/贷方标识
     76     usnam LIKE bkpf-usnam,  "用户名
     77     budat LIKE bkpf-budat,  "过账日期
     78     blart LIKE bkpf-blart,  "凭证类型
     79     bldat LIKE bkpf-bldat,  "凭证日期
     80     numpg LIKE bkpf-numpg,  "页数
     81     stblg LIKE bkpf-stblg,  "冲销凭证号
     82     waers LIKE bkpf-waers,  "货币
     83     kursf LIKE bkpf-kursf,   "汇率
     84     bstat LIKE bkpf-bstat.   "凭证状态
     85 DATA END OF wa_alv.
     86 
     87 DATA wa_alv01 LIKE TABLE OF wa_alv WITH HEADER LINE.
     88 
     89 DATA:BEGIN OF sum_itab OCCURS 0,
     90   belnr  TYPE bseg-belnr,
     91   count01 TYPE bseg-wrbtr,
     92   count02 TYPE bseg-wrbtr.
     93 DATA END OF sum_itab.
     94 *选择屏幕
     95 SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text.
     96 
     97 SELECT-OPTIONS:     p_bukrs FOR bkpf-bukrs no INTERVALS OBLIGATORY DEFAULT 1000,
     98                     p_belnr FOR bkpf-belnr ,
     99                     p_gjahr FOR bkpf-gjahr no INTERVALS OBLIGATORY DEFAULT SY-DATUM,
    100                     p_monat FOR bkpf-monat,
    101                     p_usnam FOR bkpf-usnam NO INTERVALS.
    102 
    103 SELECTION-SCREEN END OF BLOCK blk.
    104 
    105 INITIALIZATION.
    106   g_repid = sy-repid.
    107   text = '凭证信息'.
    108 
    109 START-OF-SELECTION.
    110   PERFORM getdata.
    111   PERFORM layout_build.
    112   PERFORM sub_init_fieldcat.
    113   PERFORM sub_init_layout.
    114   PERFORM sub_listado.
    115 
    116 END-OF-SELECTION.
    117 
    118 *&--------------------------------------------------------------------*
    119 *&      Form  getdata
    120 *&--------------------------------------------------------------------*
    121 *       获取数据 从数据库表中选择相应字段
    122 *---------------------------------------------------------------------*
    123 *&---------------------------------------------------------------------*
    124 
    125 FORM getdata ."从数据库里取数到ALV
    126 
    127 ****************************************从BKPF中取数据
    128   SELECT bktxt usnam budat belnr gjahr bukrs monat blart bldat numpg stblg waers kursf bstat
    129   INTO CORRESPONDING FIELDS OF TABLE itab_bkpf
    130   FROM bkpf
    131   WHERE usnam in p_usnam  AND belnr IN p_belnr AND bukrs in p_bukrs AND monat IN p_monat AND gjahr in p_gjahr.
    132    IF SY-SUBRC <> 0.
    133     MESSAGE '所找数据不存在,请纠正' TYPE 'I'.
    134     stop.
    135     RETURN."跳出
    136 ENDIF.
    137 **********************************从BSEG中取数据
    138   IF itab_bkpf[] IS NOT INITIAL.
    139     SELECT bukrs belnr gjahr augdt hkont wrbtr shkzg buzei
    140   INTO CORRESPONDING FIELDS OF  TABLE wa_alv
    141 *    UP TO 100 ROWSC
    142    FROM bseg
    143    FOR ALL ENTRIES IN itab_bkpf
    144    WHERE belnr = itab_bkpf-belnr ."AND gjahr IN p_gjahr and belnr = itab_bkpf-belnr.
    145 
    146   ENDIF.
    147 
    148 ***********************把指在BKPF里有的凭证编号取出来
    149 LOOP AT ITAB_BKPF.
    150  SELECT  SINGLE bukrs belnr gjahr augdt hkont wrbtr shkzg buzei
    151   INTO CORRESPONDING FIELDS OF wa_alv
    152    FROM bseg
    153    WHERE belnr = itab_bkpf-belnr.
    154    IF SY-SUBRC <> 0.
    155      MOVE-CORRESPONDING itab_bkpf to wa_alv01.
    156     APPEND WA_ALV01.
    157    ENDIF.
    158  ENDLOOP.
    159 *************************************从T001中取数据
    160   SELECT *
    161     INTO CORRESPONDING FIELDS OF TABLE  itab_t001
    162     FROM t001 "把数直接放到工作区间里面去,不会放在表头!
    163   WHERE bukrs in p_bukrs.
    164 
    165 ************从SKAT里取数
    166   IF wa_alv[] IS NOT INITIAL.
    167     SELECT txt50 saknr
    168       INTO CORRESPONDING FIELDS OF TABLE itab_skat
    169       FROM skat
    170       FOR ALL ENTRIES IN wa_alv
    171     WHERE saknr = wa_alv-hkont." AND SPRAS = '1' AND KTOPL = 'INT'.
    172   ENDIF.
    173 
    174 *********************整理alv上要显示的数据
    175   LOOP AT wa_alv.
    176 ***********    把借和贷分开
    177     CASE wa_alv-shkzg.
    178       WHEN 'S'.
    179         wa_alv-wrbtr = wa_alv-wrbtr.
    180       WHEN 'H'.
    181         wa_alv-wrbtr01 = wa_alv-wrbtr.
    182         CLEAR wa_alv-wrbtr.
    183       WHEN OTHERS.
    184     ENDCASE.
    185 ************************把BUTXT整理到ALV内表里面
    186     READ TABLE itab_t001 WITH KEY bukrs = wa_alv-bukrs.
    187     IF sy-subrc EQ 0.
    188       MOVE itab_t001-butxt TO wa_alv-butxt.
    189     ENDIF.
    190 **********************把BKTXT USNAM BUDAT NUMPG整理到ALV内表去
    191     READ TABLE itab_bkpf WITH KEY bukrs = wa_alv-bukrs gjahr = wa_alv-gjahr belnr = wa_alv-belnr  .
    192     IF sy-subrc EQ 0.
    193       MOVE itab_bkpf-bktxt TO wa_alv-bktxt.
    194       MOVE itab_bkpf-usnam TO wa_alv-usnam.
    195       MOVE itab_bkpf-budat TO wa_alv-budat.
    196       MOVE itab_bkpf-numpg TO wa_alv-numpg.
    197 
    198       MOVE itab_bkpf-blart TO wa_alv-blart.
    199       MOVE itab_bkpf-bldat TO wa_alv-bldat.
    200       MOVE itab_bkpf-stblg TO wa_alv-stblg.
    201       MOVE itab_bkpf-waers TO wa_alv-waers.
    202 
    203       MOVE itab_bkpf-kursf TO wa_alv-kursf.
    204       MOVE itab_bkpf-bstat TO wa_alv-bstat.
    205       MOVE itab_bkpf-numpg TO wa_alv-numpg.
    206     ENDIF.
    207 ************************************* 把TXT50整理到内表去,
    208     READ TABLE itab_skat WITH  KEY saknr = wa_alv-hkont.
    209     IF sy-subrc EQ 0.
    210       MOVE itab_skat-txt50 TO wa_alv-txt50.
    211     ENDIF.
    212 
    213     MODIFY wa_alv.
    214   ENDLOOP.
    215 
    216 **********************把数据转移到要显示的ALV屏幕上的内表WA_ALV01上
    217   LOOP AT wa_alv.
    218     MOVE-CORRESPONDING wa_alv TO wa_alv01.
    219     APPEND wa_alv01.
    220   ENDLOOP.
    221 
    222 *******************根据物料编号排序,把相同的物料编号删除
    223   SORT wa_alv01 BY belnr.
    224   DELETE ADJACENT DUPLICATES FROM wa_alv01 COMPARING belnr.
    225   DELETE WA_ALV01 WHERE BELNR = ''.
    226 ENDFORM.                    " GETDATA
    227 *&---------------------------------------------------------------------*
    228 *&      Form  SUB_INIT_FIELDCAT
    229 *&---------------------------------------------------------------------*
    230 *       text
    231 *----------------------------------------------------------------------*
    232 *  -->  p1        text
    233 *  <--  p2        text
    234 *----------------------------------------------------------------------*
    235 FORM layout_build .
    236   i_layout-box_fieldname        = 'FLAG'.
    237   i_layout-colwidth_optimize    = 'X'. "优化列宽选项是否设置
    238   i_layout-zebra                = 'X'.
    239   i_layout-detail_initial_lines = 'X'.
    240   i_layout-no_vline             = 'X'." layout_build
    241 
    242 ENDFORM.                    " LAYOUT_BUILD
    243 
    244 *&---------------------------------------------------------------------*
    245 *&      Form  SUB_INIT_FIELDCAT
    246 *&---------------------------------------------------------------------*
    247 *       text
    248 *----------------------------------------------------------------------*
    249 FORM sub_init_fieldcat .
    250 
    251   i_fieldcat-fieldname = 'BUKRS'. "公司代码
    252   i_fieldcat-tabname = 'ITEM'.
    253   i_fieldcat-reptext_ddic = '公司代码'.
    254   i_fieldcat-outputlen = 10.
    255   i_fieldcat-key = 'X'.
    256   i_fieldcat-just = 'C'.
    257   APPEND i_fieldcat.
    258   CLEAR i_fieldcat.
    259 
    260   i_fieldcat-fieldname = 'BUTXT'. "公司代码
    261   i_fieldcat-tabname = 'ITEM'.
    262   i_fieldcat-reptext_ddic = '核算单位'.
    263   i_fieldcat-outputlen = 10.
    264   i_fieldcat-key = 'X'.
    265 *  i_fieldcat-no_out ='X'.
    266   i_fieldcat-just = 'C'.
    267   APPEND i_fieldcat.
    268   CLEAR i_fieldcat.
    269 
    270   i_fieldcat-fieldname = 'BELNR'. "会计凭证
    271   i_fieldcat-tabname = 'ITEM'.
    272   i_fieldcat-reptext_ddic = '凭证编号'.
    273   i_fieldcat-outputlen = 12.
    274   i_fieldcat-key = 'X'.
    275   i_fieldcat-just = 'C'.
    276   APPEND i_fieldcat.
    277   CLEAR i_fieldcat.
    278 
    279   i_fieldcat-fieldname = 'GJAHR'.
    280   i_fieldcat-tabname = 'ITEM'.
    281   i_fieldcat-reptext_ddic = '会计年度'.
    282   i_fieldcat-outputlen = 4.
    283   i_fieldcat-key = 'X'.
    284   i_fieldcat-just = 'C'.
    285   APPEND i_fieldcat.
    286   CLEAR i_fieldcat.
    287 
    288   i_fieldcat-fieldname = 'BLART'. "会计凭证
    289   i_fieldcat-tabname = 'ITEM'.
    290   i_fieldcat-reptext_ddic = '凭证类型'.
    291   i_fieldcat-outputlen = 2.
    292   i_fieldcat-just = 'C'.
    293   APPEND i_fieldcat.
    294   CLEAR i_fieldcat.
    295 
    296   i_fieldcat-fieldname = 'BLDAT'. "会计凭证
    297   i_fieldcat-tabname = 'ITEM'.
    298   i_fieldcat-reptext_ddic = '凭证日期'.
    299   i_fieldcat-outputlen = 8.
    300   i_fieldcat-just = 'C'.
    301   APPEND i_fieldcat.
    302   CLEAR i_fieldcat.
    303 
    304   i_fieldcat-fieldname = 'BUDAT'. "清单日期
    305   i_fieldcat-tabname = 'ITEM'.
    306   i_fieldcat-reptext_ddic = '过账日期'.
    307   i_fieldcat-outputlen = 10.
    308   i_fieldcat-just = 'C'.
    309   APPEND i_fieldcat.
    310   CLEAR i_fieldcat.
    311 
    312   i_fieldcat-fieldname = 'USNAM'. "用户名
    313   i_fieldcat-tabname = 'ITEM'.
    314   i_fieldcat-reptext_ddic = ' 制       单'.
    315   i_fieldcat-outputlen = 18.
    316   i_fieldcat-just = 'C'.
    317   APPEND i_fieldcat.
    318   CLEAR i_fieldcat.
    319 
    320   i_fieldcat-fieldname = 'STBLG'.
    321   i_fieldcat-tabname = 'ITEM'.
    322   i_fieldcat-reptext_ddic = '冲销凭证号'.
    323   i_fieldcat-outputlen = 10.
    324   i_fieldcat-just = 'C'.
    325   APPEND i_fieldcat.
    326   CLEAR i_fieldcat.
    327 
    328   i_fieldcat-fieldname = 'BKTXT'.
    329   i_fieldcat-tabname = 'ITEM'.
    330   i_fieldcat-reptext_ddic = '凭证抬头文本'.
    331   i_fieldcat-outputlen = 10.
    332   i_fieldcat-just = 'C'.
    333   APPEND i_fieldcat.
    334   CLEAR i_fieldcat.
    335 
    336   i_fieldcat-fieldname = 'WAERS'.
    337   i_fieldcat-tabname = 'ITEM'.
    338   i_fieldcat-reptext_ddic = '货币'.
    339   i_fieldcat-outputlen = 14.
    340   i_fieldcat-just = 'C'.
    341   APPEND i_fieldcat.
    342   CLEAR i_fieldcat.
    343 
    344   i_fieldcat-fieldname = 'KURSF'. "用户名
    345   i_fieldcat-tabname = 'ITEM'.
    346   i_fieldcat-reptext_ddic = ' 汇率'.
    347   i_fieldcat-outputlen = 9.
    348   i_fieldcat-just = 'C'.
    349   APPEND i_fieldcat.
    350   CLEAR i_fieldcat.
    351 
    352   i_fieldcat-fieldname = 'BSTAT'.
    353   i_fieldcat-tabname = 'ITEM'.
    354   i_fieldcat-reptext_ddic = '凭证状态'.
    355   i_fieldcat-outputlen = 2.
    356   i_fieldcat-just = 'C'.
    357   APPEND i_fieldcat.
    358   CLEAR i_fieldcat.
    359 
    360   i_fieldcat-fieldname = 'NUMPG'.
    361   i_fieldcat-tabname = 'ITEM'.
    362   i_fieldcat-reptext_ddic = '页数'.
    363   i_fieldcat-outputlen = 3.
    364   i_fieldcat-just = 'C'.
    365   APPEND i_fieldcat.
    366   CLEAR i_fieldcat.
    367 
    368 ENDFORM.                    " SUB_INIT_FIELDCAT
    369 *&---------------------------------------------------------------------*
    370 *&      Form  SUB_INIT_LAYOUT
    371 *&---------------------------------------------------------------------*
    372 *       text
    373 *----------------------------------------------------------------------*
    374 *  -->  p1        text
    375 *  <--  p2        text
    376 *----------------------------------------------------------------------*
    377 FORM sub_init_layout .
    378 DATA:num TYPE i VALUE 0.
    379 *  DATA: l_output(50).
    380 *  i_layout-zebra = 'X'.
    381 *  l_output = '会计凭证'.
    382 *  i_layout-window_titlebar = l_output.
    383 *  i_layout-colwidth_optimize = 'X'.
    384 * sort wa_alv by NUMPG.
    385 *
    386 *read table wa_alv with key NUMPG = '' BINARY SEARCH.
    387 
    388  LOOP AT wa_alv WHERE NUMPG <> ''.
    389    num = 1.
    390  ENDLOOP.
    391 IF num = 0.
    392   LOOP AT i_fieldcat.
    393     i_fieldcat-no_out = ''.
    394     IF i_fieldcat-fieldname = 'NUMPG' .
    395       i_fieldcat-no_out = 'X'.
    396     ENDIF.
    397     MODIFY i_fieldcat .
    398   ENDLOOP.
    399 
    400 ENDIF.
    401 *  CALL METHOD go_grid->set_frontend_fieldcatalog
    402 *    EXPORTING
    403 *      it_fieldcatalog = gt_fieldcat.
    404 *  CALL METHOD go_grid->refresh_table_display    .
    405 
    406 ENDFORM.                    " SUB_INIT_LAYOUT
    407 *&---------------------------------------------------------------------*
    408 *&      Form  SUB_LISTADO
    409 *&---------------------------------------------------------------------*
    410 *       text
    411 *----------------------------------------------------------------------*
    412 *  -->  p1        text
    413 *  <--  p2        text
    414 *----------------------------------------------------------------------*
    415 FORM sub_listado .
    416   g_repid = sy-repid.
    417   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    418     EXPORTING
    419       i_callback_user_command  = 'USER_COMMAND'
    420       i_callback_pf_status_set = 'USER_STATUS'
    421       i_callback_program       = g_repid
    422       is_layout                = i_layout
    423       it_fieldcat              = i_fieldcat[]
    424 *     it_events                = i_events[]
    425     TABLES
    426       t_outtab                 = wa_alv01
    427     EXCEPTIONS
    428       program_error            = 1
    429       OTHERS                   = 2.
    430 ENDFORM.                    " SUB_LISTADO
    431 
    432 *&---------------------------------------------------------------------*
    433 *&      Form  user_command
    434 *&---------------------------------------------------------------------*
    435 *       text
    436 *----------------------------------------------------------------------*
    437 *      -->R_UCOMM      text
    438 *      -->RS_SELFIELD  text
    439 *----------------------------------------------------------------------*
    440 FORM user_command USING r_ucomm LIKE sy-ucomm
    441                         rs_selfield TYPE slis_selfield.
    442 
    443   DATA: ok_code TYPE sy-ucomm.
    444   ok_code = sy-ucomm.
    445   CLEAR sy-ucomm.
    446 
    447   CASE ok_code.
    448     WHEN 'BACK'.
    449       LEAVE TO SCREEN 0.
    450     WHEN 'EXIT'.
    451       EXIT.
    452     WHEN 'COPY'.
    453 *      LEAVE TO SCREEN 0.
    454       PERFORM dayin.
    455     WHEN 'SAVE'.
    456       LEAVE TO SCREEN 0.
    457     WHEN OTHERS.
    458       EXIT.
    459   ENDCASE.
    460 
    461 
    462 ENDFORM.                    " USER_COMMAND
    463 *&---------------------------------------------------------------------*
    464 *&      Form  USER_STATUS
    465 *&---------------------------------------------------------------------*
    466 *       text
    467 *----------------------------------------------------------------------*
    468 *  -->  p1        text
    469 *  <--  p2        text
    470 *----------------------------------------------------------------------*
    471 FORM user_status USING extab TYPE slis_t_extab.
    472   SET PF-STATUS 'FIPZ_STU01'.
    473   SET TITLEBAR 'FIPZ_TIT'.
    474 ENDFORM.                    "user_status
    475 *&---------------------------------------------------------------------*
    476 *&      Form  DAYIN
    477 *&---------------------------------------------------------------------*
    478 *       text
    479 *----------------------------------------------------------------------*
    480 *  -->  p1        text
    481 *  <--  p2        text
    482 *----------------------------------------------------------------------*
    483 FORM dayin .
    484 
    485   PERFORM get_data.
    486   DATA fm_name TYPE rs38l_fnam.
    487   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    488     EXPORTING
    489       formname           = 'ZFI_PZ002'"写自己设计的smartforms名字.自动返回对应的function module函数代码
    490     IMPORTING
    491       fm_name            = fm_name        "这里系统返回的是函数代码(/1BCDWB/SF00000003)
    492     EXCEPTIONS
    493       no_form            = 1
    494       no_function_module = 2
    495       OTHERS             = 3.
    496   IF sy-subrc <> 0.
    497     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    498             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    499   ENDIF.
    500 
    501   CALL FUNCTION fm_name     "调用SMARTFORM,很显然这里是以FUNCTION MOUDULE的方式和SMARTFORM交互.
    502       EXPORTING
    503        user_settings = 'X'
    504       TABLES                                "填写SF调用的表和程序的表对应
    505         itab1 = itab1             "前一个是sf 后面是程序的.
    506         itab =  itab            "把ITAB内表的内容传递到SMARTFORM中去
    507        EXCEPTIONS
    508           formatting_error = 1
    509           internal_error = 2
    510           send_error = 3
    511           user_canceled = 4
    512          OTHERS = 5.
    513 
    514 ENDFORM.                    " DAYIN
    515 *&---------------------------------------------------------------------*
    516 *&      Form  GET_DATA
    517 *&---------------------------------------------------------------------*
    518 *       text
    519 *----------------------------------------------------------------------*
    520 *  -->  p1        text
    521 *  <--  p2        text
    522 *----------------------------------------------------------------------*
    523 FORM get_data .
    524   CLEAR: itab[],itab.
    525   CLEAR:itab1[],itab1.
    526 *  定义了上面的这两行,就可以实现多次打印!
    527 
    528   LOOP AT wa_alv01 WHERE flag = 'X'.
    529 
    530 *******************************检验是否能打印
    531    IF wa_alv01-butxt is INITIAL.
    532      DATA:ME01(10) TYPE C,
    533           ME02(25) TYPE C.
    534       ME01 = wa_alv01-BELNR.
    535       CONCATENATE '凭证' ME01 '没有行项目,无法打印' INTO ME02.
    536       MESSAGE  ME02 TYPE 'I'.
    537     ENDIF.
    538 
    539 *************************把需要的数据传到与SF相连额桥梁表
    540     LOOP AT wa_alv WHERE belnr = wa_alv01-belnr.
    541 
    542 *******************    时间格式转换
    543       PERFORM time_data.
    544 
    545       MOVE-CORRESPONDING wa_alv TO itab1.
    546       APPEND itab1.
    547       SORT itab1 BY bktxt belnr wrbtr wrbtr01 .
    548 
    549     ENDLOOP.
    550 
    551   ENDLOOP.
    552 
    553   DELETE ADJACENT DUPLICATES FROM itab1 COMPARING ALL FIELDS."删除重复行。
    554 
    555   LOOP AT itab1.
    556     MOVE itab1-butxt      TO itab-butxt.
    557 *    MOVE ITAB-AUGDT+0(4) TO ITAB1-YYYY.
    558 *    MOVE ITAB-AUGDT+4(2) TO ITAB1-MM.
    559 *    MOVE ITAB-AUGDT+6(2) TO ITAB1-DD.
    560     MOVE itab1-belnr      TO itab-belnr.
    561     MOVE itab1-usnam      TO itab-usnam.
    562     APPEND itab.
    563     DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS."*   = COLLECT ITAB1.
    564     MOVE itab1-belnr   TO  sum_itab-belnr.
    565     sum_itab-count01 =  itab1-wrbtr.
    566     sum_itab-count02 =  itab1-wrbtr01 .
    567     COLLECT sum_itab.
    568     CLEAR  sum_itab.
    569 
    570   ENDLOOP.
    571 
    572   LOOP AT itab.
    573     READ TABLE sum_itab WITH KEY belnr = itab-belnr.
    574     IF sy-subrc = 0 .
    575       itab-count01  =  sum_itab-count01 .
    576       itab-count02  =  sum_itab-count02.
    577 
    578     ENDIF.
    579     LOOP AT itab1 WHERE belnr = itab1-belnr AND butxt = itab1-butxt AND usnam = itab1-usnam .
    580       IF itab1-augdt01 <> ''.
    581         MOVE itab1-augdt01 TO itab-augdt01.
    582       ENDIF.
    583     ENDLOOP.
    584     MODIFY itab[] FROM itab.
    585   ENDLOOP.
    586   SORT itab1 BY wrbtr01.
    587 
    588 
    589 
    590 
    591 ENDFORM.                    " GET_DATA
    592 *&---------------------------------------------------------------------*
    593 *&      Form  TIME_DATA
    594 *&---------------------------------------------------------------------*
    595 *       text改为需求的日期
    596 *----------------------------------------------------------------------*
    597 *  -->  p1        text
    598 *  <--  p2        text
    599 *----------------------------------------------------------------------*
    600 FORM time_data .
    601   IF wa_alv-budat NE 0.
    602     MOVE wa_alv-budat+0(4) TO c4.
    603     MOVE wa_alv-budat+4(2) TO c5.
    604     MOVE wa_alv-budat+6(2) TO c6.
    605     CONCATENATE c4 c1 c5 c2 c6 c3 INTO wa_alv-augdt01.
    606     MODIFY wa_alv[] FROM wa_alv.
    607   ENDIF.
    608 ENDFORM.                    " TIME_DATA
  • 相关阅读:
    SQL语句-用sql语句得到表中所有字段的名字
    SQL语句-判断数据库中是否有这张表
    Java开发-创建第一个项目hello world
    MFC-一个很简单的程序最小化到托盘,带右键菜单带图标
    Everything SDK-基于名称快速定位文件和文件夹。
    NX二次开发-基于PycharmIDE的NXOpen Python开发环境配置
    手动局域网搭建FTP服务器
    FreeCAD二次开发-基于控制台模式FC外部开发
    FreeCAD二次开发-基于PyQT对话框与FC交互的开发
    实例开发-NX二次开发手动截图工具
  • 原文地址:https://www.cnblogs.com/huangjianisgood/p/2733852.html
Copyright © 2011-2022 走看看