ALV hierarchy with Smartform

How can I do a Smartform from an ALV hierarchy? Is this possible?
Please give me any help...
Regards.
Hugo

Hi, thank for your reply.
Well... I've a hierarchy alv report with a status bar... It's working properly.
Now, I want to print a smarform from this report...
this show the alv ************
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    exporting
      i_callback_program = vl_repid
      is_layout                = st_layout
      it_fieldcat               = t_fieldcat[]
      i_tabname_header  = 'T_AUX'
      i_tabname_item     = 'T_OUTPUT'
      is_keyinfo              = st_key
    tables
      t_outtab_header    = t_aux[]
      t_outtab_item       = t_output[]
    exceptions
      program_error      = 1
      others                 = 2.
My doubt is in the smartform... I can pass 2 tables as parameters???
-->
  call function l_fm_name
    exporting
      p_gjahr   = p_gjahr
      p_form    = p_form
      p_date_d  = p_date_d
      p_date_h  = p_date_h
      p_nom     = p_nom
    tables
      gt_salida = gt_salida ????  "Table 1
    exceptions
      formatting_error           = 1
      internal_error             = 2
      send_error                 = 3
      user_canceled              = 4
      others                     = 5.
I'm sorry for my poor english...

Similar Messages

  • Setting the ALV Hierarchy tree with grid line between the columns and rows

    Hi Experts,
    I would like to ask if there is any suggestion on setting the ALV hierarchy tree to be separated by grid line between the columns and rows just like how it is display the same way in normal ALV grid.
    Thanks in advance.

    Hi Lin,
    The requirement which you have stated is not possible.
    Lin,
    Also i have a query regarding BADI ZME_PROCESS_REQ_CUST, which you had raised on SDN. You have marked the question as solved/answered.
    Changing the data of a customize field in purchase requisition
    Could you please let me know, the steps you did to update the screen fields through the BADI.
    I would really appreciate your reply, because i am facing exactly the same problem which you have mentioned.
    Thanks,
    Best regards,
    Prashant

  • Top_of_page is not working in ALV hierarchy?

    Hi,
          I have written following code for top_of_page using event but which is not working...This report is developed for interactive report.
    Note: passed the it_events into ALV hierarchy functional module.
    FORM build_event_tab .
       CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           i_list_type = 1
         IMPORTING
           et_events   = it_events[].
       READ TABLE it_events INTO wa_events WITH KEY form = 'TOP_OF_PAGE'.
       IF sy-subrc = 0.
         wa_events-form = 'TOP_OF_PAGE'.
         APPEND wa_events TO it_events.
       ENDIF.
    ENDFORM. "Get_events
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
       DATA: dl_text(255) TYPE c,
             lv_cutime TYPE sy-uzeit,
             lv_cudt(20) TYPE c.
       lv_cudt = sy-datum.
    *--Passing Date----*
       WRITE  lv_cudt TO dl_text.
       CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                             lv_cudt+4(2) '-'
                             lv_cudt+0(4) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
       WRITE 'Company Name' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 150.
       lv_cutime = sy-uzeit.
       CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                             lv_cutime+2(2) ':'
                             lv_cutime+4(2) INTO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text = dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 60.
       WRITE 'Title' TO dl_text.
       CALL METHOD document->add_text
         EXPORTING
           text         = dl_text
           sap_emphasis = cl_dd_area=>heading
           sap_style    = cl_dd_area=>heading
           sap_color    = cl_dd_area=>list_total_inv.
       CLEAR : dl_text.
       CALL METHOD document->add_gap
         EXPORTING
           width = 50.
    ENDFORM.                    "html_top_of_page
    Thanks
    Shree

    PERFORM build_fieldcat.
      PERFORM build_event_tab.
      PERFORM alv_display.
    *---Build fieldcat
    FORM build_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'LIFNR'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'SUPPLIER'.
      wa_fieldcat-outputlen = 20.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_VENDOR'.
      wa_fieldcat-fieldname = 'NAME1'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = 'VENDOR NAME'.
      wa_fieldcat-outputlen = 40.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'WERKS'.
      wa_fieldcat-col_pos   = '1'.
      wa_fieldcat-seltext_l = 'Plant'.
      wa_fieldcat-outputlen = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'AWKEY'.
      wa_fieldcat-col_pos   = '2'.
      wa_fieldcat-seltext_l = ' Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BELNR'.
      wa_fieldcat-col_pos   = '3'.
      wa_fieldcat-seltext_l = 'A/c Document'.
      wa_fieldcat-hotspot = 'X'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BUDAT'.
      wa_fieldcat-col_pos   = '4'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'XBLNR'.
      wa_fieldcat-col_pos   = '5'.
      wa_fieldcat-seltext_l = 'Inv'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'BLDAT'.
      wa_fieldcat-col_pos   = '6'.
      wa_fieldcat-seltext_l = 'PJ Date'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'DMBTR'.
      wa_fieldcat-col_pos   = '7'.
      wa_fieldcat-seltext_l = 'Bill.Amount'.
      wa_fieldcat-outputlen = 19.
      wa_fieldcat-do_sum   = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'IT_FINAL'.
      wa_fieldcat-fieldname = 'HKONT'.
      wa_fieldcat-col_pos   = '8'.
      wa_fieldcat-seltext_l = 'Cost Ctr'.
      wa_fieldcat-outputlen = 16.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    "Build_fieldcat
    *----ALV Display-----*
    FORM alv_display.
      key-header01 = 'LIFNR'.
      key-item01   = 'LIFNR'.
      DELETE ADJACENT DUPLICATES FROM it_vendor.
      DELETE ADJACENT DUPLICATES FROM it_final.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_user_command  = 'USER_COMMAND'
          i_callback_pf_status_set = 'PFSTATUS'
          it_fieldcat              = it_fieldcat[]
          i_tabname_header         = 'IT_VENDOR'
          i_tabname_item           = 'IT_FINAL'
          it_events                = it_events[]
          is_keyinfo               = key
        TABLES
          t_outtab_header          = it_vendor[]
          t_outtab_item            = it_final[].
    ENDFORM.                    "alv_display
    *----interactive method--
    FORM user_command USING r_ucomm TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          READ TABLE it_final INTO wa_final INDEX rs_selfield-tabindex.
          IF sy-subrc = 0.
            IF rs_selfield-fieldname = 'BELNR'.
              SET PARAMETER ID 'BLN' FIELD wa_final-belnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'AWKEY'.
              SET PARAMETER ID 'RBN' FIELD wa_final-awkey.
              SET PARAMETER ID 'GJR' FIELD pa_gjahr.
              CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'LFBNR'.
              SET PARAMETER ID 'BLN' FIELD it_bsak-lfbnr.
              SET PARAMETER ID 'BUK' FIELD pa_bukrs.
              SET PARAMETER ID 'GJA' FIELD pa_gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ELSEIF rs_selfield-fieldname = 'EBELN'.
              SELECT SINGLE
                     ebeln
                     INTO wk_ebeln
                     FROM ekko
                     WHERE ebeln = it_bsak-ebeln
                     AND bstyp = 'F'.
              IF sy-subrc EQ 0.
                SET PARAMETER ID 'BES' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
              ELSE.
                SET PARAMETER ID 'VRT' FIELD it_bsak-ebeln.
                CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
              ENDIF.
            ENDIF.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    FORM pfstatus USING ut_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.
    ENDFORM.                    "pfstatus
    *---Authorization check---
    FORM bukrs_check.
      SELECT SINGLE
             butxt "Name of the Company Code / Company
             ort01 "City
             INTO (wk_company, wk_city) FROM t001
             WHERE  bukrs = pa_bukrs.
      IF sy-subrc <> 0.
        MESSAGE 'create your own message' TYPE 'I'.
      ENDIF.
    ENDFORM.                    " BUKRS_CHECK
    FORM build_event_tab.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = it_events[].
      READ TABLE it_events INTO wa_events
         WITH KEY name = 'SLIS_EV_TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'TOP_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
      READ TABLE it_events INTO wa_events WITH KEY name =
                    'SLIS_EV_END_OF_PAGE'.
      IF sy-subrc = 0.
        wa_events-form = 'END_OF_PAGE'.
        MODIFY it_events FROM wa_events INDEX sy-tabix.
      ENDIF.
    ENDFORM. "Get_events
    FORM end_of_page.
      DATA: it_header TYPE slis_t_listheader,
            wa_header TYPE slis_listheader.
      wa_header-typ = 'S'.
      wa_header-key = 'MATERIAL'.
    *  wa_line-info = p1.
      APPEND wa_header TO it_header.
      CLEAR wa_header.
    *  READ TABLE it_maktx WITH KEY matnr = p1.
      wa_header-typ = 'S'.
      wa_header-key = 'DESCRIPTION'.
    *  wa_line-info = it_maktx-maktx.
      APPEND  wa_header TO it_header.
      CLEAR wa_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
    *      i_logo             = 'ENJOYSAP_LOGO'
           it_list_commentary = it_header.
    ENDFORM.                    "END_OF_PAGE
    FORM top_of_page USING document TYPE REF TO cl_dd_document.
      DATA: dl_text(255) TYPE c,
            lv_cutime TYPE sy-uzeit,
            lv_cudt(20) TYPE c.
      lv_cudt = sy-datum.
    *--Passing Date----*
      WRITE  lv_cudt TO dl_text.
      CONCATENATE 'Date : ' lv_cudt+6(2) '-'
                            lv_cudt+4(2) '-'
                            lv_cudt+0(4) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      WRITE 'INCAP CON MFG SER (P) LTD' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 150.
      lv_cutime = sy-uzeit.
      CONCATENATE 'Time : ' lv_cutime+0(2) ':'
                            lv_cutime+2(2) ':'
                            lv_cutime+4(2) INTO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text = dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 60.
      WRITE 'Purchase Journal' TO dl_text.
      CALL METHOD document->add_text
        EXPORTING
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_style    = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_total_inv.
      CLEAR : dl_text.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
    ENDFORM.                    "html_top_of_page

  • ALV HIERARCHIAL REPORT

    Dear Experts,
    Can anyone tell me how to create a ALV Hierarchial report with one HEADER table and multiple ITEM(child) tables.
    thanks & regards,
    gautam

    Hi you can tray review this code for a example i found in the web and help me:
    REPORT Z_TEST_HIESEQ_REPORT.
    TABLES: ekko,ekpo.
    * selection option
    SELECT-OPTIONS s_ebeln FOR ekko-ebeln.
    TYPE-POOLS:slis.
        * define header table and item table
    DATA: BEGIN OF headertab OCCURS 0,
              ebeln LIKE ekko-ebeln,
              bstyp LIKE ekko-bstyp,
             bsart LIKE ekko-bsart,
             statu LIKE ekko-statu,
             END OF headertab.
        DATA: BEGIN OF itemtab OCCURS 0,
        ebeln LIKE ekpo-ebeln,
        ebelp LIKE ekpo-ebelp,
        matnr LIKE ekpo-matnr,
        werks LIKE ekpo-werks,
        menge LIKE ekpo-menge,
        netpr LIKE ekpo-netpr,
        peinh LIKE ekpo-peinh,
        netwr LIKE ekpo-netwr,
        END OF itemtab.
        DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
        DATA: v_repid LIKE sy-repid.u201Ccurrent program name
        DATA: g_tabname_header TYPE slis_tabname,
        g_tabname_item TYPE slis_tabname.
        * data connect header table and item table
        * we can set 5 field as foreign key at same time
        DATA: gs_keyinfo TYPE slis_keyinfo_alv.
        INITIALIZATION.
        v_repid = sy-repid.
        START-OF-SELECTION.
        PERFORM get_data.
        END-OF-SELECTION.
        * get field catalog of header table
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
        i_program_name = v_repid
        i_internal_tabname = 'HEADERTAB'
        i_inclname = v_repid
        i_bypassing_buffer = 'X'
        i_buffer_active = "
        CHANGING
        ct_fieldcat = i_fieldcat
        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.
        * get field catalog of item table
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
        i_program_name = sy-repid
        i_internal_tabname = 'ITEMTAB'
        i_inclname = v_repid
        i_bypassing_buffer = 'X'
        i_buffer_active = "
        CHANGING
        ct_fieldcat = i_fieldcat
        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.
        * set the header and item table are connected by pur doc number
        gs_keyinfo-header01 = 'EBELN'.
        gs_keyinfo-item01 = 'EBELN'.
        g_tabname_header = 'HEADERTAB'.
        g_tabname_item = 'ITEMTAB'.
        CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
        i_callback_program = v_repid
        it_fieldcat = i_fieldcat
        i_save = 'A'
        i_tabname_header = g_tabname_header
        i_tabname_item = g_tabname_item
        is_keyinfo = gs_keyinfo
        i_bypassing_buffer = 'X'
        i_buffer_active = ' '
        TABLES
        t_outtab_header = headertab
        t_outtab_item = itemtab
        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.
        FORM get_data.
        SELECT ebeln bstyp bsart statu
        INTO TABLE headertab
        FROM ekko
        UP TO 100 ROWS
        WHERE ebeln IN s_ebeln.
        IF NOT headertab[] IS INITIAL.
        SELECT ebeln ebelp matnr werks menge netpr peinh netwr
        INTO TABLE itemtab
        FROM ekpo
        FOR ALL ENTRIES IN headertab
        WHERE ebeln = headertab-ebeln.
        ENDIF.
        ENDFORM. "get_data
    Edited by: Juan Manuel Garcia on Aug 17, 2010 11:29 PM
    Edited by: Juan Manuel Garcia on Aug 17, 2010 11:36 PM

  • Re:BDC,ALV,SCRIPTS and SMARTFORMS

    Hi,
             i need a complete BDC programming example codes with different methods, suppose if it is a material master mm01, i need the screen shots, what to fill in that transaction , the flat file  data snapshot and program, so that i will do that example, otherwise iam so much confused
        I also need ALV ,SAPSCRIPTS and smartforms realtime sample codes with screenshots so tht i will try directly .
       Iam very thankful to all of them who helps me
      Thanks & Regards,
      Sravanthigopal
      [email protected]

    **&#12288;Program ID              &#65306;              ZMAT_CREATE
    **&#12288;Program Desc          &#65306;              Material Master Creation
    **&#12288;Process Overview    
    **&#12288;Created Date           &#65306;               22/08/2006
    **&#12288;Company Name        &#65306;              
    REPORT ZMAT_CREATE
           NO STANDARD PAGE HEADING LINE-SIZE 132 MESSAGE-ID ZBDCMSG.
           Internal table definition        *
    DATA: BEGIN OF ITAB OCCURS 0,
              MATNR LIKE RMMG1-MATNR,                 " Material Number
              MBRSH LIKE RMMG1-MBRSH,                 " Industry Sector
              MTART LIKE RMMG1-MTART,                  " Material Type
              WERKS LIKE RMMG1-WERKS,                  " Plant
              LGORT LIKE RMMG1-LGORT,                  " Storage Location
              VKORG LIKE RMMG1-VKORG,                  " Sales Organization
              VTWEG LIKE RMMG1-VTWEG,                  " Distribution Channel
              LGNUM LIKE RMMG1-LGNUM,                 " Warehouse Number
              LGTYP LIKE RMMG1-LGTYP,                   " Storage Type
              MAKTX LIKE MAKT-MAKTX,                    " Material Description
              MEINS LIKE MARA-MEINS,                      " Base Unit of Measure
             MATKL LIKE MARA-MATKL,                    " Material Group
              SPART LIKE MARA-SPART,                     " Division
              MTPOS_MARA LIKE MARA-MTPOS_MARA,  "General item category group
              GEWEI LIKE MARA-GEWEI,                      " Weight Unit
              TAXKM1 LIKE MG03STEUER-TAXKM,        " Tax classification material
              TAXKM2 LIKE MG03STEUER-TAXKM,        " Tax classification material
              KONDM  LIKE MVKE-KONDM,                  " Material Pricing Group
              MTPOS LIKE MVKE-MTPOS ,                  "ItemCategoryGroupFromMaterialMaster
              MTVFP LIKE MARC-MTVFP,                    " Checking Group for AvailabilityCheck
              TRAGR LIKE MARA-TRAGR,                    " Transportation group
              LADGR LIKE MARC-LADGR,                    " Loading group
              TDLINE LIKE RSTXT-TXLINE,                  " Text editor text line
              EKGRP LIKE MARC-EKGRP,                    " Purchasing Group
              DISMM LIKE MARC-DISMM,                    " MRP Type
              BESKZ LIKE MARC-BESKZ,                     " Procurement Type
              SOBSL LIKE MARC-SOBSL,                    " Special procurement type
              PERKZ LIKE MARC-PERKZ,                     " Period indicator
              PRMOD LIKE MPOP-PRMOD,                  " Forecast model
              KZINI LIKE MPOP-KZINI,                        " Initialization indicator
              AUTRU LIKE MARC-AUTRU,                    " Reset Forecast Model Automatically
              MODAV LIKE MPOP-MODAV,                   " Model selection procedure
              IPRKZ LIKE MARA-IPRKZ,                   " Period indicator for shelf life expiration date
              BWTTY LIKE MBEW-BWTTY,                    " Valuation Category
              BKLAS LIKE MBEW-BKLAS,                     " Valuation Class
              EKLAS LIKE MBEW-EKLAS,                      " Valuation Class for Sales OrderStock
              VPRSV LIKE MBEW-VPRSV,                     " Price Control Indicator
              EKALR LIKE MBEW-EKALR,                      "MaterialIsCostedWithQuantityStructure
           END OF ITAB,
    *// TEXT HEADER
           GT_HEAD LIKE THEAD,
    *//  Text lines
           GT_TEXT  LIKE  STANDARD TABLE OF TLINE,
           GW_TEXT LIKE TLINE,
           Data definition        *
            WS_REP_CNT(6) TYPE C,
            SESSION(12) TYPE C.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
    PARAMETERS:
                PA_GROUP LIKE  APQI-GROUPID OBLIGATORY DEFAULT 'MMupload',
                PA_FNAME LIKE IBIPPARMS-PATH OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B1.
           Include statements        *
    INCLUDE ZBDCREX.
         At Selection Screen definition      *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_FNAME.
    *//GETTING FLAT FILE PATH
      PERFORM FILE_PATH USING PA_FNAME.
         Start of Selection definition      *
    START-OF-SELECTION.
    *//UPLOADING THE FLAT FILE
      PERFORM DATA_UPLOAD TABLES ITAB USING PA_FNAME.
    *// BDC OPEN GROUP
      PERFORM OPEN_GROUP USING PA_GROUP.
      SKIP 3.
      FORMAT COLOR COL_HEADING INVERSE ON.
        WRITE 40 TEXT-001.
      FORMAT COLOR COL_HEADING INVERSE OFF.
      SKIP 1.
      FORMAT COLOR COL_NEGATIVE INVERSE ON.
        WRITE :/3 TEXT-002, 13 SY-MANDT, 104 TEXT-003, 113 SY-UNAME,
                  /3 TEXT-004, 13 SY-DATUM, 104 TEXT-005, 113 SY-UZEIT.
      FORMAT COLOR COL_NEGATIVE INVERSE OFF.
      LOOP AT ITAB.
        WS_REP_CNT = WS_REP_CNT + 1.   "To Count no. of Records Processed
        PERFORM MM_UPLOAD.
      ENDLOOP.
    *//STATUS INDICATION
      IF SY-SUBRC = 0.
        SESSION = PA_GROUP.
        SKIP 1.
        FORMAT COLOR COL_TOTAL INVERSE ON.
          WRITE: /38 TEXT-006 , WS_REP_CNT.
        FORMAT COLOR COL_TOTAL INVERSE OFF.
        MESSAGE S000 WITH SESSION.
      ENDIF.
    *// BDC CLOSE GROUP
      PERFORM CLOSE_GROUP.
    SET PF-STATUS 'ZMM01PF'.
    AT USER-COMMAND.
      CASE SY-UCOMM.
        WHEN 'SESSION'.
          CALL TRANSACTION 'SM35'.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
        WHEN 'CANCEL'.
          LEAVE SCREEN.
      ENDCASE .
         FORM MM_UPLOAD      *
    FORM MM_UPLOAD.
      REFRESH BDCDATA.
    *// Create Material: Initial Screen
      perform bdc_dynpro      using 'SAPLMGMM' '0060'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RMMG1-MATNR'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=ENTR'.
      perform bdc_field       using 'RMMG1-MATNR'
                                    ITAB-MATNR.
      perform bdc_field       using 'RMMG1-MBRSH'
                                    ITAB-MBRSH.
      perform bdc_field       using 'RMMG1-MTART'
                                    ITAB-MTART.
    *// Selection Views
      perform bdc_dynpro      using 'SAPLMGMM' '0070'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MSICHTAUSW-DYTXT(01)'.
      perform bdc_field       using 'BDC_OKCODE'
                                    'SELA'.
      perform bdc_dynpro      using 'SAPLMGMM' '0070'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MSICHTAUSW-DYTXT(01)'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=ENTR'.
    *// Organization Levels
      perform bdc_dynpro      using 'SAPLMGMM' '0080'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=ENTR'.
      perform bdc_field       using 'RMMG1-WERKS'
                                    ITAB-WERKS.
      perform bdc_field       using 'RMMG1-LGORT'
                                    ITAB-LGORT.
      perform bdc_field       using 'RMMG1-VKORG'
                                    ITAB-VKORG.
      perform bdc_field       using 'RMMG1-VTWEG'
                                    ITAB-VTWEG.
      perform bdc_field       using 'RMMG1-LGNUM'
                                    ITAB-LGNUM.
      perform bdc_field       using 'RMMG1-LGTYP'
                                    ITAB-LGTYP.
    *// Basic Data 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4004'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP04'.
      perform bdc_field       using 'MAKT-MAKTX'
                                    ITAB-MAKTX.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MARA-SPART'
                                    ITAB-SPART.
      perform bdc_field       using 'MARA-MTPOS_MARA'
                                    ITAB-MTPOS_MARA.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MARA-GEWEI'.
      perform bdc_field       using 'MARA-BRGEW'
                                    '9000'.
      perform bdc_field       using 'MARA-GEWEI'
                                    ITAB-GEWEI.
      perform bdc_field       using 'MARA-NTGEW'
                                    '8000'.
    *// Sales: Sales Organization 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP05'.
      perform bdc_field       using 'MG03STEUER-TAXKM(01)'
                                    ITAB-TAXKM1.
      perform bdc_field       using 'MG03STEUER-TAXKM(02)'
                                    ITAB-TAXKM2.
      perform bdc_dynpro      using 'SAPLMGMM' '4200'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP05'.
    *// Sales: Sales Organization 2: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP06'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MVKE-KONDM'.
      perform bdc_field       using 'MVKE-KONDM'
                                    ITAB-KONDM.
      perform bdc_field       using 'MARA-MTPOS_MARA'
                                    ITAB-MTPOS_MARA.
      perform bdc_field       using 'MVKE-MTPOS'
                                    ITAB-MTPOS.
    *// Sales: General / Plant Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP12'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MARA-BRGEW'
                                    '9000'.
      perform bdc_field       using 'MARA-GEWEI'
                                    ITAB-GEWEI.
      perform bdc_field       using 'MARA-XCHPF'
      perform bdc_field       using 'MARA-NTGEW'
                                    '8000'.
      perform bdc_field       using 'MARC-MTVFP'
                                    ITAB-MTVFP.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MARC-LADGR'.
      perform bdc_field       using 'MARA-TRAGR'
                                    ITAB-TRAGR.
      perform bdc_field       using 'MARC-LADGR'
                                    ITAB-LADGR.
    *// MRP 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP13'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MARC-EKGRP'
                                    ITAB-EKGRP.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MARC-DISMM'.
      perform bdc_field       using 'MARC-DISMM'
                                    ITAB-DISMM.
    *// MRP 2: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP14'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RMMG1_BEZ-WERKS_BEZ'.
      perform bdc_field       using 'MARC-BESKZ'
                                    ITAB-BESKZ.
      perform bdc_field       using 'MARC-SOBSL'
                                    ITAB-SOBSL .
    *// MRP 3: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP16'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MARC-PERKZ'.
      perform bdc_field       using 'MARC-PERKZ'
                                    ITAB-PERKZ.
      perform bdc_field       using 'MARC-MTVFP'
                                    ITAB-MTVFP.
    *// Forecasting Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP17'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MPOP-PRMOD'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MPOP-PRMOD'
                                    ITAB-PRMOD.
      perform bdc_field       using 'MARC-PERKZ'
                                    ITAB-PERKZ.
      perform bdc_field       using 'MPOP-PERAN'
                                    '60'.
      perform bdc_field       using 'MPOP-ANZPR'
                                    '12'.
      perform bdc_field       using 'MPOP-KZINI'
                                    ITAB-KZINI.
      perform bdc_field       using 'MPOP-SIGGR'
                                    '4.000'.
      perform bdc_field       using 'MARC-AUTRU'
                                    ITAB-AUTRU.
      perform bdc_field       using 'MPOP-MODAV'
                                    ITAB-MODAV.
    *// Work Scheduling Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP19'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MARC-FRTME'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
    *// Plant data / Stor. 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP20'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MARA-IPRKZ'
                                    ITAB-IPRKZ.
    *// Plant data / Stor. 2: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP21'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MARA-BRGEW'
                                    '9000'.
      perform bdc_field       using 'MARA-GEWEI'
                                    ITAB-GEWEI.
      perform bdc_field       using 'MARA-NTGEW'
                                     '8000'.
    *// Warehouse Management 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP23'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MARA-BRGEW'
                                     '9000'.
      perform bdc_field       using 'MARA-GEWEI'
                                    ITAB-GEWEI.
    *// Quality Management Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP24'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
    *// Accounting 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP26'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MBEW-BWTTY'
                                    ITAB-BWTTY.
      perform bdc_field       using 'MARA-SPART'
                                    ITAB-SPART.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MBEW-STPRS'.
      perform bdc_field       using 'MBEW-BKLAS'
                                    ITAB-BKLAS.
      perform bdc_field       using 'MBEW-EKLAS'
                                    ITAB-EKLAS.
      perform bdc_field       using 'MBEW-VPRSV'
                                    ITAB-VPRSV.
      perform bdc_field       using 'MBEW-PEINH'
                                    '1'.
      perform bdc_field       using 'MBEW-VERPR'
                                    '800'.
      perform bdc_field       using 'MBEW-STPRS'
                                    '800'.
    *// Costing 1: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=SP27'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MARA-MEINS'
                                    ITAB-MEINS.
      perform bdc_field       using 'MBEW-EKALR'
                                    ITAB-EKALR.
      perform bdc_field       using 'MARC-LOSGR'
                                    '1'.
    *// Costing 2: Screen
      perform bdc_dynpro      using 'SAPLMGMM' '4000'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BABA'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MAKT-MAKTX'.
      perform bdc_field       using 'MBEW-BKLAS'
                                    ITAB-BKLAS.
      perform bdc_field       using 'MBEW-BWTTY'
                                    ITAB-BWTTY.
      perform bdc_field       using 'MBEW-EKLAS'
                                    ITAB-EKLAS.
      perform bdc_field       using 'MBEW-VPRSV'
                                    ITAB-VPRSV.
      perform bdc_field       using 'MBEW-PEINH'
                                    '1'.
      perform bdc_field       using 'MBEW-VERPR'
                                    '800.00'.
      perform bdc_field       using 'MBEW-STPRS'
                                    '800.00'.
      perform bdc_dynpro      using 'SAPLSPO1' '0300'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=YES'.
    *//BDC INSERT
      PERFORM BDC_TRANSACTION TABLES BDCDATA
                          USING 'MM01'. " MESSAGES INTO GT_MSG.
    *// Text Header Data
      CONCATENATE ITAB-MATNR '             000101'
                              INTO GT_HEAD-TDNAME .
      GT_HEAD-TDOBJECT = 'MVKE' .
      GT_HEAD-TDID     = '0001' .
      GT_HEAD-TDSPRAS  = SY-LANGU.
    *// Sales Text
      GW_TEXT-TDFORMAT  =  '00'.
      GW_TEXT-TDLINE    =  ITAB-TDLINE .
      APPEND GW_TEXT TO  GT_TEXT.
      CALL FUNCTION 'SAVE_TEXT'
        EXPORTING
          CLIENT          = SY-MANDT
          HEADER          = GT_HEAD
          INSERT          = 'X'
          SAVEMODE_DIRECT = 'X'
          OWNER_SPECIFIED = ' '
        TABLES
          LINES           = GT_TEXT
        EXCEPTIONS
          ID              = 1
          LANGUAGE        = 2
          NAME            = 3
          OBJECT          = 4
          OTHERS          = 5.
      IF SY-SUBRC <> 0.
        SKIP 2.
        FORMAT COLOR COL_NEGATIVE INVERSE ON.
          WRITE: / 'Unable to Insert Salestext for Material : ', ITAB-MATNR .
        FORMAT COLOR COL_NEGATIVE INVERSE OFF.
      ENDIF.
      CLEAR: GT_HEAD, GT_TEXT, GW_TEXT.
    ENDFORM.                    "MM_UPLOAD
    **&#12288;Program ID              &#65306;              ZMAT_CREATE
    **&#12288;Program Desc            &#65306;              Material Master Creation Using BAPI
    **&#12288;Process Overview        &#65306;
    **&#12288;Created By              &#65306;              P.KARTHIKEYAN
    **&#12288;Created Date            &#65306;              17/08/2006
    **&#12288;Company Name            &#65306;              Infoview Technologies Limited
    REPORT  ZBAPI_MATERIAL_SAVETEXT LINE-SIZE 132 MESSAGE-ID ZMMBAPI.
    *<<<DATA DECLEA FOR HEADER>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ****<<<<<Header segment with control information>>>>>>
    DATA: HEADER LIKE BAPIMATHEAD.
    *<<CLIENT DATA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    *<<<<<<<<Client-specific material data>>>>>>>>>>>>>>>>
    DATA: GT_CLIENTDATA  LIKE BAPI_MARA.
    **<<<<<<<<CLIENT DATA INITIAL>>>>>>>>>>>>>
    **<<<<<<<<Information on update for CLIENTDATA>>>>>>>>
    DATA: GT_CLIENTDATAX LIKE BAPI_MARAX.
    ***<<<<<PLANTDATA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    **<<<<<<<Plant-specific material data>>>>>>>>>>>>>>>>>
    DATA: GT_PLANTDATA LIKE BAPI_MARC.
    **<<<<<<<<PLANT DATA INITIAL>>>>>>>>>>>>>>>
    **<<<<<<<<Information on update for PLANTDATA>>>>>>>>
    DATA:GT_PLANTDATAX LIKE BAPI_MARCX.
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS>>>>>>>>>>>>>>>>>>>
    DATA: GT_FORECASTPARAMETERS LIKE BAPI_MPOP.
    *<<<<<<<<<<<<<Information on update for FORECASTDATA>
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS DATA INTIAL>>>>>>>
    DATA:GT_FORECASTPARAMETERSX LIKE BAPI_MPOPX.
    *<<<<<<<<<<<<<<<PLANNING DATA  >>>>>>>>>>>>>>>>>>>>>>
    *<<<<<<<<<<<Information on update for PLANNINGDATA>>>
    DATA:GT_PLANNINGDATA LIKE BAPI_MPGD.
    *<<<<<<<<<<<<<<<PLANNING INITIAL  >>>>>>>>>>>>>>>>>>>
    DATA:GT_PLANNINGDATAX LIKE BAPI_MPGDX.
    *<<<<<<<<<<<<<<<STORAGELOCATIONDATA>>>>>>>>>>
    *<<<<<<<<<<<<Storage-location-specific material data>>
    DATA: GT_STORAGELOCATIONDATA LIKE BAPI_MARD.
    *<<<<<<Information on update for STORAGELOCATIONDATA>>
    *<<<<<<<<<<<<<<<STORAGELOCATIONDATA INITIAL>>>>>>>>>>>
    DATA:GT_STORAGELOCATIONDATAX LIKE BAPI_MARDX.
    *<<<<<<<<<<<<<<<SALESDATA DATA   >>>>>>>>>>>>>>>>>>>>>
    DATA: GT_SALESDATA LIKE BAPI_MVKE.
    *<<<<<<<<<<<<<<<Information on update for SALESDATA>>>
    *<<<<<<<<<<<<<<<SALESDATA DATA INITIAL  >>>>>>>>>>>>>>
    DATA: GT_SALESDATAX LIKE BAPI_MVKEX.
    ****<<<<<<<<<<<<Units of measure>>>>>>>>>>>>>>>>>>>>>>>
    *****<<<<<<<<<<<<<<<GT_UNITSOFMEASURE>>>>>>>>>>>>>>>>>>
    DATA: GT_UNITSOFMEASURE LIKE BAPI_MARM OCCURS 0 WITH HEADER LINE.
    *****<<<<<<<<<<<<<<<GT_UNITSOFMEASUREX>>>>>>>>>>>>>>>>>
    DATA: GT_UNITSOFMEASUREX LIKE BAPI_MARMX OCCURS 0 WITH HEADER LINE.
    *****<<<<<<<<<<<<<<<SALES TEXT>>>>>>>>>>>>>>>>>>>>>>>>>>
    DATA: GT_MATERIALLONGTEXT LIKE BAPI_MLTX OCCURS 0 WITH HEADER LINE.
    *****<<<<<<<<<<<<<<<MATERIAL_DESC>>>>>>>>>>>>>>>>>>>>>>>>>>
    DATA: MATERIAL_DESC LIKE BAPI_MAKT OCCURS 0 WITH HEADER LINE.
    *******<<<<<<<RETURN PARAMETERS>>>>>>>>
    DATA: ITAB_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.  "#EC NEEDED
    ******<<<<<<<WAREHOUSENUMBERDATA>>>>>>>>>>>>>>
    DATA: GT_WAREHOUSENUMBERDATA LIKE     BAPI_MLGN.
    ******<<<<<<<WAREHOUSENUMBERDATA>>>>>>>>>>>>>>
    DATA: GT_WAREHOUSENUMBERDATX LIKE     BAPI_MLGNX.
    ******<<<<<<<STORAGETYPEDATA>>>>>>>>>>>>>>>>>>
    DATA: GT_STORAGETYPEDATA     LIKE     BAPI_MLGT.
    ******<<<<<<<STORAGETYPEDATAX>>>>>>>>
    DATA: GT_STORAGETYPEDATAX     LIKE     BAPI_MLGTX.
    ***<<<BAPI_TRANSCATION COMMIT>>>>>>>>>>>>>>>>>
    DATA: GT_RETURN TYPE BAPIRET2.                              "#EC NEEDED
    ***<<<<<<<<Valuation data>>>>>>>>>>>>>>>>>>>>>
    DATA: GT_VALUATIONDATA like BAPI_MBEW. "Valuation data
    ***<<<<<<<<Valuation data>>>>>>>>>>>>>>>>>>>>>
    DATA: GT_VALUATIONDATAX like  BAPI_MBEWX. "Valuation data
    data: gt_PRTDATA like  BAPI_MFHM OCCURS 0 WITH HEADER LINE.
    data: gt_PRTDATAX like  BAPI_MFHM OCCURS 0 WITH HEADER LINE.
    **<<<<International Article Numbers (EANs)>>>>
    DATA: GT_INTERNATIONALARTNOS    LIKE    BAPI_MEAN  OCCURS 0 WITH HEADER LINE,
    **<<<<Tax classifications>>>>>>>>>>>>>>>>>>>>>>
          GT_TAXCLASSIFICATIONS          LIKE  BAPI_MLAN  OCCURS 0 WITH HEADER LINE,
          GT_RETURNMESSAGES              LIKE BAPI_MATRETURN2  OCCURS 0 WITH HEADER LINE.
    **<<<<<<<<<<<<<<FLAT FILE INTERNAL TABLE USED FOR DOWNLOAD EXCEL FILE>>>>>>
    DATA: BEGIN OF GT_FT_ITAB OCCURS 0,
          MATERIAL TYPE BAPIMATHEAD-MATERIAL , "Material Number
          IND_SECTOR TYPE BAPIMATHEAD-IND_SECTOR, "Industry Sector
          MATL_TYPE TYPE BAPIMATHEAD-MATL_TYPE  , "Material Type
          BASIC_VIEW TYPE BAPIMATHEAD-BASIC_VIEW,  "Basic Data View
          SALES_VIEW TYPE BAPIMATHEAD-SALES_VIEW  , "Sales View
          PURCHASE_VIEW TYPE BAPIMATHEAD-PURCHASE_VIEW, "Purchasing View
          MRP_VIEW  TYPE BAPIMATHEAD-MRP_VIEW ,"Material Requirements Planning (MRP) View
          FORECAST_VIEW TYPE BAPIMATHEAD-FORECAST_VIEW  , "Forecasting View
          WORK_SCHED_VIEW TYPE BAPIMATHEAD-WORK_SCHED_VIEW ,"Work Scheduling View
          PRT_VIEW TYPE BAPIMATHEAD-PRT_VIEW  , "Production Resources/Tools (PRT) View
          STORAGE_VIEW TYPE BAPIMATHEAD-STORAGE_VIEW  , "Storage View
          WAREHOUSE_VIEW  TYPE BAPIMATHEAD-WAREHOUSE_VIEW , "Warehouse Management View
          QUALITY_VIEW  TYPE BAPIMATHEAD-QUALITY_VIEW, "Quality Management View
          ACCOUNT_VIEW TYPE BAPIMATHEAD-ACCOUNT_VIEW , "Accounting View
          COST_VIEW TYPE BAPIMATHEAD-COST_VIEW  , "Costing View
    *****<<<<<<<<CLIENT DATA>>>>>>>>>>>>>>>>>>>>
          MATL_GROUP  TYPE BAPI_MARA-MATL_GROUP,   "Materialgroup
          OLD_MAT_NO TYPE BAPI_MARA-OLD_MAT_NO,  "Old material number
          BASE_UOM  TYPE BAPI_MARA-BASE_UOM,     "Base Unit of Measure
          BASE_UOM_ISO TYPE BAPI_MARA-BASE_UOM_ISO ,"Base unit of measure in ISO code
          DOCUMENT TYPE BAPI_MARA-DOCUMENT, "Document number
          DOC_TYPE TYPE BAPI_MARA-DOC_TYPE, "Document type
          DOC_VERS TYPE BAPI_MARA-DOC_VERS, "Document version
          DOC_FORMAT TYPE BAPI_MARA-DOC_FORMAT,"Page format of document
          DOC_CHG_NO TYPE BAPI_MARA-DOC_CHG_NO, "Document change number
          PAGE_NO TYPE BAPI_MARA-PAGE_NO, "Page number of document
          PROD_MEMO  TYPE BAPI_MARA-PROD_MEMO , "Production/Inspection Memo
          PAGEFORMAT TYPE BAPI_MARA-PAGEFORMAT, "Page Format of Production Memo
          SIZE_DIM TYPE BAPI_MARA-SIZE_DIM, "Size/dimensions
          BASIC_MATL TYPE BAPI_MARA-BASIC_MATL, "Basic Material
          STD_DESCR TYPE BAPI_MARA-STD_DESCR, "Industry Standard Description
          DSN_OFFICE TYPE BAPI_MARA-DSN_OFFICE, "Laboratory/design office
          NET_WEIGHT TYPE BAPI_MARA-NET_WEIGHT, " "Net weight
          UNIT_OF_WT TYPE BAPI_MARA-UNIT_OF_WT, "Weight Unit
          DIVISION TYPE BAPI_MARA-DIVISION, "Division
          CAD_ID TYPE BAPI_MARA-CAD_ID, "Competitor
          PROD_ALLOC TYPE BAPI_MARA-PROD_ALLOC,  "Procurement rule
          HAZMATPROF TYPE BAPI_MARA-HAZMATPROF, "Source of Supply
          HIGH_VISC TYPE BAPI_MARA-HIGH_VISC, "Allowed packaging weight
          LOOSEORLIQ TYPE BAPI_MARA-LOOSEORLIQ, "Long material number
          PERIOD_IND_EXPIRATION_DATE TYPE BAPI_MARA-PERIOD_IND_EXPIRATION_DATE,"Expiration Dat
          ITEM_CAT  TYPE BAPI_MARA-ITEM_CAT, "General item category group
          EXTMATLGRP TYPE BAPI_MARA-EXTMATLGRP, "External Material Group
    *****CLIENT DATA INITIAL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
          MATL_GROUPX  TYPE BAPI_MARAX-MATL_GROUP, "Materialgroup
          OLD_MAT_NOX TYPE BAPI_MARAX-OLD_MAT_NO, "Old material number
          BASE_UOMX TYPE BAPI_MARAX-BASE_UOM, "Base Unit of Measure
          BASE_UOM_ISOX TYPE BAPI_MARAX-BASE_UOM_ISO, "Base unit of measure in ISO code
          DOCUMENTX TYPE BAPI_MARAX-DOCUMENT, "Document number
          DOC_TYPEX TYPE BAPI_MARAX-DOC_TYPE, "Document type
          DOC_VERSX TYPE BAPI_MARAX-DOC_VERS,  "Document version
          DOC_FORMATX TYPE BAPI_MARAX-DOC_FORMAT,"Page format of document
          DOC_CHG_NOX TYPE BAPI_MARAX-DOC_CHG_NO, "Document change number
          PAGE_NOX TYPE BAPI_MARAX-PAGE_NO, "Production/Inspection Memo
          PROD_MEMOX TYPE BAPI_MARAX-PROD_MEMO, "Page Format of Production Memo
          SIZE_DIMX  TYPE BAPI_MARAX-SIZE_DIM, "Size/dimensions
          BASIC_MATLX TYPE BAPI_MARAX-BASIC_MATL, "Basic Material
          STD_DESCRX TYPE BAPI_MARAX-STD_DESCR, "Industry Standard Description
          DSN_OFFICEX TYPE BAPI_MARAX-DSN_OFFICE, "Laboratory/design office
          NET_WEIGHTX TYPE BAPI_MARAX-NET_WEIGHT, " "Net weight
          UNIT_OF_WTX TYPE BAPI_MARAX-UNIT_OF_WT, "Weight Unit
          DIVISIONX  TYPE BAPI_MARAX-DIVISION, "Division
          PROD_HIERX TYPE BAPI_MARA, "Competitor
          CAD_IDX TYPE BAPI_MARAX-PROD_HIER,  "Procurement rule
          ALLWD_VOLX TYPE BAPI_MARAX-ALLWD_VOL, "Allowed packaging
          PVALIDFROMX  TYPE BAPI_MARAX-PVALIDFROM, "Date from which the cross-plant material status
          SVALIDFROMX   TYPE BAPI_MARAX-SVALIDFROM, "Date from which the X-distr.-chain material stat
          PROD_ALLOCX TYPE BAPI_MARAX-PROD_ALLOC,
          HIGH_VISCX  TYPE BAPI_MARAX-HIGH_VISC,"Indicator: Highly Viscous
          LOOSEORLIQX  TYPE BAPI_MARAX-LOOSEORLIQ, "Indicator: In Bulk/Liquid
          INV_MAT_NO_EXTERNALX  TYPE BAPI_MARAX-INV_MAT_NO_EXTERNAL,
          EXTMATLGRPX TYPE BAPI_MARAX-EXTMATLGRP, " External Material Group
    ****<<<<<<<<<<<<<<PLANTDATA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
          PLANT  TYPE BAPI_MARC-PLANT, " Plant
          MRP_TYPE  TYPE BAPI_MARC-MRP_TYPE, "MRP Type
          REORDER_PT  TYPE BAPI_MARC-REORDER_PT, "Reorder Point
          SAFETY_STK  TYPE BAPI_MARC-SAFETY_STK, "Safety stock
          MINLOTSIZE  TYPE BAPI_MARC-MINLOTSIZE, "Minimum lot size
    ****<<<<<<<<<<<<<<PLANTDATA INITIAL>>>>>>>>>>>>>>>>>>>>>>
          PLANTX  TYPE BAPI_MARCX-PLANT, " Plant
          MRP_TYPEX  TYPE BAPI_MARCX-MRP_TYPE,  "MRP Type
          REORDER_PTX  TYPE BAPI_MARCX-REORDER_PT, "Reorder Point
          SAFETY_STKX  TYPE BAPI_MARCX-SAFETY_STK, "Safety stock
          MINLOTSIZEX  TYPE BAPI_MARCX-MINLOTSIZE, "Minimum lot size
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS>>>>>>>>>>
          F_PLANT  TYPE BAPI_MPOPX-PLANT, " Plant
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS DATA INTIAL>>>>>>>>>>
          F_PLANTX TYPE BAPI_MPOPX-PLANT, " Plant
    *<<<<<<<<<<<<<<<PLANNING DATA  >>>>>>>>>>>>>>>>>>>>>>>>>
          P_PLANT TYPE BAPI_MPGD-PLANT, " Plant
    *<<<<<<<<<<<<<<<PLANNING DATA INITAIAL  >>>>>>>>>>>>>>>
          P_PLANTX TYPE BAPI_MPGDX-PLANT, " Plant
    *<<<<<<<<<<<<<<<STORAGELOCATIONDATA>>>>>>>>>>>>>>>>>>>>
          S_PLANT   TYPE BAPI_MARD-PLANT, " Plant
          S_STGE_LOC  TYPE BAPI_MARD-STGE_LOC,
    *<<<<<<<<<<<<<<<STORAGELOCATIONDATA INITIAL>>>>>>>>>>
          S_PLANTX   TYPE BAPI_MARDX-PLANT, " Plant
          S_STGE_LOCX TYPE BAPI_MARDX-STGE_LOC, "Storage Location
    *<<<<<<<<<<<<<<<SALESDATA DATA   >>>>>>>>>>
          SALES_ORG TYPE  BAPI_MVKE-SALES_ORG, "Sales Organization
          DISTR_CHAN  TYPE  BAPI_MVKE-DISTR_CHAN, "Distribution Channel
    *<<<<<<<<<<<<<<<SALESDATA DATA INITIAL  >>>>>>>>>>
          SALES_ORGX TYPE  BAPI_MVKEX-SALES_ORG, "Sales Organization
          DISTR_CHANX  TYPE  BAPI_MVKEX-DISTR_CHAN, "Distribution Channel
    *****<<<<<<<<<<<<<<<MATERIAL_DESC>>>>>>>>>>>>>>>>>>>>>>>>>>
          LANGU   TYPE BAPI_MAKT-LANGU , "Language Key
          LANGU_ISO TYPE BAPI_MAKT-LANGU_ISO , "Language according to ISO 639
          MATL_DESC TYPE BAPI_MAKT-MATL_DESC ,  "Material Description
    *****<<<<<<<<<<<<<<<GT_UNITSOFMEASURE>>>>>>>>>>>>>>>>>>>>>>>>>>
          ALT_UNIT  TYPE BAPI_MARM-ALT_UNIT,
                     "Alternative Unit of Measure for Stockkeeping Unit
          ALT_UNIT_ISO  TYPE BAPI_MARM-ALT_UNIT,
                     "Alternative Unit of Measure for Stockkeeping Unit
    ******<<<<<<<<<<<<<<<GT_UNITSOFMEASUREX>>>>>>>>>>>>>>>>>>>>>>>>>>
          UNIT TYPE BAPI_MARMX-ALT_UNIT,
                     "Alternative Unit of Measure for Stockkeeping Unit
          UNIT_ISO  TYPE BAPI_MARMX-ALT_UNIT_ISO,
            "Alternative unit of measure to stockkeeping unit in ISO code
    *****<<<<<<<<<<<<<<<SALES TEXT>>>>>>>>>>>>>>>>>>>>>>>>>>
          APPLOBJECT TYPE BAPI_MLTX-APPLOBJECT, "Texts: application object
          TEXT_NAME  TYPE BAPI_MLTX-TEXT_NAME, "Name
          TEXT_ID  TYPE BAPI_MLTX-TEXT_ID, "Text ID
          S_LANGU  TYPE BAPI_MLTX-LANGU, "Language key
          TEXT_LINE TYPE BAPI_MLTX-TEXT_LINE, "Text line
    END OF GT_FT_ITAB,
    TEXT(243), " Return Message
    WA_HEAD LIKE THEAD, " SalesText Header Info
    ITAB_TLINE LIKE STANDARD TABLE OF TLINE WITH HEADER LINE, " SalesText
    ERROR_REC TYPE I, " Error Records Counter
    SUCCESS_REC TYPE I, " Successful Records Counter
    TOT_REC TYPE I. " Total Records Counter
    selection block for EXCEL UPLOAD FILE>>>>>>>>>>>>>>>>>>>>>>>>
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
    PARAMETERS FILE TYPE  IBIPPARMS-PATH OBLIGATORY .
    SELECTION-SCREEN END OF BLOCK B1.
    *<<<<AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE .>>>>>>>>>>>>
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE .
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
        IMPORTING
          FILE_NAME     = FILE.
    **<<<<<<<<<<<<<<<<<START-OF-SELECTION.>>>>>>>>>>>>>>>>>>>>>>>>>>>
    START-OF-SELECTION.
      CALL FUNCTION 'WS_UPLOAD'                                 "#EC *
        EXPORTING
          FILENAME                = FILE
          FILETYPE                = 'DAT'
        TABLES
          DATA_TAB                = GT_FT_ITAB
        EXCEPTIONS
          CONVERSION_ERROR        = 1
          FILE_OPEN_ERROR         = 2
          FILE_READ_ERROR         = 3
          INVALID_TYPE            = 4
          NO_BATCH                = 5
          UNKNOWN_ERROR           = 6
          INVALID_TABLE_WIDTH     = 7
          GUI_REFUSE_FILETRANSFER = 8
          CUSTOMER_ERROR          = 9
          NO_AUTHORITY            = 10
          OTHERS                  = 11.
      IF  SY-SUBRC <> 0  .
        MESSAGE E000.
      ENDIF.
      SKIP 3.
      FORMAT COLOR COL_HEADING INVERSE ON.
      WRITE 40 TEXT-001.
      FORMAT COLOR COL_HEADING INVERSE OFF.
      SKIP 1.
      FORMAT COLOR COL_NEGATIVE INVERSE ON.
      WRITE :/3 TEXT-002, 13 SY-MANDT , 104 TEXT-003, 111 SY-UNAME,
                /3 TEXT-004, 13 SY-DATUM , 104 TEXT-005, 111 SY-UZEIT.
      FORMAT COLOR COL_NEGATIVE INVERSE OFF.
      SKIP 3.
      LOOP AT GT_FT_ITAB.
        HEADER-MATERIAL = GT_FT_ITAB-MATERIAL .                 " 'M-32'.
        HEADER-IND_SECTOR = GT_FT_ITAB-IND_SECTOR .          " 'C'.
        HEADER-MATL_TYPE = GT_FT_ITAB-MATL_TYPE .             " 'FERT'.
        HEADER-BASIC_VIEW = GT_FT_ITAB-BASIC_VIEW .            " 'X'.
        HEADER-SALES_VIEW = GT_FT_ITAB-SALES_VIEW.             " 'X'.
        HEADER-PURCHASE_VIEW = GT_FT_ITAB-PURCHASE_VIEW .    " 'X'.
        HEADER-MRP_VIEW = GT_FT_ITAB-MRP_VIEW .                      " 'X'.
        HEADER-FORECAST_VIEW = GT_FT_ITAB-FORECAST_VIEW .    " 'X'.
        HEADER-WORK_SCHED_VIEW = GT_FT_ITAB-WORK_SCHED_VIEW ." 'X'.
        HEADER-PRT_VIEW = GT_FT_ITAB-PRT_VIEW .                          " 'X'.
        HEADER-STORAGE_VIEW = GT_FT_ITAB-STORAGE_VIEW .           " 'X'.
        HEADER-WAREHOUSE_VIEW = GT_FT_ITAB-WAREHOUSE_VIEW .   " 'X'.
        HEADER-QUALITY_VIEW = GT_FT_ITAB-QUALITY_VIEW .             " 'X'.
        HEADER-ACCOUNT_VIEW =  GT_FT_ITAB-ACCOUNT_VIEW .        " 'X'.
        HEADER-COST_VIEW = GT_FT_ITAB-COST_VIEW .                     " 'X'.
    *<<CLIENT DATA>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        GT_CLIENTDATA-MATL_GROUP = GT_FT_ITAB-MATL_GROUP .      " '01'.
        GT_CLIENTDATA-OLD_MAT_NO = GT_FT_ITAB-OLD_MAT_NO .      " '1000'.
        GT_CLIENTDATA-BASE_UOM  = GT_FT_ITAB-BASE_UOM  .         " 'EA'.
        GT_CLIENTDATA-BASE_UOM_ISO = GT_FT_ITAB-BASE_UOM_ISO ." 'EA'.
        GT_CLIENTDATA-DOCUMENT = GT_FT_ITAB-DOCUMENT .         "'MATERIAL'.
        GT_CLIENTDATA-DOC_TYPE = GT_FT_ITAB-DOC_TYPE .            " 'A'.
        GT_CLIENTDATA-DOC_VERS = GT_FT_ITAB-DOC_VERS .          " '5'.
        GT_CLIENTDATA-DOC_FORMAT = GT_FT_ITAB-DOC_FORMAT .      " '5'.
        GT_CLIENTDATA-DOC_CHG_NO = GT_FT_ITAB-DOC_CHG_NO .      " 'A4'.
        GT_CLIENTDATA-PAGE_NO =  GT_FT_ITAB-PAGE_NO    .        " '1'.
        GT_CLIENTDATA-PROD_MEMO = GT_FT_ITAB-PROD_MEMO .      " 'MEMO'.
        GT_CLIENTDATA-PAGEFORMAT = GT_FT_ITAB-PAGEFORMAT .      " '1'.
        GT_CLIENTDATA-SIZE_DIM = GT_FT_ITAB-SIZE_DIM .          " '50/50'.
        GT_CLIENTDATA-BASIC_MATL = GT_FT_ITAB-BASIC_MATL .       " 'BASIS MATERIAL1'.
        GT_CLIENTDATA-STD_DESCR = GT_FT_ITAB-STD_DESCR .         " 'MATERIAL DESC'.
        GT_CLIENTDATA-DSN_OFFICE = GT_FT_ITAB-DSN_OFFICE .      " '001'.
        GT_CLIENTDATA-NET_WEIGHT = GT_FT_ITAB-NET_WEIGHT .      " 1000.
        GT_CLIENTDATA-UNIT_OF_WT = GT_FT_ITAB-UNIT_OF_WT .         " 'KG'.
        GT_CLIENTDATA-TRANS_GRP =  '0001'.
        GT_CLIENTDATA-DIVISION =         GT_FT_ITAB-DIVISION .  " '01'.
        GT_CLIENTDATA-QTY_GR_GI = '9000'.
        GT_CLIENTDATA-CAD_ID = GT_FT_ITAB-CAD_ID .                      " 'X'.
        GT_CLIENTDATA-ALLWD_VOL = '9000'.
        GT_CLIENTDATA-PROD_ALLOC = GT_FT_ITAB-PROD_ALLOC .      " 'PA01'.
        GT_CLIENTDATA-HAZMATPROF = GT_FT_ITAB-HAZMATPROF .      " '001'.
        GT_CLIENTDATA-HIGH_VISC = GT_FT_ITAB-HIGH_VISC .             " 'X'.
        GT_CLIENTDATA-LOOSEORLIQ = GT_FT_ITAB-LOOSEORLIQ .     " 'X'.
        GT_CLIENTDATA-PERIOD_IND_EXPIRATION_DATE = GT_FT_ITAB-PERIOD_IND_EXPIRATION_DATE . " 'D'.
        GT_CLIENTDATA-ITEM_CAT = 'NORM' . "GT_FT_ITAB-ITEM_CAT .   " 'NORM'.
        GT_CLIENTDATA-EXTMATLGRP = GT_FT_ITAB-EXTMATLGRP .      " '01'.
    **<<<<<<<<CLIENT DATA INITIAL>>>>>>>>>>>>>
        GT_CLIENTDATAX-MATL_GROUP =  'X'.
        GT_CLIENTDATAX-OLD_MAT_NO = GT_FT_ITAB-OLD_MAT_NO .        "  'X'.
        GT_CLIENTDATAX-BASE_UOM = GT_FT_ITAB-BASE_UOM .              " 'X'.
        GT_CLIENTDATAX-BASE_UOM_ISO = GT_FT_ITAB-BASE_UOM_ISO .   "'X'.
        GT_CLIENTDATAX-DOCUMENT = GT_FT_ITAB-DOCUMENT .            "'X'.
        GT_CLIENTDATAX-DOC_TYPE = GT_FT_ITAB-DOC_TYPE .               "'X'.
        GT_CLIENTDATAX-DOC_VERS = GT_FT_ITAB-DOC_VERS .               "'X'.
        GT_CLIENTDATAX-DOC_FORMAT = GT_FT_ITAB-DOC_FORMAT .      "'X'.
        GT_CLIENTDATAX-DOC_CHG_NO = GT_FT_ITAB-DOC_CHG_NO .      "'X'.
        GT_CLIENTDATAX-PAGE_NO = GT_FT_ITAB-PAGE_NO .                  "'X'.
        GT_CLIENTDATAX-PROD_MEMO  = GT_FT_ITAB-PROD_MEMO .        "'X'.
        GT_CLIENTDATAX-PAGEFORMAT = 'X'.
        GT_CLIENTDATAX-SIZE_DIM = GT_FT_ITAB-SIZE_DIM .                    "'X'
        GT_CLIENTDATAX-BASIC_MATL = GT_FT_ITAB-BASIC_MATL.           "'X'.
        GT_CLIENTDATAX-STD_DESCR = GT_FT_ITAB-STD_DESCR .            "'X'.
        GT_CLIENTDATAX-DSN_OFFICE = GT_FT_ITAB-DSN_OFFICE .           "'X'.
        GT_CLIENTDATAX-NET_WEIGHT = GT_FT_ITAB-NET_WEIGHT .           "'X'.
        GT_CLIENTDATAX-UNIT_OF_WT = GT_FT_ITAB-UNIT_OF_WT .            "'X'.
        GT_CLIENTDATAX-DIVISION  = GT_FT_ITAB-DIVISION .                    "'X'.
        GT_CLIENTDATAX-PROD_HIER = GT_FT_ITAB-PROD_HIERX .              "'X'.
        GT_CLIENTDATAX-CAD_ID = GT_FT_ITAB-CAD_ID .                           "'X'.
        GT_CLIENTDATAX-ALLWD_VOL = GT_FT_ITAB-ALLWD_VOLX .             "'X'.
        GT_CLIENTDATAX-PROD_ALLOC = GT_FT_ITAB-PROD_ALLOCX .         "'X'.
        GT_CLIENTDATAX-HAZMATPROF = 'X'.
        GT_CLIENTDATAX-HIGH_VISC  = GT_FT_ITAB-HIGH_VISCX .                "'X'.
        GT_CLIENTDATAX-LOOSEORLIQ  = GT_FT_ITAB-LOOSEORLIQX .        "'X'.
        GT_CLIENTDATAX-ITEM_CAT = 'X'.
        GT_CLIENTDATAX-INV_MAT_NO_EXTERNAL  = GT_FT_ITAB-INV_MAT_NO_EXTERNALX  .      "'X'.
        GT_CLIENTDATAX-EXTMATLGRP = GT_FT_ITAB-EXTMATLGRPX .         " 'X'.
        GT_CLIENTDATAX-TRANS_GRP =  'X'.
        GT_CLIENTDATAX-QTY_GR_GI = 'X'.
        GT_CLIENTDATAX-ALLWD_VOL = 'X'.
    ***<<<<<PLANTDATA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        GT_PLANTDATA-PLANT = GT_FT_ITAB-PLANT .                 " '0001'.
        GT_PLANTDATA-MRP_TYPE = GT_FT_ITAB-MRP_TYPE .       "'ND'.
        GT_PLANTDATA-PUR_GROUP = '001'.                              "Purchasing Group
        GT_PLANTDATA-PROC_TYPE = 'F'.                                  "Procurement Type
        GT_PLANTDATA-SPPROCTYPE = '10'.                              "Special procurement type
       GT_PLANTDATA-REORDER_PT = GT_FT_ITAB-REORDER_PT .       "8000.
        GT_PLANTDATA-SAFETY_STK =  2.
        GT_PLANTDATA-LOADINGGRP = '0001'.                           "Loading group
        GT_PLANTDATA-MINLOTSIZE = GT_FT_ITAB-MINLOTSIZE .       "6000.
    **<<<<<<<<PLANT DATA INITIAL>>>>>>>>>>>>>
        GT_PLANTDATAX-PLANT = GT_FT_ITAB-PLANTX.                " '0001'.
        GT_PLANTDATAX-MRP_TYPE = GT_FT_ITAB-MRP_TYPEX.      " 'X'.
        GT_PLANTDATAX-PUR_GROUP = 'X'.                                 "Purchasing Group
        GT_PLANTDATAX-PROC_TYPE = 'X'.                                  "Procurement Type
        GT_PLANTDATAX-SPPROCTYPE = 'X'.                               "Special procurement type
        GT_PLANTDATAX-LOADINGGRP = 'X'.                               "Loading group
       GT_PLANTDATAX-REORDER_PT = GT_FT_ITAB-REORDER_PTX.   " 'X'.
        GT_PLANTDATAX-SAFETY_STK = GT_FT_ITAB-SAFETY_STKX.      "'X'.
        GT_PLANTDATAX-MINLOTSIZE = GT_FT_ITAB-MINLOTSIZEX.       "'X'.
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS>>>>>>>>>>
        GT_FORECASTPARAMETERS-PLANT =  GT_FT_ITAB-F_PLANT.      " '0001'.
    *<<<<<<<<<<<<<<<FORECASTPARAMETERS DATA INTIAL>>>>>>>>>>
        GT_FORECASTPARAMETERSX = '0001'.
        GT_FORECASTPARAMETERSX-PLANT =  GT_FT_ITAB-F_PLANTX.    " '0001'.
    *<<<<<<<<<<<<<<<PLANNING DATA  >>>>>>>>>>
    *GT_PLANNINGDATA-PLANT = GT_FT_ITAB-P_PLANT.                    " '0001'.
        GT_PLANNINGDATA-PLANT =   '0001'.
    *<<<<<<<<<<<<<<<PLAN

  • Alv hierarchy subtotal in 2 fields

    Hi gurus,
    First, thanks to all those who helped me with my first problem. I have a new question, still regarding subtotal.
    The client now wants to have a subtotal in alv hierarchy per vendor and purchase doc. My output displays a subtotal per purchase doc only. Client wants to have an output that would look like this:
    VENDOR     
    PURCH DOC        PO AMT.
    1
    410000001            1000
    410000001             2000
    410000001            3000   (subtotal  per purch doc)
    410000002            100
    410000002            100     (subtotal per purch doc)
    1                          3100   (subtotal per vendor)
    2
    420000001            500
    420000001            300
    420000001            800       (subtotal per purch doc)
    2                          800       (subtotal per vendor)
    TOTAL                  3900
    Here's an excerpt of my code:
    FORM build_fcat using p_type changing p_fcat.
    data lt_fcat type slis_t_fieldcat_alv.
    field-symbols <fs_fcat> like line of lt_fcat.
    lt_fcat = p_fcat.
    loop at lt_fcat assigning <fs_fcat>.
    <fs_fcat>-ddictxt = 'L'.
    case <fs_fcat>-fieldname.
    when 'LIFNR'.
    <fs_fcat>-seltext_l = 'VENDOR'.
    <fs_fcat>-tabname = 'I_HEADER'.
    <fs_fcat>-key = 'X'.
    <fs_fcat>-outputlen = 15.
    modify lt_fcat from <fs_fcat>.
    when 'EBELN'.
    <fs_fcat>-seltext_l = 'PURCH DOC'.
    <fs_fcat>-tabname = 'I_ITEM'.
    <fs_fcat>-key = 'X'.
    <fs_fcat>-outputlen = 12.
    modify lt_fcat from <fs_fcat>.
    when 'RLWRT'.
    <fs_fcat>-seltext_l = 'PO AMT.'.
    <fs_fcat>-tabname = 'I_ITEM'.
    <fs_fcat>-datatype = 'CURR'.
    <fs_fcat>-ref_fieldname = 'WAERS'.
    <fs_fcat>-ref_tabname = 'I_ITEM'.
    <fs_fcat>-do_sum = 'X'.
    <fs_fcat>-outputlen = 15.
    modify lt_fcat from <fs_fcat>.
    endcase.
    endloop.
    p_fcat = lt_fcat.
    ENDFORM.
    FORM build_fsort changing p_fsort.
    data lt_sort type slis_t_sortinfo_alv.
    data ls_sort like line of lt_sort.
    ls_sort-spos = 1.
    ls_sort-fieldname = 'EBELN'.
    ls_sort-tabname = 'I_HEADER'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    ls_sort-spos = 2.
    ls_sort-fieldname = 'LIFNR'.
    ls_sort-tabname = 'I_HEADER'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    p_fsort = lt_fsort.
    ENDFORM.
    FORM modify_key changing p_keyinfo type slis_keyinfo_alv.
    clear p_keyinfo.
    p_keyinfo-header01 = 'LIFNR'.
    p_keyinfo-item01 = 'LIFNR'.
    p_keyinfo-header02 = 'EBELN'.
    p_keyinfo-item02 = 'EBELN'.
    ENDFORM.
    Is there a way to meet the client's expected output?
    Thanks in advance for all the help and advises.
    Points will be rewarded.

    Sorry I didn't include that earlier. I'm using Citrix so copy-paste of codes outside Citrix is not allowed. I'll just type a shorter version of my it here.
    data: begin of i_item occurs 0,
               lifnr like ekko-lifnr,
               name1 like-lfa1-name1,
               ebeln like ekpo_ebeln,
               po_dat like ekko-bedat,
               rlwrt like ekko-rlwrt,
               waers like ekko-waers,
               dmbtr like ekko-dmbtr,
             end of i_item.
    data wa_item like line of i_item,
    data: begin of i_header occurs 0,
               lifnr like lfa1-lifnr,
               name1 like lfa1-name1,
               ebeln like ekpo-ebeln,
            end of i_header.
    data wa_header like line of i_header.

  • ALV Hierarchical With multiple boxes

    Hello.
    I have an alv hierarchical with multiple boxes.
    Can I  insert a buttom in Gui status of alv that allows me to  expand  all the boxes of  hierarchy?
    Regards
    Angela

    Hi Narendra,
    Try this program:
    TABLES : sflight.
    TYPE-POOLS: slis.
    DATA : w_repid LIKE sy-repid.
    w_repid = sy-repid.
    DATA: BEGIN OF it_sflight OCCURS 0,
    checkbox(1),
    carrid LIKE sflight-carrid,
    END OF it_sflight.
    *layout
    DATA: wa_layout TYPE slis_layout_alv.
    *field catalog
    DATA: it_fieldcatalog TYPE slis_t_fieldcat_alv,
    wa_fieldcatalog TYPE slis_fieldcat_alv.
    START-OF-SELECTION.
    SELECT carrid FROM sflight
    INTO CORRESPONDING FIELDS OF TABLE it_sflight.
    END-OF-SELECTION.
    CLEAR it_fieldcatalog.
    REFRESH it_fieldcatalog.
    wa_fieldcatalog-fieldname = 'CHECKBOX'.
    wa_fieldcatalog-outputlen = '3'.
    wa_fieldcatalog-col_pos = '1'.
    wa_fieldcatalog-seltext_m = 'Chk'.
    wa_fieldcatalog-checkbox = 'X'.
    wa_fieldcatalog-edit = 'X'.
    APPEND wa_fieldcatalog TO it_fieldcatalog.
    CLEAR wa_fieldcatalog.
    wa_fieldcatalog-fieldname = 'CARRID'.
    wa_fieldcatalog-outputlen = '10'.
    wa_fieldcatalog-col_pos = '2'.
    wa_fieldcatalog-seltext_m = 'Carrid'.
    APPEND wa_fieldcatalog TO it_fieldcatalog.
    CLEAR wa_fieldcatalog.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = w_repid
    is_layout = wa_layout
    i_callback_user_command = 'USER_COMMAND'
    it_fieldcat = it_fieldcatalog
    TABLES
    t_outtab = it_sflight
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    *& Form USER_COMMAND
    FORM user_command USING p_ucomm TYPE sy-ucomm
    p_selfld TYPE slis_selfield.
    CASE p_ucomm.
    WHEN '&DATA_SAVE'.
    DATA ref1 TYPE REF TO cl_gui_alv_grid.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
    e_grid = ref1.
    CALL METHOD ref1->check_changed_data.
    LOOP AT it_sflight WHERE checkbox = 'X'.
    DELETE it_sflight INDEX sy-tabix.
    ENDLOOP.
    p_selfld-refresh = 'X'.
    ENDCASE.
    ENDFORM. "user_command
    Hope this helps you.
    Regards,
    Chandra Sekhar

  • HELP me in alv HIERARCHY

    HI,
    Can any one send some hierarchial alv progrms.
    with warm regards,
    khadar.

    Hi,
    report  zwmr_pick_status_report no standard page heading
                                    message-id zw.
    Type Pools                                                           *
    type-pools: icon, slis.
    Tables                                                               *
    tables: tvst,
            likp,
            t30b,
            vekp,
            zpallettr,
            zvantr.
    Types                                                                *
    types:
      begin of ty_data,
         lgtor       like likp-lgtor,             " door
         vbeln       like likp-vbeln,             " delivery
         wbstk       like vbuk-wbstk,             " Goods movement status
         kostk       like vbuk-kostk,             " Picking status
         posnr       like lips-posnr,             " item
         route       like likp-route,             " route
         wadat       like likp-wadat,             " goods issue date
         lvsta       like vbup-lvsta,             " warehouse status
         packvorschr like vekp-packvorschr,       " pack mnemonic
         exidv       like vekp-exidv,             " handling unit
         zpallet_no(10),  "like zpallettr-zpallet_no,   " pallet no
         zcount_check like zpallettr-zcount_check," count check flag
         zvan_no(10),     "like zvantr-zvan_no,         " van no
         zvan_print  like zvantr-zvan_print,      " van manifest print
         zeod_print  like zvantr-zeod_print,      " eod manifest print
         zzpackclass like vekp-zzpackclass,       " package class
         zzti        like vekp-zzti,              " T.I. value
      end of ty_data.
    Data                                                                 *
    ranges: r_del   for likp-vbeln,
            r_lgtor for likp-lgtor.
    ranges: r_vanno for zvantr-zvan_no,
            r_palno for zpallettr-zpallet_no.
    data: begin of number_range occurs 0,
             mark(1),
             id(3),
             num(10) type n,
             desc like zpalletmd-zdesc,
          end of number_range.
    data: t_disp_tab  type standard table of zpickdisp,
          t_data_tab  type ty_data  occurs 0 with header line,
          t_disp_head type standard table of zpickhead.
    data: w_numrnge like number_range,
          w_number(10) type n.
    data: t_likp     like likp      occurs 0 with header line,
          t_lips     like lips      occurs 0 with header line,
          t_vbuk     like vbuk      occurs 0 with header line,
          t_vbup     like vbup      occurs 0 with header line,
          t_vepo     like vepo      occurs 0 with header line,
          t_vekp     like vekp      occurs 0 with header line,
          t_vantr    like zvantr    occurs 0 with header line,
          t_pallettr like zpallettr occurs 0 with header line,
          w_likp     like likp,
          w_lips     like lips,
          w_vbuk     like vbuk,
          w_vbup     like vbup,
          w_vepo     like vepo,
          w_vekp     like vekp.
    ALV DATA *****
    data:
         g_grid             type ref to cl_gui_alv_grid,
         g_sort             type slis_t_sortinfo_alv,
         g_custom_container type ref to cl_gui_custom_container,
         g_layout           type slis_layout_alv,
         gt_fieldcat        type slis_t_fieldcat_alv,
         t_fldcat           like line of gt_fieldcat,
         g_keyinfo          type slis_keyinfo_alv,
         gt_events          type slis_t_event,
         gs_event           type slis_alv_event,
         w_sy_repid         like sy-repid.
    data: begin of seltab occurs 0.
            include structure rsparams.
    data: end of seltab.
    SYSTEM GENERATED TABLE CONTROL DATA ********
    DECLARATION OF TABLECONTROL 'TC_TABCON' ITSELF
    controls: tc_tabcon type tableview using screen 0100.
    LINES OF TABLECONTROL 'TC_TABCON'
    data:     g_tc_tabcon_lines  like sy-loopc.
    data:     ok_code like sy-ucomm.
    Constants                                                            *
    constants: c_data_class like klah-class value 'DG_DATA',
               c_mat_class  like rmclf-klart value '001',
               c_pack       like lips-mtart value 'VERP',
               c_a(1)            value 'A',
               c_b(1)            value 'B',
               c_c(1)            value 'C',
               c_yes(1)          value 'X',
               c_no(1)           value ' '.
    Selection screen                                                     *
    standard report select options block
    selection-screen begin of block a with frame title text-002.
    select-options:
      s_wadat for likp-wadat no-extension obligatory.  " Goods Issue Date
    *parameters:                                           "TR01-
    p_vstel like tvst-vstel obligatory. " Shipping Point "TR01-
    select-options:                                             "TR01+
      p_vstel for tvst-vstel.            " Shipping Point  "TR01+
    select-options:
      s_lfart for likp-lfart,            " Delivery type
      s_lgtor for t30b-lgtor,            " Door selection
      s_exidv for vekp-exidv,            " Handling Unit
      s_vbeln for likp-vbeln.            " Delivery
    parameters:
      p_exdata as checkbox.              " Show extra columns flag
    selection-screen end of block a.
    van/pallet specific select options block
    selection-screen begin of block b with frame title text-001.
    select-options:
      s_palno for zpallettr-zpallet_no, " no-extension,
      s_vanno for zvantr-zvan_no.       " no-extension.
    selection-screen end of block b.
    Value Request Events                                                 *
    at selection-screen on value-request for s_palno-low.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_pal_nos.
      s_palno-low = w_number.
    at selection-screen on value-request for s_palno-high.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_pal_nos.
      s_palno-high = w_number.
    at selection-screen on value-request for s_vanno-low.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_van_nos.
      s_vanno-low = w_number.
    at selection-screen on value-request for s_vanno-high.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_van_nos.
      s_vanno-high = w_number.
    At Selection Screen                                                  *
    at selection-screen.
      perform validate_selections.
    Initialization                                                       *
    initialization.
    Start of selection                                                   *
    start-of-selection.
    clear all data tables
      clear: t_likp,
             t_lips,
             t_vbuk,
             t_vbup,
             t_vepo,
             t_vantr,
             t_pallettr,
             w_likp,
             w_lips,
             w_vbuk,
             w_vbup,
             w_vepo,
             w_vekp.
      refresh: t_likp,
               t_lips,
               t_vbuk,
               t_vbup,
               t_vepo,
               t_vantr,
               t_pallettr.
    select data for ALV
    due to different input parameters being used, to streamline the data
    selection process, different selection methods are required
      if not s_vanno is initial
      or not s_palno is initial.
      if selecting by van/pallet number, need to select the data from the
      handling unit upwards to delivery
        perform select_data_up.
      else.
      otherwise the data can be selected from the delivery downwards
        perform select_data_down.
      endif.
    End of selection                                                     *
    end-of-selection.
    call hierarchical ALV display function module
      call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
           exporting
                i_callback_program       = 'ZWMR_PICK_STATUS_REPORT'
                i_callback_pf_status_set = 'SET_STATUS'
                i_callback_user_command =
                   'USER_COMMAND' "custom gui status form
                is_layout                = g_layout  "user command form
                it_fieldcat              = gt_fieldcat
                it_sort                  = g_sort
                it_events                = gt_events
                i_tabname_header         = 't_disp_head'
                i_tabname_item           = 't_disp_tab'
                i_structure_name_header  = 'ZPICKHEAD'
                i_structure_name_item    = 'ZPICKDISP'
                is_keyinfo               = g_keyinfo
           tables
                t_outtab_header          = t_disp_head
                t_outtab_item            = t_disp_tab.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
                                FORMS                                    *
    Includes inserted by Screen Painter Wizard. DO NOT CHANGE THIS LINE!
      include zwmr_pick_status_reporto01 .
      include zwmr_pick_status_reporti01 .
      include zwmr_pick_status_reportf01 .
    *&      Form  select_pal_nos
          select pallet numbers for search help
    form select_pal_nos.
      data: begin of t_palno occurs 0,
              zpallet_no like zpallettr-zpallet_no,
            end of t_palno.
    select all available pallet numbers
      select distinct zpallet_no from zpallettr
                      into corresponding fields of table t_palno.
      loop at t_palno.
      get pallet id
        select single zpallet_id from zpallettr
                      into number_range-id
                      where zpallet_no = t_palno-zpallet_no.
      get pallet description
        select single zdesc from zpalletmd
                      into number_range-desc
                      where zpallet_id = number_range-id.
        number_range-num = t_palno-zpallet_no.
      append to search help table
        append number_range.
      endloop.
    call pop up dialog box
      call screen 0100 starting at 5 5.
    endform.                    " select_pal_nos
    *&      Form  select_van_nos
          select van numbers for search help
    form select_van_nos.
      data: begin of t_vanno occurs 0,
              zvan_no like zvantr-zvan_no,
            end of t_vanno.
    select available van numbers
      select distinct zvan_no from zvantr
                      into corresponding fields of table t_vanno.
      loop at t_vanno.
      select van id
        select single zvan_id from zvantr
                      into number_range-id
                      where zvan_no = t_vanno-zvan_no.
      select van description (maintained in pallet tables)
        select single zdesc from zpalletmd
                      into number_range-desc
                      where zpallet_id = number_range-id.
        number_range-num = t_vanno-zvan_no.
      append to search help table
        append number_range.
      endloop.
    call pop up dialog box
      call screen 0100 starting at 5 5.
    endform.                    " select_van_nos
    *&      Form  select_data_down
          select data if selecting from delivery down
    form select_data_down.
    select all deliveries from LIKP that fulfill selection criteria
      select * from likp into table t_likp
                         where vbeln in s_vbeln
                       and   vstel eq p_vstel                 "TR01-
                         and   vstel in p_vstel
                         and   lgtor in s_lgtor
                         and   wadat in s_wadat
                         and   lfart in s_lfart.
      if sy-subrc ne 0.
      no data found
        message i007.
        exit.
      endif.
      if not t_likp[] is initial.
      select sales document headers from VBUK
        select * from vbuk into table t_vbuk
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln.
      select all relevant delivery items from LIPS
        select * from lips into table t_lips
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln
                      and   pstyv ne 'ZPAC'
                      and   pstyv ne 'ZGDP'                     "TR02+
                      and   lfimg gt 0.                         "TR01+
      endif.
      if not t_lips[] is initial.
      select all sales document line items from VBUP
        select * from vbup into table t_vbup
                      for all entries in t_lips
                      where vbeln eq t_lips-vbeln
                      and   posnr = t_lips-posnr.
      select corresponding handling unit ID's (venum)
    TR03 Replace start
       select * from vepo appending corresponding fields of table t_vepo
                     for all entries in t_lips
                     where vbeln = t_lips-vbeln
                     and   posnr = t_lips-posnr
                     and   matnr = t_lips-matnr
                     and   charg = t_lips-charg.
        select * from vepo
                      inner join vekp on vepovenum = vekpvenum
                      appending corresponding fields of table t_vepo
                      for all entries in t_lips
                      where vepo~vbeln = t_lips-vbeln
                      and   vepo~posnr = t_lips-posnr
                      and   vepo~matnr = t_lips-matnr
                      and   vepo~charg = t_lips-charg
                      and   vekp~exidv in s_exidv.
    TR03 Replace end
      endif.
    build process table
      perform move_to_table.
    endform.   "select_data_down
    *&      Form  select_data_up
          select data if selecting from van/pallet up
    form select_data_up.
      if not s_vanno is initial.
      if van then select van numbers and hence pallet numbers
        select * from zvantr into table t_vantr
                              where zvan_no in s_vanno.
                            and   vstel   eq p_vstel."TR01-
        if not t_vantr[] is initial.
          select * from zpallettr into table t_pallettr
                                  for all entries in t_vantr
                                  where zpallet_no eq t_vantr-zpallet_no.
                                and   vstel      eq p_vstel."TR01-
        endif.
      else.
      otherwise can get pallet numbers directly
        select * from zpallettr into table t_pallettr
                                where zpallet_no in s_palno.
                              and   vstel      eq p_vstel."TR01-
      endif.
      if not t_pallettr[] is initial.
      from the pallet nos. we can select the handling units
        select * from vekp into table t_vekp
                           for all entries in t_pallettr
                           where exidv eq t_pallettr-exidv
                           and   exidv ne space
                           and   exidv in s_exidv               "TR03+
                           and ( exida = 'E'                    "TR01+
                           or    exida = 'F' ).                 "TR01+
      endif.
      if not t_vekp[] is initial.
      build vbeln range from t_vekp.
        loop at t_vekp.
          r_del-sign = 'I'.
          r_del-option = 'EQ'.
          r_del-low = t_vekp-vpobjkey.
          append r_del.
        endloop.
      select all deliveries from LIKP that correspond to HU's
        select * from likp into table t_likp
                           where vbeln in r_del
                           and   wadat in s_wadat
                           and   lfart in s_lfart.
      endif.
      if not t_likp[] is initial.
      select sales document headers from VBUK
        select * from vbuk into table t_vbuk
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln.
      select all relevant delivery items from LIPS
        select * from lips into table t_lips
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln
                      and   pstyv ne 'ZPAC'
                      and   pstyv ne 'ZGDP'                     "TR02+
                      and   lfimg gt 0.                         "TR01+
      endif.
      if not t_lips[] is initial.
      select all sales document line items from VBUP
        select * from vbup into table t_vbup
                      for all entries in t_lips
                      where vbeln eq t_lips-vbeln
                      and   posnr = t_lips-posnr.
      select corresponding handling unit ID's (venum)
        select * from vepo appending corresponding fields of table t_vepo
                      for all entries in t_lips
                      where vbeln = t_lips-vbeln
                      and   posnr = t_lips-posnr
                      and   matnr = t_lips-matnr
                      and   charg = t_lips-charg.
      endif.
    build process table
      perform move_to_table.
    endform.   "select_data_up
    *&      Form  move_to_table
          move data to processing table
    form move_to_table.
      loop at t_vepo.
        clear t_data_tab.
      delivery lines.
        clear w_lips.
        read table t_lips with key vbeln = t_vepo-vbeln
                                   posnr = t_vepo-posnr
                                   into w_lips.
        move-corresponding w_lips to t_data_tab.
      sales document line items
        clear w_vbup.
        read table t_vbup with key vbeln = t_vepo-vbeln
                                   posnr = t_vepo-posnr
                                   into w_vbup.
      if w_vbup-kosta = space.                   "TR01-
        not relevant for picking
        delete t_vepo.                           "TR01-
        continue.                                "TR01-
      else.                                      "TR01-
        move-corresponding w_vbup to t_data_tab.
      endif.                                     "TR01-
      sales doc header
        clear w_vbuk.
        read table t_vbuk with key vbeln = t_vepo-vbeln
                               into w_vbuk.
        move-corresponding w_vbuk to t_data_tab.
      delivery header
        clear w_likp.
        read table t_likp with key vbeln = t_vepo-vbeln
                               into w_likp.
        move-corresponding w_likp to t_data_tab.
      select handling unit info using vepo entry
        clear w_vekp.
        if t_vekp[] is initial.
          select single * from vekp into w_vekp
                                    where venum = t_vepo-venum.
        else.
          read table t_vekp with key venum = t_vepo-venum
                                     into w_vekp.
          if sy-subrc ne 0.
            select single * from vekp into w_vekp
                            where venum = t_vepo-venum.
          endif.
        endif.
        move-corresponding w_vekp to t_data_tab.
      select pallet / van load information
        select single zpallet_no zcount_check from zpallettr
                                 into (t_data_tab-zpallet_no,
                                       t_data_tab-zcount_check)
                                 where exidv eq w_vekp-exidv.
        if not t_data_tab-zpallet_no in s_palno.                "TR01+
          continue.                                             "TR01+
        endif.                                                  "TR01+
        if sy-subrc = 0.
          select single zvan_no zvan_print zeod_print from zvantr
                        into (t_data_tab-zvan_no,
                              t_data_tab-zvan_print,
                              t_data_tab-zeod_print)
                        where zpallet_no eq t_data_tab-zpallet_no.
          if not t_data_tab-zvan_no in s_vanno.                 "TR01+
            continue.                                           "TR01+
          endif.                                                "TR01+
        endif.
        append t_data_tab.
      endloop.
    *-----> TR01+ start
    If the delivery has yet to be packed, then need to include in report
    Thus delete t_lips here and if any entries left after looping through
    t_vepo, these will also need to be added to t_data_tab
    if the selection is by handling unit though we do not want these"TR03+
      if s_exidv is initial.                                          "TR03+
        loop at t_vepo.
          read table t_lips with key vbeln = t_vepo-vbeln
                                     posnr = t_vepo-posnr.
          if sy-subrc = 0.
            delete t_lips index sy-tabix.
          endif.
        endloop.
        if not t_lips[] is initial.
      move any unpacked items to the data table
          perform move_lips_to_table.
        endif.
      endif.                                                          "TR03+
    *<---- TR01+ End
    get relevant status icons
      perform select_icons.
    prepare ALV data
      perform prepare_alv.
    endform.                    " select_data
    *&      Form  select_icons
          select icons for display and move data to display table
    form select_icons.
      data: w_disp_tab like zpickdisp,
            w_disp_head like zpickhead,
            w_color like zpickdisp-color,
            ov_icon like zpickdisp-ov_icon,
            gi_icon like zpickdisp-gi_icon,
            to_icon like zpickdisp-to_icon,
            lp_icon like zpickdisp-lp_icon,
            pc_icon like zpickdisp-pc_icon,
            lv_icon like zpickdisp-lv_icon,
            vm_icon like zpickdisp-vm_icon,
            em_icon like zpickdisp-em_icon,
            t_ovst_tab like t_disp_tab with header line.
      constants: c_col1(3) value 'C10',
                 c_col2(3) value 'C20'.
      sort t_data_tab by lgtor vbeln.
      w_color = c_col2.
      loop at t_data_tab.
        at new lgtor.
        fill ALV header table
          clear w_disp_head.
          w_disp_head-lgtor = t_data_tab-lgtor.
          append w_disp_head to t_disp_head.
        endat.
      goods issue status & overall amber/green only
        case t_data_tab-wbstk.
          when c_c.
            move icon_green_light to gi_icon.
            move icon_green_light to ov_icon.
          when others.
            move icon_red_light to gi_icon.
            move icon_yellow_light to ov_icon.
        endcase.
      transfer order status
        case t_data_tab-lvsta.
          when c_a.
            move icon_red_light to to_icon.
          when c_b.
            move icon_yellow_light to to_icon.
          when c_c.
            move icon_green_light to to_icon.
          when space.
          write N/A
            to_icon = 'N/A'.
        endcase.
      loaded to pallet status
        if not t_data_tab-zpallet_no is initial.
          move icon_green_light to lp_icon.
        else.
          move icon_red_light to lp_icon.
        endif.
      pallet count status
        if not t_data_tab-zcount_check is initial.
          move icon_green_light to pc_icon.
        else.
          move icon_red_light to pc_icon.
        endif.
      loaded to van status
        if not t_data_tab-zvan_no is initial.
          move icon_green_light to lv_icon.
        else.
          move icon_red_light to lv_icon.
        endif.
      van manifest status
        if not t_data_tab-zvan_print is initial.
          move icon_green_light to vm_icon.
        else.
          move icon_red_light to vm_icon.
        endif.
      end of day manifest status
        if not t_data_tab-zeod_print is initial.
          move icon_green_light to em_icon.
        else.
          move icon_red_light to em_icon.
        endif.
      move working data table to display table
        move-corresponding t_data_tab to w_disp_tab.
        w_disp_tab-ov_icon = ov_icon.
        w_disp_tab-gi_icon = gi_icon.
        w_disp_tab-to_icon = to_icon.
        w_disp_tab-lp_icon = lp_icon.
        w_disp_tab-pc_icon = pc_icon.
        w_disp_tab-lv_icon = lv_icon.
        w_disp_tab-vm_icon = vm_icon.
        w_disp_tab-em_icon = em_icon.
        w_disp_tab-color = w_color.
      fill N/A values for initial fields for display
        if w_disp_tab-packvorschr is initial.
          w_disp_tab-packvorschr = 'N/A'.
        endif.
        if w_disp_tab-exidv is initial.
          w_disp_tab-exidv = 'N/A'.
        endif.
        if w_disp_tab-zpallet_no is initial.
          write 'N/A' to w_disp_tab-zpallet_no.
        endif.
        if w_disp_tab-zvan_no is initial.
          write 'N/A' to w_disp_tab-zvan_no.
        endif.
      display different color for new doc number
        at end of vbeln.
          if w_color = c_col1.
            w_color = c_col2.
          elseif w_color = c_col2.
            w_color = c_col1.
          endif.
        endat.
        append w_disp_tab to t_disp_tab.
        clear w_disp_tab.
      endloop.
    we have all the icons in display but need to check the overall status
    as this refers to the line items
    green and amber statuses already set and use the same criteria as the
    goods issue status unless detected as red here
      data: ov_stat_red(1).
      clear w_disp_tab.
      sort t_disp_tab by vbeln.
      loop at t_disp_tab into w_disp_tab.
        at new vbeln.
        check all line items for delivery
          loop at t_data_tab where vbeln = w_disp_tab-vbeln.
            if t_data_tab-lvsta = c_a.
            set overall status to red
              ov_stat_red = c_yes.
              exit.
            else.
            leave green/amber status icon as previosly determined
            endif.
          endloop.
          if ov_stat_red = c_yes.
          set overall status to red for all items in that delivery
            clear ov_stat_red.
            move icon_red_light to w_disp_tab-ov_icon.
            modify t_disp_tab from w_disp_tab transporting ov_icon
                              where vbeln = w_disp_tab-vbeln.
          endif.
        endat.
      endloop.
    endform.                    " select_icons
    *&      Form  fill_layout
          fill ALV layout parameters
    form fill_layout.
      clear g_layout.
      g_layout-colwidth_optimize = c_yes.   " column width optimisation
      g_layout-zebra = space.               " alternate line colors
      g_layout-box_fieldname = 'MARK'.      " checkbox fieldname
      g_layout-info_fieldname = 'COLOR'.    " highlight row indicator
      g_layout-no_vline = space.            " vertical line
      g_layout-key_hotspot = space.         " hotspot field
      g_layout-f2code = 'PICK'.             " F2 ok_code
      g_layout-numc_sum = c_yes.            " sum numc fields
      g_layout-box_tabname = 't_disp_head'. " checkbox table name
      g_layout-expand_fieldname = 'EXPAND'. " expand field name
    endform.                    " fill_layout
    *&      Form  fill_sort
          fill ALV sort table
    form fill_sort.
      data: w_g_sort type slis_sortinfo_alv.
      w_g_sort-spos      = 1.
      w_g_sort-fieldname = 'LGTOR'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 2.
      w_g_sort-fieldname = 'VBELN'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 3.
      w_g_sort-fieldname = 'POSNR'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 4.
      w_g_sort-fieldname = 'WADAT'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
    endform.                    " fill_sort
    *&      Form  fill_fieldcat
          Fill field category structure for ALV
    form fill_fieldcat.
      clear t_fldcat.
    create field catalogue for header table
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = 'ZWMR_PICK_STATUS_REPORT'
                i_internal_tabname     = 't_disp_head'
                i_structure_name       = 'ZPICKHEAD'
                i_client_never_display = c_yes
           changing
                ct_fieldcat            = gt_fieldcat[].
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    ceate field catalogue for items table
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = 'ZWMR_PICK_STATUS_REPORT'
                i_internal_tabname     = 't_disp_tab'
                i_structure_name       = 'ZPICKDISP'
                i_client_never_display = c_yes
           changing
                ct_fieldcat            = gt_fieldcat[].
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    modify field catalogue for this report
    set no display flag if not requested on selection screen
      if p_exdata ne c_yes.
        t_fldcat-no_out    =  c_yes.
        modify gt_fieldcat from t_fldcat transporting no_out
                           where fieldname eq 'PACKVORSCHR'
                           or    fieldname eq 'EXIDV'
                           or    fieldname eq 'ZPALLET_NO'
                           or    fieldname eq 'ZVAN_NO'
                           or    fieldname eq 'ZZPACKCLASS'
                           or    fieldname eq 'ZZTI'.
      endif.
    set no display flag for item level LGTOR field
      t_fldcat-no_out    =  c_yes.
      modify gt_fieldcat from t_fldcat transporting no_out
                         where fieldname eq 'LGTOR'
                         and   tabname   eq 't_disp_tab'.
    prevent display of technical fields
      t_fldcat-tech = c_yes.
      modify gt_fieldcat from t_fldcat transporting tech
                         where fieldname eq 'EXPAND'
                         or    fieldname eq 'SELKZ'.
    set vbeln as key
      t_fldcat-key = c_yes.
      modify gt_fieldcat from t_fldcat transporting key
                         where fieldname eq 'VBELN'.
    prevent scrolling for info fields
      t_fldcat-fix_column = c_yes.
      modify gt_fieldcat from t_fldcat transporting fix_column
                         where fieldname eq 'VBELN'.
    endform.                    " fill_fieldcat
    *&      Form  prepare_ALV
          Fill ALV parameters
    form prepare_alv.
    fill ALV key info
      g_keyinfo-header01 = 'LGTOR'.
      g_keyinfo-item01   = 'LGTOR'.
    fill ALV events
      gs_event-name = 'TOP_OF_PAGE'.
      gs_event-form = 'TOP_OF_PAGE'.
      append gs_event to gt_events.
    fill ALV sort table
      perform fill_sort.
    fill ALV layout structure
      perform fill_layout.
    fill ALV field category
      perform fill_fieldcat.
    endform.                    " prepare_ALV
    *&      Form  user_command
          form called on user command from ALV list
    form user_command using r_ucomm     like sy-ucomm
                            rs_selfield type slis_selfield.
      data: index type i,
            w_disp_head like line of t_disp_head,
            w_door like likp-lgtor.
      clear r_lgtor. refresh r_lgtor.
      case r_ucomm.
        when 'PICK'. " Double click line
        when 'VANM'. " Van Manifest button
        read the header table where has been selected
          loop at t_disp_head into w_disp_head where mark = c_yes.
            r_lgtor-sign   = 'I'.
            r_lgtor-option = 'EQ'.
            r_lgtor-low    = w_disp_head-lgtor.
            append r_lgtor.
          endloop.
        print the van manifest
          perform print_van_manifest tables r_lgtor.
        when 'EODM'. " EOD Manifest button
        read the header table where has been selected
          loop at t_disp_head into w_disp_head where mark = c_yes.
            r_lgtor-sign   = 'I'.
            r_lgtor-option = 'EQ'.
            r_lgtor-low    = w_disp_head-lgtor.
            append r_lgtor.
          endloop.
        print the end of day manifest
          perform print_eod_manifest tables r_lgtor.
        when 'REFR'. "Refresh
        refresh display
          w_sy_repid = sy-repid.
          call function 'RS_REFRESH_FROM_SELECTOPTIONS'
               exporting
                    curr_report     = w_sy_repid
               tables
                    selection_table = seltab.
              exceptions
                  not_found       = 1
                  no_report       = 2
                  others          = 3.
      

  • Abt alv hierarchy

    my output like this,
         -> india                          123       123
              -->ap                        12          12
                 --->hyd                     24        24
                       @ ampet             1000     1000
                       @ kp                  50         50
                       @ begumpet        1234         1234
    output tree like this.
    plz send me alv hierarchy program blongs to this output.
    giv me reply asap
    thanks n regards
    satya

    Hi Murty please find the following code.If it is useful reward me points.
    TYPE-POOLS: slis.
    TABLES : ekko, ekpo.
    DATA : BEGIN OF i_ekko OCCURS 0,
    ebeln LIKE ekko-ebeln,
    ernam LIKE ekko-ernam,
    bsart LIKE ekko-bsart,
    var1,
    END OF i_ekko.
    DATA : BEGIN OF i_ekpo OCCURS 0,
    ebeln LIKE ekpo-ebeln,
    ebelp LIKE ekpo-ebelp,
    matnr LIKE ekpo-matnr,
    aedat LIKE ekpo-aedat,
    var2,
    END OF i_ekpo.
    DATA : BEGIN OF i_final OCCURS 0,
    ebeln LIKE ekko-ebeln,
    ernam LIKE ekko-ernam,
    bsart LIKE ekko-bsart,
    ebelp LIKE ekpo-ebelp,
    matnr LIKE ekpo-matnr,
    aedat LIKE ekpo-aedat,
    END OF i_final.
    SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN.
    DATA : fcat TYPE slis_t_fieldcat_alv, "FIELDCATALOG(TABLE)
    fcat1 TYPE slis_t_fieldcat_alv, "FIELDCATALOG(TABLE)
    cat TYPE slis_fieldcat_alv. "FIELDCATALOG(WORK AREA)
    DATA : LAYOUT1 TYPE SLIS_LAYOUT_ALV, "LAYOUT 1
    LAYOUT2 TYPE SLIS_LAYOUT_ALV, "LAYOUT 2
    KEY TYPE SLIS_KEYINFO_ALV , "KEY INFORMATION
    GT_EVENT1 TYPE SLIS_T_EVENT.
    START-OF-SELECTION.
    PERFORM GETTING_DATA.
    PERFORM append_field.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = SY-CPROG
    IS_LAYOUT = LAYOUT1
    IT_FIELDCAT = FCAT
    IT_EVENTS = GT_EVENT1
    i_tabname_header = 'I_EKKO'
    i_tabname_item = 'I_EKPO'
    is_keyinfo = KEY
    tables
    t_outtab_header = I_EKKO
    t_outtab_item = I_EKPO.
    *& Form GETTING_DATA
    text
    --> p1 text
    <-- p2 text
    FORM GETTING_DATA .
    SELECT EBELN BSART ERNAM UP TO 100 ROWS
    INTO CORRESPONDING FIELDS OF TABLE I_EKKO
    FROM EKKO
    WHERE EBELN IN S_EBELN.
    SELECT EBELN EBELP MATNR AEDAT
    INTO CORRESPONDING FIELDS OF TABLE I_EKPO
    FROM EKPO
    FOR ALL ENTRIES IN I_EKKO
    WHERE EBELN = I_EKKO-EBELN .
    SORT I_EKKO BY EBELN.
    LOOP AT I_EKKO.
    READ TABLE I_EKPO WITH KEY EBELN = I_EKKO-EBELN.
    IF SY-SUBRC EQ 0.
    MOVE: I_EKKO-EBELN TO I_FINAL-EBELN,
    I_EKKO-BSART TO I_FINAL-BSART,
    I_EKKO-ERNAM TO I_FINAL-ERNAM,
    I_EKPO-EBELP TO I_FINAL-EBELP,
    I_EKPO-MATNR TO I_FINAL-MATNR,
    I_EKPO-AEDAT TO I_FINAL-AEDAT.
    APPEND I_FINAL.
    ENDIF.
    ENDLOOP.
    ENDFORM. " GETTING_DATA
    *& Form APPEND_FIELD
    text
    --> p1 text
    <-- p2 text
    FORM append_field .
    CLEAR cat.
    cat-col_pos = 1.
    cat-fieldname = 'EBELN'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'EBELN'.
    cat-ref_tabname = 'EKKO'.
    cat-key = 'X'. "define field as key
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 2.
    cat-fieldname = 'BSART'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'BSART'.
    cat-ref_tabname = 'EKKO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 3.
    cat-fieldname = 'ERNAM'.
    cat-tabname = 'I_EKKO'.
    cat-ref_fieldname = 'ERNAM'.
    cat-ref_tabname = 'EKKO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 4.
    cat-fieldname = 'EBELP'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'EBELP'.
    cat-ref_tabname = 'EKPO'.
    cat-key = 'X'. "define field as key
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 5.
    cat-fieldname = 'MATNR'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'MATNR'.
    cat-ref_tabname = 'EKPO'.
    APPEND cat TO fcat.
    CLEAR cat.
    cat-col_pos = 6.
    cat-fieldname = 'AEDAT'.
    cat-tabname = 'I_EKPO'.
    cat-ref_fieldname = 'AEDAT'.
    cat-ref_tabname = 'EKPO'.
    APPEND cat TO fcat.
    CLEAR cat.
    layout1-expand_fieldname = 'VAR1'.
    layout1-lights_fieldname = '3'.
    layout1-lights_tabname = 'I_EKPO'.
    key-header01 = 'EBELN'.
    key-item01 = 'EBELN'.
    ENDFORM. " APPEND_FIELD

  • Filename in Webdynpro for a PDF created with Smartform

    Hi,
    I created a PDF with Smartform in my Webdynpro-Application.
    When I click the save button there is a default filename f.pdf .
    How can I change the filename?
    Regards
    Marcus Schug

    Hi Experts,
    any update on this?
    I am facing the same problem with ESS payslip (smartform/Hrform): my customer wants to have custom file name for download salery statements from the portal. Do you know how to change the default form name unknown.pdf to e.g.. "payslip_month_year"?
    I spent a lot of time to find any possibility to get and change the file name but without success till now.
    Please respond.
    Regards,
    Zdzislaw Kaczmarczyk
    Edited by: Zdzislaw Kaczmarczyk on Jun 14, 2010 4:41 PM

  • Here's how to do ALV (OO) with dynamic fcat, int table and editable data

    Hi everybody
    Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
    It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
    This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
    You don't need to add the class via SE24 -- done fron this ABAP.
    When you run it click Edit for the first time.
    After editing data press ENTER and the break point should bring you into the relevant method.
    Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
    The code should work without any changes on any system >=6.40.
    All you need to do is to create a blank screen 100 via SE51  with a custom container on it called CCONTAINER1.
    The rest of the code can just be uploaded into your system using the SE38 upload facility.
    When running the program click on the EDIT button to enable the edit functionality of the grid.
    Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
    This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
    I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
    Have fun and award points if useful.
    Cheers
    Jimbo.
    <b>PROGRAM zdynfieldcat.
    Simple test of dynamic ITAB with user defined (not ddic) fields
    Build dynamic fcat
    use ALV grid to display and edit.
    *When edit mode set to 1 toolbar gives possibility of adding and
    *deleting rows.
    *Define subclass of cl_gui_alv_grid so we can use protected attributes
    *and methods.
    Add event handler to intercept user entering data and pressing the
    *ENTER key.
    When enter key is pressed get actual value of NEW table (all rows)
    rather than just the changed data.
    *use new RTTI functionality to retrieve internal table structure
    *details.
    Create a blank screen 100  with a custom container called CCONTAINER1.
    James Hawthorne
    include <icon>.
    define  any old internal structure  NOT in DDIC
    types: begin of s_elements,
           anyfield1(20) type c,
           anyfield2(20) type c,
           anyfield3(20) type c,
           anyfield4(20) type c,
           anyfield5(11) type n,
           end of s_elements.
    types:  lt_rows  type lvc_t_roid.
    Note new RTTI functionality allows field detail retrieval
    at runtime for dynamic tables.
    data:   wa_element type s_elements ,
            wa_data type s_elements,
            c_index type sy-index,
            c_dec2 type s_elements-anyfield5,
            wa_it_fldcat type lvc_s_fcat,
            it_fldcat type lvc_t_fcat,
            lr_rtti_struc TYPE REF TO cl_abap_structdescr,    "RTTI
            lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
            ls_comp LIKE LINE OF lt_comp,                     "RTTI
            zog  like line of lr_rtti_struc->components,      "RTTI
            struct_grid_lset type lvc_s_layo,
            l_valid  type c,
            new_table type ref to data.
    field-symbols: <dyn_table> type standard table,
                   <actual_tab> type standard table,
                   <fs1> type ANY,
                   <FS2> TYPE TABLE.
    data: grid_container1 type ref to cl_gui_custom_container.
    class lcl_grid_event_receiver definition deferred.
    data: g_event_receiver type ref to lcl_grid_event_receiver.
    data: ls_modcell type LVC_S_MODI,
          stab type ref to data,
          sdog type  s_elements.      .
    class lcl_grid_event_receiver definition.
      public section.
        methods:
        handle_data_changed
             for event data_changed of cl_gui_alv_grid
                 importing er_data_changed,
           toolbar for event toolbar of cl_gui_alv_grid
                     importing e_object
                               e_interactive,
          user_command for event user_command of cl_gui_alv_grid
                     importing e_ucomm.
    endclass.
    *implementation of Grid event-handler class
    class lcl_grid_event_receiver implementation.
    method handle_data_changed.
    code whatever required after data entry.
    various possibilites here as you can get back Cell(s) changed
    columns or the entire updated table.
    Data validation is also possible here.
    perform check_data using er_data_changed.
    endmethod.
    Method for handling all creation/modification calls to the toolbar
      method toolbar.
        data : ls_toolbar type stb_button.
    Define Custom Button in the toolbar
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EDIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Edit' to ls_toolbar-text.
        move icon_change_text to ls_toolbar-icon.
        move 'Click2Edit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'UPDA' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Update' to ls_toolbar-text.
        move icon_system_save to ls_toolbar-icon.
        move 'Click2Update' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EXIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Exit' to ls_toolbar-text.
        move icon_system_end to ls_toolbar-icon.
        move 'Click2Exit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
      endmethod.
      method user_command.
        case e_ucomm .
          when 'EDIT'.          "From Tool bar
            perform set_input.
             perform init_grid.
          when 'UPDA'.          "From Tool bar
            perform refresh_disp.
            perform update_table.
          when 'EXIT'.          "From Tool bar
            leave program.
        endcase.
      endmethod.
    endclass.
    class zcltest definition inheriting from  cl_gui_alv_grid.
    define this as a subclass so we can access the protected attributes
    of the superclass cl_gui_alv_grid
    public section.
    methods: constructor, disp_tab.
    endclass.
    need this now to instantiate object
    as we are using subclass rather than the main cl_gui_alv_grid.
    class zcltest implementation.
    METHOD constructor.
    CALL METHOD super->constructor
            exporting i_appl_events = 'X'
               i_parent = grid_container1.
    endmethod.
    method disp_tab.
    FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
    break-point 1.
    mt_outtab is the data table held as a protected attribute
    in class cl_gui_alv_grid.
    ASSIGN me->mt_outtab->* TO <outtab>.  "Original data
    do whatever you want with <outtab>
    contains data BEFORE changes each time.
    Note that NEW (Changed) table has been obtained already by
    call to form check_data USING P_ER_DATA_CHANGED
             TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Entered data is in table defined by <fs2>
    In this method you can compare original and changed data.
    Easier than messing around with individual cells.
    do what you want with data in <fs2>  validate / update / merge etc
    endmethod.
    endclass.
    data :
        ok_code like sy-ucomm,
        save_ok like sy-ucomm,
        i4 type int4,
    Container Object [grid_container]
    now created via method constructor
    in the subclass zcltest.
    Control Object [grid]
    grid1 type ref to zcltest,
    Event-Handler Object [grid_handler]
    grid_handler type ref to lcl_grid_event_receiver.
    start-of-selection.
    call screen 100.
    module status_0100 output.
    now display it as grid
    if grid_container1 is initial.
        create object grid_container1
            exporting
              container_name = 'CCONTAINER1'.
        create object grid1.
         break-point 1.
        create object grid_handler.
        set handler:
           grid_handler->user_command for grid1,
           grid_handler->toolbar for grid1,
           grid_handler->handle_data_changed for grid1.
    perform create_dynamic_fcat.
    perform create_dynamic_itab.
    perform populate_dynamic_itab.
    perform init_grid.
    perform register_enter_event.
    set off ready for input initially
    i4 = 0.
      call method grid1->set_ready_for_input
             exporting
               i_ready_for_input = i4.
    endif.
    endmodule.
    module user_command_0100 input.
    *PAI not needed in OO ALV anymore as User Commands are handled as events
    *in method user_command.
    *we can also get control if the Data entered and the ENTER is pressed by
    *raising an event.
    Control then returns to method handle_data_changed.
    endmodule.
    form create_dynamic_fcat.
    get structure of our user table for building field catalog
    Use the RTTI functionality
    lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
    Build field catalog just use basic data here
    colour specific columns as well
    loop at lr_rtti_struc->components into zog.
    c_index = c_index + 1.
    clear wa_it_fldcat.
      wa_it_fldcat-fieldname = zog-name .
      wa_it_fldcat-datatype =  zog-type_kind.
      wa_it_fldcat-inttype =   zog-type_kind.
      wa_it_fldcat-intlen =    zog-length.
      wa_it_fldcat-decimals =  zog-decimals.
      wa_it_fldcat-lowercase = 'X'.
      if c_index eq 2.
      wa_it_fldcat-emphasize = 'C411'.
         endif.
        if c_index eq 3.
      wa_it_fldcat-emphasize = 'C511'.
       endif.
      append wa_it_fldcat to it_fldcat .
    endloop.
    endform.
    form create_dynamic_itab.
    Create dynamic internal table and assign to field sysmbol.
    Use dynamic field catalog just built.
    call method cl_alv_table_create=>create_dynamic_table
                 exporting
                    it_fieldcatalog = it_fldcat
                 importing
                    ep_table        = new_table.
    assign new_table->* to <dyn_table>.
    endform.
    form populate_dynamic_itab.
    load up a line of the dynamic table
    c_dec2 = c_dec2 + 11.
    wa_element-anyfield1 = 'Tabbies'.
    wa_element-anyfield2 = 'ger.shepards'.
    wa_element-anyfield3  = 'White mice'.
    wa_element-anyfield4 =  'Any old text'.
    wa_element-anyfield5 =  c_dec2.
    append  wa_element to <dyn_table>.
    endform.
    form check_data USING P_ER_DATA_CHANGED
               TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Get altered data back
      ASSIGN   p_er_data_changed->mp_mod_rows TO <FS1>.
    stab =       p_er_data_changed->mp_mod_rows.
    ASSIGN STAB->* TO <FS2>.
    LOOP AT <FS2> INTO sdog.
    ALV grid display with altered data is now in <fs2>.
    do any extra processing you want here
    endloop.
    now display new table
    call method grid1->disp_tab.
    endform.
    form exit_program.
      call method grid_container1->free.
      call method cl_gui_cfw=>flush.
      leave program.
    endform.
    form refresh_disp.
      call method grid1->refresh_table_display.
    endform.
    form update_table.
    The dynamic table here is the changed table read from the grid
    after user has changed it
    Data can be saved to DB or whatever.
    loop at <dyn_table> into wa_element.
    do what you want with the data here
    endloop.
    switch off edit mode again for next function
    i4 = 0.
      call method grid1->set_ready_for_input
          exporting
              i_ready_for_input = i4.
    endform.
    form set_input.
    i4 = 1.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form switch_input.
    if i4 = 1.
    i4 = 0.
    else.
    i4 = 1.
    endif.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form init_grid.
    Enabling the grid to edit mode,
         struct_grid_lset-edit = 'X'. "To enable editing in ALV
         struct_grid_lset-grid_title  = 'Jimbos Test'.
         call method grid1->set_table_for_first_display
           exporting
             is_layout           = struct_grid_lset
           changing
             it_outtab             =  <dyn_table>
             it_fieldcatalog       =  it_fldcat.
    endform.
    form register_enter_event.
    call method grid1->register_edit_event
                   exporting
                      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    Instantiate the event or it won't work.
    create object g_event_receiver.
    set handler g_event_receiver->handle_data_changed for grid1.
    endform.</b>

    Hi there
    IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
    I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
    I'll copy the stuff to the wiki when I've got the browser sorted out.
    Cheers
    jimbp

  • Dunning letter with smartform

    Hi experts,
    I have to create a form for dunning letter with (smartforms) for the transaction F150
    and really I don't know how I will do it.
    I don't know how to pass the fields run on, identification customer to the formulaire for getting data for display?
    notice in this moment I have letter displayed with the form sapscript Y_F150_DUNN_01, that I have to change the letter to a form with smartforms?

    Hi Mohamed,
    because I did not believe SAP doesn't provide smartforms dunning I checked it.
    In Customizing Financial Accounting->Accounts Receivable and Accounts Payable->Business Transactions->Dunning->Printout the documentation says "Note that you can define dunning forms using either SAPScript or SAP     
    Smart Forms."
    The Docu for "Define Dunning Forms (with SAP Smart Forms)" explains how-to:
    Requirements                                                                               
    The standard settings allow for creating dunning notices using              
    SAPScript. If you wish to print your dunning notices using SAP Smart         
    Forms, you must first define the corresponding function module.              
         1. In Customizing for Financial Accounting, choose Financial             
         Accounting Global Settings ->  Business Transaction Events.              
         The SAP Business Framework screen appears.                               
         2. Choose Settings -> P/S function modules -> ... of an SAP appl. .      
         3. Under the Business Transaction Event (BTE) "1720" with                
         application indicator FI-FI, change the function module in               
         FI_PRINT_DUNNING_NOTICE_SMARTF and save your entries.                                                                               
    SAP provides a predefined example form for dunning notices:                                                                               
    o   F150_DUNN_SF                                                                               
    Activities                                                                               
    1.  Make sure the function module FI_PRINT_DUNNING_NOTICE_SMARTF has       
        been defined (see above).                                                                               
    2.  Create a dunning form or change the example form to meet your          
        requirements for the various dunning notices.                                                                               
    I checked it and it looks really easy!
    Any quetsions? Feel free to ask.
    Regards,
    Clemens
    P.S.: If you don't expect more answers, please close the thread.

  • BO Webi report hierarchy with measure values showing more(almost double value) compare to BW Bex report

    Hi,
    In our BO Webi report hierarchy with measure values showing more(almost double value) compare to BW Bex report. Can any one please help on this.
    Is it BW problem or BO problem?
    I checked in some other threads but it's not given solution.
    Thanks,
    Manjunatha

    Hi,
    Is it BW problem or BO problem? : BO
    is it causing problem with hierarchly data only ?  without hierarchies data is matching or not?
    Post same in SAP BusinessObjects Web Intelligence  .
    Thanks.

  • Label printing on ZEBRA printer TLP2844 with smartform

    Hi Gurus,
    Requirement:
    Print label on Zebra printer with smartform
    1. i have created a smartform with desired layout
    2. and trying to print on Zebra printer
    Questions:
    1. smartform is not printing on zebra printer
    2. suggest me if there are any ways to print smartform on zebra printer
    3. does it requires any native programming language for printing labels on zebra printer
    Best Regards,
    Krishna

    hi Krishna,
    This printer does not support ZPL2 so I thnk you cnnot use the device types like LZEB2. It should work to print via windows and a device type like SAPWIN or SWINCF.
    Regards,
    Aidan

  • Display amount in ALV Grid with different Decimal Places based on Currency

    HI Experts,
    Working with ALV Report i have one Amount field NETWR which is having Length 15 and Decimal Places 2.
    we have two different types of currency's AED and KWD and AED having 2 decimal Places and KWD having 3 decimal places.
    im using FM: REUSE_ALV_GRID_DISPLAY for Display. value storing in Table was like this
    AED---22.56
    KWD---225.65
    i need to display values like AED : 22.56

    HI Experts,
    Working with ALV Report i have one Amount field NETWR which is having Length 15 and Decimal Places 2. we have two different types of currency's AED and KWD and AED having 2 decimal Places and KWD having 3 decimal places.
    im using FM: REUSE_ALV_GRID_DISPLAY for Display. value storing in Table was like this
    AED---22.56
    KWD---225.65 (converting this value to 22.565 using BAPI_CURRENCY_GETDECIMALS according to currency in my Report)
    i need to display values like AED : 22.56
                                             KWD---22.565 but here field is NETWR with 2 decimal.
    Need to Display amount in ALV Grid with different Decimal Places based on Currency
    Regards,
    Dileep Kumar Reddy

Maybe you are looking for

  • How to unlock a Mac

    Hi everybody, My stolen Mac has just been returned after being succesfully located in the cloud. The Mac was also locked with the Find my iPhone app. My problem is that I find no way to unlock it because it doesn't find the start-up disk (questionmar

  • Recover(Invokes) Thread in BPEL Console

    Hi, Could anyone please explain what instances in a Recover(Invoke) Tab mean. It would be better if you could post link for any documentation.

  • Beach Ball of Death and Freezing Apps

    For the past couple of days, I've been having some strange occurances on my 2007 MacPro (2,1) where, in certain apps, the Beach Ball of Death will appear and the app will freeze or hang.  I can be using the app for some time and perhaps do one thing,

  • Language for Dictation?

    What language does the dictation feature of the new iPad use? Is there a way to change the language, or is it always the same language that you use for the entire iOS on the iPad?

  • Oracle Plugin does not work under SSL?

    I setup Netscape Web Server 3.60 and Oracle's Form Server 6.0 on the Solaris 2.6 machine. With the Oracle's JInit115211, all our Oracle forms run very good on the NT machine as the Java Applet. As I understand, the communication between Applet and th