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

BSEG

Former Member
0 Likes
1,172

HI all,

Can we get the accounting document (BSEG-BELNR) based on material document (MSEG-MBLNR),(MSEG-BUKRS)?

Help me regarding this...

sachin.

4 REPLIES 4
Read only

Former Member
0 Likes
900

This program will sove ur problem....

&----


*& Report ZFIMMDOC *

*& Listing of accounting docs and the material docs from which they *

*& were automatically created. *

&----


REPORT ZFIMMDOC MESSAGE-ID Z1 LINE-COUNT 65 NO STANDARD PAGE HEADING.

TABLES: BKPF, MSEG, MKPF, T001, BSIM, T001K, MARA, BSEG, SKAT,

MAKT, T156T.

INCLUDE: ZFIMMTOP. "types mymseg_type

PARAMETERS: COMPANYC LIKE BKPF-BUKRS OBLIGATORY, " default '1101',

YEAR LIKE BKPF-GJAHR OBLIGATORY, " default '1998'.

POSTDATE LIKE BKPF-BUDAT OBLIGATORY.

SELECT-OPTIONS: VAL_AREA FOR BSIM-BWKEY NO-DISPLAY,

S_MBLNR FOR MSEG-MBLNR NO-DISPLAY,

S_BELNR FOR BSEG-BELNR NO-DISPLAY.

DATA: MYBUTXT LIKE T001-BUTXT,

LINES TYPE I,

PREVIOUS_BELNR LIKE BKPF-BELNR,

PREVIOUS_AWKEY LIKE BKPF-AWKEY,

MYTXT50 LIKE SKAT-TXT50,

BEGIN OF X001K OCCURS 20.

INCLUDE STRUCTURE T001K.

DATA: END OF X001K.

DATA: BEGIN OF MYBKPF OCCURS 100,

BLART LIKE BKPF-BLART, "doc type

BELNR LIKE BKPF-BELNR, "doc no

WAERS LIKE BKPF-WAERS, "currency key

AWKEY LIKE BKPF-AWKEY,

END OF MYBKPF.

DATA: BEGIN OF MYBSIM OCCURS 500.

INCLUDE TYPE MYBSIM_TYPE.

DATA: END OF MYBSIM.

DATA: BEGIN OF MYBSEG OCCURS 1200,

BELNR LIKE BSEG-BELNR,

BUZEI LIKE BSEG-BUZEI,

BSCHL LIKE BSEG-BSCHL,

HKONT LIKE BSEG-HKONT,

WRBTR LIKE BSEG-WRBTR,

SHKZG LIKE BSEG-SHKZG, "debit/credit

END OF MYBSEG.

DATA: BEGIN OF MYMSEG OCCURS 500.

INCLUDE TYPE MYMSEG_TYPE.

DATA: END OF MYMSEG.

PERFORM GET_BKPF.

PERFORM GET_BSIM.

PERFORM COLLECT_BELNR.

PERFORM GET_BSEG.

PERFORM COLLECT_MBLNR.

PERFORM GET_MSEG.

SORT MYBSIM BY BELNR.

SORT MYMSEG BY MBLNR ZEILE.

SORT MYBSEG BY BELNR BUZEI.

LOOP AT MYBSIM.

IF MYBSIM-SHKZG = 'H'. "negative value

MYBSIM-DMBTR = ( -1 ) * MYBSIM-DMBTR.

ENDIF.

PERFORM WRITE_BSIM_DATA USING MYBSIM.

AT END OF BELNR. "new belnr record: get bseg recs

PERFORM WRITE_BSEG_DATA USING MYBSIM-BELNR.

ENDAT.

AT END OF AWKEY.

PERFORM WRITE_MSEG_DATA USING MYBSIM-AWKEY(10).

ENDAT.

WRITE: SY-ULINE.

ENDLOOP.

WRITE: / 'number of records accessed'.

DESCRIBE TABLE MYBKPF LINES LINES.

WRITE: / 'bkpf:', LINES.

DESCRIBE TABLE MYBSIM LINES LINES.

WRITE: / 'bsim:', LINES.

DESCRIBE TABLE MYMSEG LINES LINES.

WRITE: / 'mseg:', LINES.

DESCRIBE TABLE MYBSEG LINES LINES.

WRITE: / 'bseg:', LINES.

AT SELECTION-SCREEN.

  • get company text

SELECT SINGLE BUTXT FROM T001 INTO MYBUTXT

WHERE BUKRS = COMPANYC.

  • get valuation areas from company code

REFRESH VAL_AREA. CLEAR VAL_AREA.

SELECT * FROM T001K INTO TABLE X001K

WHERE BUKRS = COMPANYC.

LOOP AT X001K.

VAL_AREA-SIGN = 'I'. VAL_AREA-OPTION = 'EQ'.

VAL_AREA-LOW = X001K-BWKEY.

APPEND VAL_AREA.

ENDLOOP.

READ TABLE VAL_AREA INDEX 1.

TOP-OF-PAGE.

PERFORM WRITE_HEADER.

&----


*& Form GET_BKPF

&----


FORM GET_BKPF.

  • get bkpf records

  • should perform authority check here **

SELECT BLART BELNR WAERS AWKEY

INTO CORRESPONDING FIELDS OF TABLE MYBKPF

FROM BKPF

WHERE BUKRS = COMPANYC AND GJAHR = YEAR AND BUDAT = POSTDATE

ORDER BY BELNR.

ENDFORM. " GET_BKPF

&----


*& Form GET_BSIM

----


FORM GET_BSIM.

LOOP AT MYBKPF.

MYBSIM-BLART = MYBKPF-BLART.

MYBSIM-BELNR = MYBKPF-BELNR.

MYBSIM-WAERS = MYBKPF-WAERS.

MYBSIM-AWKEY = MYBKPF-AWKEY.

  • should perform authority check here **

  • select bsim records using conditions gjahr, bwkey, belnr

SELECT BELNR BUZEI DMBTR MATNR BUDAT MENGE MEINS

INTO CORRESPONDING FIELDS OF MYBSIM

FROM BSIM

WHERE GJAHR = YEAR AND

BELNR = MYBKPF-BELNR AND

BWKEY IN VAL_AREA.

APPEND MYBSIM.

ENDSELECT.

ENDLOOP.

ENDFORM. " GET_BSIM

&----


*& Form get_bseg

&----


FORM GET_BSEG.

  • should perform authority check here **

  • select bseg records using conditions bukrs, belnr, gjahr

SELECT BELNR BUZEI BSCHL HKONT WRBTR SHKZG

INTO CORRESPONDING FIELDS OF TABLE MYBSEG

FROM BSEG

WHERE GJAHR = YEAR AND

BUKRS = COMPANYC AND

BELNR IN S_BELNR.

ENDFORM.

&----


*& Form GET_MSEG

&----


FORM GET_MSEG.

  • should perform authority check here **

SELECT MBLNR

ZEILE BWART MATNR LGORT MENGE MEINS WAERS SHKZG DMBTR WERKS

KOSTL SOBKZ KZBEW KZZUG KZVBR

INTO CORRESPONDING FIELDS OF TABLE MYMSEG

FROM MSEG

WHERE MJAHR = YEAR AND MBLNR IN S_MBLNR.

WRITE: SY-ULINE.

ENDFORM. " GET_AND_WRITE_MATDOC

&----


*& Form WRITE_HEADER

----


FORM WRITE_HEADER.

DATA: MYOPTION(11) TYPE C, MYSIGN(7) TYPE C, "explain select criteria

SELECT_TEXT(60) TYPE C, SELECT_POSITION TYPE I.

WRITE: TEXT-000,

TEXT-001. "company and report header

IF SY-PAGNO = 1. "**** first page

WRITE: / 'Company Code', COMPANYC, MYBUTXT,

'Accounting Year', YEAR, 'Posting Date:', POSTDATE.

ENDIF. "**** first page

WRITE: / 'Generated', SY-DATUM, SY-UZEIT,

'Page', SY-PAGNO, SY-ULINE.

  • format for accounting docs

FORMAT COLOR COL_GROUP.

WRITE: / 'DT',

4 'acct doc',

15 'material',

25 'item',

31 'Posted',

42(12) 'Quantity',

'Unit',

61 ' balance'.

FORMAT COLOR OFF.

WRITE: / 'item' UNDER 'item', 30 'Code', 35 'Account',

45 'Description',

61 ' balance'.

  • format for material docs

FORMAT COLOR COL_TOTAL.

WRITE: / 'MatrialDoc' UNDER 'acct doc',

'Posted' UNDER 'Posted', 'Entered' UNDER 'Description',

76 ' '.

FORMAT COLOR OFF.

WRITE: /10 'item',

'Material' UNDER 'Material',

25 'Plant',

'Stor' UNDER 'Code',

'Mvmt' UNDER 'Account',

42(12) 'Quantity',

'Unit',

61 ' balance',

/11 'MaterialDesc',

'MovementType' UNDER 'Quantity',

60 'CostCtr'.

WRITE: SY-ULINE.

ENDFORM. " WRITE_HEADER

&----


*& Form WRITE_MKPF_DATA

&----


FORM WRITE_MKPF_DATA USING F_MSEG TYPE MYMSEG_TYPE

F_MAKTX LIKE MAKT-MAKTX

F_BTEXT LIKE T156T-BTEXT.

WRITE: / F_MSEG-ZEILE UNDER 'item',

F_MSEG-MATNR UNDER 'material',

F_MSEG-WERKS UNDER 'Plant',

F_MSEG-LGORT UNDER 'Stor',

F_MSEG-BWART UNDER 'Mvmt',

(12)F_MSEG-MENGE UNDER 'Quantity' DECIMALS 2,

F_MSEG-MEINS UNDER 'Unit',

F_MSEG-DMBTR UNDER ' balance'.

WRITE: / F_MAKTX UNDER 'MaterialDesc',

F_BTEXT UNDER 'MovementType',

F_MSEG-KOSTL UNDER 'CostCtr'.

ENDFORM. " WRITE_MKPF_DATA

&----


*& Form WRITE_MKPF_HEADER

&----


FORM WRITE_MKPF_HEADER USING P_MBLNR LIKE MKPF-MBLNR.

DATA: MYBUDAT LIKE MKPF-BUDAT, MYCPUDT LIKE MKPF-CPUDT.

SELECT SINGLE BUDAT CPUDT FROM MKPF

INTO (MYBUDAT, MYCPUDT)

WHERE MBLNR = P_MBLNR AND MJAHR = YEAR.

IF SY-SUBRC = 0. "got record

FORMAT COLOR COL_TOTAL.

WRITE: / P_MBLNR UNDER 'acct doc',

MYBUDAT UNDER 'Posted',

MYCPUDT UNDER 'Entered',

76 ' '.

FORMAT COLOR OFF.

ENDIF.

ENDFORM. " WRITE_MKPF_HEADER

&----


*& Form WRITE_BSIM_DATA

&----


FORM WRITE_BSIM_DATA USING F_BSIM TYPE MYBSIM_TYPE.

FORMAT COLOR COL_GROUP.

WRITE: / F_BSIM-BLART UNDER 'DT',

F_BSIM-BELNR UNDER 'acct doc',

F_BSIM-MATNR UNDER 'material',

F_BSIM-BUZEI UNDER 'Plant', "item

F_BSIM-BUDAT UNDER 'Posted',

(12)F_BSIM-MENGE UNDER 'Quantity' DECIMALS 2,

F_BSIM-MEINS UNDER 'Unit',

F_BSIM-DMBTR UNDER ' balance' RIGHT-JUSTIFIED.

FORMAT COLOR OFF.

ENDFORM. " WRITE_BSIM_DATA

&----


*& Form WRITE_BSEG_DATA

&----


FORM WRITE_BSEG_DATA USING P_BELNR.

LOOP AT MYBSEG WHERE BELNR = P_BELNR.

SELECT SINGLE TXT50 INTO MYTXT50 FROM SKAT

WHERE SPRAS = '1' AND KTOPL = 'HFCA' AND

SAKNR = MYBSEG-HKONT.

IF MYBSEG-SHKZG = 'H'. "negative value

MYBSEG-WRBTR = ( -1 ) * MYBSEG-WRBTR.

ENDIF.

WRITE: / MYBSEG-BUZEI UNDER 'Plant', "item

MYBSEG-BSCHL UNDER 'Code',

MYBSEG-HKONT UNDER 'Account',

MYTXT50 UNDER 'Description',

MYBSEG-WRBTR UNDER ' balance'.

ENDLOOP.

ENDFORM. " WRITE_BSEG_DATA

&----


*& Form COLLECT_MBLNR

&----


FORM COLLECT_MBLNR.

SORT MYBSIM BY AWKEY.

S_MBLNR-SIGN = 'I'.

S_MBLNR-OPTION = 'EQ'.

LOOP AT MYBSIM.

AT NEW AWKEY.

S_MBLNR-LOW = MYBSIM-AWKEY(10).

APPEND S_MBLNR.

ENDAT.

ENDLOOP.

READ TABLE S_MBLNR INDEX 1.

ENDFORM. " COLLECT_MBLNR

&----


*& Form COLLECT_BELNR

&----


FORM COLLECT_BELNR.

S_BELNR-SIGN = 'I'.

S_BELNR-OPTION = 'EQ'.

SORT MYBSIM BY BELNR.

LOOP AT MYBSIM.

AT NEW BELNR.

S_BELNR-LOW = MYBSIM-BELNR.

