Advertisement
Nuriev_ii

falv error

Jun 13th, 2020
2,832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 13.83 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTORO_TEST
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT ZTORO_TEST.
  10. *DATA: sflight TYPE STANDARD TABLE OF sflight.
  11. TYPES: BEGIN OF ty_data_general_additional,
  12.   miwarpl type mhio-warpl,
  13.   mabnum  type mhio-ABNUM,
  14.  
  15.   row_color type char4,
  16. END OF   ty_data_general_additional.
  17. TYPES: BEGIN OF ty_data_general,
  18.   iwerk type viaufks-IWERK,
  19.   swerk type viaufks-SWERK,
  20.   bukrs type viaufks-bukrs,
  21.   auart type viaufks-auart,
  22.   aufnr type viaufks-aufnr,
  23.   ktext type viaufks-ktext,
  24.   gstrp type viaufks-gstrp,
  25.   gltrp type viaufks-gltrp,
  26.  
  27.   ftrms type viaufks-ftrms,
  28.   addat type viaufks-addat,
  29.   tplnr type viaufks-tplnr,
  30.   pltxt type iflotx-pltxt,
  31.   equnr type viaufks-equnr,
  32.   eqktx type eqkt-eqktx,
  33.   bautl type viaufks-bautl,
  34.   plnty type viaufks-plnty,
  35.   plnnr type viaufks-plnnr,
  36.   plnal type viaufks-plnal,
  37.   zaehl type viaufks-zaehl,
  38.   strat type plko-strat,
  39.   warpl type viaufks-warpl,
  40.   wapos type viaufks-wapos,
  41.   abnum type mhio-abnum,
  42.   plandate type mhio-gstrp,
  43.   mzaehl type mhis-zaehl,
  44.   zpuffn type t351p-puffn,
  45.   zsttag type mpos-zsttag,
  46. *  kzyk1 type t351p-kzyk1,
  47.  
  48.  
  49.   point type mmpt-point,
  50.   kridate type imrg-idate,
  51.   checkidate type imrg-idate
  52.   .
  53.         include TYPE ty_data_general_additional.
  54. TYPES: END OF ty_data_general.
  55. data: gt_data type TABLE OF   ty_data_general.
  56. CLASS lcl_test DEFINITION INHERITING FROM zcl_falv.
  57.   PUBLIC SECTION.
  58.     class-data:
  59.     mr_changed type REF TO CL_ALV_CHANGED_DATA_PROTOCOL,
  60.     mo_container type REF TO CL_GUI_CONTAINER,
  61.     mo_bdc TYPE REF TO zalrcl_bdc_ext.
  62.     methods: get_data,
  63.              prepare_layout.
  64.  
  65.   PROTECTED SECTION.
  66.     "redefinition of event handler
  67.  
  68.     METHODS:
  69.             EVF_MENU_BUTTON REDEFINITION ,
  70.            evf_user_command REDEFINITION ,
  71.            menu_1_1,
  72.            menu_1_2,
  73.            menu_1_3,
  74.            menu_1_4,
  75.            menu_1_5,
  76.            menu_1_6,
  77.            menu_1_7,
  78.            menu_1_8,
  79.            hide_additional IMPORTING iv type abap_bool OPTIONAL.
  80.  
  81.   PRIVATE SECTION.
  82.     METHODs show_applog.
  83.     METHODs hide_applog .
  84. ENDCLASS.                    "lcl_test DEFINITION
  85. DATA falv TYPE REF TO lcl_test.
  86. DATA: lo_falv TYPE REF TO zcl_falv.
  87. CLASS lcl_test2 DEFINITION INHERITING FROM zcl_falv.
  88.   PUBLIC SECTION.
  89.   PROTECTED SECTION.
  90.   PRIVATE SECTION.
  91. ENDCLASS.
  92. *----------------------------------------------------------------------*
  93. *       CLASS lcl_test IMPLEMENTATION
  94. *----------------------------------------------------------------------*
  95. *
  96. *----------------------------------------------------------------------*
  97. CLASS lcl_test IMPLEMENTATION.
  98. *  METHOD EVF_BEFORE_USER_COMMAND.
  99. *  BREAK-POINT.
  100. *  ENDMETHOD.
  101.   METHOD menu_1_1.
  102.     data:
  103.      lt_ROW_NO    TYPE LVC_T_ROID,
  104.      lv_warpl     type rmipm-warpl,
  105.      lv_LRMDT     type rmipm-LRMDT
  106.      .
  107.  
  108.  
  109.     FIELD-SYMBOLS: <fs_outab> like LINE OF gt_data,
  110.                    <fs_no> like LINE OF lt_ROW_NO.
  111.  
  112.     me->GET_SELECTED_ROWS(
  113.       importing
  114.         ET_ROW_NO     = lt_ROW_NO
  115.     ).
  116.     LOOP AT  lt_ROW_NO ASSIGNING <fs_no> .
  117.       CLEAR: lv_warpl, lv_LRMDT.
  118.       READ TABLE gt_data  ASSIGNING <fs_outab> INDEX <fs_no>-ROW_ID.
  119.       CASE <fs_outab>-WARPL.
  120.         WHEN space.
  121.           mr_changed->ADD_PROTOCOL_ENTRY(
  122.              exporting
  123.                I_MSGID     = 'ZALR_BC'
  124.                I_MSGTY     = 'E'
  125.                I_MSGNO     = 000
  126.                I_MSGV1     = 'Работы не подлежат планированию в ППР/ нет плана '
  127.                I_FIELDNAME = 'WARPL'
  128.                I_ROW_ID    = <fs_no>-ROW_ID
  129.            ).
  130.           CONTINUE.
  131.         WHEN OTHERS.
  132.           lv_warpl = <fs_outab>-WARPL.
  133.           CASE <fs_outab>-POINT.
  134.             WHEN space.
  135.               data: lt_fields TYPE TABLE OF SVAL.
  136.               FIELD-SYMBOLS: <fs_sval> like LINE OF lt_fields.
  137.               APPEND INITIAL LINE TO lt_fields ASSIGNING <fs_sval>.
  138.               <fs_sval>-TABNAME     = 'MPOS'.
  139.               <fs_sval>-FIELDNAME   = 'ZSTTAG'.
  140.  
  141.               CALL FUNCTION 'POPUP_GET_VALUES'
  142.                 EXPORTING
  143. *                     NO_VALUE_CHECK        = ' '
  144.                   POPUP_TITLE           = 'Введите дата начала ППР'
  145. *                     START_COLUMN          = '5'
  146. *                     START_ROW             = '5'
  147. *                   IMPORTING
  148. *                     RETURNCODE            =
  149.                 TABLES
  150.                   FIELDS                = lt_fields
  151.                EXCEPTIONS
  152.                  ERROR_IN_FIELDS       = 1
  153.                  OTHERS                = 2
  154.                         .
  155.               IF SY-SUBRC <> 0.
  156. * Implement suitable error handling here
  157.                 mr_changed->ADD_PROTOCOL_ENTRY(
  158.              exporting
  159.                I_MSGID     = sy-MSGID
  160.                I_MSGTY     = sy-MSGTY
  161.                I_MSGNO     = sy-MSGNO
  162.               I_MSGV1     = sy-MSGV1
  163.               I_MSGV2     = sy-MSGV2
  164.               I_MSGV3     = sy-MSGV3
  165.               I_MSGV4     = sy-MSGV4
  166.                I_FIELDNAME = 'ZSTTAG'
  167.                I_ROW_ID    = <fs_no>-ROW_ID
  168. *                   I_TABIX     = lv
  169.            ).
  170.               else.
  171.                 READ TABLE lt_fields ASSIGNING <fs_sval> INDEX 1.
  172.                 LV_LRMDT = <fs_outab>-ZSTTAG  = <fs_sval>-VALUE.
  173.               ENDIF.
  174.  
  175.             WHEN OTHERS.
  176.               "! Нужно спросить у консультанта
  177.               mr_changed->ADD_PROTOCOL_ENTRY(
  178.               exporting
  179.                 I_MSGID     = 'ZALR_BC'
  180.                 I_MSGTY     = 'E'
  181.                 I_MSGNO     = 000
  182.                 I_MSGV1     = 'Для заказа Торо '
  183.                 I_MSGV2     = <fs_outab>-AUFNR
  184.                 I_MSGV3     = ' нет даты начального пкета ППР/дата КР'
  185.                 I_FIELDNAME = 'AUFNR'
  186.                 I_ROW_ID    = <fs_no>-ROW_ID
  187.             ).
  188.               CONTINUE.
  189.           ENDCASE.
  190.  
  191.       ENDCASE.
  192.     ENDLOOP.
  193.   ENDMETHOD.
  194.   METHOD menu_1_2.
  195.   endmethod.
  196.   METHOD menu_1_3.
  197.   endmethod.
  198.   METHOD menu_1_4.
  199.   endmethod.
  200.   METHOD menu_1_5.
  201.   endmethod.
  202.   METHOD menu_1_6.
  203.   endmethod.
  204.   METHOD menu_1_7.
  205.   endmethod.
  206.   METHOD menu_1_8.
  207.  
  208.     DATA falv2 TYPE REF TO lcl_test2.
  209.     DATA: lo_falv2 TYPE REF TO zcl_falv.
  210.     LCL_TEST2=>create( exporting  i_subclass = cl_abap_classdescr=>describe_by_name( p_name = 'LCL_TEST2' )
  211.       I_POPUP = abap_true
  212.                 CHANGING ct_table = gt_data  rv_falv = lo_falv2   ) .
  213.     falv2 ?= lo_falv2.
  214.     falv2->display(  ).
  215.     me->DISPLAY( ).
  216.   endmethod.
  217.   METHOD prepare_layout.
  218.     me->hide_additional(  ).
  219.     me->layout->SET_SEL_MODE( IV_VALUE = 'A' ).
  220.     me->LAYOUT->SET_INFO_FNAME( 'ROW_COLOR' ).
  221.     "In default when we use full screen FALV, Grid toolbar is switched off, we must turn it on )
  222.     me->layout->set_no_toolbar( abap_false ).
  223.  
  224.     me->add_button(
  225.       EXPORTING
  226.         iv_function  = zcl_falv_dynamic_status=>b_01
  227.         iv_icon      = icon_activate
  228.         iv_butn_type = me->BUTTON_MENU
  229.          iv_text      = 'Операции'
  230.     ).
  231.  
  232.     me->add_button(
  233.       EXPORTING
  234.         iv_function  = zcl_falv_dynamic_status=>b_02
  235.         iv_icon      = icon_active_inactive
  236.         iv_butn_type = me->BUTTON_MENU
  237.          iv_text      = 'Массовые операции'
  238.     ).
  239.  
  240.     mo_container = me->split_container->GET_CONTAINER(  ROW       = 2   COLUMN    = 1     ).
  241.     CREATE OBJECT mr_changed
  242.       EXPORTING
  243.         I_CALLING_ALV = me.
  244.  
  245.     FIELD-SYMBOLS: <fs_fcat> like LINE OF me->FCAT.
  246.     LOOP AT me->FCAT ASSIGNING <fs_fcat>.
  247.       <fs_fcat>-COLTEXT = <fs_fcat>-SCRTEXT_L.
  248.     ENDLOOP.
  249.     mr_changed->MT_FIELDCATALOG = me->FCAT.
  250.  
  251.  
  252.   ENDMETHOD.
  253.   METHOD hide_additional.
  254.     data:
  255.     lo_struct_descr type REF TO cl_abap_structdescr,
  256.     lt_struct_fields type cl_abap_structdescr=>COMPONENT_TABLE,
  257.     ls type TY_DATA_GENERAL_ADDITIONAL.
  258.     FIELD-SYMBOLS: <fs_struct> like LINE OF LT_STRUCT_FIELDS.
  259.     CASE IV.
  260.       WHEN abap_true.
  261.  
  262.         lo_struct_descr ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( ls ).
  263.         LT_STRUCT_FIELDS = lo_struct_descr->GET_COMPONENTS( ).
  264.  
  265.         LOOP AT LT_STRUCT_FIELDS ASSIGNING <fs_struct>.
  266.           me->COLUMN( |{ <fs_struct>-NAME }| )->SET_NO_OUT( abap_true  ).
  267.         ENDLOOP.
  268.       WHEN OTHERS.
  269.  
  270.     ENDCASE.
  271.   ENDMETHOD.
  272.   method get_data.
  273.     FIELD-SYMBOLS: <fs> like LINE OF gt_data.
  274.     SELECT *
  275.   from viaufks
  276.   into CORRESPONDING FIELDS OF TABLE gt_data.
  277.  
  278.  
  279.  
  280.  
  281.   ENDMETHOD.
  282.   METHOD hide_applog.
  283.     IF split_container IS NOT INITIAL.
  284.       split_container->set_row_sash(
  285.         EXPORTING
  286.           id                =  1   " Row Splitter Bar ID
  287.           type              =  split_container->type_sashvisible   " Attribute
  288.           value             =  0   " Value
  289.         EXCEPTIONS
  290.           cntl_error        = 1
  291.           cntl_system_error = 2
  292.           OTHERS            = 3
  293.       ).
  294.       IF sy-subrc <> 0.
  295.       ENDIF.
  296.       split_container->set_row_height(
  297.         EXPORTING
  298.           id                =   2 " Row ID
  299.           height            =   0  " Height
  300.         EXCEPTIONS
  301.           cntl_error        = 1
  302.           cntl_system_error = 2
  303.           OTHERS            = 3
  304.       ).
  305.       IF sy-subrc <> 0.
  306.       ENDIF.
  307.     ENDIF.
  308.   ENDMETHOD.                    "hide_applog
  309.   METHOD show_applog.
  310.     IF split_container IS NOT INITIAL.
  311.       split_container->set_row_sash(
  312.         EXPORTING
  313.           id                =  1   " Row Splitter Bar ID
  314.           type              =  split_container->type_sashvisible   " Attribute
  315.           value             =  1   " Value
  316.         EXCEPTIONS
  317.           cntl_error        = 1
  318.           cntl_system_error = 2
  319.           OTHERS            = 3
  320.       ).
  321.       IF sy-subrc <> 0.
  322.       ENDIF.
  323.       split_container->get_row_height(
  324.         EXPORTING
  325.           id                =  2   " Row ID
  326.         IMPORTING
  327.           result            =  height   " Result Code
  328.         EXCEPTIONS
  329.           cntl_error        = 1
  330.           cntl_system_error = 2
  331.           OTHERS            = 3
  332.       ).
  333.       IF sy-subrc EQ 0 AND height EQ 0.
  334.         split_container->set_row_height(
  335.           EXPORTING
  336.             id                =   2 " Row ID
  337.             height            =   15  " Height
  338.           IMPORTING
  339.             result           = result
  340.           EXCEPTIONS
  341.             cntl_error        = 1
  342.             cntl_system_error = 2
  343.             OTHERS            = 3
  344.         ).
  345.         IF sy-subrc <> 0.
  346.         ENDIF.
  347.       ENDIF.
  348.     ENDIF.
  349.   ENDMETHOD.
  350.   METHOD EVF_MENU_BUTTON.
  351.     CASE e_ucomm.
  352.       WHEN zcl_falv_dynamic_status=>b_01.
  353.         e_object->ADD_FUNCTION(
  354.           exporting
  355.             FCODE             = 'Menu_1_1'
  356.             TEXT              = 'Рассчитать плановые даты ППР' ).
  357.  
  358.         e_object->ADD_FUNCTION(
  359.           exporting
  360.             FCODE             = 'Menu_1_2'
  361.             TEXT              = 'Создать отзывы ППР за период').
  362.  
  363.         e_object->ADD_FUNCTION(
  364.          exporting
  365.          FCODE             = 'Menu_1_3'
  366.          TEXT              = 'Изменить плановые даты' ).
  367.  
  368.         e_object->ADD_FUNCTION(
  369.           exporting
  370.           FCODE             = 'Menu_1_4'
  371.           TEXT              = 'Пропуск отзыва' ).
  372.  
  373.         e_object->ADD_FUNCTION(
  374.            exporting
  375.            FCODE             = 'Menu_1_5'
  376.            TEXT              = 'Ввести дату последего КР' ).
  377.  
  378.         e_object->ADD_FUNCTION(
  379.            exporting
  380.            FCODE             = 'Menu_1_6'
  381.            TEXT              = 'Новый отсчет наработки после КР' ).
  382.  
  383.         e_object->ADD_FUNCTION(
  384.            exporting
  385.            FCODE             = 'Menu_1_7'
  386.            TEXT              = 'Добавить данные ППР' ).
  387.  
  388.         e_object->ADD_FUNCTION(
  389.            exporting
  390.            FCODE             = 'Menu_1_8'
  391.            TEXT              = 'Открыть данные о наработке' ).
  392.  
  393.       WHEN zcl_falv_dynamic_status=>b_02.
  394.         e_object->ADD_FUNCTION(
  395.           exporting
  396.             FCODE             = 'MyMenuFunc2'
  397.             TEXT              = 'MyMenuFunc2'
  398.   ).
  399.     ENDCASE.
  400.   ENDMETHOD.
  401.   METHOD evf_user_command.
  402.  
  403.     IF mr_changed is not INITIAL.
  404.       mr_changed->REFRESH_PROTOCOL( ).
  405.       mr_changed->FREE( ).
  406.     ENDIF.
  407.  
  408.     CASE e_ucomm.
  409.       WHEN 'Menu_1_1'.
  410.         me->menu_1_1( ).
  411.       WHEN 'Menu_1_2'.
  412.         me->menu_1_2( ).
  413.       WHEN 'Menu_1_3'.
  414.         me->menu_1_3( ).
  415.       WHEN 'Menu_1_4'.
  416.         me->menu_1_4( ).
  417.       WHEN 'Menu_1_5'.
  418.         me->menu_1_5( ).
  419.       WHEN 'Menu_1_6'.
  420.         me->menu_1_6( ).
  421.       WHEN 'Menu_1_7'.
  422.         me->menu_1_7( ).
  423.       WHEN 'Menu_1_8'.
  424.         me->menu_1_8( ).
  425.     ENDCASE.
  426.  
  427.     me->SOFT_REFRESH( ).
  428.     IF mr_changed->mt_protocol IS NOT INITIAL.
  429.       mr_changed->DISPLAY_PROTOCOL(
  430.         exporting
  431.             I_CONTAINER        = mo_container ).
  432.       show_applog( ).
  433.     ELSE.
  434.       hide_applog( ).
  435.     ENDIF.
  436.  
  437.  
  438.   ENDMETHOD.                    "evt_user_command
  439.  
  440. ENDCLASS.                    "lcl_test IMPLEMENTATION
  441. CLASS LCL_TEST2 IMPLEMENTATION.
  442. ENDCLASS.
  443.  
  444. START-OF-SELECTION.
  445.  
  446.  
  447.  
  448.   lcl_test=>create( exporting  i_subclass = cl_abap_classdescr=>describe_by_name( p_name = 'LCL_TEST' )
  449.       i_applog_embedded = 'X'
  450.           CHANGING ct_table = gt_data  rv_falv = lo_falv   ) .
  451.   falv ?= lo_falv.
  452.   falv->title_v1 = 'ZDEMO_FALV05'.
  453.  
  454.   falv->gui_status->fully_dynamic = abap_true .
  455.   falv->GET_DATA( ).
  456.   falv->prepare_layout(  ).
  457.   falv->display( ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement