cancel
Showing results for 
Search instead for 
Did you mean: 

Programm Update

Former Member
0 Kudos

HI Guru's

Iam new to ABAP.. I want add following fileds in this programm.. any one can help me to finish this one..

ANLA:

BUKRS: Company Name

SERNR: Serial No.

ANEP:

ANBTR: Dep Amount Posted(Line Items=total)

SK01:

SAKNR: GL Account No

EKPO:

BEDNR: Tracking No

AFNAM: Requester

MATL: Material Group

LOEKZ: Deletion Indicator in purchasing document

MENGE: Purchase order quantity

PSTYP: Item Category in Purchasing Document.

BSEG:

KOSTL : Cost Centre

EKKN: Sequential No of Account Assignment

AUFNR: Accounting Document Segment

LIFNR: Vendor No

Unable to find Table for this field..

Structure: MEREP_OUTTAB_ACCOUNTING

NETPR: Net Price

WTINV: Still to be invoiced

&----


*& Report ZFI_ASSET_ACQ *

*& *

&----


*& *

*& *

&----


REPORT ZFI_ASSET_ACQ .

  • Top includes for variables, screen declaration

INCLUDE ZFI_ASSET_ACQ_TOP.

  • Subroutines

INCLUDE ZFI_ASSET_ACQ_SUB.

  • Start of selection

START-OF-SELECTION.

CLEAR V_PROCESS_OK.

PERFORM: FM_GET_ANLA,

FM_GET_BKPF,

FM_GET_BSEG,

FM_GET_PO_DTL.

  • End of selection

END-OF-SELECTION.

IF V_PROCESS_OK = 'X'.

  • Process data

PERFORM FM_PROCESS_DATA.

DESCRIBE TABLE IT_DETAIL.

IF SY-TFILL > 0.

  • Display ALV

PERFORM: FM_KEYINFO,

FM_FIELD_CATALOG,

FM_BUILD_EVENTS,

FM_SORT.

CASE 'X'.

WHEN PA_LIST.

PERFORM FM_DISPLAY_HIER_ALV.

WHEN PA_GRP.

PERFORM FM_DISPLAY_ALV.

ENDCASE.

ELSE.

MESSAGE I519(GU).

ENDIF.

ELSE.

MESSAGE I519(GU).

ENDIF.

regards

JK

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

aaa

Former Member
0 Kudos

&----


*& Include ZFI_ASSET_ACQ_TOP *

&----


  • Tables

TABLES: BKPF,

BSEG,

ANLA.

TYPE-POOLS SLIS.

  • Types

TYPES:

  • Asset

BEGIN OF T_ANLA,

BUKRS LIKE ANLA-BUKRS,

ANLN1 LIKE ANLA-ANLN1,

ANLN2 LIKE ANLA-ANLN2,

AKTIV LIKE ANLA-AKTIV,

TXT50 LIKE ANLA-TXT50,

ANLKL LIKE ANLA-ANLKL,

KTOGR LIKE ANLA-KTOGR,

END OF T_ANLA,

  • Acctg doc header

BEGIN OF T_BKPF,

BUKRS LIKE BKPF-BUKRS,

BELNR LIKE BKPF-BELNR,

GJAHR LIKE BKPF-GJAHR,

BUDAT LIKE BKPF-BUDAT,

END OF T_BKPF,

  • Acctg doc detail

BEGIN OF T_BSEG,

BUKRS LIKE BSEG-BUKRS,

BELNR LIKE BSEG-BELNR,

GJAHR LIKE BSEG-GJAHR,

DMBTR LIKE BSEG-DMBTR,

GSBER LIKE BSEG-GSBER,

ANBWA LIKE BSEG-ANBWA,

WERKS LIKE BSEG-WERKS,

ANLN1 LIKE BSEG-ANLN1,

ANLN2 LIKE BSEG-ANLN2,

EBELN LIKE BSEG-EBELN,

EBELP LIKE BSEG-EBELP,

SHKZG LIKE BSEG-SHKZG,

ZUONR LIKE BSEG-ZUONR,

END OF T_BSEG,

  • PO details

BEGIN OF T_PO_DTL,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

BANFN LIKE EKPO-BANFN,

BNFPO LIKE EKPO-BNFPO,

BEDNR LIKE EKPO-BEDNR,

AUFNR LIKE EKKN-AUFNR,

END OF T_PO_DTL,

  • Header

BEGIN OF T_HEADER,

ANLKL LIKE ANLA-ANLKL,

KTOGR LIKE ANLA-KTOGR,

ANLN1 LIKE BSEG-ANLN1,

ANLN2 LIKE BSEG-ANLN2,

TXT50 LIKE ANLA-TXT50,

AKTIV LIKE ANLA-AKTIV,

ACVAL LIKE BSEG-DMBTR,

END OF T_HEADER,

  • Detail

BEGIN OF T_DETAIL,

ANLN1 LIKE BSEG-ANLN1,

ANLN2 LIKE BSEG-ANLN2,

BELNR LIKE BSEG-BELNR,

ANBWA LIKE BSEG-ANBWA,

BUDAT LIKE BKPF-BUDAT,

DMBTR LIKE BSEG-DMBTR,

EBELN LIKE BSEG-EBELN,

EBELP LIKE BSEG-EBELP,

BANFN LIKE EKPO-BANFN,

BNFPO LIKE EKPO-BNFPO,

ORDTR(30) TYPE C,

END OF T_DETAIL.

  • Data declaration

DATA:

  • Internal tables

IT_BKPF TYPE SORTED TABLE OF T_BKPF

WITH UNIQUE KEY BUKRS BELNR GJAHR,

IT_BSEG TYPE TABLE OF T_BSEG,

IT_ANLA TYPE SORTED TABLE OF T_ANLA

WITH UNIQUE KEY BUKRS ANLN1 ANLN2,

  • IT_PO_DTL TYPE SORTED TABLE OF T_PO_DTL

  • WITH UNIQUE KEY EBELN EBELP,

IT_PO_DTL TYPE TABLE OF T_PO_DTL,

IT_HEADER TYPE TABLE OF T_HEADER,

IT_DETAIL TYPE TABLE OF T_DETAIL,

  • Work area

WA_BKPF TYPE T_BKPF,

WA_BSEG TYPE T_BSEG,

WA_ANLA TYPE T_ANLA,

WA_PO_DTL TYPE T_PO_DTL,

WA_HEADER TYPE T_HEADER,

WA_DETAIL TYPE T_DETAIL,

  • ALV internal tables

IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,

IT_EVENTS TYPE SLIS_T_EVENT,

IT_SORTINFO TYPE SLIS_T_SORTINFO_ALV,

  • ALV work area

WA_FCAT TYPE SLIS_FIELDCAT_ALV,

WA_KEYINFO TYPE SLIS_KEYINFO_ALV,

WA_EVENTS TYPE SLIS_ALV_EVENT,

WA_SORTINFO TYPE SLIS_SORTINFO_ALV,

  • Variables

V_PROCESS_OK.

  • Selection screen

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-T01.

PARAMETERS PA_BUKRS LIKE BKPF-BUKRS OBLIGATORY.

SELECT-OPTIONS: SO_ANLKL FOR ANLA-ANLKL,

SO_GSBER FOR BSEG-GSBER.

PARAMETERS: PA_RPTDT LIKE SY-DATUM DEFAULT SY-DATUM OBLIGATORY.

SELECTION-SCREEN END OF BLOCK BLK1.

SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-T02.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: PA_LIST RADIOBUTTON GROUP GRP1.

SELECTION-SCREEN COMMENT 5(15) FOR FIELD PA_LIST.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: PA_GRP RADIOBUTTON GROUP GRP1.

SELECTION-SCREEN COMMENT 5(20) FOR FIELD PA_GRP.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK BLK2.

SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-T03.

SELECT-OPTIONS: SO_AKTIV FOR ANLA-AKTIV,

SO_BUDAT FOR BKPF-BUDAT OBLIGATORY,

SO_ANBWA FOR BSEG-ANBWA,

SO_WERKS FOR BSEG-WERKS.

SELECTION-SCREEN END OF BLOCK BLK3.

&----


*& Include ZFI_ASSET_ACQ_SUB *

&----


&----


*& Form FM_GET_ANLA

&----


  • Get from ANLA

----


FORM FM_GET_ANLA .

REFRESH IT_ANLA.

SELECT BUKRS

ANLN1

ANLN2

AKTIV

TXT50

ANLKL

KTOGR

INTO TABLE IT_ANLA

FROM ANLA

WHERE BUKRS EQ PA_BUKRS

AND ANLKL IN SO_ANLKL

AND AKTIV IN SO_AKTIV.

ENDFORM. " FM_GET_ANLA

&----


*& Form FM_GET_BKPF

&----


  • Get from BKPF

----


FORM FM_GET_BKPF .

REFRESH IT_BKPF.

SELECT BUKRS

BELNR

GJAHR

BUDAT

INTO TABLE IT_BKPF

FROM BKPF

WHERE BUKRS EQ PA_BUKRS

AND BUDAT IN SO_BUDAT.

ENDFORM. " FM_GET_BKPF

&----


*& Form FM_GET_BSEG

&----


  • Get from BSEG

----


FORM FM_GET_BSEG .

REFRESH IT_BSEG.

IF NOT IT_BKPF[] IS INITIAL.

SELECT BUKRS

BELNR

GJAHR

DMBTR

GSBER

ANBWA

WERKS

ANLN1

ANLN2

EBELN

EBELP

SHKZG

ZUONR

INTO TABLE IT_BSEG

FROM BSEG

FOR ALL ENTRIES IN IT_BKPF

WHERE BUKRS EQ IT_BKPF-BUKRS

AND BELNR EQ IT_BKPF-BELNR

AND GJAHR EQ IT_BKPF-GJAHR

AND ANBWA IN SO_ANBWA.

IF SY-SUBRC EQ 0.

  • mark there are records to process

V_PROCESS_OK = 'X'.

ENDIF.

ENDIF.

ENDFORM. " FM_GET_BSEG

&----


*& Form FM_GET_PO_DTL

&----


  • Get PO detail

----


FORM FM_GET_PO_DTL .

REFRESH IT_PO_DTL.

IF NOT IT_BSEG[] IS INITIAL.

SELECT EKPO~EBELN

EKPO~EBELP

EKPO~BANFN

EKPO~BNFPO

EKPO~BEDNR

EKKN~AUFNR

INTO TABLE IT_PO_DTL

FROM EKPO

INNER JOIN EKKN

ON EKKNEBELN EQ EKPOEBELN

AND EKKNEBELP EQ EKPOEBELP

FOR ALL ENTRIES IN IT_BSEG

WHERE EKPO~EBELN EQ IT_BSEG-EBELN

AND EKPO~EBELP EQ IT_BSEG-EBELP.

SORT IT_PO_DTL BY EBELN EBELP.

ENDIF.

ENDFORM. " FM_GET_PO_DTL

&----


*& Form FM_PROCESS_DATA

&----


  • Process data

----


FORM FM_PROCESS_DATA .

REFRESH: IT_HEADER,

IT_DETAIL.

  • sort for grouping

SORT IT_BSEG BY ANLN1 ANLN2.

LOOP AT IT_BSEG INTO WA_BSEG.

CLEAR: WA_HEADER,

WA_DETAIL.

  • check if asset belongs to selection

CLEAR WA_ANLA.

READ TABLE IT_ANLA INTO WA_ANLA

WITH KEY BUKRS = WA_BSEG-BUKRS

ANLN1 = WA_BSEG-ANLN1

ANLN2 = WA_BSEG-ANLN2

BINARY SEARCH.

IF SY-SUBRC EQ 0.

  • check debit/credit indicator

IF WA_BSEG-SHKZG = 'H'.

WA_BSEG-DMBTR = WA_BSEG-DMBTR * -1.

ENDIF.

  • read acctg doc header

PERFORM FM_READ_BKPF.

  • read PO details

PERFORM FM_READ_PO_DTL.

WA_DETAIL-ANLN1 = WA_BSEG-ANLN1.

WA_DETAIL-ANLN2 = WA_BSEG-ANLN2.

WA_DETAIL-BELNR = WA_BSEG-BELNR.

WA_DETAIL-ANBWA = WA_BSEG-ANBWA.

WA_DETAIL-BUDAT = WA_BKPF-BUDAT.

WA_DETAIL-DMBTR = WA_BSEG-DMBTR.

WA_DETAIL-EBELN = WA_BSEG-EBELN.

WA_DETAIL-EBELP = WA_BSEG-EBELP.

WA_DETAIL-BANFN = WA_PO_DTL-BANFN.

WA_DETAIL-BNFPO = WA_PO_DTL-BNFPO.

IF NOT WA_PO_DTL-AUFNR IS INITIAL.

WA_DETAIL-ORDTR = WA_PO_DTL-AUFNR.

ELSE.

WA_DETAIL-ORDTR = WA_PO_DTL-BEDNR.

ENDIF.

  • put assignment if no PO reference

IF WA_DETAIL-ORDTR IS INITIAL.

WA_DETAIL-ORDTR = WA_BSEG-ZUONR.

ENDIF.

APPEND WA_DETAIL TO IT_DETAIL.

  • append to header

WA_HEADER-ANLKL = WA_ANLA-ANLKL.

WA_HEADER-KTOGR = WA_ANLA-KTOGR.

WA_HEADER-ANLN1 = WA_BSEG-ANLN1.

WA_HEADER-ANLN2 = WA_BSEG-ANLN2.

WA_HEADER-TXT50 = WA_ANLA-TXT50.

WA_HEADER-AKTIV = WA_ANLA-AKTIV.

WA_HEADER-ACVAL = WA_BSEG-DMBTR.

COLLECT WA_HEADER INTO IT_HEADER.

ENDIF.

ENDLOOP.

ENDFORM. " FM_PROCESS_DATA

&----


*& Form FM_READ_BKPF

&----


  • Read BKPF

----


FORM FM_READ_BKPF .

CLEAR WA_BKPF.

READ TABLE IT_BKPF INTO WA_BKPF

WITH KEY BUKRS = WA_BSEG-BUKRS

BELNR = WA_BSEG-BELNR

GJAHR = WA_BSEG-GJAHR

BINARY SEARCH.

ENDFORM. " FM_READ_BKPF

&----


*& Form FM_READ_PO_DTL

&----


  • Read PO details

----


FORM FM_READ_PO_DTL .

CLEAR WA_PO_DTL.

READ TABLE IT_PO_DTL INTO WA_PO_DTL

WITH KEY EBELN = WA_BSEG-EBELN

EBELP = WA_BSEG-EBELP

BINARY SEARCH.

ENDFORM. " FM_READ_PO_DTL

&----


*& Form FM_KEYINFO

&----


  • Fill-in keyinfo

----


FORM FM_KEYINFO .

CLEAR WA_KEYINFO.

WA_KEYINFO-HEADER01 = 'ANLN1'.

WA_KEYINFO-HEADER02 = 'ANLN2'.

WA_KEYINFO-ITEM01 = 'ANLN1'.

WA_KEYINFO-ITEM02 = 'ANLN2'.

ENDFORM. " FM_KEYINFO

&----


*& Form FM_FIELD_CATALOG

&----


  • Fill field catalog

----


FORM FM_FIELD_CATALOG .

REFRESH IT_FCAT.

CASE 'X'.

