06-12-2007 7:28 AM
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.
06-12-2007 7:30 AM
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
06-12-2007 7:30 AM
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
06-12-2007 7:35 AM
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.
06-12-2007 7:43 AM
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
06-12-2007 8:18 AM
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
01-28-2008 8:54 AM