Application Development 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: 

doubt in blocked list alv

Chandra-Bade
Explorer
0 Kudos

Hi Abapers,

I need help

I want to develop a Report using blocked list alv.

I am using 3 internal tables for output(reuse_alv_block_list_append)

I want put each title for each block and a uline.

How can I put each title and uline for every block.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

HI,

try this code

this is having two heading for two lists

***&----


*& Report ZFII_RFITEMAPLIST

*&

&----


*&

*&

&----


----


  • Data Extract from Tables LFA1, T001, BSIK.

----


  • Program Name :ZFII_RFITEMAPLIST

  • Object ID :EDD031

  • Functional Analyst :KRISHNA

  • Programmer :venkatesh

  • Start date :19/03/2007

  • Initial CTS :HFDK900660

  • Description :Prepayment Discount ( discount taken

  • while payment before runing APP )

*

----


  • Includes :

*

  • Function Modules : *

*

  • Logical database :

  • Transaction Code : N/A

  • External references :

----


  • Modification Log

----


  • Date | Modified by | CTS number | Comments

----


*19/03/2007 | venkatesh |HFDK900660 | Initial version

----


REPORT ZFII_RFITEMAPLIST NO STANDARD PAGE HEADING.

*Declaration of the tables and type pools which

*are required in the programme.

TYPE-POOLS: SLIS.

TABLES: LFA1,

T001,

BSIK,

ZFII_PDITEM,

ZFII_PDHEAD.

*Design of the selection screen starts.

SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

*SELECTION-SCREEN BEGIN OF LINE.

**Asset wise.

*SELECTION-SCREEN COMMENT 1(20) TEXT-T01 FOR FIELD R_POST.

*PARAMETERS: R_POST RADIOBUTTON GROUP G1.

*

*SELECTION-SCREEN END OF LINE.

PARAMETERS:

P_BUKRS LIKE T001-BUKRS

OBLIGATORY DEFAULT 'H901'. "*COMPANY CODE.

SELECT-OPTIONS:

S_LIFNR FOR LFA1-LIFNR

OBLIGATORY NO INTERVALS NO-EXTENSION, "*VENDOR

S_BLART FOR BSIK-BLART. " *DOCUMENT TYPE

PARAMETERS:

P_DRATE(2) TYPE N OBLIGATORY DEFAULT '11', " DISCOUNT PERCENTAGE

P_DDATE LIKE SY-DATUM DEFAULT SY-DATUM , " DISCOUNT DATE

P_DUEDT LIKE SY-DATUM. " consider discount date upto

SELECTION-SCREEN END OF BLOCK B01.

*Design of the selection screen ends.

*declaring the internal table which are necessary

*through out the report.

*TABLE TO CAPTURE THE VENDOR NAMES.

TYPES: BEGIN OF T_VENDOR,

LIFNR TYPE LFA1-LIFNR,

NAME1 TYPE LFA1-NAME1,

END OF T_VENDOR.

TYPES: T_IT_VENDOR TYPE STANDARD TABLE OF T_VENDOR.

DATA: GWA_VENDOR TYPE T_VENDOR.

DATA: GIT_VENDOR TYPE T_IT_VENDOR.

*TABLE FOR INITIAL COLLECTION OF DATA FROM BSIK TABLE

TYPES:BEGIN OF T_BSIK,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

ZBD1T TYPE BSIK-ZBD1T,

ZBD2T TYPE BSIK-ZBD2T,

ZBD3T TYPE BSIK-ZBD3T,

SHKZG TYPE BSIK-SHKZG,

REBZG TYPE BSIK-REBZG,

DMBTR TYPE BSIK-DMBTR,

DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-DMBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NAME1 TYPE LFA1-NAME1,

SNO TYPE I,

NETAMOUNT TYPE BSIK-DMBTR,

  • CHCK(1) TYPE C,

END OF T_BSIK.

TYPES: T_IT_BSIK TYPE STANDARD TABLE OF T_BSIK.

DATA: GWA_BSIK TYPE T_BSIK.

DATA: GIT_BSIK TYPE T_IT_BSIK.

*TABLE FOR COLLECTING THE TOTAL AMOUNT.

TYPES:BEGIN OF T_BSIKF,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

NAME1 TYPE LFA1-NAME1,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

DMBTR TYPE BSIK-DMBTR,

  • DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-DMBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NETAMOUNT TYPE BSIK-DMBTR,

SNO TYPE I,

  • CHCK(1) TYPE C,

END OF T_BSIKF.

TYPES: T_IT_BSIKF TYPE STANDARD TABLE OF T_BSIKF.

DATA: GWA_BSIKF TYPE T_BSIKF.

DATA: GIT_BSIKF TYPE T_IT_BSIKF.

*TABLE FOR COLLECTING THE DISCOUNT AMOUNT AND DATE

TYPES:BEGIN OF T_BSIKM,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

NAME1 TYPE LFA1-NAME1,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

DMBTR TYPE BSIK-DMBTR,

DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-WRBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NETAMOUNT TYPE BSIK-DMBTR,

SNO TYPE I ,

  • CHCK(1) TYPE C,

END OF T_BSIKM.

TYPES: T_IT_BSIKM TYPE STANDARD TABLE OF T_BSIKM.

DATA: GWA_BSIKM TYPE T_BSIKM.

DATA: GIT_BSIKM TYPE T_IT_BSIKM.

*TABLE FOR POSTED DOCUMENTS

DATA: GWA_POST TYPE T_BSIKM.

DATA: GIT_POST TYPE T_IT_BSIKM.

*TABLE FOR NOT POSTED DOCUMENTS

DATA: GWA_NOTPOST TYPE T_BSIKM.

DATA: GIT_NOTPOST TYPE T_IT_BSIKM.

*table for check whethere the entered documents

  • for which discount has calculated are already

*posted or not.

TYPES: BEGIN OF T_CHECK1,

LIFNR TYPE ZFII_PDITEM-LIFNR,

BELNR TYPE ZFII_PDITEM-BELNR,

BELNRSUB TYPE ZFII_PDITEM-BELNRSUB,

GJAHR TYPE ZFII_PDITEM-GJAHR,

BUKRS TYPE ZFII_PDITEM-BUKRS,

BLART TYPE ZFII_PDITEM-BLART,

END OF T_CHECK1.

TYPES: T_IT_CHECK1 TYPE STANDARD TABLE OF T_CHECK1.

DATA: GWA_CHECK1 TYPE T_CHECK1.

DATA: GIT_CHECK1 TYPE T_IT_CHECK1.

*TABLE TO COLLECT THE DOCUMENTS WHICH ARE POSTED.

*IN THE TABLE ZFII_PDHEAD.

TYPES: BEGIN OF T_HEAD.

INCLUDE STRUCTURE ZFII_PDHEAD.

TYPES: END OF T_HEAD.

TYPES: T_IT_HEAD TYPE STANDARD TABLE OF T_HEAD.

DATA: GWA_HEAD TYPE T_HEAD.

DATA: GIT_HEAD TYPE T_IT_HEAD.

TYPES: BEGIN OF T_ITEM.

INCLUDE STRUCTURE ZFII_PDITEM.

TYPES: END OF T_ITEM.

TYPES: T_IT_ITEM TYPE STANDARD TABLE OF T_ITEM.

DATA: GWA_ITEM TYPE T_ITEM.

DATA: GIT_ITEM TYPE T_IT_ITEM.

*TABLE FOR CAPTURING THE REVERSAL DOCUMENTS.

TYPES:BEGIN OF T_REVERSE,

BELNR TYPE BKPF-BELNR,

STBLG TYPE BKPF-STBLG,

GJAHR TYPE BKPF-GJAHR,

END OF T_REVERSE.

TYPES: T_IT_REVERSE TYPE STANDARD TABLE OF T_REVERSE.

DATA: GWA_REVERSE TYPE T_REVERSE.

DATA: GIT_REVERSE TYPE T_IT_REVERSE.

*TYPES:BEGIN OF T_ZFII_PDITEM.

  • INCLUDE STRUCTURE ZFII_PDITEM.

*TYPES: END OF T_ZFII_PDITEM.

*

*types: t_it_ZFII_PDITEM type standard table of T_ZFII_PDITEM.

*DATA: GWA_ZFII_PDITEM TYPE T_ZFII_PDITEM.

*DATA: GIT_ZFII_PDITEM TYPE t_iT_ZFII_PDITEM.

*TABLE FOR COLLECTING THE ENTERED DATE

*AND WE WILL PASS IT TO ANOTHER TABLE

TYPES:BEGIN OF T_DATE,

DATE TYPE BSIK-ZFBDT,

END OF T_DATE.

TYPES: T_IT_DATE TYPE STANDARD TABLE OF T_DATE.

DATA: GWA_DATE TYPE T_DATE.

DATA: GIT_DATE TYPE T_IT_DATE.

*VARIABLE TO CAPTURE THE DISCOUNT AMOUNT.

*DATA: DISCOUNT LIKE BSIK-DMBTR.

*declaring the variable which will be necessary

  • through out the report.

DATA : G_BUKRS LIKE T001-BUKRS.

DATA: G_REPID LIKE SY-REPID,

GWA_SORT TYPE SLIS_SORTINFO_ALV,

GIT_SORT TYPE SLIS_T_SORTINFO_ALV,

GWA_SORTPOST TYPE SLIS_SORTINFO_ALV, " POSTED

GIT_SORTPOST TYPE SLIS_T_SORTINFO_ALV,

GIT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER, " NOT POSTED

GIT_LIST_TOP_OF_PAGE_POST TYPE SLIS_T_LISTHEADER, " POSTED

GIT_EVENTS TYPE SLIS_T_EVENT, " NOT POSTED

GIT_EVENTS1 TYPE SLIS_T_EVENT, " POSTED

GFL_LAYOUT TYPE SLIS_LAYOUT_ALV,

GIT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV , " NOT POSTED

GIT_FIELDCATPOST TYPE SLIS_T_FIELDCAT_ALV , " POSTED

GWA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

GIT_XS_EVENT TYPE SLIS_ALV_EVENT.

  • FIELDCAT_LN LIKE LINE OF GiT_FIELDCAT

.

  • g_linno TYPE c.

*DATA : GFL_VARIANT LIKE DISVARIANT.

DATA : GFL_VAR LIKE DISVARIANT.

DATA: G_SNO TYPE I VALUE 1.

DATA : GFL_ALV_VAR LIKE DISVARIANT.

*DATA : G_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

DATA : G_POS TYPE I VALUE 1.

GFL_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

*Initialization event starts.

INITIALIZATION.

*CLEARING AND REFRESHING THE TABLES.

PERFORM INITIALIZATION.

*COLLECTING THE VARIANTS

PERFORM VARIANTS.

*Initialization event ends.

  • At selection screen event starts.

AT SELECTION-SCREEN.

*CHECK WHETHER DATE IS ENTERED OR NOT.

PERFORM VALIDATE_DATE.

*VALIDATING THE COMPANY CODE.

PERFORM COMPANY_CODE.

*VALIDATING THE VENDOR CODE

PERFORM VENDOR_VALIDATE.

*SELECTING THE DATA.

PERFORM GET_DATA.

*CHECK FOR THE REVERSAL DOCUMENTS IF ANY.

PERFORM CHECK_REVERSAL.

*CALCULATING THE DISCOUNT AMOUNT.

PERFORM CALCULATION.

*CALCULATING THE TOTAL AMOUNT WITH RESPECT TO DATE

PERFORM SUB_TOTAL_DATE.

*APPENDING THE DATE ENTERED INTO AN INTERNAL TABLE

*AND THIS INTERNAL TABLE WILL BE SEND TO ANOTHER PROGRAME

GWA_DATE-DATE = P_DDATE.

APPEND GWA_DATE TO GIT_DATE.

CLEAR GWA_DATE.

*CHECKING WHETHER THE INTERNAL TABLE IS BLANK OR NOT

CHECK GIT_BSIKM IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-004.

  • At selection screen event ends.

*start-of-selection event starts.

START-OF-SELECTION.

CLEAR : P_DUEDT.

*DIVIDES THE FINAL INTERNAL TABLE INTO

*POSTED AND NOT POSTED DOCUMENTS.

CLEAR: GWA_POST, GWA_NOTPOST.

REFRESH: GIT_POST, GIT_NOTPOST.

PERFORM POSTED_NOTPOSTED.

*FILLING THE FIELD CATALOG

PERFORM FIELD_CATALOG.

PERFORM FIELD_CATALOG_POST.

*SORTING THE FIELDS.

PERFORM SORT_FIELDS.

PERFORM SORT_FIELDS_POST.

*GETTING THE EVENTS OF ALV

PERFORM EVENTTAB_BUILD1 CHANGING GIT_EVENTS.

PERFORM EVENTTAB_BUILDPOST.

*FILLING OF THE HEADER PART.

PERFORM LIST_HEADER.

PERFORM LIST_HEADER1.

SORT GIT_POST ASCENDING BY NETDUEDT.

SORT GIT_NOTPOST ASCENDING BY NETDUEDT.

PERFORM DISPLAY_LIST.

*start-of-selection event ends.

&----


*& Form company_code

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM COMPANY_CODE .

SELECT SINGLE BUKRS

FROM T001

INTO (G_BUKRS)

WHERE BUKRS EQ P_BUKRS.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-002.

ENDIF.

CLEAR G_BUKRS.

ENDFORM. " company_code

&----


*& Form initialization

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM INITIALIZATION .

CLEAR: GIT_BSIK, G_BUKRS.

REFRESH: GIT_BSIK, GIT_BSIKF, GIT_BSIKM.

CLEAR:

G_BUKRS,

G_REPID,

GWA_SORT,

GIT_SORT,

GIT_LIST_TOP_OF_PAGE ,

GIT_EVENTS ,

GFL_LAYOUT,

GIT_FIELDCAT ,

GWA_FIELDCAT,

  • FIELDCAT_LN ,

  • G_LIST_TOP_OF_PAGE ,

G_POS,

GFL_ALV_VAR, G_BUKRS.

REFRESH:

GIT_SORT,

GIT_LIST_TOP_OF_PAGE ,

GIT_EVENTS ,

GIT_FIELDCAT .

  • G_LIST_TOP_OF_PAGE .

ENDFORM. " initialization

&----


*& Form vendor_validate

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VENDOR_VALIDATE .

SELECT LIFNR

FROM LFA1

INTO CORRESPONDING FIELDS OF TABLE GIT_BSIK

WHERE LIFNR IN S_LIFNR.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-003.

ENDIF.

CLEAR GWA_BSIK.

REFRESH: GIT_BSIK.

ENDFORM. " vendor_validate

&----


*& Form get_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA .

CLEAR: GIT_BSIK, GWA_BSIK.

REFRESH GIT_BSIK.

SELECT

MANDT

BUKRS

LIFNR

BELNR

BLART

GJAHR

ZFBDT

ZBD1T

ZBD2T

ZBD3T

SHKZG

REBZG

DMBTR

FROM BSIK

INTO TABLE GIT_BSIK

WHERE BUKRS EQ P_BUKRS

AND LIFNR IN S_LIFNR

AND BLART IN S_BLART

AND BLART NE 'GC'

AND ZLSPR = ' '.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-004.

ENDIF.

SORT GIT_BSIK ASCENDING BY LIFNR ZFBDT BLART.

*GETTING THE VENDOR NAME.

IF GIT_BSIK IS NOT INITIAL.

SELECT

LIFNR

NAME1

FROM LFA1

INTO TABLE GIT_VENDOR

FOR ALL ENTRIES IN GIT_BSIK

WHERE LIFNR EQ GIT_BSIK-LIFNR.

IF SY-SUBRC EQ 0.

LOOP AT GIT_BSIK INTO GWA_BSIK.

READ TABLE GIT_VENDOR INTO GWA_VENDOR

WITH KEY LIFNR = GWA_BSIK-LIFNR.

IF SY-SUBRC EQ 0.

GWA_BSIK-NAME1 = GWA_VENDOR-NAME1.

ENDIF.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR: GWA_BSIK, GWA_VENDOR.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " get_data

&----


*& Form field_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOG .

CLEAR G_POS.

G_POS = G_POS + 1.

*

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'SNO' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'4' " Output Length

'S.No' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BLART' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Document Type'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BUKRS' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'4' " Output Length

'Company code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BELNR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Document Number' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'LIFNR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Vendor code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NAME1' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'35' " Output Length

'Vendor Name' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NETDUEDT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Net Due Date'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DMBTR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Payable'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DISCOUNT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Dis. Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NETAMOUNT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Net Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DAYS' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'6' " Output Length

'Days'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

ENDFORM. " field_catalog

&----


*& Form field_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOG_POST .

CLEAR G_POS.

G_POS = G_POS + 1.

*

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'SNO' " InTab Field Name

'GIT_POST' " InTab Name

'4' " Output Length

'S.No' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BLART' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Document Type'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BUKRS' " InTab Field Name

'GIT_POST' " InTab Name

'4' " Output Length

'Company code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BELNR' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Document Number' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'LIFNR' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Vendor code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NAME1' " InTab Field Name

'GIT_POST' " InTab Name

'35' " Output Length

'Vendor Name' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NETDUEDT' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Net Due Date'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DMBTR' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Payable'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DISCOUNT' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Dis Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NETAMOUNT' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Net Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DAYS' " InTab Field Name

'GIT_POST' " InTab Name

'6' " Output Length

'Days'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

ENDFORM. " field_catalog

&----


*& Form init_field_catalog

&----


  • text

----


  • -->P_GIT_FIELDCAT text

  • -->PV_POS text

  • -->PV_FIELDNAME text

  • -->PV_TABNAME text

  • -->PV_OUTPUT text

  • -->PV_SELTEXT text

  • -->PV_DATATYPE text

  • -->PV_KEY text

  • -->PV_ROW text

  • -->PV_HOTSPOT text

  • -->PV_EMPHASIZE text

  • -->PV_SUM text

  • -->PV_CHECKBOX text

  • -->PV_INPUT text

----


FORM INIT_FIELD_CATALOG USING P_GIT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV

PV_POS LIKE GWA_FIELDCAT-COL_POS

PV_FIELDNAME LIKE GWA_FIELDCAT-FIELDNAME

PV_TABNAME LIKE GWA_FIELDCAT-TABNAME

PV_OUTPUT LIKE GWA_FIELDCAT-OUTPUTLEN

PV_SELTEXT LIKE GWA_FIELDCAT-SELTEXT_M

PV_DATATYPE LIKE GWA_FIELDCAT-DATATYPE

PV_KEY LIKE GWA_FIELDCAT-KEY

PV_ROW LIKE GWA_FIELDCAT-ROW_POS

PV_HOTSPOT LIKE GWA_FIELDCAT-HOTSPOT

PV_EMPHASIZE LIKE GWA_FIELDCAT-EMPHASIZE

PV_SUM LIKE GWA_FIELDCAT-DO_SUM

PV_CHECKBOX LIKE GWA_FIELDCAT-CHECKBOX

PV_EDIT LIKE GWA_FIELDCAT-EDIT

PV_INPUT LIKE GWA_FIELDCAT-INPUT.

DATA: LT_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

LT_FIELDCAT-OUTPUTLEN = PV_OUTPUT.

LT_FIELDCAT-COL_POS = PV_POS.

LT_FIELDCAT-FIELDNAME = PV_FIELDNAME.

LT_FIELDCAT-TABNAME = PV_TABNAME.

LT_FIELDCAT-SELTEXT_L = PV_SELTEXT.

LT_FIELDCAT-KEY = PV_KEY.

LT_FIELDCAT-ROW_POS = PV_ROW.

LT_FIELDCAT-HOTSPOT = PV_HOTSPOT.

LT_FIELDCAT-EMPHASIZE = PV_EMPHASIZE.

LT_FIELDCAT-DO_SUM = PV_SUM.

LT_FIELDCAT-CHECKBOX = PV_CHECKBOX.

LT_FIELDCAT-INPUT = PV_INPUT.

LT_FIELDCAT-EDIT = PV_EDIT.

LT_FIELDCAT-DATATYPE = PV_DATATYPE.

APPEND LT_FIELDCAT TO P_GIT_FIELDCAT.

CLEAR LT_FIELDCAT.

ENDFORM. " init_field_catalog

&----


*& Form sort_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_FIELDS .

GWA_SORT-SPOS = 1. " Sort order

GWA_SORT-FIELDNAME = 'LIFNR'.

GWA_SORT-TABNAME = 'GIT_NOTPOST'.

GWA_SORT-UP = 'X'.

  • x_sort-subtot = 'X'. " Sub total allowed

APPEND GWA_SORT TO GIT_SORT.

CLEAR GWA_SORT.

  • gwa_sort-spos = 2. " Sort order

  • gwa_sort-fieldname = 'ZBELNR'.

  • gwa_sort-tabname = 'GIT_FINAL'.

  • gwa_sort-up = 'X'.

    • x_sort-subtot = 'X'. " Sub total allowed

*

  • APPEND gwa_sort TO git_sort.

  • CLEAR gwa_sort.

ENDFORM. " sort_fields

&----


*& Form sort_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_FIELDS_POST .

GWA_SORTPOST-SPOS = 1. " Sort order

GWA_SORTPOST-FIELDNAME = 'LIFNR'.

GWA_SORTPOST-TABNAME = 'GIT_POST'.

GWA_SORTPOST-UP = 'X'.

  • x_sort-subtot = 'X'. " Sub total allowed

APPEND GWA_SORTPOST TO GIT_SORTPOST.

CLEAR GWA_SORTPOST.

  • gwa_sort-spos = 2. " Sort order

  • gwa_sort-fieldname = 'ZBELNR'.

  • gwa_sort-tabname = 'GIT_FINAL'.

  • gwa_sort-up = 'X'.

    • x_sort-subtot = 'X'. " Sub total allowed

*

  • APPEND gwa_sort TO git_sort.

  • CLEAR gwa_sort.

ENDFORM. " sort_fields

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • <--P_GiT_EVENTS text

----


FORM EVENTTAB_BUILD1 CHANGING P_GIT_EVENTS. "#EC NEEDED

CLEAR GIT_XS_EVENT.

GIT_XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

GIT_XS_EVENT-FORM = 'XTOP_OF_PAGE'.

APPEND GIT_XS_EVENT TO GIT_EVENTS. "#EC *

  • CONSTANTS:

*GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

*GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

  • DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

*

  • CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • I_LIST_TYPE = 0

  • IMPORTING

  • ET_EVENTS = GiT_EVENTS.

*

  • READ TABLE GiT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

  • INTO LS_EVENT.

  • IF SY-SUBRC = 0.

  • MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

  • APPEND LS_EVENT TO GiT_EVENTS.

  • ENDIF.

*

  • READ TABLE GiT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND

  • INTO LS_EVENT.

  • IF SY-SUBRC = 0.

  • MOVE GC_FORMNAME_USER_COMMAND TO LS_EVENT-FORM.

  • APPEND LS_EVENT TO GiT_EVENTS.

  • ENDIF.

ENDFORM. " EVENTTAB_BUILD1

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • <--P_GiT_EVENTS text

----


FORM EVENTTAB_BUILDPOST.

*not posted DOCUMENTS

CLEAR GIT_XS_EVENT.

GIT_XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

GIT_XS_EVENT-FORM = 'YTOP_OF_PAGE'.

APPEND GIT_XS_EVENT TO GIT_EVENTS1.

ENDFORM. " EVENTTAB_BUILD1

************************************************

*& TOP-OF-PAGE

************************************************

*----


    • FORM TOP_OF_PAGE *

*----


    • When TOP-OF-PAGE will be fired , this event will be called and it

    • will use the contents of i_list_top_of_page for output in the header

*----


*FORM TOP_OF_PAGE.

*

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • I_LOGO = 'ENJOYSAP_LOGO'

  • IT_LIST_COMMENTARY = GiT_LIST_TOP_OF_PAGE.

*

*ENDFORM. "top_of_page

&----


*& Form LIST_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LIST_HEADER .

CLEAR : GIT_LIST_TOP_OF_PAGE.

DATA: L_LINE TYPE SLIS_LISTHEADER.

DATA: L_DATE(10).

CLEAR L_DATE.

***Header

CLEAR L_LINE.

L_LINE-TYP = 'H'.

  • L_LINE-KEY: not used for this type

L_LINE-INFO = 'Vendor Line Item Display'.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

***Selection

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Documents'.

L_LINE-INFO = 'Not Posted'. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Company Code'.

L_LINE-INFO = P_BUKRS. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

CONCATENATE P_DDATE+6(2)

P_DDATE+4(2)

P_DDATE+0(4)

INTO L_DATE SEPARATED BY '.'.

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-LOW.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

*

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-high.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

L_LINE-KEY = 'Discount date'.

L_LINE-INFO = L_DATE.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

ENDFORM. " LIST_HEADER

&----


*& Form LIST_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LIST_HEADER1 .

CLEAR : GIT_LIST_TOP_OF_PAGE_POST.

DATA: L_LINE TYPE SLIS_LISTHEADER.

DATA: L_DATE(10).

CLEAR L_DATE.

***Header

CLEAR L_LINE.

L_LINE-TYP = 'H'.

  • L_LINE-KEY: not used for this type

L_LINE-INFO = 'Vendor Line Item Display'.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

***Selection

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Documents'.

L_LINE-INFO = 'Posted'. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Company Code'.

L_LINE-INFO = P_BUKRS. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

CONCATENATE P_DDATE+6(2)

P_DDATE+4(2)

P_DDATE+0(4)

INTO L_DATE SEPARATED BY '.'.

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-LOW.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

*

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-high.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

L_LINE-KEY = 'Discount date'.

L_LINE-INFO = L_DATE.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

ENDFORM. " LIST_HEADER

----


*& Form SET_PF_STATUS

&----


  • text

----


  • -->EXTAB text

----


FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB. "#EC NEEDED

SET PF-STATUS 'ZSTANDARD1'. " OF PROGRAM 'SAPLKKBL'.

ENDFORM. "set_pf_status

&----


*& Form Display_grid

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_LIST .

G_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' "'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • IT_EXCLUDING =

.

*DOCUMENTS WHICH ARE POSTED ALREADY.

IF GIT_POST IS NOT INITIAL.

SORT GIT_POST ASCENDING BY NETDUEDT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = GFL_LAYOUT

IT_FIELDCAT = GIT_FIELDCATPOST " POST

I_TABNAME = 'GIT_POST'

IT_EVENTS = GIT_EVENTS[]

IT_SORT = GIT_SORT[]

  • I_TEXT = ' '

  • IS_VARIANT = GFL_VAR

TABLES

T_OUTTAB = GIT_POST

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 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.

ENDIF.

*DOCUMENTS WHICH ARE NOT YET POSTED

IF GIT_NOTPOST IS NOT INITIAL.

SORT GIT_NOTPOST ASCENDING BY NETDUEDT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = GFL_LAYOUT

IT_FIELDCAT = GIT_FIELDCAT

I_TABNAME = 'GIT_NOTPOST' " NOT POSTED

IT_EVENTS = GIT_EVENTS1[]

IT_SORT = GIT_SORT[]

  • I_TEXT = ' '

  • IS_VARIANT = GFL_VAR

TABLES

