损益科目明细表

155 阅读7分钟

输出字段及取值逻辑

字段描述取值逻辑
A公司代码BSEG-BUKRS
B财年BSEG-GJAHR
C年/月BSEG-GJAHR/BSEG-H_MONAT
D科目代码BSEG-KSTAR
E科目名称BSEG-KSTAR=CSKU-KSTAR,取CSKU-KTEXT
F过帐日期BSEG-H_BUDAT
G凭证类型BSEG-H_BLART
H凭证编号BSEG-BELNR,双击凭证编码可以查看凭证信息。
I业务货币BSEG-H_WAERS
J业务币金额BSEG-WRBTR,若BSEG-SHKZG=H ,加负号显示。
K本币BSEG-H_HWAER
L本币金额BSEG-DMBTR,若BSEG-SHKZG=H ,加负号显示。
M反记账BSEG-NPLNR
N参照BSEG-BELNR=BKPF-BELNR,取BKPF-XBLNR
O分配BSEG-ZUONR
P文本BSEG-SGTXT
Q利润中心BSEG-PRCTR
R利润中心名称BSEG-PRCTR=CEPCT-PRCTR,取CEPCT-KTEXT
S成本中心BSEG-KOSTL
T成本中心名称BSEG-KOSTL=CSKT-KOSTL,取CSKT-KTEXT
U内部订单号BSEG-AUFNR
V内部订单名称BSEG-AUFNR=AUFK-AUFNR,取AUFK-KTEXT
W获利能力段BSEG-PAOBJNR
S国家(取文本描述)1、BSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-KMLAND_PA;            2、ACDOCA-KMLAND参考KNA1-LAND1字段,KNA1-LAND1=T005T-LAND1,取T005T-LANDX.
Y客户BSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-KUNNR
Z品牌BSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-WW01_PA
OSKUBSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-WW03_PA
P销售订单BSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-KDAUF
Q销售订单项目BSEG-PAOBJNR=ACDOCA-PAOBJNR and BSEG-BELNR=ACDOCA-BELNR and BSEG-BUZEI=ACDOCA-BUZEI,取 ACDOCA-KDPOS
RCO 凭证编号BSEG-BELNR=ACDOCA-BELNR and BSEG-GJAHR=ACDOCA-GJAHR and BSEG-BUKRS=ACDOCA-RBUKRS,取ACDOCA-CO_BELNR

main 函数

REPORT zfiu039.  
  
INCLUDE zfiu039_top.  
INCLUDE zfiu039_f01.  
  
AT SELECTION-SCREEN.  
  
START-OF-SELECTION.  
  PERFORM frm_gt_data.  
  PERFORM get_data.  
  
END-OF-SELECTION.  
  PERFORM show_data.

top 头文件

*&---------------------------------------------------------------------*  
*&  包含                ZFIU039_TOP  
*&---------------------------------------------------------------------*  
TYPE-POOLS: slis.  
TABLES: bseg, csku, bkpf, cepct, cskt, aufk, kna1, acdoca, t005t, ce18000, skat.  
  
  
DATA: BEGIN OF gs_out,      "用于显示在ALV上的数据结构  
  
        bukrs     TYPE bseg-bukrs,    " 公司代码  
        gjahr     TYPE bseg-gjahr,    " 财年  
        h_monat   TYPE bseg-h_monat,  " 月  
*        kstar     TYPE bseg-kstar,    " 成本元素  
*        kstxt     TYPE csku-ktext,    " 成本元素名称  
        hkont     TYPE bseg-hkont,    "  科目代码  
*        txt20     TYPE skat-txt20,    " 科目名称  
        txt50     TYPE skat-txt50,    " 变更总账科目名称为长文本 
        h_budat   TYPE bseg-h_budat,  " 过帐日期  
        h_blart   TYPE bseg-h_blart,  " 凭证类型  
        belnr     TYPE bseg-belnr,    " 凭证编号  
        h_waers   TYPE bseg-h_waers,  " 业务货币  
        wrbtr     TYPE bseg-wrbtr,    " 业务币金额  
        shkzg     TYPE bseg-shkzg,    " 借/贷标识  
        h_hwaer   TYPE bseg-h_hwaer,  " 本币  
        dmbtr     TYPE bseg-dmbtr,    " 本币金额  
        nplnr     TYPE bseg-nplnr,    " 反记账  
        xblnr     TYPE bkpf-xblnr,    " 参照  
        zuonr     TYPE bseg-zuonr,    " 分配  
        sgtxt     TYPE bseg-sgtxt,    " 文本  
        prctr     TYPE bseg-prctr,    " 利润中心  
        prtxt     TYPE cepct-ktext,   " 利润中心名称  
        kostl     TYPE bseg-kostl,    " 成本中心  
        kotxt     TYPE cskt-ktext,    " 成本中心名称  
        aufnr     TYPE bseg-aufnr,    " 内部订单号  
        autxt     TYPE aufk-ktext,    " 内部订单号名称  
        paobjnr   TYPE bseg-paobjnr,  " 获利能力段  
        buzei     TYPE bseg-buzei,    " 会计凭证行项目数  
        landx     TYPE t005t-landx,   " 国家名称  
        kmland_pa TYPE acdoca-kmland_pa, " 国家代码  
        kunnr     TYPE acdoca-kunnr,      " 客户  
        ww01_pa   TYPE acdoca-ww01_pa,    " 品牌  
        ww03_pa   TYPE acdoca-ww03_pa,    " SKU  
        kdauf     TYPE acdoca-kdauf,      " 销售订单  
        kdpos     TYPE acdoca-kdpos,      " 销售订单项目  
        co_belnr  TYPE acdoca-co_belnr,   " CO凭证编号  
  
      END OF gs_out.  
  
DATA: BEGIN OF gs_bseg,  
        bukrs   TYPE bseg-bukrs,    " 公司代码  
        gjahr   TYPE bseg-gjahr,    " 财年  
        h_monat TYPE bseg-h_monat,  " 月  
*        kstar   TYPE bseg-kstar,    " 成本要素
        hkont   TYPE bseg-hkont,    " 总账科目
*        txt20   TYPE skat-txt20,    " 总账科目描述  
        txt50   TYPE skat-txt50,    " 变更总账科目名称为长文本
        h_budat TYPE bseg-h_budat,  " 过帐日期  
        h_blart TYPE bseg-h_blart,  " 凭证类型  
        belnr   TYPE bseg-belnr,    " 凭证编号  
        buzei   TYPE bseg-buzei,    " 会计行项目  
        h_waers TYPE bseg-h_waers,  " 业务货币  
        wrbtr   TYPE bseg-wrbtr,    " 业务币金额  
        shkzg   TYPE bseg-shkzg,    " 借/贷标识  
        h_hwaer TYPE bseg-h_hwaer,  " 本币  
        dmbtr   TYPE bseg-dmbtr,    " 本币金额  
        nplnr   TYPE bseg-nplnr,    " 反记账  
        zuonr   TYPE bseg-zuonr,    " 分配  
        sgtxt   TYPE bseg-sgtxt,    " 文本  
        prctr   TYPE bseg-prctr,    " 利润中心  
        kostl   TYPE bseg-kostl,    " 成本中心  
        aufnr   TYPE bseg-aufnr,    " 内部订单号  
        paobjnr TYPE bseg-paobjnr,  " 获利能力段  
      END OF gs_bseg.  
  
* Modify of DEVK911577  
*DATA: BEGIN OF wa_csku,  
*        kstar TYPE csku-kstar,    " 科目代码  
*        ktext TYPE csku-ktext,    " 科目名称  
*      END OF wa_csku.  
* End of modify with DEVK911577  
  
DATA: BEGIN OF wa_bkpf,  
        bukrs TYPE bkpf-bukrs,  
        belnr TYPE bkpf-belnr,    " 凭证编号  
        xblnr TYPE bkpf-xblnr,    " 参照  
        gjahr TYPE bkpf-gjahr,    " 年度  
      END OF wa_bkpf.  
  
DATA: BEGIN OF wa_cepct,  
        prctr TYPE cepct-prctr,   " 利润中心  
        ktext TYPE cepct-ktext,   " 利润中心名称  
      END OF wa_cepct.  
  
DATA: BEGIN OF wa_cskt,  
        kostl TYPE cskt-kostl,    " 成本中心  
        ktext TYPE cskt-ktext,    " 成本中心名称  
      END OF wa_cskt.  
  
DATA: BEGIN OF wa_aufk,  
        aufnr TYPE aufk-aufnr,    " 内部订单号  
        ktext TYPE aufk-ktext,    " 内部订单号名称  
      END OF wa_aufk.  
  
DATA: BEGIN OF wa_t005t,  
        land1 TYPE t005t-land1,  
        landx TYPE t005t-landx,  
      END OF wa_t005t.  
  
DATA: BEGIN OF wa_acdoca,  
        paobjnr     TYPE acdoca-paobjnr,  
        fiscyearper TYPE acdoca-fiscyearper,  " 期间/年度  
        belnr       TYPE acdoca-belnr,  
        buzei       TYPE acdoca-buzei,  
        kmland_pa   TYPE acdoca-kmland_pa,  
        kunnr       TYPE acdoca-kunnr,  
        ww01_pa     TYPE acdoca-ww01_pa,  
        ww03_pa     TYPE acdoca-ww03_pa,  
        kdauf       TYPE acdoca-kdauf,  
        kdpos       TYPE acdoca-kdpos,  
        gjahr       TYPE acdoca-gjahr,  
        rbukrs      TYPE acdoca-rbukrs,  
        co_belnr    TYPE acdoca-co_belnr,  
      END OF wa_acdoca.  
  
DATA: BEGIN OF wa_ce18000,  
        perio   TYPE ce18000-perio,   " 期间/年度  
        paobjnr TYPE ce18000-paobjnr, " 获利能力段编号  
        kmland  TYPE ce18000-kmland,  " 国家/地区代码  
      END OF wa_ce18000.  
  
DATA: gt_out LIKE TABLE OF gs_out WITH HEADER LINE.  
DATA: gt_bseg LIKE TABLE OF gs_bseg.  
  
DATA:  
*      gt_csku    LIKE STANDARD TABLE OF wa_csku WITH HEADER LINE, Modify of DEVK911577  
  gt_bkpf    LIKE STANDARD TABLE OF wa_bkpf WITH HEADER LINE,  
  gt_cepct   LIKE STANDARD TABLE OF wa_cepct WITH HEADER LINE,  
  gt_cskt    LIKE STANDARD TABLE OF wa_cskt WITH HEADER LINE,  
  gt_aufk    LIKE STANDARD TABLE OF wa_aufk WITH HEADER LINE,  
  gt_t005t   LIKE STANDARD TABLE OF wa_t005t WITH HEADER LINE,  
  gt_ce18000 LIKE STANDARD TABLE OF wa_ce18000 WITH HEADER LINE.  
  
DATA: gt_acdoca LIKE TABLE OF wa_acdoca WITH HEADER LINE.  
DATA: wa_acdoca1 LIKE wa_acdoca,  
      gt_acdoca1 LIKE TABLE OF wa_acdoca WITH HEADER LINE.  
  
DATA: gs_fieldcat TYPE lvc_s_fcat,    " 字段工作区  
      gt_fieldcat TYPE lvc_t_fcat,  
      gs_layout   TYPE lvc_s_layo.  
  
DATA: gv_tabix TYPE sy-tabix.  
  
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.  
SELECT-OPTIONS:  
  so_bukrs FOR bseg-bukrs,  
  so_budat FOR bseg-h_budat OBLIGATORY,  
*  so_kstar FOR bseg-kstar,  
  so_hkont FOR bseg-hkont,  
  so_prctr FOR bseg-prctr,  
  so_kmlan FOR acdoca-kmland_pa.  
SELECTION-SCREEN: END OF BLOCK b1.  
  
INITIALIZATION.  
  IF sy-langu = '1'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_BUKRS' '公司代码'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_BUDAT' '过帐日期'.  
*    PERFORM mod_sel_text USING sy-repid 'S' 'SO_KSTAR' '科目代码'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_HKONT' '科目代码'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_PRCTR' '利润中心'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_KMLAN' '国家'.  
  
  ELSE.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_BUKRS' 'Company code'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_BUDAT' 'Posting date'.  
*    PERFORM mod_sel_text USING sy-repid 'S' 'SO_KSTAR' 'Account no.'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_HKONT' 'Account no.'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_PRCTR' 'Profit center no.'.  
    PERFORM mod_sel_text USING sy-repid 'S' 'SO_KMLAN' 'Country'.  
  ENDIF.

f01 头文件

*&---------------------------------------------------------------------*  
*&  包含                ZFIU039_F01  
*&---------------------------------------------------------------------*  
*&---------------------------------------------------------------------*  
*&      Form  FRM_GT_DATA  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM frm_gt_data .  
  PERFORM data_gt_bseg.  
*  PERFORM data_gt_csku.  
  PERFORM data_gt_bkpf.  
  PERFORM data_gt_cepct.  
  PERFORM data_gt_cskt.  
  PERFORM data_gt_aufk.  
  PERFORM data_gt_acdoca.  
  PERFORM data_gt_ce18000.  
  PERFORM data_gt_t005t.  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_BSEG  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_bseg .  
*----------------------------------------------------------------------*  
* Begin of  DEVK911577  
*----------------------------------------------------------------------*  
  
*  SELECT bukrs  
*         gjahr  
*         h_monat  
*         kstar  
*         h_budat  
*         h_blart  
*         belnr  
*         h_waers  
*         wrbtr  
*         buzei  
*         shkzg h_hwaer dmbtr nplnr zuonr sgtxt prctr kostl aufnr paobjnr  
*    FROM bseg INTO CORRESPONDING FIELDS OF TABLE gt_bseg  
*    WHERE bukrs IN so_bukrs  
*    AND h_budat IN so_budat  
*    AND kstar IN so_kstar  
*    AND prctr IN so_prctr.  
  
  SELECT bukrs  
       gjahr  
       h_monat  
*         kstar  
       hkont  
       h_budat  
       h_blart  
       belnr  
       h_waers  
       wrbtr  
       buzei  
       shkzg h_hwaer dmbtr nplnr zuonr sgtxt prctr kostl aufnr paobjnr  
  FROM bseg INTO CORRESPONDING FIELDS OF TABLE gt_bseg  
  WHERE bukrs IN so_bukrs  
  AND h_budat IN so_budat  
  AND hkont IN so_hkont  
  AND prctr IN so_prctr  
  AND hkont LIKE '6%'.  
  
