Sei sulla pagina 1di 12

*&--------------------------------------------------------------------* *& Report ZDEMO_ALV_NEST *& *&--------------------------------------------------------------------* *& *& *&--------------------------------------------------------------------* REPORT ZDEMO_ALV_NEST. TABLES: T001T,TNAPR,VBRP,T001F.

********************Data Declaration************** TYPES: BEGIN OF ST_NAST, KAPPL TYPE NAST-KAPPL, OBJKY TYPE VBELN, KSCHL TYPE NAST-KSCHL, ERDAT TYPE NAST-ERDAT, SPRAS TYPE NAST-SPRAS, END OF ST_NAST. TYPES : BEGIN OF ST_VBRK, VBELN TYPE VBRK-VBELN, VKORG TYPE VBRK-VKORG, BUKRS TYPE VBRK-BUKRS, LAND1 TYPE VBRK-LAND1, KUNAG TYPE VBRK-KUNAG, ZTERM TYPE VBRK-ZTERM, ZLSCH TYPE VBRK-ZLSCH, END OF ST_VBRK. TYPES : BEGIN OF ST_TVKOT, VKORG TYPE VKORG, VTXTK TYPE VTXTK, END OF ST_TVKOT. TYPES : BEGIN OF ST_T001T, BUKRS TYPE T001T-BUKRS, LTEXT TYPE T001T-LTEXT, END OF ST_T001T. TYPES: BEGIN OF ST_T001F, BUKRS TYPE T001T-BUKRS, PROGNAME TYPE PROGRAMM, TDSFNAME TYPE TDSFNAME, END OF ST_T001F. TYPES: BEGIN KAPPL OBJKY KSCHL ERDAT OF ST_FINAL, TYPE NAST-KAPPL, TYPE VBELN, TYPE NAST-KSCHL, TYPE NAST-ERDAT,

VBELN TYPE VBRK-VBELN, VKORG TYPE VBRK-VKORG, BUKRS TYPE VBRK-BUKRS, LAND1 TYPE VBRK-LAND1, ZTERM TYPE VBRK-ZTERM, ZLSCH TYPE VBRK-ZLSCH, SPRAS TYPE SPRAS, VTXTK TYPE VTXTK, KUNAG TYPE VBRK-KUNAG, LTEXT TYPE T001T-LTEXT, PROGNAME TYPE PROGNAME, TDSFNAME TYPE TDSFNAME, END OF ST_FINAL. DATA: PAYMENT_TERM TYPE VBRK-ZTERM, PAYMENT_METHOD TYPE VBRK-ZLSCH. DATA: IT_FINAL TYPE TABLE OF ST_FINAL, WA_FINAL TYPE ST_FINAL. DATA: IT_NAST TYPE TABLE OF ST_NAST, WA_NAST TYPE ST_NAST. DATA: IT_VBRK TYPE TABLE OF ST_VBRK, WA_VBRK TYPE ST_VBRK. DATA: IT_TNAPR TYPE TABLE OF TNAPR, WA_TNAPR TYPE TNAPR. DATA: IT_TVKOT TYPE TABLE OF ST_TVKOT, WA_TVKOT TYPE ST_TVKOT. DATA: IT_T001 TYPE TABLE OF ST_T001T, WA_T001 TYPE ST_T001T. DATA: IT_FIELDCAT TYPE LVC_T_FCAT, WA_FIELDCAT TYPE LVC_S_FCAT. DATA:O_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER, O_SPLIT TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER, O_TOP_CONTAINER TYPE REF TO CL_GUI_CONTAINER, O_BOTTOM_CONTAINER TYPE REF TO CL_GUI_CONTAINER, O_DOCUMENT TYPE REF TO CL_DD_DOCUMENT, O_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA: LV_RECORD TYPE SDYDO_TEXT_ELEMENT, LV_RECORD1 TYPE I, LV_APPL TYPE SDYDO_TEXT_ELEMENT, LV_LOW TYPE SDYDO_TEXT_ELEMENT, LV_HIGH TYPE SDYDO_TEXT_ELEMENT, LV_P_TYPE TYPE SDYDO_TEXT_ELEMENT, LV_P_METHOD TYPE SDYDO_TEXT_ELEMENT, LV_COMBINE TYPE SDYDO_TEXT_ELEMENT.

*---------------------------------------------------------------------* * CLASS ZCL_EVENT_HANDLER DEFINITION *---------------------------------------------------------------------* * *---------------------------------------------------------------------* CLASS ZCL_EVENT_HANDLER DEFINITION. " To handle events of first scr een oops alv PUBLIC SECTION. METHODS: HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW_ID E_COLUMN_ID. "method to handle hotspot event ENDCLASS. "ZCL_EVENT_HANDLER DEFINITION *---------------------------------------------------------------------* * CLASS ZCL_EVENT_HANDLER IMPLEMENTATION *---------------------------------------------------------------------* * *---------------------------------------------------------------------* CLASS ZCL_EVENT_HANDLER IMPLEMENTATION. METHOD HANDLE_HOTSPOT_CLICK. IF E_COLUMN_ID = 'PROGRAMM'. PERFORM HANDLE_HOTSPOT_ON_CUSTOMER_NUM USING E_ROW_ID. " Subrou tine to handle hotspot on customer number ENDIF. ENDMETHOD. "HANDLE_HOTSPOT_CLICK ENDCLASS. "ZCL_EVENT_HANDLER IMPLEMENTATION DATA: GV_EVENTS TYPE REF TO ZCL_EVENT_HANDLER.

***************Selection Screen Logic********************** SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECTION-SCREEN: BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(31) TEXT-002 FOR FIELD APPL. PARAMETERS : APPL TYPE T681A-KAPPL DEFAULT 'V3' . SELECTION-SCREEN COMMENT 40(10) TEXT-003 FOR FIELD V2. PARAMETERS: V2 TYPE CHAR10 NO-DISPLAY . SELECTION-SCREEN: END OF LINE. SELECT-OPTIONS : OUTPUT FOR TNAPR-KSCHL. SELECT-OPTIONS : CRT_DATE FOR VBRP-ERDAT OBLIGATORY. PARAMETERS: PAY_T TYPE VBRK-ZTERM MATCHCODE OBJECT ZSEARCH_HELP_ZTERM,

PAY_M TYPE VBRK-ZLSCH. SELECTION-SCREEN : END OF BLOCK B1.

INITIALIZATION. CRT_DATE-OPTION = 'GT'. CRT_DATE-SIGN = 'I'. CRT_DATE-LOW = SY-DATUM - 90. CRT_DATE-HIGH = SY-DATUM. APPEND CRT_DATE. AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF SCREEN-NAME = 'APPL' OR SCREEN-NAME = 'V2'. SCREEN-INPUT = 0. MODIFY SCREEN. ENDIF. ENDLOOP.

************************Selection Logic********************** LV_APPL = APPL. LV_LOW = CRT_DATE-LOW. LV_HIGH = CRT_DATE-HIGH. LV_P_TYPE = PAY_T. LV_P_METHOD = PAY_T. CONCATENATE 'FROM' LV_LOW 'TO' LV_HIGH INTO LV_COMBINE SEPARATED BY S PACE. START-OF-SELECTION. SELECT KAPPL OBJKY KSCHL ERDAT SPRAS FROM NAST INTO CORRESPONDING FIELDS OF TABLE IT_NAST WHERE KAPPL = APPL AND KSCHL IN OUTPUT AND ERDAT IN CRT_DATE. IF IT_NAST IS NOT INITIAL.

SELECT VBELN VKORG BUKRS LAND1 KUNAG ZTERM ZLSCH FROM VBRK INTO CORRESPONDING FIELDS OF TABLE IT_VBRK FOR ALL ENTRIES IN IT_NAST WHERE VBELN = IT_NAST-OBJKY. SELECT VKORG VTEXT FROM TVKOT INTO CORRESPONDING FIELDS OF TABLE IT_TVKOT FOR ALL ENTRIES IN IT_VBRK WHERE VKORG = IT_VBRK-VKORG. SELECT BUKRS LTEXT FROM T001T INTO

CORRESPONDING FIELDS OF TABLE IT_T001 FOR ALL ENTRIES IN IT_VBRK WHERE BUKRS = IT_VBRK-BUKRS. SELECT KSCHL PGNAM FONAM FROM TNAPR INTO CORRESPONDING FIELDS OF TABLE IT_TNAPR FOR ALL ENTRIES IN IT_NAST WHERE KSCHL = IT_NAST-KSCHL. ENDIF. LOOP AT IT_TNAPR INTO WA_TNAPR. WA_FINAL-KSCHL = WA_TNAPR-KSCHL. WA_FINAL-PROGNAME = WA_TNAPR-PGNAM. WA_FINAL-TDSFNAME = WA_TNAPR-FONAM. READ TABLE IT_NAST INTO WA_NAST WITH KEY KSCHL = WA_FINAL-KSCHL. WA_FINAL-KAPPL = WA_NAST-KAPPL. WA_FINAL-OBJKY = WA_NAST-OBJKY. WA_FINAL-KSCHL = WA_NAST-KSCHL. WA_FINAL-ERDAT = WA_NAST-ERDAT. WA_FINAL-SPRAS = WA_NAST-SPRAS. READ TABLE IT_VBRK INTO WA_VBRK WITH KEY VBELN = WA_FINAL-OBJKY. WA_FINAL-VBELN = WA_VBRK-VBELN. WA_FINAL-VKORG = WA_VBRK-VKORG. WA_FINAL-BUKRS = WA_VBRK-BUKRS. WA_FINAL-LAND1 = WA_VBRK-LAND1. WA_FINAL-KUNAG = WA_VBRK-kunag. READ TABLE IT_VBRK INTO WA_VBRK WITH KEY KUNAG = WA_FINAL-KUNAG. IF WA_VBRK-ZTERM = PAY_T. WA_FINAL-ZTERM = 'Yes'. ELSE. WA_FINAL-ZTERM = 'No'. ENDIF. IF WA_VBRK-ZLSCH = PAY_M. WA_FINAL-ZLSCH = 'Yes'. ELSE. WA_FINAL-ZLSCH = 'No'. ENDIF. READ TABLE IT_TVKOT INTO WA_TVKOT WITH KEY VKORG = WA_FINAL-VKORG. WA_FINAL-VTXTK = WA_TVKOT-VTXTK. READ TABLE IT_T001 INTO WA_T001 WITH KEY BUKRS = WA_FINAL-BUKRS. WA_FINAL-LTEXT = WA_T001-LTEXT.

ENDLOOP. DESCRIBE TABLE IT_FINAL LINES LV_RECORD1. LV_RECORD = LV_RECORD1. PERFORM FIELDCAT USING: 'KSCHL' 'SPRAS' 'VKORG' 'VTEXT' 'BURKS' 'LTEXT' 'LAND1' 'ZTERM' 'ZLSCH' ', 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' 'X' 'X' 'X' 'X' 'X' 'X' 'X' 'Output Type' '1' ' ', 'Language' '2' ' ', 'Sales Org' '3' ' ', 'Sales Org name' '4' ' ', 'Company Code' '5' ' ', 'Company code name' '6' ' ', 'Country' '7' ' ', 'Payment Term found' '8' ' ', 'Payment Method found ' '9' '

'PROGRAMM' ' ' 'X' 'Program name' '10' 'X', 'FORNR_SSF' '' 'X' 'Form Name' '11' 'X'.

CALL SCREEN 9000. *&--------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* MODULE STATUS_9000 OUTPUT. SET PF-STATUS 'ZCUSTOM1'. SET TITLEBAR 'xxx'. CREATE OBJECT O_DOCKING EXPORTING RATIO = '95'. CREATE OBJECT O_SPLIT EXPORTING PARENT = O_DOCKING SASH_POSITION = 30 WITH_BORDER = 0. O_TOP_CONTAINER = O_SPLIT->TOP_LEFT_CONTAINER . O_BOTTOM_CONTAINER = O_SPLIT->BOTTOM_RIGHT_CONTAINER . CREATE OBJECT O_GRID EXPORTING I_PARENT = O_BOTTOM_CONTAINER.

CREATE OBJECT O_DOCUMENT EXPORTING STYLE = 'ALV_GRID'. CALL METHOD O_DOCUMENT->ADD_PICTURE EXPORTING PICTURE_ID = 'TRVPICTURE01' WIDTH = '50'. CALL METHOD O_DOCUMENT->NEW_LINE. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = 'Total Records-' SAP_EMPHASIS = CL_DD_AREA=>STRONG. " For bold CALL METHOD O_DOCUMENT->ADD_GAP EXPORTING WIDTH = 12. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = LV_RECORD. CALL METHOD O_DOCUMENT->NEW_LINE. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = 'Application-' SAP_EMPHASIS = CL_DD_AREA=>STRONG. " For bold CALL METHOD O_DOCUMENT->ADD_GAP EXPORTING WIDTH = 16. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = LV_APPL. CALL METHOD O_DOCUMENT->NEW_LINE. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = 'Creation Date-' SAP_EMPHASIS = CL_DD_AREA=>STRONG. " For bold CALL METHOD O_DOCUMENT->ADD_GAP EXPORTING WIDTH = 12. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = LV_COMBINE. CALL METHOD O_DOCUMENT->NEW_LINE.

CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = 'Payment Term-' SAP_EMPHASIS = CL_DD_AREA=>STRONG. " For bold CALL METHOD O_DOCUMENT->ADD_GAP EXPORTING WIDTH = 13. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = LV_P_TYPE. CALL METHOD O_DOCUMENT->NEW_LINE. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = 'Payment Method-' SAP_EMPHASIS = CL_DD_AREA=>STRONG. " For bold CALL METHOD O_DOCUMENT->ADD_GAP EXPORTING WIDTH = 11. CALL METHOD O_DOCUMENT->ADD_TEXT EXPORTING TEXT = LV_P_METHOD.

CALL METHOD O_DOCUMENT->DISPLAY_DOCUMENT EXPORTING PARENT = O_TOP_CONTAINER. CALL METHOD O_GRID->LIST_PROCESSING_EVENTS EXPORTING I_EVENT_NAME = 'TOP_OF_PAGE' I_DYNDOC_ID = O_DOCUMENT.

CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING * I_STRUCTURE_NAME = 'ST_FINAL' CHANGING IT_OUTTAB = IT_FINAL IT_FIELDCATALOG = IT_FIELDCAT IT_SORT = IT_FILTER = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 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.

CREATE OBJECT GV_EVENTS. SET HANDLER GV_EVENTS->HANDLE_HOTSPOT_CLICK FOR O_GRID. ENDMODULE. " STATUS_9000 OUTPUT

*&--------------------------------------------------------------------* *& Form FIELDCAT *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->FIELDNAME text * -->KEY text * -->EDIT text * -->COLTEXT text * -->COLPOS text *---------------------------------------------------------------------* FORM FIELDCAT USING FIELDNAME KEY EDIT COLTEXT COLPOS HOTSPOT. WA_FIELDCAT-FIELDNAME = FIELDNAME. WA_FIELDCAT-KEY = KEY. WA_FIELDCAT-EDIT = EDIT. WA_FIELDCAT-COLTEXT = COLTEXT. WA_FIELDCAT-COL_POS = COLPOS. WA_FIELDCAT-HOTSPOT = HOTSPOT. APPEND WA_FIELDCAT TO IT_FIELDCAT. CLEAR WA_FIELDCAT. ENDFORM. "FIELDCAT *&--------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* MODULE USER_COMMAND_9000 INPUT. CASE SY-UCOMM. WHEN 'BACK'. PERFORM FREE_OBJECT.

LEAVE TO SCREEN 0. WHEN 'CANC' OR 'EXIT'. PERFORM FREE_OBJECT. LEAVE PROGRAM. WHEN 'DOWNLOAD'. * * * * * * * DATA: P_FILE TYPE DXFIELDS-LONGPATH. CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = ' ' IMPORTING FILE_NAME = P_FILE. DATA: DIR TYPE STRING. DIR = '\192.168.2.173qfilesvr400ec2usrsapTST'. CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE' EXPORTING DIRECTORY = DIR FILEMASK = ' ' IMPORTING SERVERFILE = P_FILE EXCEPTIONS CANCELED_BY_USER = 1 OTHERS = 2.

PERFORM FREE_OBJECT. IF P_FILE IS NOT INITIAL. OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. LOOP AT IT_FINAL INTO WA_FINAL. IF SY-SUBRC = 0. TRANSFER WA_FINAL TO P_FILE. ENDIF. ENDLOOP. ENDIF.

ENDCASE.

ENDMODULE. " USER_COMMAND_9000 INPUT *&--------------------------------------------------------------------* *& Form HANDLE_HOTSPOT_ON_CUSTOMER_NUM *&--------------------------------------------------------------------*

* text *---------------------------------------------------------------------* * -->P_E_ROW_ID text *---------------------------------------------------------------------* FORM HANDLE_HOTSPOT_ON_CUSTOMER_NUM USING VALUE(P_E_ROW_ID). READ TABLE IT_FINAL INTO WA_FINAL INDEX P_E_ROW_ID. SET PARAMETER ID 'RID' FIELD WA_FINAL-PROGNAME. *-------------------------------------------------------------call tran saction to display tghe vendor CALL TRANSACTION 'SE38' AND SKIP FIRST SCREEN. ENDFORM. "HANDLE_HOTSPOT_ON_CUSTOMER_NUM *&--------------------------------------------------------------------* *& Form FREE_OBJECT *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM FREE_OBJECT . 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_TOP_CONTAINER->FREE EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 OTHERS = 3. CALL METHOD O_BOTTOM_CONTAINER->FREE EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 OTHERS = 3. CALL METHOD O_DOCKING->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_OBJECT

Potrebbero piacerti anche