T_OUTTAB = GIT_NOTPOST

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 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.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

  • CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  • EXPORTING

  • I_CALLBACK_PROGRAM = G_REPID

  • I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

  • IS_LAYOUT = GS_LAYOUT

  • IT_FIELDCAT = GiT_FIELDCAT

  • IT_SORT = git_sort[]

  • IS_VARIANT = GFL_VAR

  • IT_EVENTS = GiT_EVENTS[]

  • TABLES

  • T_OUTTAB = GIT_BSIKM

  • 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. " Display_grid

&----


*& Form USER_COMMAND

&----


  • Called from within the ALV processes. Currently, 'F-02' is used

  • to process the hotspot and display the document 'picked' by the

  • user.

&----


  • PV_UCOMM contains the sy-ucomm from ALV

  • SELFIELD is a structure that contains all the data required to

  • process a user selection. The following is an example

  • of the SELFIELD structure and sample values:

*

*

&----


  • when the user click on Asset Class this will trigger

FORM USER_COMMAND USING PV_UCOMM LIKE SY-UCOMM "#EC NEEDED

SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED

CASE PV_UCOMM.

WHEN 'F-02'.

  • BREAK WAB03.

*VALIDATE THE DOCUMENTS THAT WHETHER THEY ARE POSTED OR NOT.

PERFORM VALIDATE_DOCUMENT.

  • LOOP AT GIT_BSIKM INTO GWA_BSIKM.

READ TABLE GIT_NOTPOST INTO GWA_NOTPOST

WITH KEY BUKRS = P_BUKRS. " INDEX SELFIELD-TABINDEX.

IF SY-SUBRC EQ 0.

  • CASE SELFIELD-SEL_TAB_FIELD.

  • WHEN 'GIT_BSIKM-BUKRS'.

  • LOOP AT GIT_BSIKM INTO GWA_BSIKM.

  • MOVE-CORRESPONDING GWA_BSIKM TO GWA_BSIKT.

  • COLLECT GWA_BSIKT INTO GIT_BSIKT.

  • CLEAR: GWA_BSIKT, GWA_BSIKM.

  • ENDLOOP.

*SENDING THE DOCUMENTS WHICH ARE NOT YET POSTED TO THE

*PROGRAMM ZFII_UPLOADF_02 FOR FURTHER UPLOAD.

EXPORT GIT_NOTPOST[] TO MEMORY ID 'CP_TABLE'.

*SENDING THE DATE TO THE PROGRAMM ZFII_UPLOADF_02

*FOR FURTHER UPLOAD.

EXPORT GIT_DATE[] TO MEMORY ID 'CP_DATE'.

*TO EXPORT THE PERCENTAGE TO THE PROGRAM WHICH UPDATE THIS VALUE.

EXPORT P_DRATE TO MEMORY ID 'CP_DRATE'.

*CALL THE PROGRAME ZFII_UPLOADF_02 FOR FURTHER UPLOAD.

SUBMIT ZFII_UPLOADF_02 VIA SELECTION-SCREEN AND RETURN.

*& we have to filter the vendor list

*& here we can run F-02 for only one vendor

  • PERFORM F-02.

ENDIF.

WHEN 'PRIN'.

  • ENDLOOP.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form CALCULATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CALCULATION .

DATA: L_DAYS LIKE T009B-BUTAG.

DATA: L_DMBTR(15) TYPE C.

DATA: L_CHECK TYPE C.

CLEAR: L_DAYS, L_CHECK, L_DMBTR.

*FINDING OUT THE NET DUE DATE.

LOOP AT GIT_BSIK INTO GWA_BSIK.

CALL FUNCTION 'NET_DUE_DATE_GET'

EXPORTING

I_ZFBDT = GWA_BSIK-ZFBDT

I_ZBD1T = GWA_BSIK-ZBD1T

I_ZBD2T = GWA_BSIK-ZBD2T

I_ZBD3T = GWA_BSIK-ZBD2T

I_SHKZG = GWA_BSIK-SHKZG

I_REBZG = GWA_BSIK-REBZG

I_KOART = 'K'

IMPORTING

E_FAEDT = GWA_BSIK-NETDUEDT.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR : GWA_BSIK.

ENDLOOP.

  • LOOP AT GIT_BSIK INTO GWA_BSIK.

*

  • IF GWA_BSIK-NETDUEDT LE P_DDATE.

  • DELETE GIT_BSIK INDEX SY-TABIX.

  • ENDIF.

  • CLEAR GWA_BSIK.

  • ENDLOOP.

*delete the records where the net due date

  • is greater than the discount date which is considered

IF P_DUEDT IS NOT INITIAL.

LOOP AT GIT_BSIK INTO GWA_BSIK.

IF GWA_BSIK-NETDUEDT > P_DUEDT.

DELETE GIT_BSIK INDEX SY-TABIX.

ENDIF.

CLEAR GWA_BSIK.

ENDLOOP.

ENDIF.

IF GIT_BSIK IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-004.

ENDIF.

*to calculate the discount amount.

LOOP AT GIT_BSIK INTO GWA_BSIK.

IF GWA_BSIK-NETDUEDT > P_DDATE.

  • IF P_DUEDT IS INITIAL.

  • P_DUEDT = GWA_BSIK-NETDUEDT.

  • ENDIF.

  • IF GWA_BSIK-NETDUEDT GE P_DUEDT.

WRITE GWA_BSIK-DMBTR TO L_DMBTR. "#EC UOM_IN_MES

*calculating the difference between the dates

CALL FUNCTION 'HR_HK_DIFF_BT_2_DATES'

EXPORTING

DATE1 = GWA_BSIK-NETDUEDT

DATE2 = P_DDATE

OUTPUT_FORMAT = '02'

IMPORTING

  • YEARS =

  • MONTHS =

DAYS = GWA_BSIK-DAYS

EXCEPTIONS

INVALID_DATES_SPECIFIED = 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.

GWA_BSIK-DAYS = GWA_BSIK-DAYS - 1.

*checking for leap year or not

CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET'

EXPORTING

PAR_MONTH = '02'

PAR_YEAR = P_DDATE+0(4)

IMPORTING

PAR_DAYS = L_DAYS.

IF L_DAYS = '29'.

L_CHECK = 'X'.

ELSE.

L_CHECK = ' '.

ENDIF.

IF L_DMBTR CA '-'.

ELSE.

IF L_CHECK = 'X'.

GWA_BSIK-DISCOUNT = ( GWA_BSIK-DMBTR *

GWA_BSIK-DAYS * P_DRATE )

/ 36600.

ELSE.

GWA_BSIK-DISCOUNT = ( GWA_BSIK-DMBTR *

GWA_BSIK-DAYS * P_DRATE )

/ 36500.

ENDIF.

ENDIF.

  • ENDIF.

ENDIF.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR: GWA_BSIK.

ENDLOOP.

ENDFORM. " CALCULATION

&----


*& Form VARIANTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANTS .

PERFORM F_LAYOUT_INIT USING GFL_LAYOUT.

  • DATA : GFL_VARIANT LIKE DISVARIANT.

  • DATA : GFL_VAR LIKE DISVARIANT.

  • DATA : GFL_ALV_VAR LIKE DISVARIANT.

GFL_VAR-REPORT = 'ZFII_RFITEMAPLIST'.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = 'A'

CHANGING

CS_VARIANT = GFL_VAR

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4.

IF SY-SUBRC EQ 0.

GFL_VAR-VARIANT = '/SAPSUBTOT'.

GFL_ALV_VAR-REPORT = SY-REPID.

ELSE.

GFL_VAR-VARIANT = '' ."'/ZNETDUEDATE'.

ENDIF.

ENDFORM. " VARIANTS

&----


*& Form F_LAYOUT_INIT

&----


  • text

----


  • -->P_GS_LAYOUT text

----


FORM F_LAYOUT_INIT USING P_GS_LAYOUT TYPE SLIS_LAYOUT_ALV.

P_GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'.

  • P_GS_LAYOUT-no_sumchoice = ' '.

P_GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

ENDFORM. " F_LAYOUT_INIT

&----


*& Form SUB_TOTAL_DATE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_TOTAL_DATE .

*CLEARING AND REFRESHING THE INTERNAL TABLES USED

REFRESH: GIT_BSIKF, GIT_BSIKM.

CLEAR: GWA_BSIKF, GWA_BSIKM.

*SUMMING OF THE AMOUNT FIELD

LOOP AT GIT_BSIK INTO GWA_BSIK.

MOVE-CORRESPONDING GWA_BSIK TO GWA_BSIKF.

COLLECT GWA_BSIKF INTO GIT_BSIKF.

CLEAR: GWA_BSIK, GWA_BSIKF.

ENDLOOP.

*FETCHING THE NUMBER OF DAYS

LOOP AT GIT_BSIKF INTO GWA_BSIKF.

READ TABLE GIT_BSIK INTO GWA_BSIK

WITH KEY BUKRS = GWA_BSIKF-BUKRS

LIFNR = GWA_BSIKF-LIFNR

ZFBDT = GWA_BSIKF-ZFBDT

BLART = GWA_BSIKF-BLART

NETDUEDT = GWA_BSIKF-NETDUEDT.

IF SY-SUBRC EQ 0.

GWA_BSIKM-DAYS = GWA_BSIK-DAYS.

  • GWA_BSIKM-BLART = GWA_BSIK-BLART.

MOVE-CORRESPONDING GWA_BSIKF TO GWA_BSIKM.

APPEND GWA_BSIKM TO GIT_BSIKM.

CLEAR: GWA_BSIK, GWA_BSIKF, GWA_BSIKM.

ENDIF.

ENDLOOP.

  • CALCULATING THE NET AMOUNT

SORT GIT_BSIKM ASCENDING BY NETDUEDT.

LOOP AT GIT_BSIKM INTO GWA_BSIKM.

GWA_BSIKM-NETAMOUNT = GWA_BSIKM-DMBTR -

GWA_BSIKM-DISCOUNT.

MODIFY GIT_BSIKM FROM GWA_BSIKM.

CLEAR GWA_BSIKM.

ENDLOOP.

ENDFORM. " SUB_TOTAL_DATE

&----


*& Form validate_date

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_DATE .

IF P_DDATE IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-006.

ENDIF.

ENDFORM. " validate_date

&----


*& Form VALIDATE_DOCUMENT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_DOCUMENT .

*VALIDATING WHETHER RECORD IS THERE OR NOT

IF GIT_NOTPOST IS NOT INITIAL.

  • IF THE DOCUMENT NUMBERS WHICH ARE THERE IN

*GIT_BSIK IS ALSO PRESENT IN ZFII_PDITEM

*THEN IT MEAN POSTING IS ALREADY DONE.

SELECT

LIFNR

BELNR

BELNRSUB

GJAHR

BUKRS

BLART

FROM ZFII_PDITEM

INTO TABLE GIT_CHECK1

FOR ALL ENTRIES IN GIT_NOTPOST

WHERE BUKRS = GIT_NOTPOST-BUKRS

AND BELNRSUB = GIT_NOTPOST-BELNR

AND LIFNR IN S_LIFNR

AND BLART = GIT_NOTPOST-BLART

AND GJAHR = GIT_NOTPOST-GJAHR.

IF SY-SUBRC EQ 0.

*IF WE FIND THE DOCUMENTS IT MEAN THEY ARE ALREADY POSTED.

MESSAGE E000(ZFI) WITH TEXT-000.

EXIT.

ENDIF.

ELSE.

MESSAGE E000(ZFI) WITH TEXT-000.

ENDIF.

ENDFORM. " VALIDATE_DOCUMENT

&----


*& Form POSTED_NOTPOSTED

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POSTED_NOTPOSTED .

*CLEARING AND REFRESHING OF THE INTERNAL TABLES.

CLEAR: GWA_POST, GWA_NOTPOST.

REFRESH: GIT_POST, GIT_NOTPOST.

IF GIT_BSIKM IS NOT INITIAL.

*COLLECTING THE RECORDS WHICH RECORDS ARE

*POSTED AND WHICH ARE NOT POSTED.

SELECT

LIFNR

BELNR

BELNRSUB

GJAHR

BUKRS

BLART

FROM ZFII_PDITEM " ITEM LEVEL TABLE

INTO TABLE GIT_CHECK1 " ITEM LEVEL TABLE

FOR ALL ENTRIES IN GIT_BSIKM

WHERE BUKRS = GIT_BSIKM-BUKRS

AND BELNRSUB = GIT_BSIKM-BELNR

AND LIFNR IN S_LIFNR

AND BLART = GIT_BSIKM-BLART

AND GJAHR = GIT_BSIKM-GJAHR.

IF SY-SUBRC EQ 0.

*LOOP AT TABLE WHICH GOT RECORDS FROM BSIK.

LOOP AT GIT_BSIKM INTO GWA_BSIKM.

*READ THE RECORDS WHICH ARE FROM ITEM LEVEL TABLE.

READ TABLE GIT_CHECK1 INTO GWA_CHECK1

WITH KEY BELNRSUB = GWA_BSIKM-BELNR.

IF SY-SUBRC EQ 0.

"RECORD FOUND MEANS IT IS POSTED ALREADY

APPEND GWA_BSIKM TO GIT_POST.

ELSE.

"RECORD NOT FOUND MEANS IT IS NOT POSTED

APPEND GWA_BSIKM TO GIT_NOTPOST.

ENDIF.

CLEAR: GWA_BSIKM, GWA_CHECK1.

ENDLOOP.

ELSE.

*IF WE FIND NO DOCUMENTS THEN THESE DOCUMENTS ARE NOT POSTED.

GIT_NOTPOST[] = GIT_BSIKM[].

ENDIF.

ENDIF.

LOOP AT GIT_POST INTO GWA_POST.

GWA_POST-SNO = G_SNO.

G_SNO = G_SNO + 1.

MODIFY GIT_POST FROM GWA_POST.

CLEAR: GWA_POST.

ENDLOOP.

G_SNO = 1.

LOOP AT GIT_NOTPOST INTO GWA_NOTPOST.

GWA_NOTPOST-SNO = G_SNO.

G_SNO = G_SNO + 1.

MODIFY GIT_NOTPOST FROM GWA_NOTPOST.

CLEAR: GWA_NOTPOST.

ENDLOOP.

ENDFORM. " POSTED_NOTPOSTED

----


  • FORM TOP_OF_PAGE *

----


  • When TOP-OF-PAGE will be fired , this event will be called and it

  • will use the contents of i_list_top_of_page for output in the header

----


FORM XTOP_OF_PAGE. "#EC CALLED

  • WRITE: / 'Posted Documents'.

*

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

  • i_logo = 'ENJOYSAP_LOGO'

IT_LIST_COMMENTARY = GIT_LIST_TOP_OF_PAGE_POST .

ENDFORM. "top_of_page

----


  • FORM TOP_OF_PAGE *

----


  • When TOP-OF-PAGE will be fired , this event will be called and it

  • will use the contents of i_list_top_of_page for output in the header

----


FORM YTOP_OF_PAGE. "#EC CALLED

  • WRITE: / 'NOT Posted Documents'.

*

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

  • i_logo = 'ENJOYSAP_LOGO'

IT_LIST_COMMENTARY = GIT_LIST_TOP_OF_PAGE.

ENDFORM. "top_of_page

&----


*& Form CHECK_REVERSAL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_REVERSAL .

*CLEAR AND REFRESH THE INTERNAL TABLES.

CLEAR: GWA_REVERSE, GWA_HEAD.

REFRESH: GIT_REVERSE, GIT_HEAD.

*FIRST SELECT ALL THE RECORDS IN THE TABLE

*ZFII_PDHEAD FOR WHICH POSTING WAS DONE

SELECT *

FROM ZFII_PDHEAD

INTO TABLE GIT_HEAD.

*NOW COLLECT THE RECORDS

IF NOT GIT_HEAD IS INITIAL.

CLEAR GWA_REVERSE.

REFRESH GIT_REVERSE.

*SELECT THE RECORDS FROM BKPF WHICH ARE ALL REVERSED.

SELECT

BELNR

STBLG

GJAHR

FROM BKPF

INTO TABLE GIT_REVERSE

FOR ALL ENTRIES IN GIT_HEAD

WHERE BELNR = GIT_HEAD-BELNR

AND STBLG <> SPACE

AND GJAHR = GIT_HEAD-GJAHR.

*COLLECT THE RECORDS FROM ZFII_PDITEM

*IN ORDER TO DELETE THE DOCUMENTS FROM THIS TABLE

*IF THE CORRESPONDING POSTING DOCUMENT IS REVERSED.

IF GIT_REVERSE IS NOT INITIAL.

CLEAR GWA_ITEM.

REFRESH GIT_ITEM.

SELECT * FROM

ZFII_PDITEM

INTO TABLE GIT_ITEM

FOR ALL ENTRIES IN GIT_REVERSE

WHERE BELNR = GIT_REVERSE-BELNR.

*DELETING THE DOCUMENTS WHICH ARE REVERSED.

IF SY-SUBRC EQ 0.

LOOP AT GIT_ITEM INTO GWA_ITEM.

*DELETING THE ITEM LEVEL TABLE FOR THOSE

*DOCUMENTS WHICH ARE REVERSED.

  • ZFII_PDITEM = GWA_ITEM.

DELETE ZFII_PDITEM FROM GWA_ITEM.

  • BELNRSUB = GWA_ITEM-BELNRSUB. " FROM GWA_ITEM.

CLEAR GWA_ITEM.

ENDLOOP.

COMMIT WORK.

*LOOP THE DOCUMENTS WHICH ARE REVERSED TO UPDATE

*THE TABLE ZFII_PDHEAD WITH THE REVERSAL DOCUMENT NUMBER.

LOOP AT GIT_REVERSE INTO GWA_REVERSE.

READ TABLE GIT_HEAD INTO GWA_HEAD

WITH KEY BELNR = GWA_REVERSE-BELNR.

IF SY-SUBRC EQ 0.

GWA_HEAD-RVRSDOC = GWA_REVERSE-STBLG.

ZFII_PDHEAD = GWA_HEAD.

UPDATE ZFII_PDHEAD. " FROM GWA_HEAD.

CLEAR GWA_HEAD.

ENDIF.

ENDLOOP.

COMMIT WORK.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " CHECK_REVERSAL

5 REPLIES 5

Former Member
0 Kudos

HI,

try this code

this is having two heading for two lists

***&----


*& Report ZFII_RFITEMAPLIST

*&

&----


*&

*&

&----


----


  • Data Extract from Tables LFA1, T001, BSIK.

----


  • Program Name :ZFII_RFITEMAPLIST

  • Object ID :EDD031

  • Functional Analyst :KRISHNA

  • Programmer :venkatesh

  • Start date :19/03/2007

  • Initial CTS :HFDK900660

  • Description :Prepayment Discount ( discount taken

  • while payment before runing APP )

*

----


  • Includes :

*

  • Function Modules : *

*

  • Logical database :

  • Transaction Code : N/A

  • External references :

----


  • Modification Log

----


  • Date | Modified by | CTS number | Comments

----


*19/03/2007 | venkatesh |HFDK900660 | Initial version

----


REPORT ZFII_RFITEMAPLIST NO STANDARD PAGE HEADING.

*Declaration of the tables and type pools which

*are required in the programme.

TYPE-POOLS: SLIS.

TABLES: LFA1,

T001,

BSIK,

ZFII_PDITEM,

ZFII_PDHEAD.

*Design of the selection screen starts.

SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

*SELECTION-SCREEN BEGIN OF LINE.

**Asset wise.

*SELECTION-SCREEN COMMENT 1(20) TEXT-T01 FOR FIELD R_POST.

*PARAMETERS: R_POST RADIOBUTTON GROUP G1.

*

*SELECTION-SCREEN END OF LINE.

PARAMETERS:

P_BUKRS LIKE T001-BUKRS

OBLIGATORY DEFAULT 'H901'. "*COMPANY CODE.

SELECT-OPTIONS:

S_LIFNR FOR LFA1-LIFNR

OBLIGATORY NO INTERVALS NO-EXTENSION, "*VENDOR

S_BLART FOR BSIK-BLART. " *DOCUMENT TYPE

PARAMETERS:

P_DRATE(2) TYPE N OBLIGATORY DEFAULT '11', " DISCOUNT PERCENTAGE

P_DDATE LIKE SY-DATUM DEFAULT SY-DATUM , " DISCOUNT DATE

P_DUEDT LIKE SY-DATUM. " consider discount date upto

SELECTION-SCREEN END OF BLOCK B01.

*Design of the selection screen ends.

*declaring the internal table which are necessary

*through out the report.

*TABLE TO CAPTURE THE VENDOR NAMES.

TYPES: BEGIN OF T_VENDOR,

LIFNR TYPE LFA1-LIFNR,

NAME1 TYPE LFA1-NAME1,

END OF T_VENDOR.

TYPES: T_IT_VENDOR TYPE STANDARD TABLE OF T_VENDOR.

DATA: GWA_VENDOR TYPE T_VENDOR.

DATA: GIT_VENDOR TYPE T_IT_VENDOR.

*TABLE FOR INITIAL COLLECTION OF DATA FROM BSIK TABLE

TYPES:BEGIN OF T_BSIK,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

ZBD1T TYPE BSIK-ZBD1T,

ZBD2T TYPE BSIK-ZBD2T,

ZBD3T TYPE BSIK-ZBD3T,

SHKZG TYPE BSIK-SHKZG,

REBZG TYPE BSIK-REBZG,

DMBTR TYPE BSIK-DMBTR,

DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-DMBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NAME1 TYPE LFA1-NAME1,

SNO TYPE I,

NETAMOUNT TYPE BSIK-DMBTR,

  • CHCK(1) TYPE C,

END OF T_BSIK.

TYPES: T_IT_BSIK TYPE STANDARD TABLE OF T_BSIK.

DATA: GWA_BSIK TYPE T_BSIK.

DATA: GIT_BSIK TYPE T_IT_BSIK.

*TABLE FOR COLLECTING THE TOTAL AMOUNT.

TYPES:BEGIN OF T_BSIKF,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

NAME1 TYPE LFA1-NAME1,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

DMBTR TYPE BSIK-DMBTR,

  • DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-DMBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NETAMOUNT TYPE BSIK-DMBTR,

SNO TYPE I,

  • CHCK(1) TYPE C,

END OF T_BSIKF.

TYPES: T_IT_BSIKF TYPE STANDARD TABLE OF T_BSIKF.

DATA: GWA_BSIKF TYPE T_BSIKF.

DATA: GIT_BSIKF TYPE T_IT_BSIKF.

*TABLE FOR COLLECTING THE DISCOUNT AMOUNT AND DATE

TYPES:BEGIN OF T_BSIKM,

MANDT TYPE BSIK-MANDT,

BUKRS TYPE BSIK-BUKRS,

LIFNR TYPE BSIK-LIFNR,

NAME1 TYPE LFA1-NAME1,

BELNR TYPE BSIK-BELNR,

BLART TYPE BSIK-BLART,

GJAHR TYPE BSIK-GJAHR,

ZFBDT TYPE BSIK-ZFBDT,

DMBTR TYPE BSIK-DMBTR,

DAYS TYPE P0347-SCRDD,

DISCOUNT TYPE BSIK-WRBTR,

NETDUEDT TYPE BSIK-ZFBDT,

NETAMOUNT TYPE BSIK-DMBTR,

SNO TYPE I ,

  • CHCK(1) TYPE C,

END OF T_BSIKM.

TYPES: T_IT_BSIKM TYPE STANDARD TABLE OF T_BSIKM.

DATA: GWA_BSIKM TYPE T_BSIKM.

DATA: GIT_BSIKM TYPE T_IT_BSIKM.

*TABLE FOR POSTED DOCUMENTS

DATA: GWA_POST TYPE T_BSIKM.

DATA: GIT_POST TYPE T_IT_BSIKM.

*TABLE FOR NOT POSTED DOCUMENTS

DATA: GWA_NOTPOST TYPE T_BSIKM.

DATA: GIT_NOTPOST TYPE T_IT_BSIKM.

*table for check whethere the entered documents

  • for which discount has calculated are already

*posted or not.

TYPES: BEGIN OF T_CHECK1,

LIFNR TYPE ZFII_PDITEM-LIFNR,

BELNR TYPE ZFII_PDITEM-BELNR,

BELNRSUB TYPE ZFII_PDITEM-BELNRSUB,

GJAHR TYPE ZFII_PDITEM-GJAHR,

BUKRS TYPE ZFII_PDITEM-BUKRS,

BLART TYPE ZFII_PDITEM-BLART,

END OF T_CHECK1.

TYPES: T_IT_CHECK1 TYPE STANDARD TABLE OF T_CHECK1.

DATA: GWA_CHECK1 TYPE T_CHECK1.

DATA: GIT_CHECK1 TYPE T_IT_CHECK1.

*TABLE TO COLLECT THE DOCUMENTS WHICH ARE POSTED.

*IN THE TABLE ZFII_PDHEAD.

TYPES: BEGIN OF T_HEAD.

INCLUDE STRUCTURE ZFII_PDHEAD.

TYPES: END OF T_HEAD.

TYPES: T_IT_HEAD TYPE STANDARD TABLE OF T_HEAD.

DATA: GWA_HEAD TYPE T_HEAD.

DATA: GIT_HEAD TYPE T_IT_HEAD.

TYPES: BEGIN OF T_ITEM.

INCLUDE STRUCTURE ZFII_PDITEM.

TYPES: END OF T_ITEM.

TYPES: T_IT_ITEM TYPE STANDARD TABLE OF T_ITEM.

DATA: GWA_ITEM TYPE T_ITEM.

DATA: GIT_ITEM TYPE T_IT_ITEM.

*TABLE FOR CAPTURING THE REVERSAL DOCUMENTS.

TYPES:BEGIN OF T_REVERSE,

BELNR TYPE BKPF-BELNR,

STBLG TYPE BKPF-STBLG,

GJAHR TYPE BKPF-GJAHR,

END OF T_REVERSE.

TYPES: T_IT_REVERSE TYPE STANDARD TABLE OF T_REVERSE.

DATA: GWA_REVERSE TYPE T_REVERSE.

DATA: GIT_REVERSE TYPE T_IT_REVERSE.

*TYPES:BEGIN OF T_ZFII_PDITEM.

  • INCLUDE STRUCTURE ZFII_PDITEM.

*TYPES: END OF T_ZFII_PDITEM.

*

*types: t_it_ZFII_PDITEM type standard table of T_ZFII_PDITEM.

*DATA: GWA_ZFII_PDITEM TYPE T_ZFII_PDITEM.

*DATA: GIT_ZFII_PDITEM TYPE t_iT_ZFII_PDITEM.

*TABLE FOR COLLECTING THE ENTERED DATE

*AND WE WILL PASS IT TO ANOTHER TABLE

TYPES:BEGIN OF T_DATE,

DATE TYPE BSIK-ZFBDT,

END OF T_DATE.

TYPES: T_IT_DATE TYPE STANDARD TABLE OF T_DATE.

DATA: GWA_DATE TYPE T_DATE.

DATA: GIT_DATE TYPE T_IT_DATE.

*VARIABLE TO CAPTURE THE DISCOUNT AMOUNT.

*DATA: DISCOUNT LIKE BSIK-DMBTR.

*declaring the variable which will be necessary

  • through out the report.

DATA : G_BUKRS LIKE T001-BUKRS.

DATA: G_REPID LIKE SY-REPID,

GWA_SORT TYPE SLIS_SORTINFO_ALV,

GIT_SORT TYPE SLIS_T_SORTINFO_ALV,

GWA_SORTPOST TYPE SLIS_SORTINFO_ALV, " POSTED

GIT_SORTPOST TYPE SLIS_T_SORTINFO_ALV,

GIT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER, " NOT POSTED

GIT_LIST_TOP_OF_PAGE_POST TYPE SLIS_T_LISTHEADER, " POSTED

GIT_EVENTS TYPE SLIS_T_EVENT, " NOT POSTED

GIT_EVENTS1 TYPE SLIS_T_EVENT, " POSTED

GFL_LAYOUT TYPE SLIS_LAYOUT_ALV,

GIT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV , " NOT POSTED

GIT_FIELDCATPOST TYPE SLIS_T_FIELDCAT_ALV , " POSTED

GWA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

GIT_XS_EVENT TYPE SLIS_ALV_EVENT.

  • FIELDCAT_LN LIKE LINE OF GiT_FIELDCAT

.

  • g_linno TYPE c.

*DATA : GFL_VARIANT LIKE DISVARIANT.

DATA : GFL_VAR LIKE DISVARIANT.

DATA: G_SNO TYPE I VALUE 1.

DATA : GFL_ALV_VAR LIKE DISVARIANT.

*DATA : G_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

DATA : G_POS TYPE I VALUE 1.

GFL_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

*Initialization event starts.

INITIALIZATION.

*CLEARING AND REFRESHING THE TABLES.

PERFORM INITIALIZATION.

*COLLECTING THE VARIANTS

PERFORM VARIANTS.

*Initialization event ends.

  • At selection screen event starts.

AT SELECTION-SCREEN.

*CHECK WHETHER DATE IS ENTERED OR NOT.

PERFORM VALIDATE_DATE.

*VALIDATING THE COMPANY CODE.

PERFORM COMPANY_CODE.

*VALIDATING THE VENDOR CODE

PERFORM VENDOR_VALIDATE.

*SELECTING THE DATA.

PERFORM GET_DATA.

*CHECK FOR THE REVERSAL DOCUMENTS IF ANY.

PERFORM CHECK_REVERSAL.

*CALCULATING THE DISCOUNT AMOUNT.

PERFORM CALCULATION.

*CALCULATING THE TOTAL AMOUNT WITH RESPECT TO DATE

PERFORM SUB_TOTAL_DATE.

*APPENDING THE DATE ENTERED INTO AN INTERNAL TABLE

*AND THIS INTERNAL TABLE WILL BE SEND TO ANOTHER PROGRAME

GWA_DATE-DATE = P_DDATE.

APPEND GWA_DATE TO GIT_DATE.

CLEAR GWA_DATE.

*CHECKING WHETHER THE INTERNAL TABLE IS BLANK OR NOT

CHECK GIT_BSIKM IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-004.

  • At selection screen event ends.

*start-of-selection event starts.

START-OF-SELECTION.

CLEAR : P_DUEDT.

*DIVIDES THE FINAL INTERNAL TABLE INTO

*POSTED AND NOT POSTED DOCUMENTS.

CLEAR: GWA_POST, GWA_NOTPOST.

REFRESH: GIT_POST, GIT_NOTPOST.

PERFORM POSTED_NOTPOSTED.

*FILLING THE FIELD CATALOG

PERFORM FIELD_CATALOG.

PERFORM FIELD_CATALOG_POST.

*SORTING THE FIELDS.

PERFORM SORT_FIELDS.

PERFORM SORT_FIELDS_POST.

*GETTING THE EVENTS OF ALV

PERFORM EVENTTAB_BUILD1 CHANGING GIT_EVENTS.

PERFORM EVENTTAB_BUILDPOST.

*FILLING OF THE HEADER PART.

PERFORM LIST_HEADER.

PERFORM LIST_HEADER1.

SORT GIT_POST ASCENDING BY NETDUEDT.

SORT GIT_NOTPOST ASCENDING BY NETDUEDT.

PERFORM DISPLAY_LIST.

*start-of-selection event ends.

&----


*& Form company_code

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM COMPANY_CODE .

SELECT SINGLE BUKRS

FROM T001

INTO (G_BUKRS)

WHERE BUKRS EQ P_BUKRS.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-002.

ENDIF.

CLEAR G_BUKRS.

ENDFORM. " company_code

&----


*& Form initialization

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM INITIALIZATION .

CLEAR: GIT_BSIK, G_BUKRS.

REFRESH: GIT_BSIK, GIT_BSIKF, GIT_BSIKM.

CLEAR:

G_BUKRS,

G_REPID,

GWA_SORT,

GIT_SORT,

GIT_LIST_TOP_OF_PAGE ,

GIT_EVENTS ,

GFL_LAYOUT,

GIT_FIELDCAT ,

GWA_FIELDCAT,

  • FIELDCAT_LN ,

  • G_LIST_TOP_OF_PAGE ,

G_POS,

GFL_ALV_VAR, G_BUKRS.

REFRESH:

GIT_SORT,

GIT_LIST_TOP_OF_PAGE ,

GIT_EVENTS ,

GIT_FIELDCAT .

  • G_LIST_TOP_OF_PAGE .

ENDFORM. " initialization

&----


*& Form vendor_validate

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VENDOR_VALIDATE .

SELECT LIFNR

FROM LFA1

INTO CORRESPONDING FIELDS OF TABLE GIT_BSIK

WHERE LIFNR IN S_LIFNR.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-003.

ENDIF.

CLEAR GWA_BSIK.

REFRESH: GIT_BSIK.

ENDFORM. " vendor_validate

&----


*& Form get_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA .

CLEAR: GIT_BSIK, GWA_BSIK.

REFRESH GIT_BSIK.

SELECT

MANDT

BUKRS

LIFNR

BELNR

BLART

GJAHR

ZFBDT

ZBD1T

ZBD2T

ZBD3T

SHKZG

REBZG

DMBTR

FROM BSIK

INTO TABLE GIT_BSIK

WHERE BUKRS EQ P_BUKRS

AND LIFNR IN S_LIFNR

AND BLART IN S_BLART

AND BLART NE 'GC'

AND ZLSPR = ' '.

IF SY-SUBRC NE 0.

MESSAGE E000(ZFI) WITH TEXT-004.

ENDIF.

SORT GIT_BSIK ASCENDING BY LIFNR ZFBDT BLART.

*GETTING THE VENDOR NAME.

IF GIT_BSIK IS NOT INITIAL.

SELECT

LIFNR

NAME1

FROM LFA1

INTO TABLE GIT_VENDOR

FOR ALL ENTRIES IN GIT_BSIK

WHERE LIFNR EQ GIT_BSIK-LIFNR.

IF SY-SUBRC EQ 0.

LOOP AT GIT_BSIK INTO GWA_BSIK.

READ TABLE GIT_VENDOR INTO GWA_VENDOR

WITH KEY LIFNR = GWA_BSIK-LIFNR.

IF SY-SUBRC EQ 0.

GWA_BSIK-NAME1 = GWA_VENDOR-NAME1.

ENDIF.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR: GWA_BSIK, GWA_VENDOR.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " get_data

&----


*& Form field_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOG .

CLEAR G_POS.

G_POS = G_POS + 1.

*

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'SNO' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'4' " Output Length

'S.No' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BLART' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Document Type'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BUKRS' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'4' " Output Length

'Company code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'BELNR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Document Number' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'LIFNR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Vendor code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NAME1' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'35' " Output Length

'Vendor Name' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NETDUEDT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'10' " Output Length

'Net Due Date'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DMBTR' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Payable'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DISCOUNT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Dis. Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'NETAMOUNT' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'20' " Output Length

'Net Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog

G_POS " Column Position

'DAYS' " InTab Field Name

'GIT_NOTPOST' " InTab Name

'6' " Output Length

'Days'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

ENDFORM. " field_catalog

&----


*& Form field_catalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOG_POST .

CLEAR G_POS.

G_POS = G_POS + 1.

*

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'SNO' " InTab Field Name

'GIT_POST' " InTab Name

'4' " Output Length

'S.No' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BLART' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Document Type'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BUKRS' " InTab Field Name

'GIT_POST' " InTab Name

'4' " Output Length

'Company code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'BELNR' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Document Number' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'LIFNR' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Vendor code' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NAME1' " InTab Field Name

'GIT_POST' " InTab Name

'35' " Output Length

'Vendor Name' " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NETDUEDT' " InTab Field Name

'GIT_POST' " InTab Name

'10' " Output Length

'Net Due Date'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DMBTR' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Payable'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DISCOUNT' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Dis Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'NETAMOUNT' " InTab Field Name

'GIT_POST' " InTab Name

'20' " Output Length

'Net Amount'

  • " Column Name Text

'CURR' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

'X' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

G_POS = G_POS + 1.

PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCATPOST[] " Field Catalog

G_POS " Column Position

'DAYS' " InTab Field Name

'GIT_POST' " InTab Name

'6' " Output Length

'Days'

  • " Column Name Text

' ' " Datatype

' ' " Key?

' ' " Row Position

' ' " Hotspot

' ' " Emphasize

' ' " Do_sum field?

' ' " checkbox

' ' " EDIT

' '. " input

ENDFORM. " field_catalog

&----


*& Form init_field_catalog

&----


  • text

----


  • -->P_GIT_FIELDCAT text

  • -->PV_POS text

  • -->PV_FIELDNAME text

  • -->PV_TABNAME text

  • -->PV_OUTPUT text

  • -->PV_SELTEXT text

  • -->PV_DATATYPE text

  • -->PV_KEY text

  • -->PV_ROW text

  • -->PV_HOTSPOT text

  • -->PV_EMPHASIZE text

  • -->PV_SUM text

  • -->PV_CHECKBOX text

  • -->PV_INPUT text

----


FORM INIT_FIELD_CATALOG USING P_GIT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV

PV_POS LIKE GWA_FIELDCAT-COL_POS

PV_FIELDNAME LIKE GWA_FIELDCAT-FIELDNAME

PV_TABNAME LIKE GWA_FIELDCAT-TABNAME

PV_OUTPUT LIKE GWA_FIELDCAT-OUTPUTLEN

PV_SELTEXT LIKE GWA_FIELDCAT-SELTEXT_M

PV_DATATYPE LIKE GWA_FIELDCAT-DATATYPE

PV_KEY LIKE GWA_FIELDCAT-KEY

PV_ROW LIKE GWA_FIELDCAT-ROW_POS

PV_HOTSPOT LIKE GWA_FIELDCAT-HOTSPOT

PV_EMPHASIZE LIKE GWA_FIELDCAT-EMPHASIZE

PV_SUM LIKE GWA_FIELDCAT-DO_SUM

PV_CHECKBOX LIKE GWA_FIELDCAT-CHECKBOX

PV_EDIT LIKE GWA_FIELDCAT-EDIT

PV_INPUT LIKE GWA_FIELDCAT-INPUT.

DATA: LT_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

LT_FIELDCAT-OUTPUTLEN = PV_OUTPUT.

LT_FIELDCAT-COL_POS = PV_POS.

LT_FIELDCAT-FIELDNAME = PV_FIELDNAME.

LT_FIELDCAT-TABNAME = PV_TABNAME.

LT_FIELDCAT-SELTEXT_L = PV_SELTEXT.

LT_FIELDCAT-KEY = PV_KEY.

LT_FIELDCAT-ROW_POS = PV_ROW.

LT_FIELDCAT-HOTSPOT = PV_HOTSPOT.

LT_FIELDCAT-EMPHASIZE = PV_EMPHASIZE.

LT_FIELDCAT-DO_SUM = PV_SUM.

LT_FIELDCAT-CHECKBOX = PV_CHECKBOX.

LT_FIELDCAT-INPUT = PV_INPUT.

LT_FIELDCAT-EDIT = PV_EDIT.

LT_FIELDCAT-DATATYPE = PV_DATATYPE.

APPEND LT_FIELDCAT TO P_GIT_FIELDCAT.

CLEAR LT_FIELDCAT.

ENDFORM. " init_field_catalog

&----


*& Form sort_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_FIELDS .

GWA_SORT-SPOS = 1. " Sort order

GWA_SORT-FIELDNAME = 'LIFNR'.

GWA_SORT-TABNAME = 'GIT_NOTPOST'.

GWA_SORT-UP = 'X'.

  • x_sort-subtot = 'X'. " Sub total allowed

APPEND GWA_SORT TO GIT_SORT.

CLEAR GWA_SORT.

  • gwa_sort-spos = 2. " Sort order

  • gwa_sort-fieldname = 'ZBELNR'.

  • gwa_sort-tabname = 'GIT_FINAL'.

  • gwa_sort-up = 'X'.

    • x_sort-subtot = 'X'. " Sub total allowed

*

  • APPEND gwa_sort TO git_sort.

  • CLEAR gwa_sort.

ENDFORM. " sort_fields

&----


*& Form sort_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_FIELDS_POST .

GWA_SORTPOST-SPOS = 1. " Sort order

GWA_SORTPOST-FIELDNAME = 'LIFNR'.

GWA_SORTPOST-TABNAME = 'GIT_POST'.

GWA_SORTPOST-UP = 'X'.

  • x_sort-subtot = 'X'. " Sub total allowed

APPEND GWA_SORTPOST TO GIT_SORTPOST.

CLEAR GWA_SORTPOST.

  • gwa_sort-spos = 2. " Sort order

  • gwa_sort-fieldname = 'ZBELNR'.

  • gwa_sort-tabname = 'GIT_FINAL'.

  • gwa_sort-up = 'X'.

    • x_sort-subtot = 'X'. " Sub total allowed

*

  • APPEND gwa_sort TO git_sort.

  • CLEAR gwa_sort.

ENDFORM. " sort_fields

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • <--P_GiT_EVENTS text

----


FORM EVENTTAB_BUILD1 CHANGING P_GIT_EVENTS. "#EC NEEDED

CLEAR GIT_XS_EVENT.

GIT_XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

GIT_XS_EVENT-FORM = 'XTOP_OF_PAGE'.

APPEND GIT_XS_EVENT TO GIT_EVENTS. "#EC *

  • CONSTANTS:

*GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

*GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

  • DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

*

  • CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • I_LIST_TYPE = 0

  • IMPORTING

  • ET_EVENTS = GiT_EVENTS.

*

  • READ TABLE GiT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

  • INTO LS_EVENT.

  • IF SY-SUBRC = 0.

  • MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

  • APPEND LS_EVENT TO GiT_EVENTS.

  • ENDIF.

*

  • READ TABLE GiT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND

  • INTO LS_EVENT.

  • IF SY-SUBRC = 0.

  • MOVE GC_FORMNAME_USER_COMMAND TO LS_EVENT-FORM.

  • APPEND LS_EVENT TO GiT_EVENTS.

  • ENDIF.

ENDFORM. " EVENTTAB_BUILD1

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • <--P_GiT_EVENTS text

----


FORM EVENTTAB_BUILDPOST.

*not posted DOCUMENTS

CLEAR GIT_XS_EVENT.

GIT_XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

GIT_XS_EVENT-FORM = 'YTOP_OF_PAGE'.

APPEND GIT_XS_EVENT TO GIT_EVENTS1.

ENDFORM. " EVENTTAB_BUILD1

************************************************

*& TOP-OF-PAGE

************************************************

*----


    • FORM TOP_OF_PAGE *

*----


    • When TOP-OF-PAGE will be fired , this event will be called and it

    • will use the contents of i_list_top_of_page for output in the header

*----


*FORM TOP_OF_PAGE.

*

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • I_LOGO = 'ENJOYSAP_LOGO'

  • IT_LIST_COMMENTARY = GiT_LIST_TOP_OF_PAGE.

*

*ENDFORM. "top_of_page

&----


*& Form LIST_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LIST_HEADER .

CLEAR : GIT_LIST_TOP_OF_PAGE.

DATA: L_LINE TYPE SLIS_LISTHEADER.

DATA: L_DATE(10).

CLEAR L_DATE.

***Header

CLEAR L_LINE.

L_LINE-TYP = 'H'.

  • L_LINE-KEY: not used for this type

L_LINE-INFO = 'Vendor Line Item Display'.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

***Selection

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Documents'.

L_LINE-INFO = 'Not Posted'. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Company Code'.

L_LINE-INFO = P_BUKRS. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

CONCATENATE P_DDATE+6(2)

P_DDATE+4(2)

P_DDATE+0(4)

INTO L_DATE SEPARATED BY '.'.

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-LOW.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

*

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-high.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

L_LINE-KEY = 'Discount date'.

L_LINE-INFO = L_DATE.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE.

ENDFORM. " LIST_HEADER

&----


*& Form LIST_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LIST_HEADER1 .

CLEAR : GIT_LIST_TOP_OF_PAGE_POST.

DATA: L_LINE TYPE SLIS_LISTHEADER.

DATA: L_DATE(10).

CLEAR L_DATE.

***Header

CLEAR L_LINE.

L_LINE-TYP = 'H'.

  • L_LINE-KEY: not used for this type

L_LINE-INFO = 'Vendor Line Item Display'.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

***Selection

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Documents'.

L_LINE-INFO = 'Posted'. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

CLEAR L_LINE.

L_LINE-TYP = 'S'.

L_LINE-KEY = 'Company Code'.

L_LINE-INFO = P_BUKRS. "'H901/Hyuandai Motor India. '.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

CONCATENATE P_DDATE+6(2)

P_DDATE+4(2)

P_DDATE+0(4)

INTO L_DATE SEPARATED BY '.'.

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-LOW.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

*

  • L_LINE-KEY = 'Vendor code'.

  • L_LINE-INFO = S_LIFNR-high.

  • APPEND L_LINE TO GiT_LIST_TOP_OF_PAGE.

L_LINE-KEY = 'Discount date'.

L_LINE-INFO = L_DATE.

APPEND L_LINE TO GIT_LIST_TOP_OF_PAGE_POST.

ENDFORM. " LIST_HEADER

----


*& Form SET_PF_STATUS

&----


  • text

----


  • -->EXTAB text

----


FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB. "#EC NEEDED

SET PF-STATUS 'ZSTANDARD1'. " OF PROGRAM 'SAPLKKBL'.

ENDFORM. "set_pf_status

&----


*& Form Display_grid

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_LIST .

G_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' "'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • IT_EXCLUDING =

.

*DOCUMENTS WHICH ARE POSTED ALREADY.

IF GIT_POST IS NOT INITIAL.

SORT GIT_POST ASCENDING BY NETDUEDT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = GFL_LAYOUT

IT_FIELDCAT = GIT_FIELDCATPOST " POST

I_TABNAME = 'GIT_POST'

IT_EVENTS = GIT_EVENTS[]

IT_SORT = GIT_SORT[]

  • I_TEXT = ' '

  • IS_VARIANT = GFL_VAR

TABLES

T_OUTTAB = GIT_POST

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 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.

ENDIF.

*DOCUMENTS WHICH ARE NOT YET POSTED

IF GIT_NOTPOST IS NOT INITIAL.

SORT GIT_NOTPOST ASCENDING BY NETDUEDT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = GFL_LAYOUT

IT_FIELDCAT = GIT_FIELDCAT

I_TABNAME = 'GIT_NOTPOST' " NOT POSTED

IT_EVENTS = GIT_EVENTS1[]

IT_SORT = GIT_SORT[]

  • I_TEXT = ' '

  • IS_VARIANT = GFL_VAR

TABLES

T_OUTTAB = GIT_NOTPOST

EXCEPTIONS

PROGRAM_ERROR = 1

MAXIMUM_OF_APPENDS_REACHED = 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.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

  • CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  • EXPORTING

  • I_CALLBACK_PROGRAM = G_REPID

  • I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

  • IS_LAYOUT = GS_LAYOUT

  • IT_FIELDCAT = GiT_FIELDCAT

  • IT_SORT = git_sort[]

  • IS_VARIANT = GFL_VAR

  • IT_EVENTS = GiT_EVENTS[]

  • TABLES

  • T_OUTTAB = GIT_BSIKM

  • 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. " Display_grid

&----


*& Form USER_COMMAND

&----


  • Called from within the ALV processes. Currently, 'F-02' is used

  • to process the hotspot and display the document 'picked' by the

  • user.

&----


  • PV_UCOMM contains the sy-ucomm from ALV

  • SELFIELD is a structure that contains all the data required to

  • process a user selection. The following is an example

  • of the SELFIELD structure and sample values:

*

*

&----


  • when the user click on Asset Class this will trigger

FORM USER_COMMAND USING PV_UCOMM LIKE SY-UCOMM "#EC NEEDED

SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED

CASE PV_UCOMM.

WHEN 'F-02'.

  • BREAK WAB03.

*VALIDATE THE DOCUMENTS THAT WHETHER THEY ARE POSTED OR NOT.

PERFORM VALIDATE_DOCUMENT.

  • LOOP AT GIT_BSIKM INTO GWA_BSIKM.

READ TABLE GIT_NOTPOST INTO GWA_NOTPOST

WITH KEY BUKRS = P_BUKRS. " INDEX SELFIELD-TABINDEX.

IF SY-SUBRC EQ 0.

  • CASE SELFIELD-SEL_TAB_FIELD.

  • WHEN 'GIT_BSIKM-BUKRS'.

  • LOOP AT GIT_BSIKM INTO GWA_BSIKM.

  • MOVE-CORRESPONDING GWA_BSIKM TO GWA_BSIKT.

  • COLLECT GWA_BSIKT INTO GIT_BSIKT.

  • CLEAR: GWA_BSIKT, GWA_BSIKM.

  • ENDLOOP.

*SENDING THE DOCUMENTS WHICH ARE NOT YET POSTED TO THE

*PROGRAMM ZFII_UPLOADF_02 FOR FURTHER UPLOAD.

EXPORT GIT_NOTPOST[] TO MEMORY ID 'CP_TABLE'.

*SENDING THE DATE TO THE PROGRAMM ZFII_UPLOADF_02

*FOR FURTHER UPLOAD.

EXPORT GIT_DATE[] TO MEMORY ID 'CP_DATE'.

*TO EXPORT THE PERCENTAGE TO THE PROGRAM WHICH UPDATE THIS VALUE.

EXPORT P_DRATE TO MEMORY ID 'CP_DRATE'.

*CALL THE PROGRAME ZFII_UPLOADF_02 FOR FURTHER UPLOAD.

SUBMIT ZFII_UPLOADF_02 VIA SELECTION-SCREEN AND RETURN.

*& we have to filter the vendor list

*& here we can run F-02 for only one vendor

  • PERFORM F-02.

ENDIF.

WHEN 'PRIN'.

  • ENDLOOP.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form CALCULATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CALCULATION .

DATA: L_DAYS LIKE T009B-BUTAG.

DATA: L_DMBTR(15) TYPE C.

DATA: L_CHECK TYPE C.

CLEAR: L_DAYS, L_CHECK, L_DMBTR.

*FINDING OUT THE NET DUE DATE.

LOOP AT GIT_BSIK INTO GWA_BSIK.

CALL FUNCTION 'NET_DUE_DATE_GET'

EXPORTING

I_ZFBDT = GWA_BSIK-ZFBDT

I_ZBD1T = GWA_BSIK-ZBD1T

I_ZBD2T = GWA_BSIK-ZBD2T

I_ZBD3T = GWA_BSIK-ZBD2T

I_SHKZG = GWA_BSIK-SHKZG

I_REBZG = GWA_BSIK-REBZG

I_KOART = 'K'

IMPORTING

E_FAEDT = GWA_BSIK-NETDUEDT.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR : GWA_BSIK.

ENDLOOP.

  • LOOP AT GIT_BSIK INTO GWA_BSIK.

*

  • IF GWA_BSIK-NETDUEDT LE P_DDATE.

  • DELETE GIT_BSIK INDEX SY-TABIX.

  • ENDIF.

  • CLEAR GWA_BSIK.

  • ENDLOOP.

*delete the records where the net due date

  • is greater than the discount date which is considered

IF P_DUEDT IS NOT INITIAL.

LOOP AT GIT_BSIK INTO GWA_BSIK.

IF GWA_BSIK-NETDUEDT > P_DUEDT.

DELETE GIT_BSIK INDEX SY-TABIX.

ENDIF.

CLEAR GWA_BSIK.

ENDLOOP.

ENDIF.

IF GIT_BSIK IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-004.

ENDIF.

*to calculate the discount amount.

LOOP AT GIT_BSIK INTO GWA_BSIK.

IF GWA_BSIK-NETDUEDT > P_DDATE.

  • IF P_DUEDT IS INITIAL.

  • P_DUEDT = GWA_BSIK-NETDUEDT.

  • ENDIF.

  • IF GWA_BSIK-NETDUEDT GE P_DUEDT.

WRITE GWA_BSIK-DMBTR TO L_DMBTR. "#EC UOM_IN_MES

*calculating the difference between the dates

CALL FUNCTION 'HR_HK_DIFF_BT_2_DATES'

EXPORTING

DATE1 = GWA_BSIK-NETDUEDT

DATE2 = P_DDATE

OUTPUT_FORMAT = '02'

IMPORTING

  • YEARS =

  • MONTHS =

DAYS = GWA_BSIK-DAYS

EXCEPTIONS

INVALID_DATES_SPECIFIED = 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.

GWA_BSIK-DAYS = GWA_BSIK-DAYS - 1.

*checking for leap year or not

CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET'

EXPORTING

PAR_MONTH = '02'

PAR_YEAR = P_DDATE+0(4)

IMPORTING

PAR_DAYS = L_DAYS.

IF L_DAYS = '29'.

L_CHECK = 'X'.

ELSE.

L_CHECK = ' '.

ENDIF.

IF L_DMBTR CA '-'.

ELSE.

IF L_CHECK = 'X'.

GWA_BSIK-DISCOUNT = ( GWA_BSIK-DMBTR *

GWA_BSIK-DAYS * P_DRATE )

/ 36600.

ELSE.

GWA_BSIK-DISCOUNT = ( GWA_BSIK-DMBTR *

GWA_BSIK-DAYS * P_DRATE )

/ 36500.

ENDIF.

ENDIF.

  • ENDIF.

ENDIF.

MODIFY GIT_BSIK FROM GWA_BSIK.

CLEAR: GWA_BSIK.

ENDLOOP.

ENDFORM. " CALCULATION

&----


*& Form VARIANTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANTS .

PERFORM F_LAYOUT_INIT USING GFL_LAYOUT.

  • DATA : GFL_VARIANT LIKE DISVARIANT.

  • DATA : GFL_VAR LIKE DISVARIANT.

  • DATA : GFL_ALV_VAR LIKE DISVARIANT.

GFL_VAR-REPORT = 'ZFII_RFITEMAPLIST'.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = 'A'

CHANGING

CS_VARIANT = GFL_VAR

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4.

IF SY-SUBRC EQ 0.

GFL_VAR-VARIANT = '/SAPSUBTOT'.

GFL_ALV_VAR-REPORT = SY-REPID.

ELSE.

GFL_VAR-VARIANT = '' ."'/ZNETDUEDATE'.

ENDIF.

ENDFORM. " VARIANTS

&----


*& Form F_LAYOUT_INIT

&----


  • text

----


  • -->P_GS_LAYOUT text

----


FORM F_LAYOUT_INIT USING P_GS_LAYOUT TYPE SLIS_LAYOUT_ALV.

P_GS_LAYOUT-DETAIL_INITIAL_LINES = 'X'.

  • P_GS_LAYOUT-no_sumchoice = ' '.

P_GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

ENDFORM. " F_LAYOUT_INIT

&----


*& Form SUB_TOTAL_DATE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_TOTAL_DATE .

*CLEARING AND REFRESHING THE INTERNAL TABLES USED

REFRESH: GIT_BSIKF, GIT_BSIKM.

CLEAR: GWA_BSIKF, GWA_BSIKM.

*SUMMING OF THE AMOUNT FIELD

LOOP AT GIT_BSIK INTO GWA_BSIK.

MOVE-CORRESPONDING GWA_BSIK TO GWA_BSIKF.

COLLECT GWA_BSIKF INTO GIT_BSIKF.

CLEAR: GWA_BSIK, GWA_BSIKF.

ENDLOOP.

*FETCHING THE NUMBER OF DAYS

LOOP AT GIT_BSIKF INTO GWA_BSIKF.

READ TABLE GIT_BSIK INTO GWA_BSIK

WITH KEY BUKRS = GWA_BSIKF-BUKRS

LIFNR = GWA_BSIKF-LIFNR

ZFBDT = GWA_BSIKF-ZFBDT

BLART = GWA_BSIKF-BLART

NETDUEDT = GWA_BSIKF-NETDUEDT.

IF SY-SUBRC EQ 0.

GWA_BSIKM-DAYS = GWA_BSIK-DAYS.

  • GWA_BSIKM-BLART = GWA_BSIK-BLART.

MOVE-CORRESPONDING GWA_BSIKF TO GWA_BSIKM.

APPEND GWA_BSIKM TO GIT_BSIKM.

CLEAR: GWA_BSIK, GWA_BSIKF, GWA_BSIKM.

ENDIF.

ENDLOOP.

  • CALCULATING THE NET AMOUNT

SORT GIT_BSIKM ASCENDING BY NETDUEDT.

LOOP AT GIT_BSIKM INTO GWA_BSIKM.

GWA_BSIKM-NETAMOUNT = GWA_BSIKM-DMBTR -

GWA_BSIKM-DISCOUNT.

MODIFY GIT_BSIKM FROM GWA_BSIKM.

CLEAR GWA_BSIKM.

ENDLOOP.

ENDFORM. " SUB_TOTAL_DATE

&----


*& Form validate_date

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_DATE .

IF P_DDATE IS INITIAL.

MESSAGE E000(ZFI) WITH TEXT-006.

ENDIF.

ENDFORM. " validate_date

&----


*& Form VALIDATE_DOCUMENT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_DOCUMENT .

*VALIDATING WHETHER RECORD IS THERE OR NOT

IF GIT_NOTPOST IS NOT INITIAL.

  • IF THE DOCUMENT NUMBERS WHICH ARE THERE IN

*GIT_BSIK IS ALSO PRESENT IN ZFII_PDITEM

*THEN IT MEAN POSTING IS ALREADY DONE.

SELECT

LIFNR

BELNR

BELNRSUB

GJAHR

BUKRS

BLART

FROM ZFII_PDITEM

INTO TABLE GIT_CHECK1

FOR ALL ENTRIES IN GIT_NOTPOST

WHERE BUKRS = GIT_NOTPOST-BUKRS

AND BELNRSUB = GIT_NOTPOST-BELNR

AND LIFNR IN S_LIFNR

AND BLART = GIT_NOTPOST-BLART

AND GJAHR = GIT_NOTPOST-GJAHR.

IF SY-SUBRC EQ 0.

*IF WE FIND THE DOCUMENTS IT MEAN THEY ARE ALREADY POSTED.

MESSAGE E000(ZFI) WITH TEXT-000.

EXIT.

ENDIF.

ELSE.

MESSAGE E000(ZFI) WITH TEXT-000.

ENDIF.

ENDFORM. " VALIDATE_DOCUMENT

&----


*& Form POSTED_NOTPOSTED

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POSTED_NOTPOSTED .

*CLEARING AND REFRESHING OF THE INTERNAL TABLES.

CLEAR: GWA_POST, GWA_NOTPOST.

REFRESH: GIT_POST, GIT_NOTPOST.

IF GIT_BSIKM IS NOT INITIAL.

*COLLECTING THE RECORDS WHICH RECORDS ARE

*POSTED AND WHICH ARE NOT POSTED.

SELECT

LIFNR

BELNR

BELNRSUB

GJAHR

BUKRS

BLART

FROM ZFII_PDITEM " ITEM LEVEL TABLE

INTO TABLE GIT_CHECK1 " ITEM LEVEL TABLE

FOR ALL ENTRIES IN GIT_BSIKM

WHERE BUKRS = GIT_BSIKM-BUKRS

AND BELNRSUB = GIT_BSIKM-BELNR

AND LIFNR IN S_LIFNR

AND BLART = GIT_BSIKM-BLART

AND GJAHR = GIT_BSIKM-GJAHR.

IF SY-SUBRC EQ 0.

*LOOP AT TABLE WHICH GOT RECORDS FROM BSIK.

LOOP AT GIT_BSIKM INTO GWA_BSIKM.

*READ THE RECORDS WHICH ARE FROM ITEM LEVEL TABLE.

READ TABLE GIT_CHECK1 INTO GWA_CHECK1

WITH KEY BELNRSUB = GWA_BSIKM-BELNR.

IF SY-SUBRC EQ 0.

"RECORD FOUND MEANS IT IS POSTED ALREADY

APPEND GWA_BSIKM TO GIT_POST.

ELSE.

"RECORD NOT FOUND MEANS IT IS NOT POSTED

APPEND GWA_BSIKM TO GIT_NOTPOST.

ENDIF.

CLEAR: GWA_BSIKM, GWA_CHECK1.

ENDLOOP.

ELSE.

*IF WE FIND NO DOCUMENTS THEN THESE DOCUMENTS ARE NOT POSTED.

GIT_NOTPOST[] = GIT_BSIKM[].

ENDIF.

ENDIF.

LOOP AT GIT_POST INTO GWA_POST.

GWA_POST-SNO = G_SNO.

G_SNO = G_SNO + 1.

MODIFY GIT_POST FROM GWA_POST.

CLEAR: GWA_POST.

ENDLOOP.

G_SNO = 1.

LOOP AT GIT_NOTPOST INTO GWA_NOTPOST.

GWA_NOTPOST-SNO = G_SNO.

G_SNO = G_SNO + 1.

MODIFY GIT_NOTPOST FROM GWA_NOTPOST.

CLEAR: GWA_NOTPOST.

ENDLOOP.

ENDFORM. " POSTED_NOTPOSTED

----


  • FORM TOP_OF_PAGE *

----


  • When TOP-OF-PAGE will be fired , this event will be called and it

  • will use the contents of i_list_top_of_page for output in the header

----


FORM XTOP_OF_PAGE. "#EC CALLED

  • WRITE: / 'Posted Documents'.

*

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

  • i_logo = 'ENJOYSAP_LOGO'

IT_LIST_COMMENTARY = GIT_LIST_TOP_OF_PAGE_POST .

ENDFORM. "top_of_page

----


  • FORM TOP_OF_PAGE *

----


  • When TOP-OF-PAGE will be fired , this event will be called and it

  • will use the contents of i_list_top_of_page for output in the header

----


FORM YTOP_OF_PAGE. "#EC CALLED

  • WRITE: / 'NOT Posted Documents'.

*

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

  • i_logo = 'ENJOYSAP_LOGO'

IT_LIST_COMMENTARY = GIT_LIST_TOP_OF_PAGE.

ENDFORM. "top_of_page

&----


*& Form CHECK_REVERSAL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_REVERSAL .

*CLEAR AND REFRESH THE INTERNAL TABLES.

CLEAR: GWA_REVERSE, GWA_HEAD.

REFRESH: GIT_REVERSE, GIT_HEAD.

*FIRST SELECT ALL THE RECORDS IN THE TABLE

*ZFII_PDHEAD FOR WHICH POSTING WAS DONE

SELECT *

FROM ZFII_PDHEAD

INTO TABLE GIT_HEAD.

*NOW COLLECT THE RECORDS

IF NOT GIT_HEAD IS INITIAL.

CLEAR GWA_REVERSE.

REFRESH GIT_REVERSE.

*SELECT THE RECORDS FROM BKPF WHICH ARE ALL REVERSED.

SELECT

BELNR

STBLG

GJAHR

FROM BKPF

INTO TABLE GIT_REVERSE

FOR ALL ENTRIES IN GIT_HEAD

WHERE BELNR = GIT_HEAD-BELNR

AND STBLG <> SPACE

AND GJAHR = GIT_HEAD-GJAHR.

*COLLECT THE RECORDS FROM ZFII_PDITEM

*IN ORDER TO DELETE THE DOCUMENTS FROM THIS TABLE

*IF THE CORRESPONDING POSTING DOCUMENT IS REVERSED.

IF GIT_REVERSE IS NOT INITIAL.

CLEAR GWA_ITEM.

REFRESH GIT_ITEM.

SELECT * FROM

ZFII_PDITEM

INTO TABLE GIT_ITEM

FOR ALL ENTRIES IN GIT_REVERSE

WHERE BELNR = GIT_REVERSE-BELNR.

*DELETING THE DOCUMENTS WHICH ARE REVERSED.

IF SY-SUBRC EQ 0.

LOOP AT GIT_ITEM INTO GWA_ITEM.

*DELETING THE ITEM LEVEL TABLE FOR THOSE

*DOCUMENTS WHICH ARE REVERSED.

  • ZFII_PDITEM = GWA_ITEM.

DELETE ZFII_PDITEM FROM GWA_ITEM.

  • BELNRSUB = GWA_ITEM-BELNRSUB. " FROM GWA_ITEM.

CLEAR GWA_ITEM.

ENDLOOP.

COMMIT WORK.

*LOOP THE DOCUMENTS WHICH ARE REVERSED TO UPDATE

*THE TABLE ZFII_PDHEAD WITH THE REVERSAL DOCUMENT NUMBER.

LOOP AT GIT_REVERSE INTO GWA_REVERSE.

READ TABLE GIT_HEAD INTO GWA_HEAD

WITH KEY BELNR = GWA_REVERSE-BELNR.

IF SY-SUBRC EQ 0.

GWA_HEAD-RVRSDOC = GWA_REVERSE-STBLG.

ZFII_PDHEAD = GWA_HEAD.

UPDATE ZFII_PDHEAD. " FROM GWA_HEAD.

CLEAR GWA_HEAD.

ENDIF.

ENDLOOP.

COMMIT WORK.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " CHECK_REVERSAL

Former Member
0 Kudos

HI,

putting heading for each block is possible but uline is not possible to separate the blocks.

see this example

REPORT ZBHALV_BLOCK_LIST.

TABLES:LFA1,EKKO.

SELECT-OPTIONS:LIFNR FOR LFA1-LIFNR.

DATA:BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

LAND1 LIKE LFA1-LAND1,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

END OF ITAB.

DATA:BEGIN OF JTAB OCCURS 0,

LIFNR LIKE EKKO-LIFNR,

EBELN LIKE EKKO-EBELN,

BUKRS LIKE EKKO-BUKRS,

BSTYP LIKE EKKO-BSTYP,

EKORG LIKE EKKO-EKORG,

BSART LIKE EKKO-BSART,

END OF JTAB.

SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE LIFNR

IN LIFNR.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB WHERE LIFNR

IN LIFNR.

TYPE-POOLS:SLIS.

DATA:LAYOUT TYPE slis_layout_alv.

DATA:EVE TYPE slis_t_event WITH HEADER LINE.

DATA:EVE1 TYPE slis_t_event WITH HEADER LINE.

DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.

DATA:FCAT TYPE slis_t_fieldcat_alv.

DATA:FCAT1 TYPE slis_t_fieldcat_alv.

LAYOUT-ZEBRA = 'X'.

LAYOUT-colwidth_optimize = 'X'.

LAYOUT-WINDOW_TITLEBAR = 'VENDOR DETAILS SCREEN'.

EVE1-NAME = 'TOP_OF_PAGE'.

EVE1-FORM = 'TOP_OF_PAGE1'.

APPEND EVE1.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = EVE[]

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.

READ TABLE EVE WITH KEY NAME = 'TOP_OF_PAGE'.

EVE-FORM = 'TOP_OF_PAGE'.

MODIFY EVE TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IT_EXCLUDING =

.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'ITAB'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = SY-REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = FCAT

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT

I_TABNAME = 'ITAB'

IT_EVENTS = EVE[]

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = ITAB

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'JTAB'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = SY-REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = FCAT1

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT1

I_TABNAME = 'JTAB'

IT_EVENTS = EVE1[]

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = JTAB

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

  • 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.

FORM TOP_OF_PAGE.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'VENDORS DETAILS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

ENDFORM.

FORM TOP_OF_PAGE1.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'PURCHASE DOCCUMENTS DETAILS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

ENDFORM.

rgds,

bharat.

Former Member
0 Kudos

YOU CAN CHECK THIS PROG FOR YOUR REFFERENCE


TYPE-POOLS : SLIS.
TABLES : EKKO,EKPO,MARA,MAKT,EINE.

DATA : BEGIN OF IEKKO OCCURS 0,
       EBELN LIKE EKKO-EBELN,
       AEDAT LIKE EKKO-AEDAT,
       END OF IEKKO.

DATA : BEGIN OF IEKPO OCCURS 0,
       EBELN LIKE EKPO-EBELN,
       EBELP LIKE EKPO-EBELP,
       MATNR LIKE EKPO-MATNR,
       MENGE LIKE EKPO-MENGE,
       MEINS LIKE EKPO-MEINS,
       INFNR LIKE EKPO-INFNR,
       END OF IEKPO.
DATA : BEGIN OF IMARA OCCURS 0,
       MATNR LIKE MARA-MATNR,
       MTART LIKE MARA-MTART,
       MAKTX LIKE MAKT-MAKTX,
       END OF IMARA.
DATA : BEGIN OF IEINE OCCURS 0,
       INFNR LIKE EINE-INFNR,
       EBELN LIKE EINE-EBELN,
       NETPR LIKE EINE-NETPR,
       WAERS LIKE EINE-WAERS,
       END OF IEINE.


DATA : IFIELDCAT     TYPE SLIS_T_FIELDCAT_ALV,
       IFIELDCATEINE TYPE SLIS_T_FIELDCAT_ALV,
       IFIELDCATMARA TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT     TYPE SLIS_FIELDCAT_ALV,
       ILAYOUT       TYPE SLIS_LAYOUT_ALV,
       IEVENTHEAD    TYPE SLIS_T_EVENT,
       IEVENTITEM    TYPE SLIS_T_EVENT,
       IEVENTEINE    TYPE SLIS_T_EVENT,
       WEVENT        TYPE SLIS_ALV_EVENT,
       IKEYINFO      TYPE SLIS_KEYINFO_ALV.

PARAMETERS : P_NUM(3) TYPE N DEFAULT 10.


PERFORM GET_DATA_EKKO.
PERFORM GET_DATA_EKPO.
PERFORM GET_DATA_MARA.
PERFORM GET_DATA_EINE.


PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_FCAT_MARA.
PERFORM BUILD_FCAT_EINE.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENT_TAB.
PERFORM BUILD_KEYINFO.


PERFORM DISPLAY_BLOCK.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKKO .

SELECT EBELN AEDAT INTO TABLE IEKKO FROM EKKO UP TO P_NUM ROWS WHERE EBELN LIKE '45000057%'.

ENDFORM.                    " GET_DATA_EKKO
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKPO .

IF NOT IEKKO[] IS INITIAL.
  SELECT EBELN EBELP MATNR MENGE MEINS INFNR INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES
                                                    IN IEKKO WHERE EBELN = IEKKO-EBELN.
ENDIF.

ENDFORM.                    " GET_DATA_EKPO
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_BLOCK .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM             = SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND'
  EXPORTING
    IS_LAYOUT                        = ILAYOUT
    IT_FIELDCAT                      = IFIELDCAT
    IS_KEYINFO                       = IKEYINFO
    I_HEADER_TABNAME                 = 'IEKKO'
    I_ITEM_TABNAME                   = 'IEKPO'
    IT_EVENTS                        = IEVENTHEAD
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB_HEADER                  = IEKKO
    T_OUTTAB_ITEM                    = IEKPO
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 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.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = ILAYOUT
    IT_FIELDCAT                      = IFIELDCATMARA
    I_TABNAME                        = 'IMARA'
    IT_EVENTS                        = IEVENTITEM
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IMARA
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 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.


CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = ILAYOUT
    IT_FIELDCAT                      = IFIELDCATEINE
    I_TABNAME                        = 'IEINE'
    IT_EVENTS                        = IEVENTEINE
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IEINE
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 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.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
 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.                    " DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_HEAD .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.


WFIELDCAT-FIELDNAME = 'AEDAT'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. doc date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_ITEM .
*WFIELDCAT-FIELDNAME = 'EBELN'.
*WFIELDCAT-TABNAME   = 'IEKPO'.
*WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
*WFIELDCAT-OUTPUTLEN = 15.
*APPEND WFIELDCAT TO IFIELDCAT.
*CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELP'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc item'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'P.O. Qty'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ILAYOUT-ZEBRA             = 'X'.
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENT_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = IEVENTHEAD
* 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.

IEVENTITEM = IEVENTHEAD.
IEVENTEINE = IEVENTHEAD.
READ TABLE IEVENTHEAD INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEHEAD'.
MODIFY IEVENTHEAD FROM WEVENT INDEX SY-TABIX.
ENDIF.

READ TABLE IEVENTITEM INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEITEM'.
MODIFY IEVENTITEM FROM WEVENT INDEX SY-TABIX.
ENDIF.

READ TABLE IEVENTEINE INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEEINE'.
MODIFY IEVENTEINE FROM WEVENT INDEX SY-TABIX.
ENDIF.



ENDFORM.                    " BUILD_EVENT_TAB

FORM TOPOFPAGEHEAD.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Header data with P.O. no and creating date'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

FORM TOPOFPAGEITEM.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Material no in PO with type and description'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_KEYINFO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_KEYINFO .
IKEYINFO-HEADER01 = 'EBELN'.
IKEYINFO-ITEM01   = 'EBELN'.
ENDFORM.                    " BUILD_KEYINFO
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_MARA .

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME   = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-TABNAME   = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material desc'.
WFIELDCAT-OUTPUTLEN = 30.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MTART'.
WFIELDCAT-TABNAME   = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material typ'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_MARA
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_MARA .
IF NOT IEKPO[] IS INITIAL.
  SELECT A~MATNR A~MTART B~MAKTX INTO TABLE IMARA FROM MARA AS A INNER JOIN
                                                       MAKT AS B ON
                                                       A~MATNR = B~MATNR FOR
                                                       ALL ENTRIES IN IEKPO
                                                       WHERE A~MATNR = IEKPO-MATNR.

ENDIF.

ENDFORM.                    " GET_DATA_MARA
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EINE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EINE .

IF NOT IEKPO[] IS INITIAL.
  SELECT INFNR EBELN NETPR WAERS INTO TABLE IEINE FROM EINE
         FOR ALL ENTRIES IN IEKPO WHERE INFNR = IEKPO-INFNR AND
                                        EBELN = IEKPO-EBELN.
ENDIF.

ENDFORM.                    " GET_DATA_EINE

FORM TOPOFPAGEEINE.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Purchasing info record'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_EINE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_EINE .

WFIELDCAT-FIELDNAME = 'INFNR'.
WFIELDCAT-TABNAME   = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Info rec no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Pur ord no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'NETPR'.
WFIELDCAT-TABNAME   = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Net price'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'WAERS'.
WFIELDCAT-TABNAME   = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Currency'.
WFIELDCAT-OUTPUTLEN = 10.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.


ENDFORM.                    " BUILD_FCAT_EINE

FOR TOP-OF-PAGE YOU HAVE TO DO LIKE THIS..

DATA V_ULINE(100).

WLIST-INFO = 'Header data with P.O. no and creating date'.

WLIST-TYP = 'H'.

APPEND WLIST TO ILIST

DO 100 TIMES.

CONCATENATE V_ULINE '-' INTO V_ULINE.

ENDDO.

WLIST-INFO = V_ULINE.

WLIST-TYP = 'H'.

APPEND WLIST TO ILIST

NOW PASS THAT TO REUSE ALV COMMENTARY WRITE FN MODULE.

REGARDS

SHIBA DUTTA

Former Member
0 Kudos

hi,

try this code for blocked alv..

-


DATA: BEGIN OF I_MARD OCCURS 0,

WERKS TYPE MARD-WERKS,

LGORT TYPE MARD-LGORT,

MATNR TYPE MARD-MATNR,

INSME TYPE MARD-INSME,

EINME TYPE MARD-EINME,

SPEME TYPE MARD-SPEME,

END OF I_MARD.

DATA: BEGIN OF I_MAKT OCCURS 0,

MATNR TYPE MAKT-MATNR,

MAKTX TYPE MAKT-MAKTX,

MAKTG TYPE MAKT-MAKTG,

END OF I_MAKT.

&----


*& ALV Variables

&----


TYPE-POOLS :SLIS.

DATA :I_FIELD TYPE SLIS_T_FIELDCAT_ALV,

W_FIELD LIKE LINE OF I_FIELD,

W_LAYOUT TYPE SLIS_LAYOUT_ALV,

I_EVENTS TYPE SLIS_T_EVENT,

W_EVENTS LIKE LINE OF I_EVENTS.

DATA :I_FIELD1 TYPE SLIS_T_FIELDCAT_ALV,

W_FIELD1 LIKE LINE OF I_FIELD1,

W_LAYOUT1 TYPE SLIS_LAYOUT_ALV,

I_EVENTS1 TYPE SLIS_T_EVENT,

W_EVENTS1 LIKE LINE OF I_EVENTS1.

&----


*& START-OF-SELECTION

&----


START-OF-SELECTION.

PERFORM GET_DATA_FROM_DATABASE .

&----


*& END-OF-SELECTION

&----


END-OF-SELECTION.

PERFORM BUILD_FIELDCATALOG.

PERFORM BUILD_EVENTS.

PERFORM DISPLAY_DATA.

&----


*& Form build_fieldcatalog

&----


FORM BUILD_FIELDCATALOG .

CLEAR :

W_FIELD,

I_FIELD[].

CLEAR :

W_FIELD1,

I_FIELD1[].

*----


Fieldcatalog 1

W_FIELD-FIELDNAME = 'WERKS' .

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'Plant'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

W_FIELD-FIELDNAME = 'LGORT' .

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'S.Location'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

W_FIELD-FIELDNAME = 'MATNR'.

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'Mat No'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

W_FIELD-FIELDNAME = 'INSME' .

W_FIELD-DO_SUM = 'X'.

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'quality Stock'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

W_FIELD-FIELDNAME = 'EINME'.

W_FIELD-DO_SUM = 'X'.

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'Total Stock'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

W_FIELD-FIELDNAME = 'SPEME'.

W_FIELD-DO_SUM = 'X'.

W_FIELD-TABNAME = 'I_MARD'.

W_FIELD-SELTEXT_M = 'Blocked stock'.

APPEND W_FIELD TO I_FIELD.

CLEAR W_FIELD.

*----


Fieldcatalog 2

W_FIELD1-FIELDNAME = 'MATNR'.

W_FIELD1-TABNAME = 'I_MAKT'.

W_FIELD1-SELTEXT_M = 'MATNR'.

APPEND W_FIELD1 TO I_FIELD1.

CLEAR W_FIELD1.

W_FIELD1-FIELDNAME = 'MAKTX'.

W_FIELD1-TABNAME = 'I_MAKT'.

W_FIELD1-SELTEXT_M = 'MAKTX'.

APPEND W_FIELD1 TO I_FIELD1.

CLEAR W_FIELD1.

W_FIELD1-FIELDNAME = 'MAKTG'.

W_FIELD1-TABNAME = 'I_MAKT'.

W_FIELD1-SELTEXT_M = 'MAKTG'.

APPEND W_FIELD1 TO I_FIELD1.

CLEAR W_FIELD1.

ENDFORM. " build_fieldcatalog

&----


*& Form build_events

&----


FORM BUILD_EVENTS .

CLEAR:

W_EVENTS,

I_EVENTS[],

W_EVENTS1,

I_EVENTS1[].

W_EVENTS-NAME = 'TOP_OF_PAGE' .

W_EVENTS-FORM = 'TOP_OF_PAGE' .

APPEND W_EVENTS TO I_EVENTS.

CLEAR W_EVENTS.

W_EVENTS1-NAME = 'TOP_OF_PAGE' .

W_EVENTS1-FORM = 'TOP_OF_PAGE' .

APPEND W_EVENTS1 TO I_EVENTS1.

CLEAR W_EVENTS1.

ENDFORM. " build_events

&----


*& Form display_data

&----


FORM DISPLAY_DATA .

DATA :PROGRAM LIKE SY-REPID VALUE SY-REPID.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = PROGRAM

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IT_EXCLUDING =

.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = W_LAYOUT

IT_FIELDCAT = I_FIELD

I_TABNAME = 'I_MARD'

IT_EVENTS = I_EVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = I_MARD

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = W_LAYOUT

IT_FIELDCAT = I_FIELD1

I_TABNAME = 'I_MAKT'

IT_EVENTS = I_EVENTS1

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = I_MAKT

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

  • 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. " display_data

&----


*& Form get_data_from_database

&----


  • text

----


FORM GET_DATA_FROM_DATABASE .

SELECT WERKS LGORT MATNR INSME EINME SPEME

FROM MARD

INTO CORRESPONDING FIELDS OF TABLE I_MARD

UP TO 20 ROWS

WHERE WERKS = '1000'.

SELECT MATNR

MAKTX

MAKTG

FROM MAKT

INTO TABLE I_MAKT

UP TO 20 ROWS.

ENDFORM. " get_data_from_database

&----


*& Form top_of_page

&----


  • text

----


FORM TOP_OF_PAGE.

DATA: INC_COLNUM TYPE I.

ULINE .

INC_COLNUM = SY-LINSZ - 60.

WRITE: / 'Report: ', SY-REPID(18).

WRITE AT 30(INC_COLNUM) SY-TITLE CENTERED.

INC_COLNUM = SY-LINSZ - 20.

WRITE: AT INC_COLNUM 'Page: ', (11) SY-PAGNO RIGHT-JUSTIFIED.

WRITE: / 'Client: ', SY-MANDT.

INC_COLNUM = SY-LINSZ - 20.

WRITE: AT INC_COLNUM 'Date: ', SY-DATUM.

WRITE: / 'User : ', SY-UNAME.

INC_COLNUM = SY-LINSZ - 60.

WRITE AT 30(INC_COLNUM) 'Blocked ALV' CENTERED.

INC_COLNUM = SY-LINSZ - 20.

WRITE: AT INC_COLNUM 'Time: ', (10) SY-UZEIT RIGHT-JUSTIFIED.

ULINE .

ENDFORM. "top_of_page

Chandra-Bade
Explorer
0 Kudos

got it from code