您的位置:首页 > 其它

如何快速从BSEG读取数据

2014-12-24 12:47 190 查看
由于bseg表很大,而且表的索引字段是:

BUKRS - Company Code

BELNR - Accounting Document Number

GJAHR - Fiscal Year

BUZEI - Line Item Number

访问此表最佳的是包含所有的索引字段,但在实际应用是很少能达到的。但要有好的性能根据经验必须要有公司和凭证号作为查询条件。为了达到这一点,我可以根据条件不同而使用不同sap的其他表,先查出公司和凭证号,再去读取BSEG表

代码如下:

注意:该程序包含了各种条件的查询,程序员可以根据自己应用需求选择对应一个的子程序来读取公司和凭证号。

REPORT ztest_select.

* Tables ***************************************************************

TABLES: bkpf, bseg,

covp, csks,

glpca,

bsis, bsas, bsid, bsad, bsik, bsak,

ekbe, aufk,

vbfa, vbak,

vapma,

fmifiit,

payr.

* Global Data **********************************************************

TYPES: BEGIN OF doc,

bukrs TYPE bseg-bukrs,

belnr TYPE bseg-belnr,

gjahr TYPE bseg-gjahr,

buzei TYPE bseg-buzei,

END OF doc.

DATA: doc_int TYPE TABLE OF doc,

doc_wa TYPE doc,

w_repid TYPE sy-repid VALUE sy-repid,

no_lines TYPE sy-tabix.

* Selection Screen *****************************************************

PARAMETERS: p_gjahr TYPE covp-refgj OBLIGATORY.

SELECTION-SCREEN SKIP.

PARAMETERS: p_kokrs TYPE csks-kokrs OBLIGATORY,

p_kostl TYPE csks-kostl,

p_prctr TYPE glpca-rprctr,

p_aufnr TYPE aufk-aufnr.

SELECTION-SCREEN SKIP.

PARAMETERS: p_bukrs TYPE bsis-bukrs OBLIGATORY,

p_budat TYPE bkpf-budat,

p_ebeln TYPE ekko-ebeln,

p_hkont TYPE bsis-hkont,

p_lifnr TYPE bsik-lifnr,

p_kunnr TYPE bsid-kunnr.

SELECTION-SCREEN SKIP.

PARAMETERS: p_vbeln TYPE vbak-vbeln.

SELECTION-SCREEN SKIP.

PARAMETERS: p_matnr TYPE vapma-matnr.

SELECTION-SCREEN SKIP.

PARAMETERS: p_fikrs TYPE fmifiit-fikrs,

p_fistl TYPE fmifiit-fistl,

p_fonds TYPE fmifiit-fonds.

SELECTION-SCREEN ULINE.

PARAMETERS: p_hbkid TYPE payr-hbkid,

p_hktid TYPE payr-hktid,

p_rzawe TYPE payr-rzawe,

p_chect TYPE payr-chect.

START-OF-SELECTION.

* Retrieve document numbers based on different requirements

* Posting Date (用日期做查询条件)

PERFORM posting_date_actuals

USING p_bukrs

p_budat.

* Cost Center

PERFORM cost_center_actuals

USING p_kokrs

p_kostl

p_gjahr.

* GL Account

PERFORM gl_actuals

USING p_bukrs

p_hkont

p_gjahr.

* Vendor

PERFORM vendor_actuals

USING p_bukrs

p_lifnr

p_gjahr.

* Customer

PERFORM customer_actuals

USING p_bukrs

p_kunnr

p_gjahr.

* Purchase Order

PERFORM po_actuals

USING p_ebeln.

* Sales Order

PERFORM so_actuals

USING p_vbeln.

* Order

PERFORM order_actuals

USING p_aufnr

p_gjahr.

* Fund/Fund Center

PERFORM fm_actuals

USING p_fikrs

p_gjahr

p_fistl

p_fonds.

* Profit Center

PERFORM profit_center_actuals

USING p_kokrs

p_prctr

p_gjahr.

* Material

PERFORM material_actuals

USING p_matnr

p_gjahr.

* Cheque number

PERFORM cheque_actuals

USING p_hbkid

p_hktid

p_chect.

*&---------------------------------------------------------------------*

*& Form posting_date_actuals

*&---------------------------------------------------------------------*

* Use one of the secondary indices of BKPF to retrieve the

* document number

*----------------------------------------------------------------------*

FORM posting_date_actuals

USING bukrs

budat.

DATA: disp_date(10).

CHECK NOT budat IS INITIAL.

* Uses index BKPF~2 (4.7)

SELECT bukrs belnr gjahr

INTO TABLE doc_int

UP TO 100 ROWS

FROM bkpf

WHERE bukrs = bukrs AND

* Normally, you would probably only want normal documents, that is

* documents with BSTAT = ' '. So you would change the next line.

* On the other hand, you might want documents for all values of BSTAT,

* but not want to hardcode the values. In that case, you can retrieve

* values from the domain of BSTAT and put them in a range table and

* use the range table in the next line.

bstat IN (' ', 'A', 'B', 'D', 'M', 'S', 'V', 'W', 'Z') AND

budat = budat.

CHECK sy-subrc = 0.

WRITE budat TO disp_date.

PERFORM display_documents

TABLES doc_int

USING 'Posting date'

disp_date

space

space.

ENDFORM. " posting_date_actuals

*&---------------------------------------------------------------------*

*& Form cost_center_actuals

*&---------------------------------------------------------------------*

* Retrieve documents for a cost center

*----------------------------------------------------------------------*

FORM cost_center_actuals

USING kokrs

kostl

gjahr.

DATA: covp_int TYPE TABLE OF covp,

disp_cc(10).

CHECK NOT kostl IS INITIAL.

* Uses primary index (4.7)

SELECT SINGLE objnr

FROM csks

INTO csks-objnr

WHERE kokrs = kokrs

AND kostl = kostl.

CHECK sy-subrc = 0.

* COVP is a view. This uses index COEP~1 (4.7)

SELECT refbk refbn refgj refbz

FROM covp

INTO TABLE doc_int

UP TO 100 ROWS

WHERE lednr = '00'

AND objnr = csks-objnr

AND gjahr = gjahr

AND wrttp IN ('04', '11')

AND versn = '000'.

CHECK sy-subrc = 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = kostl

IMPORTING

output = disp_cc.

PERFORM display_documents

TABLES doc_int

USING 'Cost Center'

disp_cc

space

space.

ENDFORM. " cost_center_actuals

*&---------------------------------------------------------------------*

*& Form gl_actuals

*&---------------------------------------------------------------------*

* BKPF and BSEG have a number of secondary index tables. These are

* tables that are indexed by GL customer or vendor number and have

* data that is in both BKPF and BSEG. These secondary index tables

* that have an 'i' in the third character of the name contain open

* items. Those with an 'a' contain cleared items. In practice, you

* may only one or the other. In this program I am retrieving both.

*

* Here we get documents related to a GL.

*----------------------------------------------------------------------*

FORM gl_actuals

USING bukrs

hkont

gjahr.

DATA: disp_gl(10).

CHECK NOT hkont IS INITIAL.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsis

INTO TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND hkont = hkont

AND gjahr = gjahr.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsas

APPENDING TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND hkont = hkont

AND gjahr = gjahr.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = hkont

IMPORTING

output = disp_gl.

PERFORM display_documents

TABLES doc_int

USING 'GL Account'

disp_gl

space

space.

ENDFORM. " gl_actuals

*&---------------------------------------------------------------------*

*& Form vendor_actuals

*&---------------------------------------------------------------------*

* Here we get documents related to a vendor.

*----------------------------------------------------------------------*

FORM vendor_actuals

USING bukrs

lifnr

gjahr.

DATA: disp_vendor(10).

CHECK NOT lifnr IS INITIAL.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsik

INTO TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND lifnr = lifnr

AND gjahr = gjahr.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsak

APPENDING TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND lifnr = lifnr

AND gjahr = gjahr.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = lifnr

IMPORTING

output = disp_vendor.

PERFORM display_documents

TABLES doc_int

USING 'Vendor'

disp_vendor

space

space.

ENDFORM. " vendor_actuals

*&---------------------------------------------------------------------*

*& Form customer_actuals

*&---------------------------------------------------------------------*

* Here we get documents related to a customer.

*----------------------------------------------------------------------*

FORM customer_actuals

USING bukrs

kunnr

gjahr.

DATA: disp_customer(10).

CHECK NOT kunnr IS INITIAL.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsid

INTO TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND kunnr = kunnr

AND gjahr = gjahr.

* Uses primary index (4.7)

SELECT bukrs belnr gjahr buzei

FROM bsad

APPENDING TABLE doc_int

UP TO 100 ROWS

WHERE bukrs = bukrs

AND kunnr = kunnr

AND gjahr = gjahr.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = kunnr

IMPORTING

output = disp_customer.

PERFORM display_documents

TABLES doc_int

USING 'Customer'

disp_customer

space

space.

ENDFORM. " customer_actuals

*&---------------------------------------------------------------------*

*& Form po_actuals

*&---------------------------------------------------------------------*

* Table BKPF has a useful index on AWTYP and AWKEY. Here, we use

* this to retrieve documents for purchase orders.

*----------------------------------------------------------------------*

FORM po_actuals

USING ebeln.

TYPES: BEGIN OF ekbe_type,

belnr TYPE ekbe-belnr,

gjahr TYPE ekbe-gjahr,

vgabe TYPE ekbe-vgabe,

END OF ekbe_type.

DATA: ekbe_int TYPE TABLE OF ekbe_type,

ekbe_wa TYPE ekbe_type.

DATA: v_reference TYPE bkpf-awtyp, "Reference procedure

v_objectkey TYPE bkpf-awkey. "Object key

DATA:disp_po(10).

CHECK NOT ebeln IS INITIAL.

* Uses primary index (4.7)

SELECT belnr gjahr

FROM ekbe

INTO TABLE ekbe_int

UP TO 100 ROWS

WHERE ebeln = ebeln

AND vgabe IN ('1', '2'). "1 - GR, 2 - IR

CHECK sy-subrc = 0.

SORT ekbe_int.

DELETE ADJACENT DUPLICATES FROM ekbe_int.

LOOP AT ekbe_int INTO ekbe_wa.

v_objectkey+00(10) = ekbe_wa-belnr.

v_objectkey+10(10) = ekbe_wa-gjahr. "BELNR+YEAR

IF ekbe_wa-vgabe = '1'.

v_reference = 'MKPF'.

ELSE.

v_reference = 'RMRP'.

ENDIF.

* Uses index BKPF~4 (4.7)

SELECT SINGLE bukrs belnr gjahr "Accounting Doc Header

FROM bkpf

INTO doc_wa

WHERE awtyp = v_reference

AND awkey = v_objectkey.

IF sy-subrc = 0.

APPEND doc_wa TO doc_int.

ENDIF.

ENDLOOP.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = ebeln

IMPORTING

output = disp_po.

PERFORM display_documents

TABLES doc_int

USING 'Purchase Order'

disp_po

space

space.

ENDFORM. " po_actuals

*&---------------------------------------------------------------------*

*& Form so_actuals

*&---------------------------------------------------------------------*

* Use AWTYP and AWKEY to retrieve documents related to sales

*----------------------------------------------------------------------*

FORM so_actuals USING vbeln.

TYPES: BEGIN OF vbfa_type,

vbeln TYPE vbfa-vbeln,

END OF vbfa_type.

DATA: vbfa_int TYPE TABLE OF vbfa_type,

vbfa_wa TYPE vbfa_type.

DATA: v_reference TYPE bkpf-awtyp, "Reference procedure

v_objectkey TYPE bkpf-awkey. "Object key

DATA:disp_so(10).

