Modifications to TMCEXCFS table

Hi
I want to add the field MCQMMA MANUM to the LIS extractor 2LIS_18_I0ACTY since itu2019s a part of the key in QMMA and therefore we need it in our BW-solution in order to avoid duplicate rows in DSOu2019s etc. However, MANUM is not an optional field in the extractor but by altering the table TMCEXCFS you can make it optional and then add it to your datasource. Problem solved or? Are there any implications to this strategy? Or should I trust that SAP made a correct decision by hiding this field for some unknown reason and accept poor data quality in BW and don't modify the extractor? 
I found this on SDN but there is no header item issue in my case:
There are several datasources in the Logistics extractors and also several extract structures for different document levels such as header or item data, if the datasource are poorly designed, this can lead to incorrect key figure values in SAP BW. if the same key figure provides its value from both the header and items levels. For this reason, the fields of the extract structure were established in such a way that they could provide only attribute values o fields on the same level, and not key figure values of superordinate level. The rules regarding which communication structure the fields can be inserted into are described in the table TMCEXCFS control table.
I also found this unanswered question on SDN basically asking the same question:
enhancing LBWE for not allowed fields
Any ideas or shall I throw myself into the unknown territory of altering configuration tables in SAP? / Mats

Hi,
I dont think you need to alter TMCEXCFS table.
You can just do it the usual way as of creating an uppend structure to your datasource structure and populating the field via CMOD.
There's been a lot of topics on the issue.
For example you can refer to
LOGISTIC COCKPIT - WHEN YOU NEED MORE - First option: enhance it !

Similar Messages

  • Modification Events in Table maintenance Generatot

    Hi
    I hace coded some code which is checking entries in 2 fields while saving in event 1. If the entries are not there it diplays error msg.
    Problem is that it diplays error msg but it leaves the screen. I want it to contains that values which ere added and the screen so that user can change the entered entries.
    Thanks

    hi,
    In TMG screen go to the menu 'environment->modification->events', then use the events 05 and 18 and create a form with the code to do data validation as the following code:
    form z_check_fields_zlsot004.
      data: xfld_otype type char14 value 'ZLSOT004-OTYPE',
            xfld_objid type char14 value 'ZLSOT004-OBJID',
            xdyname    type sy-repid,
            xdynumb    type sy-dynnr.
      data tdynpfields type table of dynpread.
      data wdynpfields type dynpread.
      move: sy-repid to xdyname,
            sy-dynnr to xdynumb.
      refresh tdynpfields.
      wdynpfields-fieldname = xfld_otype.
      append wdynpfields to tdynpfields.
      wdynpfields-fieldname = xfld_objid.
      append wdynpfields to tdynpfields.
      call function 'DYNP_VALUES_READ'
        exporting
          dyname               = xdyname
          dynumb               = xdynumb
        tables
          dynpfields           = tdynpfields
        exceptions
          invalid_abapworkarea = 1
          invalid_dynprofield  = 2
          invalid_dynproname   = 3
          invalid_dynpronummer = 4
          invalid_request      = 5
          no_fielddescription  = 6
          invalid_parameter    = 7
          undefind_error       = 8
          double_conversion    = 9
          stepl_not_found      = 10
          others               = 11.
      if sy-subrc eq 0.
    * Efetuar a leitura do primeiro registro, que possui os dados da tela
    * referentes ao campo otype
        read table tdynpfields index 1 into wdynpfields.
        move wdynpfields-fieldvalue to zlsot004-otype.
    * Efetuar a leitura do segundo registro, que possui os dados da tela
    * referentes ao campo objid
        read table tdynpfields index 2 into wdynpfields.
        move wdynpfields-fieldvalue to zlsot004-objid.
    * Validar se campos estão preenchidos
        if zlsot004-otype is initial or
           zlsot004-objid is initial.
          message e028(zlsom001).
        endif.
        zlsot004-erdat = sy-datlo.
        zlsot004-erzet = sy-timlo.
        zlsot004-ernam = sy-uname.
      endif.
    endform.                    "Z_CHECK_FIELDS_ZLSOT004
    regards,
    Fabio Saito

  • Reg: Modification of Master Tables using BDC/BAPI

    Dear All,
    Thanks for Support shown from all of you.
    I want the detailed procedure for Modifying the existing data in the Master Tables using BDC's / BAPI's and Dialog programming.
    Please send me one example code.
    Please Help me Out.
    Thanks In Advance.
    Regards,
    Adinarayana.B

    bapi example
    REPORT ZMMR_DELETEPO NO STANDARD PAGE HEADING MESSAGE-ID zisb.
    tables : zvtls_sap.
    *C-- Types Declarations
    TYPES : BEGIN OF tp_flatfile_vtls,
            ebeln(10),
            ebelp type ekpo-ebelp,
            END OF tp_flatfile_vtls.
    *=====================================================================
                      INTERNAL TABLES DECLARATION
    *=====================================================================
    DATA:  t_flatfile_vtls TYPE tp_flatfile_vtls OCCURS 0 WITH HEADER LINE.
    data : begin of t_sapdata occurs 0,
           po like zvtls_sap-posap,
           item like zvtls_sap-itemsap,
           end of t_sapdata.
    data : begin of t_flatfile_vtls1 occurs 0,
           po(10),
           item like zvtls_sap-itemsap,
           end of t_flatfile_vtls1.
    data : begin of t_update occurs 0,
           mandt like zvtls_sap-mandt,
           povtls like zvtls_sap-povtls,
           itemvtls like zvtls_sap-itemvtls,
           posap like zvtls_sap-posap,
           itemsap like zvtls_sap-itemsap,
           aedat like zvtls_sap-aedat,
           paedt like zvtls_sap-paedt,
           loekz like zvtls_sap-loekz,
           end of t_update.
    data : begin of t_poheader occurs 0,
           po like zvtls_sap-posap,
           end of t_poheader.
    data : begin of t_poitem occurs 0,
           po like zvtls_sap-posap,
           item like zvtls_sap-itemsap,
           end of t_poitem.
    DATA : BEGIN OF T_MESSAGE OCCURS 0,
           MSGTY,
           MSGID(2),
           MSGNO(3),
           MSGTX(100),
           PO like zvtls_sap-povtls,
           item like zvtls_sap-itemvtls,
           END OF T_MESSAGE.
    DATA : BEGIN OF t_bapi_poheader OCCURS 0.
            INCLUDE STRUCTURE bapimepoheader.
    DATA : END OF t_bapi_poheader.
    DATA : BEGIN OF t_bapi_poheaderx OCCURS 0.
            INCLUDE STRUCTURE bapimepoheaderx.
    DATA : END OF t_bapi_poheaderx.
    DATA : BEGIN OF t_bapi_poitem OCCURS 0.
            INCLUDE STRUCTURE bapimepoitem.
    DATA : END OF t_bapi_poitem.
    DATA : BEGIN OF t_bapi_poitemx OCCURS 0.
            INCLUDE STRUCTURE bapimepoitemx.
    DATA : END OF t_bapi_poitemx.
    DATA : BEGIN OF t_bapireturn OCCURS 0.
            INCLUDE STRUCTURE bapiret2.
    DATA : END OF t_bapireturn.
    *=====================================================================
                      V A R I A B L E S
    *=====================================================================
    DATA: w_success(6)  TYPE n,
          w_bklas like t023-bklas,
          w_curryear(4),
          w_begda like sy-datum,
          w_endda like sy-datum,
          w_begyr(4),
          w_endyr(4),
          w_currmon(2),
          w_assetclass like ankt-anlkl,
          w_price type p,
          w_recordsap type i,
          w_povtls(10),
          w_count type i.
    DATA:  w_filepath TYPE rlgrap-filename,
           w_rc TYPE sy-subrc,
           w_sscrfields_ucomm1   TYPE sscrfields-ucomm,
           w_file1 TYPE string,
           w_file2 TYPE FILENAME-FILEINTERN.
    *=====================================================================
                      C O N S T A N T S
    *=====================================================================
    CONSTANTS: c_x              TYPE  c         VALUE 'X',
               c_hyp            TYPE  c         VALUE '-',
               c_err            TYPE  bdc_mart  VALUE 'E'.
    CONSTANTS:  c_slash(1)            TYPE c VALUE '/',
                c_hash(1)             TYPE c VALUE '#',
                c_pipe                TYPE c VALUE '|',
                c_1                   TYPE i VALUE 1,
                c_zero                TYPE n VALUE '0',
                c_rg1(3)              TYPE c VALUE 'rg1',
                c_gr3(3)              TYPE c VALUE 'GR3',
                c_gr2(3)              TYPE c VALUE 'GR2',
                c_e(1)                TYPE c VALUE 'E',
                c_filepath(8)         TYPE c VALUE '/interf/',
                c_filetype(10)        TYPE c VALUE 'ASC'.
    CONSTANTS : c_bapimepoheaderx   TYPE x030l-tabname
                                   VALUE 'bapimepoheaderx',
               c_bapimepoitem      TYPE  x030l-tabname
                                   VALUE 'bapimepoitem',
               c_bapimepoaccount   TYPE  x030l-tabname
                                   VALUE 'bapimepoaccount',
               c_t_bapi_poheader(15)        TYPE c
                                            VALUE 't_bapi_poheader',
               c_t_bapi_poitem(13)          TYPE c
                                            VALUE 't_bapi_poitem',
               c_t_bapi_poitemx(14)         TYPE c
                                            VALUE 't_bapi_poitemx',
               c_t_bapi_poheaderx(16)       TYPE c
                                            VALUE 't_bapi_poheaderx'.
    CLASS cl_abap_char_utilities DEFINITION LOAD.
    CONSTANTS:con_tab  TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
    *======================================================================
                           SELECTION SCREEN
    *======================================================================
    SELECTION-SCREEN BEGIN OF BLOCK inputpath WITH FRAME TITLE text-001.
    SELECTION-SCREEN : BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    PARAMETERS : p_fore RADIOBUTTON GROUP rg1
                        USER-COMMAND pc,
                 p_back RADIOBUTTON GROUP rg1 DEFAULT 'X'.
    SELECTION-SCREEN : END OF BLOCK blk2.
    SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-003.
    PARAMETERS :  p_file1 LIKE rlgrap-filename OBLIGATORY MODIF ID gr2.
    PARAMETERS :  p_afile1 LIKE rlgrap-filename OBLIGATORY MODIF ID gr3.
    SELECTION-SCREEN : END OF BLOCK blk1.
    SELECTION-SCREEN END OF BLOCK inputpath.
    *C-- Initialization Event
    INITIALIZATION.
      CLEAR w_filepath.
      CONCATENATE c_filepath sy-sysid c_slash sy-mandt c_slash INTO
      w_filepath.
      CONDENSE w_filepath NO-GAPS.
      p_file1 = text-008.
      p_afile1 = text-009.
    *======================================================================
                           SELECTION SCREEN EVENTS
    *======================================================================
    *C-- Selection Screen Output
    AT SELECTION-SCREEN OUTPUT.
      IF p_fore = c_x.
        w_sscrfields_ucomm1 = space.
      ELSE.
        w_sscrfields_ucomm1 = c_rg1.
      ENDIF.
      LOOP AT SCREEN.
    *C--Modify selection screen if presentation
    *C--or application server radio button is chosen
        IF w_sscrfields_ucomm1 = space.
          IF screen-group1 = c_gr3.
            screen-active = c_zero.
          ENDIF.
        ELSE.
          IF screen-group1 = c_gr2.
            screen-active = c_zero.
          ENDIF.
        ENDIF.
        if screen-name = 'P_AFILE1'.
          screen-input = 0.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    *C-- Selection Screen VALUE-REQUEST FOR File path
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
      IF p_fore EQ c_x.
        CALL FUNCTION 'F4_FILENAME'
          EXPORTING
            program_name  = syst-cprog
            dynpro_number = syst-dynnr
          IMPORTING
            file_name     = p_file1.
      ENDIF.
    *C-- At Start of the Selection Process
    START-OF-SELECTION.
      IF p_fore EQ c_x.
        w_file1 = p_file1.
      ELSE.
        w_file2 = p_afile1.
      ENDIF.
      IF p_fore EQ c_x. " Presentaion Server
    *C--Validations for the input files
        PERFORM validate_pre_file USING p_file1.
    *C-- Load the contents of the input file into the internal table
        PERFORM upload_file TABLES t_flatfile_vtls
                            USING w_file1
                            CHANGING w_rc.
        IF w_rc <> 0.
          MESSAGE s006 DISPLAY LIKE c_e.
        ENDIF.
      ELSE. " Application Server
    *C--Validations for the input files
        PERFORM validate_app_file USING  w_file2.
    *C-- Load the contents of the input file into the internal table
        PERFORM upload_file_app TABLES t_flatfile_vtls
                                USING w_file2
                                CHANGING w_rc.
      ENDIF.
      loop at t_flatfile_vtls.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = t_flatfile_vtls-ebeln
          IMPORTING
            output = t_flatfile_vtls1-po.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = t_flatfile_vtls-ebelp
          IMPORTING
            output = t_flatfile_vtls1-item.
        append t_flatfile_vtls1.
        clear t_flatfile_vtls1.
      endloop.
      perform get_podata.
      loop at t_poheader.
        perform move_to_bapi.
        perform call_bapi.
      endloop.
      PERFORM STORE_MESSAGES TABLES T_MESSAGE.
    *&      Form  validate_pre_file
        Routine to validate presentation server file path.
         -->fp_name  text
    FORM validate_pre_file USING fp_name TYPE rlgrap-filename.
      DATA : l_result,
             l_filename TYPE string.
      l_filename = fp_name.
      CLEAR l_result.
      CALL METHOD cl_gui_frontend_services=>file_exist
        EXPORTING
          file                 = l_filename
        RECEIVING
          result               = l_result
        EXCEPTIONS
          cntl_error           = 1
          error_no_gui         = 2
          wrong_parameter      = 3
          not_supported_by_gui = 4
          OTHERS               = 5.
      IF sy-subrc <> 0.
        MESSAGE s007 DISPLAY LIKE c_e.
        LEAVE LIST-PROCESSING.
      ELSEIF l_result IS INITIAL.
        MESSAGE s008 DISPLAY LIKE c_e.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " validate_pre_file_hdr
    *&      Form  validate_app_file
          text - Checks if the path entered and filename is correct
    FORM validate_app_file USING  fp_file  TYPE FILENAME-FILEINTERN.
      data : l_fname(60).
      CALL FUNCTION 'FILE_GET_NAME'
        EXPORTING
          LOGICAL_FILENAME = FP_FILE
          OPERATING_SYSTEM = SY-OPSYS
        IMPORTING
          FILE_NAME        = L_FNAME
        EXCEPTIONS
          FILE_NOT_FOUND   = 1
          OTHERS           = 2.
      IF SY-SUBRC = '0'.
        OPEN DATASET  L_FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
        IF sy-subrc NE 0.
          MESSAGE s007 DISPLAY LIKE c_e.
        ELSE.
          CLOSE DATASET l_fname.
        ENDIF.
      ENDIF.
    ENDFORM.                    " validate_app_file
    *&      Form  upload_file
          Routine to upload data from file to tables.
         -->P_fp_flatfile
         -->P_fp_file
         <--P_fp_rc
    FORM  upload_file TABLES   fp_flatfile
                      USING    fp_file TYPE string
                      CHANGING fp_rc TYPE sy-subrc.
      IF fp_flatfile[] IS INITIAL.
        CALL FUNCTION 'GUI_UPLOAD'
          EXPORTING
            filename                = fp_file
            filetype                = c_filetype
            has_field_separator     = c_x
          TABLES
            data_tab                = fp_flatfile
          EXCEPTIONS
            file_open_error         = 1
            file_read_error         = 2
            no_batch                = 3
            gui_refuse_filetransfer = 4
            invalid_type            = 5
            no_authority            = 6
            unknown_error           = 7
            bad_data_format         = 8
            header_not_allowed      = 9
            separator_not_allowed   = 10
            header_too_long         = 11
            unknown_dp_error        = 12
            access_denied           = 13
            dp_out_of_memory        = 14
            disk_full               = 15
            dp_timeout              = 16
            OTHERS                  = 17.
        MOVE sy-subrc TO fp_rc.
      ENDIF.
    ENDFORM.  " upload_file
    *&      Form  upload_file_app
          text
         -->FP_FLATFILEtext
         -->FP_FILE    text
         -->FP_RC      text
    FORM  upload_file_app TABLES   fp_flatfile
                          USING    fp_file TYPE FILENAME-FILEINTERN
    CHANGING fp_rc TYPE sy-subrc.
      DATA: l_string TYPE tedata-data.
      DATA: wa_data_file TYPE tp_flatfile_vtls,
            l_wllength TYPE i,
            FNAME(60).
      CALL FUNCTION 'FILE_GET_NAME'
        EXPORTING
          LOGICAL_FILENAME = FP_FILE
          OPERATING_SYSTEM = SY-OPSYS
        IMPORTING
          FILE_NAME        = FNAME
        EXCEPTIONS
          FILE_NOT_FOUND   = 1
          OTHERS           = 2.
      IF SY-SUBRC = 0.
        OPEN DATASET  FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
        IF sy-subrc NE 0.
    *C-- commented by Bikash
         MESSAGE s107(yaero_ps) DISPLAY LIKE c_e.
          message e008.
        ELSE.
          DO.
            CLEAR: l_string.
            READ DATASET  FNAME INTO l_string LENGTH l_wllength.
            IF sy-subrc NE 0.
              EXIT.
            ELSE.
              SPLIT l_string AT con_tab INTO   wa_data_file-ebeln
                                               wa_data_file-ebelp.
              APPEND wa_data_file TO fp_flatfile.
            ENDIF.
          ENDDO.
          CLOSE DATASET  FNAME.
        ENDIF.
      ENDIF.
    ENDFORM.  " upload_file_app
    *&      Form  get_podata
          text
    form get_podata.
      select *
      into table t_update
      from zvtls_sap
      for all entries in t_flatfile_vtls1
       where itemvtls = t_flatfile_vtls1-item
      and povtls = t_flatfile_vtls1-po.
      sort t_update by posap itemsap.
      loop at t_update.
        at new posap.
          t_poheader-po = t_update-posap.
          append t_poheader.
          clear t_poheader.
        endat.
        t_poitem-po = t_update-posap.
        t_poitem-item = t_update-itemsap.
        append t_poitem.
        clear t_poitem.
        t_update-paedt = sy-datum.
        t_update-loekz = 'X'.
        modify t_update.
      endloop.
      modify zvtls_sap from table t_update.
    endform.                    "get_podata
    *&      Form  move_to_bapi
          text
    form move_to_bapi.
      t_bapi_poheader-po_number = t_poheader-po.
      CLEAR t_bapi_poheaderx.
      PERFORM fill_check_structure USING c_bapimepoheaderx
                                         c_t_bapi_poheader
                                         c_t_bapi_poheaderx
                                         c_x.
      refresh : t_bapi_poitem,t_bapi_poitemx.
      loop at t_poitem where po = t_poheader-po.
        clear t_bapi_poitem.
        t_bapi_poitem-po_item = t_poitem-item.
        t_bapi_poitem-delete_ind = 'X'.
        CLEAR t_bapi_poitemx.
        PERFORM fill_check_structure USING c_bapimepoitem
                                           c_t_bapi_poitem
                                           c_t_bapi_poitemx
                                           c_x.
        t_bapi_poitemx-po_item = t_poitem-item.
        t_bapi_poitemx-po_itemx = c_x.
        APPEND t_bapi_poitem.
        APPEND t_bapi_poitemx.
        clear t_bapi_poitem.
        clear t_bapi_poitemx.
      endloop.
    endform.                    "move_to_bapi
    *&      Form  call_bapi
          This form Routine is used to commit the data records
    FORM call_bapi .
      DATA : l_msgty      TYPE c,
             l_msgid(2)   TYPE c,
             l_msgno(3)   TYPE c,
             l_msgtx(100) TYPE c,
             l_errflag    TYPE c.
      CLEAR: t_bapireturn.
      REFRESH: t_bapireturn.
      CALL FUNCTION 'BAPI_PO_CHANGE'
        EXPORTING
          PURCHASEORDER = T_POHEADER-PO
          POHEADER      = T_BAPI_POHEADER
          POHEADERX     = T_BAPI_POHEADERX
        TABLES
          RETURN        = T_BAPIRETURN
          POITEM        = T_BAPI_POITEM
          POITEMX       = T_BAPI_POITEMX.
      READ TABLE t_bapireturn WITH KEY type = c_err TRANSPORTING NO FIELDS.
      IF sy-subrc NE 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = c_x.
      ENDIF.
    *C-- Write messages
      WRITE: / 'PO Number', t_poheader-po.
      clear : t_update,w_povtls.
      read table t_update with key posap = t_poheader-po.
      w_povtls = t_update-povtls.
      CLEAR l_errflag.
      LOOP AT t_bapireturn.
        CLEAR: l_msgty, l_msgid, l_msgno, l_msgtx.
        l_msgty = t_bapireturn-type.
        l_msgid = t_bapireturn-id.
        l_msgno = t_bapireturn-number.
        l_msgtx = t_bapireturn-message.
        WRITE: / l_msgty, l_msgid, l_msgno, l_msgtx.
        if l_msgtx cs t_poheader-po.
          w_count = w_count + 1.
          loop at t_update.
            if sy-tabix = w_count.
              t_message-item = t_update-itemvtls.
            endif.
          endloop.
        endif.
        t_message-msgty = l_msgty.
        t_message-msgid = l_msgid.
        t_message-msgno = l_msgno.
        t_message-msgtx = l_msgtx.
        t_message-po = w_povtls.
        append t_message.
        clear t_message.
        IF l_msgty EQ c_err.
          l_errflag = c_x.
        ENDIF.    " l_msgty EQ 'E'
      ENDLOOP.
      ULINE.
      IF l_errflag NE c_x.
        w_success = w_success + 1.
      ENDIF.    " l_errflag NE C_X
    endform.                    "call_bapi
    *&      Form  fill_check_structure
          This form Routine will check whether the specified structure
          exist/active
    FORM fill_check_structure  USING    fp_tabname TYPE any
                                        fp_orgtabname TYPE any
                                        fp_chktabname TYPE any
                                        fp_check TYPE c.
      FIELD-SYMBOLS : <fs_chk>, <fs_org>.
      DATA:    l_char1(61)  TYPE c,
               l_char2(61)  TYPE c.
      DATA:    BEGIN OF tl_nametab OCCURS 60.
              INCLUDE STRUCTURE x031l.
      DATA:    END OF tl_nametab.
      REFRESH tl_nametab.
      CALL FUNCTION 'RFC_GET_NAMETAB'
        EXPORTING
          tabname          = fp_tabname
        TABLES
          nametab          = tl_nametab
        EXCEPTIONS
          table_not_active = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
        CLEAR tl_nametab.
      ENDIF.
      LOOP AT tl_nametab.
        CLEAR: l_char1, l_char2.
        CONCATENATE fp_chktabname c_hyp tl_nametab-fieldname INTO l_char1.
        ASSIGN (l_char1) TO <fs_chk>.
        CONCATENATE fp_orgtabname c_hyp tl_nametab-fieldname INTO l_char2.
        ASSIGN (l_char2) TO <fs_org>.
        IF <fs_org> IS NOT INITIAL.
          <fs_chk> = fp_check.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " fill_check_structure
    *&      Form  STORE_MESSAGES
          text
         -->FP_MESSAGEStext
    FORM STORE_MESSAGES TABLES FP_MESSAGES STRUCTURE T_MESSAGE.
      DATA: wl_output_data LIKE t_MESSAGE.
      DATA: l_catstr TYPE string.
      DATA: l_fieldvalue TYPE string.
      DATA: l_index TYPE i VALUE 1.
      DATA: L_FNAME(60).
      FIELD-SYMBOLS <fs>.
      CLEAR l_catstr.
      CALL FUNCTION 'FILE_GET_NAME'
        EXPORTING
          LOGICAL_FILENAME = '/USR/SAP/VTLS/POCHANGE/LOG'
          OPERATING_SYSTEM = SY-OPSYS
        IMPORTING
          FILE_NAME        = L_FNAME
        EXCEPTIONS
          FILE_NOT_FOUND   = 1
          OTHERS           = 2.
      IF SY-SUBRC = '0'.
        IF fp_messages[] IS NOT INITIAL.
          OPEN DATASET L_FNAME FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
          IF sy-subrc NE 0.
            LEAVE LIST-PROCESSING.
          ELSE.
            LOOP AT fp_messages INTO wl_output_data.
              DO.
               ASSIGN COMPONENT l_index OF STRUCTURE wl_output_data TO <fs>.
                IF sy-subrc <> 0.
                  EXIT.
                ENDIF.
                MOVE <fs> TO l_fieldvalue.
                IF l_catstr IS NOT INITIAL.
                  CONCATENATE l_catstr l_fieldvalue INTO l_catstr SEPARATED
                  BY con_tab.
                ELSE.
                  MOVE l_fieldvalue TO l_catstr.
                ENDIF.
                l_index = l_index + c_1.
                CLEAR l_fieldvalue.
                CLEAR <fs>.
              ENDDO.
              l_index = c_1.
              TRANSFER l_catstr TO L_FNAME .
              CLEAR wl_output_data.
              CLEAR l_catstr.
            ENDLOOP.
            CLOSE  DATASET L_FNAME.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    "STORE_MESSAGES

  • Modifications in Planning tables

    Hi,
    On one of our project, we need to add an UDA on some members of a Planning application. We decided to go with an insert of data in the table “HSP_MEMBER_TO_UDA”, with the right MEMBER_ID from “HSP_OBJECT” and the right UDA_ID from “HSP_UDA”. It works perfectly, the table was modified, the data were correct but the modification didn’t show in planning when trying to retrieve information for theses members … After some times, it finally shows in Planning.
    My question is : Is there a buffer used by planning while retrieving data from tables ? Why is there a lag between the content of tables and the information displayed in Planning ?
    Thanks in advance for your answers :)
    Frédéric

    Hi John,
    You are right, we could have used outlineload to update the members.
    The full story is that our client need to be able to send specific data from an application to another. So, we develloped a webform in which he can flag the member he want to extract, we export the list of these flagged members (dataexport) and then use a PL/SQL procedure to parse the extract and update the Planning tables with a "active" UDA. At the end, our client is able to extract all data from the members he want (dataexport in a FIX with @UDA).
    PS : We could not use DATAEXPORTCOND as the flag are not on the same crossing as the data.
    So, we had the choice with our PL/SQL procedure : generate a file to update members with outlineload or modify the planning tables. The last option seems the easiest.
    Is that more clear ?
    Frédéric

  • Finding out modifications on a table or object

    Let's say, somebody modified a table in OCL schema, but s/he had forgotten which table was modified and what was modified.
    How would you find out about it?

    which table: Last_ddL_time in user_objects
    what: i don't know
    future solution
    create triggers on new ddl events (before/after create/alter/drop on database) to record such changes
    look into docs for more information

  • How to get the last modifed time for table & its constraints

    Hi All,
    I have table. I want to know when it is modified last. Actually few constraints are added to the table. I want to find out when the constraints are added to the Table.
    I am using Oracle 9. Could you help me out plz.
    Regardds
    Ashish Mishra

    Check LAST_DDL_TIME from USER_OBJECTS, and LAST_CHANGE from USER_CONSTRAINTS.

  • How to load the .xml file list from 'C:\Drag_list\Modif into xmltype table?

    Hi all experts,
    I am in Oracle Enterprise Manager 11g 11.2.0.1.0.
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 22 11:40:23 2011
    is there anyone know why
    SQL> create or replace directory XMLDIR as '/xdb/faq/testdata'
    2 /
    SQL> set long 10000 pages 200 lines 150
    SQL> --
    SQL> select xmltype(bfilename('XMLDIR','2003.xml'),nls_charset_id('AL32UTF8'))
    2 from dual
    worked. but
    SQL> create or replace directory XMLDIR as 'C:\Drag_list\Modified';
    SQL> select xmltype(bfilename('XMLDIR','2011.xml'),nls_charset_id('AL32UTF8'))
    from dual
    did not work?
    IS there any way I can load the .xml file list from 'C:\Drag_list\Modified' into xmltype table?
    Thanks.
    Edited by: Cow on Apr 13, 2011 12:58 AM

    This is a question better suited for the sql and pl/sql support forum, since it is NOT an APEX based question..: PL/SQL
    Thank you,
    Tony Miller
    Webster, TX
    On the road of life...There are 'windshields', and there are 'bugs'
    (splat!)
    "Squeegees Wanted"
    If this question is answered, please mark the thread as closed and assign points where earned..

  • Add an index to a DB table without modification?

    I have a database table in the SAP namespace, and I would like to add one or two indices to the table (non unique database index). This is not possible without modifying the table, right?

    Hi Daniel,
    No it wouldnt be a modification to the table but you should first analyze the impact of the index since its not advisable to create index always.
    refer the below link:-
    [Create index in standard table;
    [What to Keep in Mind for Secondary Indexes|http://help.sap.com/saphelp_nw04/helpdata/en/cf/21eb2d446011d189700000e8322d00/content.htm]
    Regards
    Abhii
    Edited by: Abhii on Sep 1, 2010 3:49 PM

  • Server not recognizing table modifications

    I'm using SQL Server with Jakarta's DBCP for connection pooling and a JTDS database driver.
    Here is my problem: When I make modifications to a table (i.e. change table or column name), my application doesn't pick up the changes.
    Tomcat keeps on giving me the following error: "Invalid column name".
    I tried using the same SQL SELECT statement directly in the database console, it worked fine with no problem.
    Any ideas?

    I don't think its a tomcat issue.
    Someone here was suggesting, the problem lies in the was I made the modifications to the table.
    When I changed the column name in the table, I didn't drop the table and recreate it, but rather I did it through SQL Server's design console. Perhaps when I made those changes, it didn't update all the database's system tables properly.
    I will try to drop it and recreate it.

  • Form does not display all records from table

    Hi guys
    I modified one form that was based on a signle DB table. I removed certain fields from the table and added some extra fields to that table. Then based on the new table I also modified the form and removed the text items related to old fields in the table and added new text items pointing to the new fields now. II have checked all the new items properties and they have don't seem to be wrong or so. But now the problem is the form does not display all the records from the table. before it used to display all records from the table when qureied but not now. It only certain records from the table containing all new data and also old data but the form does not display other records though I don't see any obvious discrepancy. Remember that the before doing the modifications, I have table back for the old, created another table that contained new records for the new fields, and then I inserted the old records and updated the new table data in the new table with these new table values. So this way I have got my new table. Could someone help why the new modified form fails to display all records from the new table updated table though it display some of them successfully.
    Any help will be appreciated.
    Thanks

    hi
    Set the block property of "Query All Records" to "YES"
    hope it will work.
    Faisal

  • ORA-00054 error when loading Oracle table using Data Services

    Hello,
    we are facing ORA-00054 error when loading Oracle table using BO Data services
    (Oracle 10g database, BODS Xi 3.2 SP3)
    Test Job performs
    1- truncate table
    2- load table (tested in standard and bulk load modes)
    Scenario when issue happens is:
    1- Run loading Job
    2- Job end in error for any Oracle data base error
    3- When re-running the same Job, Job fails with following error
         ORA-00054: resource busy and acquire with NOWAIT specified
    It seems after first failure, Oracle session for loading the table stays active and locks the table.
    To be able to rerun the Job, we are forced need to kill Oracle session manually to be able to run the Job again.
    Expected behaviour would be : on error rollback modifications made on table and BODS stops Oracle session in a clean way.
    Can somebody tell me / or point me to any BODS best practice about Oracle error handling to prevent such case?
    Thanks in advance
    Paul-Marie

    the ora-0054 can occure depending how the job failed before. If this occures you will need the DBA to release the lock on the table in question
    Or
           AL_Engine.exe on The server it creates the Lock. Need to Kill Them. Or stop it..
    This Problem Occurs when we select The Bulkloading Option in orclae  We also faced the same issue,Our admin has Killed the session. Then everything alright.

  • How to find out who created a custom table

    I have searched the forum but didn't find an answer so thought I would put it out here.
    I have a bunch of custom tables that have been created and not assigned to table groups. Some are SM30 wrappers and some aren't. They are all defaulted to &NC& which is a no-no to assign to roles. My question is, how can I see who created these tables so that I can contact them and educate them on table groups? I can't seem to figure this out.
    For instance, I have a custom t-code that calls a custom view and the view is assigned to &NC& in TDDAT.
    Any help appreciated

    Bobbi,
    Try SE15->ABAP Dictionary->Database Tables->"enter table name" and execute->select table and view->Attributes Tab->Last changed on/by.  Field "Last changed on/by" will give you an idea who the last user that made modification on this table.
    Good Luck
    -John N.

  • Entries in table CDHDR for transaction MM02 missing after upgrade to ECC6.0

    Hi,
    I am supporting a client who has just performed an upgrade from 4.7 to ECC6.0 on their test system.  We try and use transaction MM04 (display material master changes) or MM02 and view changes to the material master but there are no entries.
    During the upgrade, the entries for transaction code MM02 in table CDHDR have been lost.  Can anybody give me assistance on how to avoid this when performing the production upgrade, or even better, is there any way to get these entries back?
    Thank you.
    Sharon.

    That shouldn't happen - entries shouldn't get lost.
    Is there anything in the CDHDR table (by browsing it with SE16)? If not, then something went wrong during the upgrade....
    Have there been modifications to the table? Is the the table active in SE11?
    Markus

  • What is the easiest way to export all tables data from Oracle to MS SQL Server?

    Hello MS,
    I would like to export all tables from Oracle 11.2 to MS SQL Server 2012 R1.
    Using the tool "Microsoft SQL Server Migration Assistant v6.0 for Oracle" did not work for me because there are too many warnings and errors regarding the schema creation (MS cannot know it because they are not the schema designer). My idea is
    to leave/skip the schema creation to the application designer/supplier and instead concentrate on the Oracle data export and MS SQL data import.
    What is the easiest way to export all tables data from Oracle to MS SQL Server quickly?
    Is it:
    - the „MS SQL Import and Export Data“ Tool
    - the “MS SQL Integration Services” Tool
    - not Oracle dump *.dmp format because it is a propritery binary format
    - flat file *.csv (delimited format)
    Thanks!

    Hi lingodingo,
    If you want to directly export all tables from Oracle database to SQL Server, I suggest you use SQL Server Import and Export Wizard. Because you just need to follow the wizard with GUI, this is the easiest way.
    If you want to make some modification for the tables‘ data before loading to SQL Server, I suggest you use SQL Server Integration Services package. For more details, please refer to the following similar thread:
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/38b2bed2-9d4e-48d4-a33f-1d9eed1c062d/flat-file-to-sql-server?forum=sqldatamining
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Software Component Vector in Modification Adjustment Transport

    Hello all,
    We are in the middle of a support pack project for our SRM system, and I've run into a snag as I prepare to move them into QAS.  We've had this system for many years, and when DEV was originally installed in 2000 it was as a B2B 2.0a system.  It was upgraded to 2.0b before GoLive, and the QAS and PRD systems were installed directly as 2.0b systems.  The entire landscape has been upgraded several times in the twelve years since, and today it is on release SRM 5.0.
    The problem is that the DEV system still shows an installed software component of NDI_ERM (Extended Relationship Management) in release 20A.  Obviously that is actually long gone, but it still shows up in SPAM in the Display Package Level function, and under Attribute SAPCOMPONENT in the properties of all transport requests released from this system.  It should have been passively deleted during the first (or subsequent) upgrade long ago, but for whatever reason that didn't happen.  This software component never existed in QAS or PRD and does not show up in SPAM in those systems.
    This hasn't been an issue in the past, and so I've just ignored it as I always had bigger fish to fry.  I've performed upgrades and support packages for these systems without an issue, but we hadn't done any of these tasks for the past three years.
    Until now.
    I successfully installed support package stack 28 for SRM 5.0 into DEV a few months ago, and I performed the required modification adjustments in SPAU, creating the usual modification adjustment transport.  Now, however, when I am trying to import the support packs into QAS, I have a problem when defining the queue, at the step for adding the modification adjustment transport.  The transport is marked with a Software Component Vector that includes the defunct ghost NDI_ERM 20A, and NDI_ERM doesn't exist in QAS.  SPAM finds the transport, but marks it with a red light ("Transport does not fit").  Drilling into details shows me that everything matches perfectly except for my ghost.  On that line I get "The software component is not installed," and SPAM will not allow me to add the transport into the queue.
    I should point out that I can import regular transports just fine, and I'm pretty sure I could just import the queue without the modification adjustment transport, and then import it manually when SPAM gets to the step about performing the adjustment.  No doubt that would work, and that's almost certainly what I'm going to end up doing.  But it bugs me that I can't fix this.
    I have some thoughts about fixes that might work, and I'd like input on whether anyone else has dealt with (and solved) this problem before.
    I think that I could probably just delete the line in DEV in table CVERS for NDI_ERM and so have it no longer show up in the attributes of future transports.  That might solve the problem going forward, though it won't fix the mod adjust transport I've already released.  Any thoughts about this?
    I was able to get the existing transport to no longer show NDI_ERM in its attributes by deleting the appropriate line in DEV in table E070A.  After doing that the transport looked fine in the STMS queue for QAS when drilling into its properties.  However, this apparently isn't enough for SPAM.  As I had already uploaded the transport in SPAM once, SPAM 'remembers' it and seems to have therefore cached its properties, including the NDI_ERM software component.  I haven't been able to figure out how to get SPAM to 'forget' this transport so I could completely upload it anew and hopefully get new attributes that will then match the correct software component vector for the target system.  Resetting the queue status doesn't do it.
    Any thoughts on where (what tables) SPAM stores information about modification adjustment transports, and how to clear that information out?  Any thoughts on the (admittedly drastic) measures I've mentioned above?
    Thanks in advance,
    --Matt

    Hello,
    SAP strictly forbids the modification of those tables for specific Add-Ons or even essential software component. As you do not really delete those products from a SAP system. This will only partially remove meta information from a SAP sytem.  After the "reinstallation" the data and many other log files are still exists and may have some really inconvenient side effects in a SAP systems (inconsistent installation, incomplete database table conversion, problems regarding maintenance via notes and support packages, modifications cannot be reverted...) .
    Additionaly it will be very difficult or even impossible to resolve upgrade or maintenance issues.
    If you have any  issue regarding an installation of a SAP product, you should contact the corresponding SAP support. They will provide you the right solution. 
    Currently SAP only provides for a small subset of Add-Ons the deinstallation.
    Thanks a lot for your understanding
    with kind regards,
       Thorsten Scheyter  (Development support)

Maybe you are looking for

  • PixelBender / possible to have optionals inputs ?

    Hi, i m just testing pixel bender and i 'd like to know if it's possible to set input image4 as optional argument (i didn't see that in pixel bender's doc). The effect i want to have is to composed an output from multiple sources ( couples of RGB + z

  • Show Section/Level 1 Outline Title when Scrolling in iOS Pages

    To make this a bit clear I would like to refer to scrolling in iBooks. When you swipe the scroll bar you will see the title of the chapters (sections) of the book above the tip of your finger. I would like to see same effect/feature of this in Pages.

  • Lot not show in MMBE quality insspection

    Dear expert i make planing for halb material  against 04 origin and also active inspection 04 or lot will be generated against 101 movement type. Now lot will be show on QA32 but not shown in MMBE in Quality inspection its quantity show only unrestri

  • Error in Master Group creation

    Hi Mahantesh Here, In Master Data while creating Company code data  & account Management tab page in that Reconcilation account option i m not getting what to enter there. Its not accepting any value there like 140000, Pls help me.

  • Accessing CSS Stylesheets - facelets - different folders

    Problem: facelets not located in the root folder are unable to reference the project css file. I have a facelets template: layout.xhtml in my WEB-INF folder. When I reference the template from a .xhtml page in the root directory the css file is found