固定资产清单查询报表


*&---------------------------------------------------------------------*
*& Report  zfid010
*&
*&---------------------------------------------------------------------*
* 程序名称:固定资产目录清册查询报表
* 程序名:  zfid010
* 开发日期:2016-12-07
* 创建者:  
*----------------------------------------------------------------------*
* 概要说明
*----------------------------------------------------------------------*
*  用于拷贝新建程序
*
*----------------------------------------------------------------------*
* 变更记录
*    日期     修改者    传输请求号    修改内容及原因
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*

REPORT zfid010.

************************************************************************
*     TABLES 声明                                                      *
************************************************************************
TABLES:anla,anlz.

************************************************************************
*     类型池声明                                                        *
************************************************************************
TYPE-POOLS: slis.

************************************************************************
*     类型定义                                                          *
************************************************************************
TYPES: BEGIN OF ty_output,     "ALV显示结构

         sel         TYPE c LENGTH 1,  "ALV 行选择标识

         bukrs       TYPE anla-bukrs,  "公司代码
         anln1       TYPE anla-anln1, "固定资产编号
         anlkl       TYPE anla-anlkl,  "固定资产分类
         anln2       TYPE anla-anln2,  "固定资产子编号
         txt50       TYPE anla-txt50,  "固定资产描述
         txa50       TYPE anla-txa50,  "规则型号
         sernr       TYPE anla-sernr,  "序列号
         invnr       TYPE anla-invnr,  "存货号
         menge       TYPE anla-menge,  "数量
         meins       TYPE anla-meins,  "单位
         invzu       TYPE anla-invzu,  "存放地点
         lifnr       TYPE anla-lifnr,  "供应商
         liefe       TYPE anla-liefe,  "供应商名称
         aktiv       TYPE anla-aktiv,  "资本化日期
         deakt       TYPE anla-deakt,  "报废日期
         ord41       TYPE anla-ord41,  "资产的处置形式(改)
         ord42       TYPE anla-ord42,  "资产状态(改)
         herst       TYPE anla-herst,  "制造商

         kostl       TYPE anlz-kostl,  "成本中心
         caufn       TYPE anlz-caufn,  "内部订单
         raumn       TYPE anlz-raumn,  "固定资产保管人

         txk20       TYPE ankt-txk20,  "固定资产分类描述

         anlhtxt     TYPE anlh-anlhtxt,

         afasl       TYPE anlb-afasl,  "折旧码
         ndjar       TYPE anlb-ndjar,  "使用年限
         ndper       TYPE anlb-ndper,  "使用期间
         afabg       TYPE anlb-afabg,  "折旧开始日期

         ndabj       TYPE anlc-ndabj,  "已使用年份
         ndabp       TYPE anlc-ndabp,  "已使用月份
         gouzhi      TYPE anlc-kansw, "购置价值
         kansw       TYPE anlc-kansw,  "运算字段(购置价值)
         answl       TYPE anlc-answl,  "运算字段(购置价值)
         zhejiu      TYPE anlc-knafa, "累计折旧金额
         nafag       TYPE anlc-nafag,  "改动
         safag       TYPE anlc-safag,  "改动
         aafag       TYPE anlc-aafag,  "改动
         aufwb       TYPE anlc-aufwb,  "固定资产减值
         jingzhi     TYPE anlc-knafa,

         butxt       TYPE t001-butxt,  "公司代码名称
         ltext       TYPE cskt-ltext,  "成本中心说明

         name1       TYPE lfa1-name1,  "供应商名称

         ordtx       TYPE t087t-ordtx, "资产的处置形式描述
         ordt2       TYPE t087t-ordtx, "资产状态描述
         afblpe      TYPE string , "累计已计提月份(不区分财年)
         ahproz      LIKE t091p-ahproz, "净残值率
         ahpro       LIKE anlc-kansw, "净残值
         yuezhejiulv LIKE t091p-ahproz, "月折旧率
         yuezhejiue  TYPE string, "月折旧额
         waers       LIKE t001-waers, "币种
         txt20       LIKE skat-txt20, "对应折旧科目
         ktnafb      LIKE t095b-ktnafb, "对应折旧科目编码
         afatxt      LIKE t090nat-afatxt, "折旧方法
         typbz       LIKE anla-typbz, "使用部门
         erdat       LIKE anla-erdat, "录入日期
         ktogr       LIKE anla-ktogr, "科目定位码
         bfqzcyz     LIKE acdoca-tsl, "报废前资产原值
         bfqljzj     LIKE anlc-knafa, "报废前累计折旧

       END OF ty_output.

TYPES: BEGIN OF ty_anlhtxt,
         anlhtxt TYPE anlh-anlhtxt,  "资产主号文本
         bukrs   TYPE anlh-bukrs,      "公司代码
         anln1   TYPE anlh-anln1,      "固定资产编号
         luntn   TYPE anlh-luntn,      "固定资产子编号
       END OF ty_anlhtxt.

TYPES: BEGIN OF ty_anlc,
         ndabj TYPE anlc-ndabj,  "已使用年份
         ndabp TYPE anlc-ndabp, "已使用月份
         kansw TYPE anlc-kansw,
         answl TYPE anlc-answl,
         aufwb TYPE anlc-aufwb, "改动
         nafag TYPE anlc-nafag,  "改动
         safag TYPE anlc-safag,  "改动
         aafag TYPE anlc-aafag,  "改动

         bukrs TYPE anlc-bukrs,
         anln1 TYPE anlc-anln1,
         anln2 TYPE anlc-anln2,
         afabe LIKE anlc-afabe,
       END OF ty_anlc.

TYPES: BEGIN OF ty_anlb,
         afasl      TYPE anlb-afasl,  "折旧码
         ndjar      TYPE anlb-ndjar,  "使用年限
         ndper      TYPE anlb-ndper,  "使用期间
         afabg      TYPE anlb-afabg,  "折旧开始日期

         bukrs      TYPE anlb-bukrs,
         anln1      TYPE anlb-anln1,
         anln2      TYPE anlb-anln2,
         schrw_proz LIKE anlb-schrw_proz,

       END OF ty_anlb.
TYPES: BEGIN OF ty_anlb2,
         afasl      TYPE anlb-afasl,  "折旧码
         ndjar      TYPE anlb-ndjar,  "使用年限
         ndper      TYPE anlb-ndper,  "使用期间
         afabg      TYPE anlb-afabg,  "折旧开始日期
         afabe      TYPE anlb-afabe,
         bdatu      TYPE anlb-bdatu,

         bukrs      TYPE anlb-bukrs,
         anln1      TYPE anlb-anln1,
         anln2      TYPE anlb-anln2,
         schrw_proz LIKE anlb-schrw_proz,

       END OF ty_anlb2.

************************************************************************
*     全局变量声明                                                     *
************************************************************************
DATA: it_output  TYPE STANDARD TABLE OF ty_output,
      wa_output  LIKE LINE OF it_output,

      it_anlhtxt TYPE STANDARD TABLE OF ty_anlhtxt,  "资产主号文本内表
      wa_anlhtxt LIKE LINE OF it_anlhtxt,

      it_anlb    TYPE STANDARD TABLE OF ty_anlb,
      wa_anlb    LIKE LINE OF it_anlb,
      it_anlb2   TYPE STANDARD TABLE OF ty_anlb2,
      wa_anlb2   LIKE LINE OF it_anlb2,

      it_anlc    TYPE STANDARD TABLE OF ty_anlc,
      wa_anlc    LIKE LINE OF it_anlc.

DATA: BEGIN OF ls_anlc,
        bukrs  LIKE anlc-bukrs,
        anln1  LIKE anlc-anln1,
        gjahr  LIKE anlc-gjahr,
        afabe  LIKE anlc-afabe,
        afblpe LIKE anlc-afblpe,
        answl  LIKE anlc-answl,
        kansw  LIKE anlc-kansw,
        knafa  LIKE anlc-knafa,
        nafag  LIKE anlc-nafag,
        nafal  LIKE anlc-nafal,
        nafav  LIKE anlc-nafav,
        aufwb  LIKE anlc-aufwb,
        ndabj  LIKE anlc-ndabj,
        ndabp  LIKE anlc-ndabp,
        ksafa  LIKE anlc-ksafa,
        kaafa  LIKE anlc-kaafa,
        safag  LIKE anlc-safag,
        aafag  LIKE anlc-aafag,
        safal  LIKE anlc-safal,
        aafal  LIKE anlc-aafal,
*        nafav  LIKE anlc-nafav,
        safav  LIKE anlc-safav,
        aafav  LIKE anlc-aafav,
      END OF ls_anlc.
DATA lt_anlc LIKE TABLE OF ls_anlc.
DATA: BEGIN OF ls_anlc2,
        bukrs  LIKE anlc-bukrs,
        anln1  LIKE anlc-anln1,
        afabe  LIKE anlc-afabe,
        afblpe TYPE i,
      END OF ls_anlc2.
DATA lt_anlc2 LIKE TABLE OF ls_anlc2.
DATA: lt_anlc_coll LIKE TABLE OF ls_anlc2,
      ls_anlc_coll LIKE ls_anlc2.
*---forsmartforms
DATA: g_fname   TYPE rs38l_fnam,   "Smartforms对应的函数变量
      g_control TYPE ssfctrlop.  "Smartforms对应控制变量

************************************************************************
*     ALV 变量声明                                                      *
************************************************************************
DATA: it_fieldcat TYPE slis_t_fieldcat_alv, "ALV列字段内表
      wa_fieldcat TYPE slis_fieldcat_alv,
      wa_layout   TYPE slis_layout_alv ,  "ALV 布局
      it_events   TYPE slis_t_event.        "ALV事件内表

************************************************************************
*     常量声明                                                          *
************************************************************************
CONSTANTS: cos_alv_title TYPE tdsfname VALUE '固定资产目录清单查询报表',
           cos_form_name TYPE tdsfname VALUE 'ZFID010'.

************************************************************************
*     选择屏幕                                                          *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.

*PARAMETER p_bukrs TYPE anla-bukrs OBLIGATORY DEFAULT '1500'.  "公司代码
SELECT-OPTIONS s_bukrs FOR anla-bukrs OBLIGATORY .

SELECT-OPTIONS: s_anlkl FOR anla-anlkl ,  "资产分类
                s_anln1 FOR anla-anln1 ,  "资产编号
                s_kostl FOR anlz-kostl ,  "成本中心
                s_raumn FOR anlz-raumn ,  "使用人
*                s_caufn FOR anlz-caufn ,  "内部订单
                s_aktiv FOR anla-aktiv ,  "资本化日期
                s_deakt FOR anla-deakt ,  "不活动日期
                s_bdatu FOR anlz-bdatu NO INTERVALS NO-EXTENSION DEFAULT '99991231'. "资产有效结束日期

SELECTION-SCREEN END OF BLOCK blk1.

*----------------------------------------------------------------------*
* INITIALIZATION
* 程序一执行时触发的事件
*----------------------------------------------------------------------*
INITIALIZATION.
  PERFORM frm_initialization.

*----------------------------------------------------------------------*
* at selection-screen output
*  选择屏幕输出事件,当输出选择屏幕时,会执行该事件后的代码块
*  例如,在该事件中, 可以选择屏幕上的字段作出修改
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  PERFORM frm_modify_screen.

*----------------------------------------------------------------------*
* at selection-screen
* 选择屏幕上事件,当输入Enter、点击执行时,会执行该事件后的代码块
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  PERFORM frm_check_authority.  "权限检查
  PERFORM check_company_auth.
*----------------------------------------------------------------------*
* start-of-selection
* 点击执行按钮后触发该事件后的代码块
* 在该事件后主要是对数据的获取与处理等
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM frm_getdata.

*----------------------------------------------------------------------*
* end-of-selection
* 当执行完对数据处理的事件后,将对数据进行输出显示。
*----------------------------------------------------------------------*
END-OF-SELECTION.
  PERFORM frm_set_alv_event.      "设置ALV事件
  PERFORM frm_set_alv_layout.     "设置ALV布局
  PERFORM frm_set_alv_fieldcats.  "设置ALV列字段
  PERFORM frm_alv_output.         "显示ALV
  PERFORM frm_free_object.  "释放全局内表
