ALV函数

来源:互联网 发布:网络协议怎么安装 编辑:程序博客网 时间:2024/05/09 17:47

" -------------------------ALV ALV ALV ALV---------------------------"ALV表定义
TYPE-POOLS : slis.
DATA: afield TYPE slis_fieldcat_alv.
DATA: fieldcat TYPE slis_t_fieldcat_alv.
DATA: gs_layout TYPE slis_layout_alv.
DATA: g_repid TYPE sy-repid.
DATA: i_layout TYPE slis_layout_alv.
DATA gridlsl TYPE lvc_s_glay.
" -----------------------Selection Screen Definition-----------------*
START-OF-SELECTION.
SELECT-OPTIONS: cmpcode FOR bseg-bukrs NO INTERVALS OBLIGATORY, "单值输入
                acctdoc FOR bseg-belnr , " NO INTERVALS,
                acctyear FOR bseg-gjahr NO INTERVALS OBLIGATORY.

"------------------------ALV Screen Definition ----------------------
INITIALIZATION.

  g_repid sy-repid.

START-OF-SELECTION.
  PERFORM get_data.
  PERFORM disp_data.

FORM get_data.
  SELECT bukrs belnr gjahr buzei augdt wrbtr shkzg hkont
    FROM bseg
    INTO CORRESPONDING FIELDS OF TABLE itab_bseg
    WHERE bukrs IN cmpcode
      AND belnr IN acctdoc
      AND gjahr IN acctyear.

  SELECT txt50 saknr
    FROM skat
    INTO CORRESPONDING FIELDS OF TABLE itab_skat
    FOR ALL ENTRIES IN itab_bseg
    WHERE saknr itab_bseg-hkont
      AND spras 1
      AND ktopl 'INT'.

  SELECT bukrs butxt
    FROM t001
    INTO CORRESPONDING FIELDS OF TABLE itab_t001
*    FOR ALL ENTRIES IN itab_bseg
*    WHERE bukrs = itab_bseg-bukrs.
    WHERE bukrs IN cmpcode.

  SELECT bukrs belnr gjahr bktxt usnam
    FROM bkpf
    INTO CORRESPONDING FIELDS OF TABLE itab_bkpf
    FOR ALL ENTRIES IN itab_bseg
    WHERE belnr itab_bseg-belnr
      AND bukrs itab_bseg-bukrs
      AND gjahr itab_bseg-gjahr.

 LOOP AT itab_bseg.
   MOVE-CORRESPONDING itab_bseg TO bseg_skat_t001_bkpf.

   READ TABLE itab_t001 WITH KEY bukrs itab_bseg-bukrs.
   IF sy-subrc EQ 0.
     bseg_skat_t001_bkpf-butxt itab_t001-butxt.
   ENDIF.

   READ TABLE itab_skat WITH KEY saknr itab_bseg-hkont.
   IF sy-subrc EQ 0.
     bseg_skat_t001_bkpf-txt50 itab_skat-txt50.
   ENDIF.

   READ TABLE itab_bkpf WITH KEY bukrs itab_bseg-bukrs.   
   IF sy-subrc EQ 0.
      bseg_skat_t001_bkpf-bktxt itab_bkpf-bktxt.
      bseg_skat_t001_bkpf-usnam itab_bkpf-usnam.
   ENDIF.

   IF bseg_skat_t001_bkpf-shkzg EQ 'H'.                     
      bseg_skat_t001_bkpf-wrbtr2 itab_bseg-wrbtr.
      bseg_skat_t001_bkpf-wrbtr 0.
   ENDIF.


   APPEND bseg_skat_t001_bkpf.
    CLEAR bseg_skat_t001_bkpf.
 ENDLOOP.
ENDFORM.                    " GET_DATA


FORM disp_data .
  PERFORM layout_build. "设置布局
  PERFORM fieldcat_init  USING fieldcat[].  "显示表头第一栏
  PERFORM display_alv.  "调用ALV功能
ENDFORM.                    " DISP_DATA

FORM layout_build .

  i_layout-box_fieldname        'FLAG'.  "用于该行是否标志
  i_layout-colwidth_optimize    'X'. "优化列宽选项是否设置
  i_layout-zebra                'X'.
  i_layout-detail_initial_lines 'X'.
  i_layout-no_vline             'X'." layout_build
ENDFORM.                    " LAYOUT_BUILD


FORM fieldcat_init  USING u_er_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: afieldcat TYPE slis_fieldcat_alv,
           pos TYPE i.
  CLEAR pos.
  DEFINE d_get_field.
    pos pos + 1.
    clear afieldcat.
    afieldcat-col_pos  pos.
    afieldcat-fieldname  &1.
    afieldcat-seltext_l &2.
    afieldcat-key &3.
*    if &1 eq 'RLGPRO'.
*      afieldcat-ref_tabname = 'ZDUMPK'.
*      afieldcat-ref_fieldname = 'LGPRO'.
*    endif.
    append afieldcat to u_er_fieldcat.
  END-OF-DEFINITION.

  d_get_field 'BUKRS' '公司代码' 'X'.    "X代表该字段是主键
  d_get_field 'BELNR' '会计凭证' ''.
  d_get_field 'GJAHR' '会计年度' ''  .

  d_get_field 'BUTXT' '核算单位' ''.  
  d_get_field 'AUGDT' '日期' '' .
*  d_get_field 'BELNR' '凭证编号' '' .


  d_get_field 'TXT50' '会计科目' '' .
  d_get_field 'WRBTR' '借方金额' '' .
  d_get_field 'WRBTR2' '贷方金额' '' .
  d_get_field 'BKTXT' '摘要' '' .
  d_get_field 'USNAM' '制单' '' .

ENDFORM.                    " FIELDCAT_INIT

FORM display_alv .
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_grid_settings          gridlsl
*         i_structure_name        =  'bseg_skat_t001_bkpf'

         i_callback_program g_repid
         i_callback_pf_status_set 'USER_STATUS'
         i_callback_user_command  'USER_COMMAND'
         it_fieldcat        fieldcat
         is_layout          i_layout    "此语句注释后ALV无FLAG列!
         i_save             'A'

*      it_sort            = it_sort
*         it_events          = er_events[]

       TABLES
         t_outtab           =  bseg_skat_t001_bkpf.  "前面的t_outtab是REUSE_ALV_GRID_DISPLAY定义的参数
ENDFORM.                    " DISPLAY_ALV

FORM user_status USING extab TYPE slis_t_extab.

SET PF-STATUS 'ZSTATUS_ALV02'.
SET TITLEBAR 'TITLE_ALV02'.

ENDFORM.                    " USER_STATUS

FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
                    rs_selfield-refresh 'X'.  "Auto reflesh

   r_ucomm sy-ucomm.

   CASE r_ucomm.
     WHEN 'PRI'.
      PERFORM get_sfdata.
      PERFORM print_data.

     WHEN OTHERS.
   ENDCASE.



ENDFORM.

原创粉丝点击