Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

control break report

Former Member
0 Likes
748

HEY ALL!!              

I have been spending a lot of time trying to figure out this table and it is driving me crazy.

I need to create a report by combining two reports (BKPF and BSEG).

It needs to include the following:

->all header docs for company 0005 (ONLY this company)

-> sorted by (gjahr) and then by (USNAM)

->for accounting doc header record- needs: doc date, period; doc header text

-> accounting doc line item records (BSEG)- PRINT each line of transaction, total amount of the transaction which can be found in field (SHKZG), and the amount stored in field (WRTBR).

Of course- I don't expect anyone to do this for me- I'm sure you have better things to do, but an example of how to combine the two tables and calculate the transaction would be good.

Thankyou- Laura

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
692

Hi Laura,

Check this code.

TYPES: BEGIN OF ty_bkpf,      " ACCOUNTING DOCUMENT HEADER
        bukrs TYPE bukrs,      " COMAPNY CODE
        belnr TYPE belnr_d,    " ACCOUNTING DOCUMENT HEADER
        budat TYPE budat,      " POSTING DATE OF DOCUMENT
        gjahr type gjahr,
        usnam type usnam,
        bktxt type bktxt,
    END OF ty_bkpf.

TYPES: BEGIN OF ty_bseg,      " ACCOUNTING DOCUMENT SEGMENT
        bukrs TYPE bukrs,      " COMPANY CODE
        belnr TYPE belnr_d,      " ACCOUNTING DOCUMENT HEADER
        gjahr type gjahr,
        shkzg type shkzg,
        wrbtr TYPE wrbtr,      " ACCOUNT IN DOCUMENT CURRENCY
        END OF ty_bseg.

TYPES : BEGIN OF ty_final,
          bukrs TYPE bukrs,
          belnr type belnr_d,
          budat TYPE budat,
          gjahr TYPE gjahr,
          usnam type usnam,
          bktxt TYPE bktxt,
          debit TYPE wrbtr,
          credit TYPE wrbtr,
          balance TYPE wrbtr,
          END OF ty_final.

DATA: it_bkpf TYPE TABLE OF ty_bkpf,
       it_bseg TYPE TABLE OF ty_bseg,"  with key bukrs belnr gjahr,
       it_collect TYPE TABLE OF ty_bseg ,
       it_final TYPE TABLE OF ty_final,
       wa_bkpf TYPE ty_bkpf,
       wa_bseg TYPE ty_bseg,
       wa_collect type ty_bseg,
       wa_final type ty_final.


SELECT bukrs belnr xblnr budat gjahr usnam bktxt
        FROM bkpf
        INTO CORRESPONDING FIELDS OF TABLE it_bkpf UP TO 10 rows
        WHERE bukrs = '4000'.

sort it_bkpf by gjahr usnam.

IF it_bkpf IS NOT INITIAL.
   SELECT BUKRS belnr gjahr shkzg wrbtr
          FROM bseg
          INTO CORRESPONDING FIELDS OF TABLE it_bseg
          FOR ALL ENTRIES IN it_bkpf
          WHERE bukrs = it_bkpf-bukrs and gjahr = it_bkpf-gjahr and belnr = it_bkpf-belnr.
ENDIF.

loop at it_bkpf into wa_bkpf.
   MOVE-CORRESPONDING wa_bkpf to wa_final.
   append wa_final to it_final.
   clear : wa_final, wa_bkpf.
endloop.

sort it_bseg by bukrs belnr gjahr shkzg.
loop at it_bseg into wa_bseg.
   COLLECT wa_bseg INTO it_collect.
ENDLOOP.

CLEAR : wa_collect, wa_final.

LOOP AT it_collect INTO wa_collect.
   at new gjahr.
   read table it_final into wa_final with key bukrs = wa_collect-bukrs belnr = wa_collect-belnr gjahr = wa_collect-gjahr.
   endat.
   IF wa_collect-shkzg = 'S'.
     wa_final-debit = wa_collect-wrbtr.
   ELSEIF wa_collect-shkzg = 'H'.
     wa_final-credit = wa_collect-wrbtr.
   ENDIF.
   at end of gjahr.
    wa_final-balance = wa_final-debit - wa_final-credit.
    modify table it_final from wa_final.
    CLEAR wa_final.
   ENDAT.
   clear wa_collect.
ENDLOOP.
write :/1 'Company ', 10 'Fiscal Yr', 20 'Doc No', 33 'User Name' ,45 'Document Text', 80 'Debit' , 94 'Credit', 110 'Balance'.
uline.

  loop at it_final into wa_final.
    write :/1 wa_final-bukrs, 10 wa_final-gjahr, 20 wa_final-belnr, 33 wa_final-usnam, 45 wa_final-bktxt, 70  wa_final-debit, 85 wa_final-credit , 100 wa_final-balance.
  endloop.

4 REPLIES 4
Read only

Former Member
0 Likes
692

Please check the view V_VBSEGK.

We can use the view or by checking the fields used for the join in the standard in SE11->Datatype->V_VBSEGK-> 'Table/Join conditions' tab analyze the fields used by standard SAP to do a key match on the 2 tables.

Read only

Former Member
0 Likes
693

Hi Laura,

Check this code.

TYPES: BEGIN OF ty_bkpf,      " ACCOUNTING DOCUMENT HEADER
        bukrs TYPE bukrs,      " COMAPNY CODE
        belnr TYPE belnr_d,    " ACCOUNTING DOCUMENT HEADER
        budat TYPE budat,      " POSTING DATE OF DOCUMENT
        gjahr type gjahr,
        usnam type usnam,
        bktxt type bktxt,
    END OF ty_bkpf.

TYPES: BEGIN OF ty_bseg,      " ACCOUNTING DOCUMENT SEGMENT
        bukrs TYPE bukrs,      " COMPANY CODE
        belnr TYPE belnr_d,      " ACCOUNTING DOCUMENT HEADER
        gjahr type gjahr,
        shkzg type shkzg,
        wrbtr TYPE wrbtr,      " ACCOUNT IN DOCUMENT CURRENCY
        END OF ty_bseg.

TYPES : BEGIN OF ty_final,
          bukrs TYPE bukrs,
          belnr type belnr_d,
          budat TYPE budat,
          gjahr TYPE gjahr,
          usnam type usnam,
          bktxt TYPE bktxt,
          debit TYPE wrbtr,
          credit TYPE wrbtr,
          balance TYPE wrbtr,
          END OF ty_final.

DATA: it_bkpf TYPE TABLE OF ty_bkpf,
       it_bseg TYPE TABLE OF ty_bseg,"  with key bukrs belnr gjahr,
       it_collect TYPE TABLE OF ty_bseg ,
       it_final TYPE TABLE OF ty_final,
       wa_bkpf TYPE ty_bkpf,
       wa_bseg TYPE ty_bseg,
       wa_collect type ty_bseg,
       wa_final type ty_final.


SELECT bukrs belnr xblnr budat gjahr usnam bktxt
        FROM bkpf
        INTO CORRESPONDING FIELDS OF TABLE it_bkpf UP TO 10 rows
        WHERE bukrs = '4000'.

sort it_bkpf by gjahr usnam.

IF it_bkpf IS NOT INITIAL.
   SELECT BUKRS belnr gjahr shkzg wrbtr
          FROM bseg
          INTO CORRESPONDING FIELDS OF TABLE it_bseg
          FOR ALL ENTRIES IN it_bkpf
          WHERE bukrs = it_bkpf-bukrs and gjahr = it_bkpf-gjahr and belnr = it_bkpf-belnr.
ENDIF.

loop at it_bkpf into wa_bkpf.
   MOVE-CORRESPONDING wa_bkpf to wa_final.
   append wa_final to it_final.
   clear : wa_final, wa_bkpf.
endloop.

sort it_bseg by bukrs belnr gjahr shkzg.
loop at it_bseg into wa_bseg.
   COLLECT wa_bseg INTO it_collect.
ENDLOOP.

CLEAR : wa_collect, wa_final.

LOOP AT it_collect INTO wa_collect.
   at new gjahr.
   read table it_final into wa_final with key bukrs = wa_collect-bukrs belnr = wa_collect-belnr gjahr = wa_collect-gjahr.
   endat.
   IF wa_collect-shkzg = 'S'.
     wa_final-debit = wa_collect-wrbtr.
   ELSEIF wa_collect-shkzg = 'H'.
     wa_final-credit = wa_collect-wrbtr.
   ENDIF.
   at end of gjahr.
    wa_final-balance = wa_final-debit - wa_final-credit.
    modify table it_final from wa_final.
    CLEAR wa_final.
   ENDAT.
   clear wa_collect.
ENDLOOP.
write :/1 'Company ', 10 'Fiscal Yr', 20 'Doc No', 33 'User Name' ,45 'Document Text', 80 'Debit' , 94 'Credit', 110 'Balance'.
uline.

  loop at it_final into wa_final.
    write :/1 wa_final-bukrs, 10 wa_final-gjahr, 20 wa_final-belnr, 33 wa_final-usnam, 45 wa_final-bktxt, 70  wa_final-debit, 85 wa_final-credit , 100 wa_final-balance.
  endloop.

Read only

0 Likes
692

Thank you very much!

Read only

Former Member
0 Likes
692

Laura,

First take the data from BKPF table according to your selection criteria and on the basis of BKPF data, you can select the data from BSEG table by using all entries.

Regards

Vivek