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

ALV INTERACTION REPORT DOUBT

Former Member
0 Likes
4,742

Hi all,

Below is my code for Interactive ALV report (sample program):

*-------Tables Used----------------------------------------------------

TABLES: SPFLI, SCARR.  "SPFLI - Flight Schedule;; SCARR - Airline Detail

*-----------------------------------------------------------------------------

*-------------------Declaring Type Pool used & Structure.--------------------------------------

TYPE-POOLS: slis.               .

TYPES: BEGIN OF ud_struct,

         EKKO LIKE EKKO,

         EKPO LIKE EKPO,

     END OF ud_struct.

TYPES: BEGIN OF ebeln,

        zebeln LIKE EKKO-EBELN,

        END OF ebeln.

*----------------------------------------------------------------------------------------------

*------------------------------Internal Tables Declaration----------------------------------------

DATA: ITABCOMBI TYPE TABLE OF ud_struct,

       GTOUTTAB TYPE SLIS_T_FIELDCAT_ALV,

       WA_OUTTAB LIKE LINE OF GTOUTTAB,

       T_EVENTCAT TYPE SLIS_T_EVENT,

       W_EVENTCAT LIKE LINE OF T_EVENTCAT,

       OUTTAB TYPE SLIS_T_FIELDCAT_ALV,

       WA1_OUTTAB LIKE LINE OF GTOUTTAB,

       Doc_Nm LIKE EKKO-EBELN,   "Select Option Filed Decalarion

       itab TYPE TABLE OF ebeln,

       wa LIKE LINE OF itab,

       CPROG TYPE SY-REPID.

TYPES: BEGIN OF itab_ekpo,

       EBELN TYPE EBELN,

       STATU TYPE STATU,

       END OF itab_ekpo.

DATA: itabekpo TYPE TABLE OF itab_ekpo,

       waekpo like LINE OF itabekpo.

DATA: gs_selfield TYPE slis_selfield. "Information cursor position ALV

SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-000.

SELECT-OPTIONS: DOC_NUM for Doc_Nm.

SELECTION-SCREEN END OF BLOCK A1.

AT SELECTION-SCREEN.

   SELECT  EBELN FROM EKKO INTO TABLE itab WHERE EBELN IN DOC_NUM.

START-OF-SELECTION.

     SELECT * FROM EKKO INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN

       INTO TABLE ITABCOMBI

       FOR ALL ENTRIES IN ITAB

       WHERE EKKO~EBELN = ITAB-ZEBELN.

WA_OUTTAB-tabname = 'ITABCOMBI'.

WA_OUTTAB-fieldname = 'EKKO-EBELN'.

WA_OUTTAB-SELTEXT_M = 'Purchasing Doc Num'.

WA_OUTTAB-COL_POS = 1.

WA_OUTTAB-OUTPUTLEN = 15.

WA_OUTTAB-HOTSPOT = 'X'.

APPEND WA_OUTTAB TO GTOUTTAB.

CLEAR WA_OUTTAB.

WA_OUTTAB-tabname = 'ITABCOMBI'.

WA_OUTTAB-fieldname = 'EKKO-BUKRS'.

WA_OUTTAB-SELTEXT_M = 'Company Code'.

WA_OUTTAB-COL_POS = 2.

WA_OUTTAB-OUTPUTLEN = 15.

APPEND WA_OUTTAB TO GTOUTTAB.

CLEAR WA_OUTTAB.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  EXPORTING

    I_CALLBACK_PROGRAM                = 'SY-REPID'

    I_CALLBACK_USER_COMMAND           = 'PICKK'

    IT_FIELDCAT                       = GTOUTTAB

   TABLES

     T_OUTTAB                          = ITABCOMBI

* EXCEPTIONS

*   PROGRAM_ERROR                     = 1

*   OTHERS                            = 2

           .

IF SY-SUBRC <> 0.

  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

FORM  PICKK USING R_UCOMM TYPE SY-UCOMM

                         RS_SELFIELD TYPE SLIS_SELFIELD.

   CASE r_ucomm.

*User clicks a transaction code and that tcode is called from ALV

     WHEN '&IC1'.   "Double Click / Hot Spot

       gs_selfield = rs_selfield.

*      WRITE: gs_selfield-fieldname.

       IF gs_selfield-fieldname = 'EKKO-EBELN'.

         SELECT EBELN STATU

           FROM EKPO

           INTO CORRESPONDING FIELDS OF TABLE itabekpo

           WHERE EBELN = gs_selfield-value.

           PERFORM second_display.

           ELSE.

MESSAGE w208(001) WITH 'Select by Order only!'.

ENDIF.

ENDCASE.

ENDFORM.

FORM second_display.

WA1_OUTTAB-tabname = 'ITABCOMBI'.

WA1_OUTTAB-fieldname = 'EKKO-EBELN'.

WA1_OUTTAB-SELTEXT_M = 'Purchasing Doc Num'.

WA1_OUTTAB-COL_POS = 1.

WA1_OUTTAB-OUTPUTLEN = 15.

WA1_OUTTAB-HOTSPOT = 'X'.

APPEND WA1_OUTTAB TO OUTTAB.

CLEAR WA1_OUTTAB.

WA1_OUTTAB-tabname = 'ITABCOMBI'.

WA1_OUTTAB-fieldname = 'EKKO-BUKRS'.

WA1_OUTTAB-SELTEXT_M = 'Company Code'.

WA1_OUTTAB-COL_POS = 2.

WA1_OUTTAB-OUTPUTLEN = 15.

APPEND WA1_OUTTAB TO OUTTAB.

CLEAR WA1_OUTTAB.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  EXPORTING

    I_CALLBACK_PROGRAM                = CPROG

    IT_FIELDCAT                       = OUTTAB

    IT_EVENTS                         = T_EVENTCAT

   TABLES

     T_OUTTAB                          = ITABEKPO

  EXCEPTIONS

    PROGRAM_ERROR                     = 1

    OTHERS                            = 2

           .

IF SY-SUBRC <> 0.

  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

FORM T_EVENTCAT.

W_EVENTCAT-NAME = 'TOP_OF_PAGE'.

W_EVENTCAT-FORM = 'TOP'.

APPEND W_EVENTCAT TO T_EVENTCAT.

ENDFORM.

FORM TOP.

READ TABLE itabekpo INTO waekpo INDEX 1.

WRITE😕 'Purchase Document Number'(001),30 waekpo-EBELN,

/ 'RFQ Statement'(002), 30 waekpo-STATU.

ENDFORM.

Im getting my 1st list, but im not able to link my 1st list field with 2nd list. (nothing happens while cliking the hotspot field - ebeln on my first screen)..


44 REPLIES 44
Read only

Former Member
0 Likes
2,051

Check this code.. almost similar as your one.

***********************************************************************
* TYPE-POOLS DECLARATION
***********************************************************************
TYPE-POOLS:
SLIS.

***********************************************************************
* DATA DECLARATIONS
***********************************************************************

DATA:
W_EBELN TYPE EKKO-EBELN,
W_PROG TYPE SY-REPID,
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FS_FIELDCAT LIKE LINE OF T_FIELDCAT,
T_EVENTCAT TYPE SLIS_T_EVENT,
W_EVENTCAT LIKE LINE OF T_EVENTCAT.

***********************************************************************
* SELECT-OPTIONS DECLARATION
***********************************************************************
SELECT-OPTIONS:
S_EBELN FOR W_EBELN.

***********************************************************************
* INTERNAL TABLE AND FIELD-STRING DECLARATIONS
***********************************************************************

DATA:
T_EKKO LIKE
STANDARD TABLE
OF EKKO,
FS_EKKO LIKE LINE OF T_EKKO.

DATA:
T_EKPO LIKE
STANDARD TABLE
OF EKPO,
FS_EKPO LIKE LINE OF T_EKPO.

***********************************************************************
* START-OF-SELECTION
***********************************************************************
START-OF-SELECTION.
SELECT *
FROM EKKO
INTO TABLE T_EKKO
WHERE EBELN IN S_EBELN.

W_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_PROG
I_CALLBACK_USER_COMMAND = 'PICK'
I_STRUCTURE_NAME = 'EKKO'
TABLES
T_OUTTAB = T_EKKO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*&--------------------------------------------------------------------*
*& Form pick
*&--------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
*---------------------------------------------------------------------*
FORM PICK USING COMMAND LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
READ TABLE T_EKKO INTO FS_EKKO INDEX SELFIELD-TABINDEX.

CASE COMMAND.
WHEN '&IC1'.
SELECT *
FROM EKPO
INTO TABLE T_EKPO
WHERE EBELN EQ FS_EKKO-EBELN.

W_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'EKPO'
CHANGING
CT_FIELDCAT = T_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

DELETE T_FIELDCAT WHERE FIELDNAME EQ 'EBELN'.
DELETE T_FIELDCAT WHERE FIELDNAME EQ 'BUKRS'.
DELETE T_FIELDCAT WHERE FIELDNAME EQ 'LGORT'.
DELETE T_FIELDCAT WHERE FIELDNAME EQ 'WERKS'.

Perform t_eventcat.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_PROG
IT_FIELDCAT = T_FIELDCAT
IT_EVENTS = T_EVENTCAT
TABLES
T_OUTTAB = T_EKPO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDCASE. " CASE COMMAND
ENDFORM. " FORM PICK

FORM T_EVENTCAT.
W_EVENTCAT-NAME = 'TOP_OF_PAGE'.
W_EVENTCAT-FORM = 'TOP'.
APPEND W_EVENTCAT TO T_EVENTCAT.
ENDFORM.

FORM TOP.
READ TABLE T_EKPO INTO FS_EKPO INDEX 1.
WRITE:/ 'Purchase Document Number'(001),30 FS_EKPO-EBELN,
/ 'Company Code'(002), 30 FS_EKPO-BUKRS,
/ 'Plant'(003), 30 FS_EKPO-WERKS,
/ 'Storage Location'(004),30 FS_EKPO-LGORT.
ENDFORM.

Read only

0 Likes
2,051

Hi Soumyasanto,

Thankyou for reviewing the code and coming back with n executable code...

Apparently my doubt is, while calling function ''REUSE_ALV_LIST_DISPLAY'', you exported structure name and in my original program i exported the field catalog which i had filled. can we not export a field catalog? Because in your program i have all the field displayed and in mine im trying to display only 2 fields.. How will i achieve that? 

Read only

0 Likes
2,051

Hi Khushboo,

it's because of the use of FM 'REUSE_ALV_FIELDCATALOG_MERGE' that the structure is passed which is present in the dictionary. You can pass any Z table also. That's exactly the functionality of this FM which helps you to prepare the fieldcatalog without putting much effort.

Now, u need to pass only 2 fields in the fieldcatalog. Hence, its not a good idea to make a Z table with 2 fields, So u can make the fieldcatalog manually and pass it in FM

''REUSE_ALV_LIST_DISPLAY''

Regarding user click linking, plz debug and check if " gs_selfield " is not initial.

Thanks

Vivek

Read only

Former Member
0 Likes
2,051

Hai,

        Try this code you might get some idea,

        

TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
        EBELN LIKE EKKO-EBELN,
        AEDAT LIKE EKKO-AEDAT,
        BUKRS LIKE EKKO-BUKRS,
        BSART LIKE EKKO-BSART,
        LIFNR LIKE EKKO-LIFNR,
        END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
       WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
        EBELN LIKE EKPO-EBELN,
        EBELP LIKE EKPO-EBELP,
        MATNR LIKE EKPO-MATNR,
        MENGE LIKE EKPO-MENGE,
        MEINS LIKE EKPO-MEINS,
        NETPR LIKE EKPO-NETPR,
        END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
       WA_EKPO TYPE I_EKPO .

*variable for Report ID
DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.


DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

* declaration for events table where user comand or set PF status will
* be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
       WA_EVENT TYPE SLIS_ALV_EVENT.

* declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

* declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
       I_VARIANT1 TYPE DISVARIANT,
       I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed
DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.
   V_REPID = SY-REPID.
   PERFORM BUILD_FIELDCATLOG.
   PERFORM EVENT_CALL.
   PERFORM POPULATE_EVENT.

START-OF-SELECTION.
   PERFORM DATA_RETRIEVAL.
   PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
   PERFORM DISPLAY_ALV_REPORT.

*&--------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATLOG
*&--------------------------------------------------------------------*
*       Fieldcatalog has all the field details from ekko
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG.
   WA_FIELDCAT-TABNAME = 'IT_EKKO'.
   WA_FIELDCAT-FIELDNAME = 'EBELN'.
   WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

   WA_FIELDCAT-TABNAME = 'IT_EKKO'.
   WA_FIELDCAT-FIELDNAME = 'AEDAT'.
   WA_FIELDCAT-SELTEXT_M = 'DATE.'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

   WA_FIELDCAT-TABNAME = 'IT_EKKO'.
   WA_FIELDCAT-FIELDNAME = 'BUKRS'.
   WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
   WA_FIELDCAT-FIELDNAME = 'BUKRS'.
   WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
   WA_FIELDCAT-FIELDNAME = 'LIFNR'.
   WA_FIELDCAT-NO_OUT    = 'X'.
   WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.


ENDFORM.                    "BUILD_FIELDCATLOG

*&--------------------------------------------------------------------*
*&      Form  EVENT_CALL
*&--------------------------------------------------------------------*
*   we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL.
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE           = 0
    IMPORTING
      ET_EVENTS             = V_EVENTS
*  EXCEPTIONS
*    LIST_TYPE_WRONG       = 1
*    OTHERS                = 2
             .
   IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.
ENDFORM.                    "EVENT_CALL

*&--------------------------------------------------------------------*
*&      Form  POPULATE_EVENT
*&--------------------------------------------------------------------*
*      Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT.
   READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
   IF SY-SUBRC EQ 0.
     WA_EVENT-FORM = 'TOP_OF_PAGE'.
     MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
   ENDIF.

   READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
   IF SY-SUBRC EQ 0.
     WA_EVENT-FORM = 'USER_COMMAND'.
     MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
   ENDIF.
ENDFORM.                    "POPULATE_EVENT


*&--------------------------------------------------------------------*
*&      Form  data_retrieval
*&--------------------------------------------------------------------*
*   retreiving values from the database table ekko
*---------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
   SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM.                    "data_retrieval
*&--------------------------------------------------------------------*
*&      Form  bUild_listheader
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->I_LISTHEADEtext
*---------------------------------------------------------------------*
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
   DATA HLINE TYPE SLIS_LISTHEADER.
   HLINE-INFO = 'this is my first alv pgm'.
   HLINE-TYP = 'H'.
ENDFORM.                    "build_listheader

*&--------------------------------------------------------------------*
*&      Form  display_alv_report
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT.
   V_REPID = SY-REPID.
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM                = V_REPID
*   I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
      I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_GRID_TITLE                      = I_TITLE_EKKO
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         = ALV_LAYOUT
      IT_FIELDCAT                       = I_FIELDCAT[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*     i_default                         = 'ZLAY1'
      I_SAVE                            = 'A'
*     is_variant                        = i_variant
      IT_EVENTS                         = V_EVENTS
     TABLES
       T_OUTTAB                          = IT_EKKO
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
             .
   IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.
ENDFORM.                    "display_alv_report




*&--------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
     EXPORTING
       IT_LIST_COMMENTARY       = IT_LISTHEADER
*    i_logo                   =
*    I_END_OF_LIST_GRID       =
             .

ENDFORM.                    "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->,          text
*      -->RS_SLEFIELDtext
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
   CASE R_UCOMM.
     WHEN '&IC1'.
       READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
       PERFORM BUILD_FIELDCATLOG_EKPO.
       PERFORM EVENT_CALL_EKPO.
       PERFORM POPULATE_EVENT_EKPO.
       PERFORM DATA_RETRIEVAL_EKPO.
       PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
       PERFORM DISPLAY_ALV_EKPO.
   ENDCASE.
ENDFORM.                    "user_command
*&--------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATLOG_EKPO
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG_EKPO.

   WA_FIELDCAT-TABNAME = 'IT_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'EBELN'.
   WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.
   WA_FIELDCAT-TABNAME = 'IT_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'EBELP'.
   WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.
   WA_FIELDCAT-TABNAME = 'I_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'MATNR'.
   WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'MENGE'.
   WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'MEINS'.
   WA_FIELDCAT-SELTEXT_M = 'UOM'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
   WA_FIELDCAT-FIELDNAME = 'NETPR'.
   WA_FIELDCAT-SELTEXT_M = 'PRICE'.
   APPEND WA_FIELDCAT TO I_FIELDCAT.
   CLEAR WA_FIELDCAT.


ENDFORM.                    "BUILD_FIELDCATLOG_EKPO

*&--------------------------------------------------------------------*
*&      Form  event_call_ekpo
*&--------------------------------------------------------------------*
*   we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL_EKPO.
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE           = 0
    IMPORTING
      ET_EVENTS             = V_EVENTS
* EXCEPTIONS
*   LIST_TYPE_WRONG       = 1
*   OTHERS                = 2
             .
   IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.
ENDFORM.                    "event_call_ekpo


*&--------------------------------------------------------------------*
*&      Form  POPULATE_EVENT
*&--------------------------------------------------------------------*
*        Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT_EKPO.
   READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
   IF SY-SUBRC EQ 0.
     WA_EVENT-FORM = 'TOP_OF_PAGE'.
     MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
   ENDIF.

   ENDFORM.                    "POPULATE_EVENT

*&--------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM F_TOP_OF_PAGE.
   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
     EXPORTING
       IT_LIST_COMMENTARY       = IT_LISTHEADER
*    i_logo                   =
*    I_END_OF_LIST_GRID       =
             .

ENDFORM.                    "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->,          text
*      -->RS_SLEFIELDtext
*---------------------------------------------------------------------*

*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.


FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    I_CALLBACK_PROGRAM                = V_REPID
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
    I_GRID_TITLE                      = I_TITLE_EKPO
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
    IT_FIELDCAT                       = I_FIELDCAT[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         =
    I_SAVE                            = 'A'
*   IS_VARIANT                        =
    IT_EVENTS                         = V_EVENTS
   TABLES
     T_OUTTAB                          = IT_EKPO
  EXCEPTIONS
    PROGRAM_ERROR                     = 1
    OTHERS                            = 2
           .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.

Thanks & Regards,

Ramu Velaga.

Read only

Former Member
0 Likes
2,051

Hi Friends,

1st and foremost - thankyou for all your replies.

Now,

I have jotted down a simple most INTERACTIVE ALV program (with minimum events to create a simple intercative report), and its working fine except for my 1st list display, i have to create a layout for my field cataliog manually ( REUSE_ALV_FIELDCATALOG_MERGE is not working - i have created an internal table to be passed a sa stucture whose framework has to be copied.. refer line 21 - type: FIRST_EKKO_LIST)...

I have mentioned my doubt in program itself at line 64, 65 (  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE') - which i have commented..

Anyways, this is what i call the most simple interactive report ( with no extra events jazz for us newbees 😞

*&---------------------------------------------------------------------*

*& Report  ZSCENARIO_DUPLICATE                                         *

*&                                                                     *

*&---------------------------------------------------------------------*

*&                                                                     *

*&                                                                     *

*&---------------------------------------------------------------------*

REPORT  ZSCENARIO_DUPLICATE NO STANDARD PAGE HEADING.

TYPE-POOLS: SLIS.

*-----Structure Definition for 1st list ( which will hold fields Ebeln and bukrs from table ekko )-------

TYPES: BEGIN OF FIRST_EKKO_LIST,

        EBELN LIKE EKKO-EBELN,

        BUKRS LIKE EKKO-BUKRS,

       END OF FIRST_EKKO_LIST.

*---------------------Internal Table and Work Area creation for structure 'FIRST_EKKO_LIST'-------------

DATA: ITAB_FIRST_EKKO_LIST TYPE STANDARD TABLE OF FIRST_EKKO_LIST,

      WA_FIRST_EKKO_LIST TYPE FIRST_EKKO_LIST.

* ----------------------Field Catalog Declaration for 1st list of table ITAB_FIRST_EKKO_LIST-----------

DATA: FC_FIRST_EKKO_LIST TYPE SLIS_T_FIELDCAT_ALV,

      WAFC_FIRST_EKKO_LIST LIKE LINE OF FC_FIRST_EKKO_LIST.

*--------------------------Internal Table and workarea for 2nd list - (All fields of EKPO)------------------

DATA: ITAB_EKPO LIKE TABLE OF EKPO,

      WA_EKPO LIKE LINE OF ITAB_EKPO.

* ----------------------Field Catalog Declaration for 2ND list of table ITAB_EKPO-----------

DATA: FC_EKPO TYPE SLIS_T_FIELDCAT_ALV,

      WAFC_EKPO LIKE LINE OF FC_EKPO.

*------------------------------------------------------------------------------------------

DATA: f_ebeln TYPE EKKO-EBELN, "Used in Select Options

      F_PROG TYPE SY-REPID. "Used while ceating field catalog

**---------------Mandatory events for Interactive ALV Reports.--------------------------

*

*DATA: T_EVENTCAT TYPE SLIS_T_EVENT,

*W_EVENTCAT LIKE LINE OF T_EVENTCAT.

*--------------------Accepting User Range for EKKO-BELN into DOC_NUM-------------------------------------

SELECT-OPTIONS: DOC_NUM FOR f_ebeln.

*--------Filtering fields EBELN and BUKRS based on innerjoin of field ebeln from

*table EKKO and EKPO and within the ebeln range specified in DOC_NUM------------------------

START-OF-SELECTION.

SELECT EKKO~EBELN EKKO~BUKRS

  FROM EKKO INNER JOIN EKPO ON EKKO~EBELN = EKPO~EBELN

  INTO CORRESPONDING FIELDS OF TABLE ITAB_FIRST_EKKO_LIST

  WHERE EKKO~EBELN IN DOC_NUM.

*--------------------Merging a Field Catalog for 1st klist dispaly using table contents

*and table structure of ITAB_FIRST_EKKO_LIST    ---------------------------------------------------------

  F_PROG = SY-REPID.

*---------------------Doubt - Why merge is not working for the defined structure at line 14-----------------------------------

*  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

*   EXPORTING

*     I_PROGRAM_NAME               = F_PROG

*     I_INTERNAL_TABNAME           = 'ITAB_FIRST_EKKO_LIST'

*     I_STRUCTURE_NAME             = 'FIRST_EKKO_LIST'

**     I_CLIENT_NEVER_DISPLAY       = 'X'

**     I_INCLNAME                   =

**     I_BYPASSING_BUFFER           =

**     I_BUFFER_ACTIVE              =

*    CHANGING

*      CT_FIELDCAT                  = FC_FIRST_EKKO_LIST

*   EXCEPTIONS

*     INCONSISTENT_INTERFACE       = 1

*     PROGRAM_ERROR                = 2

*     OTHERS                       = 3

*            .

*  IF SY-SUBRC <> 0.

** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*  ENDIF.

*  IF FC_FIRST_EKKO_LIST IS INITIAL.

*    WRITE: 'FIELD-CATALOG NOT FORMED.'.

*    ENDIF.

*-------------------Doubt Ends-----------------------------------------------------------------

*------------Manually Creating Field Structure for my 1st list dispaly where i intend to display

*fields Purchase Doc (ebeln) Number And Company Code (bukrs) only.---------------------------------

WAFC_FIRST_EKKO_LIST-tabname = 'ITAB_FIRST_EKKO_LIST'.

WAFC_FIRST_EKKO_LIST-fieldname = 'EBELN'.

WAFC_FIRST_EKKO_LIST-SELTEXT_M = 'Purchasing Doc Num'.

WAFC_FIRST_EKKO_LIST-COL_POS = 1.

WAFC_FIRST_EKKO_LIST-OUTPUTLEN = 15.

WAFC_FIRST_EKKO_LIST-HOTSPOT = 'X'.

APPEND WAFC_FIRST_EKKO_LIST TO FC_FIRST_EKKO_LIST.

WAFC_FIRST_EKKO_LIST-tabname = 'ITAB_FIRST_EKKO_LIST'.

WAFC_FIRST_EKKO_LIST-fieldname = 'BUKRS '.

WAFC_FIRST_EKKO_LIST-SELTEXT_M = 'Company Code'.

WAFC_FIRST_EKKO_LIST-COL_POS = 2.

WAFC_FIRST_EKKO_LIST-OUTPUTLEN = 15.

APPEND WAFC_FIRST_EKKO_LIST TO FC_FIRST_EKKO_LIST.

*--------------------Displaying 1st list-------------------------------------

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

   I_CALLBACK_PROGRAM             = F_PROG

   I_CALLBACK_USER_COMMAND        = 'PICK' "At double click (user-command) perform 'PICK' function.

*   I_STRUCTURE_NAME               =

   IT_FIELDCAT                    = FC_FIRST_EKKO_LIST "Field catalog prepared

*   IT_EVENTS                      =

*   IT_EVENT_EXIT                  =

* IMPORTING

*   E_EXIT_CAUSED_BY_CALLER        =

*   ES_EXIT_CAUSED_BY_USER         =

  TABLES

    T_OUTTAB                       = ITAB_FIRST_EKKO_LIST "Contains Content displayed in field Catalog

EXCEPTIONS

   PROGRAM_ERROR                  = 1

   OTHERS                         = 2

          .

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*---------------------Defining Form PICK to perform instruction at user command double click'-----

FORM PICK USING COMMAND LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.  " Function 'PICK; with parameters of type 'User Command' and Capturing details of line on which user command is performed using 'SLIS_SELFIELD' type.

READ TABLE ITAB_FIRST_EKKO_LIST INTO WA_FIRST_EKKO_LIST INDEX SELFIELD-TABINDEX. "ITAB_FIRST_EKKO_LIST holds 1st list data and WA_FIRST_EKKO_LIST is its workarea..Capturing double clicked line from ITAB_FIRST_EKKO_LIST into  WA_FIRST_EKKO_LIST.

CASE COMMAND.

WHEN '&IC1'. "Double Click

SELECT *        "Filtering data based on requirement - here all the fields from ekpo where ebeln = captured lines ebeln.

FROM EKPO

INTO TABLE ITAB_EKPO   "Filtered data in internal table ITAB_EKPO

WHERE EBELN EQ WA_FIRST_EKKO_LIST-EBELN.

F_PROG = SY-REPID. "Assigning Program name to F_PROG

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = 'EKPO'  "Since we want all the fields from ekpo, we directly pass table ekpo

CHANGING

CT_FIELDCAT = FC_EKPO    "Field catalog prepared for list 2. (decalsred at line34)

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'   "Displaying 2nd list

EXPORTING

I_CALLBACK_PROGRAM = F_PROG

IT_FIELDCAT = FC_EKPO

*IT_EVENTS = T_EVENTCAT

TABLES

T_OUTTAB = ITAB_EKPO

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDCASE. " CASE COMMAND

ENDFORM. " FORM PICK

*FORM T_EVENTCAT.   "Event mandatory for intercative ALV report.

*W_EVENTCAT-NAME = 'TOP_OF_PAGE'.

*W_EVENTCAT-FORM = 'TOP'.

*APPEND W_EVENTCAT TO T_EVENTCAT.

*ENDFORM.

*

*FORM TOP.

*READ TABLE T_EKPO INTO FS_EKPO INDEX 1.

*WRITE:/ 'Purchase Document Number'(001),30 FS_EKPO-EBELN,

*/ 'Company Code'(002), 30 FS_EKPO-BUKRS,

*/ 'Plant'(003), 30 FS_EKPO-WERKS,

*/ 'Storage Location'(004),30 FS_EKPO-LGORT.

*ENDFORM.

Thankyou, and ill be thankful if anyone can tell me why REUSE_ALV_FIELDCATALOG_MERGE is not working for my 1st list dispaly ( and as a result a result i had to manually create the catalog ) .. But the requireemnt is only those 2 columns (fields) for 1st listdipaly, i dont want the full ekko table.

Thankyou tons,

Khushboo Singh

Read only

0 Likes
2,051

Hi Khushboo,

Try using the parameters given below for FM REUSE_ALV_FIELDCATALOG_MERGE,

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

   EXPORTING

     I_PROGRAM_NAME               = F_PROG

     I_INTERNAL_TABNAME          = 'ITAB_FIRST_EKKO_LIST'

     I_INCLNAME                          = F_PROG

    CHANGING

     CT_FIELDCAT                        = FC_FIRST_EKKO_LIST

   EXCEPTIONS

     INCONSISTENT_INTERFACE       = 1

     PROGRAM_ERROR                    = 2

      OTHERS                                    = 3.

Thanks & Regards,

Tushar

Read only

0 Likes
2,051

Hey Tushar,

Thankyou for coming back with a reply

I tried it without passing include program (since i did not create any include for this), and no list is getting generated after giving range for

SELECT-OPTIONS: 'DOC_NUM' . after the execute click, nothing happens.. and just to test, i added a write statement after calling this FM, as this:

IF FC_FIRST_EKKO_LIST IS INITIAL.

    WRITE: 'No field catalog created!'.

    ENDIF.

And the o/p is : No field catalog created!

Thankyou

Read only

0 Likes
2,051

Hi Khushboo,

Try passing the report name(sy-repid)(in your case it will be F_PROG) to both the parameters given below(even if you have not created a new include),

1. I_PROGRAM_NAME            

2.  I_INCLNAME

Thanks & Regards,

Tushar

                          

Read only

0 Likes
2,051

ok.. ill try that currently stuck with something different. how do i derive CST tax value, base price of a material in PO... in short how do i relate KOMP, KOMV and PO?? i cant find any relations.. please help.

Read only

0 Likes
2,051

Hi khushboo,

Use FM CALCULATE_TAX_ITEM.

Hope this helps you.

Thanks & Regards

Tushar.

Read only

0 Likes
2,051

Hi Khushboo,

The relationship is as below if you see from the tables as is -

EKKO-KNUMV ( Condition Record Number of PO) = KOMV-KNUMV , you get KOMV-KPOSN here.

KOMV-KPOSN = KOMP-KPOSN

EKKO -  Purchase Order Table

KOMV -  Pricing Communications-Condition Record

KOMP -  Pricing Communication Item

But what exactly is your requirment as KOMV and KOMP are structures and they won't store any data like database tables.

Read only

0 Likes
2,051

heyi,

i have a report in which material number and some other PO level details are generated (item wise)..now, i need to find the base price of this material and CST and display in report.. How will i derive these values for those materials for that specific PO?

Read only

0 Likes
2,051

and i wish i can make that smily a little more confuse looking, coz thats how confused im , so ill multiply the number of smileys plz get back as soon as possible,, please.

Read only

0 Likes
2,051

meanwhile im trying what our expert friend Tushar has suggested.

Read only

Former Member
0 Likes
2,051

Hi Khushboo,

Try using BAPIs such as BAPI_PO_GETDETAIL or BAPI_PO_GETDETAIL1 whichever suits your requirement. Enter PO number and pass X to all the tables that you would require. Hope this helps!

Read only

Former Member
0 Likes
2,051

Hi kushboo,

look at below code .......let me know if u hav any doubts.........

*&---------------------------------------------------------------------*

*& Report  ZP_ALVINT

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZP_ALVINT.

TABLES: LFA1, EKKO, EKPO.

SELECT-OPTIONS: S_LIFNR FOR LFA1-LIFNR.

DATA: BEGIN OF ITAB OCCURS 0,

        LIFNR TYPE KNA1-LIFNR,

        NAME1 TYPE KNA1-NAME1,

      END OF ITAB.

DATA: BEGIN OF JTAB OCCURS 0,

        EBELN TYPE EKKO-EBELN,

        AEDAT TYPE EKKO-AEDAT,

      END OF JTAB.

DATA: BEGIN OF KTAB OCCURS 0,

        EBELP TYPE EKPO-EBELP,

        MATNR TYPE EKPO-MATNR,

      END OF KTAB.

TYPE-POOLS: SLIS.

DATA: REPID LIKE SY-REPID,

      F_LFA11 TYPE SLIS_T_FIELDCAT_ALV,

      F_LFA1  TYPE SLIS_FIELDCAT_ALV,

      F_EKKO1 TYPE SLIS_T_FIELDCAT_ALV,

      F_EKKO  TYPE SLIS_FIELDCAT_ALV,

      F_EKPO1 TYPE SLIS_T_FIELDCAT_ALV,

      F_EKPO  TYPE SLIS_FIELDCAT_ALV,

      I_EVENTS TYPE SLIS_T_EVENT,

      S_EVENTS TYPE SLIS_ALV_EVENT.

START-OF-SELECTION.

  PERFORM COL_HEAD.

  REPID = SY-REPID.

  SELECT LIFNR NAME1

    FROM LFA1

    INTO TABLE ITAB

    WHERE LIFNR IN S_LIFNR.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

      I_CALLBACK_PROGRAM = REPID

      IT_FIELDCAT        = F_LFA11

      IT_EVENTS          = I_EVENTS

    TABLES

      T_OUTTAB           = ITAB

    EXCEPTIONS

      PROGRAM_ERROR      = 1

      OTHERS             = 2.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

*&---------------------------------------------------------------------*

*&      Form  COL_HEAD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM COL_HEAD .

  F_LFA1-FIELDNAME = 'LIFNR'.

  F_LFA1-REF_TABNAME = 'LFA1'.

  F_LFA1-FIELDNAME = 'LIFNR'.

  APPEND F_LFA1 TO F_LFA11.

  CLEAR F_LFA1.

  F_LFA1-FIELDNAME = 'NAME1'.

  F_LFA1-REF_TABNAME = 'LFA1'.

  F_LFA1-FIELDNAME = 'NAME1'.

  APPEND F_LFA1 TO F_LFA11.

  CLEAR F_LFA1.

*-------------------

  F_EKKO-FIELDNAME = 'EBELN'.

  F_EKKO-REF_TABNAME = 'EKKO'.

  F_EKKO-FIELDNAME = 'EBELN'.

  APPEND F_EKKO TO F_EKKO1.

  CLEAR F_LFA1.

  F_EKKO-FIELDNAME = 'AEDAT'.

  F_EKKO-REF_TABNAME = 'EKKO'.

  F_EKKO-FIELDNAME = 'AEDAT'.

  APPEND F_EKKO TO F_EKKO1.

  CLEAR F_EKKO.

*---------------------------------

  F_EKPO-FIELDNAME = 'EBELP'.

  F_EKPO-REF_TABNAME = 'EKPO'.

  F_EKPO-FIELDNAME = 'EBELP'.

  APPEND F_EKPO TO F_EKPO1.

  CLEAR F_EKPO.

  F_EKPO-FIELDNAME = 'MATNR'.

  F_EKPO-REF_TABNAME = 'EKPO'.

  F_EKPO-FIELDNAME = 'MATNR'.

  APPEND F_EKPO TO F_EKPO1.

  CLEAR F_EKPO.

  S_EVENTS-NAME = 'USER_COMMAND'.

  S_EVENTS-FORM = 'VAL'.

  APPEND S_EVENTS TO I_EVENTS.

ENDFORM.                    " COL_HEAD

*&---------------------------------------------------------------------*

*&      Form  VAL

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->USER_COMMAND  text

*      -->SEL           text

*----------------------------------------------------------------------*

FORM VAL USING USER_COMMAND LIKE SY-UCOMM

      SEL TYPE SLIS_SELFIELD.

  DATA: V_LIFNR(10) TYPE N,

        V_EBELN(10) TYPE N,

        V_MATNR(10) TYPE C.

  IF SEL-FIELDNAME = 'LIFNR'.

    V_LIFNR = SEL-VALUE.

    SELECT EBELN AEDAT

      FROM EKKO

      INTO TABLE JTAB

      WHERE LIFNR = V_LIFNR.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

      EXPORTING

        I_CALLBACK_PROGRAM = REPID

        IT_FIELDCAT        = F_EKKO1

        IT_EVENTS          = I_EVENTS

      TABLES

        T_OUTTAB           = JTAB

      EXCEPTIONS

        PROGRAM_ERROR      = 1

        OTHERS             = 2.

    IF SY-SUBRC <> 0.

      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

  ENDIF.

  IF SEL-FIELDNAME = 'EBELN'.

    V_EBELN = SEL-VALUE.

    SELECT EBELP MATNR

      FROM EKPO

      INTO TABLE KTAB

      WHERE EBELN = V_EBELN.

    CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

      EXPORTING

        I_TITLE               = 'ITEM DETAILS'

        I_SCREEN_START_COLUMN = 10

        I_SCREEN_START_LINE   = 10

        I_SCREEN_END_COLUMN   = 30

        I_SCREEN_END_LINE     = 30

        I_TABNAME             = 'EKPO'

        IT_FIELDCAT           = F_EKPO1

        I_CALLBACK_PROGRAM    = REPID

     IMPORTING

       ES_SELFIELD            = SEL

      TABLES

        T_OUTTAB              = KTAB

      EXCEPTIONS

        PROGRAM_ERROR         = 1

        OTHERS                = 2.

    IF SY-SUBRC <> 0.

      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

  ENDIF.

  IF SEL-FIELDNAME = 'MATNR'.

    V_MATNR = SEL-VALUE.

    SET PARAMETER ID 'MAT' FIELD V_MATNR.

    CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

  ENDIF.

ENDFORM.                    "VAL

---

Regards

Jack

Read only

0 Likes
2,051

Hi Jack,

im trying to print basic amount and CST amount of a material from a report.

elow is my piece of code relevant for this operation...

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

  SELECTION-SCREEN : SKIP 1.

  SELECT-OPTIONS   : S_BUDAT FOR RBKP-BUDAT OBLIGATORY.

  SELECTION-SCREEN : SKIP 1.

  SELECTION-SCREEN : END OF BLOCK B1.

TYPES : BEGIN OF TS_RSEG,

           KSCHL TYPE KONV-KSCHL,

           KWERT TYPE KONV-KWERT,

           KWERT_BASIC  TYPE KONV-KWERT,

           J_1ICSTNO TYPE  J_1IMOVEND-J_1ICSTNO,

           AEDAT     TYPE EKKO-AEDAT,

           BELNR     TYPE RSEG-BELNR,   "Document Number

           GJAHR     TYPE RSEG-GJAHR,   "Fiscal Year

           BUZEI     TYPE RSEG-BUZEI,   "Item

           EBELN     TYPE RSEG-EBELN,   "Purchasing Doc.

           EBELP     TYPE RSEG-EBELP,   "Item

           MATNR     TYPE RSEG-MATNR,   "Material

           LFBNR     TYPE RSEG-LFBNR,   "Reference Doc.

           BUKRS     TYPE RSEG-BUKRS,   "Company Code

           WERKS     TYPE RSEG-WERKS,   "Plant

           WRBTR     TYPE RSEG-WRBTR,   "Amount

           MENGE     TYPE RSEG-MENGE,   "Quantity

           LFPOS     TYPE RSEG-LFPOS,   "Ref. Doc. Item

           LIFNR     TYPE RSEG-LIFNR,   "Vendor

           STBLG     TYPE RBKP-STBLG,   "Reversed by

           BLDAT     TYPE RBKP-BLDAT,   "Document Date

           MWSKZ     TYPE RSEG-MWSKZ,   " ADDED FOR TEST

           KNUMV     TYPE EKKO-KNUMV,

      END OF TS_RSEG.

      TYPES:BEGIN OF TS_RBKP,

           BELNR      TYPE RBKP-BELNR,  "Inv. Doc. No.

           GJAHR      TYPE RBKP-GJAHR,  "Fiscal Year

           BLDAT      TYPE RBKP-BLDAT,  "Document Date

           BUDAT      TYPE RBKP-BUDAT,  "Posting Date

           STBLG      TYPE RBKP-STBLG,  "Document Date

           BUZEI      TYPE RSEG-BUZEI,

      END OF TS_RBKP.

          DATA : IT_RSEG TYPE STANDARD TABLE OF TS_RSEG.

      DATA : IT_RBKP TYPE STANDARD TABLE OF TS_RBKP.

     

   

       TYPES: BEGIN OF IIT_SEG,

              EBELN TYPE EKKO-EBELN,

              KNUMV TYPE EKKO-KNUMV,

             END OF IIT_SEG.

     DATA: IT_SEG TYPE STANDARD TABLE OF IIT_SEG,

           WA_SEG TYPE IIT_SEG.

             TYPES: BEGIN OF IIT_SEG1,

      KWERT1 TYPE KONV-KWERT,

      END OF IIT_SEG1.

DATA: IIT_SEG2 TYPE STANDARD TABLE OF IIT_SEG1,

       WA_IIT_SEG2 TYPE IIT_SEG1.

          TYPES: BEGIN OF IIT_SEG2,

      KWERT TYPE KONV-KWERT,

       END OF IIT_SEG2.

DATA: IIT_SEG3 TYPE STANDARD TABLE OF IIT_SEG2,

       WA_IIT_SEG3 TYPE IIT_SEG2.

        SELECT

            RBKP~BELNR

            RBKP~GJAHR

            RBKP~BLDAT

            RBKP~BUDAT

            RBKP~STBLG

             FROM RBKP INTO TABLE IT_RBKP

                        WHERE BUDAT IN S_BUDAT.

      SELECT   RSEG~BELNR

             RSEG~GJAHR

             RSEG~BUZEI

             RSEG~EBELN

             RSEG~EBELP

             RSEG~MATNR

             RSEG~LFBNR

             RSEG~BUKRS

             RSEG~WRBTR

             RSEG~MENGE

             RSEG~LFPOS

             RSEG~MWSKZ

             EKKO~AEDAT

             J_1IMOVEND~J_1ICSTNO                                                 " ADDED THIS FOR TEST

             FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN LEFT OUTER JOIN J_1IMOVEND

              ON EKKO~LIFNR = J_1IMOVEND~LIFNR

             INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR.

    SELECT   RSEG~BELNR

             RSEG~GJAHR

             RSEG~BUZEI

             RSEG~EBELN

             RSEG~EBELP

             RSEG~MATNR

             RSEG~LFBNR

             RSEG~BUKRS

             RSEG~WRBTR

             RSEG~MENGE

             RSEG~LFPOS

             RSEG~MWSKZ

             EKKO~AEDAT

             J_1IMOVEND~J_1ICSTNO                                                 " ADDED THIS FOR TEST

             FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN LEFT OUTER JOIN J_1IMOVEND

              ON EKKO~LIFNR = J_1IMOVEND~LIFNR

             INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR.

  SELECT EBELN KNUMV FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_SEG

           FOR ALL ENTRIES IN IT_RSEG

        WHERE EKKO~EBELN = IT_RSEG-EBELN.

      SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG2

  FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KSCHL = 'JIPC'.

  SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IT_RSEG

     FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KSCHL ='BASB'.

*----below im passing the extracted fields to the workaraea of the internal table *-----for which ill create field catalg:

WA_FINAL-KWERT =  WA_IIT_SEG2-KWERT1.

    WA_FINAL-KWERT_BASIC = WA_IIT_SEG3-KWERT.

  APPEND WA_FINAL TO IT_FINAL.

-----And then ill print field in my field catalog passing table IT_FINAL

is my logic fine,, because its not working for me

Read only

0 Likes
2,051

i modified a little:  ( so that doc condition number is extracted based on item number as well):

SELECT  RSEG~BELNR

             RSEG~GJAHR

             RSEG~BUZEI

             RSEG~EBELN

             RSEG~EBELP

             RSEG~MATNR

             RSEG~LFBNR

             RSEG~BUKRS

             RSEG~WERKS

             RSEG~WRBTR

             RSEG~LFPOS

             RSEG~LIFNR

             RSEG~MWSKZ                " ADDED THIS FOR TEST

             RSEG~MATNR

             EKKO~AEDAT

             J_1IMOVEND~J_1ICSTNO                                                 " ADDED THIS FOR TEST

              FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN LEFT OUTER JOIN J_1IMOVEND

               ON EKKO~LIFNR = J_1IMOVEND~LIFNR

             INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

             FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                          AND GJAHR = IT_RBKP-GJAHR

                                          AND WERKS IN S_WERKS.

   SELECT EKKO~EBELN EKKO~KNUMV RSEG~BUZEI

      FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN

      INTO CORRESPONDING FIELDS OF TABLE IT_SEG

            FOR ALL ENTRIES IN IT_RSEG

         WHERE EKKO~EBELN = IT_RSEG-EBELN.

       SELECT

          KWERT

      FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG2

   FOR ALL ENTRIES IN IT_SEG

            WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL = 'JIPC'.

   SELECT

          KWERT

      FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IT_RSEG

      FOR ALL ENTRIES IN IT_SEG

            WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL ='BASB'.

Rest all is same.

Read only

0 Likes
2,051

Hi Khushboo,

I am not sure what exactly you are trying to do here, can u copy the whole code in the notepad and upload here so i will try myself n get back to you...........

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

im not able to upload.. sorry to make it loud.. ill have to paste on discussion wall:

CHECK IF P_RADIO2 = 'X'.

check. PERFORM GET_DATA_RSEG inside IF P_RADIO2 = 'X'.

i have tried to get the basic and cst amount in this form (PERFORM GET_DATA_RSEG inside IF P_RADIO2 = 'X'.)...but in final o/p these vals are 0!

*&---------------------------------------------------------------------*

*& Report  ZTEST4

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZTEST4.

************************************************************************

********   T-A-B-L-E-S   D-E-C-L-A-R-A-T-I-O-N   A-R-E-A    ************

************************************************************************

TABLES : MKPF,

         RSEG,

         RBKP,

         EKPO.

************************************************************************

****      T-Y-P-ES - P-O-O-L-S   D-E-C-L-A-R-A-T-I-O-N  A-R-E-A    *****

************************************************************************

TYPE-POOLS:  SLIS.  " ALV Global types

************************************************************************

********    T-Y-P-E-S   D-E-C-L-A-R-A-T-I-O-N   A-R-E-A     ************

************************************************************************

TYPES: BEGIN OF  ekko_aedat,

        AEDAT TYPE EKKO-AEDAT,

        END OF ekko_aedat.

*DATA: temp_field TYPE TABLE OF ekko_aedat,

*      wa_field TYPE LINE OF temp_field.

TYPES : BEGIN OF TS_MKPF,

           MBLNR      TYPE MKPF-MBLNR,    "Number of Material Document

           MJAHR      TYPE MKPF-MJAHR,    "Mat. Doc. Year

           BLDAT      TYPE MKPF-BLDAT,    "Document Date in Document

           BUDAT      TYPE MKPF-BUDAT,    "Posting Date

           XBLNR      TYPE MKPF-XBLNR,    "Reference

        END OF TS_MKPF.

TYPES : BEGIN OF TS_MSEG,

           MBLNR      TYPE MSEG-MBLNR,    "Number of Material Document

           MJAHR      TYPE MSEG-MJAHR,    "Mat. Doc. Year

           ZEILE      TYPE MSEG-ZEILE,    "Item

           BWART      TYPE MSEG-BWART,    "Movement Type

           MATNR      TYPE MSEG-MATNR,    "Accounting Document Number BELNR

           WERKS      TYPE MSEG-WERKS,    "Plant

           LIFNR      TYPE MSEG-LIFNR,    "Vendor

           DMBTR      TYPE MSEG-DMBTR,    "Amount in LC

           ERFMG      TYPE MSEG-ERFMG,    "Quantity in UnE

           ERFME      TYPE MSEG-ERFME,    "Unit of Entry

           EBELN      TYPE MSEG-EBELN,    "Purchase Order

           EBELP      TYPE MSEG-EBELP,    "Item

           LFBNR      TYPE MSEG-LFBNR,    "Reference Doc.

           GSBER      TYPE MSEG-GSBER,    "Business Area

           LFPOS      TYPE MSEG-LFPOS,    "Ref. Doc. Item

           BUKRS      TYPE MSEG-BUKRS,    "Company Code

           TAG1       TYPE MSEG-BWART,    "Movement Type

       END OF TS_MSEG.

TYPES : BEGIN OF TS_RSEG,

           KSCHL TYPE KONV-KSCHL,

           KWERT TYPE KONV-KWERT,

           KWERT_BASIC  TYPE KONV-KWERT,

           J_1ICSTNO TYPE  J_1IMOVEND-J_1ICSTNO,

           AEDAT     TYPE EKKO-AEDAT,

           BELNR     TYPE RSEG-BELNR,   "Document Number

           GJAHR     TYPE RSEG-GJAHR,   "Fiscal Year

           BUZEI     TYPE RSEG-BUZEI,   "Item

           EBELN     TYPE RSEG-EBELN,   "Purchasing Doc.

           EBELP     TYPE RSEG-EBELP,   "Item

           MATNR     TYPE RSEG-MATNR,   "Material

           LFBNR     TYPE RSEG-LFBNR,   "Reference Doc.

           BUKRS     TYPE RSEG-BUKRS,   "Company Code

           WERKS     TYPE RSEG-WERKS,   "Plant

           WRBTR     TYPE RSEG-WRBTR,   "Amount

           MENGE     TYPE RSEG-MENGE,   "Quantity

           LFPOS     TYPE RSEG-LFPOS,   "Ref. Doc. Item

           LIFNR     TYPE RSEG-LIFNR,   "Vendor

           STBLG     TYPE RBKP-STBLG,   "Reversed by

           BLDAT     TYPE RBKP-BLDAT,   "Document Date

           MWSKZ     TYPE RSEG-MWSKZ,   " ADDED FOR TEST

           KNUMV     TYPE EKKO-KNUMV,

      END OF TS_RSEG.

TYPES:BEGIN OF TS_RBKP,

           BELNR      TYPE RBKP-BELNR,  "Inv. Doc. No.

           GJAHR      TYPE RBKP-GJAHR,  "Fiscal Year

           BLDAT      TYPE RBKP-BLDAT,  "Document Date

           BUDAT      TYPE RBKP-BUDAT,  "Posting Date

           STBLG      TYPE RBKP-STBLG,  "Document Date

           BUZEI      TYPE RSEG-BUZEI,

      END OF TS_RBKP.

TYPES: BEGIN OF TS_BKPF ,

           BUKRS     TYPE BKPF-BUKRS,

           BELNR     TYPE BKPF-BELNR,

           GJAHR     TYPE BKPF-GJAHR,

           BLART     TYPE BKPF-BLART,

           BLDAT     TYPE BKPF-BLDAT,

           BUDAT     TYPE BKPF-BUDAT,

           XBLNR     TYPE BKPF-XBLNR,

           AWKEY     TYPE BKPF-AWKEY,

       END OF TS_BKPF.

TYPES : BEGIN OF TS_LFA1,

           LIFNR    TYPE LFA1-LIFNR,

           LAND1    TYPE LFA1-LAND1,

           NAME1    TYPE LFA1-NAME1,

           PSTLZ    TYPE LFA1-PSTLZ,

           REGIO    TYPE LFA1-REGIO,

           STRAS    TYPE LFA1-STRAS,

           MCOD3    TYPE LFA1-MCOD3,

           STCD1    TYPE LFA1-STCD1,

        END OF TS_LFA1.

TYPES : BEGIN OF TS_T005U,

           SPRAS   TYPE T005U-SPRAS,

           LAND1   TYPE T005U-LAND1,

           BLAND   TYPE T005U-BLAND,

           BEZEI   TYPE T005U-BEZEI,

        END OF TS_T005U.

TYPES : BEGIN OF TS_MAKT,

           MATNR     TYPE MAKT-MATNR,

           SPRAS     TYPE MAKT-SPRAS,

           MAKTX     TYPE MAKT-MAKTX,

        END OF TS_MAKT.

TYPES : BEGIN OF TS_Bset,

           BUKRS      TYPE BSET-BUKRS,

           BELNR      TYPE BSET-BELNR,     "Accounting Document Number

           GJAHR      TYPE BSET-GJAHR,

           BUZEI      TYPE BSET-BUZEI,

           TXGRP      TYPE BSET-TXGRP,

           HWBAS      TYPE BSET-HWBAS,

           HWSTE      TYPE BSET-HWSTE,

           KTOSL      TYPE BSET-KTOSL,

           KSCHL      TYPE BSET-KSCHL,

           KBETR      TYPE BSET-KBETR,

        END OF TS_BSET.

TYPES: BEGIN OF TS_BSEG ,

          BUKRS      TYPE BSEG-BUKRS,

          BELNR      TYPE BSEG-BELNR,

          GJAHR      TYPE BSEG-GJAHR,

          BUZEI      TYPE BSEG-BUZEI,

          BUZID      TYPE BSEG-BUZID,

          SHKZG      TYPE BSEG-SHKZG,

          DMBTR      TYPE BSEG-DMBTR,

          WRBTR      TYPE BSEG-WRBTR,

          KTOSL      TYPE BSEG-KTOSL,

          HKONT      TYPE BSEG-HKONT,

          TABIX      TYPE BSEG-BUZEI,

          MATNR      TYPE BSEG-MATNR,

          MENGE      TYPE BSEG-MENGE,

          EBELP      TYPE BSEG-EBELN,

          EBELN      TYPE BSEG-EBELN,

          DIFF_AMOUNT TYPE BSEG-DMBTR,

          SERTAX     TYPE BSEG-DMBTR,

       END OF TS_BSEG.

TYPES: BEGIN OF TS_T007S,

         SPRAS       TYPE T007S-SPRAS,

         KALSM       TYPE T007S-KALSM,

         MWSKZ       TYPE T007S-MWSKZ,

         TEXT1       TYPE T007S-TEXT1,

        END OF TS_T007S.

TYPES : BEGIN OF TS_EKPO,

        EBELN      TYPE EKPO-EBELN,

        EBELP      TYPE EKPO-EBELP,

        MWSKZ      TYPE EKPO-MWSKZ,

       END OF TS_EKPO.

TYPES: BEGIN OF TS_EKKO,

        EBELN      TYPE EKKO-EBELN,

        BUKRS      TYPE EKKO-BUKRS,

        BSART      TYPE EKKO-BSART,

       END OF TS_EKKO.

TYPES: BEGIN OF TS_EKBE,

        EBELN      TYPE EKBE-EBELN,

        EBELP      TYPE EKBE-EBELP,

        ZEKKN      TYPE EKBE-ZEKKN,

        VGABE      TYPE EKBE-VGABE,

        GJAHR      TYPE EKBE-GJAHR,

        BELNR      TYPE EKBE-BELNR,

        BUZEI      TYPE EKBE-BUZEI,

        DMBTR      TYPE EKBE-DMBTR,

       END OF TS_EKBE.

***** Added by Tapas on 11.02.2010******************

TYPES: BEGIN OF TS_J_1IMOVEND,                   " Vendor Master Excise Additional Data

        LIFNR       TYPE J_1IMOVEND-LIFNR,       " Account Number of Vendor or Creditor

        J_1IPANNO   TYPE J_1IMOVEND-J_1IPANNO,   " Permanent Account Number

        J_1ISERN    TYPE J_1IMOVEND-J_1ISERN,    " Service Tax Registration Number

       END OF TS_J_1IMOVEND.

***********upto**********************

TYPES : BEGIN OF TS_FINAL,

          KSCHL1 TYPE KONV-KSCHL,

          KWERT TYPE KONV-KWERT,

          KWERT_BASIC TYPE KONV-KWERT,

          KNUMV TYPE EKKO-KNUMV,   "Number of the document condition

          MBLNR      TYPE MKPF-MBLNR,    "Number of Material Document

          MJAHR      TYPE MKPF-MJAHR,    "Header: Material Documen

          AEDAT      TYPE EKKO-AEDAT,    "PO Doc Date

         J_1ICSTNO TYPE  J_1IMOVEND-J_1ICSTNO, " Central Sales Tax Number

          ZREG     TYPE  C,

          BLDAT      TYPE MKPF-BLDAT,    "Document Date in Document

          BUDAT      TYPE MKPF-BUDAT,    "Posting Date in the Document

          XBLNR      TYPE MKPF-XBLNR,    "Reference Document Number

          ZEILE      TYPE RSEG-BUZEI,     "Document Item in Invoice Document

          BWART      TYPE MSEG-BWART,    " Movement Type (Inventory Management)

          MATNR      TYPE MSEG-MATNR,    "Material Number

          WERKS      TYPE MSEG-WERKS,    "Plant

          LIFNR      TYPE MSEG-LIFNR, "Vendor Account Number

          ERFMG      TYPE MSEG-ERFMG,  "Quantity in Unit of Entry

          ERFME      TYPE MSEG-ERFME, "Unit of Entry

          EBELN      TYPE MSEG-EBELN,  "Purchase Order Number

          EBELP      TYPE MSEG-EBELP, "Purchase Order Number

          LFBNR      TYPE MSEG-LFBNR,  "Document No. of a Reference Document

          GSBER      TYPE MSEG-GSBER, "Business Area

          BUKRS      TYPE MSEG-BUKRS,  "Company Code

          MWSKZ      TYPE EKPO-MWSKZ,   "Sales Tax Code

          BUZEI      TYPE RSEG-BUZEI,   "Document Item in Invoice Document

          GJAHR      TYPE RSEG-GJAHR,   "Fiscal Year

          BELNR      TYPE RSEG-BELNR,   "Accounting Document Number

          WRBTR      TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          LFPOS      TYPE RSEG-LFPOS,   "Item of a Reference Document

          AWKEY      TYPE BKPF-AWKEY,   "Reference Key

          BELNR1     TYPE BKPF-BELNR,   "Accounting Document Number

          BLDAT1     TYPE BKPF-BLDAT,   "Document Date in Document

          BUDAT1     TYPE BKPF-BUDAT,   "Posting Date in the Document

          XBLNR1     TYPE BKPF-XBLNR,   "Reference Document Number

          BLART      TYPE BKPF-BLART,    "Document Type

          LAND1      TYPE LFA1-LAND1,     "Country Key

          NAME1      TYPE LFA1-NAME1,    "Name 1

          PSTLZ      TYPE LFA1-PSTLZ,   "Postal Code

          REGIO      TYPE LFA1-REGIO,   "Region (State, Province, County)

          STRAS      TYPE LFA1-STRAS,   "House number and street

          MCOD3      TYPE LFA1-MCOD3,   "Search term for matchcode search

          STCD1      TYPE LFA1-STCD1,   "Tax Number 1

          BEZEI      TYPE T005U-BEZEI,   "Description

          STBLG      TYPE RBKP-STBLG,    "Reversal document number

          MAKTX      TYPE MAKT-MAKTX,    "Material Description (Short Text)

          HWBAS      TYPE BSET-HWBAS,    "Tax Base Amount in Local Currency

          HWSTE      TYPE BSET-HWSTE,    "Tax Amount in Local Currency

          KTOSL      TYPE BSET-KTOSL,     "Transaction Key

*          KSCHL      TYPE BSET-KSCHL,     "Condition Type

          KBETR      TYPE BSET-KBETR,   "Tax Rate

          W_ED       TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          W_AED       TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          W_ECESS    TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          W_SCESS    TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          W_SERTX    TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          W_VATCST   TYPE BSET-HWBAS,     "Tax Base Amount in Local Currency

          W_OTHCHA   TYPE BSET-HWBAS,     "Tax Base Amount in Local Currency

          TXGRP      TYPE BSET-TXGRP,     "Group Indicator for Tax Line Items

          TXGRP1     TYPE BSET-TXGRP,     "Group Indicator for Tax Line Items

          WRBTR1     TYPE BSEG-WRBTR,     "Amount in Document Currency

          HKONT      TYPE BSEG-HKONT,   "General Ledger Account

          TEXT1      TYPE T007S-TEXT1,    "Name for value-added tax

          BSART      TYPE EKKO-BSART,   "Purchasing Document Type

          SUM        TYPE BSET-HWBAS,   "Tax Base Amount in Local Currency

          BUZEINEW   TYPE RSEG-BUZEI,   "Document Item in Invoice Document

          TABIX      TYPE BSEG-BUZEI,   "Document Item in Invoice Document

          TABIX1     TYPE BSEG-BUZEI,   "Document Item in Invoice Document

******* Added by Tapas on 11-02-2010*************

          J_1IPANNO   TYPE J_1IMOVEND-J_1IPANNO, "Permanent Account Number

          J_1ISERN    TYPE J_1IMOVEND-J_1ISERN,  "Service Tax Registration Number

          DIFF_AMOUNT TYPE BSEG-DMBTR,          "Amount in Local Currency

          DMBTR TYPE BSEG-DMBTR,            "Amount in Local Currency

          SDMBTR TYPE BSEG-DMBTR,       "Amount in Local Currency

          SERTAX     TYPE BSEG-DMBTR,  "Amount in Local Currency

*          MM_EX_RATE TYPE BSEG-DMBTR,   " ADDED TO CAPTURE MM X-RATE RATE DIFF

        END OF TS_FINAL.

       TYPES: BEGIN OF IIT_SEG,

              EBELN TYPE EKKO-EBELN,

              KNUMV TYPE EKKO-KNUMV,

              BUZEI TYPE RSEG-BUZEI,

             END OF IIT_SEG.

     DATA: IT_SEG TYPE STANDARD TABLE OF IIT_SEG,

           WA_SEG TYPE IIT_SEG.

             TYPES: BEGIN OF IIT_SEG1,

      KWERT1 TYPE KONV-KWERT,

      END OF IIT_SEG1.

DATA: IIT_SEG2 TYPE STANDARD TABLE OF IIT_SEG1,

       WA_IIT_SEG2 TYPE IIT_SEG1.

          TYPES: BEGIN OF IIT_SEG2,

      KWERT TYPE KONV-KWERT,

       END OF IIT_SEG2.

DATA: IIT_SEG3 TYPE STANDARD TABLE OF IIT_SEG2,

       WA_IIT_SEG3 TYPE IIT_SEG2.

DATA: COUNT(10).

DATA: COUNT1(10).

DATA: COUNT2(10).

************************************************************************

******     C-O-N-S-T-A-N-T-S  D-E-C-L-A-R-A-T-I-O-N   A-R-E-A    *******

************************************************************************

CONSTANTS: C_X(1) TYPE C VALUE 'X'.

************************************************************************

********    A-L-V   D-E-C-L-A-R-A-T-I-O-N   A-R-E-A     ************

************************************************************************

************************************************************************

*****   A-L-V  F-I-E-L-D-C-A-T-A-L-O-G-S  D-E-C-L-A-R-A-T-I-O-N   ******

************************************************************************

************************************************************************

*                   L A Y O U T S

************************************************************************

*DATA: IS_G_A_LAYOUT TYPE SLIS_LAYOUT_ALV.  "Layout for First  BLOCK

************************************************************************

*                  E-V-E-N-T-S

************************************************************************

DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

      GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME

      VALUE 'TOP_OF_PAGE',

      GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

      LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

*      LS_PRIVATE TYPE SLIS_DATA_CALLER_EXIT,

      GT_EVENT TYPE SLIS_T_EVENT,

      LS_LINE TYPE SLIS_LISTHEADER,

      L_INFO(200) TYPE C.

************************************************************************

*            S-O-R-T  -  T-A-B-L-E-S

************************************************************************

DATA: GT_SORT       TYPE SLIS_T_SORTINFO_ALV,

      GS_SORT       TYPE SLIS_SORTINFO_ALV.        "Sort table

************************************************************************

*****  I-N-T-E-R-N-A-L  T-A-B-L-E-S  D-E-C-L-A-R-A-T-I-O-N  A-R-E-A ****

************************************************************************

DATA : IT_MKPF       TYPE STANDARD TABLE OF TS_MKPF.

DATA : IT_MSEG       TYPE STANDARD TABLE OF TS_MSEG.

DATA : IT_MSEG1      TYPE STANDARD TABLE OF TS_MSEG.

DATA : IT_MSEG2      TYPE STANDARD TABLE OF TS_MSEG.

DATA : IT_RSEG       TYPE STANDARD TABLE OF TS_RSEG.

DATA : IT_LFA1       TYPE STANDARD TABLE OF TS_LFA1.

DATA : IT_T005U      TYPE STANDARD TABLE OF TS_T005U.

DATA : IT_BSETG      TYPE STANDARD TABLE OF TS_BSET.

DATA : IT_BSET       TYPE STANDARD TABLE OF TS_BSET.

DATA : IT_BSET1      TYPE STANDARD TABLE OF TS_BSET.

DATA : IT_FINAL      TYPE STANDARD TABLE OF TS_FINAL.

DATA : IT_RBKP       TYPE STANDARD TABLE OF TS_RBKP.

DATA : IT_BKPF       TYPE STANDARD TABLE OF TS_BKPF.

DATA : IT_MAKT       TYPE STANDARD TABLE OF TS_MAKT.

DATA : IT_BSEGL      TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG       TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG1      TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG2      TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG3      TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG4      TYPE STANDARD TABLE OF TS_BSEG.

DATA : IT_BSEG_SER   TYPE STANDARD TABLE OF TS_BSEG.

*DATA : IT_BSEG_MM_EXC   TYPE STANDARD TABLE OF TS_BSEG. " ADDED THIS 21/02/2012

DATA : IT_T007S      TYPE STANDARD TABLE OF TS_T007S.

DATA : IT_EKKO       TYPE STANDARD TABLE OF TS_EKKO.

DATA : IT_EKPO       TYPE STANDARD TABLE OF TS_EKPO.

DATA : IT_EKBE       TYPE STANDARD TABLE OF TS_EKBE.

DATA : IT_J_1IMOVEND TYPE STANDARD TABLE OF TS_J_1IMOVEND.

************************************************************************

**********      W-O-R-K--A-R-E-A  D-E-C-L-A-R-A-T-I-O-N      ***********

************************************************************************

DATA : WA_MKPF       TYPE  TS_MKPF.

DATA : WA_MSEG       TYPE  TS_MSEG.

DATA : WA_MSEG1      TYPE  TS_MSEG.

DATA : WA_MSEG2      TYPE  TS_MSEG.

DATA : WA_RSEG       TYPE  TS_RSEG.

DATA : WA_LFA1       TYPE  TS_LFA1.

DATA : WA_T005U      TYPE  TS_T005U.

DATA : WA_BSETG      TYPE  TS_BSET.

DATA : WA_BSET       TYPE  TS_BSET.

DATA : WA_BSET1      TYPE  TS_BSET.

DATA : WA_FINAL      TYPE  TS_FINAL.

DATA : WA_RBKP       TYPE  TS_RBKP.

DATA : WA_BKPF       TYPE  TS_BKPF.

DATA : WA_MAKT       TYPE  TS_MAKT.

DATA : WA_BSEGL      TYPE  TS_BSEG.

DATA : WA_BSEG       TYPE  TS_BSEG.

DATA : WA_BSEG1      TYPE  TS_BSEG.

DATA : WA_BSEG2      TYPE  TS_BSEG.

DATA : WA_BSEG3      TYPE  TS_BSEG.

DATA : WA_BSEG4      TYPE  TS_BSEG.

DATA : WA_BSEG_SER   TYPE  TS_BSEG.

*DATA : WA_BSEG_MM_EXC   TYPE  TS_BSEG. " ADDED THIS 21/02/2012

DATA : WA_T007S      TYPE  TS_T007S.

DATA : WA_EKKO       TYPE  TS_EKKO.

DATA : WA_EKPO       TYPE  TS_EKPO.

DATA : WA_EKBE       TYPE  TS_EKBE.

DATA : WA_J_1IMOVEND TYPE  TS_J_1IMOVEND

.

***********************************************************************

********           S-T-A-R-T O-F S-E-L-E-C-T-I-O-N          ************

************************************************************************

SELECTION-SCREEN COMMENT 52(30) COMM1 MODIF ID MOD .

SELECTION-SCREEN ULINE /48(19).

SELECTION-SCREEN COMMENT /48(35) COMM2 MODIF ID MOE.

SELECTION-SCREEN ULINE /43(29).

************************************************************************

******    V-A-R-I-A-B-L-E-S   D-E-C-L-A-R-A-T-I-O-N   A-R-E-A    *******

************************************************************************

DATA : V_LAYOUT             TYPE  SLIS_LAYOUT_ALV,

       V_CNT                TYPE  I,

       V_REPID              TYPE  SYST-REPID,

       V_CURRENT_DATE(10)   TYPE  C,

       V_MONTH(2)           TYPE  C,

       V_DAY(2)             TYPE  C,

       V_YEAR(4)            TYPE  C.

DATA : L_DATE(10)           TYPE  C,

       L_DATE1(10)          TYPE  C.

************************************************************************

********           S-T-A-R-T O-F S-E-L-E-C-T-I-O-N          ************

************************************************************************

INITIALIZATION.

  COMM1  = TEXT-002.   "'I S & W P LTD.'.

  COMM2  = TEXT-003.   "'.'.

  V_REPID = SY-REPID.

  V_LAYOUT-ZEBRA = C_X.

************************************************************************

********           S-E-L-E-C-T-I-O-N    S-C-R-E-E-N         ************

************************************************************************

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

  SELECTION-SCREEN : SKIP 1.

  SELECT-OPTIONS   : S_WERKS FOR RSEG-WERKS .

  SELECT-OPTIONS   : S_BUDAT FOR RBKP-BUDAT OBLIGATORY.

  SELECT-OPTIONS   : S_LIFNR FOR RSEG-LIFNR.

  SELECTION-SCREEN : SKIP 1.

  SELECTION-SCREEN : END OF BLOCK B1.

  SELECTION-SCREEN:BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-051.

  PARAMETERS : P_RADIO1 TYPE CHAR1 RADIOBUTTON GROUP T1 USER-COMMAND UC1 DEFAULT 'X'.

  PARAMETERS : P_RADIO2 TYPE CHAR1 RADIOBUTTON GROUP T1.

  PARAMETERS : P_RADIO3 TYPE CHAR1 RADIOBUTTON GROUP T1.

  PARAMETERS : P_RADIO4 TYPE CHAR1 RADIOBUTTON GROUP T1.

  PARAMETERS : P_RADIO5 TYPE CHAR1 RADIOBUTTON GROUP T1.

  PARAMETERS : P_RADIO6 TYPE CHAR1 RADIOBUTTON GROUP T1.

  PARAMETERS : P_RADIO7 TYPE CHAR1 RADIOBUTTON GROUP T1.

  SELECTION-SCREEN: END OF BLOCK B4.

START-OF-SELECTION.

  IF P_RADIO1 = 'X'.          " Normal Purchase(Raw Material VAT) PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG.          " Fecting Invoice detail

    PERFORM GET_DATA_MSEG.          " Fecting GRN details(Document Segment: Material)

    PERFORM GET_DATA_MKPF.          " Fetch Material Document related data

    PERFORM FETCH_RAW_MAT.          " Tax xodes for Raw material

    PERFORM GET_DATA_BKPF.          " Fecth Account Document Detals

    PERFORM GET_DATA_LFA1.          " Fetch Vendor Details

    PERFORM GET_DATA_T005U.         " Fetch  Taxes: Region Key: Texts

    PERFORM GET_DATA_MAKT.          " Fecth Material Description

    PERFORM GET_DATA_TAXGROUP.      " Fetch Tax group details from BSET

    PERFORM GET_DATA_BSET.          " Fetch Condtion type for taxes and amount

    PERFORM GET_DATA_BSEG_LINE.     " Fecth IR Related data (Frieght charges)

    PERFORM GET_DATA_BSEG.          " Fecth IR Related data

    PERFORM GET_DATA_T007S.         " Fetch Tax Code Names

    PERFORM GET_DATA_EKKO.          " Fetch PO details

    PERFORM GET_DATA_EKBE.          " Fecth History per Purchasing Document details

  ENDIF.

  IF P_RADIO2 = 'X'.       " Normal Purchase(Raw Material C.G & CAT) PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG.

    PERFORM GET_DATA_MSEG.

    PERFORM GET_DATA_MKPF.

    PERFORM FETCH_RAW_MAT_CST.     " Fetch material Detail where CST/VAT is appilcable

    PERFORM GET_DATA_BKPF.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_MAKT.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET.

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG.

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE.

  ENDIF.

  IF P_RADIO3 = 'X'.       " Normal Purchase(NON Taxable Goods) PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG.

    PERFORM GET_DATA_MSEG.

    PERFORM GET_DATA_MKPF.

    PERFORM FETCH_NONTAX.           " Fetch material Detail where Its NON taxable from EKPO

    PERFORM GET_DATA_BKPF.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_MAKT.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET.

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG.

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE.

  ENDIF.

  IF P_RADIO4 = 'X'.          " Normal Purchase(Capital Goods VAT) PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG.

    PERFORM GET_DATA_MSEG.

    PERFORM GET_DATA_MKPF.

    PERFORM FETCH_CAP_VAT.          " Fetch material Detail where Its NON taxable from EKPO

    PERFORM GET_DATA_BKPF.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_MAKT.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET_CGVAT.      " Fetch material Detail  C G VAT from BSET

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG.

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE.

  ENDIF.

  IF P_RADIO5 = 'X'.                            "Servies Tax PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG_SERVICE.              "Fetch material data Related for servcices from RSEG

    PERFORM GET_DATA_MSEG_SERVICE.              "Fetch material data Related for servcices from MSEG

    PERFORM GET_DATA_MKPF_SERVICE.              "Fetch material data Related for services from MKPF

    PERFORM FETCH_SERVICE.

    PERFORM GET_DATA_BKPF.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_J_1IMOVEND.               "Fetch material data Related for services.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET_SER.

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG_SER.

    PERFORM GET_DATA_BSEG_SERVICE.

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE.

  ENDIF.

  IF P_RADIO6 = 'X'.                          " Import PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG_IMPORT.            "Fetch material data Related for services from RSEG

    PERFORM GET_DATA_MSEG_IMPORT.           "Fetch material data Related for services from MSEG

    PERFORM GET_DATA_MKPF.

    PERFORM FETCH_IMPORT.

    PERFORM GET_DATA_BKPF.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_MAKT.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET.

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG_IMPORT.

    PERFORM GET_DATA_BSEG_NETAMOUNT.  "Fetch material data Related for services from MSEG

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE_IMPORT.

  ENDIF.

  IF P_RADIO7 = 'X'.                            "Servies Tax PO

    PERFORM GUI_STATUS.

    PERFORM GET_DATA_RSEG_SERVICE.              "Fetch material data Related for servcices from RSEG

    PERFORM GET_DATA_MSEG_GANGAA.              "Fetch material data Related for servcices from MSEG

    PERFORM GET_DATA_MKPF_SERVICE.              "Fetch material data Related for services from MKPF

    PERFORM FETCH_SERVICE.

    PERFORM GET_DATA_BKPF_SERVICE.

    PERFORM GET_DATA_LFA1.

    PERFORM GET_DATA_J_1IMOVEND.               "Fetch material data Related for services.

    PERFORM GET_DATA_T005U.

    PERFORM GET_DATA_TAXGROUP.

    PERFORM GET_DATA_BSET_SER.

    PERFORM GET_DATA_BSEG_LINE.

    PERFORM GET_DATA_BSEG_SER.

    PERFORM GET_DATA_BSEG_SERVICE.

    PERFORM GET_DATA_T007S.

    PERFORM GET_DATA_EKKO.

    PERFORM GET_DATA_EKBE.

  ENDIF.

*  ******** DISPLAY****************

  PERFORM PASS_FIELD_NAME USING FIELDCAT.

  PERFORM EVENTTAB_BUILD USING GT_EVENT[].

  PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

  PERFORM PASS_DATA_LIST_OUTPUT.

  PERFORM TOP_OF_PAGE.

*   ***********************************

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_LFA1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_LFA1 .

  SELECT LIFNR

          LAND1

          NAME1

          PSTLZ

          REGIO

          STRAS

          MCOD3

          STCD1

          FROM LFA1 INTO TABLE IT_LFA1

          FOR ALL ENTRIES IN IT_FINAL

          WHERE LIFNR = IT_FINAL-LIFNR

          AND   LIFNR IN S_LIFNR.

  SORT IT_LFA1  BY LIFNR.

  SORT IT_FINAL BY LIFNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_LFA1.

    READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY  LIFNR = WA_FINAL-LIFNR

                                                      BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-LAND1 = WA_LFA1-LAND1.

      WA_FINAL-NAME1 = WA_LFA1-NAME1.

      WA_FINAL-REGIO = WA_LFA1-REGIO.

      WA_FINAL-PSTLZ = WA_LFA1-PSTLZ.

      WA_FINAL-STRAS = WA_LFA1-STRAS.

      WA_FINAL-MCOD3 = WA_LFA1-MCOD3.

      WA_FINAL-STCD1 = WA_LFA1-STCD1.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING LAND1 NAME1 REGIO  PSTLZ STRAS MCOD3 STCD1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE LIFNR = 'S083'.

  DELETE IT_FINAL WHERE NAME1 = ' '.

ENDFORM.                    " GET_DATA_LFA1

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_T005U

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_T005U .

  SELECT SPRAS

          LAND1

          BLAND

          BEZEI FROM T005U INTO TABLE IT_T005U

          FOR ALL ENTRIES IN IT_FINAL

          WHERE LAND1 = IT_FINAL-LAND1

          AND   BLAND = IT_FINAL-REGIO.

  SORT IT_T005U BY LAND1 BLAND.

  SORT IT_FINAL BY LAND1 REGIO.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_T005U.

    READ TABLE IT_T005U INTO WA_T005U WITH KEY LAND1 = WA_FINAL-LAND1

                                               BLAND = WA_FINAL-REGIO

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BEZEI = WA_T005U-BEZEI.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BEZEI.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  V_MONTH = SY-DATUM+4(2).

  V_DAY   = SY-DATUM+6(2).

  V_YEAR  = SY-DATUM(4) .

  CONCATENATE V_DAY ':' V_MONTH ':' V_YEAR INTO  V_CURRENT_DATE.

  CONCATENATE S_BUDAT-LOW+6(2) '.' S_BUDAT-LOW+4(2) '.' S_BUDAT-LOW+0(4)

    INTO L_DATE.

  CONCATENATE S_BUDAT-HIGH+6(2) '.' S_BUDAT-HIGH+4(2) '.' S_BUDAT-HIGH+0(4)

    INTO L_DATE1.

ENDFORM.                    " GET_DATA_T005U

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MAKT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MAKT .

  SELECT

         MATNR

         SPRAS

         MAKTX

         FROM MAKT INTO TABLE IT_MAKT

         FOR ALL ENTRIES IN IT_FINAL

         WHERE MATNR = IT_FINAL-MATNR.

  SORT IT_MAKT  BY MATNR.

  SORT IT_FINAL BY MATNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MAKT.

    READ TABLE IT_MAKT INTO WA_MAKT WITH KEY  MATNR = WA_FINAL-MATNR

                                                      BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MAKTX  = WA_MAKT-MAKTX.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MAKTX.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    SHIFT  WA_FINAL-MATNR LEFT DELETING LEADING '0'.

    MODIFY IT_FINAL FROM WA_FINAL .

  ENDLOOP.

ENDFORM.                    " GET_DATA_MAKT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_TAXGROUP

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_TAXGROUP .

  SELECT BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSETG

           FOR ALL ENTRIES IN IT_FINAL

               WHERE BELNR = IT_FINAL-BELNR1

               AND   GJAHR   = IT_FINAL-GJAHR

               AND   BUKRS = '1000'

               AND   HWBAS = IT_FINAL-WRBTR.

  SORT IT_BSETG  BY BELNR HWBAS.

  SORT IT_FINAL  BY BELNR1 WRBTR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSETG.

    READ TABLE IT_BSETG INTO WA_BSETG WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                HWBAS = WA_FINAL-WRBTR

                                                BUKRS = '1000'.

    IF SY-SUBRC = 0.

      WA_FINAL-TXGRP  = WA_BSETG-TXGRP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING TXGRP.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_TAXGROUP

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSET

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSET .

  SORT IT_FINAL BY BELNR1.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSET.

    SELECT BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSET

               WHERE BELNR = WA_FINAL-BELNR1

               AND   GJAHR   = WA_FINAL-GJAHR

               AND BUKRS = '1000'

               AND   KSCHL IN ('JMOQ','JAOP','JMOP','JMIP','JMIQ','JEC1','JEC2','JSEI','JSEP',

                                'JVRD','JVRN','JIPL','JIPS','JIPC','JVCN','JVCD','JVCS' )

               AND   TXGRP   = WA_FINAL-TXGRP

               AND HKONT NE ' '.

    DELETE IT_BSET WHERE HWSTE IS INITIAL.

*    IF SY-SUBRC = 0.

    PERFORM GET_ED.

    PERFORM GET_AED.

    PERFORM GET_ECESS.

    PERFORM GET_SCESS.

*    PERFORM GET_VAT_CST.

    PERFORM GET_OTHCHARGE.

*    ENDIF.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING

    W_ED W_AED W_ECESS W_SCESS W_VATCST W_OTHCHA .

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSET

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG .

  SORT IT_FINAL BY BELNR1.

  CLEAR IT_BSEG.

*  LOOP AT IT_FINAL INTO WA_FINAL.

  SELECT

         BUKRS

         BELNR

         GJAHR

         BUZEI

         BUZID

         SHKZG

         DMBTR

         WRBTR

         KTOSL

         HKONT FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

         FOR ALL ENTRIES IN IT_FINAL

         WHERE BELNR = IT_FINAL-BELNR1

         AND   GJAHR = IT_FINAL-GJAHR

*           AND   BUZEI = IT_FINAL-TABIX1

         AND KTOSL  IN ('FR0','FR1','FR3','FR6','FR7')

         AND BUKRS = '1000'.

*  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE BELNR = WA_FINAL-BELNR1

                                     AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-WRBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

  """""""""""""""""""""""""""""""""""""""""""""""""""""12/04/2012 "Suresh

  SELECT   BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSETG

           FOR ALL ENTRIES IN IT_FINAL

               WHERE BELNR = IT_FINAL-BELNR1

               AND   GJAHR   = IT_FINAL-GJAHR

               AND   BUKRS = '1000'

               AND   HWBAS = IT_FINAL-W_OTHCHA.

SORT IT_BSETG  BY BELNR HWBAS.

  SORT IT_FINAL  BY BELNR1 WRBTR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSETG.

    READ TABLE IT_BSETG INTO WA_BSETG WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                HWBAS = WA_FINAL-WRBTR

                                                BUKRS = '1000'.

    IF SY-SUBRC = 0.

      WA_FINAL-TXGRP1  = WA_BSETG-TXGRP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING TXGRP1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

SORT IT_FINAL BY BELNR1.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSET.

    SELECT BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSET

               WHERE BELNR = WA_FINAL-BELNR1

               AND   GJAHR   = WA_FINAL-GJAHR

               AND BUKRS = '1000'

               AND   KSCHL IN ('JMOQ','JAOP','JMOP','JMIP','JMIQ','JEC1','JEC2','JSEI','JSEP',

                                'JVRD','JVRN','JIPL','JIPS','JIPC','JVCN','JVCD','JVCS' )

               AND   TXGRP   = WA_FINAL-TXGRP1

               AND HKONT NE ' '.

    DELETE IT_BSET WHERE HWSTE IS INITIAL.

*    IF SY-SUBRC = 0.

    PERFORM GET_ED.

    PERFORM GET_AED.

    PERFORM GET_ECESS.

    PERFORM GET_SCESS.

*    PERFORM GET_VAT_CST.

    PERFORM GET_OTHCHARGE.

*    ENDIF.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING

    W_ED W_AED W_ECESS W_SCESS W_VATCST W_OTHCHA .

    CLEAR WA_FINAL.

  ENDLOOP.

  """""""""""""""""""""""""""""""""""""""""""""""""END Suresh

*************************************************SELECTION FOR G\L ACCOUNT.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT

          MATNR

          MENGE

          EBELP

          EBELN FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'WRX'

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR MATNR EBELN EBELP ERFMG.

  SORT IT_BSEG BY BELNR  GJAHR MATNR EBELN EBELP MENGE.

*  ***********************  CHANGE STRATED ON 28/02/2012 BY RANJITH ****************************

*  LOOP AT IT_BSEG INTO WA_BSEG.

*    IF SY-SUBRC = 0.

*      WA_FINAL-HKONT  = WA_BSEG-HKONT.

*      WA_FINAL-WRBTR1 = WA_BSEG-DMBTR.

*      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  HKONT WRBTR1.

*    ENDIF.

*    ENDLOOP.

* ************************ END OF CHANGE ON 28/02/2012 **************************************

  LOOP AT IT_BSEG INTO WA_BSEG.

    WA_BSEG-MATNR = WA_BSEG-MATNR+9(9).

    MODIFY IT_BSEG FROM WA_BSEG TRANSPORTING MATNR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG.

    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

                                              GJAHR = WA_FINAL-GJAHR

                                              MATNR = WA_FINAL-MATNR

                                              EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                              MENGE = WA_FINAL-ERFMG

                                              BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-HKONT  = WA_BSEG-HKONT.

      WA_FINAL-WRBTR1 = WA_BSEG-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  HKONT WRBTR1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG3

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'H'

    .

  LOOP AT IT_BSEG3 INTO WA_BSEG3.

    IF WA_BSEG3-SHKZG = 'H'.

      WA_BSEG3-DMBTR = -1 * WA_BSEG3-DMBTR.

    ENDIF.

    MODIFY IT_BSEG3 FROM WA_BSEG3 TRANSPORTING DMBTR.

  ENDLOOP.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG3.

    LOOP AT IT_BSEG3 INTO WA_BSEG3 WHERE BELNR = WA_FINAL-BELNR1

                                    AND  GJAHR = WA_FINAL-GJAHR.

*    READ TABLE IT_BSEG3 INTO WA_BSEG3 WITH KEY  BELNR = WA_FINAL-BELNR1

*                                                GJAHR = WA_FINAL-GJAHR

*                                                BINARY SEARCH.

*    IF SY-SUBRC = 0.

      WA_FINAL-DMBTR  = WA_FINAL-DMBTR + WA_BSEG3-DMBTR .

    ENDLOOP.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DMBTR.

*    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

*******************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG4

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'S'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG4.

    READ TABLE IT_BSEG4 INTO WA_BSEG4 WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-SDMBTR  = WA_BSEG4-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SDMBTR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

********************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG2

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL IN ('BSX','DIF','PRD','WIT' ,'KDM')  " ADDED  KDM FOR MM EXCHANGE RATE

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG2 BY BELNR  GJAHR.

  LOOP AT IT_BSEG2 INTO WA_BSEG2.

    IF WA_BSEG2-SHKZG = 'H'.

      WA_BSEG2-DMBTR = -1 * WA_BSEG2-DMBTR.

    ENDIF.

    MODIFY IT_BSEG2 FROM WA_BSEG2 TRANSPORTING DMBTR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG2 INTO WA_BSEG2 WHERE BELNR = WA_FINAL-BELNR1

                                       AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-DIFF_AMOUNT = WA_FINAL-DIFF_AMOUNT + WA_BSEG2-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DIFF_AMOUNT.

    ENDON.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_LINE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_LINE .

  SORT IT_FINAL BY BELNR1.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      COUNT1 = '0'.

    ENDON.

    COUNT1 = COUNT1 + 1.

    WA_FINAL-TABIX = COUNT1.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING TABIX.

  ENDLOOP.

  SELECT BUKRS

         BELNR

         GJAHR

         BUZEI

         BUZID

         SHKZG

         DMBTR

         WRBTR

         KTOSL

         HKONT FROM BSEG INTO TABLE IT_BSEGL

         FOR ALL ENTRIES IN IT_FINAL

  WHERE BELNR = IT_FINAL-BELNR1

  AND   GJAHR = IT_FINAL-GJAHR

  AND KTOSL  IN ('FR0','FR1','FR3','FR6','FR7')

  AND BUKRS = '1000'.

  SORT IT_BSEGL BY BELNR.

  LOOP AT IT_BSEGL INTO WA_BSEGL.

    ON CHANGE OF WA_BSEGL-BELNR.

      COUNT2 = '0'.

    ENDON.

    COUNT2 = COUNT2 + 1.

    WA_BSEGL-TABIX = COUNT2.

    MODIFY IT_BSEGL FROM WA_BSEGL TRANSPORTING TABIX.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEGL.

    READ TABLE IT_BSEGL INTO WA_BSEGL WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                TABIX = WA_FINAL-TABIX

                                                BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-TABIX1 =  WA_BSEGL-BUZEI.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING TABIX1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_LINE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_T007S

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_T007S .

  SELECT SPRAS

           KALSM

           MWSKZ

           TEXT1 FROM T007S INTO TABLE IT_T007S

                 FOR ALL ENTRIES IN IT_FINAL

                 WHERE SPRAS = 'EN'

                 AND   KALSM = 'TAXINN'

                 AND   MWSKZ = IT_FINAL-MWSKZ.

  SORT IT_T007S BY MWSKZ.

  SORT IT_FINAL BY MWSKZ.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_T007S.

    READ TABLE IT_T007S INTO WA_T007S WITH KEY  MWSKZ = WA_FINAL-MWSKZ

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-TEXT1  = WA_T007S-TEXT1.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING TEXT1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_T007S

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_EKKO

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_EKKO .

  SELECT        EBELN

                  BUKRS

                  BSART FROM EKKO INTO TABLE IT_EKKO

                  FOR ALL ENTRIES IN IT_FINAL

                  WHERE EBELN = IT_FINAL-EBELN

                  AND BUKRS = '1000'

                  AND BSART IN  ('IB','IC','IR','IS').

  SORT IT_EKKO BY EBELN.

  SORT IT_FINAL BY EBELN.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKKO.

    READ TABLE IT_EKKO INTO WA_EKKO WITH KEY  EBELN = WA_FINAL-EBELN

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BSART  = WA_EKKO-BSART.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BSART.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_EKKO

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_EKBE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_EKBE .

  SORT IT_FINAL BY EBELN EBELP MBLNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    IF WA_FINAL-BELNR IS INITIAL.

      SELECT  EBELN

              EBELP

              ZEKKN

              VGABE

              GJAHR

              BELNR

              BUZEI

              DMBTR  FROM EKBE INTO TABLE IT_EKBE

              WHERE EBELN = WA_FINAL-EBELN

              AND   EBELP = WA_FINAL-EBELP

              AND   BELNR = WA_FINAL-MBLNR

              AND   VGABE = 1.

      LOOP AT IT_EKBE INTO WA_EKBE.

        WA_FINAL-WRBTR  = WA_EKBE-DMBTR.

        MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR.

      ENDLOOP.

      CLEAR WA_FINAL.

    ENDIF.

  ENDLOOP.

  DELETE IT_FINAL WHERE BSART IS NOT INITIAL.

  LOOP AT IT_FINAL INTO WA_FINAL.

    WA_FINAL-SUM = ( WA_FINAL-WRBTR1 "Amount in Doc Currency

    + WA_FINAL-W_ED  "Tax Base Amount in Local Currency

    + WA_FINAL-W_AED  ""Tax Base Amount in Local Currency

    + WA_FINAL-W_ECESS + "Tax Base Amount in Local Currency

                     WA_FINAL-W_SCESS + "Tax Base Amount in Local Currency

                     WA_FINAL-W_SERTX + "Tax Base Amount in Local Currency

                     WA_FINAL-W_VATCST + "Tax Base Amount in Local Currency

                     WA_FINAL-W_OTHCHA + "Tax Base Amount in Local Currency

               + WA_FINAL-DIFF_AMOUNT  +  "Amount in Local Currency

               WA_FINAL-SDMBTR + "Amount in Local Currency

               wa_final-sertax  "Amount in Local Currency

               ).

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SUM.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_EKBE

*&---------------------------------------------------------------------*

*&      Form  GET_ED

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_ED .

  LOOP AT IT_BSET INTO WA_BSET.

    IF  WA_BSET-KSCHL = 'JMOQ' OR

        WA_BSET-KSCHL = 'JMOP' OR

        WA_BSET-KSCHL = 'JMIP' OR

        WA_BSET-KSCHL = 'JMIQ' .

*    IF SY-SUBRC = 0.

      WA_FINAL-W_ED = WA_FINAL-W_ED + WA_BSET-HWSTE.

*     ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_ED

*&---------------------------------------------------------------------*

*&      Form  GET_AED

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_AED .

  LOOP AT IT_BSET INTO WA_BSET.

    IF WA_BSET-KSCHL = 'JAOP'.

      WA_FINAL-W_AED = WA_FINAL-W_AED + WA_BSET-HWSTE.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_AED

*&---------------------------------------------------------------------*

*&      Form  GET_ECESS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_ECESS .

  LOOP AT IT_BSET INTO WA_BSET.

    IF WA_BSET-KSCHL = 'JEC1' OR

       WA_BSET-KSCHL = 'JEC2'.

      IF SY-SUBRC = 0.

        WA_FINAL-W_ECESS =  WA_FINAL-W_ECESS + WA_BSET-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_ECESS

*&---------------------------------------------------------------------*

*&      Form  GET_SCESS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_SCESS .   " CHECK  THIS  HERE

  LOOP AT IT_BSET INTO WA_BSET.

    IF WA_BSET-KSCHL = 'JSEI' OR

       WA_BSET-KSCHL = 'JSEP'.

      IF SY-SUBRC = 0.

        WA_FINAL-W_SCESS =  WA_FINAL-W_SCESS + WA_BSET-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_SCESS

*&---------------------------------------------------------------------*

*&      Form  GET_VAT_CST

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_VAT_CST .

  LOOP AT IT_BSET INTO WA_BSET.

    IF WA_BSET-KSCHL = 'JVRD' OR

       WA_BSET-KSCHL = 'JVRN' OR

       WA_BSET-KSCHL = 'JIPL' OR

       WA_BSET-KSCHL = 'JIPS' OR

       WA_BSET-KSCHL = 'JIPC'.

      IF SY-SUBRC = 0.

        WA_FINAL-W_VATCST = WA_FINAL-W_VATCST + WA_BSET-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_VAT_CST

*&---------------------------------------------------------------------*

*&      Form  GET_OTHCHARGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_OTHCHARGE .

  LOOP AT IT_BSET INTO WA_BSET.

    IF   WA_BSET-KSCHL = 'JVCD' OR

         WA_BSET-KSCHL = 'JVCN' OR

         WA_BSET-KSCHL = 'JVCS' .

      IF SY-SUBRC = 0.

        WA_FINAL-W_OTHCHA = WA_FINAL-W_OTHCHA + WA_BSET-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_OTHCHARGE

*&---------------------------------------------------------------------*

*&      Form  GET_FREIGHT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_FREIGHT .

  LOOP AT IT_BSEG INTO WA_BSEG.

    WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-WRBTR.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

  ENDLOOP.

ENDFORM.                    " GET_FREIGHT

*&---------------------------------------------------------------------*

*&      Form  PASS_FIELD_NAME

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_FIELDCAT  text

*----------------------------------------------------------------------*

FORM PASS_FIELD_NAME  USING    P_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

    CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'KWERT'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-KEY         = 'X'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-055. "CS Tax

  LS_FIELDCAT-SELTEXT_M   = TEXT-055. "CS Tax

  LS_FIELDCAT-SELTEXT_L   = TEXT-055. "CS Tax

  APPEND LS_FIELDCAT TO P_FIELDCAT.

      CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'KWERT_BASIC'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-KEY         = 'X'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-056. "Basic

  LS_FIELDCAT-SELTEXT_M   = TEXT-056. "Basic

  LS_FIELDCAT-SELTEXT_L   = TEXT-056. "Basic

  APPEND LS_FIELDCAT TO P_FIELDCAT.

*      CLEAR LS_FIELDCAT.

*  LS_FIELDCAT-ROW_POS     = '01'.

*  LS_FIELDCAT-COL_POS     = V_CNT.

*  LS_FIELDCAT-FIELDNAME   = 'KSCHL1'.

*  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

*  LS_FIELDCAT-DO_SUM      = SPACE.

*  LS_FIELDCAT-OUTPUTLEN   = '09'.

*  LS_FIELDCAT-KEY         = 'X'.

*  LS_FIELDCAT-SELTEXT_S   = TEXT-055. "'VENDOR NUM.'.

*  LS_FIELDCAT-SELTEXT_M   = TEXT-055. "'VENDOR NUM'.

*  LS_FIELDCAT-SELTEXT_L   = TEXT-055. "'VENDOR NUM'.

*  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'LIFNR'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-KEY         = 'X'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-005. "'VENDOR NUM.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-005. "'VENDOR NUM'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-005. "'VENDOR NUM'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'J_1ICSTNO'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-KEY         = 'X'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-053. "'VENDOR NUM.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-053. "'VENDOR NUM'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-053. "'VENDOR NUM'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'ZREG'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-KEY         = 'X'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-054. "'VENDOR NUM.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-054. "'VENDOR NUM'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-054. "'VENDOR NUM'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'NAME1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '25'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-006. "'VENDOR NAME'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-006. "'VENDOR NAME.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-006. "'VENDOR NAME.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'XBLNR1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '15'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-007. "'REF.DOC. NO.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-007. "'REF.DOC. NO.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-007. "'REF.DOC. NO.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BLDAT1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-022. "'INVOICE DATE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-022. "'INVOICE DATE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-022. "'INVOICE DATE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'AEDAT'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-008. "'DOC.DATE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-008. "'DOC.DATE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-008. "'DOC.DATE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'MWSKZ'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '06'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-009."'TAX CODE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-009."'TAX CODE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-009."'TAX CODE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'TEXT1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '25'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-010."'TAX DESCRIPTION'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-010."'TAX DESCRIPTION'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-010."'TAX DESCRIPTION'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'WRBTR1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-011. "'NET AMOUNT'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-011. "'NET AMOUNT'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-011. "'NET AMOUNT'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  IF P_RADIO5 NE 'X'.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'W_ED'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '10'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-014. "'ED'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-014. "'ED'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-014. "'ED'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'W_AED'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '10'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-045. "'AED'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-045. "'AED'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-045. "'AED'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

  ENDIF.

  IF P_RADIO5 = 'X'.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'W_SERTX'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '10'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-013. "'SERVICE TAX'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-013. "'SERVICE TAX'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-013. "'SERVICE TAX'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'SERTAX'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '10'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-044. "' TAX OTHERS'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-044. "' TAX'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-044. "' TAX'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'J_1IPANNO'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '10'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-042. "'PAN'. "Permanent Account Number

    LS_FIELDCAT-SELTEXT_M   = TEXT-042. "'PAN'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-042. "'PAN'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'J_1ISERN'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '20'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-043. "'SERVICE TAX REG NO'. "Service Tax Registration Number

    LS_FIELDCAT-SELTEXT_M   = TEXT-043. "''.

    LS_FIELDCAT-SELTEXT_L   = TEXT-043. "''.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

  ENDIF.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'W_ECESS'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-015. "'E.cess'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-015. "'E.cess'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-015. "'E.cess'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'W_SCESS'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-016. "'SE.cess'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-016. "'SE.cess'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-016. "'SE.cess'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

*  IF P_RADIO5 NE 'X'.

*    CLEAR LS_FIELDCAT.

*    LS_FIELDCAT-ROW_POS     = '01'.

*    LS_FIELDCAT-COL_POS     = V_CNT.

*    LS_FIELDCAT-FIELDNAME   = 'W_VATCST'.

*    LS_FIELDCAT-FIELDNAME   = 'W_VATCST'.

*    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

*    LS_FIELDCAT-DO_SUM      = SPACE.

*    LS_FIELDCAT-OUTPUTLEN   = '08'.

*    LS_FIELDCAT-SELTEXT_S   = TEXT-012. "'VAT/CST'.

*    LS_FIELDCAT-SELTEXT_M   = TEXT-012. "'VAT/CST'.

*    LS_FIELDCAT-SELTEXT_L   = TEXT-012. "'VAT/CST'.

*    APPEND LS_FIELDCAT TO P_FIELDCAT.

*  ENDIF.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'W_OTHCHA'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-017. "'OTHER CHARGES'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-017. "'OTHER CHARGES'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-017. "'OTHER CHARGES'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'DIFF_AMOUNT'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-046. "'OTHER CHARGES'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-046. "'OTHER CHARGES'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-046. "'OTHER CHARGES'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'SUM'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-018. "'GROSS Amt.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-018. "'GROSS Amt.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-018. "'GROSS Amt.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'DMBTR'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-047. "'G/L AMOUNT.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-047. "'.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-047. "''.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

*  CLEAR LS_FIELDCAT.

*  LS_FIELDCAT-ROW_POS     = '01'.

*  LS_FIELDCAT-COL_POS     = V_CNT.

*  LS_FIELDCAT-FIELDNAME   = 'WRBTR1'.

*  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

*  LS_FIELDCAT-DO_SUM      = SPACE.

*  LS_FIELDCAT-OUTPUTLEN   = '10'.

*  LS_FIELDCAT-SELTEXT_S   = TEXT-044. "'Vendor Amt.'.

*  LS_FIELDCAT-SELTEXT_M   = TEXT-044. "'Vendor Amt.'.

*  LS_FIELDCAT-SELTEXT_L   = TEXT-044. "'Vendor Amt.'.

*  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'HKONT'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10 '.

  LS_FIELDCAT-SELTEXT_S   = TEXT-019. "'G\L ACCOUNT'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-019. "'G\L ACCOUNT'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-019. "'G\L ACCOUNT'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'EBELN'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '11'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-021. "'PURCHASE ORDER NO.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-021. "'PURCHASE ORDER NO.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-021. "'PURCHASE ORDER NO.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BUZEI'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '05'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-024. "'LINE ITEM NO.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-024. "'LINE ITEM NO.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-024. "'LINE ITEM NO.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BELNR'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '15'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-023. "'INVOICE RECEPIT DOC NO.'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-023. "'INVOICE NO.'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-023. "'INVOICE NO.'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BUDAT1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '15'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-034. "'INVOICE POSTING DATE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-034. "'POSTING DATE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-034. "'POSTING DATE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BELNR1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-020. "'FI DOC NO'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-020. "'FI DOC NO'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-020. "'FI DOC NO'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'STRAS'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '15'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-025. "'ADDRESS'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-025. "'ADDRESS'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-025. "'ADDRESS'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'MCOD3'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-026. "'CITY'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-026. "'CITY'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-026. "'CITY'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'PSTLZ'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-027. "'POSTAL CODE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-027. "'POSTAL CODE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-027. "'POSTAL CODE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BEZEI'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-028. "'REGION'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-028. "'REGION'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-028. "'REGION'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'STCD1'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '09'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-029. "'TIN NUMBER'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-029. "'TIN NUMBER'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-029. "'TIN NUMBER'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BWART'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '06'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-030. "'MOVEMENT TYPE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-030. "'MOVEMENT TYPE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-030. "'MOVEMENT TYPE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'MBLNR'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '12'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-032. "'GRN DOC NO'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-032. "'MATERIAL DOC.NUM'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-032. "'MATERIAL DOC.NUM'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

*  CLEAR LS_FIELDCAT.

*  LS_FIELDCAT-ROW_POS     = '01'.

*  LS_FIELDCAT-COL_POS     = V_CNT.

*  LS_FIELDCAT-FIELDNAME   = 'BLDAT'.

*  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

*  LS_FIELDCAT-DO_SUM      = SPACE.

*  LS_FIELDCAT-OUTPUTLEN   = '10'.

*  LS_FIELDCAT-SELTEXT_S   = TEXT-033. "'GRN DOC.DATE'.

*  LS_FIELDCAT-SELTEXT_M   = TEXT-033. "'DOC.DATE'.

*  LS_FIELDCAT-SELTEXT_L   = TEXT-033. "'DOC.DATE'.

*  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'BUDAT'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-052. "'GRN POSTING DATE'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-052. "'DOC.DATE'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-052. "'DOC.DATE'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

*  CLEAR LS_FIELDCAT.

*  LS_FIELDCAT-ROW_POS     = '01'.

*  LS_FIELDCAT-COL_POS     = V_CNT.

*  LS_FIELDCAT-FIELDNAME   = 'XBLNR'.

*  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

*  LS_FIELDCAT-DO_SUM      = SPACE.

*  LS_FIELDCAT-OUTPUTLEN   = '13'.

*  LS_FIELDCAT-SELTEXT_S   = TEXT-031. "'GRN CHA. NO.'.

*  LS_FIELDCAT-SELTEXT_M   = TEXT-031. "'GRN CHA. NO.'.

*  LS_FIELDCAT-SELTEXT_L   = TEXT-031. "'GRN CHA. NO.'.

*  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'ERFMG'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '10'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-035. "'QUANTITY'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-035. "'QUANTITY'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-035. "'QUANTITY'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'ERFME'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '06'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-036. "'UNIT OF MEASUREMENT'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-036. "'UNIT OF MEASUREMENT'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-036. "'UNIT OF MEASUREMENT'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-ROW_POS     = '01'.

  LS_FIELDCAT-COL_POS     = V_CNT.

  LS_FIELDCAT-FIELDNAME   = 'WERKS'.

  LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

  LS_FIELDCAT-DO_SUM      = SPACE.

  LS_FIELDCAT-OUTPUTLEN   = '06'.

  LS_FIELDCAT-SELTEXT_S   = TEXT-037. "'PLANT'.

  LS_FIELDCAT-SELTEXT_M   = TEXT-037. "'PLANT'.

  LS_FIELDCAT-SELTEXT_L   = TEXT-037. "'PLANT'.

  APPEND LS_FIELDCAT TO P_FIELDCAT.

  IF P_RADIO5 NE 'X'.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'MATNR'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '13'.

    LS_FIELDCAT-SELTEXT_S   = TEXT-038. "'MAT. NUMBER'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-038. "'MAT. NUMBER'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-038. "'MAT. NUMBER'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

    CLEAR LS_FIELDCAT.

    LS_FIELDCAT-ROW_POS     = '01'.

    LS_FIELDCAT-COL_POS     = V_CNT.

    LS_FIELDCAT-FIELDNAME   = 'MAKTX'.

    LS_FIELDCAT-TABNAME     = 'IT_FINAL'.

    LS_FIELDCAT-DO_SUM      = SPACE.

    LS_FIELDCAT-OUTPUTLEN   = '35 '.

    LS_FIELDCAT-SELTEXT_S   = TEXT-039. "'MATERIAL DESC.'.

    LS_FIELDCAT-SELTEXT_M   = TEXT-039. "'MATERIAL DESC.'.

    LS_FIELDCAT-SELTEXT_L   = TEXT-039. "'MATERIAL DESC.'.

    APPEND LS_FIELDCAT TO P_FIELDCAT.

  ENDIF.

  GS_SORT-FIELDNAME = 'BELNR'.

  GS_SORT-SPOS      = 1.

  GS_SORT-UP        = 'X'.

  GS_SORT-SUBTOT    = 'X'.

  APPEND GS_SORT TO GT_SORT.

ENDFORM.                    " PASS_FIELD_NAME

*&---------------------------------------------------------------------*

*&      Form  EVENTTAB_BUILD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_GT_EVENT[]  text

*----------------------------------------------------------------------*

FORM EVENTTAB_BUILD  USING    P_GT_EVENTS TYPE SLIS_T_EVENT .

  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

    EXPORTING

      I_LIST_TYPE = 0

    IMPORTING

      ET_EVENTS   = P_GT_EVENTS[].

  READ TABLE P_GT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

  INTO LS_EVENT.

  IF SY-SUBRC = 0.

    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.

    APPEND LS_EVENT TO P_GT_EVENTS.

  ENDIF.

ENDFORM.                    " EVENTTAB_BUILD

*&---------------------------------------------------------------------*

*&      Form  COMMENT_BUILD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_GT_LIST_TOP_OF_PAGE[]  text

*----------------------------------------------------------------------*

FORM COMMENT_BUILD  USING    P_GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER .

  CLEAR LS_LINE.

  LS_LINE-TYP = 'H'.

  LS_LINE-INFO = TEXT-003.

  APPEND  LS_LINE TO P_GT_LIST_TOP_OF_PAGE.

  CLEAR : L_INFO, LS_LINE.

  CONCATENATE L_DATE  'to' L_DATE1

  INTO L_INFO SEPARATED BY SPACE.

  CLEAR LS_LINE.

  LS_LINE-TYP  = 'H'.

  LS_LINE-INFO = L_INFO.

  APPEND LS_LINE TO P_GT_LIST_TOP_OF_PAGE.

  CLEAR : L_INFO, LS_LINE.

  CONCATENATE TEXT-040 V_CURRENT_DATE

  INTO L_INFO SEPARATED BY SPACE.

  CLEAR LS_LINE.

  LS_LINE-TYP  = 'A'.

  LS_LINE-INFO = L_INFO.

  APPEND LS_LINE TO P_GT_LIST_TOP_OF_PAGE.

  CLEAR : L_INFO, LS_LINE.

ENDFORM.                    " COMMENT_BUILD

*&---------------------------------------------------------------------*

*&      Form  PASS_DATA_LIST_OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM PASS_DATA_LIST_OUTPUT .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      I_CALLBACK_PROGRAM = V_REPID

      IS_LAYOUT          = V_LAYOUT

      IT_FIELDCAT        = FIELDCAT

      I_SAVE             = 'A'

      IT_EVENTS          = GT_EVENT

      IT_SORT            = GT_SORT

    TABLES

      T_OUTTAB           = IT_FINAL

    EXCEPTIONS

      PROGRAM_ERROR      = 1

      OTHERS             = 2.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  LEAVE LIST-PROCESSING.

ENDFORM.                    " PASS_DATA_LIST_OUTPUT

*&---------------------------------------------------------------------*

*&      Form  TOP_OF_PAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM TOP_OF_PAGE .

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM.                    " TOP_OF_PAGE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_RSEG

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_RSEG .

  SELECT    RBKP~BELNR

            RBKP~GJAHR

            RBKP~BLDAT

            RBKP~BUDAT

            RBKP~STBLG

             FROM RBKP INTO TABLE IT_RBKP

                        WHERE BUDAT IN S_BUDAT.

  IF SY-SUBRC = '0'.

    SORT IT_RBKP  BY BELNR.

  ELSE.

    LEAVE LIST-PROCESSING.

  ENDIF.

  SORT IT_RBKP  BY BELNR.

  IF S_WERKS  IS INITIAL.

    SELECT   RSEG~BELNR

             RSEG~GJAHR

             RSEG~BUZEI

             RSEG~EBELN

             RSEG~EBELP

             RSEG~MATNR

             RSEG~LFBNR

             RSEG~BUKRS

             RSEG~WRBTR

             RSEG~MENGE

             RSEG~LFPOS

             RSEG~MWSKZ

             EKKO~AEDAT

             J_1IMOVEND~J_1ICSTNO                                                 " ADDED THIS FOR TEST

             FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN LEFT OUTER JOIN J_1IMOVEND

              ON EKKO~LIFNR = J_1IMOVEND~LIFNR

             INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR.

SELECT EKKO~EBELN EKKO~KNUMV RSEG~BUZEI

     FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN

     INTO CORRESPONDING FIELDS OF TABLE IT_SEG

           FOR ALL ENTRIES IN IT_RSEG

        WHERE EKKO~EBELN = IT_RSEG-EBELN.

      SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG2

  FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL = 'JIPC'.

  SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG3

     FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL ='BASB'.

  ELSE.

    SELECT  RSEG~BELNR

            RSEG~GJAHR

            RSEG~BUZEI

            RSEG~EBELN

            RSEG~EBELP

            RSEG~MATNR

            RSEG~LFBNR

            RSEG~BUKRS

            RSEG~WERKS

            RSEG~WRBTR

            RSEG~LFPOS

            RSEG~LIFNR

            RSEG~MWSKZ                " ADDED THIS FOR TEST

            RSEG~MATNR

            EKKO~AEDAT

            J_1IMOVEND~J_1ICSTNO                                                 " ADDED THIS FOR TEST

             FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN LEFT OUTER JOIN J_1IMOVEND

              ON EKKO~LIFNR = J_1IMOVEND~LIFNR

            INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR

                                         AND WERKS IN S_WERKS.

  SELECT EKKO~EBELN EKKO~KNUMV RSEG~BUZEI

     FROM RSEG INNER JOIN EKKO ON RSEG~EBELN = EKKO~EBELN

     INTO CORRESPONDING FIELDS OF TABLE IT_SEG

           FOR ALL ENTRIES IN IT_RSEG

        WHERE EKKO~EBELN = IT_RSEG-EBELN.

      SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG2

  FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL = 'JIPC'.

  SELECT

         KWERT

     FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG3

     FOR ALL ENTRIES IN IT_SEG

           WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL ='BASB'.

  ENDIF.

  DELETE IT_RSEG WHERE MATNR IS INITIAL.

  SORT IT_RSEG BY BELNR.

  SORT IT_RBKP BY BELNR.

  LOOP AT IT_RSEG INTO WA_RSEG.

    WA_FINAL-J_1ICSTNO = WA_RSEG-J_1ICSTNO.

    IF WA_FINAL-J_1ICSTNO IS NOT INITIAL.

    WA_FINAL-ZREG = 'Y'.

    ELSE.

      WA_FINAL-ZREG = 'N'.

      ENDIF.

    WA_FINAL-KNUMV  = WA_RSEG-KNUMV.

    WA_FINAL-AEDAT  = WA_RSEG-AEDAT.

    WA_FINAL-BUZEI  = WA_RSEG-BUZEI.

    WA_FINAL-BELNR  = WA_RSEG-BELNR.

    WA_FINAL-GJAHR  = WA_RSEG-GJAHR.

    WA_FINAL-WRBTR  = WA_RSEG-WRBTR.

    WA_FINAL-EBELN  = WA_RSEG-EBELN.

    WA_FINAL-EBELP  = WA_RSEG-EBELP.

    WA_FINAL-MATNR  = WA_RSEG-MATNR.

    WA_FINAL-LFBNR  = WA_RSEG-LFBNR.

    WA_FINAL-MWSKZ  = WA_RSEG-MWSKZ.  " ADDED THIS FOR TEST

    APPEND WA_FINAL TO IT_FINAL.

  ENDLOOP.

LOOP AT IIT_SEG2 INTO WA_IIT_SEG2.

    WA_FINAL-KWERT =  WA_IIT_SEG2-KWERT1.

    WA_FINAL-KWERT_BASIC = WA_IIT_SEG3-KWERT.

     APPEND WA_FINAL TO IT_FINAL.

ENDLOOP.

  DELETE IT_FINAL WHERE MATNR IS INITIAL.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_RBKP.

    READ TABLE IT_RBKP INTO WA_RBKP WITH KEY  BELNR = WA_FINAL-BELNR

                                              GJAHR = WA_FINAL-GJAHR

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

*      WA_FINAL-BLDAT1 = WA_RBKP-BLDAT.

      WA_FINAL-STBLG  = WA_RBKP-STBLG.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING STBLG.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_RSEG

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MSEG

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MSEG .

  SELECT

           MBLNR         "Number of Material Document

           MJAHR

           ZEILE

           BWART

           MATNR

           WERKS

           LIFNR

           DMBTR

           ERFMG

           ERFME

           EBELN

           EBELP

           LFBNR

           GSBER

           LFPOS

           BUKRS

           FROM MSEG INTO TABLE IT_MSEG

           FOR ALL ENTRIES IN IT_RSEG

           WHERE MBLNR = IT_RSEG-LFBNR

           AND   MATNR = IT_RSEG-MATNR

           AND   MENGE = IT_RSEG-MENGE

           AND   BWART IN  ('101','102','105','122').

  DELETE IT_MSEG WHERE MATNR IS INITIAL.

  IT_MSEG1[] = IT_MSEG[].

  DELETE IT_MSEG1 WHERE BWART = '101'.

  DELETE IT_MSEG1 WHERE LFBNR IS INITIAL.

  DELETE IT_MSEG  WHERE BWART = '102'.

  DELETE IT_MSEG  WHERE BWART = '122'.

  SORT IT_MSEG1  BY LFBNR.

  SORT IT_MSEG   BY MBLNR.

  LOOP AT IT_MSEG INTO WA_MSEG.

    LOOP AT IT_MSEG1 INTO WA_MSEG1.

      IF  WA_MSEG1-LFBNR = WA_MSEG-MBLNR AND

          WA_MSEG1-MATNR = WA_MSEG-MATNR.

        WA_MSEG-TAG1 = 'A'.

        MODIFY IT_MSEG FROM WA_MSEG TRANSPORTING TAG1.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DELETE IT_MSEG WHERE TAG1 = 'A'.

  IF SY-SUBRC = 0.

    DELETE IT_MSEG WHERE BWART IS INITIAL.

    DELETE IT_MSEG WHERE WERKS IS INITIAL.

    SORT IT_MSEG BY MBLNR.

  ENDIF.

  SORT IT_FINAL BY MATNR LFBNR.

  SORT IT_MSEG BY MATNR LFBNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MSEG.

    READ TABLE IT_MSEG INTO WA_MSEG WITH KEY MBLNR = WA_FINAL-LFBNR

                                             MATNR = WA_FINAL-MATNR

                                             EBELN = WA_FINAL-EBELN

                                             EBELP = WA_FINAL-EBELP.

    IF SY-SUBRC = 0.

      WA_FINAL-ZEILE    =  WA_MSEG-ZEILE.

      WA_FINAL-MBLNR    =  WA_MSEG-MBLNR.

      WA_FINAL-MJAHR    =  WA_MSEG-MJAHR.

      WA_FINAL-BWART    =  WA_MSEG-BWART.

      WA_FINAL-WERKS    =  WA_MSEG-WERKS.

      WA_FINAL-LIFNR    =  WA_MSEG-LIFNR.

      WA_FINAL-ERFMG    =  WA_MSEG-ERFMG.

      WA_FINAL-ERFME    =  WA_MSEG-ERFME.

      WA_FINAL-LFBNR    =  WA_MSEG-LFBNR.

      WA_FINAL-GSBER    =  WA_MSEG-GSBER.

      WA_FINAL-LFPOS    =  WA_MSEG-LFPOS.

      WA_FINAL-BUKRS    =  WA_MSEG-BUKRS.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING ZEILE MBLNR MJAHR BWART WERKS LIFNR ERFMG ERFME LFBNR GSBER LFPOS BUKRS.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BWART IS INITIAL.

  DELETE IT_FINAL WHERE LIFNR IS INITIAL.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF  BY MBLNR MJAHR.

ENDFORM.                    " GET_DATA_MSEG

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MKPF

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MKPF .

  SELECT

         MBLNR     "Number of Material Document

         MJAHR     "Material Document Year

         BLDAT     "Document Date in Document

         BUDAT     "POSTING DATE

         XBLNR     "GRN challan no.

         FROM MKPF INTO TABLE IT_MKPF

         FOR ALL ENTRIES IN IT_MSEG

         WHERE MBLNR = IT_MSEG-MBLNR

         AND   MJAHR = IT_MSEG-MJAHR.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF BY MBLNR MJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MKPF.

    READ TABLE IT_MKPF INTO WA_MKPF WITH KEY  MBLNR = WA_FINAL-MBLNR

                                              MJAHR = WA_FINAL-MJAHR

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BUDAT = WA_MKPF-BUDAT.

      WA_FINAL-BLDAT = WA_MKPF-BLDAT.

      WA_FINAL-XBLNR = WA_MKPF-XBLNR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BUDAT BLDAT XBLNR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_MKPF

*&---------------------------------------------------------------------*

*&      Form  FETCH_RAW_MAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_RAW_MAT .

  SELECT EBELN

          EBELP

          MWSKZ

         FROM EKPO INTO CORRESPONDING FIELDS OF

          TABLE IT_EKPO FOR ALL ENTRIES IN IT_MSEG WHERE EBELN = IT_MSEG-EBELN

                                                    AND  EBELP = IT_MSEG-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

************************************** COMMENTED THIS THIS FOR TEST***********************************

*  LOOP AT IT_FINAL INTO WA_FINAL.

*    CLEAR WA_EKPO.

*    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

*                                              EBELP = WA_FINAL-EBELP

*                                                        BINARY SEARCH.

*    IF SY-SUBRC = 0.

*      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

*      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

*    ENDIF.

*    CLEAR WA_FINAL.

*  ENDLOOP.

***************************************************************************************************

****************************************************************************************************

  DELETE IT_FINAL WHERE EBELN IS INITIAL.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A0') OR ( MWSKZ = 'C1' ) OR ( MWSKZ = 'C3' ) OR ( MWSKZ = 'C4' )

   OR ( MWSKZ = 'C5' ) OR ( MWSKZ = 'CA' ) OR ( MWSKZ = 'CB' ) OR ( MWSKZ = 'CC' ) OR ( MWSKZ = 'CD' )

   OR ( MWSKZ = 'CE' ) OR ( MWSKZ = 'CT' ) OR ( MWSKZ = 'L1' ) OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' )

   OR ( MWSKZ = 'L4' ) OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' )

                                                                                  OR ( MWSKZ = 'L9' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A1') OR ( MWSKZ = 'A2' ) OR ( MWSKZ = 'A5' ) OR ( MWSKZ = 'A6' )

       OR ( MWSKZ = 'AA' ) OR ( MWSKZ = 'AB' ) OR ( MWSKZ = 'AE' ) OR ( MWSKZ = 'AF' ) OR ( MWSKZ = 'AM' )

       OR ( MWSKZ = 'AN' ) OR ( MWSKZ = 'B1' ) OR ( MWSKZ = 'B2' ) OR ( MWSKZ = 'B5' ) OR ( MWSKZ = 'B6' )

       OR ( MWSKZ = 'BA' ) OR ( MWSKZ = 'BB' ) OR ( MWSKZ = 'BE' ) OR ( MWSKZ = 'BF' ) OR ( MWSKZ = 'V1' ) OR ( MWSKZ = 'V2' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'S1') OR ( MWSKZ = 'S2' ) OR ( MWSKZ = 'S3' ) OR ( MWSKZ = 'S4' )

    OR ( MWSKZ = 'S5' ) OR ( MWSKZ = 'S6' ) OR ( MWSKZ = 'S7' ) OR ( MWSKZ = 'S8' ) OR ( MWSKZ = 'S9' )

    OR ( MWSKZ = 'SA' ) OR ( MWSKZ = 'SB' ) OR ( MWSKZ = 'SC' ) OR ( MWSKZ = 'SD' ) OR ( MWSKZ = 'SE' )

    OR ( MWSKZ = 'SF' ) OR ( MWSKZ = 'SG' ) OR ( MWSKZ = 'SH' ) OR ( MWSKZ = 'SI' )

    OR ( MWSKZ = 'X0' ) OR ( MWSKZ = 'Z0' ) OR ( MWSKZ = 'Z1' ) .

  DELETE  IT_FINAL WHERE ( MWSKZ = 'L1') OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' ) OR ( MWSKZ = 'L4' )

     OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' ) OR ( MWSKZ = 'L9' )

     OR ( MWSKZ = 'X0' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'X1').

ENDFORM.                    " FETCH_RAW_MAT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BKPF

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BKPF .

  LOOP AT IT_FINAL INTO WA_FINAL.

    CONCATENATE WA_FINAL-BELNR  WA_FINAL-GJAHR INTO  WA_FINAL-AWKEY.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  AWKEY.

  ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BLART

          BLDAT

          BUDAT

          XBLNR

          AWKEY FROM BKPF INTO TABLE IT_BKPF

          FOR ALL ENTRIES IN IT_FINAL

          WHERE AWKEY = IT_FINAL-AWKEY

          AND   BLART IN ('RE','RL')

          AND   BUKRS = '1000'.

  SORT IT_BKPF  BY AWKEY.

  SORT IT_FINAL BY AWKEY.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BKPF.

    READ TABLE IT_BKPF INTO WA_BKPF WITH KEY  AWKEY = WA_FINAL-AWKEY

                                                      BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BELNR1 = WA_BKPF-BELNR.

      WA_FINAL-BLDAT1 = WA_BKPF-BLDAT.

      WA_FINAL-BUDAT1 = WA_BKPF-BUDAT.

      WA_FINAL-XBLNR1 = WA_BKPF-XBLNR.

      WA_FINAL-BLART  = WA_BKPF-BLART.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BELNR1 BLDAT1 BUDAT1 XBLNR1 BLART.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BLART = 'RL'.

  DELETE IT_FINAL WHERE XBLNR1 IS INITIAL.

  DELETE IT_FINAL WHERE LIFNR = 'G034'.

ENDFORM.                    " GET_DATA_BKPF

*&---------------------------------------------------------------------*

*&      Form  FETCH_RAW_MAT_CST

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_RAW_MAT_CST .

  SELECT EBELN

             EBELP

             MWSKZ FROM EKPO INTO CORRESPONDING FIELDS OF

             TABLE IT_EKPO FOR ALL ENTRIES IN IT_FINAL WHERE EBELN = IT_FINAL-EBELN

                                                        AND  EBELP = IT_FINAL-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKPO.

    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A3') OR ( MWSKZ = 'A4' ) OR ( MWSKZ = 'A7' ) OR ( MWSKZ = 'A8' )

     OR ( MWSKZ = 'AC' ) OR ( MWSKZ = 'AD' ) OR ( MWSKZ = 'AG' ) OR ( MWSKZ = 'AH' ) OR ( MWSKZ = 'AI' )

     OR ( MWSKZ = 'AJ' ) OR ( MWSKZ = 'AK' ) OR ( MWSKZ = 'AL' ) OR ( MWSKZ = 'B3' ) OR ( MWSKZ = 'B4' )

     OR ( MWSKZ = 'B7' ) OR ( MWSKZ = 'B8' ) OR ( MWSKZ = 'BC' ) OR ( MWSKZ = 'BD' ) OR ( MWSKZ = 'BG' ) OR ( MWSKZ = 'BH' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A1') OR ( MWSKZ = 'A2' ) OR ( MWSKZ = 'A5' ) OR ( MWSKZ = 'A6' )

     OR ( MWSKZ = 'AA' ) OR ( MWSKZ = 'AB' ) OR ( MWSKZ = 'AE' ) OR ( MWSKZ = 'AF' ) OR ( MWSKZ = 'AM' )

     OR ( MWSKZ = 'AN' ) OR ( MWSKZ = 'B1' ) OR ( MWSKZ = 'B2' ) OR ( MWSKZ = 'B5' ) OR ( MWSKZ = 'B6' )

     OR ( MWSKZ = 'BA' ) OR ( MWSKZ = 'BB' ) OR ( MWSKZ = 'BE' ) OR ( MWSKZ = 'BF' ) .

  DELETE  IT_FINAL WHERE ( MWSKZ = 'S1') OR ( MWSKZ = 'S2' ) OR ( MWSKZ = 'S3' ) OR ( MWSKZ = 'S4' )

       OR ( MWSKZ = 'S5' ) OR ( MWSKZ = 'S6' ) OR ( MWSKZ = 'S7' ) OR ( MWSKZ = 'S8' ) OR ( MWSKZ = 'S9' )

       OR ( MWSKZ = 'SA' ) OR ( MWSKZ = 'SB' ) OR ( MWSKZ = 'SC' ) OR ( MWSKZ = 'SD' ) OR ( MWSKZ = 'SE' )

       OR ( MWSKZ = 'SF' ) OR ( MWSKZ = 'SG' ) OR ( MWSKZ = 'SH' ) OR ( MWSKZ = 'SI' )

       OR ( MWSKZ = 'X0' ) OR ( MWSKZ = 'Z0' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'L1') OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' ) OR ( MWSKZ = 'L4' )

     OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' ) OR ( MWSKZ = 'L9' )

     OR ( MWSKZ = 'X0' ) OR ( MWSKZ = 'Z1' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'X1').

ENDFORM.                    " FETCH_RAW_MAT_CST

*&---------------------------------------------------------------------*

*&      Form  GUI_STATUS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GUI_STATUS .

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

    EXPORTING

      PERCENTAGE = 50

      TEXT       = TEXT-004. "Extracting Data...

ENDFORM.                    " GUI_STATUS

*&---------------------------------------------------------------------*

*&      Form  FETCH_NONTAX

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_NONTAX .

  SELECT EBELN

             EBELP

             MWSKZ FROM EKPO INTO CORRESPONDING FIELDS OF

             TABLE IT_EKPO FOR ALL ENTRIES IN IT_FINAL WHERE EBELN = IT_FINAL-EBELN

                                                        AND  EBELP = IT_FINAL-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKPO.

    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A3') OR ( MWSKZ = 'A4' ) OR ( MWSKZ = 'A7' ) OR ( MWSKZ = 'A8' )

     OR ( MWSKZ = 'AC' ) OR ( MWSKZ = 'AD' ) OR ( MWSKZ = 'AG' ) OR ( MWSKZ = 'AH' ) OR ( MWSKZ = 'AI' )

     OR ( MWSKZ = 'AJ' ) OR ( MWSKZ = 'AK' ) OR ( MWSKZ = 'AL' ) OR ( MWSKZ = 'B3' ) OR ( MWSKZ = 'B4' )

     OR ( MWSKZ = 'B7' ) OR ( MWSKZ = 'B8' ) OR ( MWSKZ = 'BC' ) OR ( MWSKZ = 'BD' ) OR ( MWSKZ = 'BG' ) OR ( MWSKZ = 'BH' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A1') OR ( MWSKZ = 'A2' ) OR ( MWSKZ = 'A5' ) OR ( MWSKZ = 'A6' )

     OR ( MWSKZ = 'AA' ) OR ( MWSKZ = 'AB' ) OR ( MWSKZ = 'AE' ) OR ( MWSKZ = 'AF' ) OR ( MWSKZ = 'AM' )

     OR ( MWSKZ = 'AN' ) OR ( MWSKZ = 'B1' ) OR ( MWSKZ = 'B2' ) OR ( MWSKZ = 'B5' ) OR ( MWSKZ = 'B6' )

     OR ( MWSKZ = 'BA' ) OR ( MWSKZ = 'BB' ) OR ( MWSKZ = 'BE' ) OR ( MWSKZ = 'BF' ) .

  DELETE  IT_FINAL WHERE ( MWSKZ = 'C1' ) OR ( MWSKZ = 'C3' ) OR ( MWSKZ = 'C4' )

     OR ( MWSKZ = 'C5' ) OR ( MWSKZ = 'CA' ) OR ( MWSKZ = 'CB' ) OR ( MWSKZ = 'CC' ) OR ( MWSKZ = 'CD' )

     OR ( MWSKZ = 'CE' ) OR ( MWSKZ = 'CT' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'S1') OR ( MWSKZ = 'S2' ) OR ( MWSKZ = 'S3' ) OR ( MWSKZ = 'S4' )

       OR ( MWSKZ = 'S5' ) OR ( MWSKZ = 'S6' ) OR ( MWSKZ = 'S7' ) OR ( MWSKZ = 'S8' ) OR ( MWSKZ = 'S9' )

       OR ( MWSKZ = 'SA' ) OR ( MWSKZ = 'SB' ) OR ( MWSKZ = 'SC' ) OR ( MWSKZ = 'SD' ) OR ( MWSKZ = 'SE' )

       OR ( MWSKZ = 'SF' ) OR ( MWSKZ = 'SG' ) OR ( MWSKZ = 'SH' ) OR ( MWSKZ = 'SI' ) OR ( MWSKZ = 'X1' ).

ENDFORM.                    " FETCH_NONTAX

*&---------------------------------------------------------------------*

*&      Form  FETCH_CAP_VAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_CAP_VAT .

  SELECT EBELN

           EBELP

           MWSKZ FROM EKPO INTO CORRESPONDING FIELDS OF

           TABLE IT_EKPO FOR ALL ENTRIES IN IT_FINAL WHERE EBELN = IT_FINAL-EBELN

                                                      AND  EBELP = IT_FINAL-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKPO.

    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE EBELN IS INITIAL.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A0') OR ( MWSKZ = 'C1' ) OR ( MWSKZ = 'C3' ) OR ( MWSKZ = 'C4' )

   OR ( MWSKZ = 'C5' ) OR ( MWSKZ = 'CA' ) OR ( MWSKZ = 'CB' ) OR ( MWSKZ = 'CC' ) OR ( MWSKZ = 'CD' )

   OR ( MWSKZ = 'CE' ) OR ( MWSKZ = 'CT' ) OR ( MWSKZ = 'L1' ) OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' )

   OR ( MWSKZ = 'L4' ) OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' )

                                                                                  OR ( MWSKZ = 'L9' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'S1') OR ( MWSKZ = 'S2' ) OR ( MWSKZ = 'S3' ) OR ( MWSKZ = 'S4' )

    OR ( MWSKZ = 'S5' ) OR ( MWSKZ = 'S6' ) OR ( MWSKZ = 'S7' ) OR ( MWSKZ = 'S8' ) OR ( MWSKZ = 'S9' )

    OR ( MWSKZ = 'SA' ) OR ( MWSKZ = 'SB' ) OR ( MWSKZ = 'SC' ) OR ( MWSKZ = 'SD' ) OR ( MWSKZ = 'SE' )

    OR ( MWSKZ = 'SF' ) OR ( MWSKZ = 'SG' ) OR ( MWSKZ = 'SH' ) OR ( MWSKZ = 'SI' )

    OR ( MWSKZ = 'X0' ) ."OR ( MWSKZ = 'Z0' ) .

  DELETE  IT_FINAL WHERE ( MWSKZ = 'L1') OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' ) OR ( MWSKZ = 'L4' )

     OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' ) OR ( MWSKZ = 'L9' )

     OR ( MWSKZ = 'X0' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A3') OR ( MWSKZ = 'A4' ) OR ( MWSKZ = 'A7' ) OR ( MWSKZ = 'A8' )

      OR ( MWSKZ = 'AC' ) OR ( MWSKZ = 'AD' ) OR ( MWSKZ = 'AG' ) OR ( MWSKZ = 'AH' ) OR ( MWSKZ = 'AI' )

      OR ( MWSKZ = 'AJ' ) OR ( MWSKZ = 'AK' ) OR ( MWSKZ = 'AL' ) OR ( MWSKZ = 'B7' ) OR ( MWSKZ = 'B8' )

      OR ( MWSKZ = 'BC' ) OR ( MWSKZ = 'BD' ) OR ( MWSKZ = 'BG' ) OR ( MWSKZ = 'BH' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'X1')." OR ( MWSKZ = 'Z1' ). ***************************************

ENDFORM.                    " FETCH_CAP_VAT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSET_CGVAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSET_CGVAT .

  SORT IT_FINAL BY BELNR1.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSET.

    SELECT BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSET

               WHERE BELNR = WA_FINAL-BELNR1

               AND   GJAHR   = WA_FINAL-GJAHR

               AND BUKRS = '1000'

               AND   KSCHL IN ('JMOQ','JMOP','JMIP','JMIQ','JEC1','JEC2','JSEI','JSEP',

               'JVRD','JVRN','JIPL','JIPS','JIPC','JVCN','JVCD','JVCS')

               AND   TXGRP   = WA_FINAL-TXGRP.

    DELETE IT_BSET WHERE HWSTE IS INITIAL.

*    IF SY-SUBRC = 0.

    PERFORM GET_ED.

    PERFORM GET_ECESS.

    PERFORM GET_SCESS.

*    PERFORM GET_VAT_CST_CGCAP.

    PERFORM GET_OTHCHARGE_CGCAP.

*    ENDIF.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING

    W_ED W_ECESS W_SCESS W_VATCST W_OTHCHA .

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSET_CGVAT

*&---------------------------------------------------------------------*

*&      Form  GET_OTHCHARGE_CGCAP

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_OTHCHARGE_CGCAP .

ENDFORM.                    " GET_OTHCHARGE_CGCAP

*&---------------------------------------------------------------------*

*&      Form  GET_VAT_CST_CGCAP

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_VAT_CST_CGCAP .

  LOOP AT IT_BSET INTO WA_BSET.

    IF WA_BSET-KSCHL = 'JVRD' OR

       WA_BSET-KSCHL = 'JVRN' OR

       WA_BSET-KSCHL = 'JIPL' OR

       WA_BSET-KSCHL = 'JIPS' OR

       WA_BSET-KSCHL = 'JVCD' OR

       WA_BSET-KSCHL = 'JVCN' OR

       WA_BSET-KSCHL = 'JVCS' OR

       WA_BSET-KSCHL = 'JIPC'.

      IF SY-SUBRC = 0.

        WA_FINAL-W_VATCST = WA_FINAL-W_VATCST + WA_BSET-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_VAT_CST_CGCAP

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSET_SER

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSET_SER .

  SORT IT_FINAL BY BELNR1.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSET1.

    SELECT BUKRS

           BELNR

           GJAHR

           BUZEI

           TXGRP

           HWBAS

           HWSTE

           KTOSL

           KSCHL

           KBETR FROM BSET INTO TABLE IT_BSET1

           WHERE BELNR = WA_FINAL-BELNR1

           AND GJAHR   = WA_FINAL-GJAHR

           AND BUKRS = '1000'

           AND   KSCHL IN ('JSER','JSVD','JEC3','JEC4','JEC5','JEC6','JVCN','JVCD','JVCS')

           AND   TXGRP   = WA_FINAL-TXGRP.

    DELETE IT_BSET1 WHERE HWSTE IS INITIAL.

*    IF SY-SUBRC = 0.

*    PERFORM GET_SER_TAX.

    PERFORM GET_OTHCHARGE1.

*    ENDIF.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_SERTX W_ECESS W_SCESS W_OTHCHA.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSET_SER

*&---------------------------------------------------------------------*

*&      Form  GET_SER_TAX

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_SER_TAX .

  LOOP AT IT_BSET1 INTO WA_BSET1.

    IF WA_BSET1-KSCHL = 'JSER' OR

       WA_BSET1-KSCHL = 'JSVD' .

*      IF SY-SUBRC = 0.

      WA_FINAL-W_SERTX = WA_FINAL-W_SERTX + WA_BSET1-HWSTE.

*      ENDIF.

    ENDIF.

    IF  WA_BSET1-KSCHL = 'JEC3' OR

        WA_BSET1-KSCHL = 'JEC4' .

*      IF SY-SUBRC = 0.

      WA_FINAL-W_ECESS = WA_FINAL-W_ECESS + WA_BSET1-HWSTE.

*      ENDIF.

    ENDIF.

    IF  WA_BSET1-KSCHL = 'JEC5' OR

        WA_BSET1-KSCHL = 'JEC6' .

*      IF SY-SUBRC = 0.

      WA_FINAL-W_SCESS =  WA_FINAL-W_SCESS + WA_BSET1-HWSTE.

*      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_SER_TAX

*&---------------------------------------------------------------------*

*&      Form  GET_OTHCHARGE1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_OTHCHARGE1 .

  LOOP AT IT_BSET1 INTO WA_BSET1.

    IF   WA_BSET1-KSCHL = 'JVCD' OR

         WA_BSET1-KSCHL = 'JVCN' OR

         WA_BSET1-KSCHL = 'JVCS' .

      IF SY-SUBRC = 0.

        WA_FINAL-W_OTHCHA = WA_FINAL-W_OTHCHA + WA_BSET1-HWSTE.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_OTHCHARGE1

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_RSEG_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_RSEG_SERVICE .

  SELECT    BELNR

              GJAHR

              BLDAT

              BUDAT

              STBLG FROM RBKP INTO TABLE IT_RBKP

                          WHERE BUDAT IN S_BUDAT.

  IF SY-SUBRC = '0'.

    SORT IT_RBKP  BY BELNR.

  ELSE.

    LEAVE LIST-PROCESSING.

  ENDIF.

  SORT IT_RBKP  BY BELNR.

  IF S_WERKS  IS INITIAL.

    SELECT  BELNR

            GJAHR

            BUZEI

            EBELN

            EBELP

            MATNR

            LFBNR

            BUKRS

            WRBTR

            LFPOS

            FROM RSEG INTO  CORRESPONDING FIELDS OF TABLE  IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR

                                         AND MATNR = ' '.

  ELSE.

    SELECT  BELNR

            GJAHR

            BUZEI

            EBELN

            EBELP

            MATNR

            LFBNR

            BUKRS

            WERKS

            WRBTR

            LFPOS

            LIFNR

            FROM RSEG INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR

                                         AND WERKS IN S_WERKS

                                         AND MATNR = ' '.

  ENDIF.

  DELETE IT_RSEG WHERE MATNR IS NOT INITIAL.

  SORT IT_RSEG BY BELNR.

  SORT IT_RBKP BY BELNR.

  LOOP AT IT_RSEG INTO WA_RSEG.

    WA_FINAL-BUZEI  = WA_RSEG-BUZEI.

    WA_FINAL-BELNR  = WA_RSEG-BELNR.

    WA_FINAL-GJAHR  = WA_RSEG-GJAHR.

    WA_FINAL-WRBTR  = WA_RSEG-WRBTR.

    WA_FINAL-EBELN  = WA_RSEG-EBELN.

    WA_FINAL-EBELP  = WA_RSEG-EBELP.

    WA_FINAL-MATNR  = WA_RSEG-MATNR.

    WA_FINAL-LFBNR  = WA_RSEG-LFBNR.

    APPEND WA_FINAL TO IT_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE MATNR IS NOT INITIAL.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_RBKP.

    READ TABLE IT_RBKP INTO WA_RBKP WITH KEY  BELNR = WA_FINAL-BELNR

                                              GJAHR = WA_FINAL-GJAHR

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

*      WA_FINAL-BLDAT1 = WA_RBKP-BLDAT.

      WA_FINAL-STBLG  = WA_RBKP-STBLG.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING STBLG.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_RSEG_SERVICE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MSEG_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MSEG_SERVICE .

  SELECT

             MBLNR         "Number of Material Document

             MJAHR

             ZEILE

             BWART

             MATNR

             WERKS

             LIFNR

             DMBTR

             ERFMG

             ERFME

             EBELN

             EBELP

             LFBNR

             GSBER

             LFPOS

             BUKRS

             FROM MSEG INTO TABLE IT_MSEG2

             FOR ALL ENTRIES IN IT_RSEG

             WHERE LFBNR = IT_RSEG-LFBNR

             AND   EBELN = IT_RSEG-EBELN

             AND   BWART IN  ('101','102','105','122').

  DELETE IT_MSEG2 WHERE MATNR IS NOT INITIAL.

  IT_MSEG1[] = IT_MSEG2[].

  DELETE IT_MSEG1 WHERE BWART = '101'.

  DELETE IT_MSEG1 WHERE LFBNR IS INITIAL.

  DELETE IT_MSEG2  WHERE BWART = '102'.

  DELETE IT_MSEG2  WHERE BWART = '122'.

  SORT IT_MSEG1  BY LFBNR.

  SORT IT_MSEG   BY MBLNR.

  LOOP AT IT_MSEG2 INTO WA_MSEG2.

    LOOP AT IT_MSEG1 INTO WA_MSEG1.

      IF  WA_MSEG1-LFBNR = WA_MSEG2-MBLNR AND

          WA_MSEG1-MATNR = WA_MSEG2-MATNR.

        WA_MSEG-TAG1 = 'A'.

        MODIFY IT_MSEG2 FROM WA_MSEG2 TRANSPORTING TAG1.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DELETE IT_MSEG2 WHERE TAG1 = 'A'.

  IF SY-SUBRC = 0.

    DELETE IT_MSEG2 WHERE BWART IS INITIAL.

    DELETE IT_MSEG2 WHERE WERKS IS INITIAL.

    SORT IT_MSEG2 BY MBLNR.

  ENDIF.

  SORT IT_FINAL BY MATNR LFBNR.

  SORT IT_MSEG2 BY MATNR LFBNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MSEG2.

    READ TABLE IT_MSEG2 INTO WA_MSEG2 WITH KEY LFBNR = WA_FINAL-LFBNR

                                               MATNR = WA_FINAL-MATNR.

    IF SY-SUBRC = 0.

      WA_FINAL-ZEILE    =  WA_MSEG2-ZEILE.

      WA_FINAL-MBLNR    =  WA_MSEG2-MBLNR.

      WA_FINAL-MJAHR    =  WA_MSEG2-MJAHR.

      WA_FINAL-BWART    =  WA_MSEG2-BWART.

      WA_FINAL-WERKS    =  WA_MSEG2-WERKS.

      WA_FINAL-LIFNR    =  WA_MSEG2-LIFNR.

*      WA_FINAL-WRBTR1   =  WA_MSEG2-DMBTR.

      WA_FINAL-ERFMG    =  WA_MSEG2-ERFMG.

      WA_FINAL-ERFME    =  WA_MSEG2-ERFME.

      WA_FINAL-LFBNR    =  WA_MSEG2-LFBNR.

      WA_FINAL-GSBER    =  WA_MSEG2-GSBER.

      WA_FINAL-LFPOS    =  WA_MSEG2-LFPOS.

      WA_FINAL-BUKRS    =  WA_MSEG2-BUKRS.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING ZEILE MBLNR MJAHR BWART WERKS LIFNR ERFMG ERFME LFBNR GSBER LFPOS BUKRS.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BWART IS INITIAL.

  DELETE IT_FINAL WHERE LIFNR IS INITIAL.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF  BY MBLNR MJAHR.

ENDFORM.                    " GET_DATA_MSEG_SERVICE

*&---------------------------------------------------------------------*

*&      Form  FETCH_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_SERVICE .

  SELECT EBELN

           EBELP

           MWSKZ FROM EKPO INTO CORRESPONDING FIELDS OF

           TABLE IT_EKPO FOR ALL ENTRIES IN IT_FINAL WHERE EBELN = IT_FINAL-EBELN

                                                      AND  EBELP = IT_FINAL-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKPO.

    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE EBELN IS INITIAL.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A0') OR ( MWSKZ = 'C1' ) OR ( MWSKZ = 'C3' ) OR ( MWSKZ = 'C4' )

   OR ( MWSKZ = 'C5' ) OR ( MWSKZ = 'CA' ) OR ( MWSKZ = 'CB' ) OR ( MWSKZ = 'CC' ) OR ( MWSKZ = 'CD' )

   OR ( MWSKZ = 'CE' ) OR ( MWSKZ = 'CT' ) OR ( MWSKZ = 'L1' ) OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' )

   OR ( MWSKZ = 'L4' ) OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' )

                                                               OR ( MWSKZ = 'L9' ) OR ( MWSKZ = 'X0' ).

  DELETE  IT_FINAL WHERE ( MWSKZ = 'AK') OR ( MWSKZ = 'AI' ) OR ( MWSKZ = 'AG' )  OR ( MWSKZ = 'AL' ) OR

                        ( MWSKZ = 'AE') OR ( MWSKZ = 'AH' ) OR ( MWSKZ = 'AN' )  ."OR ( MWSKZ = 'Z0') OR ( MWSKZ = 'Z1' ).****

ENDFORM.                    " FETCH_SERVICE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MSEG_IMPORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MSEG_IMPORT .

  IF S_WERKS  IS INITIAL.

    SELECT   MBLNR         "Number of Material Document

             MJAHR

             ZEILE

             BWART

             MATNR

             WERKS

             LIFNR

             DMBTR

             ERFMG

             ERFME

             EBELN

             EBELP

             LFBNR

             GSBER

             LFPOS

             BUKRS

             FROM MSEG INTO TABLE IT_MSEG

             FOR ALL ENTRIES IN IT_FINAL

            WHERE   MATNR = IT_FINAL-MATNR

              AND   EBELN = IT_FINAL-EBELN

              AND   EBELP = IT_FINAL-EBELP

              AND   BUKRS = '1000'

              AND   BWART IN  ('101','102','105','122')

              AND   LIFNR IN S_LIFNR.

  ELSE.

    SELECT   MBLNR         "Number of Material Document

             MJAHR

             ZEILE

             BWART

             MATNR

             WERKS

             LIFNR

             DMBTR

             ERFMG

             ERFME

             EBELN

             EBELP

             LFBNR

             GSBER

             LFPOS

             BUKRS

             FROM MSEG INTO TABLE IT_MSEG

             FOR ALL ENTRIES IN IT_FINAL

              WHERE MATNR = IT_FINAL-MATNR

              AND   EBELN = IT_FINAL-EBELN

              AND   EBELP = IT_FINAL-EBELP

              AND   BUKRS = '1000'

              AND   BWART IN  ('101','102','105','122')

              AND LIFNR IN S_LIFNR

              AND WERKS IN S_WERKS.

  ENDIF.

  DELETE IT_MSEG WHERE MATNR IS INITIAL.

  IT_MSEG1[] = IT_MSEG[].

  DELETE IT_MSEG1 WHERE BWART = '101'.

  DELETE IT_MSEG1 WHERE LFBNR IS INITIAL.

  DELETE IT_MSEG  WHERE BWART = '102'.

  DELETE IT_MSEG  WHERE BWART = '122'.

  SORT IT_MSEG1  BY LFBNR.

  SORT IT_MSEG   BY MBLNR.

  LOOP AT IT_MSEG INTO WA_MSEG.

    LOOP AT IT_MSEG1 INTO WA_MSEG1.

      IF  WA_MSEG1-LFBNR = WA_MSEG-MBLNR AND

          WA_MSEG1-MATNR = WA_MSEG-MATNR.

        WA_MSEG-TAG1 = 'A'.

        MODIFY IT_MSEG FROM WA_MSEG TRANSPORTING TAG1.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DELETE IT_MSEG WHERE TAG1 = 'A'.

  IF SY-SUBRC = 0.

    DELETE IT_MSEG WHERE BWART IS INITIAL.

    DELETE IT_MSEG WHERE WERKS IS INITIAL.

    SORT IT_MSEG BY MBLNR.

  ENDIF.

  SORT IT_FINAL BY EBELN EBELP MATNR.

  SORT IT_MSEG BY EBELN EBELP MATNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MSEG.

    READ TABLE IT_MSEG INTO WA_MSEG WITH KEY EBELN = WA_FINAL-EBELN

                                             EBELP = WA_FINAL-EBELP

                                             MATNR = WA_FINAL-MATNR.

    IF SY-SUBRC = 0.

      WA_FINAL-ZEILE    =  WA_MSEG-ZEILE.

      WA_FINAL-MBLNR    =  WA_MSEG-MBLNR.

      WA_FINAL-MJAHR    =  WA_MSEG-MJAHR.

      WA_FINAL-BWART    =  WA_MSEG-BWART.

      WA_FINAL-WERKS    =  WA_MSEG-WERKS.

      WA_FINAL-LIFNR    =  WA_MSEG-LIFNR.

*      WA_FINAL-WRBTR1   =  WA_MSEG-DMBTR.

      WA_FINAL-ERFMG    =  WA_MSEG-ERFMG.

      WA_FINAL-ERFME    =  WA_MSEG-ERFME.

      WA_FINAL-LFBNR    =  WA_MSEG-LFBNR.

      WA_FINAL-GSBER    =  WA_MSEG-GSBER.

      WA_FINAL-LFPOS    =  WA_MSEG-LFPOS.

      WA_FINAL-BUKRS    =  WA_MSEG-BUKRS.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING ZEILE MBLNR MJAHR BWART WERKS LIFNR ERFMG ERFME LFBNR GSBER LFPOS BUKRS.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_MSEG_IMPORT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_EKBE_IMPORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_EKBE_IMPORT .

  SORT IT_FINAL BY EBELN EBELP MBLNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    IF WA_FINAL-BSART IS NOT INITIAL.

      IF WA_FINAL-BELNR IS INITIAL.

        SELECT  EBELN

                EBELP

                ZEKKN

                VGABE

                GJAHR

                BELNR

                BUZEI

                DMBTR  FROM EKBE INTO TABLE IT_EKBE

                WHERE EBELN = WA_FINAL-EBELN

                AND   EBELP = WA_FINAL-EBELP

                AND   BELNR = WA_FINAL-MBLNR.

*        LOOP AT IT_EKBE INTO WA_EKBE.

*          WA_FINAL-WRBTR  = WA_EKBE-DMBTR.

*          MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR.

*        ENDLOOP.

*        CLEAR WA_FINAL.

      ENDIF.

    ENDIF.

  ENDLOOP.

  DELETE IT_FINAL WHERE BSART IS INITIAL.

  LOOP AT IT_FINAL INTO WA_FINAL.

    WA_FINAL-SUM = ( WA_FINAL-WRBTR1 + WA_FINAL-W_ED + WA_FINAL-W_AED + WA_FINAL-W_ECESS +

                     WA_FINAL-W_SCESS + WA_FINAL-W_SERTX + WA_FINAL-W_VATCST + WA_FINAL-W_OTHCHA +

                     WA_FINAL-DIFF_AMOUNT + WA_FINAL-SDMBTR + wa_final-sertax ).

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SUM.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE MWSKZ = 'X0'.

ENDFORM.                    " GET_DATA_EKBE_IMPORT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_NETAMOUNT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_NETAMOUNT .

  SELECT    BUKRS

             BELNR

             GJAHR

             BUZEI

             BUZID

             SHKZG

             DMBTR

             WRBTR

             KTOSL

             HKONT FROM BSEG INTO TABLE IT_BSEG1

             FOR ALL ENTRIES IN IT_FINAL

             WHERE BELNR = IT_FINAL-BELNR1

             AND   GJAHR = IT_FINAL-GJAHR

             AND   BSCHL = '31'

             AND   BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG1 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG1.

    READ TABLE IT_BSEG1 INTO WA_BSEG1 WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-WRBTR = WA_BSEG1-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  SORT IT_FINAL BY BELNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR.

      COUNT = '0'.

    ENDON.

    COUNT = COUNT + 1.

    WA_FINAL-BUZEINEW = COUNT.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BUZEINEW.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    IF WA_FINAL-BUZEINEW <> '1'.

      WA_FINAL-WRBTR = 0.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_NETAMOUNT

*&---------------------------------------------------------------------*

*&      Form  FETCH_IMPORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FETCH_IMPORT .

  SELECT EBELN

           EBELP

           MWSKZ FROM EKPO INTO CORRESPONDING FIELDS OF

           TABLE IT_EKPO FOR ALL ENTRIES IN IT_FINAL WHERE EBELN = IT_FINAL-EBELN

                                                      AND  EBELP = IT_FINAL-EBELP.

  SORT IT_EKPO BY EBELN EBELP .

  SORT IT_FINAL BY EBELN EBELP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_EKPO.

    READ TABLE IT_EKPO INTO WA_EKPO WITH KEY  EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-MWSKZ  = WA_EKPO-MWSKZ.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING MWSKZ.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE EBELN IS INITIAL.

  DELETE  IT_FINAL WHERE ( MWSKZ = 'A0') OR ( MWSKZ = 'C1' ) OR ( MWSKZ = 'C3' ) OR ( MWSKZ = 'C4' )

   OR ( MWSKZ = 'C5' ) OR ( MWSKZ = 'CA' ) OR ( MWSKZ = 'CB' ) OR ( MWSKZ = 'CC' ) OR ( MWSKZ = 'CD' )

   OR ( MWSKZ = 'CE' ) OR ( MWSKZ = 'CT' ) OR ( MWSKZ = 'L1' ) OR ( MWSKZ = 'L2' ) OR ( MWSKZ = 'L3' )

   OR ( MWSKZ = 'L4' ) OR ( MWSKZ = 'L5' ) OR ( MWSKZ = 'L6' ) OR ( MWSKZ = 'L7' ) OR ( MWSKZ = 'L8' )

                                                                                  OR ( MWSKZ = 'L9' ).

ENDFORM.                    " FETCH_IMPORT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MKPF_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MKPF_SERVICE .

  SELECT

           MBLNR     "Number of Material Document

           MJAHR     "Material Document Year

           BLDAT     "Document Date in Document

           BUDAT     "POSTING DATE

           XBLNR     "GRN challan no.

           FROM MKPF INTO TABLE IT_MKPF

           FOR ALL ENTRIES IN IT_MSEG2

           WHERE MBLNR = IT_MSEG2-MBLNR

           AND   MJAHR = IT_MSEG2-MJAHR.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF BY MBLNR MJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MKPF.

    READ TABLE IT_MKPF INTO WA_MKPF WITH KEY  MBLNR = WA_FINAL-MBLNR

                                              MJAHR = WA_FINAL-MJAHR

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BUDAT = WA_MKPF-BUDAT.

      WA_FINAL-BLDAT = WA_MKPF-BLDAT.

      WA_FINAL-XBLNR = WA_MKPF-XBLNR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BUDAT BLDAT XBLNR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_MKPF_SERVICE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_J_1IMOVEND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_J_1IMOVEND .

  SELECT LIFNR

          J_1IPANNO

          J_1ISERN

          FROM J_1IMOVEND INTO TABLE IT_J_1IMOVEND

          FOR ALL ENTRIES IN IT_FINAL

          WHERE LIFNR = IT_FINAL-LIFNR

          AND   LIFNR IN S_LIFNR.

  SORT IT_J_1IMOVEND  BY LIFNR.

  SORT IT_FINAL       BY LIFNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_J_1IMOVEND.

    READ TABLE IT_J_1IMOVEND INTO WA_J_1IMOVEND WITH KEY LIFNR = WA_FINAL-LIFNR

                                                                 BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-J_1IPANNO = WA_J_1IMOVEND-J_1IPANNO.

      WA_FINAL-J_1ISERN  = WA_J_1IMOVEND-J_1ISERN .

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING J_1IPANNO J_1ISERN .

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_J_1IMOVEND

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_RSEG_IMPORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_RSEG_IMPORT .

  SELECT    BELNR

             GJAHR

             BLDAT

             BUDAT

             STBLG FROM RBKP INTO TABLE IT_RBKP

                         WHERE BUDAT IN S_BUDAT.

  IF SY-SUBRC = '0'.

    SORT IT_RBKP  BY BELNR.

  ELSE.

    LEAVE LIST-PROCESSING.

  ENDIF.

  SORT IT_RBKP  BY BELNR.

  IF S_WERKS  IS INITIAL.

    SELECT  BELNR

            GJAHR

            BUZEI

            EBELN

            EBELP

            MATNR

            LFBNR

            BUKRS

            WRBTR

            LFPOS

            FROM RSEG INTO  CORRESPONDING FIELDS OF TABLE  IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR.

  ELSE.

    SELECT  BELNR

            GJAHR

            BUZEI

            EBELN

            EBELP

            MATNR

            LFBNR

            BUKRS

            WERKS

            WRBTR

            LFPOS

            LIFNR

            FROM RSEG INTO CORRESPONDING FIELDS OF TABLE IT_RSEG

            FOR ALL ENTRIES IN IT_RBKP WHERE BELNR = IT_RBKP-BELNR

                                         AND GJAHR = IT_RBKP-GJAHR

                                         AND WERKS IN S_WERKS.

  ENDIF.

  DELETE IT_RSEG WHERE MATNR IS INITIAL.

  SORT IT_RSEG BY BELNR.

  SORT IT_RBKP BY BELNR.

  LOOP AT IT_RSEG INTO WA_RSEG.

    WA_FINAL-BUZEI  = WA_RSEG-BUZEI.

    WA_FINAL-BELNR  = WA_RSEG-BELNR.

    WA_FINAL-GJAHR  = WA_RSEG-GJAHR.

    WA_FINAL-WRBTR  = WA_RSEG-WRBTR.

    WA_FINAL-EBELN  = WA_RSEG-EBELN.

    WA_FINAL-EBELP  = WA_RSEG-EBELP.

    WA_FINAL-MATNR  = WA_RSEG-MATNR.

    WA_FINAL-LFBNR  = WA_RSEG-LFBNR.

    APPEND WA_FINAL TO IT_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE MATNR IS INITIAL.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_RBKP.

    READ TABLE IT_RBKP INTO WA_RBKP WITH KEY  BELNR = WA_FINAL-BELNR

                                              GJAHR = WA_FINAL-GJAHR

                                                       BINARY SEARCH.

    IF SY-SUBRC = 0.

*      WA_FINAL-BLDAT1 = WA_RBKP-BLDAT.

      WA_FINAL-STBLG  = WA_RBKP-STBLG.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING STBLG.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

ENDFORM.                    " GET_DATA_RSEG_IMPORT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_SERVICE .

  SELECT    BUKRS

            BELNR

            GJAHR

            BUZEI

            BUZID

            SHKZG

            DMBTR

            WRBTR

            KTOSL

            HKONT FROM BSEG INTO TABLE IT_BSEG_SER

            FOR ALL ENTRIES IN IT_FINAL

            WHERE BELNR = IT_FINAL-BELNR1

            AND   GJAHR = IT_FINAL-GJAHR

            AND   KTOSL IN ('ESA','VS8','VSE')

            AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG_SER BY BELNR  GJAHR.

  LOOP AT IT_BSEG_SER INTO WA_BSEG_SER.

    IF WA_BSEG_SER-SHKZG = 'H'.

      WA_BSEG_SER-SERTAX = -1 * WA_BSEG_SER-DMBTR.

    ENDIF.

    MODIFY IT_BSEG_SER FROM WA_BSEG_SER TRANSPORTING SERTAX.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG_SER INTO WA_BSEG_SER WHERE BELNR = WA_FINAL-BELNR1

                                       AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-SERTAX = WA_FINAL-SERTAX + WA_BSEG_SER-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SERTAX.

    ENDON.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_SERVICE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_SER

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_SER .

  SORT IT_FINAL BY BELNR1.

  CLEAR IT_BSEG.

*  LOOP AT IT_FINAL INTO WA_FINAL.

  SELECT

         BUKRS

         BELNR

         GJAHR

         BUZEI

         BUZID

         SHKZG

         DMBTR

         WRBTR

         KTOSL

         HKONT FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

         FOR ALL ENTRIES IN IT_FINAL

         WHERE BELNR = IT_FINAL-BELNR1

         AND   GJAHR = IT_FINAL-GJAHR

*           AND   BUZEI = IT_FINAL-TABIX1

         AND KTOSL  IN ('FR1','FR6','FR7')

         AND BUKRS = '1000'.

*  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE BELNR = WA_FINAL-BELNR1

                                     AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-WRBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

**************************SELECTION FOR G\L ACCOUNT.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT

          MATNR

          EBELP

          EBELN FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'WRX'

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR MATNR EBELN EBELP.

  SORT IT_BSEG BY BELNR  GJAHR MATNR EBELN EBELP.

  LOOP AT IT_BSEG INTO WA_BSEG.

    WA_BSEG-MATNR = WA_BSEG-MATNR+9(9).

    MODIFY IT_BSEG FROM WA_BSEG TRANSPORTING MATNR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      CLEAR WA_BSEG.

*    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

*                                              GJAHR = WA_FINAL-GJAHR

*                                              MATNR = WA_FINAL-MATNR

*                                              EBELN = WA_FINAL-EBELN

*                                              EBELP = WA_FINAL-EBELP

*                                              BINARY SEARCH.

*    IF SY-SUBRC = 0.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE  BELNR = WA_FINAL-BELNR1

                                     AND  GJAHR = WA_FINAL-GJAHR.

*      WA_FINAL-HKONT  = WA_BSEG-HKONT.

        WA_FINAL-WRBTR1 = WA_FINAL-WRBTR1 + WA_BSEG-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR1. " KNUMV KSCHL1 KWERT.

*    ENDIF.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG.

    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

                                        GJAHR = WA_FINAL-GJAHR

                                        MATNR = WA_FINAL-MATNR

                                        EBELN = WA_FINAL-EBELN

                                        EBELP = WA_FINAL-EBELP

                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-HKONT  = WA_BSEG-HKONT.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  HKONT.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG3

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'H'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      CLEAR WA_BSEG3.

      LOOP AT IT_BSEG3 INTO WA_BSEG3 WHERE  BELNR = WA_FINAL-BELNR1

                                       AND  GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-DMBTR  = WA_FINAL-DMBTR + WA_BSEG3-DMBTR .

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DMBTR.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

*******************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG4

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'S'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      CLEAR WA_BSEG4.

      LOOP AT IT_BSEG4 INTO WA_BSEG4 WHERE  BELNR = WA_FINAL-BELNR1

                                       AND  GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-SDMBTR  = WA_FINAL-SDMBTR + WA_BSEG4-DMBTR .

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SDMBTR.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

*  LOOP AT IT_FINAL INTO WA_FINAL.

*    CLEAR WA_BSEG4.

*    READ TABLE IT_BSEG4 INTO WA_BSEG4 WITH KEY  BELNR = WA_FINAL-BELNR1

*                                                GJAHR = WA_FINAL-GJAHR

*                                                BINARY SEARCH.

*    IF SY-SUBRC = 0.

*      WA_FINAL-SDMBTR  = WA_BSEG4-DMBTR.

*      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SDMBTR.

*    ENDIF.

*    CLEAR WA_FINAL.

*  ENDLOOP.

********************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG2

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL IN ('BSX','DIF','PRD','WIT' , 'KDM')

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG2 BY BELNR  GJAHR.

  LOOP AT IT_BSEG2 INTO WA_BSEG2.

    IF WA_BSEG2-SHKZG = 'H'.

      WA_BSEG2-DMBTR = -1 * WA_BSEG2-DMBTR.

    ENDIF.

    MODIFY IT_BSEG2 FROM WA_BSEG2 TRANSPORTING DMBTR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG2 INTO WA_BSEG2 WHERE BELNR = WA_FINAL-BELNR1

                                       AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-DIFF_AMOUNT = WA_FINAL-DIFF_AMOUNT + WA_BSEG2-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DIFF_AMOUNT.

    ENDON.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_SER

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_IMPORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_IMPORT .

  SORT IT_FINAL BY BELNR1.

  CLEAR IT_BSEG.

*  LOOP AT IT_FINAL INTO WA_FINAL.

  SELECT

         BUKRS

         BELNR

         GJAHR

         BUZEI

         BUZID

         SHKZG

         DMBTR

         WRBTR

         KTOSL

         HKONT FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

         FOR ALL ENTRIES IN IT_FINAL

         WHERE BELNR = IT_FINAL-BELNR1

         AND   GJAHR = IT_FINAL-GJAHR

*           AND   BUZEI = IT_FINAL-TABIX1

         AND KTOSL  IN ('FR0','FR1','FR3','FR6','FR7')

         AND BUKRS = '1000'.

*  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE BELNR = WA_FINAL-BELNR1

                                     AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

*  SORT IT_FINAL BY BELNR1.

*  CLEAR IT_BSEG.

*  LOOP AT IT_FINAL INTO WA_FINAL.

*    SELECT

*           BUKRS

*           BELNR

*           GJAHR

*           BUZEI

*           BUZID

*           SHKZG

*           DMBTR

*           WRBTR

*           KTOSL

*           HKONT FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

*           WHERE BELNR = WA_FINAL-BELNR1

*           AND   GJAHR = WA_FINAL-GJAHR

*           AND   BUZEI = WA_FINAL-TABIX1

*           AND KTOSL  IN ('FR1','FR6','FR7')

*           AND BUKRS = '1000'.

*    LOOP AT IT_FINAL INTO WA_FINAL.

*      LOOP AT IT_BSEG INTO WA_BSEG WHERE BELNR = WA_FINAL-BELNR1

*                                     AND GJAHR = WA_FINAL-GJAHR.

*        WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-WRBTR.

*

*      ENDLOOP.

*      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

*    ENDLOOP.

*    IF SY-SUBRC = 0.

*      PERFORM GET_FREIGHT.

*    ENDIF.

*    CLEAR WA_FINAL.

*  ENDLOOP.

*************************************************SELECTION FOR G\L ACCOUNT.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT

          MATNR

          EBELP

          EBELN FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'WRX'

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR MATNR EBELN EBELP.

  SORT IT_BSEG BY BELNR  GJAHR MATNR EBELN EBELP.

  LOOP AT IT_BSEG INTO WA_BSEG.

    WA_BSEG-MATNR = WA_BSEG-MATNR+9(9).

    MODIFY IT_BSEG FROM WA_BSEG TRANSPORTING MATNR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      CLEAR WA_BSEG.

*    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

*                                              GJAHR = WA_FINAL-GJAHR

*                                              MATNR = WA_FINAL-MATNR

*                                              EBELN = WA_FINAL-EBELN

*                                              EBELP = WA_FINAL-EBELP

*                                              BINARY SEARCH.

*    IF SY-SUBRC = 0.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE  BELNR = WA_FINAL-BELNR1

                                     AND  GJAHR = WA_FINAL-GJAHR.

*      WA_FINAL-HKONT  = WA_BSEG-HKONT.

        WA_FINAL-WRBTR1 = WA_FINAL-WRBTR1 + WA_BSEG-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING WRBTR1.

*    ENDIF.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG.

    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

                                              GJAHR = WA_FINAL-GJAHR

*                                        MATNR = WA_FINAL-MATNR

*                                        EBELN = WA_FINAL-EBELN

*                                        EBELP = WA_FINAL-EBELP

                                        BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-HKONT  = WA_BSEG-HKONT.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  HKONT.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG3

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'H'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      CLEAR WA_BSEG3.

      LOOP AT IT_BSEG3 INTO WA_BSEG3 WHERE  BELNR = WA_FINAL-BELNR1

                                       AND  GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-DMBTR  = WA_FINAL-DMBTR + WA_BSEG3-DMBTR .

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DMBTR.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

*******************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG4

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'S'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG3.

    READ TABLE IT_BSEG4 INTO WA_BSEG4 WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-SDMBTR  = WA_BSEG4-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SDMBTR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

********************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG2

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL IN ('BSX','DIF','PRD','WIT' , 'KDM')

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG2 BY BELNR  GJAHR.

  LOOP AT IT_BSEG2 INTO WA_BSEG2.

    IF WA_BSEG2-SHKZG = 'H'.

      WA_BSEG2-DMBTR = -1 * WA_BSEG2-DMBTR.

    ENDIF.

    MODIFY IT_BSEG2 FROM WA_BSEG2 TRANSPORTING DMBTR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG2 INTO WA_BSEG2 WHERE BELNR = WA_FINAL-BELNR1

                                       AND GJAHR = WA_FINAL-GJAHR.

*        WA_FINAL-DIFF_AMOUNT = WA_FINAL-DIFF_AMOUNT + WA_BSEG2-DMBTR.

        WA_FINAL-DIFF_AMOUNT = WA_FINAL-DIFF_AMOUNT + WA_BSEG2-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DIFF_AMOUNT.

    ENDON.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_IMPORT

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_TAXES

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_TAXES .

ENDFORM.                    " GET_DATA_TAXES

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BSEG_CST

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BSEG_CST .

  SORT IT_FINAL BY BELNR1.

  CLEAR IT_BSEG.

*  LOOP AT IT_FINAL INTO WA_FINAL.

  SELECT

         BUKRS

         BELNR

         GJAHR

         BUZEI

         BUZID

         SHKZG

         DMBTR

         WRBTR

         KTOSL

         HKONT FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

         FOR ALL ENTRIES IN IT_FINAL

         WHERE BELNR = IT_FINAL-BELNR1

         AND   GJAHR = IT_FINAL-GJAHR

*           AND   BUZEI = IT_FINAL-TABIX1

         AND KTOSL  IN ('FR0','FR1','FR3','FR6','FR7')

         AND BUKRS = '1000'.

*  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG INTO WA_BSEG WHERE BELNR = WA_FINAL-BELNR1

                                     AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-W_OTHCHA =  WA_FINAL-W_OTHCHA + WA_BSEG-WRBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING W_OTHCHA.

      CLEAR WA_FINAL.

    ENDON.

  ENDLOOP.

*************************************************SELECTION FOR G\L ACCOUNT.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT

          MATNR

          MENGE

          EBELP

          EBELN FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'WRX'

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR MATNR EBELN EBELP ERFMG.

  SORT IT_BSEG BY BELNR  GJAHR MATNR EBELN EBELP MENGE.

  LOOP AT IT_BSEG INTO WA_BSEG.

    WA_BSEG-MATNR = WA_BSEG-MATNR+9(9).

    MODIFY IT_BSEG FROM WA_BSEG TRANSPORTING MATNR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG.

    READ TABLE IT_BSEG INTO WA_BSEG WITH KEY  BELNR = WA_FINAL-BELNR1

                                              GJAHR = WA_FINAL-GJAHR

                                              MATNR = WA_FINAL-MATNR

                                              EBELN = WA_FINAL-EBELN

                                              EBELP = WA_FINAL-EBELP

                                              BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-HKONT  = WA_BSEG-HKONT.

      WA_FINAL-WRBTR1 = WA_BSEG-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  HKONT WRBTR1.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG3

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'H'.

  LOOP AT IT_BSEG3 INTO WA_BSEG3.

    IF WA_BSEG3-SHKZG = 'H'.

      WA_BSEG3-DMBTR = -1 * WA_BSEG3-DMBTR.

    ENDIF.

    MODIFY IT_BSEG3 FROM WA_BSEG3 TRANSPORTING DMBTR.

  ENDLOOP.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG3.

    LOOP AT IT_BSEG3 INTO WA_BSEG3 WHERE  BELNR = WA_FINAL-BELNR1

                                     AND GJAHR = WA_FINAL-GJAHR.

*    READ TABLE IT_BSEG3 INTO WA_BSEG3 WITH KEY  BELNR = WA_FINAL-BELNR1

*                                                GJAHR = WA_FINAL-GJAHR

*                                                BINARY SEARCH.

*    IF SY-SUBRC = 0.

      WA_FINAL-DMBTR  =  WA_FINAL-DMBTR + WA_BSEG3-DMBTR .

    ENDLOOP.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DMBTR.

*    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

*******************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG4

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL = 'KBS'

          AND BUKRS = '1000'

          AND SHKZG = 'S'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG3 BY BELNR  GJAHR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BSEG3.

    READ TABLE IT_BSEG4 INTO WA_BSEG4 WITH KEY  BELNR = WA_FINAL-BELNR1

                                                GJAHR = WA_FINAL-GJAHR

                                                BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-SDMBTR  = WA_BSEG4-DMBTR.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING SDMBTR.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

********************************************

  SELECT  BUKRS

          BELNR

          GJAHR

          BUZEI

          BUZID

          SHKZG

          DMBTR

          WRBTR

          KTOSL

          HKONT FROM BSEG INTO TABLE IT_BSEG2

          FOR ALL ENTRIES IN IT_FINAL

          WHERE BELNR = IT_FINAL-BELNR1

          AND   GJAHR = IT_FINAL-GJAHR

          AND   KTOSL IN ('BSX','DIF','PRD','WIT' , 'KDM')

          AND BUKRS = '1000'.

  SORT IT_FINAL BY BELNR1 GJAHR.

  SORT IT_BSEG2 BY BELNR  GJAHR.

  LOOP AT IT_BSEG2 INTO WA_BSEG2.

    IF WA_BSEG2-SHKZG = 'H'.

      WA_BSEG2-DMBTR = -1 * WA_BSEG2-DMBTR.

    ENDIF.

    MODIFY IT_BSEG2 FROM WA_BSEG2 TRANSPORTING DMBTR.

  ENDLOOP.

  LOOP AT IT_FINAL INTO WA_FINAL.

    ON CHANGE OF WA_FINAL-BELNR1.

      LOOP AT IT_BSEG2 INTO WA_BSEG2 WHERE BELNR = WA_FINAL-BELNR1

                                       AND GJAHR = WA_FINAL-GJAHR.

        WA_FINAL-DIFF_AMOUNT = WA_FINAL-DIFF_AMOUNT + WA_BSEG2-DMBTR.

      ENDLOOP.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING DIFF_AMOUNT.

    ENDON.

  ENDLOOP.

ENDFORM.                    " GET_DATA_BSEG_CST

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_BKPF_SERVICE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_BKPF_SERVICE .

LOOP AT IT_FINAL INTO WA_FINAL.

    CONCATENATE WA_FINAL-BELNR  WA_FINAL-GJAHR INTO  WA_FINAL-AWKEY.

    MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING  AWKEY.

ENDLOOP.

  SELECT  BUKRS

          BELNR

          GJAHR

          BLART

          BLDAT

          BUDAT

          XBLNR

          AWKEY FROM BKPF INTO TABLE IT_BKPF

          FOR ALL ENTRIES IN IT_FINAL

          WHERE AWKEY = IT_FINAL-AWKEY

          AND   BLART IN ('RE','RL')

          AND   BUKRS = '1000'

          AND   XBLNR LIKE 'CC%'.

  SORT IT_BKPF  BY AWKEY.

  SORT IT_FINAL BY AWKEY.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_BKPF.

    READ TABLE IT_BKPF INTO WA_BKPF WITH KEY  AWKEY = WA_FINAL-AWKEY

                                                      BINARY SEARCH.

    IF SY-SUBRC = 0.

      WA_FINAL-BELNR1 = WA_BKPF-BELNR.

      WA_FINAL-BLDAT1 = WA_BKPF-BLDAT.

      WA_FINAL-BUDAT1 = WA_BKPF-BUDAT.

      WA_FINAL-XBLNR1 = WA_BKPF-XBLNR.

      WA_FINAL-BLART  = WA_BKPF-BLART.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING BELNR1 BLDAT1 BUDAT1 XBLNR1 BLART.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BLART = 'RL'.

  DELETE IT_FINAL WHERE XBLNR1 IS INITIAL.

ENDFORM.                    " GET_DATA_BKPF_SERVICE

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MSEG_GANGAA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MSEG_GANGAA .

SELECT

             MBLNR         "Number of Material Document

             MJAHR

             ZEILE

             BWART

             MATNR

             WERKS

             LIFNR

             DMBTR

             ERFMG

             ERFME

             EBELN

             EBELP

             LFBNR

             GSBER

             LFPOS

             BUKRS

             FROM MSEG INTO TABLE IT_MSEG2

             FOR ALL ENTRIES IN IT_RSEG

             WHERE LFBNR = IT_RSEG-LFBNR

             AND   EBELN = IT_RSEG-EBELN

             AND   BWART IN  ('101','102','105','122')

             AND LIFNR = 'G034'.

  DELETE IT_MSEG2 WHERE MATNR IS NOT INITIAL.

  IT_MSEG1[] = IT_MSEG2[].

  DELETE IT_MSEG1 WHERE BWART = '101'.

  DELETE IT_MSEG1 WHERE LFBNR IS INITIAL.

  DELETE IT_MSEG2  WHERE BWART = '102'.

  DELETE IT_MSEG2  WHERE BWART = '122'.

  SORT IT_MSEG1  BY LFBNR.

  SORT IT_MSEG   BY MBLNR.

  LOOP AT IT_MSEG2 INTO WA_MSEG2.

    LOOP AT IT_MSEG1 INTO WA_MSEG1.

      IF  WA_MSEG1-LFBNR = WA_MSEG2-MBLNR AND

          WA_MSEG1-MATNR = WA_MSEG2-MATNR.

        WA_MSEG-TAG1 = 'A'.

        MODIFY IT_MSEG2 FROM WA_MSEG2 TRANSPORTING TAG1.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DELETE IT_MSEG2 WHERE TAG1 = 'A'.

  IF SY-SUBRC = 0.

    DELETE IT_MSEG2 WHERE BWART IS INITIAL.

    DELETE IT_MSEG2 WHERE WERKS IS INITIAL.

    SORT IT_MSEG2 BY MBLNR.

  ENDIF.

  SORT IT_FINAL BY MATNR LFBNR.

  SORT IT_MSEG2 BY MATNR LFBNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MSEG2.

    READ TABLE IT_MSEG2 INTO WA_MSEG2 WITH KEY LFBNR = WA_FINAL-LFBNR

                                               MATNR = WA_FINAL-MATNR.

    IF SY-SUBRC = 0.

      WA_FINAL-ZEILE    =  WA_MSEG2-ZEILE.

      WA_FINAL-MBLNR    =  WA_MSEG2-MBLNR.

      WA_FINAL-MJAHR    =  WA_MSEG2-MJAHR.

      WA_FINAL-BWART    =  WA_MSEG2-BWART.

      WA_FINAL-WERKS    =  WA_MSEG2-WERKS.

      WA_FINAL-LIFNR    =  WA_MSEG2-LIFNR.

*      WA_FINAL-WRBTR1   =  WA_MSEG2-DMBTR.

      WA_FINAL-ERFMG    =  WA_MSEG2-ERFMG.

      WA_FINAL-ERFME    =  WA_MSEG2-ERFME.

      WA_FINAL-LFBNR    =  WA_MSEG2-LFBNR.

      WA_FINAL-GSBER    =  WA_MSEG2-GSBER.

      WA_FINAL-LFPOS    =  WA_MSEG2-LFPOS.

      WA_FINAL-BUKRS    =  WA_MSEG2-BUKRS.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING ZEILE MBLNR MJAHR BWART WERKS LIFNR ERFMG ERFME LFBNR GSBER LFPOS BUKRS.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BWART IS INITIAL.

  DELETE IT_FINAL WHERE LIFNR IS INITIAL.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF  BY MBLNR MJAHR.

ENDFORM.                    " GET_DATA_MSEG_GANGAA

*&---------------------------------------------------------------------*

*&      Form  GET_DATA_MSEG_GANGA_CST

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM GET_DATA_MSEG_GANGA_CST .

SELECT

           MBLNR         "Number of Material Document

           MJAHR

           ZEILE

           BWART

           MATNR

           WERKS

           LIFNR

           DMBTR

           ERFMG

           ERFME

           EBELN

           EBELP

           LFBNR

           GSBER

           LFPOS

           BUKRS

           FROM MSEG INTO TABLE IT_MSEG

           FOR ALL ENTRIES IN IT_RSEG

           WHERE MBLNR = IT_RSEG-LFBNR

           AND   MATNR = IT_RSEG-MATNR

           AND   ERFMG = IT_RSEG-MENGE

           AND   BWART IN  ('101','102','105','122').

  DELETE IT_MSEG WHERE MATNR IS INITIAL.

  IT_MSEG1[] = IT_MSEG[].

  DELETE IT_MSEG1 WHERE BWART = '101'.

  DELETE IT_MSEG1 WHERE LFBNR IS INITIAL.

  DELETE IT_MSEG  WHERE BWART = '102'.

  DELETE IT_MSEG  WHERE BWART = '122'.

  SORT IT_MSEG1  BY LFBNR.

  SORT IT_MSEG   BY MBLNR.

  LOOP AT IT_MSEG INTO WA_MSEG.

    LOOP AT IT_MSEG1 INTO WA_MSEG1.

      IF  WA_MSEG1-LFBNR = WA_MSEG-MBLNR AND

          WA_MSEG1-MATNR = WA_MSEG-MATNR.

        WA_MSEG-TAG1 = 'A'.

        MODIFY IT_MSEG FROM WA_MSEG TRANSPORTING TAG1.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

  DELETE IT_MSEG WHERE TAG1 = 'A'.

  IF SY-SUBRC = 0.

    DELETE IT_MSEG WHERE BWART IS INITIAL.

    DELETE IT_MSEG WHERE WERKS IS INITIAL.

    SORT IT_MSEG BY MBLNR.

  ENDIF.

  SORT IT_FINAL BY MATNR LFBNR.

  SORT IT_MSEG BY MATNR LFBNR.

  LOOP AT IT_FINAL INTO WA_FINAL.

    CLEAR WA_MSEG.

    READ TABLE IT_MSEG INTO WA_MSEG WITH KEY MBLNR = WA_FINAL-LFBNR

                                             MATNR = WA_FINAL-MATNR

                                             EBELN = WA_FINAL-EBELN

                                             EBELP = WA_FINAL-EBELP.

    IF SY-SUBRC = 0.

      WA_FINAL-ZEILE    =  WA_MSEG-ZEILE.

      WA_FINAL-MBLNR    =  WA_MSEG-MBLNR.

      WA_FINAL-MJAHR    =  WA_MSEG-MJAHR.

      WA_FINAL-BWART    =  WA_MSEG-BWART.

      WA_FINAL-WERKS    =  WA_MSEG-WERKS.

      WA_FINAL-LIFNR    =  WA_MSEG-LIFNR.

*      WA_FINAL-WRBTR1   =  WA_MSEG-DMBTR.

      WA_FINAL-ERFMG    =  WA_MSEG-ERFMG.

      WA_FINAL-ERFME    =  WA_MSEG-ERFME.

      WA_FINAL-LFBNR    =  WA_MSEG-LFBNR.

      WA_FINAL-GSBER    =  WA_MSEG-GSBER.

      WA_FINAL-LFPOS    =  WA_MSEG-LFPOS.

      WA_FINAL-BUKRS    =  WA_MSEG-BUKRS.

      MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING ZEILE MBLNR MJAHR BWART WERKS LIFNR ERFMG ERFME LFBNR GSBER LFPOS BUKRS.

    ENDIF.

    CLEAR WA_FINAL.

  ENDLOOP.

  DELETE IT_FINAL WHERE BWART IS INITIAL.

  DELETE IT_FINAL WHERE LIFNR IS INITIAL.

  SORT IT_FINAL BY MBLNR MJAHR.

  SORT IT_MKPF  BY MBLNR MJAHR.

ENDFORM.                    " GET_DATA_MSEG_GANGA_CST

Read only

0 Likes
2,051

This message was moderated.

Read only

0 Likes
2,051

Fields:  'WA_FINAL-KWERT'  and

     'WA_FINAL-KWERT_BASIC' should not be null.. atleast WA_FINAL-KWERT_BASIC

cannot be null.

Read only

0 Likes
2,051

Hi khusboo,

I have seen your code, there is a problem in query ,

     SELECT

        KWERT

    FROM KONV INTO  TABLE IIT_SEG2

FOR ALL ENTRIES IN IT_SEG

          WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL = 'AUDI'.

     SELECT

            KWERT

        FROM KONV INTO  CORRESPONDING FIELDS OF TABLE IIT_SEG3

        FOR ALL ENTRIES IN IT_SEG

              WHERE KNUMV = IT_SEG-KNUMV AND KPOSN = IT_SEG-BUZEI AND KSCHL ='BASB'.

the data element is different of buzei of kposn, try to remove that condition you will get your value......

still you are facing any problem let me know................

--

regards

Jack

Read only

0 Likes
2,051

ok, im gonna try changing the data element as you have said, as soon as i get hang of sytem,.. thankyou for the reply and ill let you how it goes.

Thankyou.

Read only

0 Likes
2,051

sorry ill try changing the field value to

KSCHL = 'AUDI'. (not the data element )

Read only

0 Likes
2,051

i removed '

KPOSN = IT_SEG-BUZEI'

from conditions and its still not working... most likely, im not getting the relations right on how to extract base amount and cst amount of an item from rseg..lets hope ill drill down to the answer and meanwhile thankyou lots for your efforts,

Regards,

Khushboo

Read only

0 Likes
2,051

hi Khushboo,

check that KSCHL Value or just check in the database in knov whether you have any records belongs to that value or not...........i think its not finding the value you have provided..........

--

Regards

Jack

Read only

0 Likes
2,051

ive been going in an adventurous circle here.. apparently, Cond Types 'JISB' (cst amount) and 'basb' (base amount) will not be there in KONV.. now ill have to link BSET and EKKO ( and EKKO is linked with RSEG).. lets see if i cant get those  condition types in BSET.. till then if you find out on how to link them, let me know, or elese once im done ill post here.

Thanks & Regards,

Khushboo