WHEN PA_GRP.

PERFORM FM_APPEND_FCAT USING:

'KTOGR' 'IT_HEADER' 'ANLA' '',

'ANLKL' 'IT_HEADER' 'ANLA' '',

'ANLN1' 'IT_HEADER' 'BSEG' '',

'ANLN2' 'IT_HEADER' 'BSEG' '',

'TXT50' 'IT_HEADER' 'ANLA' '',

'AKTIV' 'IT_HEADER' 'ANLA' '',

'ACVAL' 'IT_HEADER' '' 'X'.

WHEN PA_LIST.

PERFORM FM_APPEND_FCAT USING:

'KTOGR' 'IT_HEADER' 'ANLA' '',

'ANLKL' 'IT_HEADER' 'ANLA' '',

'ANLN1' 'IT_HEADER' 'BSEG' '',

'ANLN2' 'IT_HEADER' 'BSEG' '',

'TXT50' 'IT_HEADER' 'ANLA' '',

'AKTIV' 'IT_HEADER' 'ANLA' '',

'DUMMY' 'IT_HEADER' '' '',

'ACVAL' 'IT_HEADER' '' 'X',

'DUMMY' 'IT_DETAIL' '' '',

'BELNR' 'IT_DETAIL' 'BSEG' '',

'ANBWA' 'IT_DETAIL' 'BSEG' '',

'BUDAT' 'IT_DETAIL' 'BKPF' '',

'DUMM1' 'IT_DETAIL' '' '',

'DMBTR' 'IT_DETAIL' '' '',

'EBELN' 'IT_DETAIL' 'BSEG' '',

'EBELP' 'IT_DETAIL' 'BSEG' '',

'BANFN' 'IT_DETAIL' 'EKPO' '',

'BNFPO' 'IT_DETAIL' 'EKPO' '',

'ORDTR' 'IT_DETAIL' '' ''.

ENDCASE.

ENDFORM. " FM_FIELD_CATALOG

&----


*& Form FM_APPEND_FCAT

&----


  • Append field category

----


  • -->U_FIELDNAME = Fieldname

  • -->U_TABNAME = Table name

  • -->U_REF_TABNAME = Ref tabname

  • -->U_DO_SUM = Do sum

----


FORM FM_APPEND_FCAT USING U_FIELDNAME

U_TABNAME

U_REF_TABNAME

U_DO_SUM.

CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = U_FIELDNAME.

WA_FCAT-TABNAME = U_TABNAME.

WA_FCAT-REF_TABNAME = U_REF_TABNAME.

WA_FCAT-DO_SUM = U_DO_SUM.

  • dummy to pad spaces

IF U_FIELDNAME = 'DUMMY' AND

U_TABNAME = 'IT_DETAIL'.

WA_FCAT-OUTPUTLEN = 98.

ENDIF.

  • dummy to pad spaces

IF U_FIELDNAME = 'DUMM1' AND

U_TABNAME = 'IT_DETAIL'.

WA_FCAT-OUTPUTLEN = 33.

ENDIF.

  • dummy to pad spaces

IF U_FIELDNAME = 'DUMMY' AND

U_TABNAME = 'IT_HEADER'.

WA_FCAT-OUTPUTLEN = 43.

ENDIF.

  • Custom header text

IF U_FIELDNAME = 'ORDTR'.

WA_FCAT-REPTEXT_DDIC = TEXT-T04.

ELSEIF U_FIELDNAME = 'ACVAL'.

WA_FCAT-REPTEXT_DDIC = TEXT-T05.

ELSEIF U_FIELDNAME = 'DMBTR'.

WA_FCAT-REPTEXT_DDIC = TEXT-T06.

ENDIF.

APPEND WA_FCAT TO IT_FCAT.

ENDFORM. " FM_APPEND_FCAT

&----


*& Form FM_BUILD_EVENTS

&----


  • ALV Events

----


FORM FM_BUILD_EVENTS .

REFRESH IT_EVENTS.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = IT_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CLEAR WA_EVENTS.

READ TABLE IT_EVENTS INTO WA_EVENTS

WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENTS-FORM = 'FM_TOP_OF_PAGE'.

MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX TRANSPORTING FORM .

ENDIF.

ENDFORM. " FM_BUILD_EVENTS

&----


*& Form FM_SORT

&----


  • Sort criteria

----


FORM FM_SORT .

REFRESH IT_SORTINFO.

CLEAR WA_SORTINFO.

WA_SORTINFO-SPOS = '1'.

WA_SORTINFO-FIELDNAME = 'KTOGR'.

WA_SORTINFO-TABNAME = 'IT_HEADER'.

WA_SORTINFO-SUBTOT = 'X'.

WA_SORTINFO-UP = 'X'.

APPEND WA_SORTINFO TO IT_SORTINFO.

IF PA_LIST = 'X'.

WA_SORTINFO-SPOS = '2'.

WA_SORTINFO-FIELDNAME = 'BELNR'.

WA_SORTINFO-TABNAME = 'IT_DETAIL'.

WA_SORTINFO-UP = 'X'.

APPEND WA_SORTINFO TO IT_SORTINFO.

ENDIF.

ENDFORM. " FM_SORT

&----


*& Form FM_DISPLAY_HIER_ALV

&----


  • Display hierarchical ALV

----


FORM FM_DISPLAY_HIER_ALV .

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = IT_FCAT

I_TABNAME_HEADER = 'IT_HEADER'

I_TABNAME_ITEM = 'IT_DETAIL'

IT_EVENTS = IT_EVENTS

IS_KEYINFO = WA_KEYINFO

IT_SORT = IT_SORTINFO

TABLES

T_OUTTAB_HEADER = IT_HEADER

T_OUTTAB_ITEM = IT_DETAIL

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

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. " FM_DISPLAY_HIER_ALV

&----


*& Form FM_DISPLAY_ALV

&----


  • Display ALV

----


FORM FM_DISPLAY_ALV .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = IT_FCAT

IT_EVENTS = IT_EVENTS

IT_SORT = IT_SORTINFO

TABLES

T_OUTTAB = IT_HEADER

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

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. " FM_DISPLAY_ALV

&----


*& Form FM_TOP_OF_PAGE

&----


  • Top of page

----


FORM FM_TOP_OF_PAGE .

DATA: LIT_LIST_COMMENT TYPE SLIS_T_LISTHEADER,

LWA_LIST_COMMENT TYPE SLIS_LISTHEADER.

CLEAR LWA_LIST_COMMENT.

LWA_LIST_COMMENT-TYP = 'S'.

  • Company code

CONCATENATE TEXT-C01 ':' INTO LWA_LIST_COMMENT-KEY

SEPARATED BY SPACE.

LWA_LIST_COMMENT-INFO = PA_BUKRS.

APPEND LWA_LIST_COMMENT TO LIT_LIST_COMMENT.

  • Reporting date

CONCATENATE TEXT-C02 ':' INTO LWA_LIST_COMMENT-KEY

SEPARATED BY SPACE.

LWA_LIST_COMMENT-INFO = PA_RPTDT.

APPEND LWA_LIST_COMMENT TO LIT_LIST_COMMENT.

  • Posting Period

CONCATENATE TEXT-C03 ' : ' INTO LWA_LIST_COMMENT-KEY.

LWA_LIST_COMMENT-INFO = SO_BUDAT-LOW.

IF NOT SO_BUDAT-HIGH IS INITIAL.

CONCATENATE LWA_LIST_COMMENT-INFO

SO_BUDAT-HIGH

INTO LWA_LIST_COMMENT-INFO

SEPARATED BY ' to '.

ENDIF.

APPEND LWA_LIST_COMMENT TO LIT_LIST_COMMENT.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = LIT_LIST_COMMENT.

ENDFORM. " FM_TOP_OF_PAGE