固定資產清單查詢報表


*&---------------------------------------------------------------------*
*& 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