*---------------------END of DEVK911577-------------------------------------------------*  
  
  CLEAR gs_bseg.  
  LOOP AT gt_bseg INTO gs_bseg.  
  
    IF gs_bseg-shkzg EQ 'H'.  
      gs_bseg-dmbtr = gs_bseg-dmbtr * -1.  
      gs_bseg-wrbtr = gs_bseg-wrbtr * -1.  
    ENDIF.  


    SELECT SINGLE txt50 FROM skat INTO gs_bseg-txt50 WHERE saknr = gs_bseg-hkont AND spras = sy-langu. 
  
    MODIFY gt_bseg FROM gs_bseg.  
    CLEAR gs_bseg.  
  ENDLOOP.  

  DELETE gt_bseg WHERE hkont IS INITIAL.  
  SORT gt_bseg BY belnr buzei ASCENDING.  
ENDFORM.  
  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_CSKU  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
*FORM data_gt_csku .  
*  IF gt_bseg[] IS NOT INITIAL.  
*    SELECT kstar ktext INTO CORRESPONDING FIELDS OF TABLE gt_csku  
*      FROM csku FOR ALL ENTRIES IN gt_bseg  
*      WHERE kstar = gt_bseg-kstar  
*      AND spras = sy-langu.  
*  ENDIF.  
*  
*  SORT gt_csku BY kstar.  
*  DELETE gt_csku WHERE kstar IS INITIAL.   " 删除空格  
*  DELETE ADJACENT DUPLICATES FROM gt_csku COMPARING kstar.  " 删除重复  
*  
*ENDFORM.  
  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_BKPF  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_bkpf .  
  IF gt_bseg[] IS NOT INITIAL.  
    SELECT belnr bukrs gjahr xblnr INTO CORRESPONDING FIELDS OF TABLE gt_bkpf  
      FROM bkpf FOR ALL ENTRIES IN gt_bseg  
      WHERE belnr = gt_bseg-belnr  
      AND bukrs = gt_bseg-bukrs  
      AND gjahr = gt_bseg-gjahr.  
  ENDIF.  
