2015 Jul 02 5:36 PM
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
2015 Jul 06 7:51 PM
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
2015 Jul 02 9:43 PM
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
2015 Jul 03 8:22 AM
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
2015 Jul 06 1:48 PM
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
2015 Jul 06 4:55 PM
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
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 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
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'.
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
2015 Jul 06 7:51 PM
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