Advertisement
brunocsq

ztrr008

Aug 7th, 2019
830
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 12.79 KB | None | 0 0
  1. *xxxxxxxx*----------------------------------------------------------------------*
  2. *              P R O J E T O   <XXXXXXXXXXXXXXXXXXXXXXXX>              *
  3. *----------------------------------------------------------------------*
  4. * Consultoria: LIT Solutions                                           *
  5. * Responsável: Bruno Cezar S Quintiliano                               *
  6. * Solicitante: Gerson Livio                                            *
  7. * Data desenv: 29/07/2019                                              *
  8. * Tipo de prg: ALV                                                     *
  9. * Objetivo...: Estudo de ALV com tabelas de Voo                        *
  10. *----------------------------------------------------------------------*
  11. *                   .::HISTÓRICO DE MODIFICAÇÃO::.                     *
  12. *----------------------------------------------------------------------*
  13. *  ID  |    Data    |  Request   | Alteração                           *
  14. *----------------------------------------------------------------------*
  15. *      |            |            |                                     *
  16. *----------------------------------------------------------------------*
  17. REPORT ztrr0008 NO STANDARD PAGE HEADING MESSAGE-ID 00.
  18.  
  19. TYPE-POOLS: slis.
  20.  
  21. *----------------------------------------------------------------------*
  22. * TABLES (Tabelas/estruturas do sistema)                               *
  23. *----------------------------------------------------------------------*
  24. TABLES: spfli,
  25.         sflight,
  26.         sbook,
  27.         scustom.
  28.  
  29. *----------------------------------------------------------------------*
  30. * Tipos de dados                                                       *
  31. *----------------------------------------------------------------------*
  32. TYPES: BEGIN OF ty_spfli,
  33.          carrid    TYPE spfli-carrid,
  34.          connid    TYPE spfli-connid,
  35.          countryfr TYPE spfli-carrid,
  36.          cityfrom  TYPE spfli-countryfr,
  37.          airpfrom  TYPE spfli-airpfrom,
  38.          countryto TYPE spfli-countryto,
  39.          cityto    TYPE spfli-cityto,
  40.          airpto    TYPE spfli-airpto,
  41.        END OF ty_spfli,
  42.  
  43.        BEGIN OF ty_sflight,
  44.          carrid TYPE sflight-carrid,
  45.          connid TYPE sflight-connid,
  46.          fldate TYPE sflight-fldate,
  47.          price  TYPE sflight-price,
  48.        END OF ty_sflight,
  49.  
  50.        BEGIN OF ty_sbook,
  51.          carrid   TYPE sbook-carrid,
  52.          connid   TYPE sbook-connid,
  53.          fldate   TYPE sbook-fldate,
  54.          bookid   TYPE sbook-bookid,
  55.          customid TYPE sbook-customid,
  56.          custtype TYPE sbook-custtype,
  57.          smoker   TYPE sbook-smoker,
  58.          class    TYPE sbook-class,
  59.        END OF ty_sbook,
  60.  
  61.        BEGIN OF ty_scustom,
  62.          id   TYPE scustom-id,
  63.          name TYPE scustom-name,
  64.          form TYPE scustom-form,
  65.        END OF ty_scustom,
  66.  
  67.        BEGIN OF ty_saida,
  68.          carrid   TYPE sbook-carrid,
  69.          connid   TYPE sbook-connid,
  70.          fldate   TYPE sbook-fldate,
  71.          customid TYPE sbook-customid,
  72.          id       TYPE scustom-id,
  73.          name     TYPE scustom-name,
  74.          form     TYPE scustom-form,
  75.        END OF ty_saida.
  76.  
  77. *----------------------------------------------------------------------*
  78. * Tabelas internas                                                     *
  79. *----------------------------------------------------------------------*
  80. DATA: t_spfli    TYPE TABLE OF ty_spfli.
  81. DATA: t_sflight  TYPE TABLE OF ty_sflight.
  82. DATA: t_sbook    TYPE TABLE OF ty_sbook.
  83. DATA: t_scustom  TYPE TABLE OF ty_scustom.
  84. DATA: t_saida    TYPE TABLE OF ty_saida.
  85. DATA: t_fieldcat  TYPE slis_t_fieldcat_alv.
  86. DATA: t_events    TYPE slis_t_event.
  87. DATA: t_list_top_of_page TYPE slis_t_listheader.
  88.  
  89. *----------------------------------------------------------------------*
  90. * Variáveis e Workareas                                                *
  91. *----------------------------------------------------------------------*
  92. DATA: wv_repid  LIKE sy-repid.
  93.  
  94. *----------------------------------------------------------------------*
  95. * Inicializações                                                       *
  96. *----------------------------------------------------------------------*
  97. INITIALIZATION.
  98.   wv_repid = sy-repid.
  99.  
  100. *----------------------------------------------------------------------*
  101. * Tela de seleção                                                      *
  102. *----------------------------------------------------------------------*
  103.   SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-s01.
  104.   PARAMETERS p_carrid TYPE sflight-carrid OBLIGATORY.
  105.   PARAMETERS p_connid TYPE sflight-connid OBLIGATORY.
  106.   PARAMETERS p_fldate TYPE sflight-fldate.
  107.   PARAMETERS p_custid TYPE sbook-customid.
  108. *SELECT-OPTIONS:.
  109.   SELECTION-SCREEN END OF BLOCK b1.
  110.  
  111. *----------------------------------------------------------------------*
  112. * Consistência em campos de tela de seleção                            *
  113. *----------------------------------------------------------------------*
  114. AT SELECTION-SCREEN.
  115.  
  116. *----------------------------------------------------------------------*
  117. * Lógica principal                                                     *
  118. *----------------------------------------------------------------------*
  119. START-OF-SELECTION.
  120.  
  121.   PERFORM f_seleciona_dados.
  122.  
  123.   PERFORM f_organiza_dados.
  124.  
  125.   PERFORM f_fieldcat_init  USING t_fieldcat[].
  126.  
  127.   PERFORM f_eventtab_build USING t_events[].
  128.  
  129.   PERFORM f_comment_build  USING t_list_top_of_page[].
  130.  
  131. *----------------------------------------------------------------------*
  132. * Saída                                                                *
  133. *----------------------------------------------------------------------*
  134. END-OF-SELECTION.
  135.  
  136.   PERFORM f_exibe_relatorio.
  137.  
  138. FORM f_seleciona_dados. "faz a busca
  139.  
  140.   PERFORM f_sapgui_progress_indicator
  141.   USING 'Selecionando dados. Aguarde...'.
  142.  
  143. * Limpar tabela
  144.   REFRESH t_sbook.
  145.  
  146.     SELECT carrid connid fldate bookid customid custtype smoker class
  147.       FROM sbook
  148.       INTO TABLE t_sbook
  149.       WHERE carrid EQ p_carrid.
  150.  
  151.   IF sy-subrc EQ 0.
  152.  
  153.     SELECT carrid connid countryfr cityfrom airpfrom countryto cityto airpto
  154.       FROM spfli
  155.       INTO TABLE t_spfli
  156.         FOR ALL ENTRIES IN t_sbook
  157.       WHERE carrid EQ t_sbook-carrid.
  158.  
  159.   ENDIF.
  160.  
  161. ENDFORM.
  162.  
  163. *&---------------------------------------------------------------------*
  164. *& Form F_ORGANIZA_DADOS
  165. *&---------------------------------------------------------------------*
  166. FORM f_organiza_dados .
  167.  
  168.   IF t_sbook IS NOT INITIAL.
  169.    
  170.  
  171.   ENDIF.
  172.  
  173.  
  174. ENDFORM.
  175.  
  176. *&---------------------------------------------------------------------
  177. *&      Form  ALV
  178. *&---------------------------------------------------------------------
  179. FORM f_exibe_relatorio.
  180. *  CHECK [] IS NOT INITIAL.
  181.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  182.     EXPORTING
  183. *     I_INTERFACE_CHECK  = ' '
  184. *     I_BYPASSING_BUFFER = ' '
  185. *     I_BUFFER_ACTIVE    = ' '
  186.       i_callback_program = wv_repid
  187. *     I_CALLBACK_PF_STATUS_SET          = ' '
  188. *     I_CALLBACK_USER_COMMAND           = ' '
  189. *     I_CALLBACK_TOP_OF_PAGE            = ' '
  190. *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
  191. *     I_CALLBACK_HTML_END_OF_LIST       = ' '
  192. *     I_STRUCTURE_NAME   =
  193. *     I_BACKGROUND_ID    = ' '
  194. *     I_GRID_TITLE       =
  195. *     I_GRID_SETTINGS    =
  196. *     IS_LAYOUT          =
  197.       it_fieldcat        = t_fieldcat
  198. *     IT_EXCLUDING       =
  199. *     IT_SPECIAL_GROUPS  =
  200. *     IT_SORT            =
  201. *     IT_FILTER          =
  202. *     IS_SEL_HIDE        =
  203. *     I_DEFAULT          = 'X'
  204.       i_save             = 'A'
  205. *     IS_VARIANT         =
  206.       it_events          = t_events
  207. *     IT_EVENT_EXIT      =
  208. *     IS_PRINT           =
  209. *     IS_REPREP_ID       =
  210. *     I_SCREEN_START_COLUMN             = 0
  211. *     I_SCREEN_START_LINE               = 0
  212. *     I_SCREEN_END_COLUMN               = 0
  213. *     I_SCREEN_END_LINE  = 0
  214. *     I_HTML_HEIGHT_TOP  = 0
  215. *     I_HTML_HEIGHT_END  = 0
  216. *     IT_ALV_GRAPHICS    =
  217. *     IT_HYPERLINK       =
  218. *     IT_ADD_FIELDCAT    =
  219. *     IT_EXCEPT_QINFO    =
  220. *     IR_SALV_FULLSCREEN_ADAPTER        =
  221. *   IMPORTING
  222. *     E_EXIT_CAUSED_BY_CALLER           =
  223. *     ES_EXIT_CAUSED_BY_USER            =
  224.     TABLES
  225.       t_outtab           = t_saida
  226.     EXCEPTIONS
  227.       program_error      = 1
  228.       OTHERS             = 2.
  229.   IF sy-subrc <> 0.
  230.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  231.   ENDIF.
  232.  
  233. ENDFORM.
  234.  
  235. *----------------------------------------------------------------------*
  236. * Form indicação de progrsso                                                             *
  237. *----------------------------------------------------------------------*
  238. FORM f_sapgui_progress_indicator USING VALUE(pv_text).
  239.  
  240.   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  241.     EXPORTING
  242.       text = pv_text.
  243.  
  244. ENDFORM.
  245. FORM f_eventtab_build USING pt_events TYPE slis_t_event.
  246. * Variáveis
  247.   DATA: lf_event TYPE slis_alv_event.
  248. * Obter eventos permitidos para lista grid
  249.   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
  250.     EXPORTING
  251.       i_list_type = 0
  252.     IMPORTING
  253.       et_events   = pt_events.
  254. * Verificar se evento foi encontrado
  255. * Verificar se evento foi encontrado
  256.   LOOP AT pt_events INTO lf_event.
  257.     CASE lf_event-name.
  258. *      WHEN slis_ev_user_command.
  259. *        MOVE 'F_USER_COMMAND' TO lf_event-form.
  260.       WHEN slis_ev_top_of_page.
  261.         MOVE 'F_TOP_OF_PAGE' TO lf_event-form.
  262. *      WHEN slis_ev_top_of_list.
  263. *        MOVE 'F_TOP_OF_LIST' TO lf_event-form.
  264. *      WHEN slis_ev_end_of_page.
  265. *        MOVE 'F_END_OF_PAGE' TO lf_event-form.
  266. *      WHEN slis_ev_end_of_list.
  267. *        MOVE 'F_END_OF_LIST' TO lf_event-form.
  268.     ENDCASE.
  269.     MODIFY pt_events FROM lf_event.
  270.   ENDLOOP.
  271. *
  272. ENDFORM.
  273. *&---------------------------------------------------------------------
  274. *&      Form  cabeçalho
  275. *&---------------------------------------------------------------------
  276. FORM f_top_of_page.                                         "#EC CALLED
  277.   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  278.     EXPORTING
  279.       it_list_commentary = t_list_top_of_page.
  280. ENDFORM.
  281. *&---------------------------------------------------------------------
  282. *&      Form cabecalho
  283. *&---------------------------------------------------------------------
  284. FORM f_comment_build USING pt_top_of_page TYPE slis_t_listheader.
  285. * Variáveis
  286.   DATA: lf_line TYPE slis_listheader.
  287.   DATA: lv_data_hd(30),
  288.         lv_data(10),
  289.         lv_hora(08).
  290. *
  291. * Cabeçalho
  292.   CLEAR lf_line.
  293.   lf_line-key = 'Título:'.
  294.   lf_line-typ = 'S'.
  295.   lf_line-info = sy-title.
  296.   APPEND lf_line TO pt_top_of_page.
  297. * Informações
  298. * Montar data - hora
  299.   CLEAR lf_line.
  300.   lf_line-typ = 'S'.
  301.   lf_line-key = 'Report'.
  302.   lf_line-info = sy-repid.
  303.   APPEND lf_line TO pt_top_of_page.
  304. * Formatar data - hora
  305.   WRITE sy-datum TO lv_data.
  306.   WRITE sy-uzeit TO lv_hora.
  307.   CONCATENATE lv_data '-' lv_hora INTO lv_data_hd SEPARATED BY space.
  308. * Montar data - hora
  309.   CLEAR lf_line.
  310.   lf_line-typ = 'S'.
  311.   lf_line-key = 'Data - Hora'.
  312.   lf_line-info = lv_data_hd.
  313.   APPEND lf_line TO pt_top_of_page.
  314. * Comentário
  315.   CLEAR lf_line.
  316.   lf_line-typ = 'A'.
  317.   lf_line-info = 'Relatorio sobre voo x passageiro'.
  318.   APPEND lf_line TO pt_top_of_page.
  319. ENDFORM.
  320.  
  321. *&---------------------------------------------------------------------
  322. *&      Form  monta_alv
  323. *&---------------------------------------------------------------------
  324. FORM f_fieldcat_init USING pt_fieldcat TYPE slis_t_fieldcat_alv.
  325.  
  326. * Estruturas
  327.   DATA: lf_fieldcat TYPE slis_fieldcat_alv.
  328.  
  329. * Limpar tabela
  330.   CLEAR pt_fieldcat[].
  331.  
  332.   PERFORM:
  333.     f_add_fieldcat TABLES pt_fieldcat USING 'CARRID'    'SBOOK' '5' ,
  334.     f_add_fieldcat TABLES pt_fieldcat USING 'CONNID'    'SBOOK' '8' ,
  335.     f_add_fieldcat TABLES pt_fieldcat USING 'FLDATE'    'SBOOK' '9' ,
  336.     f_add_fieldcat TABLES pt_fieldcat USING 'BOOKID'    'SBOOK' '8' ,
  337.     f_add_fieldcat TABLES pt_fieldcat USING 'CUSTOMID'  'SBOOK' '8' ,
  338.     f_add_fieldcat TABLES pt_fieldcat USING 'CUSTTYPE'  'SBOOK' '3' ,
  339.     f_add_fieldcat TABLES pt_fieldcat USING 'SMOKER'    'SBOOK' '5' ,
  340.     f_add_fieldcat TABLES pt_fieldcat USING 'CLASS'     'SBOOK' '5' .
  341.  
  342. ENDFORM.
  343.  
  344. *&---------------------------------------------------------------------
  345. *&      Form  add_fieldcat
  346. *&---------------------------------------------------------------------
  347. FORM f_add_fieldcat  TABLES   pt_fieldcat TYPE slis_t_fieldcat_alv
  348.                       USING   p_fieldname
  349.                               p_ref_tabname
  350.                               p_outputlen.
  351.  
  352.   DATA: lf_fieldcat TYPE slis_fieldcat_alv.
  353.  
  354.   CLEAR lf_fieldcat.
  355.   lf_fieldcat-fieldname   = p_fieldname. " Nome do Campo
  356.   lf_fieldcat-ref_tabname = p_ref_tabname. " Tab. de Referência
  357.   lf_fieldcat-hotspot     = 'X'. " Indicador de ativo
  358.   lf_fieldcat-outputlen   = p_outputlen.
  359.   APPEND lf_fieldcat TO pt_fieldcat. " Gravar na tab. config.
  360.  
  361. ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement