REPORT ZOOPS_EVENT_REPORT NO STANDARD PAGE HEADING.
**********Structure Declaration.
TYPES : BEGIN OF TY_EKKO,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
BSTYP TYPE EBSTYP,
BSART TYPE ESART,
LIFNR TYPE LIFNR,
END OF TY_EKKO,
BEGIN OF TY_EKPO,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
WERKS TYPE EWERK,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
NETWR TYPE BWERT,
END OF TY_EKPO,
BEGIN OF TY_FINAL,
CHK TYPE CHAR1,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
LIFNR TYPE LIFNR,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_FINAL.
**********Internal Table Declaration.
DATA : T_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
T_EKPO TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_FINAL2 TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_DOWN TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_FCAT1 TYPE STANDARD TABLE OF LVC_S_FCAT,
T_FCAT TYPE STANDARD TABLE OF LVC_S_FCAT.
*********Workarea Declaration.
DATA : W_EKKO TYPE TY_EKKO,
W_EKPO TYPE TY_EKPO,
W_FINAL TYPE TY_FINAL,
W_FINAL2 TYPE TY_FINAL,
W_DOWN TYPE TY_FINAL,
W_FCAT TYPE LVC_S_FCAT,
W_FCAT1 TYPE LVC_S_FCAT,
W_LAYOUT TYPE LVC_S_LAYO.
*********Constant Declaration.
DATA : LV_EBELN TYPE EKKO-EBELN,
P_COL TYPE INT2.
*********
DATA : GCL_CUS_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GCL_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
*********INITIALIZATION Event.
INITIALIZATION.
REFRESH : T_EKKO,
T_EKPO,
T_FINAL.
CLEAR : W_EKKO,
W_EKPO,
W_FINAL.
*********Selection Screen.
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A.
*&---------------------------------------------------------------------*
*& Form GET_EKKO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
CLASS EVENT DEFINITION.
PUBLIC SECTION.
************TOOLBAR Event for Adding Button.
METHODS : ADD_TOOL_BAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT,
************User Command Event for Save Data.
HANDLER_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
************Double Click Event .
METHODS: HANDLER_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
DATA : LS_STB_BUTTON TYPE STB_BUTTON,
LV_UCOMM TYPE SY-UCOMM.
ENDCLASS.
CLASS EVENT IMPLEMENTATION.
*******Implement TOOLBAR Event.
METHOD : ADD_TOOL_BAR .
*******Add Download Button.
******This Information Available for ICON Data Base Table**********.
LS_STB_BUTTON-FUNCTION = 'DOWN'. "Function Code.
LS_STB_BUTTON-ICON = '@DJ@'. "Icon Code
LS_STB_BUTTON-BUTN_TYPE = 0. "Button Type (Normal)
LS_STB_BUTTON-QUICKINFO = 'Download'. "Sort Test.
LS_STB_BUTTON-TEXT = 'Download'. "Button Text.
APPEND LS_STB_BUTTON TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_STB_BUTTON.
ENDMETHOD.
**********Implement USER_COMMAND Event.
METHOD HANDLER_USER_COMMAND.
IF E_UCOMM = 'DOWN'.
PERFORM DOWNLOAD_DATA.
ENDIF.
ENDMETHOD.
**********Implementation Doubel Click Event
METHOD HANDLER_DOUBLE_CLICK.
PERFORM DOUBLE_CLICK USING E_ROW E_COLUMN.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
PERFORM GET_EKKO.
PERFORM GET_EKPO.
END-OF-SELECTION.
PERFORM GET_POP_FINAL.
PERFORM CUSTOM_CONTANER.
*&---------------------------------------------------------------------*
*& Form GET_EKKO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EKKO .
SELECT EBELN
BUKRS
BSTYP
BSART
LIFNR
FROM EKKO INTO TABLE T_EKKO WHERE EBELN IN S_EBELN.
IF T_EKKO IS INITIAL.
MESSAGE 'Data Not Found' TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_EKPO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EKPO .
IF T_EKKO IS NOT INITIAL.
SELECT EBELN
EBELP
TXZ01
MATNR
WERKS
MENGE
MEINS
NETPR
NETWR
FROM EKPO INTO TABLE T_EKPO FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_POP_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_POP_FINAL .
SORT T_EKPO BY EBELN.
SORT T_EKKO BY EBELN.
CLEAR W_EKPO.
LOOP AT T_EKPO INTO W_EKPO.
W_FINAL-EBELN = W_EKPO-EBELN.
W_FINAL-EBELP = W_EKPO-EBELP.
W_FINAL-MEINS = W_EKPO-MEINS.
W_FINAL-MATNR = W_EKPO-MATNR.
W_FINAL-TXZ01 = W_EKPO-TXZ01.
W_FINAL-MENGE = W_FINAL-MENGE + W_EKPO-MENGE.
W_FINAL-NETPR = W_FINAL-NETPR + W_EKPO-NETPR.
READ TABLE T_EKKO INTO W_EKKO WITH KEY EBELN = W_EKPO-EBELN BINARY SEARCH.
IF SY-SUBRC = 0.
W_FINAL-LIFNR = W_EKKO-LIFNR.
W_FINAL-BUKRS = W_EKKO-BUKRS.
ENDIF.
AT END OF EBELN.
APPEND W_FINAL TO T_FINAL.
CLEAR W_FINAL.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CUSTOM_CONTANER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CUSTOM_CONTANER .
CALL SCREEN 9001.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
SET PF-STATUS 'ZSTATUS_9001'.
SET TITLEBAR 'ZTITLE_9001'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_FIELDCAT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE FILL_FIELDCAT OUTPUT.
PERFORM FILL_FIELDCAT USING : P_COL 'CHK' ' ' 'X' 'X' 'X' '1' ' ',
P_COL 'EBELN' 'Purchase Doc.No' ' ' ' ' ' ' ' ' 'X',
P_COL 'EBELP' 'Item No' ' ' ' ' ' ' ' ' ' ',
P_COL 'BUKRS' 'Company Code' ' ' ' ' ' ' ' ' ' ',
P_COL 'LIFNR' 'Vendor' ' ' ' ' ' ' ' ' ' ',
P_COL 'MATNR' 'Material No' ' ' ' ' ' ' ' ' ' ',
P_COL 'TXZ01' 'Material Description' ' ' ' ' ' ' ' ' ' ',
P_COL 'MENGE' 'Quantity' ' ' ' ' 'X' ' ' ' ',
P_COL 'MEINS' 'Uom' ' ' ' ' ' ' ' ' ' ',
P_COL 'NETPR' 'Price' ' ' ' ' 'X' ' ' ' '.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
IF SY-UCOMM = 'BACK' OR SY-UCOMM = 'EXIT' OR SY-UCOMM = 'CANCEL'.
LEAVE TO SCREEN 1.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FILL_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_FIELDCAT USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40
P_KEY TYPE CHAR1
P_CHEK TYPE CHAR1
P_EDIT TYPE CHAR4
P_LENTH TYPE INT2
P_HOTSP TYPE CHAR1.
W_FCAT-COL_POS = P_COL.
W_FCAT-FIELDNAME = P_FIELD.
W_FCAT-COLTEXT = P_DES.
W_FCAT-KEY = P_KEY.
W_FCAT-CHECKBOX = P_CHEK.
W_FCAT-EDIT = P_EDIT.
W_FCAT-OUTPUTLEN = P_LENTH.
W_FCAT-HOTSPOT = P_HOTSP.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module DISPLAY_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE DISPLAY_DATA OUTPUT.
W_LAYOUT-CWIDTH_OPT = 'X'.
W_LAYOUT-EDIT_MODE = 'X'.
W_LAYOUT-ZEBRA = 'X'.
DATA : OBJ_EVENT TYPE REF TO EVENT.
*********Create Object for Container.
CREATE OBJECT GCL_CUS_CONTAINER
EXPORTING
* PARENT = PARENT
CONTAINER_NAME = 'CC'
* STYLE = STYLE
* LIFETIME = lifetime_default
* REPID = REPID
* DYNNR = DYNNR
* NO_AUTODEF_PROGID_DYNNR = NO_AUTODEF_PROGID_DYNNR
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
*********Create Object for Event Class.
CREATE OBJECT OBJ_EVENT.
**********Create Object for Display Data.
CREATE OBJECT GCL_ALV_GRID
EXPORTING
I_PARENT = GCL_CUS_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
*********Register Event.
*&----Register TOOLBAR Event.
SET HANDLER OBJ_EVENT->ADD_TOOL_BAR FOR GCL_ALV_GRID.
*&----Register USER_COMMAND Event.
SET HANDLER OBJ_EVENT->HANDLER_USER_COMMAND FOR GCL_ALV_GRID.
*&----Register DOUBLE_CLICK Event.
SET HANDLER OBJ_EVENT->HANDLER_DOUBLE_CLICK FOR GCL_ALV_GRID.
**********Dispaly Data using Method.
GCL_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
EXPORTING
I_SAVE = 'X'
I_DEFAULT = 'X'
IS_LAYOUT = W_LAYOUT
CHANGING
IT_OUTTAB = T_FINAL
IT_FIELDCATALOG = T_FCAT
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
).
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SY_UCOMM text
*----------------------------------------------------------------------*
FORM DOWNLOAD_DATA.
DATA FILENAME TYPE STRING.
DATA PROGRAM_NAME TYPE SY-REPID.
DATA FILE_NAME TYPE IBIPPARMS-PATH.
*******Get Selected Record.
LOOP AT T_FINAL INTO W_FINAL WHERE CHK = 'X'.
W_DOWN-EBELN = W_FINAL-EBELN.
W_DOWN-BUKRS = W_FINAL-BUKRS.
W_DOWN-LIFNR = W_FINAL-LIFNR.
W_DOWN-EBELP = W_FINAL-EBELP.
W_DOWN-TXZ01 = W_FINAL-TXZ01.
W_DOWN-MATNR = W_FINAL-MATNR.
W_DOWN-MENGE = W_FINAL-MENGE.
W_DOWN-MEINS = W_FINAL-MEINS.
W_DOWN-NETPR = W_FINAL-NETPR.
APPEND W_DOWN TO T_DOWN.
CLEAR W_DOWN.
ENDLOOP.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = PROGRAM_NAME
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = FILE_NAME.
FILENAME = FILE_NAME.
************Download Data
CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(
EXPORTING
FILENAME = FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = T_DOWN
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
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
).
IF SY-SUBRC = 0.
MESSAGE 'Download Data Sucessfully...!' TYPE 'S'.
ENDIF.
********Delete Selected Record.
DELETE T_FINAL WHERE CHK = 'X'.
***********Refresh Internal Table Data.
GCL_ALV_GRID->REFRESH_TABLE_DISPLAY(
EXPORTING
I_SOFT_REFRESH = 'X'
EXCEPTIONS
FINISHED = 1
).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM DOUBLE_CLICK USING E_ROW TYPE LVC_S_ROW
E_COLUMN TYPE LVC_S_COL.
CLEAR W_FINAL.
READ TABLE T_FINAL INTO W_FINAL INDEX E_ROW-INDEX.
IF SY-SUBRC = 0.
IF E_COLUMN = 'EBELN'.
REFRESH T_FINAL2.
CLEAR W_EKPO.
LOOP AT T_EKPO INTO W_EKPO WHERE EBELN = W_FINAL-EBELN.
W_FINAL2-EBELN = W_EKPO-EBELN.
W_FINAL2-EBELP = W_EKPO-EBELP.
W_FINAL2-MATNR = W_EKPO-MATNR.
W_FINAL2-MENGE = W_EKPO-MENGE.
W_FINAL2-MEINS = W_EKPO-MEINS.
W_FINAL2-NETPR = W_EKPO-NETPR.
APPEND W_FINAL2 TO T_FINAL2.
CLEAR W_FINAL2.
ENDLOOP.
**********Filling Secound Fillcat log Table
REFRESH T_FCAT1.
PERFORM FILL_FIELDCAT2 USING : P_COL 'EBELN' 'Puc.Order No',
P_COL 'EBELP' 'Item No',
P_COL 'MATNR' 'Material No',
P_COL 'MENGE' 'Quantity',
P_COL 'MEINS' 'UOM',
P_COL 'NETPR' 'Prices'.
GCL_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
EXPORTING
I_SAVE = 'X'
I_DEFAULT = 'X'
CHANGING
IT_OUTTAB = T_FINAL2
IT_FIELDCATALOG = T_FCAT1
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
).
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_FIELDCAT2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_FIELDCAT2 USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40.
W_FCAT1-COL_POS = P_COL.
W_FCAT1-FIELDNAME = P_FIELD.
W_FCAT1-COLTEXT = P_DES.
APPEND W_FCAT1 TO T_FCAT1.
CLEAR W_FCAT1.
ENDFORM.
Output:
**********Structure Declaration.
TYPES : BEGIN OF TY_EKKO,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
BSTYP TYPE EBSTYP,
BSART TYPE ESART,
LIFNR TYPE LIFNR,
END OF TY_EKKO,
BEGIN OF TY_EKPO,
EBELN TYPE EBELN,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
WERKS TYPE EWERK,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
NETWR TYPE BWERT,
END OF TY_EKPO,
BEGIN OF TY_FINAL,
CHK TYPE CHAR1,
EBELN TYPE EBELN,
BUKRS TYPE BUKRS,
LIFNR TYPE LIFNR,
EBELP TYPE EBELP,
TXZ01 TYPE TXZ01,
MATNR TYPE MATNR,
MENGE TYPE BSTMG,
MEINS TYPE BSTME,
NETPR TYPE BPREI,
END OF TY_FINAL.
**********Internal Table Declaration.
DATA : T_EKKO TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
T_EKPO TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_FINAL2 TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_DOWN TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
T_FCAT1 TYPE STANDARD TABLE OF LVC_S_FCAT,
T_FCAT TYPE STANDARD TABLE OF LVC_S_FCAT.
*********Workarea Declaration.
DATA : W_EKKO TYPE TY_EKKO,
W_EKPO TYPE TY_EKPO,
W_FINAL TYPE TY_FINAL,
W_FINAL2 TYPE TY_FINAL,
W_DOWN TYPE TY_FINAL,
W_FCAT TYPE LVC_S_FCAT,
W_FCAT1 TYPE LVC_S_FCAT,
W_LAYOUT TYPE LVC_S_LAYO.
*********Constant Declaration.
DATA : LV_EBELN TYPE EKKO-EBELN,
P_COL TYPE INT2.
*********
DATA : GCL_CUS_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GCL_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
*********INITIALIZATION Event.
INITIALIZATION.
REFRESH : T_EKKO,
T_EKPO,
T_FINAL.
CLEAR : W_EKKO,
W_EKPO,
W_FINAL.
*********Selection Screen.
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A.
*&---------------------------------------------------------------------*
*& Form GET_EKKO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
CLASS EVENT DEFINITION.
PUBLIC SECTION.
************TOOLBAR Event for Adding Button.
METHODS : ADD_TOOL_BAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT,
************User Command Event for Save Data.
HANDLER_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
************Double Click Event .
METHODS: HANDLER_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
DATA : LS_STB_BUTTON TYPE STB_BUTTON,
LV_UCOMM TYPE SY-UCOMM.
ENDCLASS.
CLASS EVENT IMPLEMENTATION.
*******Implement TOOLBAR Event.
METHOD : ADD_TOOL_BAR .
*******Add Download Button.
******This Information Available for ICON Data Base Table**********.
LS_STB_BUTTON-FUNCTION = 'DOWN'. "Function Code.
LS_STB_BUTTON-ICON = '@DJ@'. "Icon Code
LS_STB_BUTTON-BUTN_TYPE = 0. "Button Type (Normal)
LS_STB_BUTTON-QUICKINFO = 'Download'. "Sort Test.
LS_STB_BUTTON-TEXT = 'Download'. "Button Text.
APPEND LS_STB_BUTTON TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_STB_BUTTON.
ENDMETHOD.
**********Implement USER_COMMAND Event.
METHOD HANDLER_USER_COMMAND.
IF E_UCOMM = 'DOWN'.
PERFORM DOWNLOAD_DATA.
ENDIF.
ENDMETHOD.
**********Implementation Doubel Click Event
METHOD HANDLER_DOUBLE_CLICK.
PERFORM DOUBLE_CLICK USING E_ROW E_COLUMN.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
PERFORM GET_EKKO.
PERFORM GET_EKPO.
END-OF-SELECTION.
PERFORM GET_POP_FINAL.
PERFORM CUSTOM_CONTANER.
*&---------------------------------------------------------------------*
*& Form GET_EKKO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EKKO .
SELECT EBELN
BUKRS
BSTYP
BSART
LIFNR
FROM EKKO INTO TABLE T_EKKO WHERE EBELN IN S_EBELN.
IF T_EKKO IS INITIAL.
MESSAGE 'Data Not Found' TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_EKPO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_EKPO .
IF T_EKKO IS NOT INITIAL.
SELECT EBELN
EBELP
TXZ01
MATNR
WERKS
MENGE
MEINS
NETPR
NETWR
FROM EKPO INTO TABLE T_EKPO FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_POP_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_POP_FINAL .
SORT T_EKPO BY EBELN.
SORT T_EKKO BY EBELN.
CLEAR W_EKPO.
LOOP AT T_EKPO INTO W_EKPO.
W_FINAL-EBELN = W_EKPO-EBELN.
W_FINAL-EBELP = W_EKPO-EBELP.
W_FINAL-MEINS = W_EKPO-MEINS.
W_FINAL-MATNR = W_EKPO-MATNR.
W_FINAL-TXZ01 = W_EKPO-TXZ01.
W_FINAL-MENGE = W_FINAL-MENGE + W_EKPO-MENGE.
W_FINAL-NETPR = W_FINAL-NETPR + W_EKPO-NETPR.
READ TABLE T_EKKO INTO W_EKKO WITH KEY EBELN = W_EKPO-EBELN BINARY SEARCH.
IF SY-SUBRC = 0.
W_FINAL-LIFNR = W_EKKO-LIFNR.
W_FINAL-BUKRS = W_EKKO-BUKRS.
ENDIF.
AT END OF EBELN.
APPEND W_FINAL TO T_FINAL.
CLEAR W_FINAL.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CUSTOM_CONTANER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CUSTOM_CONTANER .
CALL SCREEN 9001.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
SET PF-STATUS 'ZSTATUS_9001'.
SET TITLEBAR 'ZTITLE_9001'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_FIELDCAT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE FILL_FIELDCAT OUTPUT.
PERFORM FILL_FIELDCAT USING : P_COL 'CHK' ' ' 'X' 'X' 'X' '1' ' ',
P_COL 'EBELN' 'Purchase Doc.No' ' ' ' ' ' ' ' ' 'X',
P_COL 'EBELP' 'Item No' ' ' ' ' ' ' ' ' ' ',
P_COL 'BUKRS' 'Company Code' ' ' ' ' ' ' ' ' ' ',
P_COL 'LIFNR' 'Vendor' ' ' ' ' ' ' ' ' ' ',
P_COL 'MATNR' 'Material No' ' ' ' ' ' ' ' ' ' ',
P_COL 'TXZ01' 'Material Description' ' ' ' ' ' ' ' ' ' ',
P_COL 'MENGE' 'Quantity' ' ' ' ' 'X' ' ' ' ',
P_COL 'MEINS' 'Uom' ' ' ' ' ' ' ' ' ' ',
P_COL 'NETPR' 'Price' ' ' ' ' 'X' ' ' ' '.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
IF SY-UCOMM = 'BACK' OR SY-UCOMM = 'EXIT' OR SY-UCOMM = 'CANCEL'.
LEAVE TO SCREEN 1.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FILL_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_FIELDCAT USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40
P_KEY TYPE CHAR1
P_CHEK TYPE CHAR1
P_EDIT TYPE CHAR4
P_LENTH TYPE INT2
P_HOTSP TYPE CHAR1.
W_FCAT-COL_POS = P_COL.
W_FCAT-FIELDNAME = P_FIELD.
W_FCAT-COLTEXT = P_DES.
W_FCAT-KEY = P_KEY.
W_FCAT-CHECKBOX = P_CHEK.
W_FCAT-EDIT = P_EDIT.
W_FCAT-OUTPUTLEN = P_LENTH.
W_FCAT-HOTSPOT = P_HOTSP.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module DISPLAY_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE DISPLAY_DATA OUTPUT.
W_LAYOUT-CWIDTH_OPT = 'X'.
W_LAYOUT-EDIT_MODE = 'X'.
W_LAYOUT-ZEBRA = 'X'.
DATA : OBJ_EVENT TYPE REF TO EVENT.
*********Create Object for Container.
CREATE OBJECT GCL_CUS_CONTAINER
EXPORTING
* PARENT = PARENT
CONTAINER_NAME = 'CC'
* STYLE = STYLE
* LIFETIME = lifetime_default
* REPID = REPID
* DYNNR = DYNNR
* NO_AUTODEF_PROGID_DYNNR = NO_AUTODEF_PROGID_DYNNR
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
*********Create Object for Event Class.
CREATE OBJECT OBJ_EVENT.
**********Create Object for Display Data.
CREATE OBJECT GCL_ALV_GRID
EXPORTING
I_PARENT = GCL_CUS_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
*********Register Event.
*&----Register TOOLBAR Event.
SET HANDLER OBJ_EVENT->ADD_TOOL_BAR FOR GCL_ALV_GRID.
*&----Register USER_COMMAND Event.
SET HANDLER OBJ_EVENT->HANDLER_USER_COMMAND FOR GCL_ALV_GRID.
*&----Register DOUBLE_CLICK Event.
SET HANDLER OBJ_EVENT->HANDLER_DOUBLE_CLICK FOR GCL_ALV_GRID.
**********Dispaly Data using Method.
GCL_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
EXPORTING
I_SAVE = 'X'
I_DEFAULT = 'X'
IS_LAYOUT = W_LAYOUT
CHANGING
IT_OUTTAB = T_FINAL
IT_FIELDCATALOG = T_FCAT
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
).
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SY_UCOMM text
*----------------------------------------------------------------------*
FORM DOWNLOAD_DATA.
DATA FILENAME TYPE STRING.
DATA PROGRAM_NAME TYPE SY-REPID.
DATA FILE_NAME TYPE IBIPPARMS-PATH.
*******Get Selected Record.
LOOP AT T_FINAL INTO W_FINAL WHERE CHK = 'X'.
W_DOWN-EBELN = W_FINAL-EBELN.
W_DOWN-BUKRS = W_FINAL-BUKRS.
W_DOWN-LIFNR = W_FINAL-LIFNR.
W_DOWN-EBELP = W_FINAL-EBELP.
W_DOWN-TXZ01 = W_FINAL-TXZ01.
W_DOWN-MATNR = W_FINAL-MATNR.
W_DOWN-MENGE = W_FINAL-MENGE.
W_DOWN-MEINS = W_FINAL-MEINS.
W_DOWN-NETPR = W_FINAL-NETPR.
APPEND W_DOWN TO T_DOWN.
CLEAR W_DOWN.
ENDLOOP.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = PROGRAM_NAME
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = FILE_NAME.
FILENAME = FILE_NAME.
************Download Data
CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(
EXPORTING
FILENAME = FILENAME
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = T_DOWN
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
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
).
IF SY-SUBRC = 0.
MESSAGE 'Download Data Sucessfully...!' TYPE 'S'.
ENDIF.
********Delete Selected Record.
DELETE T_FINAL WHERE CHK = 'X'.
***********Refresh Internal Table Data.
GCL_ALV_GRID->REFRESH_TABLE_DISPLAY(
EXPORTING
I_SOFT_REFRESH = 'X'
EXCEPTIONS
FINISHED = 1
).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM DOUBLE_CLICK USING E_ROW TYPE LVC_S_ROW
E_COLUMN TYPE LVC_S_COL.
CLEAR W_FINAL.
READ TABLE T_FINAL INTO W_FINAL INDEX E_ROW-INDEX.
IF SY-SUBRC = 0.
IF E_COLUMN = 'EBELN'.
REFRESH T_FINAL2.
CLEAR W_EKPO.
LOOP AT T_EKPO INTO W_EKPO WHERE EBELN = W_FINAL-EBELN.
W_FINAL2-EBELN = W_EKPO-EBELN.
W_FINAL2-EBELP = W_EKPO-EBELP.
W_FINAL2-MATNR = W_EKPO-MATNR.
W_FINAL2-MENGE = W_EKPO-MENGE.
W_FINAL2-MEINS = W_EKPO-MEINS.
W_FINAL2-NETPR = W_EKPO-NETPR.
APPEND W_FINAL2 TO T_FINAL2.
CLEAR W_FINAL2.
ENDLOOP.
**********Filling Secound Fillcat log Table
REFRESH T_FCAT1.
PERFORM FILL_FIELDCAT2 USING : P_COL 'EBELN' 'Puc.Order No',
P_COL 'EBELP' 'Item No',
P_COL 'MATNR' 'Material No',
P_COL 'MENGE' 'Quantity',
P_COL 'MEINS' 'UOM',
P_COL 'NETPR' 'Prices'.
GCL_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
EXPORTING
I_SAVE = 'X'
I_DEFAULT = 'X'
CHANGING
IT_OUTTAB = T_FINAL2
IT_FIELDCATALOG = T_FCAT1
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
).
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_FIELDCAT2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_FIELDCAT2 USING : P_COL
P_FIELD TYPE CHAR20
P_DES TYPE CHAR40.
W_FCAT1-COL_POS = P_COL.
W_FCAT1-FIELDNAME = P_FIELD.
W_FCAT1-COLTEXT = P_DES.
APPEND W_FCAT1 TO T_FCAT1.
CLEAR W_FCAT1.
ENDFORM.
Output:
No comments:
Post a Comment