CHECK NOT vbeln IS INITIAL.

* Uses primary index (4.7)

SELECT vbeln

FROM vbfa

INTO TABLE vbfa_int

UP TO 100 ROWS

WHERE vbelv = vbeln

AND vbtyp_n = 'P'. "Debit memo

CHECK sy-subrc = 0.

SORT vbfa_int.

DELETE ADJACENT DUPLICATES FROM vbfa_int.

LOOP AT vbfa_int INTO vbfa_wa.

v_objectkey+00(10) = vbfa_wa-vbeln. "BELNR

v_reference = 'VBRK'.

* Uses index BKPF~4 (4.7)

SELECT SINGLE bukrs belnr gjahr "Accounting Doc Header

FROM bkpf

INTO doc_wa

WHERE awtyp = v_reference

AND awkey = v_objectkey.

IF sy-subrc = 0.

APPEND doc_wa TO doc_int.

ENDIF.

ENDLOOP.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = vbeln

IMPORTING

output = disp_so.

PERFORM display_documents

TABLES doc_int

USING 'Sales Document'

disp_so

space

space.

ENDFORM. " so_actuals

*&---------------------------------------------------------------------*

*& Form order_actuals

*&---------------------------------------------------------------------*

* Retrieve documents related to an order

*----------------------------------------------------------------------*

FORM order_actuals

USING aufnr

gjahr.

DATA: disp_order(10).

CHECK NOT aufnr IS INITIAL.

* Uses primary index (4.7)

SELECT SINGLE objnr

FROM aufk

INTO aufk-objnr

WHERE aufnr = aufnr.

CHECK sy-subrc = 0.

* COVP is a view. This uses index COEP~1 (4.7)

SELECT refbk refbn refgj refbz

FROM covp

INTO TABLE doc_int

UP TO 100 ROWS

WHERE lednr = '00'

AND objnr = aufk-objnr

AND gjahr = gjahr

AND wrttp IN ('04', '11')

AND versn = '000'.

CHECK sy-subrc = 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = aufnr

IMPORTING

output = disp_order.

PERFORM display_documents

TABLES doc_int

USING 'Order'

disp_order

space

space.

ENDFORM. " order_actuals

*&---------------------------------------------------------------------*

*& Form FM_actuals

*&---------------------------------------------------------------------*

* Not many institutions use Funds Management, but if you do, this

* is how to relate funds management documents to FI documents.

*----------------------------------------------------------------------*

FORM fm_actuals

USING fikrs

gjahr

fistl

fonds.

DATA: disp_cfc(10),

disp_fund(10).

CHECK NOT fikrs IS INITIAL AND

NOT fistl IS INITIAL.

* Uses index FMIFIIT~3 (4.7)

SELECT bukrs knbelnr kngjahr knbuzei

FROM fmifiit

INTO TABLE doc_int

UP TO 100 ROWS

WHERE fistl = fistl

AND fonds = fonds.

CHECK sy-subrc = 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = fistl

IMPORTING

output = disp_cfc.

IF NOT fonds IS INITIAL.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = fonds

IMPORTING

output = disp_fund.

ENDIF.

PERFORM display_documents

TABLES doc_int

USING 'Fund Center'

disp_cfc

'Fund'

disp_fund.

ENDFORM. " FM_actuals

*&---------------------------------------------------------------------*

*& Form profit_center_actuals

*&---------------------------------------------------------------------*

* Retrieve documents related to a profit center

*----------------------------------------------------------------------*

FORM profit_center_actuals

USING kokrs

prctr

gjahr.

DATA: disp_pc(10).

CHECK NOT prctr IS INITIAL.

* This uses index GLPCA~1 (4.7)

SELECT rbukrs refdocnr refryear refdocln

FROM glpca

INTO TABLE doc_int

UP TO 100 ROWS

WHERE kokrs = kokrs

AND ryear = gjahr

AND rprctr = prctr

AND awtyp = 'BKPF'.

CHECK sy-subrc = 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = prctr

