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 checkbox issue

former_member574106
Participant
0 Likes
3,384

Hi Friends,

I am designing two ALV's side by side one for vendor and the other for customer with checkbox using CL_GUI_ALV_GRID. the checkbox are getting clicked in hotspot click event. The logic is that when the user clicks checkbox a popup box appears with yes or No.  If the user wants to enter his own amount he clicks yes. The amount is entered in the column amountselected. If the user clicks no, then the amount is transferred from the column amount to the amountselected. The issue is that i am using the event DATA_CHANGED for both classes. In the first class used for the customer, I have created a METHOD HANDLE_DATA_CHANGED. inside it , i have created a subroutine PERFORM HANDLE_DATA_CHANGED USING ER_DATA_CHANGED . Inside the subroutine , i have written the code to save the amount inside amountselected, when the user enters an amount.. It is working perfectly fine. In the 2nd class used for the vendor, i have created a METHOD HANDLE_DATA_CHANGED_BSIK for the same event DATA_CHANGED importing ER_DATA_CHANGED parameter from CL_GUI_ALV_GRID.Now i have written a subroutine  HANDLE_DATA_CHANGED_BSIK. inside the subroutine, i have written the same logic. But the amount is not getting saved inside the field amountselected.What is the error. Please check the code for complete understanding. Please treat this as very urgent. Points will be rewarded.

Regards,

Saurav Lahiry

1 ACCEPTED SOLUTION
Read only

jdloranger
Participant
0 Likes
2,963


Saurav,

first of all, if you place a break-point in the subroutine FORM HANDLE_DATA_CHANGES_BSIK, does it get triggered in your process?

In order to trigger that event you need to call O_GRID2>CHECK_CHANGED_DATA from an appropriate place in your code.  I cannot tell you where that should be, you know your process better than me.

You might also want to call the following after you set the event handlers for both of your grids...

    o_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_enter ).
    o_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_modified ).

These will also trigger the on data change event.

A second thing I've noticed.  Why are you looping on the BSIK table then reading the same table in the loop?  And into the same field symbol?

If your aim is to change the value in the table it_bsik, then you can do that by simply changing the value in the field symbol, after you have read the table, using the row_id.  You don't need to use the modify statement when using FS.  It seems very confusing to me.

I think you really need to spend more time stepping through/debugging the code.  Trust me when I say that you can learn a lot about how the code behaves when you do this.

Regards,

Justin

5 REPLIES 5
Read only

jdloranger
Participant
0 Likes
2,963

Hello Saurav,

one thing that I spotted in a quick review is that when you are calling O_GRID2 to display and then set the handlers, the "handle_data_changed_bsik" is referring back to O_GRID and not O_GRID2 (line 393 of your code).

So effectively your on data change handler is not called for Grid2 and I think possibly changing how the same event behaves in O_GRID.

I would correct that first and try again.

Otherwise, I would debug/step through your program.  This is probably the best way to determine what exactly is happening, or not happening.

Justin

Message was edited by: Justin Loranger

Read only

0 Likes
2,963

Hi Justin,

Thanks a lot for the tips. I corrected that issue. But i want to know that how do i create different subroutines for the same event in different classes. I have created PEFORM HANDLE_DATA_CHANGED USING ER_DATA_CHANGED in the 1st class and I have created PERFORM HANDLE_DATA_CHANGED_BSIK USING ER_DATA_CHANGED in the 2nd class. In my first class, the subroutine is working perfectly, but in the 2nd class, it is not triggering in the debugger.

Regards,

Saurav Lahiry

CLASS LCL_EVENT_HANDLER DEFINITION.

  PUBLIC SECTION.

*

    METHODS:

      ON_CHB_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

        IMPORTING E_ROW E_COLUMN.

    METHODS:

           ON_CHK_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID "CL_SALV_EVENTS_TABLE

             IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. "ROW COLUMN.

    METHODS :  handle_data_changed

        FOR EVENT data_changed OF cl_gui_alv_grid

            IMPORTING er_data_changed.

    METHODS : HANDLE_TOOLBAR

            FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

                IMPORTING E_OBJECT

                          E_INTERACTIVE.

    METHODS : HANDLE_USER_COMMAND

            FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID

                IMPORTING E_UCOMM.

ENDCLASS.                    "lcl_event_handler DEFINITION

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

*       CLASS LCL_EVENT_HANDLER_BSIK DEFINITION

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

*

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

CLASS LCL_EVENT_HANDLER_BSIK DEFINITION.

  PUBLIC SECTION.

    METHODS:

      ON_CHB_CLICK_BSIK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

        IMPORTING E_ROW E_COLUMN.

    METHODS:

           ON_CHK_CLICK_BSIK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID "CL_SALV_EVENTS_TABLE

             IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. "ROW COLUMN.

      METHODS :  handle_data_changed_bsik

        FOR EVENT data_changed OF CL_GUI_ALV_GRID

                    IMPORTING er_data_changed.

ENDCLASS.                    "LCL_EVENT_HANDLER_BSIK DEFINITION

START-OF-SELECTION.

  PERFORM FETCH_DATA_CUSTOMER.

  PERFORM FETCH_DATA_VENDOR.

  CALL SCREEN 8000.

  DATA : LO_EVENT_HANDLER TYPE REF TO LCL_EVENT_HANDLER,

         LO_EVENT_HANDLER_BSIK TYPE REF TO LCL_EVENT_HANDLER_BSIK.

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

*&      Form  FETCH_DATA_CUSTOMER

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FETCH_DATA_CUSTOMER .

  REFRESH IT_BSID[].

  SELECT BUKRS

         KUNNR

         AUGDT

         SHKZG

         UMSKS

         UMSKZ

         AUGDT

         ZUONR

         GJAHR

         BELNR

         BUZEI

         BUDAT

         BLDAT

         CPUDT

         WAERS

         XBLNR

         BLART

         DMBTR

         AUGBL

         FROM BSID

         INTO CORRESPONDING FIELDS OF TABLE IT_BSID

         WHERE BUKRS IN SO_BUKRS

         AND   KUNNR IN SO_KUNNR.

  LOOP AT IT_BSID INTO WA_BSID.

    IF WA_BSID-SHKZG EQ 'H'.

      WA_BSID-DMBTR = WA_BSID-DMBTR * ( - 1 ).

      MODIFY IT_BSID FROM WA_BSID.

      CLEAR  WA_BSID.

    ENDIF.

  ENDLOOP.

  LOOP AT IT_BSID INTO WA_BSID.

    WA_BSID_TEMP-SRNO = 'Total Receivable'.

    WA_BSID_TEMP-BUKRS = WA_BSID-BUKRS.

    WA_BSID_TEMP-KUNNR = WA_BSID-KUNNR.

    WA_BSID_TEMP-AUGDT = WA_BSID-AUGDT.

    WA_BSID_TEMP-UMSKS = WA_BSID-UMSKS.

    WA_BSID_TEMP-UMSKZ = WA_BSID-UMSKZ.

    WA_BSID_TEMP-AUGDT = WA_BSID-AUGDT.

    WA_BSID_TEMP-ZUONR = WA_BSID-ZUONR.

    WA_BSID_TEMP-GJAHR = WA_BSID-GJAHR.

    WA_BSID_TEMP-BELNR = WA_BSID-BELNR.

    WA_BSID_TEMP-BUZEI = WA_BSID-BUZEI.

    WA_BSID_TEMP-BUDAT = WA_BSID-BUDAT.

    WA_BSID_TEMP-BLDAT = WA_BSID-BLDAT.

    WA_BSID_TEMP-CPUDT = WA_BSID-CPUDT.

    WA_BSID_TEMP-WAERS = WA_BSID-WAERS.

    WA_BSID_TEMP-XBLNR = WA_BSID-XBLNR.

    WA_BSID_TEMP-BLART = WA_BSID-BLART.

    WA_BSID_TEMP-DMBTR = WA_BSID-DMBTR.

    WA_BSID_TEMP-AUGBL = WA_BSID-AUGBL.

    APPEND WA_BSID_TEMP TO IT_BSID_TEMP.

    CLEAR  WA_BSID_TEMP.

  ENDLOOP.

  CLEAR LV_BSID.

  LOOP AT IT_BSID_TEMP INTO WA_BSID_TEMP.

    LV_BSID = LV_BSID + WA_BSID_TEMP-DMBTR.

  ENDLOOP.

ENDFORM.                    " FETCH_DATA_CUSTOMER

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

*&      Form  FETCH_DATA_VENDOR

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FETCH_DATA_VENDOR .

  IF NOT IT_BSID[] IS INITIAL.

    SELECT BUKRS

           LIFNR

           SHKZG

           UMSKS

           UMSKZ

           AUGDT

           ZUONR

           GJAHR

           BELNR

           BUZEI

           BUDAT

           BLDAT

           CPUDT

           WAERS

           XBLNR

           BLART

           DMBTR

           FROM  BSIK

           INTO CORRESPONDING FIELDS OF TABLE IT_BSIK

           FOR ALL ENTRIES IN IT_BSID

           WHERE BUKRS EQ IT_BSID-BUKRS

           AND   LIFNR EQ IT_BSID-KUNNR.

  ENDIF.

  LOOP AT IT_BSIK INTO WA_BSIK.

    IF WA_BSIK-SHKZG EQ 'H'.

      WA_BSIK-DMBTR = WA_BSIK-DMBTR * ( - 1 ).

      MODIFY IT_BSIK FROM WA_BSIK.

      CLEAR  WA_BSIK.

    ENDIF.

  ENDLOOP.

  LOOP AT IT_BSIK INTO WA_BSIK.

    WA_BSIK_TEMP-SRNO1 = 'Total Payable'.

    WA_BSIK_TEMP-BUKRS = WA_BSIK-BUKRS.

    WA_BSIK_TEMP-LIFNR = WA_BSIK-LIFNR.

    WA_BSIK_TEMP-AUGDT = WA_BSIK-AUGDT.

    WA_BSIK_TEMP-UMSKS = WA_BSIK-UMSKS.

    WA_BSIK_TEMP-UMSKZ = WA_BSIK-UMSKZ.

    WA_BSIK_TEMP-AUGDT = WA_BSIK-AUGDT.

    WA_BSIK_TEMP-ZUONR = WA_BSIK-ZUONR.

    WA_BSIK_TEMP-GJAHR = WA_BSIK-GJAHR.

    WA_BSIK_TEMP-BELNR = WA_BSIK-BELNR.

    WA_BSIK_TEMP-BUZEI = WA_BSIK-BUZEI.

    WA_BSIK_TEMP-BUDAT = WA_BSIK-BUDAT.

    WA_BSIK_TEMP-BLDAT = WA_BSIK-BLDAT.

    WA_BSIK_TEMP-CPUDT = WA_BSIK-CPUDT.

    WA_BSIK_TEMP-WAERS = WA_BSIK-WAERS.

    WA_BSIK_TEMP-XBLNR = WA_BSIK-XBLNR.

    WA_BSIK_TEMP-DMBTR = WA_BSIK-DMBTR.

    WA_BSIK_TEMP-AUGBL = WA_BSIK-AUGBL.

    APPEND WA_BSIK_TEMP TO IT_BSIK_TEMP.

    CLEAR  WA_BSIK_TEMP.

  ENDLOOP.

  CLEAR LV_BSIK.

  LOOP AT IT_BSIK_TEMP INTO WA_BSIK_TEMP.

    LV_BSIK = LV_BSIK + WA_BSIK_TEMP-DMBTR.

  ENDLOOP.

ENDFORM.                    " FETCH_DATA_VENDOR

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

*&      Module  STATUS_8000  OUTPUT

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

*       text

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

MODULE STATUS_8000 OUTPUT.

  SET PF-STATUS 'ZAU_PF'.

  SET TITLEBAR 'TEST_PLAN'.

  VEND = CUST = SO_KUNNR-LOW.

  CREATE OBJECT O_CC

    EXPORTING

      CONTAINER_NAME = 'MAIN_CONT'.

  IF SY-SUBRC EQ 0.

    CREATE OBJECT O_GRID

      EXPORTING

        I_PARENT          = O_CC

      EXCEPTIONS

        ERROR_CNTL_CREATE = 1

        ERROR_CNTL_INIT   = 2

        ERROR_CNTL_LINK   = 3

        ERROR_DP_CREATE   = 4

        OTHERS            = 5.

    IF SY-SUBRC EQ 0.

      PERFORM BUILD_FIELDCATALOG_BSID.

      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

        EXPORTING

          I_STRUCTURE_NAME = 'ZTY_BSID'

        CHANGING

          CT_FIELDCAT      = LT_FIELDCAT.

      DATA : LV_TOTAL TYPE BSIK-WRBTR.

                WHEN 'AMOUNTSELECTED'.

            LS_FIELDCAT-DO_SUM = 'X'.

            LS_FIELDCAT-EDIT = 'X'.

            MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

            CLEAR  LS_FIELDCAT.

        ENDCASE.

      ENDLOOP.

      G_R_LAYO-NO_TOOLBAR = 'X'.

      G_R_LAYO-CWIDTH_OPT = 'X'.

      G_R_LAYO-SEL_MODE   = 'A'.

      G_R_LAYO-NO_TOTLINE = 'X'.

      G_R_LAYO-BOX_FNAME = 'IT_BSID-CHB'.

      LOOP AT LT_FIELDCAT INTO LS_FIELDCAT.

        IF  LS_FIELDCAT-FIELDNAME = 'CHB'.

          LS_FIELDCAT-CHECKBOX = 'X'.

          LS_FIELDCAT-EDIT  = 'X'.

          LS_FIELDCAT-HOTSPOT = 'X'.

          MODIFY LT_FIELDCAT FROM LS_FIELDCAT .

          CLEAR  LS_FIELDCAT.

        ENDIF.

      ENDLOOP.

      LOOP AT LT_FIELDCAT INTO LS_FIELDCAT.

        IF LS_FIELDCAT-FIELDNAME = 'SRNO'.

          LS_FIELDCAT-TECH = 'X'.

          LS_FIELDCAT-NO_OUT = 'X'.

          MODIFY LT_FIELDCAT FROM LS_FIELDCAT TRANSPORTING TECH NO_OUT.

        ENDIF.

        CLEAR LS_FIELDCAT.

      ENDLOOP.

      WA_SORT2-SPOS = 1.

      WA_SORT2-FIELDNAME = 'SRNO'.

      WA_SORT2-UP = 'X'.

      WA_SORT2-SUBTOT = 'X'.

      APPEND WA_SORT2 TO I_SORT2.

      IF SY-SUBRC EQ 0.

        CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY

          EXPORTING

            IS_VARIANT                    = W_VARIANT

            I_SAVE                        = 'X'

            IS_LAYOUT                     = G_R_LAYO

          CHANGING

            IT_OUTTAB                     = IT_BSID_TEMP[]

            IT_FIELDCATALOG               = LT_FIELDCAT

            IT_SORT                       = I_SORT2

          EXCEPTIONS

            INVALID_PARAMETER_COMBINATION = 1

            PROGRAM_ERROR                 = 2

            TOO_MANY_LINES                = 3

            OTHERS                        = 4.

        CREATE OBJECT LO_EVENT_HANDLER.

        SET HANDLER LO_EVENT_HANDLER->ON_CHB_CLICK FOR O_GRID.

        SET HANDLER LO_EVENT_HANDLER->ON_CHK_CLICK FOR O_GRID.

         SET HANDLER LO_EVENT_HANDLER->handle_data_changed FOR O_GRID.

        SET HANDLER LO_EVENT_HANDLER->HANDLE_USER_COMMAND FOR O_GRID.

      ELSE.

        CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY

          EXCEPTIONS

            FINISHED = 1

            OTHERS   = 2.

        IF SY-SUBRC <> 0.          ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  IF SY-SUBRC EQ 0.

    W_VARIANT-REPORT = SY-REPID.

    CREATE OBJECT O_CC_BSIK

      EXPORTING

        CONTAINER_NAME = 'MAIN_CONT1'.

    CREATE OBJECT O_GRID2

      EXPORTING

        I_PARENT          = O_CC_BSIK

      EXCEPTIONS

        ERROR_CNTL_CREATE = 1

        ERROR_CNTL_INIT   = 2

        ERROR_CNTL_LINK   = 3

        ERROR_DP_CREATE   = 4

        OTHERS            = 5.

    IF SY-SUBRC EQ 0.

      PERFORM FIELDCATALOG_BSIK.

    ENDIF.

    IF SY-SUBRC EQ 0.

      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

        EXPORTING

          I_STRUCTURE_NAME       = 'ZTY_BSIK'

        CHANGING

          CT_FIELDCAT            = LT_FIELDCAT_BSIK

        EXCEPTIONS

          INCONSISTENT_INTERFACE = 1

          PROGRAM_ERROR          = 2

          OTHERS                 = 3.

      PERFORM FIELDCATALOG_BSIK.

      W_VARIANT-REPORT = SY-REPID.

     

      G_R_LAYO_BSIK-NO_TOOLBAR = 'X'.

      G_R_LAYO_BSIK-CWIDTH_OPT = 'X'.

      G_R_LAYO_BSIK-SEL_MODE   = 'A'.

      G_R_LAYO_BSIK-NO_TOTLINE   = 'X'.

      LOOP AT LT_FIELDCAT_BSIK INTO LS_FIELDCAT_BSIK.

        IF  LS_FIELDCAT_BSIK-FIELDNAME = 'CHB'.

          LS_FIELDCAT_BSIK-CHECKBOX = 'X'.

          LS_FIELDCAT_BSIK-EDIT  = 'X'.

          LS_FIELDCAT_BSIK-HOTSPOT = 'X'.

          MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK .

          CLEAR  LS_FIELDCAT_BSIK.

        ENDIF.

      ENDLOOP.

      LOOP AT LT_FIELDCAT_BSIK INTO LS_FIELDCAT_BSIK.

        IF LS_FIELDCAT_BSIK-FIELDNAME = 'SRNO1'.

          LS_FIELDCAT_BSIK-TECH = 'X'.

          LS_FIELDCAT_BSIK-NO_OUT = 'X'.

          MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK TRANSPORTING TECH NO_OUT.

        ENDIF.

        CLEAR LS_FIELDCAT_BSIK.

      ENDLOOP.

      WA_SORT3-SPOS = 1.

      WA_SORT3-FIELDNAME = 'SRNO1'.

      WA_SORT3-UP = 'X'.

      WA_SORT3-SUBTOT = 'X'.

      APPEND WA_SORT3 TO I_SORT3.

      CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

        EXPORTING

          IS_VARIANT                    = W_VARIANT_BSIK

          I_SAVE                        = 'X'

          IS_LAYOUT                     = G_R_LAYO_BSIK

        CHANGING

          IT_SORT                       = I_SORT3

          IT_OUTTAB                     = IT_BSIK_TEMP[]

          IT_FIELDCATALOG               = LT_FIELDCAT_BSIK

        EXCEPTIONS

          INVALID_PARAMETER_COMBINATION = 1

          PROGRAM_ERROR                 = 2

          TOO_MANY_LINES                = 3

          OTHERS                        = 4.

      CREATE OBJECT LO_EVENT_HANDLER_BSIK.

      SET HANDLER LO_EVENT_HANDLER_BSIK->ON_CHB_CLICK_BSIK FOR O_GRID2.

      SET HANDLER LO_EVENT_HANDLER_BSIK->ON_CHK_CLICK_BSIK FOR O_GRID2.

      SET HANDLER LO_EVENT_HANDLER_BSIK->handle_data_changed_BSIK FOR O_GRID.

    ELSE.

      CALL METHOD O_GRID2->REFRESH_TABLE_DISPLAY

        EXCEPTIONS

          FINISHED = 1

          OTHERS   = 2.

    ENDIF.

  ENDIF.

ENDMODULE.                 " STATUS_8000  OUTPUT

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

*&      Module  USER_COMMAND_8000  INPUT

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

*       text

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

MODULE USER_COMMAND_8000 INPUT.

  DATA LV_UCOMM TYPE SY-UCOMM.

  LV_UCOMM = SY-UCOMM.

  CALL METHOD O_GRID->CHECK_CHANGED_DATA.

  CASE LV_UCOMM.

    WHEN 'CANCEl' OR 'EXIT'.

      PERFORM FREE_OBJECTS.

      LEAVE PROGRAM.

    WHEN 'CALC'.

      CLEAR: TOT1, TOT2.

      LOOP AT IT_BSID_TEMP INTO WA_BSID_TEMP.

        TOT1 = TOT1 + WA_BSID_TEMP-DMBTR.

        TOT2 = TOT2 + WA_BSID_TEMP-AMOUNTSELECTED.

      ENDLOOP.

      LOOP AT IT_BSIK_TEMP INTO WA_BSIK_TEMP.

        TOT1 = TOT1 + WA_BSIK_TEMP-DMBTR.

        TOT2 = TOT2 + WA_BSIK_TEMP-AMOUNTSELECTED.

      ENDLOOP.

    WHEN 'BACK'.

      PERFORM FREE_OBJECTS.

      SET SCREEN '0'.

      LEAVE SCREEN.

  ENDCASE.

  CALL METHOD O_GRID2->CHECK_CHANGED_DATA.

ENDMODULE.                 " USER_COMMAND_8000  INPUT

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

*&      Form  FREE_OBJECTS

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

*       text

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

*  -->  p1        text

*  <--  p2        text

*---------ENDCASE.

*ENDMODULE.                 " USER_COMMAND_8000  INPUT

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

*&      Form  free_objects

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

*       text

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

FORM FREE_OBJECTS.

  CALL METHOD O_GRID->FREE

    EXCEPTIONS

      CNTL_ERROR        = 1

      CNTL_SYSTEM_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 METHOD O_CC->FREE

    EXCEPTIONS

      CNTL_ERROR        = 1

      CNTL_SYSTEM_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 METHOD O_GRID2->FREE

    EXCEPTIONS

      CNTL_ERROR        = 1

      CNTL_SYSTEM_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 METHOD O_CC_BSIK->FREE

    EXCEPTIONS

      CNTL_ERROR        = 1

      CNTL_SYSTEM_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.

ENDFORM.                    " FREE_OBJECTS

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

*&      Form  CONVERT_PDF

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM CONVERT_PDF.

  IF  NOT SY-SPONO IS INITIAL.

    LV_SPOOL =  SY-SPONO.

    CASE SY-UCOMM.

      WHEN 'DOWNLOAD'.

        CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

          EXPORTING

            SRC_SPOOLID              = LV_SPOOL

            NO_DIALOG                = ABAP_FALSE

          IMPORTING

            PDF_BYTECOUNT            = PDF_BYTECOUNT

            PDF_SPOOLID              = PDF_SPOOLID

            BTC_JOBNAME              = BTC_JOBNAME

            BTC_JOBCOUNT             = BTC_JOBCOUNT

          TABLES

            PDF                      = GT_PDF

          EXCEPTIONS

            ERR_NO_ABAP_SPOOLJOB     = 1

            ERR_NO_SPOOLJOB          = 2

            ERR_NO_PERMISSION        = 3

            ERR_CONV_NOT_POSSIBLE    = 4

            ERR_BAD_DESTDEVICE       = 5

            USER_CANCELLED           = 6

            ERR_SPOOLERROR           = 7

            ERR_TEMSEERROR           = 8

            ERR_BTCJOB_OPEN_FAILED   = 9

            ERR_BTCJOB_SUBMIT_FAILED = 10

            ERR_BTCJOB_CLOSE_FAILED  = 11.

        IF   GT_PDF IS NOT INITIAL.

          P_FILE = 'D:\Users\mriyaj\Desktop\DOWN'.

          CALL FUNCTION 'GUI_DOWNLOAD'

            EXPORTING

              FILENAME = P_FILE

              FILETYPE = 'BIN'

            TABLES

              DATA_TAB = GT_PDF.

          IF SY-SUBRC = 0.

            MESSAGE 'File Generated Successfully' TYPE 'S'.

          ENDIF.

        ENDIF.

    ENDCASE.

  ENDIF.

ENDFORM.                    " CONVERT_PDF

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

*&      Form  USER_COMMAND

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

*       text

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

*      -->P_E_UCOMM  text

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

FORM USER_COMMAND  USING    P_E_UCOMM.

  DATA :LI_ROWS TYPE STANDARD TABLE OF LVC_S_ROW,

        LV_LN TYPE I."No. of rows selected

DATA : C_X4(1) TYPE C.

*DATA : P_E_UCOMM LIKE SY-UCOMM.

  CASE P_E_UCOMM.

    WHEN 'DOWNLOAD'.

      CALL FUNCTION 'POPUP_TO_CONFIRM'

            EXPORTING

              TEXT_QUESTION = 'Would u like to download in PDF'

              TEXT_BUTTON_1 = 'YES'

              TEXT_BUTTON_2 = 'NO'

            IMPORTING

              ANSWER        = C_X4.

   IF C_X4 = '1'.

      PERFORM CONVERT_PDF.

    ELSE.

MESSAGE 'Output in excel' TYPE 'I'.

*PERFORM CONVERT_EXCEL.

ENDIF.

  ENDCASE.

ENDFORM.                    " USER_COMMAND

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

*&      Form  TOOLBAR

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM TOOLBAR .

  CLEAR W_TOOLBAR.

  MOVE : 'DOWNLOAD' TO W_TOOLBAR-FUNCTION,"Function code

        ''  TO W_TOOLBAR-ICON,"Name of an Icon

        ''  TO W_TOOLBAR-QUICKINFO,"Quickinfo for an icon

        '' TO W_TOOLBAR-BUTN_TYPE,"Toolbar button type

        '' TO W_TOOLBAR-DISABLED,"Disabled

        'DOWNLOAD' TO W_TOOLBAR-TEXT."Text

ENDFORM.                    " TOOLBAR

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

*       CLASS LCL_EVENT_HANDLER_bsik IMPLEMENTATION

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

*

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

CLASS LCL_EVENT_HANDLER_BSIK IMPLEMENTATION.

  METHOD:

        ON_CHB_CLICK_BSIK .

DATA : C_X4(1) TYPE C.

    READ TABLE IT_BSIK  INDEX E_ROW-INDEX INTO WA_BSIK.

    IF SY-SUBRC EQ 0.

     CALL FUNCTION 'POPUP_TO_CONFIRM'

            EXPORTING

              TEXT_QUESTION = 'Would u like to go to tcode'

              TEXT_BUTTON_1 = 'YES'

              TEXT_BUTTON_2 = 'NO'

            IMPORTING

              ANSWER        = C_X4.

         IF C_X4 = '1'.

      SET PARAMETER ID 'LIF' FIELD WA_BSIK-LIFNR.

      CALL TRANSACTION 'FBL1N' AND SKIP FIRST SCREEN.

      ELSE.

        EXIT.

        ENDIF.

    ENDIF.

  ENDMETHOD.                    "ON_CHB_CLICK_bsik

  METHOD:  ON_CHK_CLICK_BSIK.

    DATA : C_X_BSIK(1) TYPE C.

    DATA : LV_VALID_BSIK TYPE C.

    DATA : r_ucomm1 TYPE sy-ucomm.

    DATA TABIX(10)." TYPE SYTABIX.

    FIELD-SYMBOLS: <LFA_DATA_BSIK> LIKE LINE OF IT_BSIK.

    DATA : p_char1(1) TYPE c.

    LOOP AT IT_BSIK ASSIGNING <LFA_DATA_BSIK>.

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

        EXPORTING

          INPUT  = E_ROW_ID

        IMPORTING

          OUTPUT = TABIX.

      IF  SY-TABIX EQ TABIX.

        IF <LFA_DATA_BSIK>-CHB IS INITIAL.

          CALL FUNCTION 'POPUP_TO_CONFIRM'

            EXPORTING

              TEXT_QUESTION = 'Would u like to enter amount'

              TEXT_BUTTON_1 = 'YES'

              TEXT_BUTTON_2 = 'NO'

            IMPORTING

              ANSWER        = C_X_BSIK.

          IF C_X_BSIK = '1'.

            <LFA_DATA_BSIK>-CHB = 'X'.

            CALL METHOD LO_EVENT_HANDLER_BSIK->HANDLE_DATA_CHANGED_BSIK.

          ELSEIF C_X_BSIK = '2'.

            <LFA_DATA_BSIK>-AMOUNTSELECTED = <LFA_DATA_BSIK>-DMBTR.

            MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

          ENDIF.

        ELSE.

*          MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

          CLEAR <LFA_DATA_BSIK>-CHB.

        ENDIF.

*          MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

      ENDIF.

    ENDLOOP.

    CLEAR: IT_BSIK_TEMP[].

    LOOP AT IT_BSIK INTO WA_BSIK.

      MOVE-CORRESPONDING WA_BSIK TO WA_BSIK_TEMP.

      APPEND WA_BSIK_TEMP TO IT_BSIK_TEMP.

    ENDLOOP.

    CLEAR WA_BSIK_TEMP.

    IF O_GRID2 IS NOT INITIAL.

      O_GRID2->REFRESH_TABLE_DISPLAY( ).

    ENDIF.

  ENDMETHOD.                    "ON_CHB_CLICK

  METHOD HANDLE_DATA_CHANGED_BSIK.

PERFORM HANDLE_DATA_CHANGED_BSIK USING ER_DATA_CHANGED .

ENDMETHOD.

ENDCLASS.                    "LCL_EVENT_HANDLER_bsik IMPLEMENTATION

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

*       CLASS LCL_EVENT_HANDLER IMPLEMENTATION

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

*

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

CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

  METHOD:

        ON_CHB_CLICK .

  DATA : C_X3(1) TYPE C.

    READ TABLE IT_BSID  INDEX E_ROW INTO WA_BSID .

    IF SY-SUBRC EQ 0.

  CALL FUNCTION 'POPUP_TO_CONFIRM'

            EXPORTING

              TEXT_QUESTION = 'Would u like to go to tcode'

              TEXT_BUTTON_1 = 'YES'

              TEXT_BUTTON_2 = 'NO'

            IMPORTING

              ANSWER        = C_X3.

         IF C_X3 = '1'.

      SET PARAMETER ID 'KUN' FIELD WA_BSID-KUNNR.

      CALL TRANSACTION 'FBL5N' AND SKIP FIRST SCREEN.

         ELSE.

         EXIT .

         ENDIF.

    ENDIF.

  ENDMETHOD.                    "ON_CHB_CLICK

  METHOD:  ON_CHK_CLICK.

    DATA : C_X(1) TYPE C.

    DATA : LV_VALID TYPE C.

    DATA TABIX(10).

    DATA : R_UCOMM LIKE SY-UCOMM.

    DATA : p_char(1) TYPE c.

    FIELD-SYMBOLS: <LFA_DATA> LIKE LINE OF IT_BSID.

    LOOP AT  IT_BSID ASSIGNING <LFA_DATA>.

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

        EXPORTING

          INPUT  = E_ROW_ID

        IMPORTING

          OUTPUT = TABIX.

      IF  SY-TABIX EQ TABIX.

        IF <LFA_DATA>-CHB IS INITIAL.

          CALL FUNCTION 'POPUP_TO_CONFIRM'

            EXPORTING

              TEXT_QUESTION = 'Would u like to enter amount'

              TEXT_BUTTON_1 = 'YES'

              TEXT_BUTTON_2 = 'NO'

            IMPORTING

              ANSWER        = C_X.

          IF C_X = '1'.

            <LFA_DATA>-CHB = 'X'.

                    CALL METHOD lo_event_handler->handle_data_changed.

*            CALL METHOD o_grid->refresh_table_display.

*            CALL METHOD o_grid->check_changed_data.

*            MODIFY it_bsid FROM <LFA_DATA>.

*            CLEAR <LFA_DATA>.

*            METHOD: handle_data_changed.

*               DATA: lv_changed TYPE lvc_s_modi.

*

*    LOOP AT er_data_changed->mt_good_cells INTO lv_changed

*      WHERE fieldname = 'AMOUNTSELECTED'.

*

*      READ TABLE it_bsid INTO <lfa_data> INDEX lv_changed-row_id.

*

*      IF sy-subrc = 0.

*        MOVE lv_changed-value TO <LFA_DATA>-amountselected.

*        MODIFY it_bsid FROM <LFA_DATA> INDEX lv_changed-row_id.

*        CLEAR <LFA_DATA>.

*      ENDIF.

*      ENDIF.

*      ENDIF.

*    ENDLOOP.

*  ENDMETHOD.

                     ELSEIF C_X = '2'.

            <LFA_DATA>-AMOUNTSELECTED = <LFA_DATA>-DMBTR.

            MODIFY IT_BSID FROM <LFA_DATA> .

          ENDIF.

        ELSE.

          CLEAR <LFA_DATA>-CHB.

        ENDIF.

*        BREAK-POINT.

*        MODIFY IT_BSID FROM <LFA_DATA>.

      ENDIF.

    ENDLOOP.

    CLEAR: IT_BSID_TEMP[].

    LOOP AT IT_BSID INTO WA_BSID.

      MOVE-CORRESPONDING WA_BSID TO WA_BSID_TEMP.

      APPEND WA_BSID_TEMP TO IT_BSID_TEMP.

    ENDLOOP.

    IF O_GRID IS NOT INITIAL.

CALL METHOD O_GRID->REGISTER_EDIT_EVENT

EXPORTING

I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED

EXCEPTIONS

ERROR = 1

OTHERS = 2.

*IF SY-SUBRC EQ 0.

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

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

*ENDIF.

      O_GRID->REFRESH_TABLE_DISPLAY( ).

    ENDIF.

  ENDMETHOD.                    "ON_CHB_CLICK

  METHOD HANDLE_TOOLBAR.

* This method handles the user interaction with the tool bar.

    PERFORM TOOLBAR.

    APPEND W_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

  ENDMETHOD.                    "handle_toolbar

  METHOD HANDLE_USER_COMMAND.

    PERFORM USER_COMMAND USING E_UCOMM.

  ENDMETHOD.                    "handle_user_command

METHOD HANDLE_DATA_CHANGED.

PERFORM HANDLE_DATA_CHANGED USING ER_DATA_CHANGED .

  ENDMETHOD.

ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION

ENDFORM.                    " CONVERT_EXCEL

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

*&      Form  HANDLE_DATA_CHANGED

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

*       text

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

*      -->P_ER_DATA_CHANGED  text

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

FORM HANDLE_DATA_CHANGED  USING    P_ER_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

DATA: lv_changed TYPE lvc_s_modi.

FIELD-SYMBOLS : <LFA_DATA_BSID> LIKE LINE OF it_bsid.

IF p_er_data_changed IS NOT INITIAL.

    LOOP AT p_er_data_changed->mt_good_cells INTO lv_changed

      WHERE fieldname = 'AMOUNTSELECTED'.

      LOOP AT it_bsid ASSIGNING <LFA_DATA_BSID>.

      READ TABLE it_bsid INTO <lfa_data_bsid> INDEX lv_changed-row_id.

      IF sy-subrc = 0.

        MOVE lv_changed-value TO <LFA_DATA_bsid>-amountselected.

        MODIFY it_bsid FROM <LFA_DATA_bsid> INDEX lv_changed-row_id TRANSPORTING AMOUNTSELECTED.

        CLEAR <LFA_DATA_bsid>.

      ENDIF.

      ENDLOOP.

**      ENDIF.

*      ENDIF.

    ENDLOOP.

ENDIF.

ENDFORM.                    " HANDLE_DATA_CHANGED

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

*&      Form  HANDLE_DATA_CHANGED_BSIK

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

*       text

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

*      -->P_ER_DATA_CHANGED  text

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

FORM HANDLE_DATA_CHANGED_BSIK  USING    P_ER_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

DATA: lv_changed_BSIK TYPE lvc_s_modi.

FIELD-SYMBOLS : <LFA_DATA_BSIK2> LIKE LINE OF it_bsiK.

*CREATE OBJECT P_ER_DATA_CHANGED.

IF P_ER_DATA_CHANGED IS NOT INITIAL.

    LOOP AT P_ER_DATA_CHANGED->mt_good_cells INTO lv_changed_BSIK

      WHERE fieldname = 'AMOUNTSELECTED'.

      LOOP AT it_bsiK ASSIGNING <LFA_DATA_BSIK2>.

      READ TABLE it_bsiK INTO <lfa_data_bsiK2> INDEX lv_changed_BSIK-row_id.

      IF sy-subrc = 0.

        MOVE lv_changed_BSIK-value TO <LFA_DATA_bsiK2>-amountselected.

        MODIFY it_bsiK FROM <LFA_DATA_bsiK2> INDEX lv_changed_BSIK-row_id TRANSPORTING AMOUNTSELECTED.

        CLEAR <LFA_DATA_bsiK2>.

      ENDIF.

      ENDLOOP.

**      ENDIF.

*      ENDIF.

    ENDLOOP.

ENDIF.

ENDFORM.                    " HANDLE_DATA_CHANGED_BSIK

Read only

0 Likes
2,963

Saurav,

I just want to be sure, is the code above the corrected code?  If so, I still see the issue...

The event handler, on data changed, will never be called, for O_GRID2, if this is not set correctly.

Regards,

Justin

Read only

0 Likes
2,963

Hi Justin,

Please accept my apologies for the inconvenience. I am sending u the corrected code but the checkbox issue still persists. Please correct the code .

Regards,

Saurav Lahiry

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

*& Report  ZSFCUSTVENDKNOCKOFF_COPY

*&

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

*&

*&

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

REPORT ZSFCUSTVENDKNOCKOFF_CC.

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

*& Report  ZSFCUSTVENDKNOCKOFF

*&

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

*&

*&

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

*REPORT ZSFCUSTVENDKNOCKOFF.

TABLES : BSIK,BSID, ZTY_BSID,ZTY_BSIK.

TYPE-POOLS : ABAP.

* Types declaration for customer master

TYPES : BEGIN OF ZTY_BSID,

         BUKRS LIKE BSID-BUKRS,

         SHKZG LIKE BSID-SHKZG,

         KUNNR LIKE BSID-KUNNR,

         UMSKS LIKE BSID-UMSKZ,

         UMSKZ LIKE BSID-UMSKZ,

         AUGDT LIKE BSID-AUGDT,

         AUGBL LIKE BSID-AUGBL,

         ZUONR LIKE BSID-ZUONR,

         GJAHR LIKE BSID-GJAHR,

         BELNR LIKE BSID-BELNR,

         BUZEI LIKE BSID-BUZEI,

         BUDAT LIKE BSID-BUDAT,

         BLDAT LIKE BSID-BLDAT,

         BLART LIKE BSID-BLART,

         CPUDT LIKE BSID-CPUDT,

         WAERS LIKE BSID-WAERS,

         XBLNR LIKE BSID-XBLNR,

         DMBTR LIKE BSID-DMBTR,

          CHB(1) TYPE C,

          AMOUNTSELECTED    TYPE ZTY_BSID-AMOUNTSELECTED,

         END OF ZTY_BSID.

TYPES : BEGIN OF ZTY_BSID_TEMP,

         SRNO TYPE CHAR40,

         BUKRS LIKE BSID-BUKRS,

         KUNNR LIKE BSID-KUNNR,

         SHKZG LIKE BSID-SHKZG,

         UMSKS LIKE BSID-UMSKZ,

         UMSKZ LIKE BSID-UMSKZ,

         AUGDT LIKE BSID-AUGDT,

         AUGBL LIKE BSID-AUGBL,

         ZUONR LIKE BSID-ZUONR,

         GJAHR LIKE BSID-GJAHR,

         BELNR LIKE BSID-BELNR,

         BUZEI LIKE BSID-BUZEI,

         BUDAT LIKE BSID-BUDAT,

         BLDAT LIKE BSID-BLDAT,

         BLART LIKE BSID-BLART,

         CPUDT LIKE BSID-CPUDT,

         WAERS LIKE BSID-WAERS,

         XBLNR LIKE BSID-XBLNR,

         DMBTR LIKE BSID-DMBTR,

          CHB(1) TYPE C,

          AMOUNTSELECTED    TYPE ZTY_BSID-AMOUNTSELECTED,

*         srno TYPE char40,

         END OF ZTY_BSID_TEMP.

* Types  declaration for vendor master

TYPES : BEGIN OF ZTY_BSIK,

         BUKRS LIKE BSIK-BUKRS,

         SHKZG LIKE BSIK-SHKZG,

         LIFNR LIKE BSIK-LIFNR,

         UMSKS LIKE BSIK-UMSKZ,

         UMSKZ LIKE BSIK-UMSKZ,

         AUGDT LIKE BSIK-AUGDT,

         ZUONR LIKE BSIK-ZUONR,

         GJAHR LIKE BSIK-GJAHR,

         BELNR LIKE BSIK-BELNR,

         BUZEI LIKE BSIK-BUZEI,

         BUDAT LIKE BSIK-BUDAT,

         BLDAT LIKE BSIK-BLDAT,

         CPUDT LIKE BSIK-CPUDT,

         WAERS LIKE BSIK-WAERS,

         XBLNR LIKE BSIK-XBLNR,

         AUGBL LIKE BSIK-AUGBL,

         DMBTR LIKE BSIK-DMBTR,

         CHB(1) TYPE C,

          AMOUNTSELECTED    TYPE ZTY_BSIK-AMOUNTSELECTED,

         END OF ZTY_BSIK.

TYPES : BEGIN OF ZTY_BSIK_TEMP,

         SRNO1 TYPE CHAR40,

         BUKRS LIKE BSIK-BUKRS,

         LIFNR LIKE BSIK-LIFNR,

         SHKZG LIKE BSIK-SHKZG,

         UMSKS LIKE BSIK-UMSKZ,

         UMSKZ LIKE BSIK-UMSKZ,

         AUGDT LIKE BSIK-AUGDT,

         AUGBL LIKE BSIK-AUGBL,

         ZUONR LIKE BSIK-ZUONR,

         GJAHR LIKE BSIK-GJAHR,

         BELNR LIKE BSIK-BELNR,

         BUZEI LIKE BSIK-BUZEI,

         BUDAT LIKE BSIK-BUDAT,

         BLDAT LIKE BSIK-BLDAT,

         BLART LIKE BSIK-BLART,

         CPUDT LIKE BSIK-CPUDT,

         WAERS LIKE BSIK-WAERS,

         XBLNR LIKE BSIK-XBLNR,

         DMBTR LIKE BSIK-DMBTR,

          CHB(1) TYPE C,

          AMOUNTSELECTED    TYPE ZTY_BSIK-AMOUNTSELECTED,

          END OF ZTY_BSIK_TEMP.

*  Internal table declarations,

DATA : IT_BSID TYPE STANDARD TABLE OF ZTY_BSID ,

        WA_BSID TYPE ZTY_BSID,

        IT_BSID_TEMP TYPE STANDARD TABLE OF ZTY_BSID_TEMP ,

        WA_BSID_TEMP TYPE ZTY_BSID_TEMP,

        IT_BSIK TYPE STANDARD TABLE OF ZTY_BSIK,

        WA_BSIK TYPE ZTY_BSIK,

        IT_BSIK_TEMP TYPE STANDARD TABLE OF ZTY_BSIK_TEMP,

        WA_BSIK_TEMP TYPE ZTY_BSIK_TEMP.

DATA: I_SORT2 TYPE STANDARD TABLE OF LVC_S_SORT INITIAL SIZE 0,

       I_SORT3 TYPE STANDARD TABLE OF LVC_S_SORT INITIAL SIZE 0.

* Workarea for sort table

DATA: WA_SORT2      TYPE  LVC_S_SORT,

       WA_SORT3      TYPE LVC_S_SORT.

DATA: TOT1 TYPE DMBTR,

       TOT2 TYPE ZTY_BSID-AMOUNTSELECTED.

*PARAMETERS : P_MTART LIKE bsid-belnr.

DATA: CUST TYPE KNA1-KUNNR.

DATA: VEND TYPE KNA1-KUNNR.

DATA : LV_BSID TYPE BSID-WRBTR,

        LV_BSIK TYPE BSIK-WRBTR,

        LV_VALUE TYPE BSIK-WRBTR.

DATA : LV_VALUE2 TYPE BSIK-DMBTR,

        LV_VALUE3 TYPE BSIK-DMBTR.

DATA : LV_BSID_AMOUNTSELECT TYPE BSID-DMBTR,

        LV_BSIK_AMOUNTSELECT TYPE BSIK-DMBTR.

DATA : WA_PRINT      TYPE LVC_S_PRNT,

       LV_SPOOL      TYPE TSP01-RQIDENT,

       WA_TSP01      TYPE TSP01,

       PDF_BYTECOUNT TYPE  I,

       PDF_SPOOLID   LIKE  TSP01-RQIDENT,

       BTC_JOBNAME   TYPE  TBTCJOB-JOBNAME,

       BTC_JOBCOUNT  TYPE  TBTCJOB-JOBCOUNT,

       P_FILE TYPE STRING,

       GT_PDF        TYPE STANDARD TABLE OF TLINE.

*ALV declarations

DATA : BEGIN OF ITAB OCCURS 0,

        CHECKBOX(1),

        END OF ITAB.

DATA : G_R_LAYO TYPE LVC_S_LAYO" Layout structure

        G_R_LAYO_BSIK TYPE LVC_S_LAYO.

DATA:

         LS_FIELDCAT TYPE LVC_S_FCAT,

             LT_FIELDCAT TYPE STANDARD TABLE OF LVC_S_FCAT,

         LS_FIELDCAT_BSIK TYPE LVC_S_FCAT,

         LT_FIELDCAT_BSIK TYPE STANDARD TABLE OF LVC_S_FCAT,

        W_VARIANT TYPE DISVARIANT,

        W_VARIANT_BSIK TYPE DISVARIANT,

*       o_docking TYPE REF TO cl_gui_docking_container,"Docking Container

        O_CC TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

        O_CC_BSIK TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

        O_GRID TYPE REF TO CL_GUI_ALV_GRID,"Grid.

        W_TOOLBAR TYPE STB_BUTTON,"For toolbar

        O_DOCKING2 TYPE REF TO CL_GUI_DOCKING_CONTAINER,"Docking Container

        O_GRID2 TYPE REF TO CL_GUI_ALV_GRID."Grid

DATA:LC_ROW TYPE LVC_T_ROW,

       LS_ID TYPE LVC_S_ROID,

       LT_ID TYPE LVC_T_ROID,

       LS_ID_BSIK TYPE LVC_S_ROID,

       LT_ID_BSIK TYPE LVC_T_ROID.

DATA :         O_SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,"Splitter

                O_SPLIT2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER.

DATA : O_HEADER TYPE REF TO CL_GUI_CONTAINER,   "Top Container

          O_FOOTER TYPE REF TO CL_GUI_CONTAINER,"Bottom Container

          O_BODY TYPE REF TO CL_GUI_CONTAINER,

          O_DOCUMENT TYPE REF TO CL_DD_DOCUMENT.          "Document

*Data :         o_split type ref to cl_gui_splitter_container."Splitter

DATA : O_HEADER_BSIK TYPE REF TO CL_GUI_CONTAINER,   "Top Container

          O_FOOTER_BSIK TYPE REF TO CL_GUI_CONTAINER,"Bottom Container

          O_BODY_BSIK TYPE REF TO CL_GUI_CONTAINER,

          O_DOCUMENT_BSIK TYPE REF TO CL_DD_DOCUMENT.

SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE AAA.

SELECT-OPTIONS : SO_BUKRS FOR BSID-BUKRS NO INTERVALS OBLIGATORY,

                  SO_KUNNR FOR BSID-KUNNR NO INTERVALS OBLIGATORY,

                  SO_DATE  FOR SY-DATLO DEFAULT SY-DATUM  NO INTERVALS OBLIGATORY.

PARAMETERS : P_NORM AS CHECKBOX DEFAULT 'X',

              P_SPL  AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK BLK1.

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

*       CLASS LCL_EVENT_HANDLER DEFINITION

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

*

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

CLASS LCL_EVENT_HANDLER DEFINITION.

   PUBLIC SECTION.

*

     METHODS:

       ON_CHB_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

         IMPORTING E_ROW E_COLUMN.

     METHODS:

            ON_CHK_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID "CL_SALV_EVENTS_TABLE

              IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. "ROW COLUMN.

     METHODS handle_data_changed

         FOR EVENT data_changed OF cl_gui_alv_grid

             IMPORTING er_data_changed.

*    METHODS : HANDLE_TOOLBAR

*            FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

*                IMPORTING E_OBJECT

*                          E_INTERACTIVE.

*

*    METHODS : HANDLE_USER_COMMAND

*            FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID

*                IMPORTING E_UCOMM.

ENDCLASS.                    "lcl_event_handler DEFINITION

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

*       CLASS LCL_EVENT_HANDLER_BSIK DEFINITION

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

*

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

CLASS LCL_EVENT_HANDLER_BSIK DEFINITION.

   PUBLIC SECTION.

     METHODS:

       ON_CHB_CLICK_BSIK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

         IMPORTING E_ROW E_COLUMN.

     METHODS:

            ON_CHK_CLICK_BSIK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID "CL_SALV_EVENTS_TABLE

              IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO. "ROW COLUMN.

       METHODS handle_data_changed_bsik

         FOR EVENT data_changed OF CL_GUI_ALV_GRID

                     IMPORTING er_data_changed.

ENDCLASS.                    "LCL_EVENT_HANDLER_BSIK DEFINITION

START-OF-SELECTION.

   PERFORM FETCH_DATA_CUSTOMER.

   PERFORM FETCH_DATA_VENDOR.

   CALL SCREEN 8000.

   DATA : LO_EVENT_HANDLER TYPE REF TO LCL_EVENT_HANDLER,

          LO_EVENT_HANDLER_BSIK TYPE REF TO LCL_EVENT_HANDLER_BSIK.

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

*&      Form  FETCH_DATA_CUSTOMER

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FETCH_DATA_CUSTOMER .

   REFRESH IT_BSID[].

   SELECT BUKRS

          KUNNR

          AUGDT

          SHKZG

          UMSKS

          UMSKZ

          AUGDT

          ZUONR

          GJAHR

          BELNR

          BUZEI

          BUDAT

          BLDAT

          CPUDT

          WAERS

          XBLNR

          BLART

          DMBTR

          AUGBL

          FROM BSID

          INTO CORRESPONDING FIELDS OF TABLE IT_BSID

          WHERE BUKRS IN SO_BUKRS

          AND   KUNNR IN SO_KUNNR.

   LOOP AT IT_BSID INTO WA_BSID.

     IF WA_BSID-SHKZG EQ 'H'.

       WA_BSID-DMBTR = WA_BSID-DMBTR * ( - 1 ).

       WA_BSID-AMOUNTSELECTED = WA_BSID-AMOUNTSELECTED * ( - 1 ).

       MODIFY IT_BSID FROM WA_BSID.

       CLEAR  WA_BSID.

     ENDIF.

   ENDLOOP.

   LOOP AT IT_BSID INTO WA_BSID.

     WA_BSID_TEMP-SRNO = 'Total Receivable'.

     WA_BSID_TEMP-BUKRS = WA_BSID-BUKRS.

     WA_BSID_TEMP-KUNNR = WA_BSID-KUNNR.

     WA_BSID_TEMP-AUGDT = WA_BSID-AUGDT.

     WA_BSID_TEMP-UMSKS = WA_BSID-UMSKS.

     WA_BSID_TEMP-UMSKZ = WA_BSID-UMSKZ.

     WA_BSID_TEMP-AUGDT = WA_BSID-AUGDT.

     WA_BSID_TEMP-ZUONR = WA_BSID-ZUONR.

     WA_BSID_TEMP-GJAHR = WA_BSID-GJAHR.

     WA_BSID_TEMP-BELNR = WA_BSID-BELNR.

     WA_BSID_TEMP-BUZEI = WA_BSID-BUZEI.

     WA_BSID_TEMP-BUDAT = WA_BSID-BUDAT.

     WA_BSID_TEMP-BLDAT = WA_BSID-BLDAT.

     WA_BSID_TEMP-CPUDT = WA_BSID-CPUDT.

     WA_BSID_TEMP-WAERS = WA_BSID-WAERS.

     WA_BSID_TEMP-XBLNR = WA_BSID-XBLNR.

     WA_BSID_TEMP-BLART = WA_BSID-BLART.

     WA_BSID_TEMP-DMBTR = WA_BSID-DMBTR.

     WA_BSID_TEMP-AUGBL = WA_BSID-AUGBL.

     WA_BSID_TEMP-SHKZG = WA_BSID-SHKZG.

     WA_BSID_TEMP-AMOUNTSELECTED = WA_BSID-AMOUNTSELECTED.

     APPEND WA_BSID_TEMP TO IT_BSID_TEMP.

     CLEAR  WA_BSID_TEMP.

   ENDLOOP.

   CLEAR LV_BSID.

   LOOP AT IT_BSID_TEMP INTO WA_BSID_TEMP.

     LV_BSID = LV_BSID + WA_BSID_TEMP-DMBTR.

   ENDLOOP.

ENDFORM.                    " FETCH_DATA_CUSTOMER

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

*&      Form  FETCH_DATA_VENDOR

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FETCH_DATA_VENDOR .

   IF NOT IT_BSID[] IS INITIAL.

     SELECT BUKRS

            LIFNR

            SHKZG

            UMSKS

            UMSKZ

            AUGDT

            ZUONR

            GJAHR

            BELNR

            BUZEI

            BUDAT

            BLDAT

            CPUDT

            WAERS

            XBLNR

            BLART

            DMBTR

            FROM  BSIK

            INTO CORRESPONDING FIELDS OF TABLE IT_BSIK

            FOR ALL ENTRIES IN IT_BSID

            WHERE BUKRS EQ IT_BSID-BUKRS

            AND   LIFNR EQ IT_BSID-KUNNR.

   ENDIF.

   LOOP AT IT_BSIK INTO WA_BSIK.

     IF WA_BSIK-SHKZG EQ 'H'.

       WA_BSIK-DMBTR = WA_BSIK-DMBTR * ( - 1 ).

       WA_BSIK-AMOUNTSELECTED = WA_BSIK-AMOUNTSELECTED * ( - 1 ).

       MODIFY IT_BSIK FROM WA_BSIK.

       CLEAR  WA_BSIK.

     ENDIF.

   ENDLOOP.

   LOOP AT IT_BSIK INTO WA_BSIK.

     WA_BSIK_TEMP-SRNO1 = 'Total Payable'.

     WA_BSIK_TEMP-BUKRS = WA_BSIK-BUKRS.

     WA_BSIK_TEMP-LIFNR = WA_BSIK-LIFNR.

     WA_BSIK_TEMP-AUGDT = WA_BSIK-AUGDT.

     WA_BSIK_TEMP-UMSKS = WA_BSIK-UMSKS.

     WA_BSIK_TEMP-UMSKZ = WA_BSIK-UMSKZ.

     WA_BSIK_TEMP-AUGDT = WA_BSIK-AUGDT.

     WA_BSIK_TEMP-ZUONR = WA_BSIK-ZUONR.

     WA_BSIK_TEMP-GJAHR = WA_BSIK-GJAHR.

     WA_BSIK_TEMP-BELNR = WA_BSIK-BELNR.

     WA_BSIK_TEMP-BUZEI = WA_BSIK-BUZEI.

     WA_BSIK_TEMP-BUDAT = WA_BSIK-BUDAT.

     WA_BSIK_TEMP-BLDAT = WA_BSIK-BLDAT.

     WA_BSIK_TEMP-CPUDT = WA_BSIK-CPUDT.

     WA_BSIK_TEMP-WAERS = WA_BSIK-WAERS.

     WA_BSIK_TEMP-XBLNR = WA_BSIK-XBLNR.

     WA_BSIK_TEMP-DMBTR = WA_BSIK-DMBTR.

     WA_BSIK_TEMP-AUGBL = WA_BSIK-AUGBL.

     WA_BSIK_TEMP-SHKZG = WA_BSIK-SHKZG.

     WA_BSIK_TEMP-AMOUNTSELECTED = WA_BSIK-AMOUNTSELECTED.

*    WA_BSIK_TEMP-AMOUNTSELECTED = WA_BSIK-AMOUNTSELECTED.

     APPEND WA_BSIK_TEMP TO IT_BSIK_TEMP.

     CLEAR  WA_BSIK_TEMP.

   ENDLOOP.

   CLEAR LV_BSIK.

   LOOP AT IT_BSIK_TEMP INTO WA_BSIK_TEMP.

     LV_BSIK = LV_BSIK + WA_BSIK_TEMP-DMBTR.

   ENDLOOP.

ENDFORM.                    " FETCH_DATA_VENDOR

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

*&      Module  STATUS_8000  OUTPUT

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

*       text

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

MODULE STATUS_8000 OUTPUT.

*  SET PF-STATUS 'ZAU_PF'.

*  SET TITLEBAR 'TEST_PLAN'.

   VEND = CUST = SO_KUNNR-LOW.

   CREATE OBJECT O_CC

     EXPORTING

       CONTAINER_NAME = 'MAIN_CONT'.

   IF SY-SUBRC EQ 0.

     CREATE OBJECT O_GRID

       EXPORTING

         I_PARENT          = O_CC

       EXCEPTIONS

         ERROR_CNTL_CREATE = 1

         ERROR_CNTL_INIT   = 2

         ERROR_CNTL_LINK   = 3

         ERROR_DP_CREATE   = 4

         OTHERS            = 5.

     IF SY-SUBRC EQ 0.

       PERFORM BUILD_FIELDCATALOG_BSID.

       CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

         EXPORTING

           I_STRUCTURE_NAME = 'ZTY_BSID'

         CHANGING

           CT_FIELDCAT      = LT_FIELDCAT.

       DATA : LV_TOTAL TYPE BSIK-WRBTR.

       LOOP AT LT_FIELDCAT INTO LS_FIELDCAT.

         CASE LS_FIELDCAT-FIELDNAME .

           WHEN 'BUKRS'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'KUNNR'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'UMSKS'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'UMSKZ'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'GJAHR'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'ZUONR'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'BUZEI'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

*ENDCASE.

           WHEN 'BUDAT'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'CPUDT'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'BLART'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

*ENDCASE.

           WHEN 'AUGDT'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

*ENDCASE.

           WHEN 'AUGBL'.

             LS_FIELDCAT-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'DMBTR'.

             LS_FIELDCAT-DO_SUM = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

           WHEN 'AMOUNTSELECTED'.

             LS_FIELDCAT-DO_SUM = 'X'.

             LS_FIELDCAT-EDIT = 'X'.

             MODIFY LT_FIELDCAT FROM LS_FIELDCAT.

             CLEAR  LS_FIELDCAT.

         ENDCASE.

       ENDLOOP.

       G_R_LAYO-NO_TOOLBAR = 'X'.

       G_R_LAYO-CWIDTH_OPT = 'X'.

       G_R_LAYO-SEL_MODE   = 'A'.

       G_R_LAYO-NO_TOTLINE = 'X'.

       G_R_LAYO-BOX_FNAME = 'IT_BSID-CHB'.

       LOOP AT LT_FIELDCAT INTO LS_FIELDCAT.

         IF  LS_FIELDCAT-FIELDNAME = 'CHB'.

           LS_FIELDCAT-CHECKBOX = 'X'.

           LS_FIELDCAT-EDIT  = 'X'.

           LS_FIELDCAT-HOTSPOT = 'X'.

           MODIFY LT_FIELDCAT FROM LS_FIELDCAT .

           CLEAR  LS_FIELDCAT.

         ENDIF.

       ENDLOOP.

       LOOP AT LT_FIELDCAT INTO LS_FIELDCAT.

         IF LS_FIELDCAT-FIELDNAME = 'SRNO'.

           LS_FIELDCAT-TECH = 'X'.

           LS_FIELDCAT-NO_OUT = 'X'.

           MODIFY LT_FIELDCAT FROM LS_FIELDCAT TRANSPORTING TECH NO_OUT.

         ENDIF.

         CLEAR LS_FIELDCAT.

       ENDLOOP.

       WA_SORT2-SPOS = 1.

       WA_SORT2-FIELDNAME = 'SRNO'.

       WA_SORT2-UP = 'X'.

       WA_SORT2-SUBTOT = 'X'.

       APPEND WA_SORT2 TO I_SORT2.

       IF SY-SUBRC EQ 0.

DATA : wa_params TYPE pri_params.

         CALL FUNCTION 'GET_PRINT_PARAMETERS'

     EXPORTING

       cover_page             = 'X'

       list_name              = 'X'

       no_dialog              = 'X'

     IMPORTING

       out_parameters         = wa_params

     EXCEPTIONS

       archive_info_not_found = 1

       invalid_print_params   = 2

       invalid_archive_params = 3

       OTHERS                 = 4.

   wa_print-print_ctrl-pri_params = wa_params.

         CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY

           EXPORTING

             IS_VARIANT                    = W_VARIANT

             I_SAVE                        = 'X'

             IS_LAYOUT                     = G_R_LAYO

             IS_PRINT                      = WA_PRINT

           CHANGING

             IT_OUTTAB                     = IT_BSID_TEMP[]

             IT_FIELDCATALOG               = LT_FIELDCAT

             IT_SORT                       = I_SORT2

           EXCEPTIONS

             INVALID_PARAMETER_COMBINATION = 1

             PROGRAM_ERROR                 = 2

             TOO_MANY_LINES                = 3

             OTHERS                        = 4.

NEW-PAGE PRINT OFF.

DATA : lv_user TYPE rspouser.

SELECT MAX( rqident ) INTO lv_spool FROM tsp01  WHERE rqclient = sy-mandt  AND   rqowner  = lv_user.

         CREATE OBJECT LO_EVENT_HANDLER.

         SET HANDLER LO_EVENT_HANDLER->ON_CHB_CLICK FOR O_GRID.

         SET HANDLER LO_EVENT_HANDLER->ON_CHK_CLICK FOR O_GRID.

          SET HANDLER LO_EVENT_HANDLER->handle_data_changed FOR O_GRID.

*        SET HANDLER LO_EVENT_HANDLER->HANDLE_USER_COMMAND FOR O_GRID.

       ELSE.

         CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY

           EXCEPTIONS

             FINISHED = 1

             OTHERS   = 2.

         IF SY-SUBRC <> 0.          ENDIF.

       ENDIF.

     ENDIF.

   ENDIF.

   IF SY-SUBRC EQ 0.

     W_VARIANT-REPORT = SY-REPID.

     CREATE OBJECT O_CC_BSIK

       EXPORTING

         CONTAINER_NAME = 'MAIN_CONT1'.

     CREATE OBJECT O_GRID2

       EXPORTING

         I_PARENT          = O_CC_BSIK

       EXCEPTIONS

         ERROR_CNTL_CREATE = 1

         ERROR_CNTL_INIT   = 2

         ERROR_CNTL_LINK   = 3

         ERROR_DP_CREATE   = 4

         OTHERS            = 5.

     IF SY-SUBRC EQ 0.

       PERFORM FIELDCATALOG_BSIK.

     ENDIF.

     IF SY-SUBRC EQ 0.

       CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

         EXPORTING

           I_STRUCTURE_NAME       = 'ZTY_BSIK'

         CHANGING

           CT_FIELDCAT            = LT_FIELDCAT_BSIK

         EXCEPTIONS

           INCONSISTENT_INTERFACE = 1

           PROGRAM_ERROR          = 2

           OTHERS                 = 3.

       PERFORM FIELDCATALOG_BSIK.

       W_VARIANT-REPORT = SY-REPID.

       LOOP AT LT_FIELDCAT_BSIK INTO LS_FIELDCAT_BSIK.

         CASE LS_FIELDCAT_BSIK-FIELDNAME .

           WHEN 'BUKRS'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'KUNNR'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'UMSKS'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'UMSKZ'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'GJAHR'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'ZUONR'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'BUZEI'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'BUDAT'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'CPUDT'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'BLART'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'AUGDT'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'AUGBL'.

             LS_FIELDCAT_BSIK-NO_OUT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'DMBTR'.

             LS_FIELDCAT_BSIK-DO_SUM = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

           WHEN 'AMOUNTSELECTED'.

             LS_FIELDCAT_BSIK-DO_SUM = 'X'.

             LS_FIELDCAT_BSIK-EDIT = 'X'.

             MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK.

             CLEAR  LS_FIELDCAT_BSIK.

         ENDCASE.

       ENDLOOP.

* Removing toolbar

       G_R_LAYO_BSIK-NO_TOOLBAR = 'X'.

       G_R_LAYO_BSIK-CWIDTH_OPT = 'X'.

       G_R_LAYO_BSIK-SEL_MODE   = 'A'.

       G_R_LAYO_BSIK-NO_TOTLINE   = 'X'.

       G_R_LAYO_BSIK-BOX_FNAME   = 'IT_BSIK-CHB'.

       LOOP AT LT_FIELDCAT_BSIK INTO LS_FIELDCAT_BSIK.

         IF  LS_FIELDCAT_BSIK-FIELDNAME = 'CHB'.

           LS_FIELDCAT_BSIK-CHECKBOX = 'X'.

           LS_FIELDCAT_BSIK-EDIT  = 'X'.

           LS_FIELDCAT_BSIK-HOTSPOT = 'X'.

           MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK .

           CLEAR  LS_FIELDCAT_BSIK.

         ENDIF.

       ENDLOOP.

       LOOP AT LT_FIELDCAT_BSIK INTO LS_FIELDCAT_BSIK.

         IF LS_FIELDCAT_BSIK-FIELDNAME = 'SRNO1'.

           LS_FIELDCAT_BSIK-TECH = 'X'.

           LS_FIELDCAT_BSIK-NO_OUT = 'X'.

           MODIFY LT_FIELDCAT_BSIK FROM LS_FIELDCAT_BSIK TRANSPORTING TECH NO_OUT.

         ENDIF.

         CLEAR LS_FIELDCAT_BSIK.

       ENDLOOP.

       WA_SORT3-SPOS = 1.

       WA_SORT3-FIELDNAME = 'SRNO1'.

       WA_SORT3-UP = 'X'.

       WA_SORT3-SUBTOT = 'X'.

       APPEND WA_SORT3 TO I_SORT3.

       CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

         EXPORTING

           IS_VARIANT                    = W_VARIANT_BSIK

           I_SAVE                        = 'X'

           IS_LAYOUT                     = G_R_LAYO_BSIK

         CHANGING

           IT_SORT                       = I_SORT3

           IT_OUTTAB                     = IT_BSIK_TEMP[]

           IT_FIELDCATALOG               = LT_FIELDCAT_BSIK

         EXCEPTIONS

           INVALID_PARAMETER_COMBINATION = 1

           PROGRAM_ERROR                 = 2

           TOO_MANY_LINES                = 3

           OTHERS                        = 4.

       CREATE OBJECT LO_EVENT_HANDLER_BSIK.

       SET HANDLER LO_EVENT_HANDLER_BSIK->ON_CHB_CLICK_BSIK FOR O_GRID2.

       SET HANDLER LO_EVENT_HANDLER_BSIK->ON_CHK_CLICK_BSIK FOR O_GRID2.

       SET HANDLER LO_EVENT_HANDLER_BSIK->handle_data_changed_BSIK FOR O_GRID2.

     ELSE.

       CALL METHOD O_GRID2->REFRESH_TABLE_DISPLAY

         EXCEPTIONS

           FINISHED = 1

           OTHERS   = 2.

     ENDIF.

   ENDIF.

ENDMODULE.                 " STATUS_8000  OUTPUT

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

*&      Form  BUILD_FIELDCATALOG_BSID

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM BUILD_FIELDCATALOG_BSID .

   DATA: LS_FIELDCAT TYPE LVC_S_FCAT,

               LT_FIELDCAT TYPE STANDARD TABLE OF LVC_S_FCAT.

   LS_FIELDCAT-COL_POS    = '1'.

   LS_FIELDCAT-FIELDNAME  = 'SHKZG'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = ' Debit Credit Indicator'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-FIELDNAME  = 'BELNR'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = ' Document Number'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-FIELDNAME  = 'BLDAT'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = 'Document Date '.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-FIELDNAME  = 'XBLNR'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = 'Ref'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-FIELDNAME  = 'WAERS'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = 'Currency '.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-FIELDNAME  = 'DMBTR'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = 'Amount'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-COL_POS    = '5'.

   LS_FIELDCAT-FIELDNAME  = 'CHB'.    " Fieldname in the data table

   LS_FIELDCAT-TABNAME    = 'IT_BSID'.

   LS_FIELDCAT-SELTEXT  = 'Checkbox'.

   LS_FIELDCAT-HOTSPOT    = 'X'.

   LS_FIELDCAT-EDIT  = 'X'.

   LS_FIELDCAT-CHECKBOX = 'X'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

   LS_FIELDCAT-COL_POS    = '6'.

   LS_FIELDCAT-FIELDNAME  = 'AMOUNTSELECTED'.    " Fieldname in the data table

   LS_FIELDCAT-SELTEXT  = 'Amountselect'.

   LS_FIELDCAT-EDIT  = 'X'.

   LS_FIELDCAT-COL_OPT  = 'X'.

   APPEND LS_FIELDCAT  TO LT_FIELDCAT.

   CLEAR   LS_FIELDCAT.

ENDFORM.                    " BUILD_FIELDCATALOG_BSID

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

*&      Form  FIELDCATALOG_BSIK

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FIELDCATALOG_BSIK .

   DATA : LS_FIELDCAT_BSIK TYPE LVC_S_FCAT,

               LT_FIELDCAT_BSIK TYPE STANDARD TABLE OF LVC_S_FCAT.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BUKRS'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Company code'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'KUNNR'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Customer Number'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'UMSKZ'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Special G/L Transaction Type'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'UMSKZ'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Special G/L Indicator'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'AUGBL'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Document Number of the Clearing Document'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'ZUONR'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Assignment Number'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'GJAHR'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Fiscal Year'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BELNR'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Accounting Document Number'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BUZEI'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Number of Line Item Within Accounting Document'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BUDAT'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Posting Date in the Document'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BLDAT'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Document Date in Document'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'CPUDT'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Day On Which Accounting Document Was Entered'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'WAERS'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Currency Key'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'XBLNR'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Reference Document Number'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

   LS_FIELDCAT_BSIK-FIELDNAME  = 'BLART'.    " Fieldname in the data table

   LS_FIELDCAT_BSIK-SELTEXT  = 'Document Type'.

*wa_fieldcat-colwidth_optimize = 'X'.

   APPEND LS_FIELDCAT_BSIK  TO LT_FIELDCAT_BSIK.

   CLEAR   LS_FIELDCAT_BSIK.

ENDFORM.                    " FIELDCATALOG_BSIK

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

*&      Module  USER_COMMAND_8000  INPUT

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

*       text

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

MODULE USER_COMMAND_8000 INPUT.

   DATA LV_UCOMM TYPE SY-UCOMM.

   LV_UCOMM = SY-UCOMM.

DATA : C_X4(1) TYPE C.

   CALL METHOD O_GRID->CHECK_CHANGED_DATA.

   CASE LV_UCOMM.

     WHEN 'CANCEl' OR 'EXIT'.

       PERFORM FREE_OBJECTS.

       LEAVE PROGRAM.

     WHEN 'CALC'.

       CLEAR: TOT1, TOT2.

       LOOP AT IT_BSID_TEMP INTO WA_BSID_TEMP.

         TOT1 = TOT1 + WA_BSID_TEMP-DMBTR.

         TOT2 = TOT2 + WA_BSID_TEMP-AMOUNTSELECTED.

       ENDLOOP.

       LOOP AT IT_BSIK_TEMP INTO WA_BSIK_TEMP.

         TOT1 = TOT1 + WA_BSIK_TEMP-DMBTR.

         TOT2 = TOT2 + WA_BSIK_TEMP-AMOUNTSELECTED.

       ENDLOOP.

       WHEN 'DOWN'.

CALL FUNCTION 'POPUP_TO_CONFIRM'

             EXPORTING

               TEXT_QUESTION = 'Would u like to download in PDF'

               TEXT_BUTTON_1 = 'YES'

               TEXT_BUTTON_2 = 'NO'

             IMPORTING

               ANSWER        = C_X4.

    IF C_X4 = '1'.

*     LEAVE TO LIST-PROCESSING.

*     PARAMETERS : P_MTART LIKE bsid-belnr.

       PERFORM CONVERT_PDF.

     ELSE.

MESSAGE 'Output in excel' TYPE 'I'.

PERFORM path_directory.

perform download_data.

*PERFORM CONVERT_EXCEL.

ENDIF.

     WHEN 'BACK'.

       PERFORM FREE_OBJECTS.

       SET SCREEN '0'.

       LEAVE SCREEN.

   ENDCASE.

   CALL METHOD O_GRID2->CHECK_CHANGED_DATA.

ENDMODULE.                 " USER_COMMAND_8000  INPUT

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

*&      Form  FREE_OBJECTS

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

*       text

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

*  -->  p1        text

*  <--  p2        text

*---------ENDCASE.

*ENDMODULE.                 " USER_COMMAND_8000  INPUT

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

*&      Form  free_objects

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

*       text

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

FORM FREE_OBJECTS.

   CALL METHOD O_GRID->FREE

     EXCEPTIONS

       CNTL_ERROR        = 1

       CNTL_SYSTEM_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 METHOD O_CC->FREE

     EXCEPTIONS

       CNTL_ERROR        = 1

       CNTL_SYSTEM_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 METHOD O_GRID2->FREE

     EXCEPTIONS

       CNTL_ERROR        = 1

       CNTL_SYSTEM_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 METHOD O_CC_BSIK->FREE

     EXCEPTIONS

       CNTL_ERROR        = 1

       CNTL_SYSTEM_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.

ENDFORM.                    " FREE_OBJECTS

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

*&      Form  CONVERT_PDF

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM CONVERT_PDF.

*TYPES: BEGIN OF TY_TSP01,

*      RQIDENT   TYPE TSP01-RQIDENT,           " spool number

*      RQ2NAME TYPE TSP01-RQ2NAME,           " Spool request: Suffix 2

*      RQCRETIME TYPE TSP01-RQCRETIME,         " User name

*      END OF TY_TSP01.

*DATA: LV_JOBCNT TYPE TBTCJOB-JOBCOUNT,         " job number

*      LV_JOBNAME TYPE TBTCJOB-JOBNAME.         " job name

*DATA: LV_LEN TYPE I,

*    LS_PARAM TYPE RSPARAMS,                  " selection work area

*    LS_TSP01 TYPE TY_TSP01,                  " Spool Requests work area

*    LT_TSP01 TYPE STANDARD TABLE OF TY_TSP01, " Spool Requests internal table

*    LT_PARAM TYPE RSPARAMS_TT.                " Selection table

*DATA:  LV_RQ2NAME TYPE TSP01-RQ2NAME.           " Spool request

*DATA: LV_TMP(14) TYPE C,                       " temp

*    LV_STRING TYPE STRING,                   " store program name

*    LV_TEMP TYPE TSP01-RQ2NAME,              " Spool request

*    LV_SPOOL TYPE TSP01-RQIDENT.             " spool number

*DATA: LV_JOB    TYPE TBTCV-FIN.                " Job status

*DATA : LV_RQDEST TYPE TSP01-RQDEST VALUE 'LP01',

*      LV_LINSZ TYPE SYLINSZ VALUE '9999999'.

*PARAMETERS : P_MTART LIKE bsid-kunnr.

*selection Screen

   IF  NOT SY-SPONO IS INITIAL.

     LV_SPOOL SY-SPONO.

*    CASE SY-UCOMM.

*      WHEN 'DOWNLOAD'.

         CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

           EXPORTING

             SRC_SPOOLID              = LV_SPOOL

             NO_DIALOG                = ABAP_FALSE

           IMPORTING

             PDF_BYTECOUNT            = PDF_BYTECOUNT

             PDF_SPOOLID              = PDF_SPOOLID

             BTC_JOBNAME              = BTC_JOBNAME

             BTC_JOBCOUNT             = BTC_JOBCOUNT

           TABLES

             PDF                      = GT_PDF

           EXCEPTIONS

             ERR_NO_ABAP_SPOOLJOB     = 1

             ERR_NO_SPOOLJOB          = 2

             ERR_NO_PERMISSION        = 3

             ERR_CONV_NOT_POSSIBLE    = 4

             ERR_BAD_DESTDEVICE       = 5

             USER_CANCELLED           = 6

             ERR_SPOOLERROR           = 7

             ERR_TEMSEERROR           = 8

             ERR_BTCJOB_OPEN_FAILED   = 9

             ERR_BTCJOB_SUBMIT_FAILED = 10

             ERR_BTCJOB_CLOSE_FAILED  = 11.

         IF   GT_PDF IS NOT INITIAL.

           P_FILE = 'D:\Users\mriyaj\Desktop\DOWN'.

           CALL FUNCTION 'GUI_DOWNLOAD'

             EXPORTING

               FILENAME = P_FILE

               FILETYPE = 'BIN'

             TABLES

               DATA_TAB = GT_PDF.

           IF SY-SUBRC = 0.

             MESSAGE 'File Generated Successfully' TYPE 'S'.

           ENDIF.

         ENDIF.

*    ENDCASE.

   ENDIF.

*LV_JOBNAME = 'ZALV2PDF'. "Background job name

*      CALL FUNCTION 'JOB_OPEN' "open a job

*        EXPORTING

*          JOBNAME          = LV_JOBNAME

*        IMPORTING

*          JOBCOUNT         = LV_JOBCNT

*        EXCEPTIONS

*          CANT_CREATE_JOB  = 1

*          INVALID_JOB_DATA = 2

*          JOBNAME_MISSING  = 3

*          OTHERS           = 4.

*      IF SY-SUBRC EQ 0.

*        SUBMIT (SY-REPID) "submit the same program

**        WITH P_MTART = P_MTART

*          TO SAP-SPOOL  DESTINATION LV_RQDEST

*          LINE-SIZE LV_LINSZ

*          IMMEDIATELY 'X'

*          KEEP IN SPOOL 'X'

*          USER SY-UNAME VIA JOB LV_JOBNAME NUMBER LV_JOBCNT

*          WITHOUT SPOOL DYNPRO

*          WITH SELECTION-TABLE LT_PARAM

*          AND RETURN.

*

*        CALL FUNCTION 'JOB_CLOSE' "job close

*          EXPORTING

*            JOBCOUNT             = LV_JOBCNT

*            JOBNAME              = LV_JOBNAME

*            STRTIMMED            = 'X'

*          EXCEPTIONS

*            CANT_START_IMMEDIATE = 1

*            INVALID_STARTDATE    = 2

*            JOBNAME_MISSING      = 3

*            JOB_CLOSE_FAILED     = 4

*            JOB_NOSTEPS          = 5

*            JOB_NOTEX            = 6

*            LOCK_FAILED          = 7

*            INVALID_TARGET       = 8

*            OTHERS               = 9.

*        IF SY-SUBRC <> 0.

*          RAISE JOB_CANNOT_BE_CLOSED.                    " Raise exception

*        ENDIF.

*      ELSE.

*        RAISE JOB_CANNOT_BE_SUBMITTED.

*      ENDIF.

************ confirm job status if finished

*

*      DO 120 TIMES.

*        CALL FUNCTION 'BDL_READ_JOB_STATUS' "get job status

*          EXPORTING

*            JOBNAME       = LV_JOBNAME

*            JOBNUMBER     = LV_JOBCNT

*          IMPORTING

*            JOBSTATUS     = LV_JOB

*          EXCEPTIONS

*            JOB_NOT_FOUND = 1

*            OTHERS        = 2.

*        IF LV_JOB NE 'F'. "job finished

*          WAIT UP TO 1 SECONDS.

*          CONTINUE.

*        ELSE.

*          EXIT.

*        ENDIF.

*      ENDDO.

***calculate report name in Spool table

*      IF LV_JOB EQ 'F'. "job finished

*        LV_LEN = STRLEN( SY-REPID ) .

*        IF LV_LEN >= 9 .

*          CONCATENATE SY-REPID+0(9)

*                      SY-UNAME+0(3) INTO LV_RQ2NAME .

*        ELSE.

*          LV_LEN = 9 - LV_LEN.

*          DO LV_LEN TIMES .

*            CONCATENATE LV_TEMP '_' INTO LV_TEMP .

*          ENDDO.

*          CONCATENATE SY-REPID LV_TEMP

*                      SY-UNAME INTO LV_RQ2NAME .

*        ENDIF.

*

**Get spool request from SPOOL table TSP01

*        REFRESH LT_TSP01.

*        SELECT RQIDENT RQ2NAME RQCRETIME FROM TSP01 INTO TABLE LT_TSP01

*                WHERE RQ2NAME = LV_RQ2NAME AND RQOWNER = SY-UNAME .

**sort table to find latest spool no

*        SORT  LT_TSP01 BY RQCRETIME DESCENDING .

**read table to find latest spool no

*        CLEAR LS_TSP01.

*        READ TABLE LT_TSP01 INTO LS_TSP01 INDEX 1.

**get user desktop

*        CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY

*          CHANGING

*            DESKTOP_DIRECTORY    = LV_STRING

*          EXCEPTIONS

*            CNTL_ERROR           = 1

*            ERROR_NO_GUI         = 2

*            NOT_SUPPORTED_BY_GUI = 3

*            OTHERS               = 4.

*        IF SY-SUBRC <> 0.

** Implement suitable error handling here

*        ENDIF.

*        CALL METHOD CL_GUI_CFW=>UPDATE_VIEW.

*        CONCATENATE LV_STRING SY-UZEIT INTO LV_STRING.

*        REFRESH LT_PARAM.

**Prepare selection table for PDF download

*        LS_PARAM-SELNAME = 'SPOOLNO'.

*        LS_PARAM-SIGN    = 'I'.

*        LS_PARAM-OPTION  = 'EQ'.

*        LS_PARAM-LOW     = LS_TSP01-RQIDENT.

*        LS_PARAM-HIGH    = ''.

*        APPEND LS_PARAM TO LT_PARAM.

*

*        LS_PARAM-SELNAME = 'P_FILE'.

*        LS_PARAM-SIGN    = 'I'.

*        LS_PARAM-OPTION  = 'EQ'.

*        LS_PARAM-LOW     = LV_STRING.

*        LS_PARAM-HIGH    = ''.

*        APPEND LS_PARAM TO LT_PARAM.

** Submit to PDF converted and download

*        SUBMIT RSTXPDFT4 WITH SELECTION-TABLE LT_PARAM

*        AND RETURN.

*        IF SY-SUBRC <> 0.

*

*        MESSAGE  'PDF convert not possible' TYPE 'I'.

*        ENDIF.

*      ELSE.

*        MESSAGE  'PDF Can not be downloaded, you have selected huge data. Reduce data and try again' TYPE 'I'.

*      ENDIF.

**  ENDCASE.

ENDFORM.                    "user command

*ENDFORM.                    " CONVERT_PDF

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

*&      Form  USER_COMMAND

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

*       text

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

*      -->P_E_UCOMM  text

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

*FORM USER_COMMAND  USING    P_E_UCOMM.

*  DATA :LI_ROWS TYPE STANDARD TABLE OF LVC_S_ROW,

*        LV_LN TYPE I."No. of rows selected

*DATA : C_X4(1) TYPE C.

**DATA : P_E_UCOMM LIKE SY-UCOMM.

*  CASE P_E_UCOMM.

*    WHEN 'DOWNLOAD'.

*      CALL FUNCTION 'POPUP_TO_CONFIRM'

*            EXPORTING

*              TEXT_QUESTION = 'Would u like to download in PDF'

*              TEXT_BUTTON_1 = 'YES'

*              TEXT_BUTTON_2 = 'NO'

*            IMPORTING

*              ANSWER        = C_X4.

*   IF C_X4 = '1'.

*      PERFORM CONVERT_PDF.

*    ELSE.

*MESSAGE 'Output in excel' TYPE 'I'.

*PERFORM path_directory.

*perform download_data.

**PERFORM CONVERT_EXCEL.

*ENDIF.

*  ENDCASE.

*

*ENDFORM.                    " USER_COMMAND

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

*&      Form  TOOLBAR

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

*FORM TOOLBAR .

*

*  CLEAR W_TOOLBAR.

*

*  MOVE : 'DOWNLOAD' TO W_TOOLBAR-FUNCTION,"Function code

*        ''  TO W_TOOLBAR-ICON,"Name of an Icon

*        ''  TO W_TOOLBAR-QUICKINFO,"Quickinfo for an icon

*        '' TO W_TOOLBAR-BUTN_TYPE,"Toolbar button type

*        '' TO W_TOOLBAR-DISABLED,"Disabled

*        'DOWNLOAD' TO W_TOOLBAR-TEXT."Text

*

*ENDFORM.                    " TOOLBAR

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

*       CLASS LCL_EVENT_HANDLER_bsik IMPLEMENTATION

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

*

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

CLASS LCL_EVENT_HANDLER_BSIK IMPLEMENTATION.

   METHOD:

         ON_CHB_CLICK_BSIK .

DATA : C_X4(1) TYPE C.

     READ TABLE IT_BSIK  INDEX E_ROW-INDEX INTO WA_BSIK.

     IF SY-SUBRC EQ 0.

      CALL FUNCTION 'POPUP_TO_CONFIRM'

             EXPORTING

               TEXT_QUESTION = 'Would u like to go to tcode'

               TEXT_BUTTON_1 = 'YES'

               TEXT_BUTTON_2 = 'NO'

             IMPORTING

               ANSWER        = C_X4.

          IF C_X4 = '1'.

       SET PARAMETER ID 'LIF' FIELD WA_BSIK-LIFNR.

       CALL TRANSACTION 'FBL1N' AND SKIP FIRST SCREEN.

       ELSE.

         EXIT.

         ENDIF.

     ENDIF.

   ENDMETHOD.                    "ON_CHB_CLICK_bsik

   METHODON_CHK_CLICK_BSIK.

     DATA : C_X_BSIK(1) TYPE C.

     DATA : LV_VALID_BSIK TYPE C.

     DATA : r_ucomm1 TYPE sy-ucomm.

     DATA TABIX1(10)." TYPE SYTABIX.

     FIELD-SYMBOLS: <LFA_DATA_BSIK> LIKE LINE OF IT_BSIK.

     DATA : p_char1(1) TYPE c.

     LOOP AT IT_BSIK ASSIGNING <LFA_DATA_BSIK>.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

         EXPORTING

           INPUT  = E_ROW_ID

         IMPORTING

           OUTPUT = TABIX1.

       IF  SY-TABIX EQ TABIX1.

         IF <LFA_DATA_BSIK>-CHB IS INITIAL.

           CALL FUNCTION 'POPUP_TO_CONFIRM'

             EXPORTING

               TEXT_QUESTION = 'Would u like to enter amount'

               TEXT_BUTTON_1 = 'YES'

               TEXT_BUTTON_2 = 'NO'

             IMPORTING

               ANSWER        = C_X_BSIK.

           IF C_X_BSIK = '1'.

             <LFA_DATA_BSIK>-CHB = 'X'.

             CALL METHOD LO_EVENT_HANDLER_BSIK->HANDLE_DATA_CHANGED_BSIK.

           ELSEIF C_X_BSIK = '2'.

             <LFA_DATA_BSIK>-AMOUNTSELECTED = <LFA_DATA_BSIK>-DMBTR.

             MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

           ENDIF.

         ELSE.

*          MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

           CLEAR <LFA_DATA_BSIK>-CHB.

         ENDIF.

*          MODIFY IT_BSIK FROM <LFA_DATA_BSIK>.

       ENDIF.

     ENDLOOP.

     CLEAR: IT_BSIK_TEMP[].

     LOOP AT IT_BSIK INTO WA_BSIK.

       MOVE-CORRESPONDING WA_BSIK TO WA_BSIK_TEMP.

       APPEND WA_BSIK_TEMP TO IT_BSIK_TEMP.

     ENDLOOP.

*    CLEAR WA_BSIK_TEMP.

     IF O_GRID2 IS NOT INITIAL.

CALL METHOD O_GRID2->REGISTER_EDIT_EVENT

EXPORTING

I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED

EXCEPTIONS

ERROR = 1

OTHERS = 2.

       O_GRID2->REFRESH_TABLE_DISPLAY( ).

     ENDIF.

*ENDLOOP.

   ENDMETHOD.                    "ON_CHB_CLICK

   METHOD HANDLE_DATA_CHANGED_BSIK.

DATA : LV_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

*CREATE OBJECT LV_DATA_CHANGED.

  PERFORM HANDLE_DATA_CHANGES_BSIK USING ER_DATA_CHANGED .

  ENDMETHOD.

ENDCLASS.                    "LCL_EVENT_HANDLER_bsik IMPLEMENTATION

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

*       CLASS LCL_EVENT_HANDLER IMPLEMENTATION

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

*

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

CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

   METHOD:

         ON_CHB_CLICK .

   DATA : C_X3(1) TYPE C.

     READ TABLE IT_BSID  INDEX E_ROW INTO WA_BSID .

     IF SY-SUBRC EQ 0.

   CALL FUNCTION 'POPUP_TO_CONFIRM'

             EXPORTING

               TEXT_QUESTION = 'Would u like to go to tcode'

               TEXT_BUTTON_1 = 'YES'

               TEXT_BUTTON_2 = 'NO'

             IMPORTING

               ANSWER        = C_X3.

          IF C_X3 = '1'.

       SET PARAMETER ID 'KUN' FIELD WA_BSID-KUNNR.

       CALL TRANSACTION 'FBL5N' AND SKIP FIRST SCREEN.

          ELSE.

          EXIT .

          ENDIF.

     ENDIF.

   ENDMETHOD.                    "ON_CHB_CLICK

   METHODON_CHK_CLICK.

     DATA : C_X(1) TYPE C.

     DATA : LV_VALID TYPE C.

     DATA TABIX(10).

     DATA : R_UCOMM LIKE SY-UCOMM.

     DATA : p_char(1) TYPE c.

     FIELD-SYMBOLS: <LFA_DATA> LIKE LINE OF IT_BSID.

     LOOP AT  IT_BSID ASSIGNING <LFA_DATA>.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

         EXPORTING

           INPUT  = E_ROW_ID

         IMPORTING

           OUTPUT = TABIX.

       IF  SY-TABIX EQ TABIX.

         IF <LFA_DATA>-CHB IS INITIAL.

           CALL FUNCTION 'POPUP_TO_CONFIRM'

             EXPORTING

               TEXT_QUESTION = 'Would u like to enter amount'

               TEXT_BUTTON_1 = 'YES'

               TEXT_BUTTON_2 = 'NO'

             IMPORTING

               ANSWER        = C_X.

           IF C_X = '1'.

             <LFA_DATA>-CHB = 'X'.

             CREATE OBJECT LO_EVENT_HANDLER.

                     CALL METHOD lo_event_handler->handle_data_changed.

*            CALL METHOD o_grid->refresh_table_display.

*            CALL METHOD o_grid->check_changed_data.

*            MODIFY it_bsid FROM <LFA_DATA>.

*            CLEAR <LFA_DATA>.

*            METHOD: handle_data_changed.

*               DATA: lv_changed TYPE lvc_s_modi.

*

*    LOOP AT er_data_changed->mt_good_cells INTO lv_changed

*      WHERE fieldname = 'AMOUNTSELECTED'.

*

*      READ TABLE it_bsid INTO <lfa_data> INDEX lv_changed-row_id.

*

*      IF sy-subrc = 0.

*        MOVE lv_changed-value TO <LFA_DATA>-amountselected.

*        MODIFY it_bsid FROM <LFA_DATA> INDEX lv_changed-row_id.

*        CLEAR <LFA_DATA>.

*      ENDIF.

*      ENDIF.

*      ENDIF.

*    ENDLOOP.

*  ENDMETHOD.

                      ELSEIF C_X = '2'.

             <LFA_DATA>-AMOUNTSELECTED = <LFA_DATA>-DMBTR.

             MODIFY IT_BSID FROM <LFA_DATA> .

           ENDIF.

         ELSE.

           CLEAR <LFA_DATA>-CHB.

         ENDIF.

*        BREAK-POINT.

*        MODIFY IT_BSID FROM <LFA_DATA>.

       ENDIF.

ENDLOOP.

     CLEAR: IT_BSID_TEMP[].

     LOOP AT IT_BSID INTO WA_BSID.

       MOVE-CORRESPONDING WA_BSID TO WA_BSID_TEMP.

       APPEND WA_BSID_TEMP TO IT_BSID_TEMP.

     ENDLOOP.

     IF O_GRID IS NOT INITIAL.

CALL METHOD O_GRID->REGISTER_EDIT_EVENT

EXPORTING

I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED

EXCEPTIONS

ERROR = 1

OTHERS = 2.

*IF SY-SUBRC EQ 0.

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

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

*ENDIF.

       O_GRID->REFRESH_TABLE_DISPLAY( ).

     ENDIF.

*ENDLOOP.

   ENDMETHOD.                    "ON_CHB_CLICK

*  METHOD HANDLE_TOOLBAR.

** This method handles the user interaction with the tool bar.

*    PERFORM TOOLBAR.

*    APPEND W_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

*  ENDMETHOD.                    "handle_toolbar

*  METHOD HANDLE_USER_COMMAND.

*    PERFORM USER_COMMAND USING E_UCOMM.

*  ENDMETHOD.                    "handle_user_command

  METHOD HANDLE_DATA_CHANGED.

PERFORM HANDLE_DATA_CHANGED USING ER_DATA_CHANGED .

*                DATA: lv_changed TYPE lvc_s_modi.

* FIELD-SYMBOLS : <LFA_DATA_BSID> LIKE LINE OF it_bsid.

*    LOOP AT er_data_changed->mt_good_cells INTO lv_changed

*      WHERE fieldname = 'AMOUNTSELECTED'.

*

*      READ TABLE it_bsid INTO <lfa_data_bsid> INDEX lv_changed-row_id.

*

*      IF sy-subrc = 0.

*        MOVE lv_changed-value TO <LFA_DATA_bsid>-amountselected.

*        MODIFY it_bsid FROM <LFA_DATA_bsid> INDEX lv_changed-row_id.

*        CLEAR <LFA_DATA_bsid>.

*      ENDIF.

***      ENDIF.

**      ENDIF.

*    ENDLOOP.

   ENDMETHOD.

ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION

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

*&      Form  CONVERT_EXCEL

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM CONVERT_EXCEL .

*DATA : l_tabname TYPE slis_tabname.

*call function 'LVC_TRANSFER_TO_KKBLO'

*    exporting

*      it_fieldcat_lvc   = lt_fieldcat

*       is_layout_lvc     = m_cl_variant->ms_layout

*      is_tech_complete  = ' '

*    importing

*      es_layout_kkblo   = ls_layout

*      et_fieldcat_kkblo = lt_fieldcat.

*

*loop at lt_fieldcat into lt_fieldcat_wa.

*    clear lt_fieldcat_wa-tech_complete.

*    if lt_fieldcat_wa-tabname is initial.

*      lt_fieldcat_wa-tabname = '1'.

*      modify lt_fieldcat from lt_fieldcat_wa.

*    endif.

*    l_tabname = lt_fieldcat_wa-tabname.

*  endloop.

*

*call function 'ALV_XXL_CALL'

*    exporting

*      i_tabname           = l_tabname

*      is_layout           = ls_layout

*      it_fieldcat         = lt_fieldcat

*      i_title             = sy-title

*    tables

*      it_outtab           = <dyn_table>

*    exceptions

*      fatal_error         = 1

*      no_display_possible = 2

*      others              = 3.

*  if sy-subrc <> 0.

*    message id sy-msgid type 'S' number sy-msgno

*            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

*  endif.

ENDFORM.                    " CONVERT_EXCEL

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

*&      Form  HANDLE_DATA_CHANGED

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

*       text

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

*      -->P_ER_DATA_CHANGED  text

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

FORM HANDLE_DATA_CHANGED  USING    P_ER_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

DATA: lv_changed TYPE lvc_s_modi.

  FIELD-SYMBOLS : <LFA_DATA_BSID> LIKE LINE OF it_bsid.

  IF p_er_data_changed IS NOT INITIAL.

     LOOP AT p_er_data_changed->mt_good_cells INTO lv_changed

       WHERE fieldname = 'AMOUNTSELECTED'.

       LOOP AT it_bsid ASSIGNING <LFA_DATA_BSID>.

       READ TABLE it_bsid INTO <lfa_data_bsid> INDEX lv_changed-row_id.

       IF sy-subrc = 0.

         MOVE lv_changed-value TO <LFA_DATA_bsid>-amountselected.

         MODIFY it_bsid FROM <LFA_DATA_bsid> INDEX lv_changed-row_id TRANSPORTING AMOUNTSELECTED.

         CLEAR <LFA_DATA_bsid>-amountselected.

       ENDIF.

*      CLEAR <LFA_DATA_bsid>-amountselected.

       ENDLOOP.

**      ENDIF.

*      ENDIF.

     ENDLOOP.

ENDIF.

ENDFORM.                    " HANDLE_DATA_CHANGED

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

*&      Form  HANDLE_DATA_CHANGED_BSIK

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

*       text

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

*      -->P_ER_DATA_CHANGED  text

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

*FORM HANDLE_DATA_CHANGED_BSIK  USING    P_ER_DATA_CHANGED_BSIK .

*DATA: lv_changed_BSIK TYPE lvc_s_modi.

* FIELD-SYMBOLS : <LFA_DATA_BSIK2> LIKE LINE OF it_bsiK.

**CREATE OBJECT P_ER_DATA_CHANGED.

* IF P_ER_DATA_CHANGED_BSIK IS NOT INITIAL.

*    LOOP AT P_ER_DATA_CHANGED_BSIK->mt_good_cells INTO lv_changed_BSIK

*      WHERE fieldname = 'AMOUNTSELECTED'.

*      LOOP AT it_bsiK ASSIGNING <LFA_DATA_BSIK2>.

*      READ TABLE it_bsiK INTO <lfa_data_bsiK2> INDEX lv_changed_BSIK-row_id.

*

*      IF sy-subrc = 0.

*        MOVE lv_changed_BSIK-value TO <LFA_DATA_bsiK2>-amountselected.

*        MODIFY it_bsiK FROM <LFA_DATA_bsiK2> INDEX lv_changed_BSIK-row_id TRANSPORTING AMOUNTSELECTED.

*        CLEAR <LFA_DATA_bsiK2>.

*      ENDIF.

*      ENDLOOP.

***      ENDIF.

**      ENDIF.

*    ENDLOOP.

*ENDIF.

*

*

*ENDFORM.                    " HANDLE_DATA_CHANGED_BSIK

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

*&      Form  HANDLE_DATA_CHANGES_BSIK

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

*       text

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

*      -->P_LV_DATA_CHANGED  text

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

FORM HANDLE_DATA_CHANGES_BSIK  USING    P_ER_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

DATA: lv_changed_BSIK TYPE lvc_s_modi.

  FIELD-SYMBOLS : <LFA_DATA_BSIK2> LIKE LINE OF it_bsiK.

*CREATE OBJECT P_ER_DATA_CHANGED.

  IF P_ER_DATA_CHANGED IS NOT INITIAL.

     LOOP AT P_ER_DATA_CHANGED->mt_good_cells INTO lv_changed_BSIK

       WHERE fieldname = 'AMOUNTSELECTED'.

       LOOP AT it_bsiK ASSIGNING <LFA_DATA_BSIK2>.

       READ TABLE it_bsiK INTO <lfa_data_bsiK2> INDEX lv_changed_BSIK-row_id.

       IF sy-subrc = 0.

         MOVE lv_changed_BSIK-value TO <LFA_DATA_bsiK2>-amountselected.

         MODIFY it_bsiK FROM <LFA_DATA_bsiK2> INDEX lv_changed_BSIK-row_id TRANSPORTING AMOUNTSELECTED.

*        CLEAR <LFA_DATA_bsiK2>-amountselected.

       ENDIF.

*      CLEAR <LFA_DATA_bsiK2>-amountselected.

       ENDLOOP.

**      ENDIF.

*      ENDIF.

     ENDLOOP.

ENDIF.

ENDFORM.                    " HANDLE_DATA_CHANGES_BSIK

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

*&      Form  PATH_DIRECTORY

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM PATH_DIRECTORY .

DATA : gv_file TYPE string.

CALL METHOD cl_gui_frontend_services=>directory_browse

EXPORTING

WINDOW_TITLE = 'SELECT THE PATH'

INITIAL_FOLDER = 'C:/'

CHANGING

selected_folder = gv_file

EXCEPTIONS

CNTL_ERROR = 1

ERROR_NO_GUI = 2

NOT_SUPPORTED_BY_GUI = 3

others = 4

.

*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 METHOD cl_gui_cfw=>flush

EXCEPTIONS

CNTL_SYSTEM_ERROR = 1

CNTL_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.

*p_file = gv_file.

ENDFORM.                    " PATH_DIRECTORY

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

*&      Form  DOWNLOAD_DATA

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM DOWNLOAD_DATA .

DATA : gv_file TYPE string.

DATA : gv_file1 TYPE string.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

*BIN_FILESIZE =

filename = gv_file

FILETYPE = 'ASC'

APPEND = ' '

WRITE_FIELD_SEPARATOR = '~'

HEADER = '00'

TRUNC_TRAILING_BLANKS = ' '

WRITE_LF = 'X'

COL_SELECT = ' '

COL_SELECT_MASK = ' '

DAT_MODE = ' '

*IMPORTING

*FILELENGTH =

tables

data_tab = it_bsid_temp

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22

.

*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. " down

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

*BIN_FILESIZE =

filename = gv_file1

FILETYPE = 'ASC'

APPEND = ' '

WRITE_FIELD_SEPARATOR = '~'

HEADER = '00'

TRUNC_TRAILING_BLANKS = ' '

WRITE_LF = 'X'

COL_SELECT = ' '

COL_SELECT_MASK = ' '

DAT_MODE = ' '

*IMPORTING

*FILELENGTH =

tables

data_tab = it_bsik_temp

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22

.

*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.                    " DOWNLOAD_DATA

Read only

jdloranger
Participant
0 Likes
2,964


Saurav,

first of all, if you place a break-point in the subroutine FORM HANDLE_DATA_CHANGES_BSIK, does it get triggered in your process?

In order to trigger that event you need to call O_GRID2>CHECK_CHANGED_DATA from an appropriate place in your code.  I cannot tell you where that should be, you know your process better than me.

You might also want to call the following after you set the event handlers for both of your grids...

    o_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_enter ).
    o_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_modified ).

These will also trigger the on data change event.

A second thing I've noticed.  Why are you looping on the BSIK table then reading the same table in the loop?  And into the same field symbol?

If your aim is to change the value in the table it_bsik, then you can do that by simply changing the value in the field symbol, after you have read the table, using the row_id.  You don't need to use the modify statement when using FS.  It seems very confusing to me.

I think you really need to spend more time stepping through/debugging the code.  Trust me when I say that you can learn a lot about how the code behaves when you do this.

Regards,

Justin