Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in ALV Report

Former Member
0 Likes
723

Hi All,

I have developed a ALV grid report where my first feild is checkbox.My requirement is that when user select some records using check box in output then a BDC should call to update each selected records and should display seelcted in secondary ALV report.

But my requirement is that when user click on Back button then first list should display now only unselected records,means those were not checked.

Please sugest how to do that.

Thanks

Mohit Khandelwal

Hi All,

I have developed a ALV grid report where my first feild is checkbox.My requirement is that when user select some records using check box in output then a BDC should call to update each selected records and should display seelcted in secondary ALV report.

But my requirement is that when user click on Back button then first list should display now only unselected records,means those were not checked.

Please sugest how to do that.

Thanks

Mohit Khandelwal

4 REPLIES 4
Read only

Former Member
0 Likes
674

Hi ...

Ur requirment seems bit tricky

but once i developed a code with checkbox which sends mail to ppl whose record mark using check-box...

the code is not in good shape performance wise but will surely help u want..its a HR Report



REPORT  ZHR_REPT_EMP_NOT_PBOOKED.


TYPE-POOLS slis.
*-----------tables
TABLES: pernr,
        pa0001,
        hrp1001,
        hrp1000,
        zodtab,
        zcstab,
        zsbutab.


*-----------Infotypes
INFOTYPES :0001,  "org assignment,
           1001,
           1000,
           0105.



TYPES : BEGIN OF i_conf,
          checkbox ,
          pernr TYPE pa0001-pernr,                  "personnel Number.
          ename TYPE pa0001-ename,                  "Name of Employee.
          zzbtc TYPE pa0001-zzbtc,                  "Band.
          btrtl  TYPE pa0001-btrtl,                 "Grade
          Location type string,
          persk type string,
          ptext type string,
          werks TYPE p0001-werks,
          zzod_txt type string,                         "OD name
          zzod type pa0001-zzod,
          zzcs type string,                         "cluster/sector
          vertical type string,
          sbu LIKE pa0001-zzsbu,                    "SBU
          sbutxt LIKE zsbutab-zsbutxt,              "SBUTXT
          orgeh LIKE pa0001-orgeh,                  "Vertical
          org_text type string,
          zzbloc LIKE pa0001-zzbloc,                "base location
          dept_loc type string,                     "dept loc
          ename_s LIKE pa0001-ename,                "Department
          zztc LIKE pa0001-zztc,
          endda type p0001-endda,
         celltab type lvc_t_styl,

        END OF i_conf.


DATA : it_conf TYPE STANDARD TABLE OF i_conf WITH HEADER LINE,
       wa_conf TYPE i_conf.

*data: begin of gs_outtab.
*data: checkbox type c.                "field for checkbox
** §B1.Extend your output table by a field to dis- or enable
**     cells for input.
*data: celltab type lvc_t_styl.        "field to switch editability
*        include structure i_conf.
*data: end of gs_outtab.
*
*data: gt_outtab type gs_outtab occurs 0 with header line.

*&---------------------------------------------------------------------*
*& DATA DECLARATION FOR EMAIL
*&---------------------------------------------------------------------*
DATA: docdata    TYPE sodocchgi1,
      objpack    TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
      objhead    TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
      objtxt     TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
      objbin     TYPE STANDARD TABLE OF solisti1   WITH HEADER LINE,
      reclist    TYPE STANDARD TABLE OF somlreci1  WITH HEADER LINE.

DATA: tab_lines  TYPE sy-tabix.
************************************************************************

DATA : p_1001 TYPE TABLE OF p1001 WITH HEADER LINE.
DATA : p_0001 TYPE TABLE OF p0001 WITH HEADER LINE.
DATA : p_0105 TYPE TABLE OF p0105 WITH HEADER LINE.
DATA : od TYPE p0001-zzod.
DATA : new_pernr type p0001-pernr.
DATA : pernr_s type p0001-pernr.
DATA : email_s type p0105-USRID_LONG.
DATA : email type p0105-USRID_LONG.
DATA : tc_name type string.
DATA : tc_num type string.
DATA : emails type string.
DATA : sel_all type string.
DATA: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA : flag type i.
DATA : title TYPE string.
DATA : pernr_temp tYPE p0001-pernr.
DATA : rel type string.
DATA : stat type string.
DATA : count type i.
DATA :   v_dynnr type sy-dynnr.
DATA : g_grid  type ref to cl_gui_alv_grid.
DATA : g_custom_container type ref to cl_gui_custom_container,
      g_container type scrfname value 'CC'.




*************field cat********************************
DATA:  fieldcat TYPE  lvc_t_fcat,
       wa_fieldcat LIKE LINE OF fieldcat.

DATA:  gd_layout TYPE lvc_s_layo,
      gd_repid TYPE sy-repid.

DATA:gt_events TYPE slis_t_event,
      gt_list_top_of_page TYPE slis_t_listheader.

DATA rec_fetched TYPE sy-tabix.

CONSTANTS g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.


SELECTION-SCREEN BEGIN OF  BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS:   s_zzod    FOR   zsbutab-zod       NO INTERVALS ,
                  s_btrtl  FOR   pa0001-btrtl     NO INTERVALS.


SELECTION-SCREEN END OF BLOCK b1.



start-of-selection.





  if pn-begda is initial.
    pn-begda = '18000101'.
  endif.
  if pn-endda is initial.
    pn-begda = '99991230'.
  endif.





  clear : it_conf,it_conf[].

get pernr.

  clear new_pernr.
  move pernr-pernr to new_pernr.

**************checking whether employee has booked or prebooked for any event****************
  clear: p_1001,p_1001[].

  perform read_info tables p_1001 using  new_pernr '1' 'B027' .

  IF SY-SUBRC <> 0.

    clear: p_1001,p_1001[].

    perform read_info tables p_1001 using  new_pernr '1' 'B023' .

    IF SY-SUBRC <> 0.

      clear: p_1001,p_1001[].

      perform read_info tables p_1001 using  new_pernr '2' 'B027' .

      IF SY-SUBRC <> 0.

        clear: p_1001,p_1001[].

        perform read_info tables p_1001 using  new_pernr '2' 'B023' .

        IF SY-SUBRC <> 0.

          clear : p_0001,p_0001[].
          CALL FUNCTION 'HR_READ_INFOTYPE'
            EXPORTING
              pernr           = new_pernr
              infty           = '0001'
              BEGDA           = pn-begda
              ENDDA           = pn-endda
            TABLES
              infty_tab       = p_0001
            EXCEPTIONS
              infty_not_found = 1
              OTHERS          = 2.

          sort p_0001 descending by begda.
          read table p_0001 index 1.

          move p_0001-pernr to wa_conf-pernr.
          move p_0001-ename to wa_conf-ename.
          move p_0001-zzbtc to wa_conf-zzbtc.
          move p_0001-btrtl to wa_conf-btrtl.
          move p_0001-werks to wa_conf-werks.
          move p_0001-zzsbu to wa_conf-sbu.
          move p_0001-orgeh to wa_conf-orgeh.
          move p_0001-zzbloc to wa_conf-zzbloc.
          move p_0001-zztc to wa_conf-zztc.
          move p_0001-zzod to wa_conf-zzod.
          move p_0001-endda to wa_conf-endda.
          move p_0001-btrtl to wa_conf-btrtl.



***************clustor txt**********************
          select single zcstxt into wa_conf-zzcs from zcstab
                                                where  zcs = p_0001-zzcs
                                                and zod = p_0001-zzod.

***********operating division*******************************
          select single ZODLTXT into  wa_conf-zzod_txt from zodtab
                                             where zod = wa_conf-zzod.
***********sbu txt***************************************************************
          select single zsbutxt into wa_conf-sbutxt from zsbutab
                                        where zsbu = wa_conf-sbu.

***********location**************************************
          select single btext into wa_conf-location from t001p
                                             where  btrtl = wa_conf-btrtl
                                             and werks = wa_conf-werks.

***********Dept*********************************************
          select single orgtx into wa_conf-org_text from t527x
                                              where sprsl = 'EN'
                                              and orgeh = wa_conf-orgeh
                                              and  begda <= p_0001-begda
                                              and endda >= p_0001-begda.
***************grade******************************************
          SELECT SINGLE ptext FROM t503t INTO  wa_conf-persk
                                          WHERE sprsl = 'EN'
                                          AND persk = p_0001-persk .

********************vertical*****************************
select single zverttxt into wa_conf-vertical from zvtab
                             where zvert = p_0001-zzvert.

********deputation location******************
  if p_0001-ZZDEPFLG = 'X'.
     select single zdltxt into wa_conf-dept_loc from zdltab where zdl = p_0001-zzdploc.

endif.

***get imm superior
          CALL FUNCTION 'ZHR_GET_IMMMED_SUPERIOR'
           EXPORTING
             pernr     =  new_pernr
*          begda     = '18000101'
*          endda     = '99991231'
           IMPORTING
             v_pernr   = pernr_s
           EXCEPTIONS
             not_found = 1
             OTHERS    = 2.

          if sy-subrc = 0.
** find the email of the immed. superiors personal number..

            clear : p_0001,p_0001[].
            CALL FUNCTION 'HR_READ_INFOTYPE'
              EXPORTING
                pernr           = pernr_s
                infty           = '0001'
                BEGDA           = pn-begda
                ENDDA           = pn-endda
              TABLES
                infty_tab       = p_0001
              EXCEPTIONS
                infty_not_found = 1
                OTHERS          = 2.

            read table p_0001 index 1.

            move p_0001-ename to wa_conf-ename_s.
          endif.


          if wa_conf-btrtl in s_btrtl and wa_conf-zzod in s_zzod .
            append wa_conf to it_conf.
          endif.
        endif.
      endif.
    endif.


  endif.
  clear wa_conf.



end-of-selection.
   if it_conf[] is initial.
      MESSAGE i501(zmod).
      exit.
      endif.

  CALL SCREEN 100.



*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'USER'.
*  SET TITLEBAR 'xxx'.




  if g_custom_container is  initial.


    data: lt_exclude type ui_functions.


    create object g_custom_container
      EXPORTING
        container_name = g_container.


    create object g_grid
      EXPORTING
        i_parent = g_custom_container.



    perform fieldcat_build .

* Exclude all edit functions in this example since we do not need them:
    perform exclude_tb_functions changing lt_exclude.

*  perform build_data.