IMPORTING

output = disp_pc.

PERFORM display_documents

TABLES doc_int

USING 'Profit Center'

disp_pc

space

space.

ENDFORM. " profit_center_actuals

*&---------------------------------------------------------------------*

*& Form material_actuals

*&---------------------------------------------------------------------*

* Get FI documents for a material.

* For purchase orders get:

* goods receipts

* invoice receipts

* For sales orders get:

* debit memos

*----------------------------------------------------------------------*

FORM material_actuals

USING matnr

gjahr.

TYPES: BEGIN OF ekpo_type,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

END OF ekpo_type.

TYPES: BEGIN OF ekbe_type,

belnr TYPE ekbe-belnr,

gjahr TYPE ekbe-gjahr,

vgabe TYPE ekbe-vgabe,

END OF ekbe_type.

TYPES: BEGIN OF vapma_type,

vbeln TYPE vapma-vbeln,

posnr TYPE vapma-posnr,

END OF vapma_type.

TYPES: BEGIN OF vbfa_type,

vbeln TYPE vbfa-vbeln,

posnv TYPE vbfa-posnv,

END OF vbfa_type.

DATA: ekpo_int TYPE TABLE OF ekpo_type,

ekpo_wa TYPE ekpo_type.

DATA: ekbe_int TYPE TABLE OF ekbe_type,

ekbe_wa TYPE ekbe_type.

DATA: vapma_int TYPE TABLE OF vapma_type,

vapma_wa TYPE vapma_type.

DATA: v_reference TYPE bkpf-awtyp, "Reference procedure

v_objectkey TYPE bkpf-awkey. "Object key

DATA: vbfa_int TYPE TABLE OF vbfa_type,

vbfa_wa TYPE vbfa_type.

DATA: disp_mat(10).

CHECK NOT matnr IS INITIAL.

* First, find purchase orders for the material

* This uses index EKPO~1 (4.7)

SELECT ebeln ebelp

FROM ekpo

INTO TABLE ekpo_int

UP TO 100 ROWS

WHERE matnr = matnr.

* Now get the FI document numbers as above

* Uses primary index (4.7)

SELECT belnr gjahr vgabe

FROM ekbe

INTO TABLE ekbe_int

UP TO 100 ROWS

FOR ALL ENTRIES IN ekpo_int

WHERE ebeln = ekpo_int-ebeln

AND ebelp = ekpo_int-ebelp

AND vgabe IN ('1', '2'). "1 - GR, 2 - IR

CHECK sy-subrc = 0.

SORT ekbe_int.

DELETE ADJACENT DUPLICATES FROM ekbe_int.

LOOP AT ekbe_int INTO ekbe_wa.

v_objectkey+00(10) = ekbe_wa-belnr.

v_objectkey+10(10) = ekbe_wa-gjahr. "BELNR+YEAR

IF ekbe_wa-vgabe = '1'.

v_reference = 'MKPF'.

ELSE.

v_reference = 'RMRP'.

ENDIF.

* Uses index BKPF~4 (4.7)

SELECT SINGLE bukrs belnr gjahr "Accounting Doc Header

FROM bkpf

INTO doc_wa

WHERE awtyp = v_reference

AND awkey = v_objectkey.

IF sy-subrc = 0.

APPEND doc_wa TO doc_int.

ENDIF.

ENDLOOP.

* Next get the sales orders for the material

* Note - I am using an artificial date range here because of archiving

* in our system. Feel free to remove it.

SELECT vbeln posnr

FROM vapma

INTO TABLE vapma_int

UP TO 100 ROWS

WHERE matnr = matnr

AND audat BETWEEN '20070101' AND '20071231'.

* Uses primary index (4.7)

SELECT vbeln posnv

FROM vbfa

INTO TABLE vbfa_int

FOR ALL ENTRIES IN vapma_int

WHERE vbelv = vapma_int-vbeln

AND posnv = vapma_int-posnr

AND vbtyp_n = 'P'. "Debit memo

CHECK sy-subrc = 0.

SORT vbfa_int.

DELETE ADJACENT DUPLICATES FROM vbfa_int.

LOOP AT vbfa_int INTO vbfa_wa.

CLEAR: v_objectkey,

v_reference.

v_objectkey+00(10) = vbfa_wa-vbeln. "BELNR

v_reference = 'VBRK'.

* Uses index BKPF~4 (4.7)

SELECT SINGLE bukrs belnr gjahr "Accounting Doc Header

FROM bkpf

INTO doc_wa

WHERE awtyp = v_reference

AND awkey = v_objectkey.

IF sy-subrc = 0.

APPEND doc_wa TO doc_int.

ENDIF.

ENDLOOP.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = matnr

IMPORTING

output = disp_mat.

PERFORM display_documents

TABLES doc_int

USING 'Material'

disp_mat

space

space.

ENDFORM. " material_actuals

*&---------------------------------------------------------------------*

*& Form cheque_actuals

*&---------------------------------------------------------------------*

* Retrieve FI documents for a cheque. We are assuming Accounts

* Payable related.

*----------------------------------------------------------------------*

FORM cheque_actuals

USING hbkid

hktid

chect.

DATA: belnr TYPE payr-vblnr,

gjahr TYPE payr-gjahr,

lifnr TYPE payr-lifnr,

laufd TYPE payr-laufd,

disp_cheque(13).

CHECK NOT p_chect IS INITIAL.

* Retrieve the cheque data using the primary key (4.7)

* We are assuming a vendor payment here

SELECT SINGLE vblnr gjahr lifnr laufd

FROM payr

INTO (belnr, gjahr, lifnr, laufd )

WHERE zbukr = p_bukrs

AND hbkid = p_hbkid

AND hktid = p_hktid

AND rzawe = p_rzawe

AND chect = p_chect.

* Now get the accounting documents

SELECT bukrs belnr gjahr

FROM bsak

INTO TABLE doc_int

WHERE bukrs = p_bukrs

AND lifnr = lifnr

AND umsks = ' '

AND umskz = ' '

AND augdt = laufd

AND augbl = belnr

AND gjahr = gjahr.

DESCRIBE TABLE doc_int LINES no_lines.

CHECK no_lines > 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = chect

IMPORTING

output = disp_cheque.

PERFORM display_documents

TABLES doc_int

USING 'Cheque number'

disp_cheque

space

space.

ENDFORM. " cheque_actuals

*&---------------------------------------------------------------------*

*& Form display_documents

*&---------------------------------------------------------------------*

* At this point, you have the company code, document number and

* fiscal year in table DOC_INT. Here, I just use a standard SAP

* function module and transaction to display documents and

* details, but you could use the same information to retrieve

* document data from BKPF and/or BSEG.

*----------------------------------------------------------------------*

FORM display_documents

TABLES doc_int STRUCTURE doc_wa

USING doc_source_1

source_value_1

doc_source_2

source_value_2.

TYPE-POOLS: slis.

DATA: sel TYPE slis_selfield.

DATA: title TYPE string.

CONCATENATE 'FI line items for' doc_source_1 source_value_1

INTO title SEPARATED BY space.

IF NOT source_value_2 IS INITIAL.

CONCATENATE title doc_source_2 source_value_2

INTO title SEPARATED BY space.

ENDIF.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = title

i_selection = 'X'

i_tabname = 'BSEG'

i_structure_name = 'BSEG'

i_callback_user_command = 'USER_COMMAND'

i_callback_program = w_repid

IMPORTING

es_selfield = sel

TABLES

t_outtab = doc_int.

IF NOT sel IS INITIAL.

READ TABLE doc_int INDEX sel-tabindex.

SET PARAMETER ID 'BUK' FIELD doc_int-bukrs.

SET PARAMETER ID 'BLN' FIELD doc_int-belnr.

SET PARAMETER ID 'GJR' FIELD doc_int-gjahr.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDIF.

ENDFORM. " display_documents
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: