Advertisement
yaramohamed78

Selection Screen - v1

Mar 21st, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 11.17 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Generates the ALV on the Selection Screen itself
  3. *&
  4. *&---------------------------------------------------------------------*
  5. REPORT  Z_YY_DISPOSAL_REQ_INQ.
  6.  
  7. TYPES : BEGIN OF IT_req,
  8.           zzcompany_code TYPE ZFI_DISPOSAL_REQ-ZZCOMPANY_CODE,
  9.           zzcost_center  TYPE ZFI_DISPOSAL_REQ-ZZCOST_CENTER,
  10.           zzsr_number    TYPE ZFI_DISPOSAL_REQ-ZZSR_NUMBER,
  11.           zzdate         TYPE ZFI_DISPOSAL_REQ-ZZDATE,
  12.           zzservice_type TYPE ZFI_DISPOSAL_REQ-ZZSERVICE_TYPE,
  13.           zzrqstts       TYPE ZFI_DISPOSAL_REQ-ZZRQSTTS,
  14.           crea_user      TYPE ZFI_DISPOSAL_REQ-CREA_USER,
  15.           crea_time      TYPE ZFI_DISPOSAL_REQ-CREA_TIME,
  16.           chng_user      TYPE ZFI_DISPOSAL_REQ-CHNG_USER,
  17.           chng_time      TYPE ZFI_DISPOSAL_REQ-CHNG_TIME,
  18.           s_zzdesc       TYPE ZFI_LOOKUP-ZZDESC,
  19.           rs_zzdesc      TYPE ZFI_LOOKUP-ZZDESC,
  20.   END OF IT_req.
  21.  
  22.   DATA : it_reqs  TYPE TABLE OF it_req.
  23. TYPES: BEGIN OF ty_req,
  24.        company_code TYPE ZFI_DISPOSAL_REQ-ZZCOMPANY_CODE,
  25.        cost_center  TYPE ZFI_DISPOSAL_REQ-ZZCOST_CENTER,
  26.        END OF ty_req.
  27. TYPES: BEGIN OF ty_lookup,
  28.         code      TYPE ZFI_LOOKUP-ZZCODE,
  29.        END OF ty_lookup.
  30. DATA:   gwa_req         TYPE ty_req,
  31.         gt_req          TYPE TABLE OF ty_req,
  32.         gwa_lookup      TYPE ty_lookup,
  33.         gt_lookup       TYPE TABLE OF ty_lookup,
  34.         gt_return       TYPE TABLE OF ddshretval,
  35.         gwa_return      TYPE ddshretval,
  36.         gwa_dynpfields  TYPE dynpread,
  37.         gt_dynpfields   TYPE TABLE OF dynpread,
  38.         gv_company_code TYPE ZFI_DISPOSAL_REQ-ZZCOMPANY_CODE,
  39.         gv_type         TYPE ZFI_LOOKUP-ZZTYPE.
  40.  
  41. DATA:   wa_req TYPE ZFI_DISPOSAL_REQ,
  42.         wa_service TYPE ZFI_LOOKUP,
  43.         wa_req_status TYPE ZFI_LOOKUP.
  44.  
  45. DATA: wa_reqs TYPE it_req.
  46.  
  47.  
  48. *
  49. *----------------------------------------------------------------------*
  50. *  Local class for report
  51. *----------------------------------------------------------------------*
  52. CLASS lcl_report DEFINITION.
  53. *
  54.   PUBLIC SECTION.
  55. *
  56.     TYPES: BEGIN OF ty_data,
  57.        serial_no      TYPE ZFI_DISPOSAL_REQ-ZZSR_NUMBER,
  58.        company_code   TYPE ZFI_DISPOSAL_REQ-ZZCOMPANY_CODE,
  59.        cost_center    TYPE ZFI_DISPOSAL_REQ-ZZCOST_CENTER,
  60.        date           TYPE ZFI_DISPOSAL_REQ-ZZDATE,
  61.        service_type   TYPE ZFI_DISPOSAL_REQ-ZZSERVICE_TYPE,
  62.        request_status TYPE ZFI_DISPOSAL_REQ-ZZRQSTTS,
  63.        create_user    TYPE ZFI_DISPOSAL_REQ-CREA_USER,
  64.        create_time    TYPE ZFI_DISPOSAL_REQ-CREA_TIME,
  65.        change_user    TYPE ZFI_DISPOSAL_REQ-CHNG_USER,
  66.        change_time    TYPE ZFI_DISPOSAL_REQ-CHNG_TIME,
  67.     END OF ty_data.
  68.  
  69.     DATA: t_data   TYPE STANDARD TABLE OF it_req,  " Output dat
  70.           r_carrid TYPE RANGE OF sflight-carrid.    " Select Option
  71. *
  72.     METHODS:
  73.       get_data,
  74. *
  75.       generate_output.
  76. *
  77. ENDCLASS.                    "lcl_report DEFINITION
  78. *
  79. DATA: lo_report TYPE REF TO lcl_report.
  80. *
  81. DATA: w_carrid TYPE sflight-carrid.
  82. *
  83. ** Selection Screen
  84. SELECTION-SCREEN BEGIN OF BLOCK SELECTION WITH FRAME TITLE text-001.
  85.  
  86. SELECTION-SCREEN BEGIN OF LINE.
  87.   SELECTION-SCREEN COMMENT (20) text-002 FOR FIELD COM_CODE .
  88. PARAMETERS :     COM_CODE LIKE ZFI_DISPOSAL_REQ-ZZCOMPANY_CODE DEFAULT '1200'.
  89. SELECTION-SCREEN POSITION 35.
  90. SELECTION-SCREEN COMMENT (20) text-003 FOR FIELD COST_CNT .
  91. PARAMETERS :     COST_CNT LIKE ZFI_DISPOSAL_REQ-ZZCOST_CENTER.
  92. SELECTION-SCREEN POSITION 70.
  93. SELECTION-SCREEN END OF LINE.
  94. SELECTION-SCREEN BEGIN OF LINE.
  95.   SELECTION-SCREEN COMMENT (20) text-004 FOR FIELD SER_NO .
  96. PARAMETERS :     SER_NO   LIKE ZFI_DISPOSAL_REQ-ZZSR_NUMBER.
  97. *SELECTION-SCREEN POSITION 10.
  98. SELECTION-SCREEN COMMENT (20) text-005 FOR FIELD SRV_TYPE .
  99. PARAMETERS :     SRV_TYPE LIKE ZFI_LOOKUP-ZZCODE.
  100. SELECTION-SCREEN POSITION 70.
  101. SELECTION-SCREEN END OF LINE.
  102. SELECTION-SCREEN BEGIN OF LINE.
  103.   SELECTION-SCREEN COMMENT (20) text-006 FOR FIELD DATE .
  104. PARAMETERS :     DATE LIKE ZFI_DISPOSAL_REQ-ZZDATE.
  105. *SELECTION-SCREEN POSITION 35.
  106. SELECTION-SCREEN COMMENT (20) text-007 FOR FIELD REQ_STS .
  107. PARAMETERS :     REQ_STS  LIKE ZFI_LOOKUP-ZZCODE.
  108. SELECTION-SCREEN PUSHBUTTON (10) BUT1 USER-COMMAND SEARCH.
  109. SELECTION-SCREEN PUSHBUTTON (10) BUT2 USER-COMMAND RESET.
  110. SELECTION-SCREEN END OF LINE.
  111. SELECTION-SCREEN END OF BLOCK SELECTION.
  112. *
  113.     WRITE : / 'ERROR2'.
  114. AT SELECTION-SCREEN ON VALUE-REQUEST FOR COST_CNT.
  115.   WRITE : / 'WELCOME1'.
  116.   REFRESH gt_dynpfields.
  117.  
  118.   gwa_dynpfields-fieldname = 'COM_CODE'.
  119.   APPEND gwa_dynpfields TO gt_dynpfields.
  120.  
  121.   CALL FUNCTION 'DYNP_VALUES_READ'
  122.     EXPORTING
  123.       DYNAME                               = sy-repid
  124.       DYNUMB                               = sy-dynnr
  125.     TABLES
  126.       DYNPFIELDS                           = gt_dynpfields
  127.    EXCEPTIONS
  128.      INVALID_ABAPWORKAREA                 = 1
  129.      INVALID_DYNPROFIELD                  = 2
  130.      INVALID_DYNPRONAME                   = 3
  131.      INVALID_DYNPRONUMMER                 = 4
  132.      INVALID_REQUEST                      = 5
  133.      NO_FIELDDESCRIPTION                  = 6
  134.      INVALID_PARAMETER                    = 7
  135.      UNDEFIND_ERROR                       = 8
  136.      DOUBLE_CONVERSION                    = 9
  137.      STEPL_NOT_FOUND                      = 10
  138.      OTHERS                               = 11
  139.             .
  140.   READ TABLE gt_dynpfields INTO gwa_dynpfields
  141.              WITH KEY fieldname = 'COM_CODE'.
  142.  
  143.   IF SY-SUBRC = 0.
  144.       gv_company_code = gwa_dynpfields-fieldvalue.
  145. *      MESSAGE ID 'ZALV_ERRORS' TYPE 'I' NUMBER '000' WITH gv_company_code.
  146.   ELSE.
  147.     WRITE : / 'ERROR1'.
  148.   ENDIF.
  149.  
  150.   SELECT ZZCOMPANY_CODE ZZCOST_CENTER
  151.          INTO TABLE gt_req
  152.          FROM ZFI_DISPOSAL_REQ
  153.          WHERE ZZCOMPANY_CODE = gv_company_code.
  154.  
  155.     CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  156.       EXPORTING
  157.         RETFIELD               = 'COST_CENTER'
  158.         VALUE_ORG              = 'S'
  159.       TABLES
  160.         VALUE_TAB              = gt_req
  161.         RETURN_TAB             = gt_return
  162.      EXCEPTIONS
  163.        PARAMETER_ERROR        = 1
  164.        NO_VALUES_FOUND        = 2
  165.        OTHERS                 = 3
  166.               .
  167.  
  168.      READ TABLE gt_return INTO gwa_return INDEX 1.
  169.  
  170.     IF SY-SUBRC = 0.
  171.       COST_CNT = gwa_return-fieldval.
  172.         ELSE.
  173.     WRITE : / 'ERROR2'.
  174.     ENDIF.
  175.  
  176. AT SELECTION-SCREEN ON VALUE-REQUEST FOR  REQ_STS.
  177.   REFRESH gt_dynpfields.
  178.  
  179.   SELECT  ZZCODE
  180.          INTO TABLE gt_lookup
  181.          FROM ZFI_LOOKUP
  182.          WHERE ZZTYPE = '1'.
  183.  
  184.     CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  185.       EXPORTING
  186.         RETFIELD               = 'TYPE'
  187.         VALUE_ORG              = 'S'
  188.       TABLES
  189.         VALUE_TAB              = gt_lookup
  190.         RETURN_TAB             = gt_return
  191.      EXCEPTIONS
  192.        PARAMETER_ERROR        = 1
  193.        NO_VALUES_FOUND        = 2
  194.        OTHERS                 = 3
  195.               .
  196.  
  197.      READ TABLE gt_return INTO gwa_return INDEX 1.
  198.  
  199.     IF SY-SUBRC = 0.
  200.       REQ_STS = gwa_return-fieldval.
  201.         ELSE.
  202.     WRITE : / 'ERROR2'.
  203.     ENDIF.
  204.  
  205.     AT SELECTION-SCREEN ON VALUE-REQUEST FOR  SRV_TYPE.
  206.   REFRESH gt_dynpfields.
  207.  
  208.   SELECT  ZZCODE
  209.          INTO TABLE gt_lookup
  210.          FROM ZFI_LOOKUP
  211.          WHERE ZZTYPE = '2'.
  212.  
  213.     CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  214.       EXPORTING
  215.         RETFIELD               = 'TYPE'
  216.         VALUE_ORG              = 'S'
  217.       TABLES
  218.         VALUE_TAB              = gt_lookup
  219.         RETURN_TAB             = gt_return
  220.      EXCEPTIONS
  221.        PARAMETER_ERROR        = 1
  222.        NO_VALUES_FOUND        = 2
  223.        OTHERS                 = 3
  224.               .
  225.  
  226.      READ TABLE gt_return INTO gwa_return INDEX 1.
  227.  
  228.     IF SY-SUBRC = 0.
  229.       SRV_TYPE = gwa_return-fieldval.
  230.         ELSE.
  231.     WRITE : / 'ERROR2'.
  232.     ENDIF.
  233.  
  234. ** Initialization
  235. INITIALIZATION.
  236. BUT1 = 'Search'.
  237. BUT2 = 'Reset'.
  238. AT SELECTION-SCREEN.
  239. CASE sy-ucomm.
  240.  
  241.  when 'SEARCH'.
  242. *   MESSAGE ID 'ZALV_ERRORS' TYPE 'I' NUMBER '000' WITH REQ_STS.
  243.      PERFORM SEARCH.
  244. *object for the report
  245.   CREATE OBJECT lo_report.
  246. * generate output
  247.   lo_report->generate_output( ).
  248.   lo_report->get_data( ).
  249.  
  250.   WHEN 'RESET'.
  251.     PERFORM RESET.
  252. ENDCASE.
  253.  
  254.  
  255. *
  256. *----------------------------------------------------------------------*
  257. * Local Class Implementation
  258. *----------------------------------------------------------------------*
  259. CLASS lcl_report IMPLEMENTATION.
  260. *
  261.   METHOD get_data.
  262. *
  263. *   data selection
  264. *    SELECT ZZSR_NUMBER ZZCOMPANY_CODE ZZCOST_CENTER ZZDATE ZZSERVICE_TYPE ZZRQSTTS CREA_USER CREA_TIME CHNG_USER CHNG_TIME  FROM ZFI_DISPOSAL_REQ
  265. *           INTO  TABLE me->t_data.
  266.       me->t_data = it_reqs.
  267.     IF sy-dbcnt IS INITIAL.
  268.       MESSAGE s398(00) WITH 'No data selected'.
  269.     ENDIF.
  270. *
  271. *   export to memory
  272.     EXPORT data = me->t_data TO MEMORY ID sy-cprog.
  273. *
  274.   ENDMETHOD.                    "get_data
  275. *
  276.   METHOD generate_output.
  277. *
  278. *   local data
  279.     DATA: lo_dock TYPE REF TO cl_gui_docking_container,
  280.           lo_cont TYPE REF TO cl_gui_container,
  281.           lo_alv  TYPE REF TO cl_salv_table.
  282. *
  283. *   import output table from the memory and free afterwards
  284.     IMPORT data = me->t_data FROM MEMORY ID sy-cprog.
  285.     FREE MEMORY ID sy-cprog.
  286. *
  287. *   Only if there is some data
  288.     CHECK me->t_data IS NOT INITIAL.
  289. *
  290. *   Create a docking control at bottom
  291.     CHECK lo_dock IS INITIAL.
  292.     CREATE OBJECT lo_dock
  293.       EXPORTING
  294.         repid = sy-cprog
  295.         dynnr = sy-dynnr
  296.         ratio = 80
  297.         side  = cl_gui_docking_container=>dock_at_bottom
  298.         name  = 'DOCK_CONT'.
  299.     IF sy-subrc <> 0.
  300.       MESSAGE 'Error in the Docking control' TYPE 'S'.
  301.     ENDIF.
  302. *
  303. *   Create a SALV for output
  304.     CHECK lo_alv IS INITIAL.
  305.     TRY.
  306. *       Narrow Casting: To initialize custom container from
  307. *       docking container
  308.         lo_cont ?= lo_dock.
  309. *
  310. *       SALV Table Display on the Docking container
  311.         CALL METHOD cl_salv_table=>factory
  312.           EXPORTING
  313.             list_display   = if_salv_c_bool_sap=>false
  314.             r_container    = lo_cont
  315.             container_name = 'DOCK_CONT'
  316.           IMPORTING
  317.             r_salv_table   = lo_alv
  318.           CHANGING
  319.             t_table        = me->t_data.
  320.       CATCH cx_salv_msg .
  321.     ENDTRY.
  322. *
  323. *   Pf status
  324.     DATA: lo_functions TYPE REF TO cl_salv_functions_list.
  325.     lo_functions = lo_alv->get_functions( ).
  326.     lo_functions->set_default( abap_true ).
  327. *
  328. *   output display
  329.     lo_alv->display( ).
  330. *
  331.   ENDMETHOD.                    "generate_output
  332. *
  333.  
  334.  
  335.  
  336.  
  337.  
  338. ENDCLASS.
  339.  
  340.  FORM SEARCH.
  341.    WRITE : / 'WELCOME'.
  342.    wa_req-ZZCOMPANY_CODE = COM_CODE.
  343.    wa_req-ZZCOST_CENTER  = COST_CNT.
  344.    wa_req-ZZSR_NUMBER  = SER_NO.
  345.    wa_req-ZZDATE = DATE.
  346.    wa_req_status-ZZCODE = REQ_STS.
  347.    wa_service-ZZCODE = SRV_TYPE.
  348.  
  349.  
  350. CALL FUNCTION 'Z_REQ_FN_INQUIRY'
  351.   EXPORTING
  352.     WA_REQ              = WA_REQ
  353.     WA_REQ_STATUS       = WA_REQ_STATUS
  354.     WA_SERVICE          = WA_SERVICE
  355.   TABLES
  356.     QT_REQ              = it_reqs
  357.           .
  358. loop at it_reqs INTO wa_reqs.
  359. *  MESSAGE ID 'ZALV_ERRORS' TYPE 'I' NUMBER '000' WITH wa_reqs-zzcompany_code.
  360.   ENDLOOP.
  361.  
  362.  ENDFORM.
  363.  
  364. FORM RESET.
  365.   CLEAR COST_CNT.
  366.   CLEAR SER_NO.
  367.   CLEAR DATE.
  368.   CLEAR REQ_STS.
  369.   CLEAR SRV_TYPE.
  370. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement