2008 May 13 2:54 PM
Hi,
I have a report which uses ALV grid display for output display.
I have displayed a heder in the top_of_page option. while running the program in foregound the header gets displayed only once. but when executing in background the header is getting displayed for each and every page.
can any one tell me how to get the header displayed only once in the background also.
Hi,
I have a report which uses ALV grid display for output display.
I have displayed a heder in the top_of_page option. while running the program in foregound the header gets displayed only once. but when executing in background the header is getting displayed for each and every page.
can any one tell me how to get the header displayed only once in the background also.
2008 May 13 3:05 PM
2008 May 13 3:24 PM
REPORT ZBACKORD MESSAGE-ID VZ
NO STANDARD PAGE HEADING.
*&----
*
*& TABLES AND TYPE-POOLS *
*&----
*
Tables used
TABLES : VBAK, "Sales Document: Header Data
VBAP, "Sales Document: Item Data
VBPA. "Sales Document Partner
For ALV Display
TYPE-POOLS: SLIS. "Globale Typen für generische Listbausteine
*&----
*
*& CONSTANTS *
*&----
*
Constants Used
CONSTANTS:
C_X VALUE 'X', "Order status
C_TAPA(4) VALUE 'TAPA', "For Material Determination
C_0001(4) VALUE '0001', "Etenr value
C_A VALUE 'A', "Enable Save
C_US(3) VALUE 'US$', "US DOLLAR.
C_B VALUE 'B', "for Partially processed
C_E VALUE 'E', "Language
C_C VALUE 'C', "for completely processed
C_BLANK VALUE ' ', "Blank
C_IC1(4) VALUE '&IC1', "for user command
C_ZR(2) VALUE 'ZR', "Cs ReP No
C_BP(2) VALUE 'RE', "Bill to party
C_SH(2) VALUE 'WE', "Sold to party
C_6(6) VALUE '000000', "For item number
C_20(2) TYPE N VALUE '20', "For the length of the field
C_S(1) TYPE C VALUE 'S', "STOCK
C_H VALUE 'H', "Header
C_COL(1) TYPE C VALUE ':', " COLUMN FOR DATA AND TIME
C_TOP TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
"For TOP_OF_PAGE
C_USER TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
" For USER_COMMAND
*&----
*
*& TYPE DEFINITIONS *
*&----
*
*FOR Sales Document: Header Data
TYPES: BEGIN OF TP_VBAK,
VBELN TYPE VBELN_VF, "Sales Document
ERDAT TYPE ERDAT, "Date on which the record was created
AUART TYPE AUART, "Sales document type
LIFSK TYPE LIFSK, "Delivery block
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
END OF TP_VBAK.
*FOR Sales Document Business Data
TYPES :BEGIN OF TP_VBKD,
VBELN TYPE VBELN, "Sales and distribution document number
POSNR TYPE POSNR, "Item number of the SD document
INCO1 TYPE INCO1, "Incoterms
ZTERM TYPE DZTERM, "Terms of payment key
BSTKD TYPE BSTKD, "Customer purchase order number
END OF TP_VBKD.
TYPES : BEGIN OF TP_VBFA,
VBELV TYPE VBELN_VON,
POSNV TYPE POSNR_VON,
END OF TP_VBFA.
*FOR Sales Document: Partner
TYPES : BEGIN OF TP_VBPA,
VBELN TYPE VBELN, "Sales and distribution
PARVW TYPE PARVW, "Partner function
KUNNR TYPE KUNNR, "Customer Number 1
ADRNR TYPE ADRNR, "address
END OF TP_VBPA.
*FOR Addresses (Business Address Services)
TYPES : BEGIN OF TP_ADRC,
ADDRNUMBER TYPE AD_ADDRNUM, "Address
DATE_FROM TYPE AD_DATE_FR, "Date valid from
NATION TYPE AD_NATION, "International address
NAME1 TYPE AD_NAME1, "name
END OF TP_ADRC.
*FOR Sales Document: Item Data
TYPES: BEGIN OF TP_VBAP,
VBELN TYPE VBELN_VA, "Sales document
POSNR TYPE POSNR_VA, "Sales document item
MATNR TYPE MATNR, "Material Number
PSTYV TYPE PSTYV, "Sales document item category
KDMAT TYPE MATNR_KU, "Material number used by customer
VRKME TYPE VRKME, "Sales unit
WERKS TYPE WERKS_EXT, "Plant (Own or External)
VSTEL TYPE VSTEL, "Shipping point /Receiving point
NETPR TYPE NETPR, "Net p
NETWR TYPE NETWR_AP,
WAERK TYPE VBAP-WAERK,"Target outline doc currency
END OF TP_VBAP.
*for Sales Document: Schedule Line Data
TYPES: BEGIN OF TP_VBEP,
VBELN TYPE VBELN_VA, "Sales document
POSNR TYPE POSNR_VA, "Sales Document Item
ETENR TYPE ETENR, "Schedule line
EDATU TYPE EDATU, "Schedule line data
WMENG TYPE WMENG, "Order quantity in sales unit
BMENG TYPE BMENG, "Confirmed quantity
LMENG TYPE LMENG, "Required quantity
WADAT TYPE WADAT, "Goods issue date
LIFSP TYPE LIFSP_EP, "Schedule line blocked for delivery
END OF TP_VBEP.
*For Sales Document: Header Status and Administrative Data
TYPES : BEGIN OF TP_VBUK,
VBELN TYPE VBELN, "Sales and Distribution Document Number
SPSTG TYPE SPSTG, "Overall blocked status
CMGST TYPE CMGST,
END OF TP_VBUK.
TYPES : BEGIN OF TP_TVLST,
LIFSP TYPE LIFSP, "Default delivery block
VTEXT TYPE BEZEI_LIFSP, "Description
END OF TP_TVLST.
*FOR Sales Document: Item Status
TYPES : BEGIN OF TP_VBUP,
VBELN TYPE VBELN, "Sales and distribution
POSNR TYPE POSNR, "Item number of the SD
LFGSA TYPE LFGSA, "Overall delivery status of item
END OF TP_VBUP.
For ALV Display-if cs rep is checked
TYPES: BEGIN OF TP_DISPC,
VBELN TYPE VBELN, "Sales and distribution Doc
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
BSTKD TYPE BSTKD, "Customer purchase order
KUNNR_1 TYPE KUNNR, "Cs Rep Number
NAME1_1 TYPE NAME1, "Cs Rep Name
KUNNR_2 TYPE KUNNR, "Bill to Number
NAME1_2 TYPE NAME1, "Bill to Party
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Party
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used by
VSTEL TYPE VSTEL, "Shipping point /Receiving
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales unit
LOGIC_1 TYPE WMENG, "BackOrder Quantity
VRKME TYPE STRING, "Sales Unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
EDATU TYPE EDATU, "Schedule line data
VRKME_1 TYPE STRING, "Sales Unit
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of item
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
END OF TP_DISPC.
For ALV Display-if plant is checked
TYPES: BEGIN OF TP_DISPP,
VBELN TYPE VBELN, "Sales and distribution Doc
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
BSTKD TYPE BSTKD, "Customer purchase order
KUNNR_2 TYPE KUNNR, "Cs rep number
NAME1_2 TYPE NAME1, "Cs rep Name
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Party Name
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used by customer
VSTEL TYPE VSTEL, "Shipping point /Receiving point
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
*}MOD02
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales unit
LOGIC_1 TYPE WMENG, "Backorder Quantity
VRKME TYPE STRING, "Sales unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
EDATU TYPE EDATU, "Schedule line data
VRKME_1 TYPE STRING, "Sales Unit
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of item
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
WERKS TYPE WERKS_EXT, "Plant (Own or External)
END OF TP_DISPP.
For ALV Display-if cs rep and palnt is checked
TYPES: BEGIN OF TP_DISP,
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
VBELN TYPE VBELN, "Sales and distribution Doc no
BSTKD TYPE BSTKD, "Customer purchase order number
KUNNR_1 TYPE KUNNR, "Cs Rep Number
NAME1_1 TYPE NAME1, "Cs Rep Name
KUNNR_2 TYPE KUNNR, "Bill to Number
NAME1_2 TYPE NAME1, "Bill to Name
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Name
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used
VSTEL TYPE VSTEL, "Shipping point /Receiving
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales
LOGIC_1 TYPE WMENG, "Backorder Quantity
VRKME TYPE STRING, "Sales unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
VRKME_1 TYPE STRING, "Sales Unit
EDATU TYPE EDATU, "Schedule line date
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
WERKS TYPE WERKS_EXT, "Plant (Own or External)
END OF TP_DISP.
*&----
*
*& INTERNAL TABLES *
*&----
*
Internal Tables used for Data Selection
DATA: T_VBAK TYPE STANDARD TABLE OF TP_VBAK WITH HEADER LINE,
T_VBPA TYPE STANDARD TABLE OF TP_VBPA WITH HEADER LINE,
T_VBAP TYPE STANDARD TABLE OF TP_VBAP WITH HEADER LINE,
T_VBKD TYPE STANDARD TABLE OF TP_VBKD WITH HEADER LINE,
T_VBEP TYPE STANDARD TABLE OF TP_VBEP WITH HEADER LINE,
T_VBEP1 TYPE STANDARD TABLE OF TP_VBEP WITH HEADER LINE,
T_VBUP TYPE STANDARD TABLE OF TP_VBUP WITH HEADER LINE,
T_ADRC TYPE STANDARD TABLE OF TP_ADRC WITH HEADER LINE,
T_DISPC TYPE STANDARD TABLE OF TP_DISPC WITH HEADER LINE,
T_DISPP TYPE STANDARD TABLE OF TP_DISPP WITH HEADER LINE,
T_DISP TYPE STANDARD TABLE OF TP_DISP WITH HEADER LINE.
{23-8-2007
DATA: T_VBUK TYPE STANDARD TABLE OF TP_VBUK WITH HEADER LINE,
T_TVLST TYPE STANDARD TABLE OF TP_TVLST WITH HEADER LINE,
T_TVLST1 TYPE STANDARD TABLE OF TP_TVLST WITH HEADER LINE,
T_VBFA TYPE STANDARD TABLE OF TP_VBFA WITH HEADER LINE.
}
*&----
*
Variables used for ALV Display *
*&----
*
DATA:
W_REPID TYPE SY-REPID, " Report name
W_POS TYPE I VALUE 0, " Column position indicator
W_LAYOUT TYPE SLIS_LAYOUT_ALV, " Layout
W_DATUM(10) TYPE C, " Run date
W_TIME(8) TYPE C. " Run time
*&----
*
Tables used for ALV Display *
*&----
*
DATA : T_GROUP TYPE SLIS_T_SP_GROUP_ALV WITH HEADER LINE,
"Grouping of field
T_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
"sorting of the field
T_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
" Field description
T_TOP TYPE SLIS_T_LISTHEADER. " Header for the ALV
*&----
*
Work Area used for ALV Display
*&----
-
DATA : WA_TOP LIKE LINE OF T_TOP. " Work Area for Header
*&----
*
*& SELECTION SCREEN *
*&----
*
Selection
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-T01.
"Sales Organization details
SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG OBLIGATORY.
"Sales Organization
SELECT-OPTIONS: S_VTWEG FOR VBAK-VTWEG .
"Distribution Channel
SELECT-OPTIONS: S_KUNNR1 FOR VBPA-KUNNR . "CS Rep Number
SELECT-OPTIONS: S_WERKS FOR VBAP-WERKS. "Plant
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK B02 WITH FRAME TITLE TEXT-T02.
"Additional Selections
SELECT-OPTIONS: S_KUNNR2 FOR VBPA-KUNNR . "Bill to party
SELECT-OPTIONS: S_KUNNR3 FOR VBPA-KUNNR . "Ship to party
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN . "Saler Order
SELECT-OPTIONS: S_MATNR FOR VBAP-MATNR . "Material Number
SELECT-OPTIONS: S_KDMAT FOR VBAP-KDMAT . "Customer Material Number
SELECT-OPTIONS: S_AUART FOR VBAK-AUART . "Sales Order Type
SELECTION-SCREEN END OF BLOCK B02.
SELECTION-SCREEN BEGIN OF BLOCK B03 WITH FRAME TITLE TEXT-T03.
"Date Selection
SELECT-OPTIONS: S_ERDAT FOR VBAK-ERDAT OBLIGATORY.
"Order Creation Date
PARAMETER: P_PLANT AS CHECKBOX. "Backorder Plant
PARAMETER: P_CSREP AS CHECKBOX. "Backorder CSREP number
SELECTION-SCREEN END OF BLOCK B03.
*&----
*
*& AT SELECTION SCREEN *
*&----
*
*Validation Sales Organisation
AT SELECTION-SCREEN ON S_VKORG.
IF NOT S_VKORG[] IS INITIAL.
SELECT VKORG UP TO 1 ROWS FROM TVKO
BYPASSING BUFFER
INTO S_VKORG
WHERE VKORG IN S_VKORG.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E01.
"Enter a valid Sales Organization
ENDIF.
ENDIF.
*Validation Distribution Channel
AT SELECTION-SCREEN ON S_VTWEG.
IF NOT S_VTWEG[] IS INITIAL.
SELECT VTWEG UP TO 1 ROWS FROM TVTW
BYPASSING BUFFER
INTO S_VTWEG
WHERE VTWEG IN S_VTWEG.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E02.
"Enter a valid Distribution channel
ENDIF.
ENDIF.
*Validation Customer service rep number
AT SELECTION-SCREEN ON S_KUNNR1.
IF NOT S_KUNNR1[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR1
WHERE KUNNR IN S_KUNNR1.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E03.
"Enter a valid Customer Service rep number
ENDIF.
ENDIF.
*Validation Plant
AT SELECTION-SCREEN ON S_WERKS.
IF NOT S_WERKS[] IS INITIAL.
SELECT WERKS UP TO 1 ROWS
FROM T001W
INTO S_WERKS
BYPASSING BUFFER
WHERE WERKS IN S_WERKS.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E04. "Enter a valid Plant
ENDIF.
ENDIF.
*Validation Bill to number
AT SELECTION-SCREEN ON S_KUNNR2.
IF NOT S_KUNNR2[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR2
WHERE KUNNR IN S_KUNNR2.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E05. "Enter a valid Bill to number
ENDIF.
ENDIF.
*Validation Ship to Number
AT SELECTION-SCREEN ON S_KUNNR3.
IF NOT S_KUNNR3[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR3
WHERE KUNNR IN S_KUNNR3.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E06. "Enter a valid Ship to number
ENDIF.
ENDIF.
*Validation Order Number
AT SELECTION-SCREEN ON S_VBELN.
IF NOT S_VBELN[] IS INITIAL.
SELECT VBELN UP TO 1 ROWS FROM VBUK
INTO S_VBELN
WHERE VBELN IN S_VBELN.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E07. "Enter a valid Order number
ENDIF.
ENDIF.
*Validation Material Number
AT SELECTION-SCREEN ON S_MATNR.
IF NOT S_MATNR[] IS INITIAL.
SELECT MATNR UP TO 1 ROWS FROM MARA
INTO S_MATNR
WHERE MATNR IN S_MATNR.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E08. "Enter a valid Material number
ENDIF.
ENDIF.
*Validation Customer Material Number
AT SELECTION-SCREEN ON S_KDMAT.
IF NOT S_KDMAT[] IS INITIAL.
SELECT KDMAT UP TO 1 ROWS
FROM KNMT
INTO S_KDMAT
WHERE VKORG IN S_VKORG AND
VTWEG IN S_VTWEG AND
KDMAT IN S_KDMAT.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E09.
"Enter a valid Customer Material number
ENDIF.
ENDIF.
*Validation Salea order type
AT SELECTION-SCREEN ON S_AUART.
IF NOT S_AUART[] IS INITIAL.
SELECT AUART UP TO 1 ROWS FROM TVAK
INTO S_AUART
BYPASSING BUFFER
WHERE AUART IN S_AUART.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E10.
"Enter a valid Sales Order type
ENDIF.
ENDIF.
*Validation for Plant / CS rep .
AT SELECTION-SCREEN .
IF NOT ( ( P_PLANT = C_X ) OR ( P_CSREP = C_X ) ).
MESSAGE E000 WITH TEXT-E12. "Choose the Plant or CSrep
ENDIF.
IF ( P_PLANT = C_X ) AND S_WERKS IS INITIAL.
MESSAGE E000 WITH TEXT-E13. "Enter Plant
ENDIF.
IF ( P_CSREP = C_X ) AND S_KUNNR1 IS INITIAL.
MESSAGE E000 WITH TEXT-E14. " Enter CSREP number
ENDIF.
*&----
*
*& START OF SELECTION *
*&----
*
START-OF-SELECTION.
Clear Work Areas/Variables and Clear/Refresh Internal Tables
PERFORM CLEAR_REFRESH.
Selection of Data as per inputs
PERFORM DATA_SELECTION.
Populate Internal table for display
PERFORM DATA_FILL_FOR_DISPLAY.
*&----
*
*& END OF SELECTION *
*&----
*
END-OF-SELECTION.
IF NOT T_DISP[] IS INITIAL.
*Populating the field catalog for ALV Display if plant and csrep is
*checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSEIF T_DISPP[] IS NOT INITIAL.
*Populating the field catalog for ALV Display if plant is checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSEIF T_DISPC[] IS NOT INITIAL.
*Populating the field catalog for ALV Display if csrep is checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSE.
MESSAGE I000 WITH TEXT-E15. "No Data found for Selection Criteria
ENDIF.
Clear Work Areas/Variables and Clear/Refresh Internal Tables
PERFORM CLEAR_REFRESH.
*&----
*
*& Form CLEAR_REFRESH
*&----
*
Clear Work Areas/Variables and Clear/Refresh Internal Tables
*----
*
FORM CLEAR_REFRESH .
Clear Variables/Work Areas/Internal Tables
CLEAR: W_REPID,
W_POS,
W_LAYOUT,
W_DATUM,
W_TIME,
T_VBAK,
T_VBKD,
T_VBPA,
T_VBAP,
T_VBEP,
T_VBUP,
T_DISPC,
T_DISPP,
T_DISP,
T_VBUK,
T_TVLST,
T_TVLST1.
Refresh Internal Tables
REFRESH: T_VBAK,
T_VBKD,
T_VBPA,
T_VBAP,
T_VBEP,
T_VBUP,
T_DISPC,
T_DISPP,
T_DISP,
T_VBUK,
T_TVLST,
T_TVLST1.
ENDFORM. " CLEAR_REFRESH
*&----
*
*& Form DATA_SELECTION
*&----
*
Selection of Data as per inputs
*----
*
FORM DATA_SELECTION .
*Obtain Sales and distribution document number,Date on which the record
*was created
*Sales document type,Delivery block,Sales organisation,
Distribution channel based on selection criteria
SELECT VBELN "Sales and distribution Doc no
ERDAT
"Date on which the record was created
AUART "Sales document type
LIFSK "Delivery block
VKORG "Sales organisation
VTWEG "Distribution channel
FROM VBAK
INTO TABLE T_VBAK
WHERE VBELN IN S_VBELN AND
ERDAT IN S_ERDAT AND
AUART IN S_AUART AND
VKORG IN S_VKORG AND
VTWEG IN S_VTWEG.
IF SY-SUBRC EQ 0.
SORT T_VBAK BY VBELN .
*Obtain Sales document ,Sales document item,Material Number,Material
*number used by customer
Safer point ,Plant (Own or External),Shipping point /Receiving point
Net price based on selection criteria
SELECT A~VBELN "Sales document
A~POSNR "Sales document item
MATNR "Material Number
PSTYV "Sales document item category
KDMAT "Material number used by customer
VRKME "Sales unit
WERKS "Plant (Own or External)
VSTEL "Shipping point /Receiving point
NETPR "Net price
*MOD02 {
NETWR
*}MOD02
WAERK "Target outline doc currency
FROM VBAP AS A JOIN VBUP AS B
ON ( AVBELN = BVBELN
AND APOSNR = BPOSNR )
INTO TABLE T_VBAP
FOR ALL ENTRIES IN T_VBAK
WHERE A~VBELN = T_VBAK-VBELN AND
A~MATNR IN S_MATNR AND
A~PSTYV NE C_TAPA AND
A~KDMAT IN S_KDMAT AND
A~WERKS IN S_WERKS AND
A~ABGRU EQ SPACE AND
B~LFSTA NE 'C'.
IF SY-SUBRC EQ 0.
SORT T_VBAP BY VBELN POSNR.
ENDIF.
SELECT VBELV
POSNV
FROM VBFA
INTO TABLE T_VBFA
FOR ALL ENTRIES IN T_VBAP
WHERE VBELV = T_VBAP-VBELN
AND POSNV = T_VBAP-POSNR
AND VBTYP_N = 'J'.
IF SY-SUBRC = 0.
SORT T_VBFA BY VBELV POSNV.
LOOP AT T_VBAP.
*READ TABLE T_VBFA WITH KEY VBELV = T_VBAP-VBELN POSNV = T_VBAP-POSNR.
IF SY-SUBRC = 0.
DELETE T_VBAP.
ENDIF.
ENDLOOP.
ENDIF.
{ 23-8-2007
SELECT LIFSP
VTEXT
FROM TVLST
INTO TABLE T_TVLST
FOR ALL ENTRIES IN T_VBAK
WHERE SPRAS EQ C_E AND
LIFSP = T_VBAK-LIFSK.
IF SY-SUBRC EQ 0.
SORT T_TVLST BY LIFSP.
ENDIF.
}
*Obtain Sales and distribution document number,Item number of the SD
*document ,Incoterms,Terms of payment key,Customer purchase order number
*based on selection criteria
SELECT VBELN "Sales and distribution document number
POSNR "Item number of the SD document
INCO1 "Incoterms
ZTERM "Terms of payment key
BSTKD "Customer purchase order number
FROM VBKD INTO TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT T_VBKD BY VBELN .
ENDIF.
*Obtain Sales document,Sales Document Item,Schedule line,Schedule line
*data, Order quantity in sales unit,Confirmed quantity,Goods issue date,
*Schedule line blocked for delivery based on selection criteria
SELECT VBELN "Sales document
POSNR "Sales Document Item
ETENR "Schedule line
EDATU "Schedule line data
CMENG "Order quantity in sales unit
BMENG "Confirmed quantity
LMENG
WADAT "Goods issue date
LIFSP "Schedule line blocked for delivery
FROM VBEP INTO TABLE T_VBEP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN AND
ETENR = C_0001.
IF SY-SUBRC EQ 0.
SORT T_VBEP BY VBELN POSNR ETENR.
{ 23-8-2007
SELECT LIFSP
VTEXT
FROM TVLST
INTO TABLE T_TVLST1
FOR ALL ENTRIES IN T_VBEP
WHERE SPRAS EQ C_E AND
LIFSP = T_VBEP-LIFSP.
IF SY-SUBRC EQ 0.
SORT T_TVLST1 BY LIFSP.
ENDIF.
}
ENDIF.
SELECT VBELN "Sales document
POSNR "Sales Document Item
ETENR "Schedule line
EDATU "Schedule line data
CMENG "Order quantity in sales unit
BMENG "Confirmed quantity
LMENG
WADAT "Goods issue date
LIFSP
"Schedule line blocked for delivery
FROM VBEP INTO TABLE T_VBEP1
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN .
IF SY-SUBRC EQ 0.
SORT T_VBEP1 BY VBELN POSNR .
ENDIF.
{ 23-8-2007
SELECT VBELN "Sales and Distribution Document Number
SPSTG "Overall blocked status
*MOD02 {
CMGST
*}MOD02
FROM VBUK
INTO TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND ( CMGST = 'A' OR CMGST = 'D' ).
IF SY-SUBRC EQ 0.
SORT T_VBUK BY VBELN .
ENDIF.
}
*Obtain Sales and distribution Doc no,Item number of the SD document
Overall delivery status of item
SELECT VBELN "Sales and distribution Doc no
POSNR "Item number of the SD document
LFGSA "Overall delivery status of item
FROM VBUP
INTO TABLE T_VBUP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT T_VBUP BY VBELN POSNR.
ENDIF.
*Obtain Sales and distribution document number,Partner function
Customer Number 1,address based on selection criteria
SELECT VBELN "Sales and distribution Doc no
PARVW " Patner function
KUNNR "Customer No1
ADRNR "address
FROM VBPA
INTO TABLE T_VBPA
FOR ALL ENTRIES IN T_VBAP
WHERE VBELN = T_VBAP-VBELN AND
( ( KUNNR IN S_KUNNR1 ) OR
( KUNNR IN S_KUNNR2 ) OR
( KUNNR IN S_KUNNR3 ) ) AND
( ( PARVW = C_ZR ) OR
( PARVW = C_BP ) OR
( PARVW = C_SH ) ).
IF SY-SUBRC EQ 0.
SORT T_VBPA BY VBELN PARVW.
IF NOT T_VBPA[] IS INITIAL.
*Obtain Address number ,name
SELECT ADDRNUMBER "Address number
DATE_FROM "Date valid from
NATION "International address version ID
NAME1 "name
FROM ADRC
INTO TABLE T_ADRC
FOR ALL ENTRIES IN T_VBPA
WHERE ADDRNUMBER = T_VBPA-ADRNR.
IF SY-SUBRC EQ 0.
SORT T_ADRC BY ADDRNUMBER.
ENDIF.
ENDIF.
ELSE.
MESSAGE I000 WITH TEXT-S02."No Data For the Entered CS rep number
STOP.
ENDIF.
ELSE.
MESSAGE I000 WITH TEXT-S01.
"No data found for the selection criteria
STOP.
ENDIF.
ENDFORM. " DATA_SELECTION
*&----
*
*& Form DATA_FILL_FOR_DISPLAY
*&----
*
Populate Internal table for display
*----
*
FORM DATA_FILL_FOR_DISPLAY .
DATA: L_NETPR TYPE NETPR. "For net amount
DATA: L_DATE TYPE EDATU. "For Date Field
DATA: L_WMENG TYPE WMENG. "For Confirmed Quantity
DATA: L_BMENG TYPE BMENG. "For Delivered Quantity
DATA : L_LAST_DATE TYPE EDATU.
DATA : W_FG TYPE C.
DATA : L_TABIX TYPE SY-TABIX.
DATA: L_CNT TYPE I,
L_NETWR TYPE NETWR.
*If plant and csrep are selected.
IF ( ( P_PLANT = C_X ) AND ( P_CSREP = C_X ) ).
LOOP AT T_VBAP.
CLEAR W_FG.
CLEAR L_CNT.
*MOD02 {
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN.
IF SY-SUBRC = 0.
*}MOD02
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_CNT = L_CNT + 1.
IF L_LAST_DATE IS NOT INITIAL AND W_FG NE 'X'.
IF L_LAST_DATE NE T_VBEP1-WADAT.
W_FG = 'X'.
ENDIF.
ENDIF.
L_LAST_DATE = T_VBEP1-WADAT.
ENDLOOP.
IF L_CNT = 1 AND T_VBEP1-BMENG = 0.
W_FG = 'X'.
ENDIF.
IF W_FG = 'X'.
READ TABLE T_VBEP WITH KEY VBELN = T_VBAP-VBELN
POSNR = T_VBAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move Order quantity in sales unit to final internal table
MOVE T_VBEP-WMENG TO T_DISP-WMENG.
MOVE T_VBEP-WADAT TO T_DISP-WADAT1.
*Move Goods issue date to final internal table
MOVE T_VBEP-EDATU TO T_DISP-WADAT.
{ 23-8-2007
READ TABLE T_TVLST1 WITH KEY LIFSP = T_VBEP-LIFSP
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBEP-LIFSP
'('
T_TVLST1-VTEXT
')'
INTO T_DISP-LIFSP
SEPARATED BY SPACE.
ENDIF.
}
*Move the Schedule line blocked for delivery
to final internal table.
ENDIF.
*LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR = T_VBAP-POSNR.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_WMENG = T_VBEP1-WMENG + L_WMENG.
L_BMENG = T_VBEP1-BMENG + L_BMENG.
IF NOT L_DATE IS INITIAL.
*
IF ( L_DATE < T_VBEP1-EDATU ).
L_DATE = T_VBEP1-EDATU.
ENDIF.
ELSE.
L_DATE = T_VBEP1-EDATU.
ENDIF.
AT END OF POSNR.
READ TABLE T_VBEP1 INDEX SY-TABIX.
IF SY-SUBRC = 0.
L_DATE = T_VBEP1-EDATU.
ENDIF.
ENDAT.
ENDLOOP.
IF T_VBEP1-WMENG EQ T_VBEP1-BMENG.
T_DISP-LOGIC_1 = 0.
T_DISP-EDATU = T_VBEP1-EDATU.
ELSEIF L_WMENG EQ L_BMENG .
T_DISP-EDATU = L_DATE.
T_DISP-LOGIC_1 = L_WMENG.
ELSE.
T_DISP-EDATU = C_BLANK.
T_DISP-LOGIC_1 = L_WMENG.
ENDIF.
*Move the Sales document item to final internal table.
MOVE T_VBAP-POSNR TO T_DISP-POSNR.
*Move the Material Number to final internal table.
MOVE T_VBAP-MATNR TO T_DISP-MATNR.
*Move the Material number used by customer to final internal table.
MOVE T_VBAP-KDMAT TO T_DISP-KDMAT.
*Move the Shipping point to final internal table.
MOVE T_VBAP-VSTEL TO T_DISP-VSTEL.
*Move the Sales unit to final internal table.
PERFORM UNIT1 USING T_VBAP-VRKME CHANGING T_VBAP-VRKME.
MOVE T_VBAP-VRKME TO T_DISP-VRKME.
MOVE T_VBAP-VRKME TO T_DISP-VRKME_1.
*Move the Plant (Own or External) to final internal table.
MOVE T_VBAP-WERKS TO T_DISP-WERKS.
MOVE T_VBAP-WAERK TO T_DISP-WAERK.
*Move the Net price to final internal table.
IF T_VBAP-WAERK = C_US .
L_NETPR = T_VBAP-NETPR.
L_NETPR = L_NETPR / 100.
T_DISP-NETPR = L_NETPR.
CLEAR L_NETPR.
ELSE.
MOVE T_VBAP-NETPR TO T_DISP-NETPR.
ENDIF.
CLEAR L_NETPR.
*MOD02{
IF T_VBAP-WAERK = C_US .
L_NETWR = T_VBAP-NETWR.
L_NETWR = L_NETWR / 100.
T_DISP-NETWR = L_NETWR.
CLEAR L_NETWR.
ELSE.
MOVE T_VBAP-NETWR TO T_DISP-NETWR.
ENDIF.
CLEAR L_NETWR.
*}MOD02
*READ THE TABLE VBAK TO FETCH Sales Order Number,sales
*organisation,distribution channel,Document type,Delivery block
READ TABLE T_VBAK WITH KEY VBELN = T_VBEP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Sales order number to final internal table.
MOVE T_VBAK-VBELN TO T_DISP-VBELN.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISP-VBELN.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-VKORG TO T_DISP-VKORG.
*Move the Distribution channel to final internal table.
MOVE T_VBAK-VTWEG TO T_DISP-VTWEG.
*Move the Document type to final internal table.
MOVE T_VBAK-AUART TO T_DISP-AUART.
{23-8-2007
READ TABLE T_TVLST WITH KEY LIFSP = T_VBAK-LIFSK
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBAK-LIFSK
'('
T_TVLST-VTEXT
')'
INTO T_DISP-LIFSK
SEPARATED BY SPACE.
ENDIF.
**
ENDIF.
*READ THE TABLE VBKD TO FETCH Incoterms,Terms of payment key,Customer
*purchase order number
READ TABLE T_VBKD WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Customer purchase order number to final internal table.
MOVE T_VBKD-BSTKD TO T_DISP-BSTKD.
*Move the Incoterms to final internal table.
MOVE T_VBKD-INCO1 TO T_DISP-INCO1.
*Move the Terms of payment to final internal table.
MOVE T_VBKD-ZTERM TO T_DISP-ZTERM.
ENDIF.
{ 23-8-2007
READ TABLE T_VBUK WITH KEY VBELN = T_VBEP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF T_VBUK-SPSTG EQ SPACE.
T_DISP-SPSTG = TEXT-TE1. "Not Blocked
ELSEIF T_VBUK-SPSTG EQ C_C.
T_DISP-SPSTG = TEXT-TE2. "Blocked
ENDIF.
ENDIF.
}
*READ THE TABLE VBUP TO FETCH Overall delivery status of item
READ TABLE T_VBUP WITH KEY VBELN = T_VBEP-VBELN POSNR =
T_VBEP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Overall delivery status of item to final internal table.
IF T_VBUP-LFGSA EQ C_A.
T_DISP-LFGSA = TEXT-E16. "Not Yet Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_B.
T_DISP-LFGSA = TEXT-E17. "Partially Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_C.
T_DISP-LFGSA = C_C. "Completely Processed.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH CS REP NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBEP-VBELN PARVW = C_ZR
BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_VBPA-KUNNR TO T_DISP-KUNNR_1.
*READ THE TABLE KNA1 TO FETCH THE CS REP NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISP-NAME1_1.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE BILL TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBEP-VBELN PARVW = C_BP
BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_VBPA-KUNNR TO T_DISP-KUNNR_2.
*READ THE TABLE KNA1 TO FETCH THE BILL TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISP-NAME1_2.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBEP-VBELN PARVW = C_SH
BINARY
SEARCH.
IF SY-SUBRC EQ 0 .
MOVE T_VBPA-KUNNR TO T_DISP-KUNNR_3.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISP-NAME1_3.
ENDIF.
ENDIF.
APPEND T_DISP.
CLEAR T_DISP.
CLEAR L_DATE.
CLEAR L_WMENG.
CLEAR L_BMENG.
ENDIF.
ENDIF.
ENDLOOP.
DELETE T_DISP WHERE WERKS = ' '.
DELETE T_DISP WHERE LFGSA EQ C_C.
DELETE T_DISP WHERE LOGIC_1 EQ '0'.
IF NOT S_KUNNR1 IS INITIAL.
DELETE T_DISP WHERE KUNNR_1 NOT IN S_KUNNR1 .
ENDIF.
IF NOT S_KUNNR2 IS INITIAL.
DELETE T_DISP WHERE KUNNR_2 NOT IN S_KUNNR2 .
ENDIF.
IF NOT S_KUNNR3 IS INITIAL.
DELETE T_DISP WHERE KUNNR_3 NOT IN S_KUNNR3 .
ENDIF.
*IF PLANT IS CHECKED.
ELSEIF P_PLANT = C_X.
LOOP AT T_VBAP.
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN.
IF SY-SUBRC = 0.
CLEAR W_FG.
CLEAR L_CNT.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_CNT = L_CNT + 1.
IF L_LAST_DATE IS NOT INITIAL AND W_FG NE 'X'.
IF L_LAST_DATE NE T_VBEP1-WADAT.
W_FG = 'X'.
ENDIF.
ENDIF.
L_LAST_DATE = T_VBEP1-WADAT.
ENDLOOP.
IF L_CNT = 1 AND T_VBEP1-BMENG = 0.
W_FG = 'X'.
ENDIF.
IF W_FG = 'X'.
READ TABLE T_VBEP WITH KEY VBELN = T_VBAP-VBELN POSNR =
T_VBAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move Order quantity in sales unit to final internal table
MOVE T_VBEP-WMENG TO T_DISPP-WMENG.
MOVE T_VBEP-WADAT TO T_DISPP-WADAT1.
*Move Goods issued date to final internal table
MOVE T_VBEP-EDATU TO T_DISPP-WADAT.
{ 23-8-2007
READ TABLE T_TVLST1 WITH KEY LIFSP = T_VBEP-LIFSP
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBEP-LIFSP
'('
T_TVLST1-VTEXT
')'
INTO T_DISPP-LIFSP
SEPARATED BY SPACE.
ENDIF.
}
ENDIF.
*Move the Schedule line blocked for delivery to final internal table.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_WMENG = T_VBEP1-WMENG + L_WMENG.
L_BMENG = T_VBEP1-BMENG + L_BMENG.
IF NOT L_DATE IS INITIAL.
*
IF ( L_DATE < T_VBEP1-EDATU ).
L_DATE = T_VBEP1-EDATU.
ENDIF.
ELSE.
L_DATE = T_VBEP1-EDATU.
ENDIF.
AT END OF POSNR.
READ TABLE T_VBEP1 INDEX SY-TABIX.
IF SY-SUBRC = 0.
L_DATE = T_VBEP1-EDATU.
ENDIF.
ENDAT.
ENDLOOP.
IF T_VBEP1-WMENG EQ T_VBEP1-BMENG.
T_DISPP-LOGIC_1 = 0.
T_DISPP-EDATU = T_VBEP1-EDATU.
ELSEIF L_WMENG EQ L_BMENG .
T_DISPP-EDATU = L_DATE.
T_DISPP-LOGIC_1 = L_WMENG.
*
ELSE.
T_DISPP-EDATU = C_BLANK.
T_DISPP-LOGIC_1 = L_WMENG.
*
ENDIF.
*READ THE TABLE VBAK TO FETCH Sales Order Number,sales
*organisation,distribution channel,
*Document type,Delivery block
READ TABLE T_VBAK WITH KEY VBELN = T_VBAP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Sales order number to final internal table.
MOVE T_VBAK-VBELN TO T_DISPP-VBELN.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPP-VBELN.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-VKORG TO T_DISPP-VKORG.
*Move the Distribution channel to final internal table.
MOVE T_VBAK-VTWEG TO T_DISPP-VTWEG.
*Move the Document type to final internal table.
MOVE T_VBAK-AUART TO T_DISPP-AUART.
{23-8-2007
READ TABLE T_TVLST WITH KEY LIFSP = T_VBAK-LIFSK
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBAK-LIFSK
'('
T_TVLST-VTEXT
')'
INTO T_DISPP-LIFSK
SEPARATED BY SPACE.
ENDIF.
**
ENDIF.
*Move the Sales document item to final internal table.
MOVE T_VBAP-POSNR TO T_DISPP-POSNR.
*Move the Material Number to final internal table.
MOVE T_VBAP-MATNR TO T_DISPP-MATNR.
*Move the Material number used by customer to final internal table.
MOVE T_VBAP-KDMAT TO T_DISPP-KDMAT.
*Move the Shipping point to final internal table.
MOVE T_VBAP-VSTEL TO T_DISPP-VSTEL.
*Move the Sales unit to final internal table.
PERFORM UNIT1 USING T_VBAP-VRKME CHANGING T_VBAP-VRKME.
MOVE T_VBAP-VRKME TO T_DISPP-VRKME.
MOVE T_VBAP-VRKME TO T_DISPP-VRKME_1.
*Move the Plant (Own or External) to final internal table.
MOVE T_VBAP-WERKS TO T_DISPP-WERKS.
MOVE T_VBAP-WAERK TO T_DISPP-WAERK.
*Move the Net price to final internal table.
IF T_VBAP-WAERK = C_US .
L_NETPR = T_VBAP-NETPR.
L_NETPR = L_NETPR / 100.
T_DISPP-NETPR = L_NETPR.
CLEAR L_NETPR.
ELSE.
MOVE T_VBAP-NETPR TO T_DISPP-NETPR.
ENDIF.
CLEAR L_NETPR.
*MOD02{
IF T_VBAP-WAERK = C_US .
L_NETWR = T_VBAP-NETWR.
L_NETWR = L_NETWR / 100.
T_DISPP-NETWR = L_NETWR.
CLEAR L_NETWR.
ELSE.
MOVE T_VBAP-NETWR TO T_DISPP-NETWR.
ENDIF.
CLEAR L_NETWR.
*}MOD02
*READ THE TABLE VBKD TO FETCH Incoterms,Terms of payment key,Customer
*purchase order number
READ TABLE T_VBKD WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Customer purchase order number to final internal table.
MOVE T_VBKD-BSTKD TO T_DISPP-BSTKD.
*Move the Incoterms to final internal table.
MOVE T_VBKD-INCO1 TO T_DISPP-INCO1.
*Move the Terms of payment to final internal table.
MOVE T_VBKD-ZTERM TO T_DISPP-ZTERM.
ENDIF.
{ 23-8-2007
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF T_VBUK-SPSTG EQ SPACE.
T_DISPP-SPSTG = TEXT-TE1. "Not Blocked
ELSEIF T_VBUK-SPSTG EQ C_C.
T_DISPP-SPSTG = TEXT-TE2. "Blocked
ENDIF.
ENDIF.
}
*READ THE TABLE VBUP TO FETCH Overall delivery status of item
READ TABLE T_VBUP WITH KEY VBELN = T_VBAP-VBELN POSNR =
T_VBEP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Overall delivery status of item to final internal table.
IF T_VBUP-LFGSA EQ C_A.
T_DISPP-LFGSA = TEXT-E16. "Not Yet Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_B.
T_DISPP-LFGSA = TEXT-E17. "Partially Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_C.
T_DISPP-LFGSA = C_C. "Completely Processed.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE BILL TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBAP-VBELN PARVW = C_BP
BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_VBPA-KUNNR TO T_DISPP-KUNNR_2.
*READ THE TABLE KNA1 TO FETCH THE BILL TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISPP-NAME1_2.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBAP-VBELN PARVW = C_SH
BINARY
SEARCH.
IF SY-SUBRC EQ 0 .
MOVE T_VBPA-KUNNR TO T_DISPP-KUNNR_3.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISPP-NAME1_3.
ENDIF.
ENDIF.
APPEND T_DISPP.
CLEAR T_DISPP.
CLEAR L_DATE.
CLEAR L_WMENG.
CLEAR L_BMENG .
ENDIF.
ENDIF.
ENDLOOP.
DELETE T_DISPP WHERE LFGSA EQ C_C.
DELETE T_DISPP WHERE LOGIC_1 EQ '0'.
DELETE T_DISPP WHERE WERKS = ' '.
IF NOT S_KUNNR2 IS INITIAL.
DELETE T_DISPP WHERE KUNNR_2 NOT IN S_KUNNR2 .
ENDIF.
IF NOT S_KUNNR3 IS INITIAL.
DELETE T_DISPP WHERE KUNNR_3 NOT IN S_KUNNR3 .
ENDIF.
ELSEIF P_CSREP = C_X.
LOOP AT T_VBAP.
CLEAR W_FG.
CLEAR L_CNT.
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN.
IF SY-SUBRC = 0.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR = T_VBAP-POSNR.
L_CNT = L_CNT + 1.
IF L_LAST_DATE IS NOT INITIAL AND W_FG NE 'X'.
IF L_LAST_DATE NE T_VBEP1-WADAT.
W_FG = 'X'.
ENDIF.
ENDIF.
L_LAST_DATE = T_VBEP1-WADAT.
ENDLOOP.
IF L_CNT = 1 AND T_VBEP1-BMENG = 0.
W_FG = 'X'.
ENDIF.
IF W_FG = 'X'.
READ TABLE T_VBEP WITH KEY VBELN = T_VBAP-VBELN POSNR =
T_VBAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move Order quantity in sales unit to final internal table
MOVE T_VBEP-WMENG TO T_DISPC-WMENG.
*Move Goods issued date to final internal table
MOVE T_VBEP-WADAT TO T_DISPC-WADAT1.
MOVE T_VBEP-EDATU TO T_DISPC-WADAT.
{ 23-8-2007
READ TABLE T_TVLST1 WITH KEY LIFSP = T_VBEP-LIFSP
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBEP-LIFSP
'('
T_TVLST1-VTEXT
')'
INTO T_DISPC-LIFSP
SEPARATED BY SPACE.
ENDIF.
}
ENDIF.
*Move the Schedule line blocked for delivery
to final internal table.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_WMENG = T_VBEP1-WMENG + L_WMENG.
L_BMENG = T_VBEP1-BMENG + L_BMENG.
IF NOT L_DATE IS INITIAL.
IF ( L_DATE < T_VBEP1-EDATU ).
L_DATE = T_VBEP1-EDATU.
ENDIF.
ELSE.
L_DATE = T_VBEP1-EDATU.
ENDIF.
ENDLOOP.
IF T_VBEP1-WMENG EQ T_VBEP1-BMENG.
T_DISPC-LOGIC_1 = 0.
T_DISPC-EDATU = T_VBEP1-EDATU.
ELSEIF L_WMENG EQ L_BMENG .
T_DISPC-EDATU = L_DATE.
T_DISPC-LOGIC_1 = L_WMENG.
ELSE.
T_DISPC-EDATU = C_BLANK.
T_DISPC-LOGIC_1 = L_WMENG.
ENDIF.
*READ THE TABLE VBAK TO FETCH Sales Order Number,sales
*organisation,distribution channel,Document type,Delivery block
READ TABLE T_VBAK WITH KEY VBELN = T_VBAP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Sales order number to final internal table.
MOVE T_VBAK-VBELN TO T_DISPC-VBELN.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPC-VBELN.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-VKORG TO T_DISPC-VKORG.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-VTWEG TO T_DISPC-VTWEG.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-AUART TO T_DISPC-AUART.
{23-8-2007
READ TABLE T_TVLST WITH KEY LIFSP = T_VBAK-LIFSK
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBAK-LIFSK
'('
T_TVLST-VTEXT
')'
INTO T_DISPC-LIFSK
SEPARATED BY SPACE.
ENDIF.
**
ENDIF.
*Move the Sales document item to final internal table.
MOVE T_VBAP-POSNR TO T_DISPC-POSNR.
*Move the Material Number to final internal table.
MOVE T_VBAP-MATNR TO T_DISPC-MATNR.
*Move the Material number used by customer to final internal table.
MOVE T_VBAP-KDMAT TO T_DISPC-KDMAT.
*Move the Shipping point to final internal table.
MOVE T_VBAP-VSTEL TO T_DISPC-VSTEL.
MOVE T_VBAP-WAERK TO T_DISPC-WAERK.
*Move the Net price to final internal table.
IF T_VBAP-WAERK = C_US .
L_NETPR = T_VBAP-NETPR.
L_NETPR = L_NETPR / 100.
T_DISPC-NETPR = L_NETPR.
CLEAR L_NETPR.
ELSE.
MOVE T_VBAP-NETPR TO T_DISPC-NETPR.
ENDIF.
CLEAR L_NETPR.
*MOD02{
IF T_VBAP-WAERK = C_US .
L_NETWR = T_VBAP-NETWR.
L_NETWR = L_NETWR / 100.
T_DISPC-NETWR = L_NETWR.
CLEAR L_NETWR.
ELSE.
MOVE T_VBAP-NETWR TO T_DISPC-NETWR.
ENDIF.
CLEAR L_NETWR.
*}MOD02
*Move the Sales unit to final internal table.
PERFORM UNIT1 USING T_VBAP-VRKME CHANGING T_VBAP-VRKME.
MOVE T_VBAP-VRKME TO T_DISPC-VRKME.
MOVE T_VBAP-VRKME TO T_DISPC-VRKME_1.
*READ THE TABLE VBKD TO FETCH Incoterms,Terms of payment key,Customer
*purchase order number
READ TABLE T_VBKD WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Customer purchase order number to final internal table.
MOVE T_VBKD-BSTKD TO T_DISPC-BSTKD.
*Move the Incoterms to final internal table.
MOVE T_VBKD-INCO1 TO T_DISPC-INCO1.
*Move the Terms of payment to final internal table.
MOVE T_VBKD-ZTERM TO T_DISPC-ZTERM.
ENDIF.
{ 23-8-2007
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF T_VBUK-SPSTG EQ SPACE.
T_DISPC-SPSTG = TEXT-TE1. "Not Blocked
ELSEIF T_VBUK-SPSTG EQ C_C.
T_DISPC-SPSTG = TEXT-TE2. "Blocked
ENDIF.
ENDIF.
}
*READ THE TABLE VBUP TO FETCH Overall delivery status of item
READ TABLE T_VBUP WITH KEY VBELN = T_VBAP-VBELN POSNR =
T_VBAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Overall delivery status of item to final internal table.
IF T_VBUP-LFGSA EQ C_A.
T_DISPC-LFGSA = TEXT-E16. "Not Yet Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_B.
T_DISPC-LFGSA = TEXT-E17. "Partially Processed.
ENDIF.
IF T_VBUP-LFGSA EQ C_C.
T_DISPC-LFGSA = C_C. "Completely Processed.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE CS REP NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBAP-VBELN PARVW = C_ZR
BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_VBPA-KUNNR TO T_DISPC-KUNNR_1.
*READ THE TABLE KNA1 TO FETCH THE CS REP NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISPC-NAME1_1.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE BILL TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBAP-VBELN PARVW = C_BP
BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_VBPA-KUNNR TO T_DISPC-KUNNR_2.
*READ THE TABLE KNA1 TO FETCH THE BILL TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISPC-NAME1_2.
ENDIF.
ENDIF.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NUMBER
READ TABLE T_VBPA WITH KEY VBELN = T_VBAP-VBELN PARVW = C_SH
BINARY SEARCH.
IF SY-SUBRC EQ 0 .
MOVE T_VBPA-KUNNR TO T_DISPC-KUNNR_3.
*READ THE TABLE VBPA TO FETCH THE SHIP TO PARTY NAME
READ TABLE T_ADRC WITH KEY ADDRNUMBER = T_VBPA-ADRNR BINARY
SEARCH.
IF SY-SUBRC EQ 0.
MOVE T_ADRC-NAME1 TO T_DISPC-NAME1_3.
ENDIF.
ENDIF.
APPEND T_DISPC.
CLEAR T_DISPC.
CLEAR L_DATE.
CLEAR L_WMENG.
CLEAR L_BMENG .
ENDIF.
ENDIF.
ENDLOOP.
DELETE T_DISPC WHERE LFGSA EQ C_C.
DELETE T_DISPC WHERE LOGIC_1 EQ '0'.
IF NOT S_KUNNR1 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_1 NOT IN S_KUNNR1 .
ENDIF.
IF NOT S_KUNNR2 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_2 NOT IN S_KUNNR2 .
ENDIF.
IF NOT S_KUNNR3 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_3 NOT IN S_KUNNR3 .
ENDIF.
ENDIF.
ENDFORM. " DATA_FILL_FOR_DISPLAY
**&----
-
**
**& Form DELETE_LEADING_ZEROES
**&----
-
**
For deleting the leading Zeros in the output
**----
-
**
FORM DELETE_LEADING_ZEROES CHANGING FP_VALUE TYPE ANY.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = FP_VALUE
IMPORTING
OUTPUT = FP_VALUE.
ENDFORM. " DELETE_LEADING_ZEROES
*&----
*
*& Form POPULATE_FIELD_CATALOG
*& Field catalog for the final table to display
*&----
*
FORM POPULATE_FIELD_CATALOG .
*If both plant and csrep number is checked.
IF T_DISP[] IS NOT INITIAL.
Filed catalog variables
PERFORM FIELDS_FIELD_CATALOG TABLES T_FIELDCATALOG
USING :
'T_DISP' 'VBELN' ' ' TEXT-H28 C_20 ,
'T_DISP' 'VKORG' ' ' TEXT-H01 C_20 ,
'T_DISP' 'VTWEG' ' ' TEXT-H02 C_20 ,
'T_DISP' 'AUART' ' ' TEXT-H03 C_20 ,
'T_DISP' 'BSTKD' ' ' TEXT-H04 C_20 ,
'T_DISP' 'KUNNR_1' ' ' TEXT-H05 C_20 ,
'T_DISP' 'NAME1_1' ' ' TEXT-H06 C_20 ,
'T_DISP' 'KUNNR_2' ' ' TEXT-H07 C_20 ,
'T_DISP' 'NAME1_2' ' ' TEXT-H08 C_20 ,
'T_DISP' 'KUNNR_3' ' ' TEXT-H09 C_20 ,
'T_DISP' 'NAME1_3' ' ' TEXT-H10 C_20 ,
'T_DISP' 'POSNR' ' ' TEXT-H11 C_20 ,
'T_DISP' 'MATNR' ' ' TEXT-H12 C_20 ,
'T_DISP' 'KDMAT' ' ' TEXT-H13 C_20 ,
'T_DISP' 'VSTEL' ' ' TEXT-H14 C_20 ,
'T_DISP' 'NETPR' ' ' TEXT-H15 C_20 ,
'T_DISP' 'NETWR' ' ' TEXT-H37 C_20 ,
'T_DISP' 'WAERK' ' ' TEXT-H29 C_20 ,
'T_DISP' 'ZTERM' ' ' TEXT-H16 C_20 ,
'T_DISP' 'WMENG' ' ' TEXT-H19 C_20 ,
'T_DISP' 'VRKME' ' ' TEXT-H21 C_20 ,
'T_DISP' 'WADAT1' ' ' TEXT-H34 C_20 ,
'T_DISP' 'WADAT' ' ' TEXT-H22 C_20 ,
'T_DISP' 'EDATU' ' ' TEXT-H23 C_20 ,
'T_DISP' 'VRKME_1' ' ' TEXT-H21 C_20 ,
'T_DISP' 'INCO1' ' ' TEXT-H24 C_20 ,
'T_DISP' 'LFGSA' ' ' TEXT-H25 C_20 ,
'T_DISP' 'LIFSP' ' ' TEXT-H31 C_20 ,
'T_DISP' 'LIFSK' ' ' TEXT-H32 C_20 ,
'T_DISP' 'SPSTG' ' ' TEXT-H33 C_20 ,
'T_DISP' 'WERKS' ' ' TEXT-H27 C_20 .
ENDIF.
*If plant is checked
IF T_DISPP[] IS NOT INITIAL.
PERFORM FIELDS_FIELD_CATALOG TABLES T_FIELDCATALOG
USING :
'T_DISPP' 'VBELN' ' ' TEXT-H28 C_20 ,
'T_DISPP' 'VKORG' ' ' TEXT-H01 C_20 ,
'T_DISPP' 'VTWEG' ' ' TEXT-H02 C_20 ,
'T_DISPP' 'AUART' ' ' TEXT-H03 C_20 ,
'T_DISPP' 'BSTKD' ' ' TEXT-H04 C_20 ,
'T_DISPP' 'KUNNR_2' ' ' TEXT-H07 C_20 ,
'T_DISpP' 'NAME1_2' ' ' TEXT-H08 C_20 ,
'T_DISPP' 'KUNNR_3' ' ' TEXT-H09 C_20 ,
'T_DISPP' 'NAME1_3' ' ' TEXT-H10 C_20 ,
'T_DISPP' 'POSNR' ' ' TEXT-H11 C_20 ,
'T_DISPP' 'MATNR' ' ' TEXT-H12 C_20 ,
'T_DISPP' 'KDMAT' ' ' TEXT-H13 C_20 ,
'T_DISPP' 'VSTEL' ' ' TEXT-H14 C_20 ,
'T_DISPP' 'NETPR' ' ' TEXT-H15 C_20 ,
'T_DISPP' 'NETWR' ' ' TEXT-H37 C_20 ,
'T_DISPP' 'WAERK' ' ' TEXT-H29 C_20 ,
'T_DISPP' 'ZTERM' ' ' TEXT-H16 C_20 ,
'T_DISPP' 'WMENG' ' ' TEXT-H19 C_20 ,
'T_DISPP' 'VRKME' ' ' TEXT-H21 C_20 ,
'T_DISPP' 'WADAT' ' ' TEXT-H22 C_20 ,
'T_DISPP' 'WADAT1' ' ' TEXT-H34 C_20 ,
'T_DISPP' 'EDATU' ' ' TEXT-H23 C_20 ,
'T_DISPP' 'VRKME_1' ' ' TEXT-H21 C_20 ,
'T_DISPP' 'INCO1' ' ' TEXT-H24 C_20 ,
'T_DISPP' 'LFGSA' ' ' TEXT-H25 C_20 ,
'T_DISPP' 'LIFSP' ' ' TEXT-H31 C_20 ,
'T_DISPP' 'LIFSK' ' ' TEXT-H32 C_20 ,
'T_DISPP' 'SPSTG' ' ' TEXT-H33 C_20 ,
'T_DISPP' 'WERKS' ' ' TEXT-H27 C_20 .
ENDIF.
*If csrep number is checked
IF T_DISPC[] IS NOT INITIAL.
PERFORM FIELDS_FIELD_CATALOG TABLES T_FIELDCATALOG
USING :
'T_DISPC' 'VBELN' ' ' TEXT-H28 C_20 ,
'T_DISPC' 'VKORG' ' ' TEXT-H01 C_20 ,
'T_DISPC' 'VTWEG' ' ' TEXT-H02 C_20 ,
'T_DISPC' 'AUART' ' ' TEXT-H03 C_20 ,
'T_DISPC' 'BSTKD' ' ' TEXT-H04 C_20 ,
'T_DISPC' 'KUNNR_1' ' ' TEXT-H05 C_20 ,
'T_DISPC' 'NAME1_1' ' ' TEXT-H06 C_20 ,
'T_DISPC' 'KUNNR_2' ' ' TEXT-H07 C_20 ,
'T_DISPC' 'NAME1_2' ' ' TEXT-H08 C_20 ,
'T_DISPC' 'KUNNR_3' ' ' TEXT-H09 C_20 ,
'T_DISPC' 'NAME1_3' ' ' TEXT-H10 C_20 ,
'T_DISPC' 'POSNR' ' ' TEXT-H11 C_20 ,
'T_DISPC' 'MATNR' ' ' TEXT-H12 C_20 ,
'T_DISPC' 'KDMAT' ' ' TEXT-H13 C_20 ,
'T_DISPC' 'VSTEL' ' ' TEXT-H14 C_20 ,
'T_DISPC' 'NETPR' ' ' TEXT-H15 C_20 ,
*MOD02 {
'T_DISPC' 'NETWR' ' ' TEXT-H37 C_20 ,
*}MOD02
'T_DISPC' 'WAERK' ' ' TEXT-H29 C_20 ,
'T_DISPC' 'ZTERM' ' ' TEXT-H16 C_20 ,
'T_DISPC' 'WMENG' ' ' TEXT-H19 C_20 ,
'T_DISPC' 'VRKME' ' ' TEXT-H21 C_20 ,
'T_DISPC' 'WADAT' ' ' TEXT-H22 C_20 ,
'T_DISPC' 'WADAT1' ' ' TEXT-H34 C_20 ,
'T_DISPC' 'EDATU' ' ' TEXT-H23 C_20 ,
'T_DISPC' 'VRKME_1' ' ' TEXT-H21 C_20 ,
'T_DISPC' 'INCO1' ' ' TEXT-H24 C_20 ,
'T_DISPC' 'LIFSP' ' ' TEXT-H31 C_20 ,
'T_DISPC' 'LIFSK' ' ' TEXT-H32 C_20 ,
'T_DISPC' 'SPSTG' ' ' TEXT-H33 C_20 ,
'T_DISPC' 'LFGSA' ' ' TEXT-H25 C_20 .
ENDIF.
ENDFORM. " POPULATE_FIELD_CATALOG
*&----
*
*& Form DISPLAY
*& Calling the ALV FM to display the final output
*&----
*
FORM DISPLAY .
*IF both plant and csrep are checked.
IF T_DISP[] IS NOT INITIAL.
W_REPID = SY-REPID.
W_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
W_LAYOUT-ZEBRA = C_X.
IF T_DISP[] IS NOT INITIAL.
LOOP AT T_DISP.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISP-KUNNR_1.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISP-KUNNR_2.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISP-KUNNR_3.
MODIFY T_DISP TRANSPORTING KUNNR_1 KUNNR_2 KUNNR_3 WHERE VBELN
= T_DISP-VBELN.
ENDLOOP.
Display the output
*For sales order number
T_SORT-SPOS = '1'.
T_SORT-FIELDNAME ='VBELN'.
T_SORT-TABNAME = 'T_DISP'.
T_SORT-UP = 'X'.
T_SORT-SUBTOT = 'X'.
APPEND T_SORT.
CLEAR T_SORT.
T_GROUP-TEXT = 'VBELN'.
T_GROUP-SP_GROUP = 'A'.
APPEND T_GROUP.
*For summation of Backorder quantity
T_FIELDCATALOG-FIELDNAME = 'LOGIC_1'.
T_FIELDCATALOG-TABNAME = 'T_DISP'.
T_FIELDCATALOG-COL_POS = 21.
T_FIELDCATALOG-SELTEXT_L = 'BACKORDER QUANTITY'.
T_FIELDCATALOG-DO_SUM = 'X'.
APPEND T_FIELDCATALOG.
CLEAR T_FIELDCATALOG.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_USER_COMMAND = C_USER
I_CALLBACK_TOP_OF_PAGE = C_TOP
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = T_FIELDCATALOG[]
IT_SPECIAL_GROUPS = T_GROUP[]
I_SAVE = C_A
IT_SORT = T_SORT[]
TABLES
T_OUTTAB = T_DISP
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH TEXT-E02. "Error in display
ENDIF.
ENDIF.
ENDIF.
*If plant is checked
IF T_DISPP[] IS NOT INITIAL.
W_REPID = SY-REPID.
W_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
W_LAYOUT-ZEBRA = C_X.
LOOP AT T_DISPP.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPP-KUNNR_2.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPP-KUNNR_3.
MODIFY T_DISPP TRANSPORTING KUNNR_2 KUNNR_3 WHERE VBELN
= T_DISPP-VBELN.
ENDLOOP.
Display the output
T_SORT-SPOS = '1'.
T_SORT-FIELDNAME ='VBELN'.
T_SORT-TABNAME = 'T_DISPP'.
T_SORT-UP = 'X'.
T_SORT-SUBTOT = 'X'.
APPEND T_SORT.
CLEAR T_SORT.
T_GROUP-TEXT = 'VBELN'.
T_GROUP-SP_GROUP = 'A'.
APPEND T_GROUP.
*For summation of Backorder quantity
T_FIELDCATALOG-FIELDNAME = 'LOGIC_1'.
T_FIELDCATALOG-TABNAME = 'T_DISPP'.
T_FIELDCATALOG-COL_POS = 19.
T_FIELDCATALOG-SELTEXT_L = 'BACKORDER QUANTITY'.
T_FIELDCATALOG-DO_SUM = 'X'.
APPEND T_FIELDCATALOG.
CLEAR T_FIELDCATALOG.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_USER_COMMAND = C_USER
I_CALLBACK_TOP_OF_PAGE = C_TOP
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = T_FIELDCATALOG[]
IT_SPECIAL_GROUPS = T_GROUP[]
I_SAVE = C_A
IT_SORT = T_SORT[]
TABLES
T_OUTTAB = T_DISPP
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH TEXT-E02. "Error in display
ENDIF.
ENDIF.
*If CSRep is checked
IF T_DISPC[] IS NOT INITIAL.
W_REPID = SY-REPID.
W_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
W_LAYOUT-ZEBRA = C_X.
IF NOT S_KUNNR1 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_1 NOT IN S_KUNNR1 .
ENDIF.
IF NOT S_KUNNR2 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_2 NOT IN S_KUNNR2 .
ENDIF.
IF NOT S_KUNNR3 IS INITIAL.
DELETE T_DISPC WHERE KUNNR_3 NOT IN S_KUNNR3 .
ENDIF.
LOOP AT T_DISPC.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPC-KUNNR_1.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPC-KUNNR_2.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISPC-KUNNR_3.
MODIFY T_DISPC TRANSPORTING KUNNR_1 KUNNR_2 KUNNR_3 WHERE VBELN
= T_DISPC-VBELN.
ENDLOOP.
Display the output
T_SORT-SPOS = '1'.
T_SORT-FIELDNAME ='VBELN'.
T_SORT-TABNAME = 'T_DISPc'.
T_SORT-UP = 'X'.
T_SORT-SUBTOT = 'X'.
APPEND T_SORT.
CLEAR T_SORT.
T_GROUP-TEXT = 'VBELN'.
T_GROUP-SP_GROUP = 'A'.
APPEND T_GROUP.
*for summation of backorder quantity
T_FIELDCATALOG-FIELDNAME = 'LOGIC_1'.
T_FIELDCATALOG-TABNAME = 'T_DISPc'.
T_FIELDCATALOG-COL_POS = 21.
T_FIELDCATALOG-SELTEXT_L = 'BACKORDER QUANTITY'.
T_FIELDCATALOG-DO_SUM = 'X'.
APPEND T_FIELDCATALOG.
CLEAR T_FIELDCATALOG.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_USER_COMMAND = C_USER
I_CALLBACK_TOP_OF_PAGE = C_TOP
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = T_FIELDCATALOG[]
IT_SPECIAL_GROUPS = T_GROUP[]
I_SAVE = C_A
IT_SORT = T_SORT[]
TABLES
T_OUTTAB = T_DISPC
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH TEXT-E02. "Error in display
ENDIF.
ENDIF.
ENDFORM. " DISPLAY
*----
*
FORM FIELDS_FIELD_CATALOG
To populate the field catalog content *
*----
*
FORM FIELDS_FIELD_CATALOG TABLES T_FIELDCATALOG
STRUCTURE T_FIELDCATALOG
USING FP_TABNAME TYPE ANY
FP_FIELDNAME TYPE ANY
FP_KEY TYPE ANY
FP_TEXT TYPE ANY
FP_OUTPUT_LEN TYPE ANY.
T_FIELDCATALOG-TABNAME = FP_TABNAME.
T_FIELDCATALOG-FIELDNAME = FP_FIELDNAME.
T_FIELDCATALOG-SELTEXT_L = FP_TEXT.
T_FIELDCATALOG-KEY = FP_KEY.
T_FIELDCATALOG-OUTPUTLEN = FP_OUTPUT_LEN.
T_FIELDCATALOG-COL_POS = W_POS.
APPEND T_FIELDCATALOG.
CLEAR T_FIELDCATALOG.
W_POS = W_POS + 1.
ENDFORM. " FIELDS_FIELD_CATALOG
*----
*
FORM top_of_page *
*----
*
Top of the ALV diaply *
*----
*
FORM TOP_OF_PAGE.
CLEAR: T_TOP[], WA_TOP.
CLEAR WA_TOP.
WA_TOP-TYP = C_H.
WA_TOP-KEY = C_A.
WA_TOP-INFO = TEXT-004. " Report BACKORDER
APPEND WA_TOP TO T_TOP.
Date formatting
PERFORM CONVERT_DATE USING SY-DATUM CHANGING W_DATUM.
WA_TOP-TYP = C_S. "H=HEADER, S=SELECTION, A=ACTION
WA_TOP-KEY = TEXT-A01. "Date
WA_TOP-INFO = W_DATUM.
APPEND WA_TOP TO T_TOP.
Time formatting
PERFORM TIME_FORMATTING USING SY-UZEIT CHANGING W_TIME.
WA_TOP-TYP = C_S. "H=HEADER, S=SELECTION, A=ACTION
WA_TOP-KEY = TEXT-A02. "Time
WA_TOP-INFO = W_TIME .
APPEND WA_TOP TO T_TOP.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' "ALV top of the page
EXPORTING
IT_LIST_COMMENTARY = T_TOP
I_END_OF_LIST_GRID = ' '.
ENDFORM. "top_of_page
*&----
*
*& FORM CONVERT_DATE
*&----
*
*& To convert date to internal date format
*&----
*
FORM CONVERT_DATE USING FP_DATE_INT TYPE ANY
CHANGING FP_DATE_EXT TYPE ANY.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = FP_DATE_INT
IMPORTING
OUTPUT = FP_DATE_EXT.
ENDFORM. " CONVERT_DATE
*&----
*
*& FORM TIME_FORMATTING
*&----
*
*& Formatting time to hh:mm:ss
*&----
*
FORM TIME_FORMATTING USING FP_INPUT TYPE ANY
CHANGING FP_OUTPUT TYPE ANY.
IF FP_INPUT IS NOT INITIAL.
CONCATENATE FP_INPUT0(2) C_COL FP_INPUT2(2) C_COL FP_INPUT+4(2)
INTO FP_OUTPUT.
ENDIF.
ENDFORM. "TIME FORMATTING
*&----
*
*& Form user_command
*&----
*
For going to Sales order Transaction VA03
*----
*
FORM USER_COMMAND USING FP_UCOMM LIKE SY-UCOMM
FP_SEL TYPE SLIS_SELFIELD.
*If plant and csrep is cheked
IF ( ( P_PLANT = C_X ) AND ( P_CSREP = C_X ) ).
IF FP_UCOMM = C_IC1.
READ TABLE T_DISP INDEX FP_SEL-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'AUN' FIELD T_DISP-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
*If csrep is checked
ELSEIF P_CSREP = C_X.
IF FP_UCOMM = C_IC1.
READ TABLE T_DISPC INDEX FP_SEL-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'AUN' FIELD T_DISPC-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
*If plant is checked
ELSEIF P_PLANT = C_X.
IF FP_UCOMM = C_IC1.
READ TABLE T_DISPP INDEX FP_SEL-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'AUN' FIELD T_DISPP-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "user_command
*&----
*
*& Form UNIT1
*&----
*
FORM UNIT1 USING PF_UNIT TYPE ANY
CHANGING PF_UNIT1 TYPE ANY.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
INPUT = PF_UNIT
LANGUAGE = SY-LANGU
IMPORTING
LONG_TEXT =
OUTPUT = PF_UNIT1
SHORT_TEXT =
EXCEPTIONS
UNIT_NOT_FOUND = 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. " UNIT1
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |