2007 Jun 11 12:55 PM
Hi...
Can any one provide me a sample ALV list program with all the data declarations....
Thanks,
Sandy
2007 Jun 11 12:58 PM
HI,
check this code for multiple alv list displays
***&----
*& 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.
*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 for final internal table
*TYPES:BEGIN OF T_CHECK.
INCLUDE STRUCTURE BSIK.
*TYPES: END OF T_CHECK.
*TYPES: T_IT_CHECK TYPE STANDARD TABLE OF T_CHECK.
*DATA: GWA_CHECK TYPE T_CHECK.
*DATA: GIT_CHECK TYPE T_IT_CHECK.
*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,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-DMBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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,
BELNR TYPE BSIK-BELNR,
BLART TYPE BSIK-BLART,
GJAHR TYPE BSIK-GJAHR,
ZFBDT TYPE BSIK-ZFBDT,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-DMBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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,
BELNR TYPE BSIK-BELNR,
BLART TYPE BSIK-BLART,
GJAHR TYPE BSIK-GJAHR,
ZFBDT TYPE BSIK-ZFBDT,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-WRBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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.
*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
GIT_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 : G_VARIANT LIKE DISVARIANT.
DATA : G_VAR LIKE DISVARIANT.
DATA : G_ALV_VAR LIKE DISVARIANT.
*DATA : G_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA : G_POS TYPE I VALUE 1.
GIT_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.
*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 ,
GIT_LAYOUT,
GiT_FIELDCAT ,
GWA_FIELDCAT,
FIELDCAT_LN ,
G_LIST_TOP_OF_PAGE ,
G_POS,
G_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 ZFBDT GT P_DDATE
AND SHKZG = 'H'
AND ZLSPR = ' '.
IF SY-SUBRC NE 0.
MESSAGE E000(ZFI) WITH TEXT-004.
ENDIF.
SORT GIT_BSIK ASCENDING BY LIFNR ZFBDT BLART.
loop at git_bsik into GWA_BSIK.
if gwa_bsik-blart = 'GC'.
DELETE GIT_BSIK INDEX SY-TABIX.
endif.
endloop.
ENDFORM. " get_data
&----
*& Form field_catalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG .
G_POS = G_POS + 1.
PERFORM INIT_FIELD_CATALOG USING GiT_FIELDCAT[] " Field Catalog
G_POS " Column Position
'CHCK' " InTab Field Name
'GIT_BSIKM' " InTab Name
'2' " Output Length
'CHECK' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
'X' " checkbox
'X' " EDIT
'X'. " 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
'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
'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
'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
'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
'WRBTR' " InTab Field Name
'GIT_NOTPOST' " InTab Name
'20' " Output Length
'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
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
'Discount'
" Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
ENDFORM. " field_catalog
&----
*& Form field_catalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG_POST .
G_POS = G_POS + 1.
PERFORM INIT_FIELD_CATALOG USING GiT_FIELDCATPOST[] " Field Catalog
G_POS " Column Position
'CHCK' " InTab Field Name
'GIT_POST' " InTab Name
'2' " Output Length
'CHECK' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
'X' " checkbox
'X' " EDIT
'X'. " input
CLEAR G_POS.
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
'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
'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
'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
'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
'WRBTR' " InTab Field Name
'GIT_POST' " InTab Name
'20' " Output Length
'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
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
'Discount'
" Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " 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.
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.
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.
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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = GIT_LAYOUT
IT_FIELDCAT = GiT_FIELDCATPOST " POST
I_TABNAME = 'GIT_POST'
IT_EVENTS = GiT_EVENTS[]
IT_SORT = git_sort[]
I_TEXT = ' '
IS_VARIANT = G_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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = GIT_LAYOUT
IT_FIELDCAT = GiT_FIELDCAT
I_TABNAME = 'GIT_NOTPOST' " NOT POSTED
IT_EVENTS = GiT_EVENTS1[]
IT_SORT = git_sort[]
I_TEXT = ' '
IS_VARIANT = G_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 = G_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
SELFIELD TYPE SLIS_SELFIELD.
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'.
*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-WRBTR TO L_DMBTR.
*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-WRBTR *
GWA_BSIK-DAYS * P_DRATE )
/ 36600.
ELSE.
GWA_BSIK-DISCOUNT = ( GWA_BSIK-WRBTR *
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 GIT_LAYOUT.
DATA : G_VARIANT LIKE DISVARIANT.
DATA : G_VAR LIKE DISVARIANT.
DATA : G_ALV_VAR LIKE DISVARIANT.
G_VAR-REPORT = 'ZFII_RFITEMAPLIST'.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = G_VAR
EXCEPTIONS
WRONG_INPUT = 1
NOT_FOUND = 2
PROGRAM_ERROR = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
G_VAR-VARIANT = '/SAPSUBTOT'.
G_ALV_VAR-REPORT = SY-REPID.
ELSE.
G_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.
SORT GIT_BSIKM ASCENDING BY NETDUEDT.
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
INTO TABLE GIT_CHECK1
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 GIT_BSIKM INTO GWA_BSIKM.
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.
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.
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.
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
reward points if helpful
regards,
venkatesh
2007 Jun 11 12:56 PM
HI,
check out this code
**----
Data Extract from Tables ZFII_COST, BSIS.
----
Program Name :ZFII_COSTING_REPORT_DISPLAY
Object ID :E7
Functional Analyst :VENKAT
Programmer :venkatesh
Start date :07/05/2007
Initial CTS :HFDK901345
Description :
----
Includes :n/a
*
Function Modules :REUSE_ALV_GRID_DISPLAY , *
CONVERSION_EXIT_ALPHA_INPUT
FTI_FISCAL_YEAR_MONTH_GET
*
*
Logical database :n/a
Transaction Code :n/a
External references :n/a
----
Modification Log
----
Date | Modified by | CTS number | Comments
----
07/05/2007 | venkaetsh | HFDK901345 | Initial version
----
REPORT ZFII_COSTING_REPORT_DISPLAY NO STANDARD PAGE HEADING
MESSAGE-ID ZFI.
TYPE-POOLS: FTIS.
FOR THE ALV DISPLAY.
TYPE-POOLS: SLIS.
DATA:
G_REPID LIKE SY-REPID,
GWA_SORT TYPE SLIS_SORTINFO_ALV,
GIT_SORT TYPE SLIS_T_SORTINFO_ALV,
GIT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GIT_EVENTS TYPE SLIS_T_EVENT,
GFL_LAYOUT TYPE SLIS_LAYOUT_ALV,
GIT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
GWA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
GIT_XS_EVENT TYPE SLIS_ALV_EVENT,
G_POS TYPE I VALUE 1.
DATA:
G_REPID LIKE SY-REPID,
GWA_SORT TYPE SLIS_SORTINFO_ALV,
GIT_SORT TYPE SLIS_T_SORTINFO_ALV,
GIT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GIT_EVENTS TYPE SLIS_T_EVENT,
GFL_ITEMSLAYOUT TYPE SLIS_LAYOUT_ALV,
GIT_ITEMSFIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
GWA_ITEMSFIELDCAT TYPE SLIS_FIELDCAT_ALV,
GIT_XS_EVENT TYPE SLIS_ALV_EVENT,
G_ITEMSPOS TYPE I VALUE 1.
DECLARING THE VARIABLES.
DATA:
G_BUKRS TYPE T001-BUKRS.
TABLE FOR THE INITIAL FETCHING
TYPES: BEGIN OF T_COST.
INCLUDE STRUCTURE ZFII_COST.
TYPES: CNSTDGLACC TYPE ZFII_COSTING-CNSTDGLACC.
TYPES: END OF T_COST.
TYPES: T_IT_COST TYPE STANDARD TABLE OF T_COST.
DATA: GIT_COST TYPE T_IT_COST.
DATA: GWA_COST TYPE T_COST.
TYPES: BEGIN OF T_CONSOL.
INCLUDE STRUCTURE ZFII_COSTING.
TYPES: END OF T_CONSOL.
TYPES: T_IT_CONSOL TYPE STANDARD TABLE OF T_CONSOL.
DATA: GWA_CONSOL TYPE T_CONSOL.
DATA: GIT_CONSOL TYPE T_IT_CONSOL.
*TYPES: BEGIN OF T_SENDDATA.
INCLUDE STRUCTURE ZFII_COSTINGDETAILS.
*TYPES: END OF T_SENDDATA.
*TYPES: T_IT_SENDDATA TYPE STANDARD TABLE OF T_SENDDATA.
*DATA: GIT_SENDDATA TYPE T_IT_SENDDATA.
*DATA: GWA_SENDDATA TYPE T_SENDDATA.
TYPES: BEGIN OF T_BSIS,
HKONT TYPE BSIS-HKONT,
SHKZG TYPE BSIS-SHKZG,
DMBTR TYPE BSIS-DMBTR,
KOSTL TYPE BSIS-KOSTL,
END OF T_BSIS.
TYPES: T_IT_BSIS TYPE STANDARD TABLE OF T_BSIS.
DATA: GIT_BSIS TYPE T_IT_BSIS.
DATA: GWA_BSIS TYPE T_BSIS.
DATA: GIT_TOTALBSIS TYPE T_IT_BSIS.
DATA: GWA_TOTALBSIS TYPE T_BSIS.
DATA: G_FTIS_DATUM TYPE FTIS_DATUM.
DATA: G_FTIS_GJAHR TYPE FTIS_GJAHR.
DATA: G_FTIS_MONAT TYPE FTIS_MONAT.
ranges
RANGES: R_HKONT FOR BSIS-HKONT.
data: g_KOSTL type BSIS-KOSTL.
DESIGNING OF THE SELECTION SCREEN STARTS.
DATA: G_YEARMONTH TYPE ZFII_COST-YEARMONTH.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME. " TITLE TEXT-001.
PARAMETERS: P_COCODE TYPE T001-BUKRS DEFAULT 'H901'.
SELECT-OPTIONS: S_MONYR FOR G_YEARMONTH OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
DESIGN OF THE SELECTION SCREEN ENDS.
INITIALIZATION.
clearing and refreshing all the variables
and the tables used in the programme.
INITIALIZATION.
PERFORM CLEAR_REFRESH.
AT SELECTION-SCREEN.
event to validate the values entered
and fetching the data
if no data found error message will be shown
AT SELECTION-SCREEN.
PERFORM VALIDATE_VALUES.
*start of selection.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CHANGE_DATA.
PERFORM DISPLAY_ALV.
&----
*& Form CLEAR_REFRESH
&----
text
----
--> p1 text
<-- p2 text
----
FORM CLEAR_REFRESH .
CLEAR: G_REPID.
G_REPID = SY-REPID.
CLEAR:
GWA_COST, G_POS,
G_BUKRS, GWA_TOTALBSIS,
R_HKONT, G_FTIS_DATUM.
REFRESH:
GIT_BSIS, GIT_COST.
ENDFORM. " CLEAR_REFRESH
&----
*& Form VALIDATE_VALUES
&----
text
----
--> p1 text
<-- p2 text
----
FORM VALIDATE_VALUES .
SELECT SINGLE
BUKRS FROM
T001 INTO G_BUKRS
WHERE BUKRS = P_COCODE.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-000.
ENDIF.
ENDFORM. " VALIDATE_VALUES
&----
*& Form GET_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_DATA .
SELECT
MANDT
COMPCODE
YEARMONTH
DEPARTMENT
CNSTDGLACC
GLCODEFROM
GLCODETO
AMOUNT
FLAG
TYPE
FROM ZFII_COST
INTO TABLE GIT_COST
WHERE COMPCODE = P_COCODE
and YEARMONTH in S_MONYR.
IF SY-SUBRC NE 0.
MESSAGE I000 WITH TEXT-001.
STOP.
ELSE.
SELECT
MANDT
CNSTDGLACC
GLCODEFROM
GLCODETO
FLAG
FROM ZFII_COSTING
INTO TABLE GIT_CONSOL.
IF SY-SUBRC NE 0.
MESSAGE I000 WITH TEXT-003.
STOP.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA
&----
*& Form Change_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM CHANGE_DATA .
IF GIT_CONSOL IS NOT INITIAL.
IF GIT_COST IS NOT INITIAL.
sort GIT_CONSOL.
LOOP AT GIT_COST INTO GWA_COST.
READ TABLE GIT_CONSOL INTO GWA_CONSOL
WITH KEY GLCODEFROM = GWA_COST-GLCODEFROM
GLCODETO = GWA_COST-GLCODETO
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GWA_COST-CNSTDGLACC = GWA_CONSOL-CNSTDGLACC.
MODIFY GIT_COST FROM GWA_COST.
ENDIF.
CLEAR: GWA_CONSOL, GWA_COST.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " Change_data
&----
*& Form DISPLAY_ALV
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY_ALV .
GFL_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GFL_LAYOUT-ZEBRA = 'X'.
PERFORM FILL_FIELDCAT.
PERFORM SORT_FIELDS.
PERFORM CALL_GRID.
ENDFORM. " DISPLAY_ALV
&----
*& Form FILL_FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_FIELDCAT .
G_POS = G_POS + 1.
PERFORM INIT_FIELD_CATALOG USING GIT_FIELDCAT[] " Field Catalog
G_POS " Column Position
'COMPCODE' " InTab Field Name
'GIT_COST' " InTab Name
'5' " 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
'YEARMONTH' " InTab Field Name
'GIT_COST' " InTab Name
'8' " Output Length
'Year & Month' " 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
'CNSTDGLACC' " InTab Field Name
'GIT_COST' " InTab Name
'8' " Output Length
'G/L Account 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
'CNSTDGLACC' " InTab Field Name
'GIT_COST' " InTab Name
'8' " Output Length
'Cnsl GL' " 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
'DEPARTMENT' " InTab Field Name
'GIT_COST' " InTab Name
'4' " Output Length
'Department' " 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
'GLCODEFROM' " InTab Field Name
'GIT_COST' " InTab Name
'8' " Output Length
'From GL' " 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
'GLCODETO' " InTab Field Name
'GIT_COST' " InTab Name
'8' " Output Length
'To GL' " 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
'FLAG' " InTab Field Name
'GIT_COST' " InTab Name
'2' " Output Length
'Flag' " 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
'TYPE' " InTab Field Name
'GIT_COST' " InTab Name
'2' " Output Length
'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
'AMOUNT' " InTab Field Name
'GIT_COST' " InTab Name
'18' " Output Length
'Amount' " Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
ENDFORM. " FILL_FIELDCAT
&----
*& 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 = 'COMPCODE'.
GWA_SORT-TABNAME = 'GIT_COST'.
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 = 'YEARMONTH'.
GWA_SORT-TABNAME = 'GIT_COST'.
GWA_SORT-UP = 'X'.
x_sort-subtot = 'X'. " Sub total allowed
APPEND GWA_SORT TO GIT_SORT.
CLEAR GWA_SORT.
GWA_SORT-SPOS = 3. " Sort order
GWA_SORT-FIELDNAME = 'CNSTDGLACC'.
GWA_SORT-TABNAME = 'GIT_COST'.
GWA_SORT-UP = 'X'.
x_sort-subtot = 'X'. " Sub total allowed
APPEND GWA_SORT TO GIT_SORT.
CLEAR GWA_SORT.
GWA_SORT-SPOS = 4. " Sort order
GWA_SORT-FIELDNAME = 'DEPARTMENT'.
GWA_SORT-TABNAME = 'GIT_COST'.
GWA_SORT-UP = 'X'.
x_sort-subtot = 'X'. " Sub total allowed
APPEND GWA_SORT TO GIT_SORT.
CLEAR GWA_SORT.
ENDFORM. " SORT_FIELDS
&----
*& Form CALL_GRID
&----
text
----
--> p1 text
<-- p2 text
----
FORM CALL_GRID .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = GFL_LAYOUT
IT_FIELDCAT = GIT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = GIT_SORT
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GIT_COST
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. " CALL_GRID
----
*& Form SET_PF_STATUS
&----
text
----
-->EXTAB text
----
FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB. "#EC CALLED
SET PF-STATUS 'ZFII_PF_STATUS'. " OF PROGRAM 'SAPLKKBL'.
ENDFORM. "set_pf_status
&----
*& Form USER_COMMAND
&----
Called from within the ALV processes.
&----
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:
*
*
&----
TRIGGERS WHEN THE USER CLICK THE
FORM USER_COMMAND USING PV_UCOMM LIKE SY-UCOMM "#EC NEEDED
SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
CASE PV_UCOMM.
WHEN '&IC1'.
when the user double clicks on any record this will show the
READ TABLE GIT_COST INTO GWA_COST INDEX SELFIELD-TABINDEX.
entire list of g/l accounts for which we calculated the sum.
IF SY-SUBRC EQ 0.
CLEAR: g_KOSTL.
g_KOSTL = GWA_COST-DEPARTMENT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GWA_COST-DEPARTMENT
IMPORTING
OUTPUT = g_KOSTL.
CLEAR: R_HKONT.
REFRESH: R_HKONT.
R_HKONT-SIGN = 'I'.
R_HKONT-OPTION = 'BT'.
R_HKONT-LOW = GWA_COST-GLCODEFROM.
R_HKONT-HIGH = GWA_COST-GLCODETO.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = R_HKONT-LOW
IMPORTING
OUTPUT = R_HKONT-LOW.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = R_HKONT-HIGH
IMPORTING
OUTPUT = R_HKONT-HIGH.
append r_hkont.
PERFORM DISPLAY_DETAILS.
ENDIF.
when OTHERS.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form display_details
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY_DETAILS .
PERFORM GET_VALUES_BSIS.
PERFORM FILL_FIELDCAT_ITEMS.
PERFORM DISPALY_ITEMS.
ENDFORM. " display_details
&----
*& Form FILL_FIELDCAT_items
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_FIELDCAT_ITEMS .
CLEAR: GIT_ITEMSFIELDCAT. ", GWA_ITEMSFIELDCAT.
REFRESH: GIT_ITEMSFIELDCAT.
GFL_ITEMSLAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GFL_ITEMSLAYOUT-ZEBRA = 'X'.
CLEAR: G_ITEMSPOS.
G_ITEMSPOS = G_ITEMSPOS + 1.
PERFORM INIT_FIELD_CATALOG USING GIT_ITEMSFIELDCAT[] " Field Catalog
G_ITEMSPOS " Column Position
'HKONT' " InTab Field Name
'GIT_TOTALBSIS' " InTab Name
'10' " Output Length
'G/L Account' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
G_ITEMSPOS = G_ITEMSPOS + 1.
PERFORM INIT_FIELD_CATALOG USING GIT_ITEMSFIELDCAT[] " Field Catalog
G_ITEMSPOS " Column Position
'KOSTL' " InTab Field Name
'GIT_TOTALBSIS' " InTab Name
'10' " Output Length
'Cost Center' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
G_ITEMSPOS = G_ITEMSPOS + 1.
PERFORM INIT_FIELD_CATALOG USING GIT_ITEMSFIELDCAT[] " Field Catalog
G_ITEMSPOS " Column Position
'DMBTR' " InTab Field Name
'GIT_TOTALBSIS' " InTab Name
'18' " Output Length
'Amount' " Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
ENDFORM. " FILL_FIELDCAT_items
&----
*& Form get_values_bsis
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_VALUES_BSIS .
clear: " G_FTIS_DATUM,
G_FTIS_GJAHR, G_FTIS_MONAT.
G_FTIS_DATUM+0(6) = gwa_cost-YEARMONTH.
G_FTIS_DATUM+6(2) = '01'.
CALL FUNCTION 'FTI_FISCAL_YEAR_MONTH_GET'
EXPORTING
I_BUKRS = 'H901'
I_BUDAT = G_FTIS_DATUM
I_DZTERM = FTIS_DATUM-INITIAL
I_GJAHR = FTIS_GJAHR-INITIAL
IMPORTING
E_GJAHR = G_FTIS_GJAHR
E_MONAT = G_FTIS_MONAT.
IF NOT GIT_COST IS INITIAL.
CLEAR: GWA_BSIS, GWA_TOTALBSIS.
REFRESH: GIT_BSIS, GIT_TOTALBSIS.
SELECT
HKONT
SHKZG
DMBTR
KOSTL
FROM BSIS
INTO TABLE GIT_BSIS
WHERE BUKRS = P_COCODE
AND HKONT in R_HKONT
AND GJAHR = G_FTIS_GJAHR
AND MONAT = G_FTIS_MONAT
AND KOSTL eq g_KOSTL.
IF SY-SUBRC EQ 0.
LOOP AT GIT_BSIS INTO GWA_BSIS.
SHIFT GWA_BSIS-HKONT LEFT DELETING LEADING '0'.
GWA_TOTALBSIS-HKONT = GWA_BSIS-HKONT.
GWA_TOTALBSIS-KOSTL = GWA_BSIS-KOSTL.
IF GWA_BSIS-SHKZG = 'H'.
GWA_TOTALBSIS-DMBTR = GWA_BSIS-DMBTR * -1.
ELSE.
GWA_TOTALBSIS-DMBTR = GWA_BSIS-DMBTR.
ENDIF.
APPEND GWA_TOTALBSIS TO GIT_TOTALBSIS.
CLEAR: GWA_TOTALBSIS, GWA_BSIS.
ENDLOOP.
SORT GIT_TOTALBSIS ASCENDING BY HKONT KOSTL.
ENDIF.
ENDIF.
ENDFORM. " get_values_bsis
&----
*& Form dispaly_items
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPALY_ITEMS .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = GFL_ITEMSLAYOUT
IT_FIELDCAT = GIT_ITEMSFIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GIT_TOTALBSIS
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. " dispaly_items
reward points if helpful
regards,
venkatesh
2007 Jun 11 12:56 PM
Hi
report yh645_secndry_alv.
type-pools: slis.
data: fieldcat type slis_t_fieldcat_alv,
fieldcat_ln like line of fieldcat,
fs_layout type slis_layout_alv,
t_layoout like standard table
of fs_layout.
data: begin of fs_spfli,
carrid type spfli-carrid,
connid type spfli-connid,
countryfr type spfli-countryfr,
cityfrom type spfli-cityfrom,
airpfrom type spfli-airpfrom,
countryto type spfli-countryto,
cityto type spfli-cityto,
airpto type spfli-airpto,
fltime type spfli-fltime,
deptime type spfli-deptime,
arrtime type spfli-arrtime,
distance type spfli-distance,
distid type spfli-distid,
fltype type spfli-fltype,
period type spfli-period,
checkbox,
color(3),
end of fs_spfli.
data:
begin of fs_table,
carrid type spfli-carrid,
connid type spfli-connid,
end of fs_table.
data: begin of fs_sflight,
check,
color(3).
include type sflight.
data:end of fs_sflight.
data:
begin of fs_table1,
carrid type sflight-carrid,
connid type sflight-connid,
fldate type sflight-fldate,
end of fs_table1.
data:
t_spfli like standard table
of fs_spfli.
data:
t_table like standard table
of fs_table.
data:
t_table1 like standard table
of fs_table1.
data:
t_sflight like standard table
of fs_sflight.
data:
t_sbook like standard table
of sbook.
data t_layout type slis_layout_alv.
select *
into corresponding fields of table t_spfli
from spfli.
perform start_list_viewer.
perform get_spfli_details.
&----
*& Form SUB1
&----
text
----
-->RT_EXTAB text
----
form sub1 using rt_extab type slis_t_extab.
data: flight type slis_extab.
flight-fcode = 'SFLIGHT'.
append flight to rt_extab.
set pf-status 'SFLIGHT'. " EXCLUDING RT_EXTAB.
endform. "SUB1
&----
*& Form START_LIST_VIEWER
&----
text
----
--> p1 text
<-- p2 text
----
form start_list_viewer .
data: pgm like sy-repid.
pgm = sy-repid.
fs_layout-box_fieldname = 'CHECKBOX'.
fs_layout-info_fieldname = 'COLOR'.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = pgm
i_callback_pf_status_set = 'SUB1'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'SPFLI'
is_layout = fs_layout
tables
t_outtab = t_spfli
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. " START_LIST_VIEWER
*******Process Call Back Events (Begin)**************************
form user_command using ucomm like sy-ucomm
selfield type slis_selfield.
case ucomm.
when 'SFLIGHT'.
selfield-refresh = 'X'.
perform get_spfli_details.
select *
from sflight
into corresponding fields of table t_sflight
for all entries in t_table
where carrid eq t_table-carrid
and connid eq t_table-connid.
perform display_sflight.
when 'SBOOK'.
selfield-refresh = 'X'.
perform get_sflight_details.
select *
from sbook
into corresponding fields of table t_sbook
for all entries in t_table1
where carrid eq t_table1-carrid
and connid eq t_table1-connid
and fldate eq t_table1-fldate.
perform display_sbook.
endcase.
endform. "USER_COMMAND
&----
*& Form SUB2
&----
text
----
-->RT_EXTAB text
----
form sub2 using rt_extab type slis_t_extab.
data: flight type slis_extab.
flight-fcode = 'SBOOK'.
append flight to rt_extab.
set pf-status 'SBOOK'. " EXCLUDING RT_EXTAB.
endform. "SUB2
&----
*& Form DISPLAY_SFLIGHT
&----
text
----
--> p1 text
<-- p2 text
----
form display_sflight .
data: pgm like sy-repid.
pgm = sy-repid.
clear t_layout.
fs_layout-box_fieldname = 'CHECK'.
fs_layout-info_fieldname = 'COLOR'.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = pgm
i_callback_pf_status_set = 'SUB2'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'SFLIGHT'
is_layout = fs_layout
tables
t_outtab = t_sflight
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_SFLIGHT
&----
*& Form GET_SPFLI_DETAILS
&----
text
----
--> p1 text
<-- p2 text
----
form get_spfli_details .
loop at t_spfli into fs_spfli.
if fs_spfli-checkbox = 'X'.
fs_spfli-color = 'C51'.
fs_spfli-checkbox = '1'.
fs_table-carrid = fs_spfli-carrid.
fs_table-connid = fs_spfli-connid.
append fs_table to t_table.
modify t_spfli from fs_spfli.
endif.
endloop.
endform. " GET_SFLIGHT_DETAILS
&----
*& Form GET_SFLIGHT_DETAILS
&----
text
----
--> p1 text
<-- p2 text
----
form get_sflight_details .
loop at t_sflight into fs_sflight.
if fs_sflight-check = 'X'.
fs_sflight-color = 'C71'.
fs_sflight-check = '1'.
fs_table1-carrid = fs_sflight-carrid.
fs_table1-connid = fs_sflight-connid.
fs_table1-fldate = fs_sflight-fldate.
append fs_table1 to t_table1.
modify t_sflight from fs_sflight.
endif.
endloop.
endform. " GET_SFLIGHT_DETAILS
&----
*& Form DISPLAY_SBOOK
&----
text
----
--> p1 text
<-- p2 text
----
form display_sbook .
data: pgm like sy-repid.
pgm = sy-repid.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = pgm
i_structure_name = 'SBOOK'
tables
t_outtab = t_sbook
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_SBOOK
Simple ALV report
http://www.sapgenie.com/abap/controls/alvgrid.htm
http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
ALV
1. Please give me general info on ALV.
http://www.sapfans.com/forums/viewtopic.php?t=58286
http://www.sapfans.com/forums/viewtopic.php?t=76490
http://www.sapfans.com/forums/viewtopic.php?t=20591
http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
2. How do I program double click in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=11601
http://www.sapfans.com/forums/viewtopic.php?t=23010
3. How do I add subtotals (I have problem to add them)...
http://www.sapfans.com/forums/viewtopic.php?t=20386
http://www.sapfans.com/forums/viewtopic.php?t=85191
http://www.sapfans.com/forums/viewtopic.php?t=88401
http://www.sapfans.com/forums/viewtopic.php?t=17335
4. How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
5. How to print page number / total number of pages X/XX in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
http://www.sapfans.com/forums/viewtopic.php?t=64320
http://www.sapfans.com/forums/viewtopic.php?t=44477
7. How can I set the cell color in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=52107
8. How do I print a logo/graphics in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=81149
http://www.sapfans.com/forums/viewtopic.php?t=35498
http://www.sapfans.com/forums/viewtopic.php?t=5013
9. How do I create and use input-enabled fields in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=84933
http://www.sapfans.com/forums/viewtopic.php?t=69878
10. How can I use ALV for reports that are going to be run in background?
http://www.sapfans.com/forums/viewtopic.php?t=83243
http://www.sapfans.com/forums/viewtopic.php?t=19224
11. How can I display an icon in ALV? (Common requirement is traffic light icon).
http://www.sapfans.com/forums/viewtopic.php?t=79424
http://www.sapfans.com/forums/viewtopic.php?t=24512
12. How can I display a checkbox in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=88376
http://www.sapfans.com/forums/viewtopic.php?t=40968
http://www.sapfans.com/forums/viewtopic.php?t=6919
13. Top-of-page in ALV
14. ALV Group Heading
http://www.sap-img.com/fu037.htm
How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
Go thru these programs they may help u to try on some hands on
ALV Demo program
BCALV_DEMO_HTML
BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
BCALV_GRID_DEMO Simple ALV Control Call Demo Program
BCALV_TREE_DEMO Demo for ALV tree control
BCALV_TREE_SIMPLE_DEMO
BC_ALV_DEMO_HTML_D0100
<b>Reward points for useful Answers</b>
Regards
Anji
2007 Jun 11 12:57 PM
REPORT YZMMR_002A_GRN_REPORT_BUYER .
Global Types
----
INCLUDE <ICON>.
TYPE-POOLS: SLIS.
----
Declaration of constants *
----
CONSTANTS:FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'F_TOP_OF_PAGE'.
----
Declaration for Internal Tables used in ALV
----
Internal tables used by ALV
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
AFIELD LIKE LINE OF FIELDCAT,
IT_STATUS TYPE SLIS_FORMNAME VALUE 'F_MAIN',
IT_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND',
IT_EVENTS TYPE SLIS_T_EVENT,
IT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT,
IT_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
IT_EXCLUDING TYPE SLIS_T_EXTAB,
IT_SORT TYPE SLIS_T_SORTINFO_ALV.
Variables used by ALV
DATA: WK_VARIANT LIKE DISVARIANT,
WX_VARIANT LIKE DISVARIANT,
WK_VARIANT_SAVE(1) TYPE C,
WK_EXIT(1) TYPE C,
WK_REPID LIKE SY-REPID,
WK_USER_SPECIFIC(1) TYPE C,
WK_CALLBACK_UCOMM TYPE SLIS_FORMNAME,
WK_PRINT TYPE SLIS_PRINT_ALV,
WK_LAYOUT TYPE SLIS_LAYOUT_ALV,
WK_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME,
WK_FIELDCAT_ALV LIKE LINE OF IT_FIELDCAT_ALV,
WK_EXCLUDING LIKE LINE OF IT_EXCLUDING,
WK_EVENTS LIKE LINE OF IT_EVENTS,
WK_EVENT_EXIT LIKE LINE OF IT_EVENT_EXIT,
WK_LIST_COMMENTS LIKE LINE OF IT_LIST_COMMENTS,
WK_SORT LIKE LINE OF IT_SORT.
TABLES : MSEG,
MKPF,
LFA1,
MARC,
MARD,
T001W,
MARA,
T024.
DATA : BEGIN OF IT_GRN OCCURS 0, "*** TEMP TABLE DECLARATION
EKGRP LIKE MARC-EKGRP, "BUYER CODE
MBLNR LIKE MSEG-MBLNR, "GRN NUMBER
MATNR LIKE MSEG-MATNR, "PART NUMBER
ERFMG LIKE MSEG-ERFMG, "REC QTY
DMBTR LIKE MSEG-DMBTR, "GRN VALUE
LIFNR LIKE MSEG-LIFNR, "VENDOR CODE
NAME1 LIKE LFA1-NAME1,
KTOKK LIKE LFA1-KTOKK,
MTART LIKE MARA-MTART,
BUDAT LIKE MKPF-BUDAT, "GRN DATE
XBLNR LIKE MKPF-XBLNR, "DC NO
BLDAT LIKE MKPF-BLDAT, "DC DATE
MAKTX LIKE MAKT-MAKTX, "PART DESC
LABST LIKE MARD-LABST, "STOCK
INSME LIKE MARD-INSME, "STOCK IN QUALITY INSPECTION
EKNAM LIKE T024-EKNAM, "BUYER NAME
END OF IT_GRN.
DATA : BEGIN OF IT_MSEG OCCURS 0, "*** TEMP TABLE DECLARATION
MBLNR LIKE MSEG-MBLNR, "GRN NUMBER
MATNR LIKE MSEG-MATNR, "PART NUMBER
ERFMG LIKE MSEG-ERFMG, "REC QTY
DMBTR LIKE MSEG-DMBTR, "GRN VALUE
LIFNR LIKE MSEG-LIFNR, "VENDOR CODE
BUDAT LIKE MKPF-BUDAT, "GRN DATE
XBLNR LIKE MKPF-XBLNR, "DC NO
BLDAT LIKE MKPF-BLDAT, "DC DATE
END OF IT_MSEG.
DATA : BEGIN OF IT_MSEG1 OCCURS 0,
MBLNR LIKE MSEG-MBLNR, "GRN NUMBER
MATNR LIKE MSEG-MATNR, "PART NUMBER
ERFMG LIKE MSEG-ERFMG, "REC QTY
DMBTR LIKE MSEG-DMBTR, "GRN VALUE
LIFNR LIKE MSEG-LIFNR, "VENDOR CODE
END OF IT_MSEG1.
DATA : BEGIN OF IT_MKPF1 OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
BUDAT LIKE MKPF-BUDAT,
XBLNR LIKE MKPF-XBLNR,
BLDAT LIKE MKPF-BLDAT,
END OF IT_MKPF1.
DATA : BEGIN OF IT_LFA1 OCCURS 0, "*** TEMP TABLE DECLARATION
LIFNR LIKE LFA1-LIFNR, "VENDOR NUMBER
NAME1 LIKE LFA1-NAME1, "VENDOR NAME
KTOKK LIKE LFA1-KTOKK,
END OF IT_LFA1.
DATA : BEGIN OF IT_WERKS OCCURS 0, "*** TEMP TABLE DECLARATION
WERKS LIKE T001W-WERKS, "PLANT
NAME1 LIKE T001W-NAME1, "PLANT NAME
END OF IT_WERKS.
DATA : BEGIN OF IT_MAKT OCCURS 0, "*** TEMP TABLE DECLARATION
MAKTX LIKE MAKT-MAKTX, "PART DESC
MATNR LIKE MAKT-MATNR, "PART NO
END OF IT_MAKT.
DATA : BEGIN OF IT_BYR OCCURS 0, "*** TEMP TABLE DECLARATION
MATNR LIKE MARC-MATNR, "PART NO
EKGRP LIKE MARC-EKGRP, "BUYER CODE
EKNAM LIKE T024-EKNAM, "BUYER NAME
END OF IT_BYR.
DATA : BEGIN OF IT_MARC1 OCCURS 0,
MATNR LIKE MARC-MATNR,
EKGRP LIKE MARC-EKGRP,
END OF IT_MARC1.
DATA : BEGIN OF IT_MARD OCCURS 0, "*** TEMP TABLE DECLARATION
MATNR LIKE MARD-MATNR, "PART NO
LABST LIKE MARD-LABST, "UNRES STOK
INSME LIKE MARD-INSME, "STOK IN QUALITY
END OF IT_MARD.
DATA : BEGIN OF IT_BYR1 OCCURS 0, "*** TEMP TABLE DECLARATION
EKGRP LIKE T024-EKGRP, "BUYER CODE
EKNAM LIKE T024-EKNAM, "BUYER NAME
END OF IT_BYR1.
DATA : BEGIN OF IT_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART, "MATERIAL TYPE
END OF IT_MARA.
DATA : BEGIN OF IT_FINAL_ALV OCCURS 0,
EKGRP LIKE MARC-EKGRP, "BUYER CODE
MBLNR LIKE MSEG-MBLNR, "GRN NUMBER
MATNR LIKE MSEG-MATNR, "PART NUMBER
ERFMG LIKE MSEG-ERFMG, "REC QTY
DMBTR LIKE MSEG-DMBTR, "GRN VALUE
LIFNR LIKE MSEG-LIFNR, "VENDOR CODE
NAME1 LIKE LFA1-NAME1,
KTOKK LIKE LFA1-KTOKK,
MTART LIKE MARA-MTART,
BUDAT LIKE MKPF-BUDAT, "GRN DATE
XBLNR LIKE MKPF-XBLNR, "DC NO
BLDAT LIKE MKPF-BLDAT, "DC DATE
MAKTX LIKE MAKT-MAKTX, "PART DESC
LABST LIKE MARD-LABST, "STOCK
INSME LIKE MARD-INSME, "STOCK IN QUALITY INSPECTION
EKNAM LIKE T024-EKNAM, "BUYER NAME
END OF IT_FINAL_ALV.
DATA : WK_ICON(50) TYPE C,
WK_FIELD(100) TYPE C,
WK_TITLE1(70) TYPE C.
WK_ICON = ICON_LIST.
SELECTION-SCREEN BEGIN OF BLOCK GRNBLK WITH FRAME TITLE TEXT-001.
PARAMETERS P_WERKS LIKE MSEG-WERKS OBLIGATORY. " FOR PLANT SELECTION
SELECT-OPTIONS : S_DATE FOR MKPF-BUDAT OBLIGATORY. "DEFAULT SY-DATUM.
SELECT-OPTIONS : S_EKGRP FOR MARC-EKGRP.
SELECT-OPTIONS : S_LGORT FOR MARD-LGORT ,
S_KTOKK FOR LFA1-KTOKK OBLIGATORY,
S_MTART FOR MARA-MTART OBLIGATORY.
SELECTION-SCREEN END OF BLOCK GRNBLK.
IF S_DATE-HIGH EQ '00000000' OR S_DATE-HIGH EQ ''.
MOVE S_DATE-LOW TO S_DATE-HIGH.
ENDIF.
AT SELECTION-SCREEN.
START-OF-SELECTION.
SELECT DISTINCT
A~MBLNR
A~MATNR
A~ERFMG
A~DMBTR
A~LIFNR
B~BUDAT
B~XBLNR
B~BLDAT
INTO CORRESPONDING FIELDS OF TABLE IT_MSEG
FROM ( MSEG AS A INNER JOIN MKPF AS B
ON AMBLNR = BMBLNR ) WHERE WERKS = P_WERKS
AND XBLNR NE ''
AND ( ABWART = '101' OR ABWART = '102'
OR ABWART = '103' OR ABWART = '105' )
AND B~BUDAT IN S_DATE
" AND B~VGART = 'WE'
AND A~MATNR IN ( SELECT MATNR FROM MARC
WHERE EKGRP IN S_EKGRP AND BESKZ = 'F' AND
SOBSL = '' ) AND A~MATNR IN ( SELECT
MATNR FROM MARD WHERE LGORT IN S_LGORT )
AND A~MATNR IN ( SELECT MATNR FROM MARA WHERE MTART IN S_MTART ).
*
SELECT MBLNR BUDAT XBLNR BLDAT FROM MKPF INTO TABLE IT_MKPF1
WHERE BUDAT IN S_DATE.
IF SY-SUBRC EQ 0.
SELECT MBLNR MATNR ERFMG DMBTR LIFNR
FROM MSEG INTO TABLE IT_MSEG1
FOR ALL ENTRIES IN IT_MKPF1
WHERE MBLNR = IT_MKPF1-MBLNR.
ENDIF.
LOOP AT IT_MSEG.
READ TABLE IT_MKPF1 WITH KEY MBLNR = IT_MSEG-MBLNR.
IF SY-SUBRC EQ 0.
MOVE: IT_MKPF1-XBLNR TO IT_MSEG-XBLNR,
IT_MKPF1-BUDAT TO IT_MSEG-BUDAT,
IT_MKPF1-BLDAT TO IT_MSEG-BLDAT.
MODIFY IT_MSEG1.
CLEAR IT_MSEG1.
ENDIF.
ENDLOOP.
SELECT DISTINCT A~EKGRP
A~MATNR
B~EKNAM
INTO CORRESPONDING FIELDS OF TABLE IT_BYR
FROM ( MARC AS A INNER JOIN T024 AS B
ON A~EKGRP = B~EKGRP )
FOR ALL ENTRIES IN IT_MSEG
WHERE A~MATNR = IT_MSEG-MATNR AND A~EKGRP
IN S_EKGRP.
SELECT LIFNR
NAME1
KTOKK
INTO CORRESPONDING FIELDS OF TABLE IT_LFA1
FROM LFA1 FOR ALL ENTRIES IN IT_MSEG
WHERE LIFNR = IT_MSEG-LIFNR
AND KTOKK IN S_KTOKK.
SELECT MATNR
MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MAKT
FROM MAKT FOR ALL ENTRIES IN IT_MSEG
WHERE MATNR = IT_MSEG-MATNR.
SELECT MATNR
LABST
INSME
INTO CORRESPONDING FIELDS OF TABLE IT_MARD
FROM MARD FOR ALL ENTRIES IN IT_MSEG
WHERE MATNR = IT_MSEG-MATNR AND LGORT IN S_LGORT.
SELECT WERKS
NAME1
INTO CORRESPONDING FIELDS OF TABLE IT_WERKS
FROM T001W WHERE
WERKS = P_WERKS.
END-OF-SELECTION.
LOOP AT IT_MSEG.
IT_GRN-MBLNR = IT_MSEG-MBLNR.
IT_GRN-MATNR = IT_MSEG-MATNR.
IT_GRN-ERFMG = IT_MSEG-ERFMG.
IT_GRN-DMBTR = IT_MSEG-DMBTR.
IT_GRN-LIFNR = IT_MSEG-LIFNR.
IT_GRN-BUDAT = IT_MSEG-BUDAT.
IT_GRN-XBLNR = IT_MSEG-XBLNR.
IT_GRN-BLDAT = IT_MSEG-BLDAT.
READ TABLE IT_BYR WITH KEY MATNR = IT_MSEG-MATNR.
IF SY-SUBRC = 0.
MOVE IT_BYR-EKGRP TO IT_GRN-EKGRP.
MOVE IT_BYR-EKNAM TO IT_GRN-EKNAM.
ENDIF.
READ TABLE IT_LFA1 WITH KEY LIFNR = IT_MSEG-LIFNR.
KTOKK = S_KTOKK.
IF SY-SUBRC = 0.
MOVE IT_LFA1-NAME1 TO IT_GRN-NAME1.
move it_lfa1-ktokk to it_grn-ktokk.
ENDIF.
READ TABLE IT_MAKT WITH KEY MATNR = IT_MSEG-MATNR.
IF SY-SUBRC = 0.
MOVE IT_MAKT-MAKTX TO IT_GRN-MAKTX.
ENDIF.
READ TABLE IT_MARD WITH KEY MATNR = IT_MSEG-MATNR.
IF SY-SUBRC = 0.
MOVE IT_MARD-LABST TO IT_GRN-LABST.
MOVE IT_MARD-INSME TO IT_GRN-INSME.
ENDIF.
APPEND IT_GRN.
CLEAR IT_GRN .
ENDIF.
ENDLOOP.
SORT IT_GRN.
DATA : X TYPE I ,
STK TYPE I,
VAL(15) TYPE C .
X = 0.
VAL = 0.
LOOP AT IT_GRN.
STK = 0 .
STK = IT_GRN-LABST + IT_GRN-INSME .
WRITE : /1 IT_GRN-MBLNR,
13 IT_GRN-NAME1,
52 IT_GRN-XBLNR,
63 IT_GRN-BLDAT,
74 IT_GRN-MATNR,
87 IT_GRN-MAKTX,
128 IT_GRN-EKGRP,
133 IT_GRN-ERFMG ,
150 IT_GRN-DMBTR,
168 STK.
180 IT_GRN-KTOKK.
186 IT_GRN-MTART.
AT END OF EKGRP.
SUM.
VAL = VAL + IT_GRN-DMBTR.
WRITE : 150 IT_GRN-DMBTR .
SKIP.
WRITE : 150 IT_GRN-DMBTR .
SKIP.
ENDAT.
X = X + 1.
VAL = VAL + IT_GRN-DMBTR.
ENDLOOP.
WRITE : 'Total Number of GRNs : ',
25 X .
WRITE : 128 'Total Value :',150 VAL.
write : 150 val.
SELECT DISTINCT EKGRP
EKNAM
INTO CORRESPONDING FIELDS OF TABLE IT_BYR1
FROM T024 WHERE EKGRP IN ( SELECT EKGRP FROM MARC
WHERE WERKS = P_WERKS ) AND EKGRP IN S_EKGRP.
*
SORT IT_BYR1.
SKIP.
SKIP.
WRITE / ' BUYER DETAILS '.
WRITE / SY-ULINE(178).
WRITE / SY-ULINE(190).
LOOP AT IT_BYR1.
WRITE: /2 IT_BYR1-EKGRP,
8 IT_BYR1-EKNAM.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD WK_FIELD.
IF WK_FIELD EQ 'ICON_LIST'.
PERFORM CREATE_ALV_LIST.
ENDIF.
TOP-OF-PAGE.
FORMAT HOTSPOT ON.
WRITE :4 ICON_LIST AS ICON,
8 'Alv Grid Option'.
FORMAT HOTSPOT OFF.
READ TABLE IT_WERKS.
WRITE : / 'PLANT : ' ,
10 IT_WERKS-WERKS,
18 IT_WERKS-NAME1,
142 'RUN DATE : ',
154 SY-DATUM,
/ 'GRN REPORT FOR THE PERIOD FROM ',
S_DATE-LOW , 'TO' , S_DATE-HIGH,
156 'Page No. : ' ,
168 SY-PAGNO,
/ SY-ULINE(178),
/1 'GRN NUM',
13 'VENDOR DESCRIPTION',
52 'DC NUM',
63 'DC DATE',
74 'PART NUM',
97 'PART DESCRIPTION',
128 'BYR',
142 'REC QTY',
156 'GRN VALUE',
168 'CLOSING BAL',
180 'GROUP',
186 'MTYPE',
/ SY-ULINE(178).
/ SY-ULINE(190).
END-OF-PAGE.
WRITE / SY-ULINE(178).
WRITE / SY-ULINE(190).
&----
*& Form CREATE_ALV_LIST
&----
text
----
--> p1 text
<-- p2 text
----
FORM CREATE_ALV_LIST .
LOOP AT IT_GRN.
MOVE-CORRESPONDING IT_GRN TO IT_FINAL_ALV.
APPEND IT_FINAL_ALV.
CLEAR IT_FINAL_ALV.
ENDLOOP.
PERFORM F_FIELDCAT_BUILD.
PERFORM F_EVENT_BUILD.
PERFORM F_EXCLUDE_BUILD.
PERFORM F_PRINT_BUILD.
PERFORM F_LAYOUT_BUILD.
WK_CALLBACK_UCOMM = 'CALLBACK_UCOMM'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'SIWB_WALLPAPER'
I_CALLBACK_PROGRAM = WK_REPID
I_CALLBACK_HTML_TOP_OF_PAGE = WK_HTML_TOP_OF_PAGE
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = WK_VARIANT
IS_LAYOUT = WK_LAYOUT
I_CALLBACK_USER_COMMAND = WK_CALLBACK_UCOMM
IT_FIELDCAT = FIELDCAT
IT_EVENTS = IT_EVENTS
IT_EVENT_EXIT = IT_EVENT_EXIT
IT_EXCLUDING = IT_EXCLUDING
IS_PRINT = WK_PRINT
TABLES
T_OUTTAB = IT_GRN.
ENDFORM. " CREATE_ALV_LIST
&----
*& Form F_FIELDCAT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_FIELDCAT_BUILD .
WK_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = WK_REPID
I_INTERNAL_TABNAME = 'IT_GRN'
I_INCLNAME = WK_REPID
CHANGING
CT_FIELDCAT = FIELDCAT.
LOOP AT FIELDCAT INTO AFIELD.
CASE AFIELD-FIELDNAME.
WHEN 'VERPR '.
AFIELD-SELTEXT_M = 'Rate'.
WHEN 'LGORT_I'.
AFIELD-SELTEXT_M = 'Location'.
WHEN 'KONTS'.
AFIELD-SELTEXT_M = 'Stock Code'.
WHEN OTHERS.
ENDCASE.
MODIFY FIELDCAT FROM AFIELD.
ENDLOOP.
ENDFORM. " F_FIELDCAT_BUILD
&----
*& Form F_EVENT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_EVENT_BUILD .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IT_EVENTS.
READ TABLE IT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO WK_EVENTS.
IF SY-SUBRC = 0.
MOVE FORMNAME_TOP_OF_PAGE TO WK_EVENTS-FORM.
MODIFY IT_EVENTS FROM WK_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " F_EVENT_BUILD
&----
*& Form F_EXCLUDE_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_EXCLUDE_BUILD .
WK_EXCLUDING = '&GRAPH'. "Graphic
APPEND WK_EXCLUDING TO IT_EXCLUDING.
ENDFORM. " F_EXCLUDE_BUILD
&----
*& Form F_PRINT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_PRINT_BUILD .
WK_PRINT-NO_PRINT_LISTINFOS = 'X'.
ENDFORM. " F_PRINT_BUILD
&----
*& Form F_LAYOUT_BUILD
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_LAYOUT_BUILD .
WK_LAYOUT-ZEBRA = 'X'.
wk_layout-no_vline = 'X'.
WK_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WK_LAYOUT-DETAIL_POPUP = 'X'.
WK_LAYOUT-TOTALS_TEXT = 'X'.
ENDFORM. " F_LAYOUT_BUILD
----
FORM F_TOP_OF_PAGE *
----
FORM F_TOP_OF_PAGE.
DATA: WK_FMDATE(10),
WK_TODATE(10).
*
CLEAR: IT_LIST_COMMENTS[].
CONCATENATE WK_TITLE WK_SPACE P_LFGJA INTO WK_TITLE1.
WK_LIST_COMMENTS-TYP = 'H'. "H=Header, S=Selection, A=Action
WK_LIST_COMMENTS-KEY = ''.
WK_LIST_COMMENTS-INFO = 'GRN Listing Buyerwise' .
APPEND WK_LIST_COMMENTS TO IT_LIST_COMMENTS.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'ENJOYSAP_LOGO'
IT_LIST_COMMENTARY = IT_LIST_COMMENTS.
ENDFORM. "F_TOP_OF_PAGE
2007 Jun 11 12:58 PM
HI,
check this code for multiple alv list displays
***&----
*& 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.
*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 for final internal table
*TYPES:BEGIN OF T_CHECK.
INCLUDE STRUCTURE BSIK.
*TYPES: END OF T_CHECK.
*TYPES: T_IT_CHECK TYPE STANDARD TABLE OF T_CHECK.
*DATA: GWA_CHECK TYPE T_CHECK.
*DATA: GIT_CHECK TYPE T_IT_CHECK.
*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,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-DMBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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,
BELNR TYPE BSIK-BELNR,
BLART TYPE BSIK-BLART,
GJAHR TYPE BSIK-GJAHR,
ZFBDT TYPE BSIK-ZFBDT,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-DMBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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,
BELNR TYPE BSIK-BELNR,
BLART TYPE BSIK-BLART,
GJAHR TYPE BSIK-GJAHR,
ZFBDT TYPE BSIK-ZFBDT,
WRBTR TYPE BSIK-WRBTR,
DAYS TYPE P0347-SCRDD,
DISCOUNT TYPE BSIK-WRBTR,
NETDUEDT TYPE BSIK-ZFBDT,
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.
*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
GIT_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 : G_VARIANT LIKE DISVARIANT.
DATA : G_VAR LIKE DISVARIANT.
DATA : G_ALV_VAR LIKE DISVARIANT.
*DATA : G_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA : G_POS TYPE I VALUE 1.
GIT_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.
*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 ,
GIT_LAYOUT,
GiT_FIELDCAT ,
GWA_FIELDCAT,
FIELDCAT_LN ,
G_LIST_TOP_OF_PAGE ,
G_POS,
G_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 ZFBDT GT P_DDATE
AND SHKZG = 'H'
AND ZLSPR = ' '.
IF SY-SUBRC NE 0.
MESSAGE E000(ZFI) WITH TEXT-004.
ENDIF.
SORT GIT_BSIK ASCENDING BY LIFNR ZFBDT BLART.
loop at git_bsik into GWA_BSIK.
if gwa_bsik-blart = 'GC'.
DELETE GIT_BSIK INDEX SY-TABIX.
endif.
endloop.
ENDFORM. " get_data
&----
*& Form field_catalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG .
G_POS = G_POS + 1.
PERFORM INIT_FIELD_CATALOG USING GiT_FIELDCAT[] " Field Catalog
G_POS " Column Position
'CHCK' " InTab Field Name
'GIT_BSIKM' " InTab Name
'2' " Output Length
'CHECK' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
'X' " checkbox
'X' " EDIT
'X'. " 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
'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
'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
'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
'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
'WRBTR' " InTab Field Name
'GIT_NOTPOST' " InTab Name
'20' " Output Length
'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
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
'Discount'
" Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " Do_sum field?
' ' " checkbox
' ' " EDIT
' '. " input
ENDFORM. " field_catalog
&----
*& Form field_catalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG_POST .
G_POS = G_POS + 1.
PERFORM INIT_FIELD_CATALOG USING GiT_FIELDCATPOST[] " Field Catalog
G_POS " Column Position
'CHCK' " InTab Field Name
'GIT_POST' " InTab Name
'2' " Output Length
'CHECK' " Column Name Text
' ' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
' ' " Do_sum field?
'X' " checkbox
'X' " EDIT
'X'. " input
CLEAR G_POS.
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
'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
'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
'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
'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
'WRBTR' " InTab Field Name
'GIT_POST' " InTab Name
'20' " Output Length
'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
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
'Discount'
" Column Name Text
'CURR' " Datatype
' ' " Key?
' ' " Row Position
' ' " Hotspot
' ' " Emphasize
'X' " 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.
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.
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.
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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = GIT_LAYOUT
IT_FIELDCAT = GiT_FIELDCATPOST " POST
I_TABNAME = 'GIT_POST'
IT_EVENTS = GiT_EVENTS[]
IT_SORT = git_sort[]
I_TEXT = ' '
IS_VARIANT = G_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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = GIT_LAYOUT
IT_FIELDCAT = GiT_FIELDCAT
I_TABNAME = 'GIT_NOTPOST' " NOT POSTED
IT_EVENTS = GiT_EVENTS1[]
IT_SORT = git_sort[]
I_TEXT = ' '
IS_VARIANT = G_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 = G_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
SELFIELD TYPE SLIS_SELFIELD.
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'.
*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-WRBTR TO L_DMBTR.
*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-WRBTR *
GWA_BSIK-DAYS * P_DRATE )
/ 36600.
ELSE.
GWA_BSIK-DISCOUNT = ( GWA_BSIK-WRBTR *
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 GIT_LAYOUT.
DATA : G_VARIANT LIKE DISVARIANT.
DATA : G_VAR LIKE DISVARIANT.
DATA : G_ALV_VAR LIKE DISVARIANT.
G_VAR-REPORT = 'ZFII_RFITEMAPLIST'.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = G_VAR
EXCEPTIONS
WRONG_INPUT = 1
NOT_FOUND = 2
PROGRAM_ERROR = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
G_VAR-VARIANT = '/SAPSUBTOT'.
G_ALV_VAR-REPORT = SY-REPID.
ELSE.
G_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.
SORT GIT_BSIKM ASCENDING BY NETDUEDT.
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
INTO TABLE GIT_CHECK1
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 GIT_BSIKM INTO GWA_BSIKM.
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.
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.
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.
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
reward points if helpful
regards,
venkatesh