*  SORT gt_bkpf BY belnr.  
*  DELETE gt_bkpf WHERE belnr IS INITIAL.   " 删除空格  
*  DELETE ADJACENT DUPLICATES FROM gt_bkpf COMPARING belnr.  " 删除重复  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_CEPCT  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_cepct .  
  IF gt_bseg[] IS NOT INITIAL.  
    SELECT prctr  
           ktext  "利润中心描述  
      INTO CORRESPONDING FIELDS OF TABLE gt_cepct  
      FROM cepct  
      FOR ALL ENTRIES IN gt_bseg  
      WHERE prctr = gt_bseg-prctr  
        AND spras = sy-langu .  
  ENDIF.  
  
  SORT gt_cepct BY prctr.  
  DELETE gt_cepct WHERE prctr IS INITIAL.   " 删除空格  
  DELETE ADJACENT DUPLICATES FROM gt_cepct COMPARING prctr.  " 删除重复  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_CSKT  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_cskt .  
  IF gt_bseg[] IS NOT INITIAL.  
    SELECT ktext  
           kostl  
      INTO CORRESPONDING FIELDS OF TABLE gt_cskt  
      FROM cskt  
      FOR ALL ENTRIES IN gt_bseg  
      WHERE kostl = gt_bseg-kostl  
        AND spras = sy-langu.  
  ENDIF.  
  SORT gt_cskt BY kostl.  
  DELETE gt_cskt WHERE kostl IS INITIAL.   " 删除空格  
  DELETE ADJACENT DUPLICATES FROM gt_cskt COMPARING kostl.  " 删除重复  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_AUFK  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_aufk .  
  IF gt_bseg[] IS NOT INITIAL.  
    SELECT aufnr ktext INTO CORRESPONDING FIELDS OF TABLE gt_aufk  
      FROM aufk FOR ALL ENTRIES IN gt_bseg  
      WHERE aufnr = gt_bseg-aufnr.  
  ENDIF.  
  
  SORT gt_aufk BY aufnr.  
  DELETE gt_aufk WHERE aufnr IS INITIAL.   " 删除空格  
  DELETE ADJACENT DUPLICATES FROM gt_aufk COMPARING aufnr.  " 删除重复  
  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_ACDOCA  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_acdoca .  
  IF gt_bseg[] IS NOT INITIAL. 
  
    SELECT paobjnr gjahr fiscyearper belnr buzei kmland_pa kunnr ww01_pa ww03_pa kdauf kdpos  
     FROM acdoca INTO CORRESPONDING FIELDS OF TABLE gt_acdoca  
     FOR ALL ENTRIES IN gt_bseg  
     WHERE paobjnr = gt_bseg-paobjnr  
     AND buzei = gt_bseg-buzei  
     AND belnr = gt_bseg-belnr.  
  
    CLEAR gt_acdoca1.  
  
    SELECT paobjnr gjahr rbukrs co_belnr FROM acdoca INTO CORRESPONDING FIELDS OF TABLE gt_acdoca1  
      FOR ALL ENTRIES IN gt_bseg  
      WHERE paobjnr = gt_bseg-paobjnr  
      AND gjahr = gt_bseg-gjahr  
      AND rbukrs = gt_bseg-bukrs.  
  ENDIF.  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_CE18000  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_ce18000 .  
  IF gt_acdoca[] IS NOT INITIAL.  
    SELECT paobjnr perio kmland FROM ce18000 INTO CORRESPONDING FIELDS OF TABLE gt_ce18000  
      FOR ALL ENTRIES IN gt_acdoca  
      WHERE paobjnr = gt_acdoca-paobjnr  
      AND perio = gt_acdoca-fiscyearper.  
  
  ENDIF.  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  DATA_GT_T005T  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM data_gt_t005t .  
  IF gt_acdoca[] IS NOT INITIAL.  
    SELECT land1 landx FROM t005t INTO CORRESPONDING FIELDS OF TABLE gt_t005t  
      FOR ALL ENTRIES IN gt_acdoca  
      WHERE land1 = gt_acdoca-kmland_pa  
      AND spras = sy-langu.  
  ENDIF.  
  
  SORT gt_t005t BY land1.  
  DELETE gt_t005t WHERE land1 IS INITIAL.   " 删除空格  
  DELETE ADJACENT DUPLICATES FROM gt_t005t COMPARING land1.  " 删除重复  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  GET_DATA  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM get_data .  
  
  LOOP AT gt_acdoca INTO wa_acdoca.  
    IF wa_acdoca-kmland_pa IS INITIAL.  
      READ TABLE gt_ce18000 INTO wa_ce18000 WITH KEY paobjnr = wa_acdoca-paobjnr  
                                                 perio = wa_acdoca-fiscyearper.  
      IF sy-subrc = 0.  
        wa_acdoca-kmland_pa = wa_ce18000-kmland.  
      ENDIF.  
  
      MODIFY gt_acdoca FROM wa_acdoca.  
      CLEAR wa_acdoca.  
    ENDIF.  
  ENDLOOP.  
  
  LOOP AT gt_bseg INTO gs_bseg.  
    CLEAR gs_out.  
  
    MOVE-CORRESPONDING gs_bseg TO gs_out.  
  

    READ TABLE gt_acdoca INTO wa_acdoca WITH KEY paobjnr = gs_bseg-paobjnr  
                                                 gjahr = gs_bseg-gjahr 
                                                 belnr = gs_bseg-belnr  
                                                 buzei = gs_bseg-buzei.  
    IF sy-subrc = 0.  
      gs_out-kmland_pa = wa_acdoca-kmland_pa.  
      gs_out-kunnr = wa_acdoca-kunnr.  
      gs_out-ww01_pa = wa_acdoca-ww01_pa.  
      gs_out-ww03_pa = wa_acdoca-ww03_pa.  
      gs_out-kdauf = wa_acdoca-kdauf.  
      gs_out-kdpos = wa_acdoca-kdpos.  
    ENDIF.  
  
    READ TABLE gt_acdoca1 INTO wa_acdoca1 WITH KEY paobjnr = gs_bseg-paobjnr  
                                                   gjahr = gs_bseg-gjahr  
                                                   rbukrs = gs_bseg-bukrs.  
    IF sy-subrc = 0.  
      gs_out-co_belnr = wa_acdoca1-co_belnr.  
    ENDIF.  
  
*    CLEAR wa_csku.  
*    READ TABLE gt_csku INTO wa_csku WITH KEY kstar = gs_bseg-kstar BINARY SEARCH.  
*    IF sy-subrc = 0.  
**      gs_out-kstar = wa_csku-kstar.  
*      gs_out-kstxt = wa_csku-ktext.  
*    ENDIF.  
  
    CLEAR wa_bkpf.  
    READ TABLE gt_bkpf INTO wa_bkpf WITH KEY belnr = gs_bseg-belnr  
                                             gjahr = gs_bseg-gjahr  
                                             bukrs = gs_bseg-bukrs.  
    IF sy-subrc = 0.  
      gs_out-xblnr = wa_bkpf-xblnr.  
    ENDIF.  
  
    CLEAR wa_cepct.  
    READ TABLE gt_cepct INTO wa_cepct WITH KEY prctr = gs_bseg-prctr BINARY SEARCH.  
    IF sy-subrc = 0.  
*      gs_out-prctr = wa_cepct-prctr.  
      gs_out-prtxt = wa_cepct-ktext.  
    ENDIF.  
  
    CLEAR wa_cskt.  
    READ TABLE gt_cskt INTO wa_cskt WITH KEY kostl = gs_bseg-kostl BINARY SEARCH.  
    IF sy-subrc = 0.  
*      gs_out-kostl = wa_cskt-kostl.  
      gs_out-kotxt = wa_cskt-ktext.  
    ENDIF.  
  
    CLEAR wa_aufk.  
    READ TABLE gt_aufk INTO wa_aufk WITH KEY aufnr = gs_bseg-aufnr BINARY SEARCH.  
    IF sy-subrc = 0.  
*      gs_out-aufnr = wa_aufk-aufnr.  
      gs_out-autxt = wa_aufk-ktext.  
    ENDIF.  
  
    CLEAR: wa_t005t.  
    READ TABLE gt_t005t INTO wa_t005t WITH KEY land1 = gs_out-kmland_pa BINARY SEARCH.  
    IF sy-subrc = 0.  
      gs_out-landx = wa_t005t-landx.  
    ENDIF.  
  
    APPEND gs_out TO gt_out.  
  
  ENDLOOP.  
  
  IF so_kmlan IS NOT INITIAL.  
    DELETE gt_out WHERE kmland_pa NOT IN so_kmlan.  
  ENDIF.  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  SHOW_DATA  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM show_data .  
  PERFORM frm_set_layout.  
  PERFORM frm_set_fieldcat.  
  
  
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'  
    EXPORTING  
      i_callback_program       = sy-repid  
      i_callback_pf_status_set = 'PF_STATUS_SET'  
      i_callback_user_command  = 'USER_COMMAND'  
      i_save                   = 'A'  
      is_layout_lvc            = gs_layout  
      it_fieldcat_lvc          = gt_fieldcat  
    TABLES  
      t_outtab                 = gt_out  
    EXCEPTIONS  
      program_error            = 1  
      OTHERS                   = 2.  
  IF sy-subrc <> 0.  
* Implement suitable error handling here  
  ENDIF.  
  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  PF_STATUS_SET  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
FORM pf_status_set USING rt_extab TYPE slis_t_extab.  
  SET PF-STATUS 'ZSTATUS'.  
ENDFORM.                    "PF_STATUS_SET  
*&---------------------------------------------------------------------*  
*&      Form  USER_COMMAND  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
FORM user_command USING s_ucomm TYPE sy-ucomm  
                            re_selfield TYPE slis_selfield.  
  
  DATA: lr_grid TYPE REF TO cl_gui_alv_grid.  
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'  
    IMPORTING  
      e_grid = lr_grid.  
  CALL METHOD lr_grid->check_changed_data.  
*  re_selfield-refresh = 'X'.  
  
  CASE s_ucomm.  
    WHEN 'BACK'.  
      LEAVE TO SCREEN 0.  
  
    WHEN 'EXIT' OR 'CANCEL'.  
      LEAVE PROGRAM.  
  
    WHEN '&IC1'.  
      CLEAR: gs_out,  
             gv_tabix.  
      gv_tabix = re_selfield-tabindex.  
      CLEAR gs_out.  
      READ TABLE gt_out INTO gs_out INDEX re_selfield-tabindex .  
      CASE re_selfield-fieldname.  
        WHEN 'BELNR'.  
          SET PARAMETER ID 'BLN' FIELD gs_out-belnr.  
          SET PARAMETER ID 'BUK' FIELD gs_out-bukrs.  
          SET PARAMETER ID 'GJR' FIELD gs_out-gjahr.  
  
          CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.  
      ENDCASE.  
    WHEN OTHERS.  
  ENDCASE.  
  
ENDFORM.                    "USER_COMMAND  
*&---------------------------------------------------------------------*  
*&      Form  FRM_SET_LAYOUT  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*  -->  p1        text  
*  <--  p2        text  
*----------------------------------------------------------------------*  
FORM frm_set_layout .  
  
  gs_layout-zebra = 'X'.  
  gs_layout-cwidth_opt = 'X'.  
  gs_layout-sel_mode = 'A'.  
  gs_layout-cwidth_opt = 'X'.  
  
ENDFORM.  
FORM frm_set_fieldcat .  
  CLEAR gs_fieldcat.  
  REFRESH gt_fieldcat.  
  DEFINE set_fieldcat.    " 定义字段宏  
    gs_fieldcat-fieldname = &1.  
    gs_fieldcat-tabname = 'GT_OUT'.  
    gs_fieldcat-coltext = &2.  
    gs_fieldcat-outputlen = &3.  
    gs_fieldcat-edit = &4.  
    IF &5 NE ''.  
      gs_fieldcat-datatype = &5.  
    ENDIF.  
    IF &6 NE ''.  
      gs_fieldcat-ref_table = &6.  
    ENDIF.  
    IF &7 NE ''.  
      gs_fieldcat-ref_field = &7.  
    ENDIF.  
  
    IF &8 NE ''.  
      gs_fieldcat-just = &8.  
    ELSE.  
      gs_fieldcat-just = 'L'.  
    ENDIF.  
  
    APPEND gs_fieldcat TO gt_fieldcat.  
    CLEAR gs_fieldcat.  
  END-OF-DEFINITION.  
  
  DATA: r_tabdescr TYPE REF TO cl_abap_structdescr.  
  DATA: wa_field TYPE dfies,  
        t_dfies  TYPE  ddfields.  
  
  r_tabdescr ?= cl_abap_structdescr=>describe_by_data( gs_out ).  
  CALL METHOD cl_salv_data_descr=>read_structdescr  
    EXPORTING  
      r_structdescr = r_tabdescr  
    RECEIVING  
      t_dfies       = t_dfies.  
  
  IF sy-langu = '1'.  
    set_fieldcat 'BUKRS' '公司代码' '' '' '' 'BSEG' 'BUKRS' ''.  
    set_fieldcat 'GJAHR' '财年' '' '' '' 'BSEG' 'GJAHR' ''.  
    set_fieldcat 'H_MONAT' '月' '' '' '' 'BSEG' 'H_MONAT' ''.  
    set_fieldcat 'H_BUDAT' '过帐日期' '' '' '' 'BSEG' 'H_BUDAT' ''.  
    set_fieldcat 'H_BLART' '凭证类型' '' '' '' 'BSEG' 'H_BLART' ''.  
    set_fieldcat 'BELNR' '凭证编号' '' '' '' 'BSEG' 'BELNR' ''.  
    set_fieldcat 'H_WAERS' '总账货币' '' '' '' 'BSEG' 'H_WAERS' ''.  
    set_fieldcat 'WRBTR' '总账金额' '' '' '' 'BSEG' 'WRBTR' 'R'.  
    set_fieldcat 'H_HWAER' '本币' '' '' '' 'BSEG' 'H_HWAER' ''.  
    set_fieldcat 'DMBTR' '本币金额' '' '' '' 'BSEG' 'DMBTR' 'R'.  
    set_fieldcat 'XBLNR' '参照' '' '' '' 'BKPF' 'XBLNR' ''.  
    set_fieldcat 'ZUONR' '分配' '' '' '' 'BSEG' 'ZUONR' ''.  
    set_fieldcat 'SGTXT' '文本' '' '' '' 'BSEG' 'SGTXT' ''.  
*    set_fieldcat 'KSTAR' '科目代码' '' '' '' 'BSEG' 'KSTAR' ''.  
*    set_fieldcat 'KSTXT' '科目名称' '' '' '' 'CSKU' 'KTEXT' ''.  
    set_fieldcat 'HKONT' '科目代码' '' '' '' 'BSEG' 'HKONT' ''.  
*    set_fieldcat 'TXT20' '科目名称' '' '' '' 'SKAT' 'TXT20' ''.  
    set_fieldcat 'TXT50' '科目名称' '' '' '' 'SKAT' 'TXT50' ''.   
    set_fieldcat 'LANDX' '国家' '' '' '' 'T005T' 'LANDX' ''.  
    set_fieldcat 'PRCTR' '利润中心' '' '' '' 'BSEG' 'PRCTR' ''.  
    set_fieldcat 'PRTXT' '利润中心名称' '' '' '' 'CEPCT' 'KTEXT' ''.  
    set_fieldcat 'KOSTL' '成本中心' '' '' '' 'BSEG' 'KOSTL' ''.  
    set_fieldcat 'KOTXT' '成本中心名称' '' '' '' 'CSKT' 'KTEXT' ''.  
    set_fieldcat 'AUFNR' '内部订单号' '' '' '' 'BSEG' 'AUFNR' ''.  
    set_fieldcat 'AUTXT' '内部订单名称' '' '' '' 'AUFK' 'KTEXT' ''.  
    set_fieldcat 'PAOBJNR' '获利能力段' '' '' '' 'BSEG' 'PAOBJNR' ''.  
    set_fieldcat 'KUNNR' '客户' '' '' '' 'ACDOCA' 'KUNNR' ''.  
    set_fieldcat 'WW01_PA' '品牌' '' '' '' 'ACDOCA' 'WW01_PA' ''.  
    set_fieldcat 'WW03_PA' 'SKU' '' '' '' 'ACDOCA' 'WW03_PA' ''.  
    set_fieldcat 'KDAUF' '销售订单' '' '' '' 'ACDOCA' 'KDAUF' ''.  
    set_fieldcat 'KDPOS' '销售订单项目' '' '' '' 'ACDOCA' 'KDPOS' ''.  
    set_fieldcat 'CO_BELNR' 'CO凭证编号' '' '' '' 'ACDOCA' 'CO_BELNR' ''.  
  ELSE.  
    set_fieldcat 'BUKRS' 'Company Code' '' '' '' 'BSEG' 'BUKRS' ''.  
    set_fieldcat 'GJAHR' 'Fiscal Year' '' '' '' 'BSEG' 'GJAHR' ''.  
    set_fieldcat 'H_MONAT' 'Year/Month' '' '' '' 'BSEG' 'H_MONAT' ''.  
    set_fieldcat 'H_BUDAT' 'Posting Date' '' '' '' 'BSEG' 'H_BUDAT' ''.  
    set_fieldcat 'H_BLART' 'Document Type' '' '' '' 'BSEG' 'H_BLART' ''.  
    set_fieldcat 'BELNR' 'Document Number' '' '' '' 'BSEG' 'BELNR' ''.  
    set_fieldcat 'H_WAERS' 'Document Currency' '' '' '' 'BSEG' 'H_WAERS' ''.  
    set_fieldcat 'WRBTR' 'Amount in doc. curr.' '' '' '' 'BSEG' 'WRBTR' 'R'.  
    set_fieldcat 'H_HWAER' 'Local Currency' '' '' '' 'BSEG' 'H_HWAER' ''.  
    set_fieldcat 'DMBTR' 'Amt in loc.curr.' '' '' '' 'BSEG' 'DMBTR' 'R'.  
    set_fieldcat 'XBLNR' 'Invoice Reference' '' '' '' 'BKPF' 'XBLNR' ''.  
    set_fieldcat 'ZUONR' 'Assignment' '' '' '' 'BSEG' 'ZUONR' ''.  
    set_fieldcat 'SGTXT' 'Text' '' '' '' 'BSEG' 'SGTXT' ''.  
*    set_fieldcat 'KSTAR' 'Account No.' '' '' '' 'BSEG' 'KSTAR' ''.  
*    set_fieldcat 'KSTXT' 'Account Subject' '' '' '' 'CSKU' 'KTEXT' ''.  
    set_fieldcat 'HKONT' 'Account No.' '' '' '' 'BSEG' 'HKONT' ''.  
*    set_fieldcat 'TXT20' 'Account Name' '' '' '' 'SKAT' 'TXT20' ''.  
    set_fieldcat 'TXT50' 'Account Name' '' '' '' 'SKAT' 'TXT50' ''.
    
    
    
    set_fieldcat 'LANDX' 'Country' '' '' '' 'T005T' 'LANDX' ''.  
    set_fieldcat 'PRCTR' 'Profit Center No.' '' '' '' 'BSEG' 'PRCTR' ''.  
    set_fieldcat 'PRTXT' 'Profit Center Name' '' '' '' 'CEPCT' 'KTEXT' ''.  
    set_fieldcat 'KOSTL' 'Cost Center No.' '' '' '' 'BSEG' 'KOSTL' ''.  
    set_fieldcat 'KOTXT' 'Cost Center Name' '' '' '' 'CSKT' 'KTEXT' ''.  
    set_fieldcat 'AUFNR' 'Internal Order Number' '' '' '' 'BSEG' 'AUFNR' ''.  
    set_fieldcat 'AUTXT' 'Internal Order Name' '' '' '' 'AUFK' 'KTEXT' ''.  
    set_fieldcat 'PAOBJNR' 'Profitability Analysis' '' '' '' 'BSEG' 'PAOBJNR' ''.  
    set_fieldcat 'KUNNR' 'Customer' '' '' '' 'ACDOCA' 'KUNNR' ''.  
    set_fieldcat 'WW01_PA' 'Brand' '' '' '' 'ACDOCA' 'WW01_PA' ''.  
    set_fieldcat 'WW03_PA' 'SKU' '' '' '' 'ACDOCA' 'WW03_PA' ''.  
    set_fieldcat 'KDAUF' 'Sales Order' '' '' '' 'ACDOCA' 'KDAUF' ''.  
    set_fieldcat 'KDPOS' 'Sales Order Item' '' '' '' 'ACDOCA' 'KDPOS' ''.  
    set_fieldcat 'CO_BELNR' 'CO Document Number' '' '' '' 'ACDOCA' 'CO_BELNR' ''.  
  ENDIF.  
ENDFORM.  
*&---------------------------------------------------------------------*  
*&      Form  MOD_SEL_TEXT  
*&---------------------------------------------------------------------*  
*       text  
*----------------------------------------------------------------------*  
*      -->P_SY_REPID  text  
*      -->P_0204   text  
*      -->P_0205   text  
*      -->P_0206   text  
*----------------------------------------------------------------------*  
FORM mod_sel_text  USING    p_sy_repid  
                            kind  
                            parameter  
                            text.  
  DATA sel TYPE rsseltexts OCCURS 1 WITH HEADER LINE.  
  
  REFRESH sel.  
  sel-name = parameter.  
  sel-kind = kind.  
  sel-text = text.  
  
  APPEND sel.  
  
  CALL FUNCTION 'SELECTION_TEXTS_MODIFY'  
    EXPORTING  
      program                     = p_sy_repid  
    TABLES  
      seltexts                    = sel  
    EXCEPTIONS  
      program_not_found           = 1  
      program_cannot_be_generated = 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.  
ENDFORM.