You are on page 1of 7

REPORT ZINVOICE_DOCUMENT.

TYPE-POOLS: SLIS.
TABLES: VBRK,VBPA.

********** Declaration of structures ***********

TYPES: BEGIN OF TY_VBRK,


VBELN TYPE VBUK-VBELN,
WAERK TYPE VBRK-WAERK,
FKDAT TYPE VBRK-FKDAT,
KURRF TYPE VBRK-KURRF,
LAND1 TYPE VBRK-LAND1,
NETWR TYPE VBRK-NETWR,
END OF TY_VBRK.

TYPES: BEGIN OF TY_VBPA,


VBELN TYPE VBUK-VBELN,
POSNR TYPE VBPA-POSNR,
PARVW TYPE VBPA-PARVW,
KUNNR TYPE VBPA-KUNNR,
KUNNR1 TYPE VBPA-KUNNR,
END OF TY_VBPA.

TYPES: BEGIN OF TY_KNA1,


KUNNR TYPE KNA1-KUNNR,
NAME1 TYPE KNA1-NAME1,
END OF TY_KNA1.

TYPES: BEGIN OF TY_FINAL,


VBELN TYPE VBRK-VBELN, "Billing Document No
WAERK TYPE VBRK-WAERK, "SD Document currency
FKDAT TYPE VBRK-FKDAT, "Billing Date
KURRF TYPE VBRK-KURRF, "Exchange rate for FI Postings
LAND1 TYPE VBRK-LAND1, "Country of Destination
NETWR TYPE VBRK-NETWR, "Invoice net value
POSNR TYPE VBPA-POSNR, "Item No
PARVW TYPE VBPA-PARVW, "Partner Function
KUNNR TYPE VBPA-KUNNR, "Customer Number
KUNNR1 TYPE VBPA-KUNNR, "First Name
ORDER TYPE P DECIMALS 4,
S_NO(6) TYPE C,
END OF TY_FINAL.

********* Declaring internal table and work area ***********

DATA: IT_VBRK TYPE TABLE OF TY_VBRK,


IT_VBPA TYPE TABLE OF TY_VBPA,
IT_KNA1 TYPE TABLE OF TY_KNA1,
IT_FINAL TYPE TABLE OF TY_FINAL,
IT_VBRK1 TYPE TABLE OF VBRK.

DATA: WA_VBRK TYPE TY_VBRK,


WA_VBPA TYPE TY_VBPA,
WA_VBPA1 TYPE VBPA,
WA_VBRK1 TYPE VBRK,
* WA_KNA1 TYPE TY_KNA1.
WA_FINAL TYPE TY_FINAL.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE SLIS_FIELDCAT_ALV.

DATA : IT_SORT TYPE SLIS_T_SORTINFO_ALV .


DATA : WA_SORT LIKE LINE OF IT_SORT .

DATA: LV_SUM(30).

INITIALIZATION.
CLEAR: WA_VBRK,
WA_VBPA.
REFRESH: IT_VBRK,
IT_VBPA.

*****Selection Screen********

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

SELECT-OPTIONS: SO_FKDAT FOR VBRK-FKDAT.

SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN.

* PERFORM VALIDATE_FKDAT.
**&---------------------------------------------------------------------*
**& Form VALIDATE_FKDAT
**&---------------------------------------------------------------------*
** text
**----------------------------------------------------------------------*
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------*
FORM VALIDATE_FKDAT .
*
SELECT SINGLE FKDAT FROM VBRK INTO WA_VBRK
WHERE FKDAT IN SO_FKDAT.
IF SY-SUBRC NE 0.
MESSAGE 'Please enter valid date' TYPE 'E'.
ENDIF.
ENDFORM.

START-OF-SELECTION.

PERFORM GET_DATA.
PERFORM PROCESS_DATA.
PERFORM BUILD_FCAT.
PERFORM SUB_SORT.
PERFORM DISPLAY_DATA.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .

SELECT VBELN
WAERK
FKDAT
KURRF
LAND1
NETWR FROM VBRK INTO TABLE IT_VBRK
WHERE FKDAT IN SO_FKDAT.
IF SY-SUBRC = 0.
SORT IT_VBRK[] BY VBELN.
ELSE.
MESSAGE 'No data available': TYPE 'E'.
ENDIF.

IF IT_VBRK IS NOT INITIAL.

SELECT VBELN
POSNR
PARVW
KUNNR
FROM VBPA INTO TABLE IT_VBPA
FOR ALL ENTRIES IN IT_VBRK
WHERE VBELN = IT_VBRK-VBELN.

IF SY-SUBRC = 0.
SORT IT_VBPA BY VBELN.
ENDIF.

* DELETE ADJACENT DUPLICATES FROM IT_VBPA COMPARING vbeln.

* IF IT_VBPA IS NOT INITIAL.


*
* SELECT KUNNR
* NAME1
* FROM KNA1
* INTO TABLE IT_KNA1
* FOR ALL ENTRIES IN IT_VBPA
* WHERE KUNNR = IT_VBPA-KUNNR.
* ENDIF.

ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROCESS_DATA.

CLEAR WA_VBRK.
LOOP AT IT_VBRK INTO WA_VBRK.
WA_FINAL-S_NO = SY-TABIX.
WA_FINAL-VBELN = WA_VBRK-VBELN.
WA_FINAL-WAERK = WA_VBRK-WAERK.
WA_FINAL-FKDAT = WA_VBRK-FKDAT.
WA_FINAL-KURRF = WA_VBRK-KURRF.
WA_FINAL-LAND1 = WA_VBRK-LAND1.
WA_FINAL-NETWR = WA_VBRK-NETWR.

LV_SUM = 0.
LV_SUM = LV_SUM + WA_VBRK-NETWR.
WA_VBRK1-NETWR = LV_SUM.
WA_FINAL-NETWR = WA_VBRK1-NETWR.

WA_FINAL-ORDER = WA_VBRK-NETWR * WA_VBRK-KURRF.

CLEAR: WA_VBPA.
READ TABLE IT_VBPA INTO WA_VBPA WITH KEY VBELN = WA_VBRK-VBELN
PARVW = 'AG'.
IF SY-SUBRC EQ 0.
WA_FINAL-KUNNR = WA_VBPA-KUNNR.
ENDIF.
CLEAR: WA_VBPA.
READ TABLE IT_VBPA INTO WA_VBPA WITH KEY VBELN = WA_VBRK-VBELN
PARVW = 'WE'.
IF SY-SUBRC EQ 0.
WA_FINAL-KUNNR1 = WA_VBPA-KUNNR.
ENDIF.

* LOOP AT IT_VBRK INTO WA_VBRK.


* MOVE-CORRESPONDING it_VBRK TO it_VBRK1.
* COLLECT it_VBRK1.
* APPEND WA_VBRK1 TO IT_VBRK1.
* ENDLOOP.
* WA_FINAL-NETWR = WA_VBRK1-NETWR.

** LOOP AT IT_VBrk INTO WA_VBrk.


* WA_VBPA1 = WA_VBPA.
* AT LAST .
* SUM( NETWR ).
*** WRITE:/ wa_vbpa1-netwr.
* ENDAT.
** ENDLOOP.
* WA_FINAL-NETWR = WA_VBPA1-NETWR.

APPEND WA_FINAL TO IT_FINAL.


CLEAR: WA_FINAL.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FCAT .

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'S_NO'.
WA_FCAT-SELTEXT_M = 'S.NO'.
APPEND WA_FCAT TO IT_FCAT.

WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'LAND1'.
WA_FCAT-SELTEXT_M = 'Country'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 3.
WA_FCAT-FIELDNAME = 'KUNNR'.
WA_FCAT-SELTEXT_M = 'party Name'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 4.
WA_FCAT-FIELDNAME = 'KUNNR1'.
WA_FCAT-SELTEXT_M = 'Person responsible'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 5.
WA_FCAT-FIELDNAME = 'VBELN'.
WA_FCAT-SELTEXT_M = 'Invoice N0.'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 6.
WA_FCAT-FIELDNAME = 'FKDAT'.
WA_FCAT-SELTEXT_M = 'Invoice Date'.

APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 7.
WA_FCAT-FIELDNAME = 'NETWR'.
WA_FCAT-DO_SUM = 'X'.
WA_FCAT-SELTEXT_M = 'Order value'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 8.
WA_FCAT-FIELDNAME = 'WAERK'.
WA_FCAT-SELTEXT_M = 'Currency'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 9.
WA_FCAT-FIELDNAME = 'KURRF'.
WA_FCAT-SELTEXT_M = 'Ex.Rate'.
APPEND WA_FCAT TO IT_FCAT.

CLEAR: WA_FCAT.
WA_FCAT-COL_POS = 10.
WA_FCAT-FIELDNAME = 'ORDER'.
WA_FCAT-SELTEXT_M = 'Order Value(INR)'.
APPEND WA_FCAT TO IT_FCAT.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form SUB_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SUB_SORT .

WA_SORT-FIELDNAME = 'FKDAT'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.

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

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME = I_STRUCTURE_NAME
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE = I_GRID_TITLE
* I_GRID_SETTINGS = I_GRID_SETTINGS
* IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FCAT
* IT_EXCLUDING = IT_EXCLUDING
* IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
* IT_FILTER = IT_FILTER
* IS_SEL_HIDE = IS_SEL_HIDE
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT = IS_VARIANT
* IT_EVENTS = IT_EVENTS
* IT_EVENT_EXIT = IT_EVENT_EXIT
* IS_PRINT = IS_PRINT
* IS_REPREP_ID = IS_REPREP_ID
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS = IT_ALV_GRAPHICS
* IT_HYPERLINK = IT_HYPERLINK
* IT_ADD_FIELDCAT = IT_ADD_FIELDCAT
* IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
* IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
* ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1.

ENDFORM.

You might also like