APPEND S_BELNR.

ENDAT.

ENDLOOP.

READ TABLE S_BELNR INDEX 1.

ENDFORM. " COLLECT_BELNR

&----


*& Form WRITE_MSEG_DATA

&----


FORM WRITE_MSEG_DATA USING P_MBLNR LIKE MSEG-MBLNR.

DATA: MYBTEXT LIKE T156T-BTEXT,

MYMAKTX LIKE MAKT-MAKTX.

PERFORM WRITE_MKPF_HEADER USING P_MBLNR.

LOOP AT MYMSEG WHERE MBLNR = P_MBLNR.

SELECT SINGLE BTEXT INTO MYBTEXT FROM T156T

WHERE SPRAS = '1' AND

BWART = MYMSEG-BWART AND

SOBKZ = MYMSEG-SOBKZ AND

KZBEW = MYMSEG-KZBEW AND

KZZUG = MYMSEG-KZZUG AND

KZVBR = MYMSEG-KZVBR.

SELECT SINGLE MAKTX INTO MYMAKTX FROM MAKT

WHERE SPRAS = '1' AND MATNR = MYMSEG-MATNR.

IF MYMSEG-SHKZG = 'H'.

MYMSEG-DMBTR = ( -1 ) * MYMSEG-DMBTR.

ENDIF.

PERFORM WRITE_MKPF_DATA USING MYMSEG MYMAKTX MYBTEXT.

ENDLOOP.

ENDFORM. " WRITE_MSEG_DATA

  • end of ZFIMMDOC program *

  • begin of ZFIMMTOP include program *

----


  • INCLUDE ZFIMMTOP *

----


TYPES: BEGIN OF MYMSEG_TYPE,

MBLNR LIKE MSEG-MBLNR,

ZEILE LIKE MSEG-ZEILE,

BWART LIKE MSEG-BWART,

MATNR LIKE MSEG-MATNR,

WERKS LIKE MSEG-WERKS,

LGORT LIKE MSEG-LGORT,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

WAERS LIKE MSEG-WAERS,

SHKZG LIKE MSEG-SHKZG,

DMBTR LIKE MSEG-DMBTR,

KOSTL LIKE MSEG-KOSTL,

SOBKZ LIKE MSEG-SOBKZ, " for goods movement text

KZBEW LIKE MSEG-KZBEW, " for goods movement text

KZZUG LIKE MSEG-KZZUG, " for goods movement text

KZVBR LIKE MSEG-KZVBR, " for goods movement text

END OF MYMSEG_TYPE.

TYPES: BEGIN OF MYBSIM_TYPE,

BLART LIKE BKPF-BLART, "doc type

BELNR LIKE BKPF-BELNR, "doc no

WAERS LIKE BKPF-WAERS,

AWKEY LIKE BKPF-AWKEY,

BUZEI LIKE BSIM-BUZEI, "doc item

MATNR LIKE BSIM-MATNR,

BUDAT LIKE BSIM-BUDAT,

MENGE LIKE BSIM-MENGE, "quantity

MEINS LIKE BSIM-MEINS, "unit of measure

SHKZG LIKE BSIM-SHKZG, "debit/credit

DMBTR LIKE BSIM-DMBTR, "balance amount

END OF MYBSIM_TYPE.

  • end of ZFIMMDOC include *

REWARD POINTS IF U FIND IT HELPFUL

Read only

Former Member
0 Likes
900

Hi Sachin,

You can get the BELNR(Accounting Doc. number) from BKPF, which wuill be available in BSEG cluster table...

to get data from BKPF

pass BKPF-AWTYP = 'RMRP'

BKPF-AWKEY as a concatenation of MSEG-MBLNR and MSEG-MJAHR

This will give you a unique doc. number

This will be performance tuned also as, it is an index on BKPF as well

Please reward points if helpful...

Regards,

Brijesh Patel

Read only

Former Member
0 Likes
900

hi

good

An accounting document and a Controlling document are created based on a material document. The DRB is started via the document display for financial accounting (transaction FB03). The Document Relationship Browser displays the link in the link tree:

http://help.sap.com/saphelp_nw04/helpdata/en/21/ff683c43e87845e10000000a11402f/content.htm

thanks

mrutyun^

Read only

RaymondGiuseppi
Active Contributor
0 Likes
900

There is a link between BKPF and MKPF

BKPF-AWTYP = 'MKPF'

BKPF-AWKEY = MKPF-MBKLR + MKPF-MJAHR

Then you have to match lines of BSEG and MSEG on other criteria (quantity, MATNR, amount, etc.)

Regards