Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Headers getting repeated while running the report in background

Former Member
0 Likes
561

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.

2 REPLIES 2
Read only

Former Member
0 Likes
515

can u paste ur code here.

Read only

0 Likes
515

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