*&---------------------------------------------------------------------*
*&      Form  FRM_INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_initialization .

ENDFORM.                    " FRM_INITIALIZATION
*&---------------------------------------------------------------------*
*&      Form  FRM_MODIFY_SCREEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_modify_screen .
*  LOOP AT SCREEN.
*    IF screen-group1 = 'MD1'.
*      screen-input = '0'.
*      MODIFY SCREEN.
*    ENDIF.
*  ENDLOOP.
ENDFORM.                    " FRM_MODIFY_SCREEN
*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_AUTHORITY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_check_authority .

ENDFORM. " FRM_CHECK_AUTHORITY


*&---------------------------------------------------------------------*
*&      Form  FRM_GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM check_company_auth .
  DATA l_bukrs TYPE bukrs.

  SELECT SINGLE bukrs
    INTO l_bukrs
    FROM t001
   WHERE bukrs IN s_bukrs.
  IF sy-subrc <> 0.
    MESSAGE '公司代码不存在' TYPE 'E'.
  ENDIF.

*  AUTHORITY-CHECK  OBJECT 'F_BKPF_BUK'
*         ID 'ACTVT' FIELD '03'
*         ID 'BUKRS' FIELD l_bukrs.
*  IF sy-subrc <> 0.
*    MESSAGE '您没权限' TYPE 'E'.
***    You have no authorization for company code &
*  ENDIF.
ENDFORM.                    " CHECK_COMPANY_AUTH

FORM frm_getdata .

  DATA: BEGIN OF ls_t090na,
          afapl  LIKE t090na-afapl,
          afasl  LIKE t090na-afasl,
          anhwsl LIKE t090na-anhwsl,
*          afatxt LIKE t090na-afatxt,
        END OF ls_t090na.
  DATA lt_t090na LIKE TABLE OF ls_t090na.
  DATA: lt_t090nat TYPE TABLE OF t090nat,
        ls_t090nat TYPE t090nat.
  DATA: lt_t091p TYPE TABLE OF t091p,
        ls_t091p TYPE t091p.
  DATA: lt_t095b TYPE TABLE OF t095b,
        ls_t095b TYPE t095b.
  DATA: lt_ska1 TYPE TABLE OF ska1,
        ls_ska1 TYPE ska1.
  DATA: lt_skat TYPE TABLE OF skat,
        ls_skat TYPE skat.
  DATA: lt_anlp  TYPE TABLE OF anlp,
        lt_anlp2 TYPE TABLE OF anlp,
        ls_anlp  TYPE anlp,
        ls_anlp2 TYPE anlp.

  DATA: BEGIN OF ls_acdoca,
          rldnr      LIKE acdoca-rldnr,
          rbukrs     LIKE acdoca-rbukrs,
          gjahr      LIKE acdoca-gjahr,
          belnr      LIKE acdoca-belnr,
          docln      LIKE acdoca-docln,
          anln1      LIKE acdoca-anln1,
          anbwa      LIKE acdoca-anbwa,
          slalittype LIKE acdoca-slalittype,
          tsl        LIKE acdoca-tsl,
        END OF ls_acdoca.
  DATA lt_acdoca LIKE TABLE OF ls_acdoca.

  DATA l_tsl LIKE acdoca-tsl .

  SELECT  anla~bukrs  "公司代码
          anla~anlkl  "固定资产分类
          anla~anln1  "固定资产编号
          anla~anln2  "固定资产子编号
          anla~txt50  "固定资产描述
          anla~txa50  "规则型号
          anla~sernr  "序列号
          anla~invnr  "存货号
          anla~menge  "数量
          anla~meins  "单位
          anla~invzu  "存放地点
          anla~ord41  "资产状态
          anla~lifnr  "供应商
          anla~liefe  "供应商名称关联字段
          anla~aktiv  "资本化日期
          anla~deakt  "不活动日期
          anla~herst  "制造商
*          anla~ord41  "资产的处置形式(改)
          anla~ord42  "资产状态(改)
          anlz~kostl  "成本中心
          anlz~caufn  "内部订单
          anlz~raumn  "固定资产保管人
          anla~typbz  "使用部门
          anla~erdat  "录入日期
          anla~ktogr  "科目定位码
    FROM anla INNER JOIN anlz
    ON anla~bukrs = anlz~bukrs AND
       anla~anln1 = anlz~anln1 AND
       anla~anln2 = anlz~anln2
    INTO CORRESPONDING FIELDS OF TABLE it_output
  WHERE anla~bukrs IN s_bukrs
    AND anla~anlkl IN s_anlkl
    AND anla~anln1 IN s_anln1
    AND anla~aktiv IN s_aktiv
*    AND anlz~caufn IN s_caufn
    AND anlz~kostl IN s_kostl
    AND anla~deakt IN s_deakt
    AND anlz~bdatu IN s_bdatu
    AND anlz~raumn IN s_raumn.

  IF it_output IS NOT INITIAL.

    SELECT rldnr
           rbukrs
           gjahr
           belnr
           docln
           anln1
           anbwa
           slalittype
           tsl
      INTO CORRESPONDING FIELDS OF TABLE lt_acdoca
      FROM acdoca
       FOR ALL ENTRIES IN it_output
     WHERE rbukrs = it_output-bukrs
        AND anln1 = it_output-anln1
       AND (
            anbwa = '100'
         OR ( anbwa = '970'  AND slalittype = '7000' )
         OR ( anbwa = '980' AND slalittype = '7000' )
         OR ( anbwa = '346' )
            ) .
    SORT lt_acdoca BY rbukrs anln1.

    SELECT anlh~anlhtxt  "资产主号文本
           anlh~bukrs
           anlh~anln1
           anlh~luntn
      FROM anlh
      INTO CORRESPONDING FIELDS OF TABLE it_anlhtxt
      FOR ALL ENTRIES IN it_output
      WHERE anlh~bukrs = it_output-bukrs
        AND anlh~anln1 = it_output-anln1
        AND anlh~luntn = it_output-anln2.
    SORT it_anlhtxt BY bukrs anln1 luntn.


    SELECT bukrs
          gjahr
          peraf
          afbnr
          anln1
          anln2
          afaber
          zujhr
          zucod
          nafaz
          aafaz
      INTO CORRESPONDING FIELDS OF TABLE lt_anlp
      FROM anlp
       FOR ALL ENTRIES IN it_output
     WHERE anlp~bukrs = it_output-bukrs
        AND anlp~anln1 = it_output-anln1
      AND anlp~anln2 = it_output-anln2
      AND afaber = '01'.
    SORT lt_anlp BY bukrs anln1 gjahr peraf DESCENDING .
    APPEND LINES OF lt_anlp TO lt_anlp2 .
    SORT lt_anlp2 BY bukrs anln1 peraf .

    SELECT anlc~ndabj  "已使用年份
           anlc~ndabp  "已使用月份
           anlc~kansw
           anlc~answl
           anlc~aufwb  "改动
           anlc~nafag  "改动
           anlc~safag  "改动
           anlc~aafag  "改动

           anlc~bukrs
           anlc~anln1
           anlc~anln2
           anlc~afabe
           anlc~knafa
           anlc~nafal
           anlc~nafav
      FROM anlc
      INTO CORRESPONDING FIELDS OF TABLE it_anlc
      FOR ALL ENTRIES IN it_output
      WHERE anlc~bukrs = it_output-bukrs
        AND anlc~anln1 = it_output-anln1
        AND anlc~anln2 = it_output-anln2.
    SORT it_anlc BY bukrs anln1 anln2 .

    SELECT bukrs
           anln1
           gjahr
           afabe
           afblpe
           answl
           kansw

           knafa
           nafag
           nafal
           nafav
           ndabj
           ndabp

           ksafa
           kaafa
           safag
           aafag
           safal
           aafal
           nafav
           safav
           aafav
      INTO CORRESPONDING FIELDS OF TABLE lt_anlc
      FROM anlc
       FOR ALL ENTRIES IN it_anlc
     WHERE bukrs = it_anlc-bukrs
       AND anln1 = it_anlc-anln1
       AND afabe = it_anlc-afabe.
    SORT lt_anlc BY bukrs anln1 afabe gjahr DESCENDING."根据财年降序排列
    LOOP AT lt_anlc INTO ls_anlc.
      MOVE-CORRESPONDING ls_anlc TO ls_anlc2.
      APPEND ls_anlc2 TO lt_anlc2.
      CLEAR: ls_anlc2,ls_anlc.
    ENDLOOP.
    SORT lt_anlc2 BY bukrs anln1 afabe .
    LOOP AT lt_anlc2 INTO ls_anlc2.
      COLLECT ls_anlc2 INTO lt_anlc_coll.
      CLEAR ls_anlc2.
    ENDLOOP.
    SORT lt_anlc_coll BY bukrs anln1 afabe.


    SELECT  anlb~afasl  "折旧码
            anlb~ndjar  "使用年限
            anlb~ndper  "使用期间
            anlb~afabg  "折旧开始日期

            anlb~bukrs
            anlb~anln1
            anlb~anln2
            anlb~schrw_proz
   FROM anlb
   INTO TABLE it_anlb
   FOR ALL ENTRIES IN it_output
   WHERE anlb~bukrs = it_output-bukrs
     AND anlb~anln1 = it_output-anln1
     AND anlb~anln2 = it_output-anln2.
    SORT it_anlb BY bukrs anln1 anln2.

    SELECT  anlb~afasl  "折旧码
            anlb~ndjar  "使用年限
            anlb~ndper  "使用期间
            anlb~afabg  "折旧开始日期
            anlb~bdatu  "
            anlb~afabe

            anlb~bukrs
            anlb~anln1
            anlb~anln2
            anlb~schrw_proz
   FROM anlb
   INTO CORRESPONDING FIELDS OF TABLE it_anlb2
   FOR ALL ENTRIES IN it_output
   WHERE anlb~bukrs = it_output-bukrs
     AND anlb~anln1 = it_output-anln1
     AND anlb~anln2 = it_output-anln2.
    SORT it_anlb2 BY bukrs anln1 afabe bdatu DESCENDING. "根据财年降序排列

    IF it_anlb IS NOT INITIAL .
      SELECT afapl
           afasl
           anhwsl
*           afatxt
      INTO CORRESPONDING FIELDS OF TABLE lt_t090na
      FROM t090na
       FOR ALL ENTRIES IN it_anlb
     WHERE afasl = it_anlb-afasl
       AND afapl = '1000'.
      IF lt_t090na IS NOT INITIAL .
        SELECT *
          INTO TABLE lt_t090nat
          FROM t090nat
         WHERE spras = 1.
        SORT lt_t090nat BY afapl afasl .
      ENDIF.

      SELECT *
        INTO TABLE lt_t091p
        FROM t091p .
      SORT lt_t090na BY afasl .
      SORT lt_t091p BY anhwsl .
    ENDIF.

    SELECT *
      INTO TABLE lt_t095b
      FROM t095b
       FOR ALL ENTRIES IN it_output
     WHERE ktogr = it_output-ktogr
       AND ktopl = '1000'
       AND afabe = 1.
    SORT lt_t095b BY ktogr.
    IF lt_t095b IS NOT INITIAL .
*      SELECT *
*        INTO TABLE lt_ska1
*        FROM ska1
*         FOR ALL ENTRIES IN lt_t095b
*       WHERE saknr = lt_t095b-ktnafb
*         AND ktopl = '1000'.
*      SORT lt_ska1 BY saknr .
*      IF LT_SKA1 IS NOT INITIAL .
      SELECT *
        INTO TABLE lt_skat
        FROM skat
         FOR ALL ENTRIES IN lt_t095b
       WHERE spras = 1
         AND saknr = lt_t095b-ktnafb
         AND ktopl = '1000'.
      SORT lt_skat BY ktopl saknr.
*      ENDIF.
    ENDIF.



  ENDIF.


  LOOP AT it_output INTO wa_output.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        input          = wa_output-meins
        language       = sy-langu
      IMPORTING
*       long_text      =
        output         = wa_output-meins
*       short_text     =
      EXCEPTIONS
        unit_not_found = 1
        OTHERS         = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.


    SELECT SINGLE t001~butxt  "公司代码名称
                  t001~waers  "币种
      FROM t001
      INTO (wa_output-butxt,
            wa_output-waers)
      WHERE t001~bukrs = wa_output-bukrs.

    SELECT SINGLE cskt~ltext  "成本中心描述
      FROM cskt
      INTO wa_output-ltext
      WHERE cskt~kostl = wa_output-kostl.

    SELECT SINGLE ankt~txk20  "固定资产分类描述
      FROM ankt
      INTO wa_output-txk20
      WHERE ankt~anlkl = wa_output-anlkl
        AND spras = sy-langu.

    READ TABLE it_anlhtxt INTO wa_anlhtxt WITH KEY bukrs = wa_output-bukrs
                                                   anln1 = wa_output-anln1
                                                   luntn = wa_output-anln2
                                                   BINARY SEARCH.
    IF sy-subrc = 0.
      wa_output-anlhtxt = wa_anlhtxt-anlhtxt. "资产主号文本
    ENDIF.

    SELECT SINGLE lfa1~name1
      FROM lfa1
      INTO wa_output-name1
      WHERE lfa1~lifnr = wa_output-lifnr
        AND lfa1~land1 = 'CN'.

    SELECT SINGLE t087t~ordtx
      FROM t087t
      INTO wa_output-ordtx
      WHERE t087t~ord4x = wa_output-ord41
        AND ordnr = 1
        AND t087t~spras = sy-langu.

    SELECT SINGLE t087t~ordtx AS ordt2
      FROM t087t
      INTO wa_output-ordt2
      WHERE t087t~ord4x = wa_output-ord42
        AND t087t~spras = sy-langu.

    READ TABLE lt_t095b INTO ls_t095b WITH KEY ktogr = wa_output-ktogr BINARY SEARCH.
    IF sy-subrc = 0.
      wa_output-ktnafb = ls_t095b-ktnafb.
      READ TABLE lt_skat INTO ls_skat WITH KEY saknr = ls_t095b-ktnafb BINARY SEARCH .
      IF sy-subrc = 0.
        wa_output-txt20 = ls_skat-txt20.
      ENDIF.
    ENDIF.



    READ TABLE it_anlb INTO wa_anlb WITH KEY bukrs = wa_output-bukrs
                                             anln1 = wa_output-anln1
                                             anln2 = wa_output-anln2
                                             BINARY SEARCH.
    IF sy-subrc = 0.
      wa_output-afasl = wa_anlb-afasl. "折旧码
      wa_output-ndjar = wa_anlb-ndjar."使用年限
      wa_output-ndper = wa_anlb-ndper."使用期间
      wa_output-afabg = wa_anlb-afabg. "折旧开始日期

      " 净残值率
      IF wa_anlb-schrw_proz <> '0' .
        wa_output-ahproz = wa_anlb-schrw_proz .
      ELSE.
        READ TABLE lt_t090na INTO ls_t090na WITH KEY afasl = wa_anlb-afasl
                                                   BINARY SEARCH.
        IF sy-subrc = 0 .
          IF ls_t090na-anhwsl IS NOT INITIAL.
            READ TABLE lt_t091p INTO ls_t091p WITH KEY anhwsl = ls_t090na-anhwsl
                                                               BINARY SEARCH.
            IF sy-subrc = 0.
              wa_output-ahproz = ls_t091p-ahproz."净残值率
            ENDIF.
          ELSE.
            wa_output-ahproz = 0.
          ENDIF.
          CLEAR ls_t090na .
        ENDIF.
      ENDIF.

      READ TABLE lt_t090na INTO ls_t090na WITH KEY afasl = wa_anlb-afasl
                                                   BINARY SEARCH.
      IF sy-subrc = 0 .
        READ TABLE lt_t090nat INTO ls_t090nat WITH KEY afapl = ls_t090na-afapl
                                                       afasl = ls_t090na-afasl
                                                       BINARY SEARCH .
        IF sy-subrc = 0.
          wa_output-afatxt = ls_t090nat-afatxt."折旧方法
        ENDIF.

      ENDIF.
    ENDIF.



    READ TABLE it_anlc INTO wa_anlc WITH KEY bukrs = wa_output-bukrs
                                             anln1 = wa_output-anln1
                                             anln2 = wa_output-anln2
                                             BINARY SEARCH.
    IF sy-subrc = 0.
      wa_output-ndabj = wa_anlc-ndabj. "已使用年份
      wa_output-ndabp = wa_anlc-ndabp."已使用月份
      wa_output-kansw = wa_anlc-kansw.
      wa_output-answl = wa_anlc-answl.
      wa_output-aufwb = wa_anlc-aufwb."改动
      wa_output-nafag = wa_anlc-nafag."改动
      wa_output-safag = wa_anlc-safag."改动
      wa_output-aafag = wa_anlc-aafag."改动

      IF wa_output-anlkl = 'Z300'.
        wa_output-afblpe = 0 .
      ELSE.
        CLEAR ls_anlc.
        READ TABLE lt_anlc INTO ls_anlc WITH KEY bukrs = wa_anlc-bukrs
                                                 anln1 = wa_anlc-anln1
                                                 afabe = 1
                                                 BINARY SEARCH.
        IF sy-subrc = 0.
*          wa_output-afblpe = ls_anlc-ndabj * 12 + ls_anlc-ndabp ."已计提月份
          READ TABLE it_anlb2 INTO wa_anlb2 WITH KEY bukrs = wa_anlc-bukrs
                                                      anln1 = wa_anlc-anln1
                                                      afabe = 1
                                                      BINARY SEARCH.
          IF sy-subrc = 0.
*          wa_output-afblpe = ls_anlc-ndabj * 12 + ls_anlc-ndabp ."已计提月份
            DATA l_year TYPE char4.
            DATA l_mon TYPE char2 .
            l_year = wa_anlb2-afabg+0(4).
            l_mon = wa_anlb2-afabg+4(2).
            wa_output-afblpe = ( ls_anlc-gjahr - l_year ) * 12 + ( ls_anlc-afblpe - l_mon + 1 ) .
            IF wa_output-afblpe < 0 .
              CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
                CHANGING
                  value = wa_output-afblpe.
            ENDIF.
            CLEAR ls_anlc.
          ENDIF.
          CLEAR ls_anlc.
        ENDIF.
      ENDIF.

*      READ TABLE lt_anlc_coll INTO ls_anlc_coll WITH KEY bukrs = wa_anlc-bukrs
*                                                         anln1 = wa_anlc-anln1
*                                                         afabe = wa_anlc-afabe
*                                                         BINARY SEARCH .
*      IF sy-subrc = 0.
*        wa_output-afblpe = ls_anlc_coll-afblpe.
*        CLEAR ls_anlc_coll.
*      ENDIF.
      READ TABLE lt_anlc INTO ls_anlc WITH KEY bukrs = wa_anlc-bukrs
                                               anln1 = wa_anlc-anln1
                                               afabe = wa_anlc-afabe
                                               BINARY SEARCH.
      IF sy-subrc = 0.
        wa_output-gouzhi = ls_anlc-kansw + ls_anlc-answl."原值
        wa_output-zhejiu = ls_anlc-knafa + ls_anlc-ksafa + ls_anlc-kaafa + ls_anlc-nafag + ls_anlc-safag + ls_anlc-aafag +
                           ls_anlc-nafal + ls_anlc-safal + ls_anlc-aafal + ls_anlc-nafav + ls_anlc-safav + ls_anlc-aafav  ."累计折旧
*        wa_output-jingzhi = wa_output-gouzhi - wa_output-zhejiu."净值
        wa_output-jingzhi = wa_output-gouzhi + wa_output-zhejiu + ls_anlc-aufwb."净值
        IF wa_output-deakt IS INITIAL .
          wa_output-bfqljzj = wa_output-zhejiu .
        ELSE.
          wa_output-bfqljzj = ( ls_anlc-nafal + ls_anlc-safal + ls_anlc-aafal + ls_anlc-safav + ls_anlc-aafav + ls_anlc-nafav ) * -1 .
        ENDIF.
      ENDIF.
    ENDIF.


    wa_output-ahpro = wa_output-gouzhi * wa_output-ahproz / 100."净残值

    " 月折旧额
    IF wa_output-anlkl = 'Z300'.
      wa_output-yuezhejiue = 0 .
    ELSE.
*      wa_output-yuezhejiue = ( wa_output-jingzhi - wa_output-ahpro ) /
*                              ( wa_output-ndjar * 12 + wa_output-ndper - wa_output-afblpe ) .
      READ TABLE lt_anlp INTO ls_anlp2  WITH KEY bukrs = wa_output-bukrs
                                               anln1 = wa_output-anln1
                                               BINARY SEARCH  .
      IF sy-subrc = 0 .
        LOOP AT lt_anlp INTO ls_anlp FROM sy-tabix .
          IF ls_anlp-bukrs = wa_output-bukrs AND
            ls_anlp-anln1 = wa_output-anln1 AND
            ls_anlp-gjahr = ls_anlp2-gjahr AND
            ls_anlp-peraf = ls_anlp2-peraf .
            wa_output-yuezhejiue = wa_output-yuezhejiue + ls_anlp-nafaz + ls_anlp-aafaz .
          ELSE.
            EXIT.
          ENDIF.
          CLEAR ls_anlp .
        ENDLOOP.
*        READ TABLE lt_anlp2  WITH KEY bukrs = wa_output-bukrs
*                                                   anln1 = wa_output-anln1
*                                                   BINARY SEARCH TRANSPORTING NO FIELDS .
*        IF sy-subrc = 0 .
*          LOOP AT lt_anlp2 INTO ls_anlp2 FROM sy-tabix .
*            IF ls_anlp2-bukrs = wa_output-bukrs AND
*              ls_anlp2-anln1 = wa_output-anln1 .
*              wa_output-yuezhejiue = wa_output-yuezhejiue  + ls_anlp2-aafaz .
*            ELSE.
*              EXIT .
*            ENDIF.
*          ENDLOOP.
*        ENDIF.
      ENDIF.
      IF wa_output-yuezhejiue < 0 .
        CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
          CHANGING
            value = wa_output-yuezhejiue.
      ENDIF.

      CLEAR ls_anlp2 .
    ENDIF.

    " 月折旧率
    IF wa_output-gouzhi = 0 .
      wa_output-yuezhejiulv = 0 .
    ELSE .
      wa_output-yuezhejiulv = wa_output-yuezhejiue / wa_output-gouzhi * 100 .
    ENDIF.

    IF wa_output-deakt IS INITIAL .
      wa_output-bfqzcyz = wa_output-gouzhi .
    ELSE.
      READ TABLE lt_acdoca  WITH KEY rbukrs = wa_output-bukrs
                                                   anln1 = wa_output-anln1
                                                   BINARY SEARCH TRANSPORTING NO FIELDS .
      IF sy-subrc = 0.
        LOOP AT lt_acdoca INTO ls_acdoca FROM sy-tabix .
          IF ls_acdoca-rbukrs = wa_output-bukrs AND
             ls_acdoca-anln1 = wa_output-anln1 .
            l_tsl = l_tsl + ls_acdoca-tsl .
          ELSE.
            EXIT.
          ENDIF.
        ENDLOOP.
      ENDIF.
      wa_output-bfqzcyz = l_tsl.
      CLEAR l_tsl.
    ENDIF.

*    wa_output-gouzhi = wa_output-kansw + wa_output-answl.
*    wa_output-zhejiu = wa_output-nafag + wa_output-safag + wa_output-aafag.
*    wa_output-jingzhi = wa_output-gouzhi + wa_output-zhejiu + wa_output-aufwb.

    MODIFY it_output FROM wa_output.
  ENDLOOP.

  SORT it_output BY bukrs anlkl anln1.



ENDFORM.                    " FRM_GETDATA

*&---------------------------------------------------------------------*
*&      Form  frm_set_alv_fieldcats
*&---------------------------------------------------------------------*
*       text fiedcat settings for alv
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_alv_fieldcats .
  PERFORM frm_set_fieldcat USING:
  'ANLKL'         ''               '资产类别编号'        10 '',
  'TXK20'         ''               '资产类别名称'     14 '',
  'BUKRS'         ''           '公司代码'            8 '',
  'BUTXT'         ''           '公司代码名称'            8 '',
  'ANLN1'         ''          '固定资产编号'         12 '',
*  'ANLN2'         ''          '固定资产子编号'       15 '',
  'TXT50'         ''          '固定资产名称'         20 '',
  'HERST'         ''          'U8编码'           10 '',
  'KOSTL'         ''          '成本中心'           10 '',
  'INVNR'         ''          '规格型号'              10 '',
  'SERNR'         ''          '序列号'              10 '',
*  'TXA50'         ''              '规格型号'            10 'X',
*  'ANLHTXT'       ''          '资产主号文本'        20 '',


  'MENGE'         ''          '数量'                10 '',
  'MEINS'         ''          '基本计量单位'                10 '',


*  'ORD41'         ''               '状态'           13 '',
'ORDTX'         ''          '状态(描述)'      15 '',
  'AKTIV'         ''          '开始使用日期'           10 '',
  'NDJAR'         ''          '使用年限(年)'           10 '',
  'NDPER'         ''          '使用年限(月)'           10 '',
  'AFBLPE'         ''          '已计提月份'           10 '',
  'GOUZHI'        ''              '原值'           10 '',
  'AHPROZ'         ''          '净残值率(%)'           10 '',
  'AHPRO'         ''          '净残值'           10 '',
  'YUEZHEJIULV'         ''          '月折旧率(%)'           10 '',
  'YUEZHEJIUE'         ''          '月折旧额'           10 '',
  'ZHEJIU'        ''              '累计折旧金额'        10 '',
  'JINGZHI'       ''              '净值'                 10 '',
  'WAERS'         ''          '币种'           10 '',
  'TXT20'         ''          '对应折旧科目'           10 '',
  'KTNAFB'         ''          '对应折旧科目编码'           10 '',
  'AFATXT'         ''          '折旧方法'           10 '',
  'INVZU'         ''              '存放地点'            10 '',
  'TYPBZ'         ''          '使用部门'           10 '',
  'RAUMN'         ''           '使用人'             10 '',
  'LIFNR'         ''          '供货单位'           10 '',
  'ERDAT'         ''          '录入日期'           10 '',
  'DEAKT'         ''          '报废日期'           10 '',
  'BFQZCYZ'         ''          '报废前资产原值'           10 '',
  'BFQLJZJ'         ''          '报废前累计折旧'           10 ''.





*  'ORD42'         ''               '资产状态'           10 '',
*  'ORDT2'         ''          '资产状态描述'      15 '',
*
*
*  'CAUFN'         ''          '内部订单'           10 '',
*
*  'NAME1'         ''          '供应商名称'           10 '',
*
*
*
*  'AFASL'         ''          '折旧码'           10 '',
*
*  'NDPER'         ''          '使用期间'           10 '',
*  'NDABJ'         ''          '已使用年份'           10 '',
*  'NDABP'         ''          '已使用月份'           10 '',
*  'AFABG'         ''              '折旧开始日期'           10 '',
*
*
*  'AUFWB'         ''              '固定资产减值'    10 ''.



ENDFORM. " frm_set_alv_fieldcats
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0136   text
*      -->P_0137   text
*      -->P_0138   text
*----------------------------------------------------------------------*
FORM frm_set_fieldcat USING p_fieldname TYPE slis_fieldname
                             p_ref_tabname TYPE slis_tabname
                             p_text TYPE dd03p-scrtext_l
                             p_outputlen TYPE dd03p-outputlen
                             p_zero TYPE char1.


  CLEAR wa_fieldcat.
  wa_fieldcat-fieldname  = p_fieldname.   "对应的内表字段名
  wa_fieldcat-ref_tabname = p_ref_tabname."参考的系统表
  wa_fieldcat-seltext_l = p_text.         "标题内容
  wa_fieldcat-outputlen = p_outputlen.    "列宽
  wa_fieldcat-no_zero = p_zero.           "显示时去前导零

  APPEND wa_fieldcat TO it_fieldcat.

ENDFORM.                    " frm_set_fieldcat

*&---------------------------------------------------------------------*
*&      Form  frm_set_alv_layout
*&---------------------------------------------------------------------*
*       text layout settings for alv
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_alv_layout .
  wa_layout-zebra = 'X'.            "条纹显示
  wa_layout-box_fieldname = 'SEL'.  "行选择标识.

ENDFORM. " frm_set_alv_layout

*&---------------------------------------------------------------------*
*&      Form  frm_set_alv_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

FORM frm_set_alv_event .
  DATA: l_top_of_page TYPE slis_formname VALUE 'FRM_TOP_OF_PAGE',
        lw_events     TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = it_events
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
* 在事件(字段名:name)为 "top_of_page" 的行中将form名(字段名:form)
* 设为 frm_top_of_page, 这样,系统就会自动 perform frm_top_of_page
  CLEAR lw_events.
  READ TABLE it_events INTO lw_events
                       WITH KEY name = slis_ev_top_of_page .
  " TOP_OF_PAGE
  IF sy-subrc = 0.
    lw_events-form = l_top_of_page."调用子程序名
    MODIFY it_events FROM lw_events INDEX sy-tabix.
  ENDIF.

ENDFORM.                    " frm_set_alv_event

*&---------------------------------------------------------------------*
*&      Form  FRM_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       表头
*&---------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*&---------------------------------------------------------------------*
FORM  frm_top_of_page.
  DATA: lt_listheader TYPE slis_t_listheader,
        lw_listheader LIKE LINE OF lt_listheader.

  lw_listheader-typ  = 'H'." 大标题
  lw_listheader-info = cos_alv_title. "标题内容
  APPEND lw_listheader TO lt_listheader.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_listheader.

ENDFORM.                    "FRM_TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&      Form  frm_alv_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_alv_output .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout          = wa_layout
      it_fieldcat        = it_fieldcat  "输出的列信息
      i_save             = 'A'          "变式可保存
      it_events          = it_events    "事件内表
*     i_callback_pf_status_set = 'FRM_SET_STATUS'  "状态栏
*     i_callback_user_command  = 'FRM_USER_COMMAND' "按钮处理
    TABLES
      t_outtab           = it_output    "输出内容内表
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM. " frm_alv_output

*&---------------------------------------------------------------------*
*&      Form  FRM_FREE_OBJECT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_free_object .
  FREE: it_output.

ENDFORM.                    " FRM_FREE_OBJECT

**&---------------------------------------------------------------------*
**&      Form  FRM_SET_STATUS
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->PT_EXTAB   text
**----------------------------------------------------------------------*
*FORM frm_set_status USING pt_extab TYPE slis_t_extab .
*  SET PF-STATUS 'STANDARD'.
*
*ENDFORM. "Frm_SET_STATUS
*
**&---------------------------------------------------------------------*
**&      Form  FRM_USER_COMMAND
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->R_UCOMM      text
**      -->RS_SELFIELD  text
**----------------------------------------------------------------------*
*FORM frm_user_command USING r_ucomm LIKE sy-ucomm
*                        rs_selfield TYPE slis_selfield.
*
*  CASE r_ucomm.
*    WHEN 'PRNT'.
*      PERFORM frm_print_data." Smartform 打印
*
*    WHEN '&IC1'.            "双击时间
*      READ TABLE it_output INTO wa_output INDEX rs_selfield-tabindex.
*      CASE rs_selfield-fieldname.
*          SET PARAMETER ID 'BUK' FIELD '1010'.
*          SET PARAMETER ID 'AN1' FIELD wa_output-anln1.
*          SET PARAMETER ID 'AN2' FIELD wa_output-anln2.
*          CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.
*
*      ENDCASE.
*
***  设置刷新模式,行列保持不变
*      rs_selfield-refresh = 'X'.
*      rs_selfield-col_stable = 'X'.
*      rs_selfield-row_stable = 'X'.
*  ENDCASE.
*ENDFORM. "user_command
**&---------------------------------------------------------------------*
**&      Form  FRM_PRINT_DATA
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM frm_print_data .
*  PERFORM frm_ssf_open.
*  PERFORM frm_ssf_process.
*  PERFORM frm_ssf_close.
*
*ENDFORM. " FRM_PRINT_DATA
*
**&---------------------------------------------------------------------*
**&      Form  FRM_SSF_OPEN
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*FORM frm_ssf_open .
**  g_control-no_dialog = 'X'.  "不弹出对话框
*  g_control-preview = 'X'.    "预览
*  g_control-no_open = 'X'.
*  g_control-no_close = 'X'.
*
*  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
*    EXPORTING
*      formname           = cos_form_name
*    IMPORTING
*      fm_name            = g_fname
*    EXCEPTIONS
*      no_form            = 1
*      no_function_module = 2
*      OTHERS             = 3.
*  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*  ENDIF.
*
*  CALL FUNCTION 'SSF_OPEN'
*    EXPORTING
*      control_parameters = g_control
*    EXCEPTIONS
*      formatting_error   = 1
*      internal_error     = 2
*      send_error         = 3
*      user_canceled      = 4
*      OTHERS             = 5.
*
*ENDFORM. " FRM_SSF_OPEN
*
**&---------------------------------------------------------------------*
**&      Form  FRM_SSF_PROCESS
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM frm_ssf_process .
*  DATA: lt_output   TYPE STANDARD TABLE OF zzfis015,  "参考的格式为 smartfroms 的内表参考的格式
*        lw_output   LIKE LINE OF lt_output,
*        lt_zzfis015 TYPE STANDARD TABLE OF zzfis015,
*        lw_zzfis015 LIKE LINE OF lt_zzfis015.
*
*  DATA l_fm_name    TYPE rs38l_fnam.
*
*  LOOP AT it_output INTO wa_output WHERE sel = 'X'.    "选中的行
*    CLEAR lw_zzfis015.
*    MOVE-CORRESPONDING wa_output TO lw_zzfis015.
*    APPEND lw_zzfis015 TO lt_zzfis015.
*  ENDLOOP.
*
*  SORT lt_zzfis015 BY anln1.                           "按照供应商编号进行派讯
*
*  LOOP AT lt_zzfis015 INTO lw_zzfis015.
*    READ TABLE lt_zzfis015 INTO lw_output INDEX sy-tabix.
*
*    AT END OF anln1.                                  "读取出排序后的内表(按供应商排序)一个供应商的最后一行值
*      APPEND lw_output TO lt_output.
*      CALL FUNCTION g_fname                           "把当作参数的函数名把内表参数传到表格
*        EXPORTING
*          control_parameters = g_control
*        TABLES
*          it_output2         = lt_output
*        EXCEPTIONS
*          formatting_error   = 1
*          internal_error     = 2
*          send_error         = 3
*          user_canceled      = 4
*          OTHERS             = 5.
*      IF sy-subrc <> 0.
*        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*      ENDIF.
*      CLEAR lt_output.
*      CONTINUE.
*    ENDAT.
*
*    APPEND lw_output TO lt_output.
*
*  ENDLOOP.
*
*ENDFORM. " FRM_SSF_PROCESS
*
*
**&---------------------------------------------------------------------*
**&      Form  FRM_SSF_CLOSE
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM frm_ssf_close .
*  CALL FUNCTION 'SSF_CLOSE'
*    EXCEPTIONS
*      formatting_error = 1
*      internal_error   = 2
*      send_error       = 3
*      OTHERS           = 4.
*
*ENDFORM. " FRM_SSF_CLOSE

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM