First try with ALV Grid and Abap Objects

Hi,
this is my first try to write a simple report which just reads a textfile and display it in an ALV Grid. As a basis, I used some examples from SDN, but it did not work as expected
I would like just to use a docking container. I do not need a separate area for the ALV Grid. The report gives no syntax errors, but it just display the report title, nothing else. SAP R/3 Release is 4.7. Below is the source code of the report. Any idea what is missing?
*& Report  Z_PLAN_TEXT_UPLOAD                                          *
REPORT z_plan_text_upload.
INCLUDE <icon>.
* Data Declaration
DATA:
  gf_dynnr TYPE sy-dynnr,
  gf_repid TYPE sy-repid.
DATA:
  go_docking_container TYPE REF TO cl_gui_docking_container,
  go_alv_grid TYPE REF TO cl_gui_alv_grid.
DATA:
  gt_fieldcat TYPE lvc_t_fcat,
  gs_fieldcat LIKE LINE OF gt_fieldcat.
TYPES:
  BEGIN OF gy_text_input,
    firma(20)           TYPE c,
    kostenstelle(20)    TYPE c,
    datenart1(10)       TYPE c,
    planjahr(10)        TYPE c,
*    planperiode         TYPE co_perio,
    planperiode(5)      TYPE c,
    datenart2(10)       TYPE c,
    planungposition(10) TYPE c,
*    kostenart           TYPE koart,
    kostenart(10)       TYPE c,
*    planbetrag          TYPE bapicurr_d,
    planbetrag(20)      TYPE c,
  END OF gy_text_input.
DATA:
  gt_text_input TYPE TABLE OF gy_text_input,
  gs_text_input LIKE LINE OF gt_text_input.
* Local Class Definition
* Local Class Implementation
* Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK b1
  WITH FRAME TITLE text-001.
SKIP.
PARAMETERS:
  gp_file TYPE localfile,
  gp_head TYPE checkbox DEFAULT 'X'.
SKIP.
PARAMETERS:
  gp_gjahr LIKE coep-gjahr,
  gp_versn LIKE coep-versn.
SELECTION-SCREEN END OF BLOCK b1.
* Initialization
INITIALIZATION.
  DATA:
    lf_sapworkdir TYPE string.
  CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
    CHANGING
      sapworkdir            = lf_sapworkdir
    EXCEPTIONS
      get_sapworkdir_failed = 1
      cntl_error            = 2
      error_no_gui          = 3
      not_supported_by_gui  = 4
      OTHERS                = 5.
  IF sy-subrc <> 0 OR lf_sapworkdir = ''.
    CALL METHOD cl_gui_frontend_services=>directory_get_current
      CHANGING
        current_directory            = lf_sapworkdir
      EXCEPTIONS
        directory_get_current_failed = 1
        cntl_error                   = 2
        error_no_gui                 = 3
        not_supported_by_gui         = 4
        OTHERS                       = 5.
    CALL METHOD cl_gui_cfw=>flush.
  ENDIF."sy-subrc <> 0 OR sapworkdir = ''
  gp_file = lf_sapworkdir.
  gf_dynnr = sy-dynnr.
  gf_repid = sy-repid.
* At Selection-Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
  DATA:
    lt_filetable TYPE filetable,
    ls_filetable LIKE LINE OF lt_filetable,
    lt_rc TYPE i.
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
*  EXPORTING
*    WINDOW_TITLE            =
*    DEFAULT_EXTENSION       =
*    DEFAULT_FILENAME        =
*    FILE_FILTER             =
*    INITIAL_DIRECTORY       =
*    MULTISELECTION          =
*    WITH_ENCODING           =
    CHANGING
      file_table              = lt_filetable
      rc                      = lt_rc
*    USER_ACTION             =
*    FILE_ENCODING           =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  READ TABLE lt_filetable INDEX 1
    INTO
      ls_filetable.
  gp_file = ls_filetable-filename.
  CALL METHOD cl_gui_cfw=>flush.
* Start-Of-Selection
START-OF-SELECTION.
  DATA:
    lf_filename LIKE filename-fileintern.
  lf_filename = gp_file.
  CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
    EXPORTING
      i_filename                 = lf_filename
      i_servertyp                = 'PRS '
      i_fileformat               = 'TXT'
*     I_FIELD_SEPERATOR          =
      i_line_header              = gp_head
*   IMPORTING
*     E_BIN_FILELENGTH           =
   TABLES
     i_tab_receiver             = gt_text_input
   EXCEPTIONS
     file_not_found             = 1
     close_failed               = 2
     authorization_failed       = 3
     open_failed                = 4
     conversion_failed          = 5
     OTHERS                     = 6.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*------ Build the Field Catalog ---------------------------------------*
  PERFORM build_fieldcatalog
    CHANGING gt_fieldcat.
*------ Create the docking container ----------------------------------*
  IF go_docking_container IS INITIAL.
    CREATE OBJECT go_docking_container
      EXPORTING
*      PARENT                      =
        repid                       = gf_repid
        dynnr                       = gf_dynnr
*     SIDE                        = go_docking_container->DOCK_AT_bottom
*      EXTENSION                   = 200
*      STYLE                       =
*      LIFETIME                    = lifetime_default
*      CAPTION                     =
*      METRIC                      = 0
*      RATIO                       =
*      NO_AUTODEF_PROGID_DYNNR     =
*      NAME                        =
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_docking_container IS INITIAL
*------ Create the ALV Grid -------------------------------------------*
  IF go_alv_grid IS INITIAL.
    CREATE OBJECT go_alv_grid
      EXPORTING
*      I_SHELLSTYLE      = 0
*      I_LIFETIME        =
        i_parent          = go_docking_container
*      I_APPL_EVENTS     = space
*      I_PARENTDBG       =
*      I_APPLOGPARENT    =
*      I_GRAPHICSPARENT  =
*      I_NAME            =
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_alv_grid is initial
*------ Call ALV Grid -------------------------------------------------*
  CALL METHOD go_alv_grid->set_table_for_first_display
*     EXPORTING
*      I_BUFFER_ACTIVE               =
*      I_BYPASSING_BUFFER            =
*      I_CONSISTENCY_CHECK           =
*      I_STRUCTURE_NAME              =
*      IS_VARIANT                    =
*      I_SAVE                        =
*      I_DEFAULT                     = 'X'
*      IS_LAYOUT                     =
*      IS_PRINT                      =
*      IT_SPECIAL_GROUPS             =
*      IT_TOOLBAR_EXCLUDING          =
*      IT_HYPERLINK                  =
*      IT_ALV_GRAPHICS               =
*      IT_EXCEPT_QINFO               =
    CHANGING
      it_outtab                     = gt_text_input
      it_fieldcatalog               = gt_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.
*&      Form  build_fieldcatalog
*       text
*      <--P_GT_FIELDCAT  text
FORM build_fieldcatalog
  CHANGING
    pt_fieldcat TYPE lvc_t_fcat.
  DATA ls_fcat TYPE lvc_s_fcat.
  ls_fcat-fieldname = 'FIRMA' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'Firma' .
  ls_fcat-seltext = 'Firma' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'KOSTENSTELLE' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'Kostenstelle' .
  ls_fcat-seltext = 'Kostenstelle' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'DATENART1' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Datenart1' .
  ls_fcat-seltext = 'Datenart1' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANJAHR' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Planjahr' .
  ls_fcat-seltext = 'Planjahr' .
  APPEND ls_fcat TO pt_fieldcat .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANPERIODE' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '5' .
  ls_fcat-coltext = 'Planperiode' .
  ls_fcat-seltext = 'Planperiode' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'DATENART2' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Datenart2' .
  ls_fcat-seltext = 'Datenart2' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANUNGSPOSITION' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Planungsposition' .
  ls_fcat-seltext = 'Planungsposition' .
  APPEND ls_fcat TO pt_fieldcat .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'KOSTENART' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Kostenart' .
  ls_fcat-seltext = 'Kostenart' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANBETRAG' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'Planbetrag' .
  ls_fcat-seltext = 'Planbetrag' .
  APPEND ls_fcat TO pt_fieldcat .
ENDFORM.                    "build_fieldcatalog

I have added some more functionality to my report. The good thing is, the report works as it should.
BUT, I'm not really sure, whether this is a good (correct) design. The report works the following way:
1. Read planning data form text file into internal table
2. Display the internal table
3. Convert the data and display the converted result
4. Post the converted data to the system
5. Display log with messages
The main thing is, I would like to know, do i really need two dynros, to display the two different internal tables or is it possible just to use one ALV-Grid? I was not able to find another solution. Any comment or help to the report is appreciated.
*& Report  Z_PLAN_TEXT_UPLOAD_TEST                                     *
REPORT z_plan_text_upload_test.
INCLUDE <icon>.
* Data Declaration
DATA:
  gf_okcode TYPE ui_func,
  gf_balloghndl TYPE balloghndl.
DATA:
  go_docking_container TYPE REF TO cl_gui_docking_container,
  go_alv_grid_0100 TYPE REF TO cl_gui_alv_grid,
  go_alv_grid_0200 TYPE REF TO cl_gui_alv_grid.
DATA:
  gt_fieldcat TYPE lvc_t_fcat,
  gs_fieldcat LIKE LINE OF gt_fieldcat.
TYPES:
  BEGIN OF gy_text_input,
    firma(20)            TYPE c,
    kostenstelle(20)     TYPE c,
    datenart1(10)        TYPE c,
    planjahr(10)         TYPE c,
*    planperiode         TYPE co_perio,
    planperiode(5)       TYPE c,
    datenart2(10)        TYPE c,
    planungsposition(10) TYPE c,
*    kostenart           TYPE koart,
    kostenart(10)        TYPE c,
*    planbetrag          TYPE bapicurr_d,
    planbetrag(20)       TYPE c,
  END OF gy_text_input.
DATA:
  gt_text_input TYPE TABLE OF gy_text_input,
  gs_text_input LIKE LINE OF gt_text_input.
* Bapi Strukturen
DATA:
  gs_headerinfo TYPE bapiplnhdr,
  gt_indexstructure TYPE TABLE OF bapiacpstru,
  gs_indexstructure LIKE LINE OF gt_indexstructure,
  gt_coobject TYPE TABLE OF bapipcpobj,
  gs_coobject LIKE LINE OF gt_coobject,
  gt_pervalue TYPE TABLE OF bapipcpval,
  gs_pervalue LIKE LINE OF gt_pervalue,
  gt_return TYPE TABLE OF bapiret2,
  gs_return LIKE LINE OF gt_return,
  gt_control TYPE TABLE OF bapipcpctrl,
  gt_totvalue TYPE TABLE OF bapipcptot.
TYPES:
  BEGIN OF gy_bapi_input,
    version      TYPE versn,
*    perio       TYPE co_perio,
    fisc_year    TYPE gjahr,
    coobject(10) TYPE c,
    cost_elem    TYPE kstar,
    wkgbtr01     TYPE wkgxxx,
    wkgbtr02     TYPE wkgxxx,
    wkgbtr03     TYPE wkgxxx,
    wkgbtr04     TYPE wkgxxx,
    wkgbtr05     TYPE wkgxxx,
    wkgbtr06     TYPE wkgxxx,
    wkgbtr07     TYPE wkgxxx,
    wkgbtr08     TYPE wkgxxx,
    wkgbtr09     TYPE wkgxxx,
    wkgbtr10     TYPE wkgxxx,
    wkgbtr11     TYPE wkgxxx,
    wkgbtr12     TYPE wkgxxx,
  END OF gy_bapi_input.
DATA:
  gt_bapi_input TYPE TABLE OF gy_bapi_input,
  gs_bapi_input LIKE LINE OF gt_bapi_input.
* Anwendungs-Log
DATA: gs_balsmsg TYPE bal_s_msg.
* Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK b1
  WITH FRAME TITLE text-001.
PARAMETERS:
  gp_file TYPE localfile,
  gp_head TYPE checkbox DEFAULT 'X'.
SELECTION-SCREEN SKIP.
PARAMETERS:
  gp_kokrs  LIKE coep-kokrs,
  gp_gjahr LIKE coep-gjahr,
  gp_versn LIKE coep-versn,
  gp_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b1.
* Local Class Definition
CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODS:
    handle_toolbar_0100 FOR EVENT toolbar OF cl_gui_alv_grid
      IMPORTING
        e_object
        e_interactive,
    handle_user_command_0100 FOR EVENT user_command OF cl_gui_alv_grid
      IMPORTING
        e_ucomm,
    handle_toolbar_0200 FOR EVENT toolbar OF cl_gui_alv_grid
      IMPORTING
        e_object
        e_interactive,
    handle_user_command_0200 FOR EVENT user_command OF cl_gui_alv_grid
      IMPORTING
        e_ucomm.
  PRIVATE SECTION.
ENDCLASS.                    "lcl_event_handler DEFINITION
* Local Class Implementation
CLASS lcl_event_handler IMPLEMENTATION.
  METHOD handle_toolbar_0100.
    PERFORM handle_toolbar_0100
      USING
        e_object.
*        e_interactive.
  ENDMETHOD.                    "handle_toolbar_0100
  METHOD handle_user_command_0100.
    PERFORM handle_user_command_0100
      USING
        e_ucomm.
  ENDMETHOD.                    "handle_user_command_0100
  METHOD handle_toolbar_0200.
    PERFORM handle_toolbar_0200
      USING
        e_object.
*        e_interactive.
  ENDMETHOD.                    "handle_toolbar_0100
  METHOD handle_user_command_0200.
    PERFORM handle_user_command_0200
      USING
        e_ucomm.
  ENDMETHOD.                    "handle_user_command_0100
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION
* Initialization
INITIALIZATION.
  DATA:
    lf_sapworkdir TYPE string.
  CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
    CHANGING
      sapworkdir            = lf_sapworkdir
    EXCEPTIONS
      get_sapworkdir_failed = 1
      cntl_error            = 2
      error_no_gui          = 3
      not_supported_by_gui  = 4
      OTHERS                = 5.
  IF sy-subrc <> 0 OR lf_sapworkdir = ''.
    CALL METHOD cl_gui_frontend_services=>directory_get_current
      CHANGING
        current_directory            = lf_sapworkdir
      EXCEPTIONS
        directory_get_current_failed = 1
        cntl_error                   = 2
        error_no_gui                 = 3
        not_supported_by_gui         = 4
        OTHERS                       = 5.
    CALL METHOD cl_gui_cfw=>flush.
  ENDIF."sy-subrc <> 0 OR sapworkdir = ''
  gp_file = lf_sapworkdir.
* At Selection-Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
  DATA:
    lt_filetable TYPE filetable,
    ls_filetable LIKE LINE OF lt_filetable,
    lt_rc TYPE i.
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
*  EXPORTING
*    WINDOW_TITLE            =
*    DEFAULT_EXTENSION       =
*    DEFAULT_FILENAME        =
*    FILE_FILTER             =
*    INITIAL_DIRECTORY       =
*    MULTISELECTION          =
*    WITH_ENCODING           =
    CHANGING
      file_table              = lt_filetable
      rc                      = lt_rc
*    USER_ACTION             =
*    FILE_ENCODING           =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  READ TABLE lt_filetable INDEX 1
    INTO
      ls_filetable.
  gp_file = ls_filetable-filename.
  CALL METHOD cl_gui_cfw=>flush.
* Start-Of-Selection
START-OF-SELECTION.
  DATA:
    lf_filename LIKE filename-fileintern.
  PERFORM create_log.
  gs_return-type = 'I'.
  IF gp_test = 'X'.
    gs_return-message = text-010.
  ELSE.
    gs_return-message = text-020.
  ENDIF.
  PERFORM add_log_message_free_text
    USING
       gs_return-type
       gs_return-message.
  lf_filename = gp_file.
  CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
    EXPORTING
      i_filename                 = lf_filename
      i_servertyp                = 'PRS '
      i_fileformat               = 'TXT'
*     I_FIELD_SEPERATOR          =
      i_line_header              = gp_head
*   IMPORTING
*     E_BIN_FILELENGTH           =
   TABLES
     i_tab_receiver             = gt_text_input
   EXCEPTIONS
     file_not_found             = 1
     close_failed               = 2
     authorization_failed       = 3
     open_failed                = 4
     conversion_failed          = 5
     OTHERS                     = 6.
  IF sy-subrc <> 0.
    gs_balsmsg-msgty = sy-msgty.
    gs_balsmsg-msgid = sy-msgid.
    gs_balsmsg-msgno = sy-msgno.
    gs_balsmsg-msgv1 = sy-msgv1.
    gs_balsmsg-msgv2 = sy-msgv2.
    gs_balsmsg-msgv3 = sy-msgv3.
    gs_balsmsg-msgv4 = sy-msgv4.
    PERFORM add_log_message
      USING
        gs_balsmsg.
  ENDIF.
  CALL SCREEN '0100'.
*&      Module  status_0100  OUTPUT
*       text
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
*------ Create the docking container ----------------------------------*
  IF go_docking_container IS INITIAL.
    CREATE OBJECT go_docking_container
      EXPORTING
        parent                      = cl_gui_container=>screen0
*        repid                       = gf_repid
*        dynnr                       = gf_dynnr
*     SIDE                        = go_docking_container->DOCK_AT_bottom
*       EXTENSION                   = 200
*      STYLE                       =
*      LIFETIME                    = lifetime_default
*      CAPTION                     =
*      METRIC                      = 0
        ratio                       = 95
*      NO_AUTODEF_PROGID_DYNNR     =
*      NAME                        =
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
*------ Expand  docking container to full screen    -------------------*
    CALL METHOD go_docking_container->set_extension
      EXPORTING
        extension  = 99999  "full-screen size !!!
      EXCEPTIONS
        cntl_error = 1
        OTHERS     = 2.
    IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_docking_container IS INITIAL
*------ Link docking container to screen ------------------------------*
  CALL METHOD go_docking_container->link
    EXPORTING
      repid                       = sy-repid
      dynnr                       = '0100'
*      CONTAINER                   =
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      lifetime_dynpro_dynpro_link = 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.
*------ Build the Field Catalog ---------------------------------------*
  PERFORM build_fieldcatalog_input
    CHANGING gt_fieldcat.
*------ Create the ALV Grid -------------------------------------------*
  IF go_alv_grid_0100 IS INITIAL.
    CREATE OBJECT go_alv_grid_0100
      EXPORTING
*      I_SHELLSTYLE      = 0
*      I_LIFETIME        =
        i_parent          = go_docking_container
*      I_APPL_EVENTS     = space
*      I_PARENTDBG       =
*      I_APPLOGPARENT    =
*      I_GRAPHICSPARENT  =
*      I_NAME            =
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_alv_grid_0100 is initial
*------ Create instance for event handler -----------------------------*
  DATA: go_event_handler_0100 TYPE REF TO lcl_event_handler.
  CREATE OBJECT go_event_handler_0100.
*------ Register event handler ----------------------------------------*
  SET HANDLER go_event_handler_0100->handle_toolbar_0100
    FOR go_alv_grid_0100.
  SET HANDLER go_event_handler_0100->handle_user_command_0100
    FOR go_alv_grid_0100.
*------ Call ALV Grid -------------------------------------------------*
  CALL METHOD go_alv_grid_0100->set_table_for_first_display
*     EXPORTING
*      I_BUFFER_ACTIVE               =
*      I_BYPASSING_BUFFER            =
*      I_CONSISTENCY_CHECK           =
*      I_STRUCTURE_NAME              =
*      IS_VARIANT                    =
*      I_SAVE                        =
*      I_DEFAULT                     = 'X'
*      IS_LAYOUT                     =
*      IS_PRINT                      =
*      IT_SPECIAL_GROUPS             =
*      IT_TOOLBAR_EXCLUDING          =
*      IT_HYPERLINK                  =
*      IT_ALV_GRAPHICS               =
*      IT_EXCEPT_QINFO               =
    CHANGING
      it_outtab                     = gt_text_input
      it_fieldcatalog               = gt_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.
*---- Call method 'set_toolbar_interactive' to raise event TOOLBAR.
  CALL METHOD go_alv_grid_0100->set_toolbar_interactive.
ENDMODULE.                 " status_0100  OUTPUT
*&      Module  status_0200  OUTPUT
*       text
MODULE status_0200 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
*------ Create the docking container ----------------------------------*
  IF go_docking_container IS INITIAL.
    CREATE OBJECT go_docking_container
      EXPORTING
        parent                      = cl_gui_container=>screen0
*        repid                       = gf_repid
*        dynnr                       = gf_dynnr
*     SIDE                        = go_docking_container->DOCK_AT_bottom
*       EXTENSION                   = 200
*      STYLE                       =
*      LIFETIME                    = lifetime_default
*      CAPTION                     =
*      METRIC                      = 0
        ratio                       = 95
*      NO_AUTODEF_PROGID_DYNNR     =
*      NAME                        =
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
*------ Expand  docking container to full screen    -------------------*
    CALL METHOD go_docking_container->set_extension
      EXPORTING
        extension  = 99999
      EXCEPTIONS
        cntl_error = 1
        OTHERS     = 2.
    IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_docking_container IS INITIAL
*------ Link docking container to screen ------------------------------*
  CALL METHOD go_docking_container->link
    EXPORTING
      repid                       = sy-repid
      dynnr                       = '0200'
*      CONTAINER                   =
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      lifetime_dynpro_dynpro_link = 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.
*------ Build the Field Catalog---------------------------------------*
  PERFORM build_fieldcatalog_bapi_input
    CHANGING
      gt_fieldcat.
*------ Create the ALV Grid -------------------------------------------*
  IF go_alv_grid_0200 IS INITIAL.
    CREATE OBJECT go_alv_grid_0200
      EXPORTING
*      I_SHELLSTYLE      = 0
*      I_LIFETIME        =
       i_parent          = go_docking_container
*      I_APPL_EVENTS     = space
*      I_PARENTDBG       =
*      I_APPLOGPARENT    =
*      I_GRAPHICSPARENT  =
*      I_NAME            =
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF."go_alv_grid_0200 is initial
*------ Create instance for event handler -----------------------------*
  DATA: go_event_handler_0200 TYPE REF TO lcl_event_handler.
  CREATE OBJECT go_event_handler_0200.
*------ Register event handler ----------------------------------------*
  SET HANDLER go_event_handler_0200->handle_toolbar_0200
    FOR go_alv_grid_0200.
  SET HANDLER go_event_handler_0200->handle_user_command_0200
    FOR go_alv_grid_0200.
*------ Call ALV Grid -------------------------------------------------*
  CALL METHOD go_alv_grid_0200->set_table_for_first_display
*     EXPORTING
*      I_BUFFER_ACTIVE               =
*      I_BYPASSING_BUFFER            =
*      I_CONSISTENCY_CHECK           =
*      I_STRUCTURE_NAME              =
*      IS_VARIANT                    =
*      I_SAVE                        =
*      I_DEFAULT                     = 'X'
*      IS_LAYOUT                     =
*      IS_PRINT                      =
*      IT_SPECIAL_GROUPS             =
*      IT_TOOLBAR_EXCLUDING          =
*      IT_HYPERLINK                  =
*      IT_ALV_GRAPHICS               =
*      IT_EXCEPT_QINFO               =
    CHANGING
      it_outtab                     = gt_bapi_input
      it_fieldcatalog               = gt_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.
*---- Call method 'set_toolbar_interactive' to raise event TOOLBAR.
  CALL METHOD go_alv_grid_0200->set_toolbar_interactive.
  CALL METHOD go_alv_grid_0200->refresh_table_display
*  EXPORTING
*    IS_STABLE      =
*    I_SOFT_REFRESH =
    EXCEPTIONS
      finished       = 1
      OTHERS         = 2.
  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 cl_gui_control=>set_focus
    EXPORTING
      control = go_alv_grid_0200.
ENDMODULE.                 " status_0200  OUTPUT
*&      Module  user_command_0100  INPUT
*       text
MODULE user_command_0100 INPUT.
  CASE gf_okcode.
    WHEN 'BACK' OR 'END' OR 'CANC'.
      PERFORM exit_program.
    WHEN OTHERS.
  ENDCASE.
  CLEAR gf_okcode.
ENDMODULE.                 " user_command_0100  INPUT
*&      Module  user_command_0200  INPUT
*       text
MODULE user_command_0200 INPUT.
  CASE gf_okcode.
    WHEN 'BACK' OR 'END' OR 'CANC'.
      PERFORM exit_program.
    WHEN OTHERS.
  ENDCASE.
  CLEAR gf_okcode.
ENDMODULE.                 " user_command_0200  INPUT
*&      Form  build_fieldcatalog
*       text
*      <--P_GT_FIELDCAT  text
FORM build_fieldcatalog_input
  CHANGING
    pt_fieldcat TYPE lvc_t_fcat.
  DATA ls_fcat TYPE lvc_s_fcat.
  CLEAR pt_fieldcat.
  ls_fcat-fieldname = 'FIRMA' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'Firma' .
  ls_fcat-seltext = 'Firma' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'KOSTENSTELLE' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'CO-Objekt' .
  ls_fcat-seltext = 'CO-Objekt' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'DATENART1' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Datenart1' .
  ls_fcat-seltext = 'Datenart1' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANJAHR' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Planjahr' .
  ls_fcat-seltext = 'Planjahr' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANPERIODE' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '5' .
  ls_fcat-coltext = 'Planperiode' .
  ls_fcat-seltext = 'Planperiode' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'DATENART2' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Datenart2' .
  ls_fcat-seltext = 'Datenart2' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANUNGSPOSITION' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Planungsposition' .
  ls_fcat-seltext = 'Planungsposition' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'KOSTENART' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '10' .
  ls_fcat-coltext = 'Kostenart' .
  ls_fcat-seltext = 'Kostenart' .
  APPEND ls_fcat TO pt_fieldcat .
  ls_fcat-fieldname = 'PLANBETRAG' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'Planbetrag' .
  ls_fcat-seltext = 'Planbetrag' .
  APPEND ls_fcat TO pt_fieldcat .
ENDFORM.                    "build_fieldcatalog
*&      Form  handle_toolbar_0100
*       text
*      -->P_E_OBJECT  text
*      -->P_E_INTERACTIVE  text
FORM handle_toolbar_0100
  USING
    po_object TYPE REF TO cl_alv_event_toolbar_set.
  DATA: ls_toolbar TYPE stb_button.
  CLEAR ls_toolbar.
  ls_toolbar-butn_type  = 0.
  ls_toolbar-function   = 'KONV'.
  ls_toolbar-quickinfo  = 'Konvertieren'.
  ls_toolbar-text       = 'Konvertieren'.
  ls_toolbar-disabled   = ' '.
  APPEND ls_toolbar TO po_object->mt_toolbar.
ENDFORM.                    " handle_toolbar_0100
*&      Form  handle_user_command_0100
*       text
*      -->P_E_UCOMM  text
FORM handle_user_command_0100
  USING
    pf_ucomm TYPE syucomm.
  CASE pf_ucomm.
    WHEN 'KONV'.
      PERFORM convert_data.
  ENDCASE.
ENDFORM.                    " handle_user_command_0100
*&      Form  exit_program
*       text
*  -->  p1        text
*  <--  p2        text
FORM exit_program.
  CALL METHOD go_alv_grid_0100->free.
  IF NOT go_alv_grid_0200 IS INITIAL.
    CALL METHOD go_alv_grid_0200->free.
  ENDIF.
  CALL METHOD go_docking_container->free.
  CALL METHOD cl_gui_cfw=>flush.
  IF sy-subrc NE 0.
* add your handling, for example
    CALL FUNCTION 'POPUP_TO_INFORM'
      EXPORTING
        titel = sy-repid
        txt2  = sy-subrc
        txt1  = 'Error in Flush'(500).
  ENDIF.
  LEAVE PROGRAM.
ENDFORM.                    " exit_program
*&      Form  handle_toolbar_0200
*       text
*      -->P_E_OBJECT  text
*      -->P_E_INTERACTIVE  text
FORM handle_toolbar_0200
  USING
    po_object TYPE REF TO cl_alv_event_toolbar_set.
  DATA: ls_toolbar TYPE stb_button.
  CLEAR ls_toolbar.
  ls_toolbar-butn_type  = 0.
  ls_toolbar-function   = 'POST'.
  ls_toolbar-quickinfo  = 'Buchen'.
  ls_toolbar-text       = 'Buchen'.
  ls_toolbar-disabled   = ' '.
  APPEND ls_toolbar TO po_object->mt_toolbar.
ENDFORM.                    " handle_toolbar_0200
*&      Form  handle_user_command_0200
*       text
*      -->P_E_UCOMM  text
FORM handle_user_command_0200
  USING
    pf_ucomm TYPE syucomm.
  CASE pf_ucomm.
    WHEN 'POST'.
      PERFORM post.
  ENDCASE.
ENDFORM.                    " handle_user_command_0200
*&      Form  convert_data
*       text
*  -->  p1        text
*  <--  p2        text
FORM convert_data.
  DATA: lf_perio(3) TYPE n.
  LOOP AT gt_text_input INTO gs_text_input.
    TRANSLATE gs_text_input-planbetrag USING '. '.
    TRANSLATE gs_text_input-planbetrag USING ',.'.
    CONDENSE gs_text_input-planbetrag.
    gs_bapi_input-version   = gp_versn.
    gs_bapi_input-fisc_year = gp_gjahr.
    gs_bapi_input-coobject  = gs_text_input-kostenstelle.
    gs_bapi_input-cost_elem = gs_text_input-kostenart.
    lf_perio = gs_text_input-planperiode.
    CASE lf_perio.
      WHEN '001'.
        gs_bapi_input-wkgbtr01 = gs_text_input-planbetrag.
      WHEN '002'.
        gs_bapi_input-wkgbtr02 = gs_text_input-planbetrag.
      WHEN '003'.
        gs_bapi_input-wkgbtr03 = gs_text_input-planbetrag.
      WHEN '004'.
        gs_bapi_input-wkgbtr04 = gs_text_input-planbetrag.
      WHEN '005'.
        gs_bapi_input-wkgbtr05 = gs_text_input-planbetrag.
      WHEN '006'.
        gs_bapi_input-wkgbtr06 = gs_text_input-planbetrag.
      WHEN '007'.
        gs_bapi_input-wkgbtr07 = gs_text_input-planbetrag.
      WHEN '008'.
        gs_bapi_input-wkgbtr08 = gs_text_input-planbetrag.
      WHEN '009'.
        gs_bapi_input-wkgbtr09 = gs_text_input-planbetrag.
      WHEN '010'.
        gs_bapi_input-wkgbtr10 = gs_text_input-planbetrag.
      WHEN '011'.
        gs_bapi_input-wkgbtr11 = gs_text_input-planbetrag.
      WHEN '012'.
        gs_bapi_input-wkgbtr12 = gs_text_input-planbetrag.
    ENDCASE.
    COLLECT gs_bapi_input INTO gt_bapi_input.
    CLEAR gs_bapi_input.
  ENDLOOP. "at gt_text_input
  CALL SCREEN 0200.
ENDFORM.                    " convert_data
*&      Form  build_fieldcatalog_bapi_input
*       text
*      <--P_GT_FIELDCAT  text
FORM build_fieldcatalog_bapi_input
  CHANGING
    pt_fieldcat TYPE lvc_t_fcat.
  DATA ls_fcat TYPE lvc_s_fcat.
  CLEAR pt_fieldcat.
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'VERSION' .
  ls_fcat-ref_table = 'BAPIPLNHDR' .
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'FISC_YEAR' .
  ls_fcat-ref_table = 'BAPIPLNHDR' .
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'COOBJECT' .
  ls_fcat-inttype = 'C' .
  ls_fcat-outputlen = '20' .
  ls_fcat-coltext = 'CO-Objekt' .
  ls_fcat-seltext = 'CO-Objekt' .
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'COST_ELEM' .
  ls_fcat-ref_table = 'BAPIPCPVAL' .
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR01'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR02'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR03'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR04'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR05'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR06'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR07'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR08'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR09'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR10'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR11'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'WKGBTR12'.
  ls_fcat-ref_table = 'COEP' .
  ls_fcat-ref_field = 'WKGBTR'.
  APPEND ls_fcat TO pt_fieldcat .
ENDFORM.                    " build_fieldcatalog_bapi_input
*&      Form  post
*       text
*  -->  p1        text
*  <--  p2        text
FORM post.
  DATA:
    lf_index(6) TYPE n,
    lf_kostl    LIKE csks-kostl,
    lf_aufnr    LIKE aufk-aufnr,
    lf_kstar    LIKE cska-kstar.
  DATA:
    lt_csks TYPE TABLE OF csks.
  break c5085345.
* Header
  gs_headerinfo-co_area       = gp_kokrs.
  gs_headerinfo-fisc_year     = gp_gjahr.
  gs_headerinfo-period_from   = '001'.
  gs_headerinfo-period_to     = '012'.
  gs_headerinfo-version       = gp_versn.
  gs_headerinfo-plan_currtype = 'C'.
  LOOP AT gt_bapi_input INTO gs_bapi_input.
*   Fill index structure
    CLEAR gs_indexstructure.
    lf_index = sy-tabix.
    gs_indexstructure-object_index = lf_index.
    gs_indexstructure-value_index  = lf_index.
    gs_indexstructure-attrib_index = '000000'.
    INSERT gs_indexstructure INTO TABLE gt_indexstructure.
*   Fill coobject
    CLEAR gs_coobject.
    gs_coobject-object_index = lf_index.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = gs_bapi_input-coobject
      IMPORTING
        output = lf_kostl.
    SELECT * FROM csks INTO TABLE lt_csks
      WHERE
        kokrs = gp_kokrs AND
        kostl = lf_kostl.
    IF sy-subrc = 0.
      gs_coobject-costcenter = lf_kostl.
    ELSE.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = gs_bapi_input-coobject
        IMPORTING
          output = lf_aufnr.
      CALL FUNCTION 'K_ORDER_READ'
        EXPORTING
          aufnr     = lf_aufnr
        EXCEPTIONS
          not_found = 1.
      IF NOT sy-subrc = 0.
        gs_return-type = 'E'.
        gs_return-message+0(10)  = 'CO-Objekt '.
        gs_return-message+10(10) = gs_bapi_input-coobject.
        gs_return-message+20(20)  = ' existiert nicht.'.
        CONDENSE gs_return-message.
        PERFORM add_log_message_free_text
          USING
            gs_return-type
            gs_return-message.
        EXIT.
      ENDIF. "IF NOT sy-subrc = 0
      gs_coobject-orderid = lf_aufnr.
    ENDIF. "sy-subrc = 0
    INSERT gs_coobject INTO TABLE gt_coobject.
*   Period value
    gs_pervalue-value_index = lf_index.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = gs_bapi_input-cost_elem
      IMPORTING
        output = lf_kstar.
    gs_pervalue-cost_elem = lf_kstar.
    gs_pervalue-fix_val_per01 = gs_bapi_input-wkgbtr01.
    gs_pervalue-fix_val_per02 = gs_bapi_input-wkgbtr02.
    gs_pervalue-fix_val_per03 = gs_bapi_input-wkgbtr03.
    gs_pervalue-fix_val_per04 = gs_bapi_input-wkgbtr04.
    gs_pervalue-fix_val_per05 = gs_bapi_input-wkgbtr05.
    gs_pervalue-fix_val_per06 = gs_bapi_input-wkgbtr06.
    gs_pervalue-fix_val_per07 = gs_bapi_input-wkgbtr07.
    gs_pervalue-fix_val_per08 = gs_bapi_input-wkgbtr08.
    gs_pervalue-fix_val_per09 = gs_bapi_input-wkgbtr09.
    gs_pervalue-fix_val_per10 = gs_bapi_input-wkgbtr10.
    gs_pervalue-fix_val_per11 = gs_bapi_input-wkgbtr11.
    gs_pervalue-fix_val_per12 = gs_bapi_input-wkgbtr12.
    INSERT gs_pervalue INTO TABLE gt_pervalue.
  ENDLOOP. "at gt_bapi_input
* Buchungsbaustein
  CALL FUNCTION 'BAPI_PRIM_COST_CHECK_AND_POST'
    EXPORTING
      header_info         = gs_headerinfo
      testrun             = gp_test
*   DELTA               = ' '
    TABLES
      idx_structure       = gt_indexstructure
      object              = gt_coobject
      per_value           = gt_pervalue
      tot_value           = gt_totvalue
      contrl              = gt_control
      return              = gt_return.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
*   EXPORTING
*     WAIT          =
*   IMPORTING
*     RETURN        =
  LOOP AT gt_return INTO gs_return.
    gs_balsmsg-msgty = gs_return-type.
    gs_balsmsg-msgid = gs_return-id.
    gs_balsmsg-msgno = gs_return-number.
    gs_balsmsg-msgv1 = gs_return-message_v1.
    gs_balsmsg-msgv2 = gs_return-message_v2.
    gs_balsmsg-msgv3 = gs_return-message_v3.
    gs_balsmsg-msgv4 = gs_return-message_v4.
    PERFORM add_log_message
      USING
        gs_balsmsg.
  ENDLOOP. "AT gt_return
  PERFORM show_log.
ENDFORM.                    " post
*&      Form  create_log
*       text
*  -->  p1        text
*  <--  p2        text
FORM create_log .
  DATA: ls_balslog TYPE bal_s_log.
* Einige Verwaltungsdaten
  ls_balslog-extnumber = 'ZPLAN010'.
  ls_balslog-aluser    = sy-uname.
  ls_balslog-alprog    = sy-repid.
* Create
  CALL FUNCTION 'BAL_LOG_CREATE'
    EXPORTING
      i_s_log                 = ls_balslog
*    IMPORTING
*      e_log_handle            = gf_balloghndl
    EXCEPTIONS
      log_header_inconsistent = 1
      OTHERS                  = 2.
  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.                    " create_log
*&      Form  add_log_message
*       text
*      -->P_GS_BALSMSG  text
FORM add_log_message
  USING
    ps_balsmsg TYPE bal_s_msg.
  break c5085345.
  CALL FUNCTION 'BAL_LOG_MSG_ADD'
    EXPORTING
*       I_LOG_HANDLE              =
      i_s_msg                   = ps_balsmsg
*     IMPORTING
*       E_S_MSG_HANDLE            =
*       E_MSG_WAS_LOGGED          =
*       E_MSG_WAS_DISPLAYED       =
   EXCEPTIONS
     log_not_found             = 1
     msg_inconsistent          = 2
     log_is_full               = 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.
ENDFORM.                    " add_log_messa
*&      Form  add_log_message_free_text
*       text
*      -->P_GS_RETURN_TYPE  text
*      -->P_GS_RETURN_MESSAGE  text
FORM add_log_message_free_text
  USING
    ps_type
    ps_message.
  CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
    EXPORTING
*       I_LOG_HANDLE              =
      i_msgty                   = ps_type
*       I_PROBCLASS               = '4'
      i_text                    = ps_message
*       I_S_CONTEXT               =
*       I_S_PARAMS                =
*     IMPORTING
*       E_S_MSG_HANDLE            =
*       E_MSG_WAS_LOGGED          =
*       E_MSG_WAS_DISPLAYED       =
   EXCEPTIONS
     log_not_found             = 1
     msg_inconsistent          = 2
     log_is_full               = 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.
ENDFORM.                    " add_log_message_free_text
*&      Form  show_log
*       text
*  -->  p1        text
*  <--  p2        text
FORM show_log .
  DATA:
    l_s_display_profile TYPE bal_s_prof.
* get display profile
  CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
    IMPORTING
      e_s_display_profile = l_s_display_profile
    EXCEPTIONS
      OTHERS              = 1.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
* use grid for display if wanted
  l_s_display_profile-use_grid = 'X'.
* set report to allow saving of variants
  l_s_display_profile-disvariant-report = sy-repid.
* when you use also other ALV lists in your report,
* please specify a handle to distinguish between the display
* variants of these different lists, e.g:
  l_s_display_profile-disvariant-handle = 'LOG'.
* call display function module
* We do not specify any filter (like I_S_LOG_FILTER, ...,
* I_T_MSG_HANDLE) since we want to display all logs available
  CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
    EXPORTING
      i_s_display_profile = l_s_display_profile
    EXCEPTIONS
      OTHERS              = 1.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

Similar Messages

  • Display totals on the first line in ALV grid and ALV LIST

    Generally we wll display totals at the end..
    bu the requirement is to display it in the first line of the column.
    how to display the totals in the first line?
    I have used ALV GRID and ALV LIST (choice) using function modules.
    Plz help me
    .for example : Po qty : Should display total po qty on the first line of the Po line item.

    IN LAYOUT
    ILAYOUT-totals_before_items = 'X'.
    REGARDS
    SHIBA DUTTA

  • List header for alv grid using abap objects

    Hai all,
          I have displayed alv grid in container control using abap objects i.e. using method set_table_for_first_display.
    now i need to display list header for this alv grid.
    please help me how to create with a sample coding.
    Thanks and regards,
    Prabu S.

    Create a splitter using CL_GUI_EASY_SPLITTER_CONTAINER with a top and bottom half.  Put the alv grid in the bottom half.  Use cl_dd_document (documented in help.sap.com )  to build the header in the top half.  Use events on CL_GUI_ALV_GRID to handle the top-of-list printing.
    Or, if available, use CL_SALV_TABLE, and read the documentation on that.  When I needed a header for my report, that's what I did.  There's plenty of good documentation about if you'll search for it.
    matt

  • Issue with ALV Grid and events

    Hi,
    I am creating an ALV Grid with fields Matnr,Charg,Labst,Meins. The first three fields are editable and the last (MEINS) is read only.
    Now I am trying to fill the MEINS field programmaticly after entering the MATNR and confirm with enter/return.
    I think that I have to "overload" the enter event of the alv grid to fill the MEINS everytime when a MATNR was entered. But I don't know how I could implementing this. Could you give me a hint how I could solve this problem?
    (The behavior should look like in transaction MIGO)
    Thanks

    Hi Alex
    When you press enter an event is triggerd and function code is filled in sy-ucoom or you can say in ok_code. At that time PAI event occurs. In PAI of that screen you need to check ok_code and load new data in table which you passed to ALV and also refresh the ALV.
    data: ok_code like sy-ucomm.
    PAI----screen 100
    case ok_code.
    when 'ENTER'.
    select data
    and refresh ALV
    then again call
    funtion to display ALV
    Regards
    Aditya

  • Report with two ALV grids and a header

    Hi experts,
    I have a report with two ALV grids in the same screen, each one in a separated container. The information displays it correctly. The report has been implemented by using OO Programming.
    My real trouble is in the header. It must have a logo, a title with a specific font and other information.
    I'll attach a capture of my need:
    [Report with two ALV grids and a header|http://picasaweb.google.com/lh/photo/AcQD49QPmm-0L_jL2iMedA?feat=directlink]
    Then, I want to set up the header you can see, with logo, a font with specific features. Obviously, the header you see has taken from another report. But is the same idea.
    I've tried with a third container, using the CL_GUI_CONTAINER and CL_GUI_CONTAINER classes, but it doesn't work.
    Any idea? Would welcome any help you can provide.
    Thanks in advance,
    Jorge Rojas

    Hi, Jorge.
    Should the header be a"attached" to any of the ALV? Or it should be carried alone?
    If first applies, you've given the solution yourself: put the info & logo in first ALV's header and invoke it from the proper method.
    You could use CL_GUI_DOCKING_CONTAINER CLASS to divide screen in several containers and then, in the upper one, I would create another one docking container to divide the screen into two: the written info could be performed with an HTML viewer class and the logo with a CL_GUI_PICTURE element.
    Cheers.

  • ALV Grid and LIST?

    HI all,
    Diff between ALV GRID and ALV LIST?
    sachin.

    Hi,
    ckeck these differences.
    first one is for list display and second one is for grid display.
    For all practical purposes, they are the same.
    2. Some differences:
    a) from abap coding point of view,
    alv list is done with Function modules,
    alv gris can also be done with FM,
    but can also be done using OO concepts.
    b) Alv grid (using oo concept) requires
    designing the screen layout .
    Hence, in one screen, we can show more
    then one alv grid
    (we cannot show more than
    one alv list on one screen)
    c) ALV grid uses ActiveX controls
    present on the Presentation Server.
    Hence, it consumes More Memory
    on the presentation server.
    d) ALV LIST is Display Only.
    Whereas
    ALV Grid Can Be made EDITABLE for entry purpose.
    e) In alv grid, these options are possible,
    but not in alv list.
    without horizontal lines
    without vertical lines
    without cell merging during sorts
    display total lines above the entries
    ALV LIST Can be coded using only FMs
    ALV GRID Can be coded using FMs and object oriented concepts
    ALV LIST Can be displayed hieraicharlly
    ALV GRID cannot be displayed hierarichally.
    reward points if hlpful.

  • Set cursor alv grid (not using objects)

    I got a question on ALV GRID (not using objects), please let me know if you have pointers. Thanks.
    Output has 2 screens both has different contents. The output is generated using internal table1 and 2 and using FM  'REUSE_ALV_GRID_DISPLAY_LVC'  (both screen use same FM).
    First screen has multiple pages of output (say 10 pages). User scrolled page 5 and line 10 of first screen and then double clicked it takes to screen #2. After completion of screen #2, the back arrow should get back to page 5 and line 10 of screen #1. Currently the back arrow gets to screen#1 page 1 and line 1. How to remember the cursor position in alv grid and instruct the cursor to go there?
    Appreciate the input.
    Note: I tried "set cursor line n" with "Scroll" command but no luck. http://help.sap.com/saphelp_nw70/helpdata/EN/9f/dba47e35c111d1829f0000e829fbfe/content.htm

    Thanks for the inputs.
    FYI, I got it implemented using method  CALL METHOD <ref.var. to CL_GUI_ALV_GRID > ->set_current_cell_via_id
    The method is called by 'REUSE_ALV_GRID_DISPLAY_LVC' form 'PF_STATUS_SET' when the ALV grid output is presented each time.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_bypassing_buffer       = 'X'
          i_callback_program       = gc_repid
          i_callback_pf_status_set = 'PF_STATUS_SET'
          i_callback_user_command  = 'USER_COMMAND'
          is_layout_lvc            = lwa_layout
          it_fieldcat_lvc          = git_fc_lvc
          i_default                = ' '
        TABLES
          t_outtab                 = git_data
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      FORM alv_event_pf_status_set USING rt_extab                
                                 TYPE slis_t_extab.
      DATA lo_ref1 TYPE REF TO cl_gui_alv_grid.
    *Get the reference to class "lo_ref1" for the ALV report
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = lo_ref1.
    *set the focus of cursor in ALV
      CALL METHOD lo_ref1->set_current_cell_via_id
        EXPORTING
          is_row_no = gv_row. "row number where you want to focus the cursor
      ENDFORM.

  • ALV Grid and return to selection screen

    Hello
    I have an ALV Grid and when I push a buttom that I program appears another ALV Grid. In this second ALV I try to program different buttoms. When I program the BACK buttom I want to go to selection screen.
    I try with CALL SELECTION SCREEN but when I stay in selection screen and push the execute buttom the ALV that I see is the second, not the first. It seems that we don't catch the news selections.
    I put rs_selfied-refresh = 'X' after the CALL SELECTION SCREEN but is wrong again.
    What can I do????

    Hello Silvia
    There is a simple trick to return from the second ALV list directly back to the selection screen:
    *& Report  ZUS_SDN_REUSE_ALV_GRID_DISPLAY
    REPORT  zus_sdn_reuse_alv_grid_display.
    TYPE-POOLS: slis.
    DATA:
      gt_t001        TYPE STANDARD TABLE OF t001,
      gt_knb1        TYPE STANDARD TABLE OF knb1.
    DATA:
      gs_fcat        TYPE slis_fieldcat_alv,
      gt_fcat_t001   TYPE slis_t_fieldcat_alv,
      gt_fcat_knb1   TYPE slis_t_fieldcat_alv.
    PARAMETERS:
      p_bukrs        TYPE bukrs  DEFAULT '1000'.
    START-OF-SELECTION.
      SELECT * FROM  t001 INTO TABLE gt_t001.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_PROGRAM_NAME               =
    *     I_INTERNAL_TABNAME           =
          i_structure_name             = 'T001'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_INCLNAME                   =
    *     I_BYPASSING_BUFFER           =
    *     I_BUFFER_ACTIVE              =
        CHANGING
          ct_fieldcat                  = gt_fcat_t001
        EXCEPTIONS
          inconsistent_interface       = 1
          program_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 FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
          i_callback_program                = syst-cprog
          i_callback_pf_status_set          = 'ALV_SET_PF_STATUS'
          i_callback_user_command           = 'ALV_USER_COMMAND'
    *     I_CALLBACK_TOP_OF_PAGE            = ' '
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  = ' '
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
    *     IS_LAYOUT                         =
          it_fieldcat                       = gt_fcat_t001
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = gt_t001
    *   EXCEPTIONS
    *     PROGRAM_ERROR                     = 1
    *     OTHERS                            = 2
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    END-OF-SELECTION.
    *&      Form  set_pf_status
    *       text
    *      -->RT_EXTAB   text
    FORM alv_set_pf_status USING rt_extab TYPE slis_t_extab.
    * NOTE: identical to STANDARD_FULLSCREEN with additional button
    *       for detail list ('DETAILLIST')
      SET PF-STATUS 'STANDARD_FULLSCREEN'.
    ENDFORM.                    "set_pf_status
    *&      Form  alv_user_command
    *       text
    *      -->R_UCOMM    text
    *      -->RS_SELFIELDtext
    FORM alv_user_command  USING r_ucomm LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
    *   Display detail list: all customers for selected company code
        WHEN 'DETAILLIST'.
          IF ( rs_selfield-fieldname = 'BUKRS' ).
            SELECT        * FROM  knb1 INTO TABLE gt_knb1
                   WHERE  bukrs  = rs_selfield-value.
            CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
              EXPORTING
    *         I_INTERFACE_CHECK                 = ' '
    *         I_BYPASSING_BUFFER                = ' '
    *         I_BUFFER_ACTIVE                   = ' '
                i_callback_program                = syst-cprog
                i_callback_pf_status_set          = 'ALV_SET_PF_STATUS'
                i_callback_user_command           = 'ALV_USER_COMMAND'
    *         I_CALLBACK_TOP_OF_PAGE            = ' '
    *         I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *         I_CALLBACK_HTML_END_OF_LIST       = ' '
                i_structure_name                  = 'KNB1'
    *       IMPORTING
    *         E_EXIT_CAUSED_BY_CALLER           =
    *         ES_EXIT_CAUSED_BY_USER            =
              TABLES
                t_outtab                          = gt_knb1
              EXCEPTIONS
                program_error                     = 1
                OTHERS                            = 2.
            IF sy-subrc <> 0.
    *     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
    <b>*       NOTE: when the program logic returns from the 2nd ALV list
    *             and exit = 'X' then the program leaves the
    *       1st ALV list, too, and returns to the selection screen.</b>
            rs_selfield-exit = 'X'.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.
    ENDFORM.                    "alv_user_command
    Regards
      Uwe

  • Issue with ALV grid print preview/spool

    Hello everyone,
    I am working on a report and I am having some issues with ALV grid. Currently in our DEV and QA environments the user can run the report, view the ALV grid, and print the grid without any issues.
    However this isn't the case in the Prod environment. The user is able to run the report and view the grid without any issues. But when they click print preview or click print, the spool is incorrect. It shows the proper values from the grid, but the first field is reduced in length. Rather than showing a numeric field of length 10 it shows 99999999# or 99999999...
    The programs are identical through every environment, including user parameters, formats, and spool settings. I have been told printing grids may have some issues, does anyone have any advice or dealt with this issue before?
    I appreciate the help.
    Thanks,
    C

    I was waiting to hear from the functional team on the matter and no one has mentioned any more issues.  I am assuming the problem is solved.  I just noticed the thread was still un-answered and wanted to give an update. 
    Thank you for you help Vijay.
    Regards
    C

  • I have a problem with ALV Grid User Command?

    Hi Experts,
    I have a problem with ALV GRID User Command.
    I am calling TCODE IW33 (Order Display) from the ALV output at first time by selecting an order. But, User command is calling IW33 Initial screen with blank value of order. Even I checked in debugging the value what I selected is passing properly, but once that screen (IW33 Initial) displays, value doesn't appear. Then, Manually, I  created another session and gone to TCODE IW33 and displayed an order. After that I came out from that order. Then again run my ALV program and selected another order, now order is displaying, but not what I selected current order instead of displaying previous order what I just displayed manually. If I selected any other order, system will display the same order what I dislayed manually.
    Here is my code.
    FORM user_command_alv  USING u_ucomm TYPE sy-ucomm
                           us_self_field TYPE slis_selfield.
    CASE u_ucomm.
    WHEN '&IC1'.
    READ TABLE it_final INDEX us_self_field-tabindex INTO wa_final.
            WHEN 'ORDER'.
              IF NOT wa_final-order IS INITIAL.
                SET PARAMETER ID 'COK' FIELD wa_final-order.
                CALL TRANSACTION 'IW33' AND SKIP FIRST SCREEN.
              ENDIF.
    endform.
    PARAMETER ID 'COK'  also the standard one.
    Could you please help me out, Where I did wrong?
    If I select any order, that order only should display.
    Thanks in advance.
    Regards,
    Sarayu.
    Code Formatted by: Alvaro Tejada Galindo on Jan 8, 2009 2:33 PM

    hi,
    Please check it once the Paramater ID is 'ANR' for IW33 order number.
    Hope this may help.
    Regards,
    Sravanthi

  • Color a row with ALV GRID

    Hi my friends,
    I have written a small ALV Grid where some rows should be colored, dependend on their status in a table. But it's not working and I can't find out, why it is not working. I've already studied all the topics in this forum, which are related to 'row color alv grid', but I can't find the mistake in my code. Is anyone able to find out what is wrong here?
    Thanks a lot for your help!
    *& Report  /BMC_TST_SHOWLOG
    REPORT  /BMC_TST_SHOWLOG.
    TYPES: BEGIN OF log_table.
      TYPES:  log_level TYPE /bmc_log_message,
              cr_date TYPE /bmc_cr_date,
              message TYPE /bmc_log_message,
              linecolor(4) TYPE c.
    TYPES: END OF log_table.
    DATA: lt_log TYPE TABLE OF log_table with HEADER LINE,
          lt_log2 TYPE TABLE OF log_table with HEADER LINE,
          lt_log_list TYPE TABLE OF log_table,
          lt_line LIKE LINE OF lt_log_list,
          container_r TYPE REF TO cl_gui_custom_container,
          grid_r TYPE REF TO cl_gui_alv_grid,
          gc_custom_control_name TYPE scrfname VALUE 'CONTAINER_LOG',
          fieldcat_r TYPE lvc_t_fcat,
          layout_r TYPE lvc_s_layo,
          logA TYPE /bmc_log_level,
          logB TYPE /bmc_log_level,
          logC TYPE /bmc_log_level,
          logD TYPE /bmc_log_level,
          logE TYPE /bmc_log_level,
          ls_ct TYPE lvc_s_scol,
          ok_code LIKE sy-ucomm.
    *DATA BEGIN OF ls_log_list OCCURS 0.
    *DATA: log_level TYPE /bmc_log_message,
    *      cr_date TYPE /bmc_cr_date,
    *      message TYPE /bmc_log_message,
    *      rowcolor(4) TYPE c.
    *DATA END OF ls_log_list.
    *DATA: lt_log_list TYPE TABLE OF log_table.
    PARAMETERS: loglevlA  TYPE c AS CHECKBOX,
                loglevlB  TYPE c as CHECKBOX,
                loglevlC  TYPE c As CHECKBOX,
                loglevlD  TYPE c aS CHECKBOX,
                loglevlE  TYPE c AS CHECKBOX,
                dateA     TYPE /bmc_cr_date OBLIGATORY,
                dateB     TYPE /bmc_cr_date.
    CALL SCREEN 0200.
    MODULE user_command_0200 INPUT.
      CASE ok_code.
        WHEN 'BACK'.
          SET SCREEN 0.
          MESSAGE ID 'BC400' TYPE 'S' NUMBER '057'.
        WHEN OTHERS.
      ENDCASE.
    ENDMODULE.
    MODULE clear_ok_code OUTPUT.
      CLEAR ok_code.
    ENDMODULE.
    MODULE status_0200 OUTPUT.
      SET PF-STATUS 'DYNPRO200'.
      SET TITLEBAR 'D0200'.
    ENDMODULE.
    MODULE display_alv OUTPUT.
      PERFORM display_alv.
    ENDMODULE.
    FORM display_alv.
      IF grid_r IS INITIAL.
    *----Creating custom container instance
      CREATE OBJECT container_r
      EXPORTING
        container_name = gc_custom_control_name
      EXCEPTIONS
        cntl_error = 1
        cntl_system_error = 2
        create_error = 3
        lifetime_error = 4
        lifetime_dynpro_dynpro_link = 5
        others = 6.
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
    *----Creating ALV Grid instance
        CREATE OBJECT grid_r
        EXPORTING
          i_parent = container_r
        EXCEPTIONS
          error_cntl_create = 1
          error_cntl_init = 2
          error_cntl_link = 3
          error_dp_create = 4
          others = 5.
          IF sy-subrc <> 0.
    *--Exception handling
          ENDIF.
          PERFORM get_log_data.
    *----Preparing field catalog.
          PERFORM prepare_field_catalog CHANGING fieldcat_r.
    *----Preparing layout structure
          PERFORM prepare_layout CHANGING layout_r.
    *----Here will be additional preparations
    *--e.g. initial sorting criteria, initial filtering criteria, excluding
    *--functions
          CALL METHOD grid_r->set_table_for_first_display
          EXPORTING
            is_layout = layout_r
          CHANGING
            it_outtab = lt_log2[]
            it_fieldcatalog = fieldcat_r
          EXCEPTIONS
            invalid_parameter_combination = 1
            program_error = 2
            too_many_lines = 3
            OTHERS = 4.
          IF sy-subrc <> 0.
    *--Exception handling
          ENDIF.
          ELSE.
            CALL METHOD grid_r->refresh_table_display
          EXCEPTIONS
            finished = 1
            OTHERS = 2.
          IF sy-subrc <> 0.
    *--Exception handling
          ENDIF.
        ENDIF.
        CALL METHOD grid_r->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        CALL METHOD grid_r->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ENDFORM.
    FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat.
        DATA ls_fcat TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_structure_name = '/BMC_LOG'
      CHANGING
        ct_fieldcat = pt_fieldcat[]
      EXCEPTIONS
        inconsistent_interface = 1
        program_error = 2
        OTHERS = 3.
      IF sy-subrc ne 0.
    *--Exception handling
      ENDIF.
      LOOP AT pt_fieldcat INTO ls_fcat.
        CASE ls_fcat-fieldname.
          WHEN 'UUID'.
            ls_fcat-no_out = 'X'.
            MODIFY pt_fieldcat FROM ls_fcat.
          WHEN 'LOG_LEVEL'.
            ls_fcat-coltext = 'Meldungsart'.
            ls_fcat-outputlen = '25'.
            MODIFY pt_fieldcat FROM ls_fcat.
          WHEN 'CR_DATE'.
            ls_fcat-coltext = 'Erstellungsdatum'.
            ls_fcat-outputlen = '20'.
            MODIFY pt_fieldcat FROM ls_fcat.
          WHEN 'CR_TIME'.
            ls_fcat-no_out = 'X'.
            MODIFY pt_fieldcat FROM ls_fcat.
          WHEN 'MESSAGE'.
            ls_fcat-coltext = 'Nachricht'.
            ls_fcat-outputlen = '50'.
            MODIFY pt_fieldcat FROM ls_fcat.
        ENDCASE.
    *    CASE ls_fcat-value.
    *      WHEN '1'.
    *        ls_fcat-line_color = 'c100'.
    *    ENDCASE.
      ENDLOOP.
    ENDFORM.
    FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
      ps_layout-zebra = 'X'.
      ps_layout-grid_title = 'Log'.
      ps_layout-smalltitle = 'X'.
      ps_layout-info_fname = 'linecolor'.
    ENDFORM.
    FORM get_log_data.
      if loglevlA = 'X'.
        logA = '1'.
      ENDIF.
      if loglevlB = 'X'.
        logB = '2'.
      ENDIF.
      if loglevlC = 'X'.
        logC = '3'.
      ENDIF.
      if loglevlD = 'X'.
        logD = '4'.
      ENDIF.
      if loglevlE = 'X'.
        logE = '5'.
      ENDIF.
      IF dateB ne 0.
        SELECT log_level cr_date message FROM /bmc_log INTO CORRESPONDING FIELDS OF TABLE lt_log_list WHERE log_level = logA
          OR log_level = logB OR log_level = logC OR log_level = logD OR log_level = logE and cr_date >= dateA and cr_date <= dateB.
      ELSE.
        SELECT log_level cr_date message FROM /bmc_log INTO CORRESPONDING FIELDS OF TABLE lt_log_list WHERE log_level = logA
          OR log_level = logB OR log_level = logC OR log_level = logD OR log_level = logE and cr_date >= dateA.
      ENDIF.
    *    and cr_date >= dateA.
        SORT lt_log_list ASCENDING.
        LOOP AT lt_log_list INTO lt_line.
        IF lt_line-log_level = '1'.
          lt_line-log_level = 'Info'.
          lt_line-linecolor = 'C100'.
        ENDIF.
        IF lt_line-log_level = '2'.
          lt_line-log_level = 'Warning'.
          lt_line-linecolor = 'C200'.
        ENDIF.
        IF lt_line-log_level = '3'.
          lt_line-log_level = 'Error'.
          lt_line-linecolor = 'C300'.
        ENDIF.
        IF lt_line-log_level = '4'.
          lt_line-log_level = 'Debug'.
          lt_line-linecolor = 'C400'.
        ENDIF.
        IF lt_line-log_level = '5'.
          lt_line-log_level = 'Trace'.
          lt_line-linecolor = 'C500'.
        ENDIF.
        APPEND lt_line TO lt_log2.
        ENDLOOP.
    ENDFORM.
    SELECTION-SCREEN BEGIN OF SCREEN 0100 TITLE text-001 AS WINDOW.
    SELECTION-SCREEN END OF SCREEN 0100.

    > change to this
    >
    > <b>ps_layout-stylefname = 'LINECOLOR'.</b>
    >
    > sorry ignore the above line
    >
    > just debug and check what is happening
    >
    > Message was edited by:
    >         Chandrasekhar Jagarlamudi
    Hi,
    I've changed the line to <b>ps_layout-stylefname = 'LINECOLOR'.</b>, but then I'm getting a runtime error 'ASSIGN_TYPE_CONFLICT' in program 'SAPLSLVC in line 2975'...
    I don't have any idea what is causing that.

  • Problem with ALV grid in edit mode

    Hello, gurus!
    I have a problem with ALV-grid. Sometimes when I call F4 help for a cell, data is inserted in a different cell.  And when I call check_changed_data method, my internal table (passed to ALV-control in set_table_for_first_display) does not updates properly. In what can be a problem?
    Thanks,
    Mikhail

    Hi Prabhu,
    MODULE pbo_100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      title_of_report = text-010.
      SET TITLEBAR '0100' WITH title_of_report.
      DATA: g_event_receiver TYPE REF TO lcl_event_handler.
      IF z_custom_container IS INITIAL .
        CREATE OBJECT z_custom_container
          EXPORTING
            container_name = 'ALV_ZAC'.
        CREATE OBJECT alv_grid
          EXPORTING
            i_parent = z_custom_container.
        g_repid = sy-repid.
        gs_variant-report = g_repid.
        x_save = 'A'.
        PERFORM check_alv_grid_fields.
        ps_layout-cwidth_opt = 'X'.
        ps_layout-edit = 'X'.
        CALL METHOD alv_grid->set_ready_for_input
          EXPORTING
            i_ready_for_input = '1'.
    *    CALL METHOD alv_grid->register_edit_event
    *      EXPORTING
    *        i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        APPEND   s_list_rec   to it_list_rec.
        CALL METHOD alv_grid->set_table_for_first_display
          EXPORTING
            is_layout       = ps_layout
            is_variant      = gs_variant
            i_save          = x_save
          CHANGING
            it_fieldcatalog = pt_fieldcat
            it_outtab       = it_list_rec[].
        CALL METHOD alv_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        CALL METHOD alv_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ENDIF.
    FORM check_alv_grid_fields .
      DATA: ls_fcat LIKE LINE OF pt_fieldcat.
    REFRESH pt_fieldcat .
    CLEAR: ps_layout, ls_fcat.
      ls_fcat-fieldname = 'VBELN'.
      ls_fcat-ref_field = 'VBELN'. ls_fcat-ref_table =  'LIPS'. " .
      ls_fcat-outputlen = 9.
    *  ls_fcat-datatype   = 'CHAR'.
    *  ls_fcat-inttype    = 'C'.
      APPEND  ls_fcat TO pt_fieldcat.
      CLEAR: ls_fcat.
      ls_fcat-fieldname = 'ERDAT'.
      ls_fcat-ref_field = 'ERDAT'. ls_fcat-ref_table = 'LIPS'.
      ls_fcat-outputlen = 9.
    *  ls_fcat-f4availabl = 'X' .
    *  ls_fcat-datatype   = 'DATS'.
    *  ls_fcat-inttype    = 'D'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR: ls_fcat.
    ENDFORM.                    " check_alv_grid_fields
    FORM save_p .
      CLEAR l_valid.
      CALL METHOD alv_grid->check_changed_data
        IMPORTING
          e_valid = l_valid.
      IF l_valid IS INITIAL.
        CALL FUNCTION 'POPUP_TO_INFORM'
          EXPORTING
            titel = text-i01
            txt1  = text-i02
            txt2  = text-i03
            txt3  = text-i04.
      ELSE.
        i_dat_reg = zrumm_prr-cdprr.
        CLEAR is_temp_otc.
        freshit i_prrpus_fax.
        freshit i_list2_ot.
        LOOP AT it_list_rec INTO s_list_rec.
          MOVE-CORRESPONDING s_list_rec TO i_list2_ot.
          i_list2_ot-fgrup = 'RECE'.
          i_list2_ot-prrnu = i_num_prr.
          APPEND i_list2_ot.
          MOVE-CORRESPONDING s_list_rec TO i_prrpus_fax.
          APPEND i_prrpus_fax.
        ENDLOOP.
      ENDIF.
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:41 AM
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:49 AM
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:49 AM

  • Printing with ALV Grid

    Hi,
    I am using ALV List and ALV grid in one of my custom reports.
    There is no issue with ALV List when I print the report after running the program.
    But when I use ALV Grid , the report runs good and when I try to print the report I get short dump "OBJECTS_NOT_CHARLIKE" in program "LKKBLF99" of the main program "SAPLKKBL".
    I am using the function module "REUSE_ALV_GRID_DISPLAY" to run the report using ALV Grid and I get the above short dump when I try to print the report.
    Can anyone help me please?
    Thanks,
    Ashok.

    Hai Ashok
    Try with the following Code
    *& Report  ZALV_GRID                                           *
    REPORT  ZALV_GRID .
    TABLES: MARA.
    TYPE-POOLS : SLIS.
    Data declaration
    DATA: BEGIN OF I_MARA OCCURS 0.
            INCLUDE STRUCTURE MARA.
    DATA: END OF I_MARA.
    DATA: V_REPID LIKE SY-REPID.
    selection-screen
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
      SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
      PARAMETERS: P_MTART LIKE MARA-MTART DEFAULT 'ROH'.
    SELECTION-SCREEN END OF BLOCK B1.
    initialisation
    INITIALIZATION.
    S_MATNR-LOW = '1400'.
    S_MATNR-HIGH = '1500'.
    APPEND S_MATNR.
    V_REPID = SY-REPID.
    start-of-selection
    START-OF-SELECTION.
    SELECT * FROM MARA
        INTO TABLE I_MARA
        WHERE MATNR IN S_MATNR AND
              MTART = P_MTART.
      CHECK SY-SUBRC = 0.
    end of selection
    END-OF-SELECTION.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
      I_CALLBACK_PROGRAM             = ' '
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
       I_STRUCTURE_NAME               = 'MARA'
      IS_LAYOUT                      =
      IT_FIELDCAT                    =
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = I_MARA
    EXCEPTIONS
      PROGRAM_ERROR                  = 1
      OTHERS                         = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Thanks & Regards
    Sreenivasulu P

  • ALV Grid and wrong number

    Hi,
    in SE16, browsing MSEG table, when I display a number field such as MENGE I see a strange case:
    with classic SE16 output I see a value as "10,000"
    with ALV Grid output I see a value as "100,00"
    This in a ECC 6.04 box with last Kernel patch 171, last BASIS SP and last ABAP SP.
    Have you got any suggest?
    Regards.

    Check if note 1571782 & 1394178 helps.

  • How to use selection buttons in an ALV created without abap objects?

    Hi, I use an alv created without ABAP Objects to show some information. Can I introduce inside the alv, the top buttons to select all rows / none row? And the second question, how may I introduce lateral buttons in the ALV to select indidividual rows?
    Thanks!

    HI
    i think you use REUSE_ALV_LIST_DISPLAY or REUSE_ALV_GRID_DISPLAY FMs.
    Try to calling the function in this way
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
          EXPORTING
    *      I_INTERFACE_CHECK              = ' '
    *      I_BYPASSING_BUFFER             =
    *      I_BUFFER_ACTIVE                = ' '
           i_callback_program             = 'YOURREPORT'
           i_callback_pf_status_set       = 'SET_PF_STATUS'
           i_callback_user_command        = 'USER_COMAND'
    *      I_STRUCTURE_NAME               =
           is_layout                      =  ls_layout
           it_fieldcat                    =  fieldcat
    *      IT_EXCLUDING                   =
    *      IT_SPECIAL_GROUPS              =
    *      IT_SORT                        =
    *      IT_FILTER                      =
    *      IS_SEL_HIDE                    =
    *      I_DEFAULT                      = 'X'
           i_save                         = 'A'
          is_variant                     = gt_variant
          it_events                      = event_tab
    *      IT_EVENT_EXIT                  =
    *      IS_PRINT                       =
    *      IS_REPREP_ID                   =
    *      I_SCREEN_START_COLUMN          = 0
    *      I_SCREEN_START_LINE            = 0
    *      I_SCREEN_END_COLUMN            = 0
    *      I_SCREEN_END_LINE              = 0
    *    IMPORTING
    *      E_EXIT_CAUSED_BY_CALLER        =
    *      ES_EXIT_CAUSED_BY_USER         =
           TABLES
             t_outtab                     = tb_output
          EXCEPTIONS
            program_error                  = 1
            OTHERS                         = 2.
    ENDFORM.                    " LISTA
    where
    'SET_PF_STATUS'
    'USER_COMAND'
    are two form like this.
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZSTANDARD'. " EXCLUDING rt_extab.
    ENDFORM.                               " SET_PF_STATUS
    FORM user_comand USING r_ucomm     LIKE sy-ucomm
                             rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&CPR'.
        WHEN 'YOUR CODE FUNCTION'
    endcase.
    I hope it can help you.
    Bye
    enzo

Maybe you are looking for