*§ B3.Use the layout structure to aquaint additional field to ALV.

    gd_layout-stylefname = 'CELLTAB'.

    PERFORM build_layout.





    if it_conf[] is initial.
*      MESSAGE i501(zmod).                    "No data exists


    else.

      call method g_grid->set_table_for_first_display
        EXPORTING
          is_layout            = gd_layout
          it_toolbar_excluding = lt_exclude
        CHANGING
          it_fieldcatalog      = fieldcat
          it_outtab            = it_conf[].


*  create object g_event_receiver.
*  set handler g_event_receiver->catch_doubleclick for g_grid.
*
* Set editable cells to ready for input initially
      call method g_grid->set_ready_for_input
        EXPORTING
          i_ready_for_input = 1.
    endif.

  endif.

ENDMODULE.                 " STATUS_0100  OUTPUT


*call screen 100.
******************************************************************


*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
FORM build_layout.

  CLEAR gd_layout.
  v_dynnr = 100.

  gd_layout-cwidth_opt = 'X'.
*  gd_layout-zebra      = 'X'.
*  gd_layout-grid_title = text-002.

ENDFORM.                    "build_layout




*&---------------------------------------------------------------------*
*&      Form  exclude_tb_functions
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_EXCLUDE text
*----------------------------------------------------------------------*
form exclude_tb_functions changing pt_exclude type ui_functions.

  data ls_exclude type ui_func.

  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
  append ls_exclude to pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
  append ls_exclude to pt_exclude.


endform.                    "exclude_tb_functions
*&---------------------------------------------------------------------*
*&      Form  field_cat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM fieldcat_build .

  wa_fieldcat-fieldname  = 'CHECKBOX'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  wa_fieldcat-checkbox   = 'X'.
  wa_fieldcat-edit   = 'X'.

  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.


  wa_fieldcat-fieldname  = 'PERNR'.
  wa_fieldcat-coltext = 'P.S. No'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.


  wa_fieldcat-fieldname  = 'ENAME'.
  wa_fieldcat-coltext = 'Employee Name'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

  wa_fieldcat-fieldname  = 'ZZBTC'.
  wa_fieldcat-coltext = 'Band'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

  wa_fieldcat-fieldname  = 'PERSK'.
  wa_fieldcat-coltext = 'Grade'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.


  wa_fieldcat-fieldname  = 'ZZOD'.
  wa_fieldcat-coltext = 'OD Name'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.


  wa_fieldcat-fieldname  = 'ZZCS'.
  wa_fieldcat-coltext = 'Cluster / Sector '.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

   wa_fieldcat-fieldname  = 'VERTICAL'.
  wa_fieldcat-coltext = 'Vertical'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

  wa_fieldcat-fieldname  = 'SBUTXT'.
  wa_fieldcat-coltext = 'SBU'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

  wa_fieldcat-fieldname  = 'ORG_TEXT'.
  wa_fieldcat-coltext = 'Dept.'.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

  wa_fieldcat-fieldname  = 'LOCATION'.
  wa_fieldcat-coltext = 'Empl. Base Location '.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.


   wa_fieldcat-fieldname  = 'DEPT_LOC'.
  wa_fieldcat-coltext = 'Empl. Deputation Location '.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.



  wa_fieldcat-fieldname  = 'ENAME_S'.
  wa_fieldcat-coltext = 'IS Name '.
  wa_fieldcat-tabname   = 'IT_CONF'.
  APPEND wa_fieldcat TO fieldcat.
  clear wa_fieldcat.

endform.                    "field_cat






*&---------------------------------------------------------------------*
*&      Form  check_lock
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PS_OUTTAB  text
*      -->P_LOCKED   text
*----------------------------------------------------------------------*
form check_lock using    ps_outtab type i_conf
                changing p_locked.
  data ls_celltab type lvc_s_styl.

  loop at ps_outtab-celltab into ls_celltab.
    if ls_celltab-fieldname = 'CHECKBOX'.
      if ls_celltab-style eq cl_gui_alv_grid=>mc_style_disabled.
        p_locked = 'X'.
      else.
        p_locked = space.
      endif.
    endif.
  endloop.

endform.                    "check_lock




*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.

  IF sy-ucomm = 'EMAIL'.
    clear it_conf.

*    CALL METHOD g_grid->refresh_table_display.

    data: ls_outtab type i_conf.
    data: l_valid type c,
          l_locked type c.

*§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
*       you must check the input cells.
*
* If all entries are ok, ALV transferes new values to the output
* table which you then can modify.

    call method g_grid->check_changed_data
      IMPORTING
        e_valid = l_valid.

    if l_valid eq 'X'.

      loop at it_conf  into ls_outtab.
        if     not ls_outtab-checkbox is initial
           and not ls_outtab-checkbox eq '-'.

***************************sending mail to employee and his/her superior************************************
          select single  sachn  telnr  into (tc_name , tc_num) from t526
         where SACHX = it_conf-zztc
         and werks = it_conf-werks .


*   ******find the emil of employee.
          clear : p_0105,p_0105[].
          CALL FUNCTION 'HR_READ_INFOTYPE'
            EXPORTING
              pernr           = ls_outtab-pernr
              infty           = '0105'
              BEGDA           = pn-begda
              ENDDA           = pn-endda
            TABLES
              infty_tab       = p_0105
            EXCEPTIONS
              infty_not_found = 1
              OTHERS          = 2.

          if sy-subrc = 0.
            read table p_0105 with key subty = '0010'.

            move p_0105-USRID_LONG to email.
          endif.
** find immediate superior by Z FM.
          clear pernr_s.
          CALL FUNCTION 'ZHR_GET_IMMMED_SUPERIOR'
            EXPORTING
              pernr     = ls_outtab-pernr
            IMPORTING
              v_pernr   = pernr_s
            EXCEPTIONS
              not_found = 1
              OTHERS    = 2.
          if sy-subrc = 0.
** find the email of the immed. superiors personal number..

            clear : p_0105,p_0105[].
            CALL FUNCTION 'HR_READ_INFOTYPE'
              EXPORTING
                pernr           = pernr_s
                infty           = '0105'
                BEGDA           = pn-begda
                ENDDA           = pn-endda
              TABLES
                infty_tab       = p_0105
              EXCEPTIONS
                infty_not_found = 1
                OTHERS          = 2.

            read table p_0105 with key subty = '0010'.

            move p_0105-USRID_LONG to email_s.
          endif.

          if email <> ' '.
            count = 1.
            perform send_mail using ls_outtab-ename email email_s tc_name tc_num count .
          endif.
          if email_s <> ' '.
            count = 2.
            perform send_mail using ls_outtab-ename email email_s tc_name tc_num count.
          endif.


          call method g_grid->refresh_table_display.

          modify it_conf  from ls_outtab.
        endif.
      endloop.
      call method g_grid->refresh_table_display.



    endif.
    set screen 100.
  endif.
***************************end of sending mail*****************************************************


  IF sy-ucomm = 'SELECT'.


* CALL METHOD g_grid->refresh_table_display.

*§A4ad. Before you (a)set, reset or (d)evaluate checkboxes,
*       you must check the input cells.
*
* If all entries are ok, ALV transferes new values to the output
* table which you then can modify.

    call method g_grid->check_changed_data
      IMPORTING
        e_valid = l_valid.

    if l_valid eq 'X'.

      loop at it_conf into ls_outtab.
        perform check_lock using    ls_outtab
                           changing l_locked.
        if l_locked is initial
           and not ls_outtab-checkbox eq '-'.
          ls_outtab-checkbox = 'X'.
        endif.
        modify it_conf from ls_outtab.
      endloop.

      call method g_grid->refresh_table_display.

    endif.
    set screen 100.

  endif.


  IF sy-ucomm = 'BCK'  and v_dynnr = 100.
    clear v_dynnr.

    set screen 1000.

    leave screen.                                           " 0."1000.
**call selection-screen 1000.
*call screen 1000.

  endif.

  IF sy-ucomm = 'EXIT'  and v_dynnr = 100.
    clear v_dynnr.

    leave program.

  endif.

  IF sy-ucomm = 'CANC'  and v_dynnr = 100.
    clear v_dynnr.

    leave program.

  endif.


ENDMODULE.                 " USER_COMMAND_0100  INPUT




****************************************************************************************************************************
*&---------------------------------------------------------------------*
*&      Form  send_mail
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EMAIL_S    text
*      -->EMAIL      text
*      -->TC_NAME    text
*      -->TC_NUM     text
*----------------------------------------------------------------------*
form send_mail using  ename email email_s tc_name tc_num count.

*  *Body of mail
  CLEAR objtxt.
  CLEAR objtxt[].



  objtxt = text-005.
  concatenate objtxt ename into objtxt separated by space.
  append objtxt.
  clear objtxt.

  objtxt = text-006.
  concatenate objtxt email_s into objtxt separated by space.
  append objtxt.
  clear objtxt.


  append objtxt.

  objtxt = text-002.

  append objtxt.
  clear objtxt.

  objtxt = text-003.

  append objtxt.

  clear objtxt.
  append objtxt.

  objtxt = text-004.

  concatenate objtxt tc_name 'at' tc_num into objtxt separated by space.

  append objtxt.
  clear objtxt.


  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.

*Mail description
  CLEAR docdata.


  docdata-doc_size  = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
  docdata-obj_name  = 'Reminder'.
  docdata-obj_descr = 'REMINDER TO DO PRE-BOOKING'.
  docdata-obj_langu = sy-langu.

*Packing list for main document
  CLEAR objpack.
  CLEAR objpack[].

  objpack-head_start = 1.
  objpack-head_num   = 0.
  objpack-body_start = 1.
  objpack-body_num   = tab_lines.
  objpack-doc_type   = 'RAW'.
  APPEND objpack.

*Email receiver's list
  CLEAR reclist.
  CLEAR reclist[].
*
  if count = 1.
*  reclist-receiver = '*email-id*'.
    reclist-receiver = email.
  else.
    reclist-receiver = email_s.
  endif.
  reclist-rec_type = 'U'.

  APPEND reclist.

  .
  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 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
      document_data              = docdata
      document_type              = 'RAW'
      put_in_outbox              = 'X'
      commit_work                = 'X'
    TABLES
      object_content             = objtxt
      receivers                  = reclist
    EXCEPTIONS
      TOO_MANY_RECEIVERS         = 1
      DOCUMENT_NOT_SENT          = 2
      DOCUMENT_TYPE_NOT_EXIST    = 3
      OPERATION_NO_AUTHORIZATION = 4
      PARAMETER_ERROR            = 5
      X_ERROR                    = 6
      ENQUEUE_ERROR              = 7
      OTHERS                     = 8.

  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.                    "send_mail


*&---------------------------------------------------------------------*
*&      Form  eventtab_build
*&---------------------------------------------------------------------*
FORM eventtab_build USING rt_events TYPE slis_t_event.

*Registration of events to happen during list display
  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = rt_events.
  READ TABLE rt_events WITH KEY name = slis_ev_top_of_page INTO ls_event.
  IF sy-subrc = 0.
    MOVE g_top_of_page TO ls_event-form.
    APPEND ls_event TO rt_events.
  ENDIF.

ENDFORM.                    "eventtab_build


*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
FORM top_of_page.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = gt_list_top_of_page.

ENDFORM.                    "top_of_page


*&---------------------------------------------------------------------*
*&      Form  COMMENT_BUILD
*&---------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.

  DATA: ls_line TYPE slis_listheader,
          rp_date TYPE string.              "report date

* LIST HEADING LINE: TYPE H
  CLEAR ls_line.
  ls_line-typ  = 'H'.
  ls_line-info = text-007.
  APPEND ls_line TO lt_top_of_page.

  CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum(4) INTO rp_date SEPARATED BY '.'.

* STATUS LINE: TYPE S
  CLEAR ls_line.
  ls_line-typ  = 'S'.
  ls_line-key  = text-008.
  ls_line-info = rp_date.
  APPEND ls_line TO lt_top_of_page.



ENDFORM.                    "comment_build



*&---------------------------------------------------------------------*
*&      Form  read_info
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_1001     text
*      -->PERNR      text
*      -->STAT       text
*      -->REL        text
*----------------------------------------------------------------------*
form read_info tables p_1001 using  pernr stat rel.
  CALL FUNCTION 'RH_READ_INFTY_1001'
    EXPORTING
      AUTHORITY        = 'DISP'
      WITH_STRU_AUTH   = 'X'
      PLVAR            = '01'
      OTYPE            = 'P'
      OBJID            = pernr
      ISTAT            = stat
      SUBTY            = rel
      BEGDA            = pn-begda
      ENDDA            = pn-endda
    TABLES
      I1001            = p_1001
    EXCEPTIONS
      NOTHING_FOUND    = 1
      WRONG_CONDITION  = 2
      WRONG_PARAMETERS = 3
      OTHERS           = 4.
endform.                    "read_info
*&---------------------------------------------------------------------*
*&      Module  BACK  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE BACK INPUT.

  IF SY-UCOMM = 'E'.
    leave program.
  endif.
  IF SY-UCOMM = 'ENDE'.
    leave program.
  endif.
  IF SY-UCOMM = 'ECAN'.
    leave program.
  endif.

ENDMODULE.                 " BACK  INPUT

regards

vivek

Read only

prasanth_kasturi
Active Contributor
0 Likes
674

Hi Mohit,

in the code after completing the BDC

you will move the selected records to new ALV I guess you are are moving to new internal Table

then in the previous internal table

delete the record from the table

and make use of the REFRESH field in the slis_selfield

JUST MOVE X TO SLIS_SELFIELD REFRESH FIELD

Look at the example code


        DELETE it_mara WHERE matnr = r_selfield-value.     " Deleting the record
        MOVE 'X' TO r_selfield-refresh .                   " Refreshing AlV List




I too had a similar one look at the code below. I did the same select the record and update through BDC call transaction. 
the code is as below  have  look

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->U_COMM     User command
*      -->R_SELFIELD Details of selected line
*----------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm
                r_selfield TYPE slis_selfield.




  CASE ucomm.

*   when 'LEAVE'.
*     SUBMIT ZP_ALV_EXAMPLE VIA SELECTION-SCREEN  AND RETURN.
*  Leave to screen 0.


    WHEN 'UPDATE'.           " UPDATE TO DATA BASE

      READ TABLE it_mara INTO wa_mara WITH KEY matnr = r_selfield-value.

      REFRESH it_bdcdata.
      REFRESH it_message.

      PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RMMG1-MATNR'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'RMMG1-MATNR'
                                    wa_mara-matnr.
      PERFORM bdc_field       USING 'RMMG1-MBRSH'
                                    wa_mara-mbrsh.
      PERFORM bdc_field       USING 'RMMG1-MTART'
                                    wa_mara-mtart.

      PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'MSICHTAUSW-DYTXT(02)'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTR'.
      PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(01)'
                                    'X'.
      PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(02)'
                                    'X'.

      PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'MAKT-MAKTX'
                                    wa_mara-maktx.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'MARA-MEINS'.
      PERFORM bdc_field       USING 'MARA-MEINS'
                                    wa_mara-meins.
      PERFORM bdc_field       USING 'MARA-MTPOS_MARA'
                                    'VOLL'.

      PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      PERFORM bdc_field       USING 'MAKT-MAKTX'
                                    wa_mara-maktx.
      PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=YES'.

      CALL TRANSACTION 'MM01' USING it_bdcdata         " Update using call transaction method in Back ground mode and asynchronous update
            MODE 'N'
            UPDATE 'S'
            MESSAGES INTO it_message.

  
        DELETE it_mara WHERE matnr = r_selfield-value.     " Deleting the record 
        MOVE 'X' TO r_selfield-refresh .                                 " Refreshing AlV List <----- HERE

      ENDIF.


  ENDCASE.


ENDFORM.                    "USER_COMMAND

regards

Prasanth

Read only

Former Member
0 Likes
674

Hi,

Please find the code for a simlar requirement, in this initial screen will be an ALV report with check boxes, upon selcting it and selecting DELIVER button, process of delivery via VL01 transaction(BDC method will be performed.

*&---------------------------------------------------------------------*
*& Report  ZATL_DELIVERY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zatl_delivery.

INCLUDE zatl_delivery_declarations.

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECT-OPTIONS:  s_vbeln FOR vbak-vbeln OBLIGATORY.

SELECTION-SCREEN END OF BLOCK a.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION .

* get the sales order numbers thru given
* selection-screen parameters
  SELECT vbeln FROM vbak INTO TABLE it_data
          WHERE vbeln IN s_vbeln.
*           AND  ERDAT = P_DATE.


  IF NOT it_data[] IS INITIAL.
    SELECT vbeln vstel FROM vbap INTO TABLE it_vstel
             FOR ALL ENTRIES IN it_data
               WHERE vbeln = it_data-vbeln.
  ENDIF.
  LOOP AT it_data INTO wa_data.
    CALL FUNCTION 'ZBAPI_GET_MATERIAL_PLANT_DTL'
      EXPORTING
        v_vbeln = wa_data-vbeln
      TABLES
        it_bapi = it_result.

    LOOP AT it_result INTO wa_result.
      READ TABLE it_vstel INTO wa_vstel WITH KEY
                       vbeln = wa_result-vbeln.
      wa_final-vbeln = wa_result-vbeln. " SALES ORDER NO
      wa_final-matnr = wa_result-matnr.
      wa_final-vstel = wa_vstel-vstel.
      wa_final-werks = wa_result-werks.
      wa_final-labst = wa_result-kwmeng.
      APPEND wa_final TO it_final.
      CLEAR wa_result.
    ENDLOOP.
    REFRESH it_result.
    CLEAR wa_data.
  ENDLOOP.

  PERFORM build_fldcat.
  PERFORM disp_output.
*SET PF-STATUS 'ABC'.
*&---------------------------------------------------------------------*
*&      Form  ABC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM abc USING extab TYPE slis_t_extab.
  SET PF-STATUS 'ABC'. " excluding extab.
ENDFORM.                    "ABC
*  read
*&---------------------------------------------------------------------*
*&      Form  build_fldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fldcat .

  wa_fldcat-col_pos = '1'.
  wa_fldcat-fieldname = 'MARK'.
  wa_fldcat-checkbox = 'X'.
  wa_fldcat-edit = 'X'.
  wa_fldcat-seltext_m     = 'MARK'.
  APPEND wa_fldcat TO i_fldcat.
  CLEAR wa_fldcat.

  wa_fldcat-col_pos = '2'.
  wa_fldcat-fieldname = 'VBELN'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'SALES ORD NO'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '3'.
  wa_fldcat-fieldname = 'MATNR'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'MAT NO'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '4'.
  wa_fldcat-fieldname = 'WERKS'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'PLANT'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '5'.
  wa_fldcat-fieldname = 'LABST'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'QNTY'.
  APPEND wa_fldcat TO i_fldcat.

ENDFORM.                    " build_fldcat
*&---------------------------------------------------------------------*
*&      Form  disp_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM disp_output .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'ABC'
      it_fieldcat              = i_fldcat
      i_callback_user_command  = 'CHECKED'
    TABLES
      t_outtab                 = it_final
    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.
ENDFORM.                    " disp_output

*&---------------------------------------------------------------------*
*&      Form  CHECKED
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM checked USING r_ucomm LIKE sy-ucomm
              rs_selfield TYPE slis_selfield.

  DATA: gd_repid LIKE sy-repid, "Exists

  ref_grid TYPE REF TO cl_gui_alv_grid.

  IF ref_grid IS INITIAL.

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = ref_grid.

  ENDIF.

  IF NOT ref_grid IS INITIAL.

    CALL METHOD ref_grid->check_changed_data .

  ENDIF.

  CASE r_ucomm.

    WHEN 'DELIVERY'.


      IF rs_selfield-fieldname = 'MARK'.


        DATA : date_external(10) TYPE c.

        DATA: temp_date TYPE sy-datum.

        temp_date = sy-datum.

        temp_date = temp_date + 1.


        CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
          EXPORTING
            date_internal            = sy-datum
          IMPORTING
            date_external            = date_external
          EXCEPTIONS
            date_internal_is_invalid = 1
            OTHERS                   = 2.

        LOOP AT it_final INTO wa_final WHERE mark EQ 'X'.



          PERFORM bdc_dynpro      USING 'SAPMV50A' '0100'.

          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'LV50C-VBELN'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '/00'.
          PERFORM bdc_field       USING 'LIKP-VSTEL'
                                        wa_final-vstel. " 'HLL'.

          PERFORM bdc_field       USING 'LV50C-DATBI'
                                        date_external. "



          PERFORM bdc_field       USING 'LV50C-VBELN'
                                        wa_final-vbeln.     " '34'.
          PERFORM bdc_dynpro      USING 'SAPMV50A' '0200'.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'LIPS-MATNR(02)'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=SICH'.


          PERFORM bdc_field       USING 'LIKP-BLDAT'
                                        date_external. " '19.09.2008'.

            CLEAR date_external.

          CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
            EXPORTING
              date_internal            = temp_date
            IMPORTING
              date_external            = date_external
            EXCEPTIONS
              date_internal_is_invalid = 1
              OTHERS                   = 2.


          PERFORM bdc_field       USING 'LIKP-WADAT'
                                        date_external ." '19.09.2008'.

            CLEAR date_external.

          PERFORM bdc_field       USING 'LIKP-BTGEW'
                                        wa_final-labst.     " -'12'.
          PERFORM bdc_field       USING 'LIKP-GEWEI'
                                        'wa_likp-GEWEI'.


          PERFORM bdc_transaction USING 'VL01'.
          PERFORM msg_get  TABLES it_msg.
          CLEAR wa_final.
          REFRESH it_msg.
        ENDLOOP.
        PERFORM disp_msg.

      ENDIF.
  ENDCASE.

ENDFORM.                    "CHECKED
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0443   text
*      -->P_0444   text
*----------------------------------------------------------------------*
FORM bdc_dynpro  USING    value(p_0443)
                          value(p_0444).
  wa_bdc-program = p_0443.
  wa_bdc-dynpro =  p_0444.
  wa_bdc-dynbegin = 'X'.
  APPEND wa_bdc TO it_bdc.
  CLEAR wa_bdc.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0448   text
*      -->P_0449   text
*----------------------------------------------------------------------*
FORM bdc_field  USING    value(p_0448)
                         value(p_0449).
  wa_bdc-fnam = p_0448.
  wa_bdc-fval =  p_0449.
  APPEND wa_bdc TO it_bdc.
  CLEAR wa_bdc.
ENDFORM.                    " BDC_FIELD
*&---------------------------------------------------------------------*
*&      Form  BDC_TRANSACTION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0508   text
*----------------------------------------------------------------------*
FORM bdc_transaction  USING    value(p_0508).
  CALL TRANSACTION p_0508 USING it_bdc
                       MODE 'N'
                       UPDATE 'S'
                       MESSAGES INTO it_msg.
ENDFORM.                    " BDC_TRANSACTION
*&---------------------------------------------------------------------*
*&      Form  msg_get
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_IT_MSG  text
*----------------------------------------------------------------------*
FORM msg_get  TABLES   p_it_msg STRUCTURE bdcmsgcoll.

  LOOP AT p_it_msg INTO wa_msg.
    v_msgid = wa_msg-msgid.
    v_msgnr = wa_msg-msgnr.
    v_msgv1 = wa_msg-msgv1.
    v_msgv2 = wa_msg-msgv2.
    v_msgv3 = wa_msg-msgv3.
    v_msgv4 = wa_msg-msgv4.
    IF wa_msg-msgtyp = 'E' OR
       wa_msg-msgtyp = 'A' OR
       wa_msg-msgtyp = 'X'.
      PERFORM build_msg USING v_msgid
                        v_msgnr
                        v_msgv1
                        v_msgv2
                        v_msgv3
                        v_msgv4
                  CHANGING msg_text_e.

*   Build the text for successful records getting created
    ELSEIF wa_msg-msgtyp = 'S' OR
           wa_msg-msgtyp = 'W' OR
           wa_msg-msgtyp = 'I'.
      PERFORM build_msg USING v_msgid
                              v_msgnr
                              v_msgv1
                              v_msgv2
                              v_msgv3
                              v_msgv4
                         CHANGING msg_text_s.
    ENDIF.
  ENDLOOP.


ENDFORM.                    " msg_get
*&---------------------------------------------------------------------*
*&      Form  build_msg
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_V_MSGID  text
*      -->P_V_MSGNR  text
*      -->P_V_MSGV1  text
*      -->P_V_MSGV2  text
*      -->P_V_MSGV3  text
*      -->P_V_MSGV4  text
*      <--P_MSG_TEXT_E  text
*----------------------------------------------------------------------*
FORM build_msg  USING    p_v_msgid
                         p_v_msgnr
                         p_v_msgv1
                         p_v_msgv2
                         p_v_msgv3
                         p_v_msgv4
                CHANGING p_msg_text_s.

  CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
    EXPORTING
      langu = sy-langu
      msgid = p_v_msgid
      msgno = p_v_msgnr " wa_msgcoll-msgnr
      msgv1 = p_v_msgv1
      msgv2 = p_v_msgv2
      msgv3 = p_v_msgv3
      msgv4 = p_v_msgv4
    IMPORTING
      text  = p_msg_text_s.
  wa_mess-v_msg = p_msg_text_s .
  APPEND wa_mess TO i_mess.
  CLEAR wa_mess.

ENDFORM.                    " build_msg
*&---------------------------------------------------------------------*
*&      Form  disp_msg
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM disp_msg .

  PERFORM build_fieldcat_secandary.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'BCD'
      it_fieldcat              = i_fldcat1
      i_callback_user_command  = 'SECANDARY'
    TABLES
      t_outtab                 = i_mess
    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.


ENDFORM.                    " disp_msg
*&---------------------------------------------------------------------*
*&      Form  build_fieldcat_secandary
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcat_secandary .


  wa_fldcat1-col_pos = '1'.
  wa_fldcat1-fieldname = 'V_MSG'.
  wa_fldcat1-tabname = 'I_MESS'.
  wa_fldcat1-seltext_m     = 'MESSAGE'.
  APPEND wa_fldcat1 TO i_fldcat1.

ENDFORM.                    " build_fieldcat_secandary



*&---------------------------------------------------------------------*
*&      Form  SECANDARY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM    text
*----------------------------------------------------------------------*
FORM secandary USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.

  CASE r_ucomm.

    WHEN 'BCK'.

      LEAVE TO SCREEN 0.

  ENDCASE.

ENDFORM.                    "SECANDARY

*&---------------------------------------------------------------------*
*&      Form  ABC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM bcd USING extab TYPE slis_t_extab.

  SET PF-STATUS 'BCD'. " excluding extab.

ENDFORM.

Code in the include zatl_delivery_declarations is below.

*&---------------------------------------------------------------------*
*&  Include           ZATL_DELIVERY_DECLARATIONS
*&---------------------------------------------------------------------*

TABLES:vbak,likp, sscrfields.

TYPE-POOLS: slis.
DATA : it_result LIKE TABLE OF zbapi_get_dlt,
       wa_result TYPE zbapi_get_dlt,
       it_return LIKE TABLE OF bapiret2.
DATA : BEGIN OF it_data OCCURS 0,
        vbeln TYPE vbak-vbeln,
*        ERDAT TYPE VBAK-ERDAT,
*        KUNNR TYPE VBAK-KUNNR,
        END OF it_data.
DATA : v_vstel TYPE vbap-vstel.
DATA : wa_data LIKE it_data.

DATA : v_check TYPE c.

DATA : v_date TYPE vbep-bmeng.

DATA: i_fldcat TYPE slis_t_fieldcat_alv ,
      wa_fldcat TYPE slis_fieldcat_alv.

DATA: i_fldcat1 TYPE slis_t_fieldcat_alv ,
      wa_fldcat1 TYPE slis_fieldcat_alv.


TYPES: BEGIN OF wa_final,
       mark     TYPE flag,
       vbeln    TYPE vbap-vbeln,
       matnr    TYPE vbap-matnr,
       vstel    TYPE vbap-vstel,
       werks    TYPE vbap-werks,
       labst    TYPE mard-labst,
       END OF wa_final.
DATA : it_final TYPE TABLE OF wa_final,
       wa_final LIKE LINE OF it_final.
DATA: BEGIN OF it_vstel OCCURS 0,
         vbeln TYPE vbap-vbeln,
         vstel TYPE vbap-vstel,
      END OF it_vstel,
      wa_vstel LIKE it_vstel.
DATA : it_bdc TYPE TABLE OF bdcdata,
       wa_bdc LIKE LINE OF it_bdc.
DATA : it_msg TYPE TABLE OF bdcmsgcoll,
       wa_msg LIKE LINE OF it_msg.

TYPES: BEGIN OF ty_likp,
*       bldat TYPE bldat,
       wadat TYPE wadak,
       gewei TYPE gewei,
       END OF ty_likp.

DATA: wa_likp TYPE ty_likp.

DATA  : v_msgnr LIKE sy-msgno,
        v_msgv1 LIKE sy-msgv1,
        v_msgv2 LIKE sy-msgv2,
        v_msgv3 LIKE sy-msgv3,
        v_msgv4 LIKE sy-msgv4.

DATA  v_msgid LIKE sy-msgid.
DATA : msg_text_s(128),
       msg_text_e(128).

DATA : BEGIN OF i_mess OCCURS 0,
         v_msg(200),
      END OF i_mess.
DATA : wa_mess LIKE i_mess.

And the code used to create the custom function module in the main code is given below.

FUNCTION ZBAPI_GET_MATERIAL_PLANT_DTL.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(V_VBELN) TYPE  ZBAPI_STRU-VBELN
*"  TABLES
*"      IT_BAPI STRUCTURE  ZBAPI_GET_DLT
*"      IT_RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------

DATA : WA_BAPI TYPE ZBAPI_GET_DLT,
       V_IND TYPE I.
* TO GET SALES ORDER NUMBER NUMBER OF ITEMS AND PLANT DETAILS*.
       SELECT VBELN MATNR WERKS  KWMENG
              FROM VBAP
              INTO TABLE IT_BAPI
              WHERE VBELN = V_VBELN.
       IF SY-SUBRC = 0.

       ENDIF.


ENDFUNCTION.

The structure of ZBAPI_STRU is given below.

VBELN TYPE VBELN_VA

MATNR TYPE MATNR

WERKS TYPE WERKS_EXT

LABST TYPE LABST

Hope this helps you,

Murthy.

Read only

Former Member
0 Likes
674

Hi,

Use Submit and call one more program for BDC and Error log display. after executing BDC display the log in submitted report itself. when u press back come back to first program selection screen.

to send the BDC table values use EXPORT and IMPORT memory .

If you need further help. please update me.

Regards,

Nandha