输出字段及取值逻辑
| 列 | 字段描述 | 取值逻辑 |
|---|
| 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 |
| O | SKU | BSEG-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 |
| R | CO 凭证编号 | 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
*
*
* <
*
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
*
*
* <
*
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%'.
*
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
*
*
* <
*
*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
*
*
* <
*
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
*
*
* <
*
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
*
*
*
*
*
*
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.