From S01 in MI 7.0 to T51 in MI 7.1

Hi, i have now an application wih S01 and MI 7.0... if i pass to MI 7.1, what have i do with the syncbo? All have be T51 no? Are there any guide for pass S01 MI 7.0 to T51 MI 7.1? Is the same in MI 7.0 or is more easy?
Thanks,

Hi Victor,
To answer your question: yes, it is required to change S01 to T01 (which are still supported) or better T51s if you want to utilise all the new features of MI7.1 and make your mobile devices "fast and furious".
T51s are relying on BTEs (which stands for Business Transaction Events) so that backend can notify middleware about object change and send its key to table MEREP_DELTABO.
SAP provides a number of BTEs for major obects, like order, or notif, or equipment, etc. When BTE is activated it is called when objetc it is attached to is saved. Mobile app devloper has to provide an implementation of BTE to specify what are the conditions that backend has to notify middleware.
For example, when in MAM when notification is saved a logic will be kicked by BTE that if this equip,ment is within MAM variant for equipments replication, backend notifies middleware about this equipment change.
You obviously have to design your own logic for your app.
Document that Oliver has sent to you can be used a good start on how code should look like.
Regards,
Larissa Limarova

Similar Messages

  • Flashback Recovery area Full in Oracle 10g

    Before the flashback recovery area is full our
    Archive destination is USE_DB_RECOVERY_FILE_DEST
    Our DB_RECOVERY_FILE_DEST =/S01/app/oracle/flash_recovery_area/
    We got the Error:- ORA-00257
    Inorder to resolve the error we changed the log_archive_dest_1='/S01/app/oracle/db/archive'
    now the archive destination is changed to /S01/app/oracle/db/archive
    Archive logs getting generated in the above directory from now onwards.
    In the mean time i moved all the files from /S01/app/oracle/flash_recovery_area/
    to diff directory.
    But the below query gives still the space used is 3935.27 MB, where physically there are no files in /S01/app/oracle/flash_recovery_area/
    When will these values in the query update. Is there anything i have to do to reclaim the space 3935.27 MB (in the query below). Now after reclaiming the space, i want to use the Flash Back Recovery area (/S01/app/oracle/flash_recovery_area/) for the archive logs, like a switchback to where we are initially. How to reclaim the space ? How to switch back archive logs to Flash Back Recovery Area (/S01/app/oracle/flash_recovery_area/).
    Please the below report for the above conversation.
    Sat May 20 page 1
    Flash Recovery Area Status
    Space Space Reclm
    Limit Used Space
    File Name (MB) (MB) (MB) Files
    /S01/app/oracle/flash_recovery_a 4000.00 3935.27 3935.27 90
    rea
    Experts share your experience. Appreciate your reply in this regard..........
    Thanks

    In UNIX style environments you often don't see reclaimed space until the database is restarted. Backup the database and archivelogs and the flashback area shoudl take care of itself in future. If not, you can always delete obsolete archivelogs manually by using the DELETE command in RMAN.
    To cleanup now, first you must tell RMAN that the files you've moved are no longer available:
    crosscheck archivelog all;
    You can then delete the obsolete archivelogs using the following RMAN command:
    delete obsolete;
    I'm assuming you use RMAN for all your backups :)
    Cheers
    Tim...

  • Need help in ALE configuaration !

    Please send me an example of how to create an ALE configuaration with in one client !

    HI,
    What is ALE?
    ALE stands for Application Link Enabling and is a remote connection technology allowing the decentralization of business processes by connecting decentralized systems together.
    Using ALE, it is fairly easy to synchronize several SAP systems so that they contain the same data objects at anytime. These objects may be master data (customers, vendors, GL accounts, cost centers, ...) or transaction data (FI documents, purchase orders, ...). To enable the synchronization, ALE supports not only mass transfer of data between systems but also selective data transfers of objects changed since the last transfer.
    How does it work?
    Viewed from a high level perspective, the process is straight and simple: a sender system selects the data that needs to be distributed, packs it in a standard format and sends it to one or several receiving systems. When a receiving system gets the data, it unpacks the standard format and records the data.
    In fact, 3 layers are involved in this process:
    An application layer which selects and records data in R/3.
    A distribution layer which filters and converts data.
    A communication layer which ensures the actual communication of records generated in a standard format.
    The senders and receivers are determined thanks to a so-called distribution model which defines the transfer rules (who sends what to who?). The definition of the distribution model must be known by all systems involved (either as sender or receiver) and must consequently exist on all those systems.
    The Intermediate Document (IDoc)
    The data transferred using ALE must have a SAP standard format to be understood from all partners in the communication. This format is the Intermediate Document (IDoc) which represents an intermediary structure between raw SAP data and EDI formats. This structure is not constant, it depends on the data to be transferred and SAP provides the structures for most SAP standard objects such as customers master data, sales orders, ...
    An IDoc with a specific structure is said to have a specific type. The IDoc type is nothing more than a version of a specific IDoc structure designed to contain data for a specific object type. For example, the IDoc type DEBMAS05 is the fifth version of a structure that represents a customer master data. The management of versions for IDocs structures is necessary because the objects evolve with time and tend to become more and more complex with new data fields or tables being added regularly.
    The conversion of raw data forth (for the sender system) and back (for the receiver system) to the IDoc format is also ensured by SAP standard function modules as long as you transfer standard objects. For non standard objects (enhancements), you must define your own IDoc structure and write your own conversion function modules.
    RFC connections
    The data communication between the SAP servers may be done by several ways. The 2 most common ways are the transactional RFC and the file. The RFC connection is used to make a direct connection between servers while the file interface speaks for itself, it uses a file containing the IDocs from the sender system as input in the receiver(s) system(s).
    The selection of a communication method is made though the ports configuration as we will see in the next section. For the purpose of this article, we are going to choose the most efficient method: the transactional RFC method. To set it up, we first need to define the RFC destinations of the partner systems.
    An RFC destination may be seen as a set of settings necessary to connect to a system using the RFC protocol. These settings include the address and type of the partner system along with connection information such as the user ID and password to use.
    The RFC destinations of all partners systems must be defined on all systems to include in the distribution model. The transaction to use for this purpose is SM59.
    Definition of the communication ports
    The communication ports determine the type of data communication that must occur between systems. When the communication is to use the RFC protocol, transactional RFC ports must be created specifying the RFC destinations of the partner systems. Use transaction WE21 for this purpose.
    Partners profiles
    In SAP, all partners systems involved in a distribution model have a profile. There exist several profile types such as customers profiles, vendors profiles, ... but this distinction between profiles is generally not necessary and you will create in most cases your partners profiles using a generic Logical System type.
    Before entering the settings of the logical systems partners, you have to create them in customizing. Also, each system in the distribution model must be assigned in its own system its own logical system that represents it. This assignment is done at client level and not at system level. This is not easy to explain nor to understand so let's take a simple example. Let's consider we have a simple distribution model made up of a sender system (S01) and a receiver system (R01). We need to transfer data from S01 / client 100 to R01 / client 200. In both the systems, we will define the logical systems S01_100 and R01_200. But in sender system S01, the logical system S01_100 will be assigned to the client 100 while in the receiver system R01, it will be R01_200 that will be assigned to client 200. With such a configuration you see it is even possible to transfer data between two clients from the same system.
    A partner profile is used to determine a lot of important settings that will be involved in the data transfer. These settings vary depending on the role of the partner system (sender / receiver) and are defined per message type. A message type is more or less a version independent IDoc type. It is mainly a convenient way of defining settings and identifying IDocs using a criterium independent of the partner system.
    For a sender partner system (inbound parameters are filled in), following important settings are set per message type in the partner profile:
    A process code used to indicate which function module will be used to convert the IDoc data to SAP data.
    The time of input of the IDoc: as soon as the IDoc is created in the system or on request (using program RBDAPP01).
    The post processing agent who will have to treat the data input errors if need be. The post processing agent may be either a user or any other HR organizational unit.
    For a receiver partner system (outbound parameters are filled in), following settings are specified in the partner profile:
    The receiver port to which the data will be sent.
    The sending method: one IDoc at a time or by packets.
    The IDoc type that will be sent to that partner. For a given message type, the IDoc type sent may vary depending on the receiver system. Indeed you may have different versions of SAP in your system landscape.
    Definition of the distribution model and data filtering
    We have already seen that the distribution model is used to decide who sends what to who. But, as you guessed, there is a little bit more to be said about it and the way to manage it.
    The distribution model is maintained in a central transaction (BD64) which lets you access the most useful environmental settings necessary to set up the model. Before creating the model, you must first decide on which system you are going to create it. Indeed the model must exist in all partners systems and two possibilities exist to achieve this.
    Either you create the model on each system manually (with the same model technical name), which is feasible only with few systems and/or simple models. Either you create it in a specific system (usually the source system) and distribute it to the other systems thanks to the distribution command in the BD64 transaction menu.
    If we want to copy the customers master data from the production system to the other systems in the maintenance line for example, we may create the distribution model on the production system and distribute it to all partners systems.
    The actual creation of the model requests that you mention a technical name for the model (unique identifier in the systems landscape), a sender system, a receiver system and message types to exchange between those systems. You may afterwards add more sending and receiving systems in the model as well as more message types.
    For each message type defined between a sender and a receiver, you may set filters on specific fields of the message type so that IDocs be generated only when these specific values are matched. For example, you may decide to send only customers of a specific account group. These filters are set by selecting the 'no filter set' text under message types in BD64.
    There exists also another kind of filters which are segments filters. They do not filter IDocs creation based on values like we have just seen but filter unconditionally segments of created IDocs which must be excluded from the transfer (transaction BD56).
    This article will help you understand the basics of ALE and IDocs via a simple do-it-yourself example. We will create a custom IDoc in one SAP system and then post some business data through it to another SAP system. Business data will be picked up from custom data dictionary tables.
    ALE – Application Link Enabling is a mechanism by which SAP systems communicate with each other and with non-SAP EDI subsystems. Thus it helps integration of distributed systems. It supports fail-safe delivery which implies that sender system does not have to worry about message not reaching the source due to unavoidable situations. ALE can be used for migration and maintenance of master data as well as for exchanging transactional data.
    The messages that are exchanged are in the form of IDocs or Intermediate Documents. IDocs act like a container or envelope for the application data. An IDOC is created as a result of execution of an Outbound ALE. In an Inbound ALE an IDOC serves as an input to create application document. In the SAP system IDocs are stored in the database tables. They can be used for SAP to SAP and SAP to non-SAP process communication as long as the participating processes can understand the syntax and semantics of the data. Complete documentation on IDOC is obtained by using transaction WE60.
    Every IDoc has exactly one control record along with a number of data records and status records. Control record has the details of sender/receiver and other control information. Data records contain the actual business data to be exchanged while the status records are attached to IDoc throughout the process as the IDoc moves from one step to other.
    Now, let us understand the ALE Configuration by means of an example scenario below:
    The Scenario
    Data from custom tables (created in customer namespace) is to be formatted into an IDoc and sent from one SAP R/3 system to another using ALE service. We need to have two instances of SAP R/3 systems or we can simulate this on two clients of the same SAP R/3 system.
    Create three tables as shown below.
    Creating Custom IDoc type and Message type
    All the objects created should be present on both source as well as target system(s).
    1. Create segments – Transaction WE31
    Create a segment ZRZSEG1
    Add all fields of table ZCUSTOMERS to it
    Save the segment
    Release it using the menu path Edit -> Set Release
    Similarly create two more segments given below
    Seg. ZRZSEG2 – to hold all fields of table ZSOHEADERS
    Seg. ZRZSEG3 – to hold all fields of table ZSOITEMS
    2. Create Basic IDoc type – Transaction WE30
    Create a Basic type ZRZORDER
    Add the created segments in the hierarchy shown
    Maintain attributes for each of the segments
    Save the object and go back
    Release the object using the menu path Edit -> Set Release
    3. Create/Assign Message type – Transactions WE81/WE82
    Go to WE81
    Create a new Message type ZRZSO_MT
    Save the object
    Go to WE82 and create new entry
    Assign the message type ZRZSO_MT to the basic type ZRZORDER
    Also specify the Release Version
    Save the object
    Thus we have defined the IDoc structure which will hold the data to be transferred. In the [1] next part of the article we will understand the outbound settings, i.e. the settings to be done in the source system.
    Outbound Settings
    Define Logical Systems and Assign Client to Logical System – Transaction SALE
    Go to Define Logical System (See the figure)
    Define a new logical system to identify the local system and save it
    Now, go to Assign Client to Logical System (See the figure)
    Add a new entry
    Specify the client, previously created logical system and other attributes
    Save the entry
    Define a new logical system to identify the partner system and save it
    Maintain RFC Destinations – Transaction SM59
    Create a new RFC destination for R/3 type connection
    Specify the target host on Technical settings tab
    Provide the Logon credentials on the Logon/Security tab
    Save the settings
    To verify the settings, Click on Test connection or Remote logon
    Define Ports – Transaction WE21
    We need to define a tRFC port for the partner system
    Click on Transactional RFC node
    Create a new port
    Provide a description
    Specify the name of the target RFC destination
    Save the object
    Maintain Distribution Model – Transaction BD64
    Click on Change
    Create a new model view
    Provide a Short text and Technical name to the model view
    Add message type
    Specify sender and receiver systems
    Also, specify the message type that we created previously
    Save the Distribution model
    Generate/Create Partner Profile – Transactions BD82/WE20
    To generate Partner profiles automatically you may use BD82 or go to BD64 and use the menu path Environment -> Generate partner profiles
    Otherwise, you may use transaction WE20 to create a partner profile
    On selection screen, specify the model view, target system and execute
    The result log will be displayed on the next screen
    To verify the partner profile go to WE20
    Check the partner profile for the target system
    Distribute Model View – Transaction BD64
    Select the Model View
    Go to menu path Edit -> Model View -> Distribute
    Result log will be displayed on the next screen
    Outbound IDoc Generation Program
    Create an executable program ZRZ_ORDER_IDOC in SE38. Below, I have described the program logic:
    Fetch the data from the DDic tables ZCUSTOMERS, ZSOHEADERS and ZSOITEMS as per the selection criteria
    Fill the control record structure of type EDIDC
    Specify message type, Basic IDoc type, tRFC Port, Partner number and Partner type of the receiver
    Fill the data records
    Define structures like the IDoc segments
    Fill the structures with fetched data
    Pass the segment name and the above structure to the appropriate fields of EDIDD type structure
    Append the EDIDD structure to the EDIDD type internal table
    Now, call the function module MASTER_IDOC_DISTRIBUTE and pass the IDoc control record structure and data record table
    Commit work if return code is zero
    Function module returns a table of type EDIDC to provide the details about generated IDoc
    Display appropriate log
    You can [2] download sample code for the above program here.
    Thus we have completed sender side configuration required for ALE. In the [3] next part we will see how to configure the receiving system to be able to receive and post the inbound IDoc.
    Inbound IDoc Posting Function Module
    In the receiving system, create a function module Z_IDOC_INPUT_ZRZSO_MT using SE37. Below, I have described the logic for the same.
    Add Include MBDCONWF. This include contains predefined ALE constants.
    Loop at EDIDC table
    Check if the message type is ZRZORDER. Otherwise raise WRONG_FUNCTION_CALLED exception
    Loop at EDIDD table
    Append data from the segments to appropriate internal tables
    For example: append data from ZRZSEG1 segment to the internal table of type ZCUSTOMERS
    Update the DDic tables from internal tables
    Depending on the result of the update, fill the IDoc status record (type BDIDOCSTAT) and append it to the corresponding table.
    Status 53 => Success
    Status 51 => Error
    You can [3] download the sample ABAP code for the above function module here.
    Inbound Settings
    Define Logical Systems – Transaction SALE (Please refer to Outbound Settings discussed in [4] previous part)
    Assign Client to Logical System – Transaction SALE (Please refer to Outbound Settings discussed in [5] previous part)
    Maintain RFC Destinations – Transaction SM59 (Please refer to Outbound Settings discussed in [6] previous part)
    Define Ports – Transaction WE21 (Please refer to Outbound Settings discussed in [7] previous part)
    Generate/Create Partner Profile – Transactions BD82/WE20 (Please refer to Outbound Settings discussed in [8] previous part)
    Assign Function Module to Logical message – Transaction WE57
    Create a new entry
    Specify name of the Function Module as Z_IDOC_INPUT_ZRZSO_MT
    Also, specify Type as F, Basic IDoc type as ZRZORDER, Message type as ZRZSO_MT and Direction as 2 (Inbound)
    Save the entry
    Define Input method for Inbound Function Module – Transaction BD51
    Create a new entry
    Provide Function Module name as Z_IDOC_INPUT_ZRZSO_MT
    Specify the Input method as 2
    Save the entry
    Create a Process Code – Transaction WE42
    Create a new Process Code ZPCRZ
    Select Processing with ALE Service
    Choose Processing type as Processing by function module
    Save the entry
    On the next screen, select your function module from the list
    Save the changes
    Now you will be taken to the next screen
    Double-click on Logical message
    In the Assignment to logical message, specify the message type ZRZSO_MT
    Save the changes
    Send and receive data
    On the sender system, execute the IDoc Generation Program. Check the status of IDoc using transaction WE02.
    Check the status of the IDoc in the receiver system using transaction WE02. You can also check the contents of DDic tables to make sure that the records have been created in the receiver system.
    Thus to summarize we have learned how to:
    *& Report  ZRZ_ORDER_IDOC                                              *
    REPORT  ZRZ_ORDER_IDOC                          .
    PURPOSE OF REPORT *
    Generats an Idoc for Customer Master, Sales Master
    and Sales item table.
    TABLES : ZCUSTOMERS, "Cutomer Header
             ZSOHEADERS, "Sales Header
             ZSOITEMS. "Sales Items
    DATA : S_CTRL_REC LIKE EDIDC, "Idoc Control Record
           S_ZRZSEG1 LIKE ZRZSEG1, "CUSTOMER Header Data
           S_ZRZSEG2 LIKE ZRZSEG2, "SALES HEADER Data
           S_ZRZSEG3 LIKE ZRZSEG3. "SALES Detail Data
    DATA : T_ZCUSTOMERS LIKE ZCUSTOMERS OCCURS 0 WITH HEADER LINE.
    DATA : T_ZSOHEADERS LIKE ZSOHEADERS OCCURS 0 WITH HEADER LINE.
    DATA : T_ZSOITEMS LIKE ZSOITEMS OCCURS 0 WITH HEADER LINE.
    DATA : T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE."Data Records
    DATA : T_COMM_IDOC LIKE EDIDC OCCURS 0 WITH HEADER LINE.
    "Generated Communication IDOc
    CONSTANTS :
    C_ZRZSEG1 LIKE EDIDD-SEGNAM VALUE 'ZRZSEG1',
    C_ZRZSEG2 LIKE EDIDD-SEGNAM VALUE 'ZRZSEG2',
    C_ZRZSEG3 LIKE EDIDD-SEGNAM VALUE 'ZRZSEG3'.
    CONSTANTS: C_IDOCTP LIKE EDIDC-IDOCTP VALUE 'ZRZORDER'.
    Selection Screen
    SELECT-OPTIONS : S_KUNNR FOR ZCUSTOMERS-KUNNR OBLIGATORY,
                     S_VBELN FOR ZSOHEADERS-VBELN.
    PARAMETERS :  C_MESTYP LIKE EDIDC-MESTYP DEFAULT 'ZRZSO_MT',
                  "Message Type
                  C_RCVPRT LIKE EDIDC-RCVPRT DEFAULT 'LS',
                  "Partner type of receiver
                  C_LOGSYS LIKE EDIDC-RCVPRN DEFAULT 'Y901',
                  C_RCVPOR LIKE EDIDC-RCVPOR DEFAULT 'A000000226',
                  C_SNDPRN LIKE EDIDC-SNDPRN DEFAULT 'LSSENDS',
                  C_SNDPRT LIKE EDIDC-SNDPRT DEFAULT 'LS'.
    "Destination System
    ***START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM GENERATE_DATA_RECORDS.
      PERFORM GENERATE_CONTROL_RECORD.
      PERFORM SEND_IDOC.
    *&      Form  generate_data_records
    FORM GENERATE_DATA_RECORDS .
      PERFORM FETCH_ZCUSTOMERS.
      PERFORM FETCH_ZSOHEADERS.
      PERFORM FETCH_ZSOITEMS.
      PERFORM ARRANGE_DATA_RECORDS.
    ENDFORM.                    " generate_data_records
    *&      Form  fetch_zcustomers
    FORM FETCH_ZCUSTOMERS.
      SELECT *
      FROM ZCUSTOMERS
      INTO TABLE T_ZCUSTOMERS
      WHERE KUNNR IN S_KUNNR.
      IF SY-SUBRC NE 0.
        MESSAGE E398(00) WITH 'No Customers Found'.
      ENDIF.
    ENDFORM.                    " fetch_zcustomers
    *&      Form  fetch_zsoheaders
    FORM FETCH_ZSOHEADERS.
      SELECT *
      FROM ZSOHEADERS
      INTO TABLE T_ZSOHEADERS
      WHERE VBELN IN S_VBELN
        AND KUNNR IN S_KUNNR.
      IF SY-SUBRC NE 0.
        MESSAGE I398(00) WITH 'No Sales orders found'.
      ENDIF.
    ENDFORM.                    " fetch_zsoheaders
    *&      Form  fetch_zsoitems
    FORM FETCH_ZSOITEMS.
      IF NOT T_ZSOHEADERS[] IS INITIAL.
        SELECT *
        FROM ZSOITEMS
        INTO TABLE T_ZSOITEMS
        FOR ALL ENTRIES IN T_ZSOHEADERS
        WHERE VBELN = T_ZSOHEADERS-VBELN.
        IF SY-SUBRC NE 0.
          MESSAGE I398(00) WITH 'No Sales order items found'.
        ENDIF.
      ENDIF.
    ENDFORM.                    " fetch_zsoitems
    *&      Form  generate_control_record
    FORM GENERATE_CONTROL_RECORD .
      S_CTRL_REC-RCVPOR = C_RCVPOR. "Receiver Port
      S_CTRL_REC-MESTYP = C_MESTYP. "Message type
      S_CTRL_REC-IDOCTP = C_IDOCTP. "Basic IDOC type
      S_CTRL_REC-RCVPRT = C_RCVPRT. "Partner type of receiver
      S_CTRL_REC-RCVPRN = C_LOGSYS. "Partner number of receiver
      S_CTRL_REC-SNDPRT = C_SNDPRT. "Sender Partner type
      S_CTRL_REC-SNDPRN = C_SNDPRN. "Sender Partner Number
    ENDFORM.                    " generate_control_record
    *&      Form  send_idoc
    FORM SEND_IDOC.
      CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
        EXPORTING
          MASTER_IDOC_CONTROL            = S_CTRL_REC
        TABLES
          COMMUNICATION_IDOC_CONTROL     = T_COMM_IDOC
          MASTER_IDOC_DATA               = T_EDIDD
        EXCEPTIONS
          ERROR_IN_IDOC_CONTROL          = 1
          ERROR_WRITING_IDOC_STATUS      = 2
          ERROR_IN_IDOC_DATA             = 3
          SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
          OTHERS                         = 5.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        COMMIT WORK.
        LOOP AT T_COMM_IDOC.
          WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " send_idoc
    *&      Form  arrange_data_records
    FORM ARRANGE_DATA_RECORDS .
      DATA: W_INDEX1 LIKE SY-TABIX,
            W_INDEX2 LIKE SY-TABIX.
      SORT T_ZCUSTOMERS BY KUNNR.
      SORT T_ZSOHEADERS BY KUNNR VBELN.
      SORT T_ZSOITEMS BY VBELN POSNR.
      LOOP AT T_ZCUSTOMERS.
        S_ZRZSEG1-KUNNR = T_ZCUSTOMERS-KUNNR.
        S_ZRZSEG1-NAME1 = T_ZCUSTOMERS-NAME1.
        S_ZRZSEG1-ORT01 = T_ZCUSTOMERS-ORT01.
        S_ZRZSEG1-LAND1 = T_ZCUSTOMERS-LAND1.
        T_EDIDD-SEGNAM = C_ZRZSEG1.
        T_EDIDD-SDATA = S_ZRZSEG1.
        APPEND T_EDIDD.
        CLEAR T_EDIDD.
        CLEAR W_INDEX1.
        READ TABLE T_ZSOHEADERS WITH KEY KUNNR = T_ZCUSTOMERS-KUNNR BINARY SEARCH.
        IF SY-SUBRC = 0.
          W_INDEX1 = SY-TABIX.
          LOOP AT T_ZSOHEADERS FROM W_INDEX1.
            IF T_ZSOHEADERS-KUNNR NE T_ZCUSTOMERS-KUNNR.
              EXIT.
            ENDIF.
            S_ZRZSEG2-VBELN = T_ZSOHEADERS-VBELN.
            S_ZRZSEG2-KUNNR = T_ZSOHEADERS-KUNNR.
            T_EDIDD-SEGNAM = C_ZRZSEG2.
            T_EDIDD-SDATA = S_ZRZSEG2.
            APPEND T_EDIDD.
            CLEAR T_EDIDD.
            CLEAR W_INDEX2.
            READ TABLE T_ZSOITEMS WITH KEY VBELN = T_ZSOHEADERS-VBELN BINARY SEARCH.
            IF SY-SUBRC = 0.
              W_INDEX2 = SY-TABIX.
              LOOP AT T_ZSOITEMS FROM SY-TABIX.
                IF T_ZSOITEMS-VBELN NE T_ZSOHEADERS-VBELN.
                  EXIT.
                ENDIF.
                S_ZRZSEG3-VBELN = T_ZSOITEMS-VBELN.
                S_ZRZSEG3-POSNR = T_ZSOITEMS-POSNR.
                S_ZRZSEG3-MATNR = T_ZSOITEMS-MATNR.
                S_ZRZSEG3-NETWR = T_ZSOITEMS-NETWR.
                S_ZRZSEG3-ZMENG = T_ZSOITEMS-ZMENG.
                T_EDIDD-SEGNAM = C_ZRZSEG3.
                T_EDIDD-SDATA = S_ZRZSEG3.
                APPEND T_EDIDD.
                CLEAR T_EDIDD.
              ENDLOOP.
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " arrange_data_records

  • Auto Confirmation of transfer order - 999 mvt from storage type W01 to S01

    Hi,
    I am trying to automate the confirmation of transfer orders between storage type W01 and S01 using a 999 movement type. The 999 movement type appears to work perfectly when doing a bin to bin movement within the W01 storage type (for example move batch abc from bin 01 to bin 02) no confirmations are required. However if I transfer from a bin in W01 storage type to the S01 storage type (which only has a single bin to represent a staging area) a manual confirmation of the transfer order is required via lt24 or lt12. It appears therefore that the issue is with the storage type S01 for this particular Warehouse. The setting to confirm the TO immediately is already activated for movt 999 in customizing, is there a setting for the storage type that must be defined.
    Regards,

    F1 help for field V_T333-SQUIT:
    Means that the transfer order item can be confirmed immediately during the creation procedure.
    SAP online help:
    http://help.sap.com/saphelp_erp60_sp/helpdata/en/c6/f83e4d4afa11d182b90000e829fbfe/frameset.htm
    To set the confirmation requirement for foreground processing, select the indicator for TO item can be confirmed immediately.
    As per my understanding the immediate confirmation indicator does not mean that the transfer order will be confirmed immediately. It makes possible that during the creation of transfer order you CAN put a flag in the confirmation checkbox.
    If you use it together with "propose confirmation" flag (setting for WM movement type; V_T333-VQUIT), the falg in confirmation check box will be populated automatically during TO creation.
    Edited by: Csaba Szommer on May 10, 2011 11:22 AM

  • Uploading from Nikon Coolpix S01

    Can you transfer photos from a Nikon Coolpix S01to iPad 2? My daughter got one as a present and gets the dreaded "device uses too much power" message. We've tried advice in old forums to switch off on 'computer charge' on camera but still no luck.  Any suggestions please.

    This is the same problem I am having.  I contacted Apple support with no help.  I contacted Nikon, as well, to see if the iPad photo kit would support this Nikon s01, and they had no clue.  This is very frustrating.  The connection kit and camera would download on my iMac using iPhoto, so I suspect there is a problem with the iPad connection.  I fully charged camera and the same error cones up.  Can anyone get this to work?

  • S01 Sync

    Hi
    I am on SP 14 and have developed two set of Bapi Wrappers GetList, GetDetail) and two Sync Bo's. Tied into one MCD and one Mobile Application.
    I am using S01 sync. I am able to get the data from the backend during Syncronization. But If I change any of the mapped field (Master/Transaction) data in backend, it's not being reflected in the client system.
    I am not sure why it's happening as with S01 there is no replica database and further can't check the exact data in Monitor as well. Though for some data it seems that the Monitor shows the updated entry, but not the Client.
    Any inputs will be highly appreciable.
    Best Regards
    Swetank

    Hi Swetnak:
    In reagrds to #2 & Sync Type S01, you are correct, the Replicator Program(Main: MEREP_PROFILE_RSHS) will check before it is executed wheher it can run for the selected SyncBo Type and it is run only for D01,T01 & T51 but not for S01 & U01.So no need to emulate the SyncBo.You are correct here.
    I think you said you are in SP14 and hence your MI Client cannot be at a higher SP level than your MI server as recommended.Is both your MI Clinet and MI Server at same SP level?
    I think the issue might be more related to your SP Level.SAP Support Team should get you a good answer.
    Here is the Composite Note 852142 on MI2.5/SP14.I donot think your issue is addressed here.
    Good Luck:)
    Thanks
    Gisk
    Message was edited by: Sivakumar Ganesan(Gisk)

  • I canu00B4t sync with type S01

    Hi, I create a syncbo of type S01, but i can´t receive the data, why? I create a smart project. The SyncBo is enable, but not receive the data in the app, have i configure anything?
    Thanks,

    Hi Victor,
    yes, this is correct. T01 always replicates the complete datastack!
    But: simply siwtching the SyncBO does not really help you! In your case you mentioned you just changed the BO from T01 to S01. This means:
    T01: every replicator run triggers a complete selection on the backend. Because T01 is for data, that does not change that often, you can run this replicator in the night. So the load on the server happens in a time when he has not so much to do - because all employees are at home - and so it is fine. All Syncs run on the middleware only, so the backend is not effected at all.
    S01: EVERY SYNC triggers a complete selection on the backend. And this is really not the thing you want! If you say your replication runs a while, then I expect you have a hughe selection. If you just change the SyncBO type without changing the selection, you as well select this large dataset on the backend. But now with every sync. First of all this takes the same amount of time then the selection for the replication of T01 AND you do that now for every user and every sync on the backend.
    Are you still with me?
    I think you need either to change the selection criteria if you really think S01 is correct for you or change to T51.
    In T51 you run a replication similar to T01 one time. Now you have an exact copy of the dataset on the middleware. From that point on you replicate only the changes from the backend to the middleware. But as I said: be aware, this setup is complex and it takes place in backend and middleware!
    S01 is really only for Orders, Notifications,.... Stuff that changes really often and where you need really the most up to date data on the client AND where a selection gives an extremely limited result. An employee has just a max of 30 orders that he handels - but he has about 20.000 Equipments. So equipments will never be handeld as a S01 but orders make sence.
    Hope this helps!
    Regards,
    Oliver

  • Select list from query in report

    Hello everybody,
    I want to include a select list from a query in a report's colomn, but the select list should only be displayed conditionally. I wanted to do this with the help of "case when" in the corresponding SQL statement.
    The select list itsself works, but when I combine it with "case when" I always get the error message:
    ORA-01427: single-row subquery returns more than one row
    The select statement is as following:
    select
    htmldb_item.checkbox(1,rownum) " ",
    x.idee,
    x.stunden_ilp,
    x.stunden_ild,
    x.stunden_ilm,
    x.stunden_ief,
    x.stunden_ir,
    x.pe_id,
    x.l_art_id,
    x.version_id
    from (
    select
    (select case
    when (select name from cn_pl_projektidee s01
    where s01.idee_id = '2') IS NULL then
    (select distinct htmldb_item.select_list_from_query(5,name,'select distinct name from cn_pl_projektidee') name from cn_pl_projektidee s01
    where s01.idee_id = t1.idee_id)
    else
    (select distinct htmldb_item.text(5,name) name from cn_pl_projektidee s01
    where  s01.idee_id = t1.idee_id)
    END from cn_pl_std_peplanung t1) Idee,
    from cn_pl_std_peplanung t1, cn_pl_projektelemente z1, cn_pl_version u1, cn_pl_projektidee s1
    where t1.version_id = '&P6_VERSION_WAHL.'
    and t1.pe_id ='&P6_HELP_PRODET.' 
    and t1.l_art_id ='&P6_L_ART_ID.'
    group by t1.pe_id, t1.version_id, t1.idee_id, t1.l_art_id) x
    order by x.ideeDoes anybody know what could be the problem or what other solutions I could try??
    Greetings!
    Patrick

    Found 2 ways to solve it:
    *1. dynamic action (JQuery)*
    $("#f20_1234 option[value=13]").attr('selected', 'selected');
    *2. process*
    BEGIN
    HTP.p('<script type="text/javascript">');
    --HTP.p('problem()');
    HTP.p('html_SetSelectValue(''f20_903'',188)');
    HTP.p('html_SetSelectValue(''f20_903'',189)');
    HTP.p('</script>');
    END;

  • How to convert the date time from MM-DD-YYYThh:mm:ss to YYYY-MM-DDThh:mm:ss format

    Hi All,
    I have a requirement in my project like to convert the date time from one format to another.my situation is like to convert the date time from MM-DD-YYYThh:mm:ss to YYYY-MM-DDThh:mm:ss format. I am using the soa suite 11.1.1.6.
    Can any one suggest me how to convert in the BPEL transformation.
    Thanks,
    Sanju.

    Hi Sanju,
    Store the date to be converted into a variable viz. dateVar. Now, process an expression in assign as: xp20:format-dateTime($dateVar,'[Y0001]-[M01]-[D01] [h]:[m01]:[s01]').
    Regards

  • Exctract information from the title of the document

    Hello all,
    Not sure my post should go in this topic...
    I need to exctract information from the name property of my PDF document, and put that information it in the footer of my document:
    exemple :
    My doc name is : S01_Blabla.pdf
    I need to do a script that could put as a footer "S01" on all pages of my document.
    Is there any way to do that in acrobat?
    Thanks
    Fabien
    PS : I'm working on Acrobat V9 pro

    Thanks for this useful answer,
    Being a beginner in this acrobat Javascript dev, I have one more qestion :
    Is this script associated to one document? or can it somehow be stored in the Acrobat interface to be run on any new document I open, in a similar way as what is done for sequences?
    Thanks
    Fabien

  • How to Strip Extraneous Output from SQL*Plus Session

    We are running Oracle Database 11g on Solaris 10, and I am trying to use SQL*Plus to create a temporary .sql file that I can execute in a later step of a Korn shell script. Here is the code:
         $ORACLE_HOME/bin/sqlplus / as sysdba <<EOF
    --whenever oserror exit failure;
    --whenever sqlerror exit sql.sqlcode;
    set serveroutput on
    set termout off
    set trimspool on
    set verify off
    set heading off
    set feedback off
    set echo off
    spool /usr/oracle/temp/apply_site_security_for_oracle_database_11g.ksh.tmp
    declare
         Value_DSC varchar2(2000);
         CommandLine_DSC varchar2(4000);
    begin
         select v\$parameter.value into Value_DSC from v\$parameter where lower(name)='diagnostic_dest';
         CommandLine_DSC := 'host chmod 751 ' || Value_DSC;
         dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
         dbms_output.put_line(CommandLine_DSC);
         CommandLine_DSC := 'host ls -ld ' || Value_DSC;
         dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
         dbms_output.put_line(CommandLine_DSC);
    end;
    spool off;
    exit;
    EOF
    I've tried to turn off everything I don't need, but I am missing something. When I run the script, I get the following in the temporary file:
    SQL>
    SQL> declare
    2 Value_DSC varchar2(2000);
    3 CommandLine_DSC varchar2(4000);
    4
    5 begin
    6 select v$parameter.value into Value_DSC from v$parameter where lower(name)='diagnostic_dest';
    7
    8 CommandLine_DSC := 'host chmod 751 ' || Value_DSC;
    9 dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
    10 dbms_output.put_line(CommandLine_DSC);
    11
    12 CommandLine_DSC := 'host ls -ld ' || Value_DSC;
    13 dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
    14 dbms_output.put_line(CommandLine_DSC);
    15 end;
    16 /
    --Ready to execute: host chmod 751 /s01/app/oracle
    host chmod 751 /s01/app/oracle
    --Ready to execute: host ls -ld /s01/app/oracle
    host ls -ld /s01/app/oracle
    SQL>
    SQL> spool off;
    I am hoping to whittle this down to just the following lines so I can execute them as a script.
    --Ready to execute: host chmod 751 /s01/app/oracle
    host chmod 751 /s01/app/oracle
    --Ready to execute: host ls -ld /s01/app/oracle
    host ls -ld /s01/app/oracle
    Any ideas?
    Edited by: shew01 on Jan 19, 2010 10:51 AM

    I just found it. Just add "-S" to the sqlplus command. Argh... I hunted for that a while back. Why didn't I remember it??????????
    This works:
         $ORACLE_HOME/bin/sqlplus -S / as sysdba <<EOF
    whenever oserror exit failure;
    whenever sqlerror exit sql.sqlcode;
    set serveroutput on
    set linesize 2000
    set pagesize 0
    set termout off
    set trimspool on
    set feedback off
    spool /usr/oracle/temp/apply_site_security_for_oracle_database_11g.ksh.tmp
    declare
         Value_DSC varchar2(2000);
         CommandLine_DSC varchar2(4000);
    begin
         select v\$parameter.value into Value_DSC from v\$parameter where lower(name)='diagnostic_dest';
         CommandLine_DSC := 'host chmod 751 ' || Value_DSC;
         dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
         dbms_output.put_line(CommandLine_DSC);
         CommandLine_DSC := 'host ls -ld ' || Value_DSC;
         dbms_output.put_line('--Ready to execute: ' || CommandLine_DSC);
         dbms_output.put_line(CommandLine_DSC);
    end;
    spool off;
    exit;
    EOF
    Edited by: shew01 on Jan 19, 2010 11:02 AM

  • Essbase ASO Cube query performance from OBI EE

    Hi all
    I have serious problems of performance when I query an ASO cube from OBI EE. The problem born when I implement a filter in some dimension of model in the Business Model and Mapping layer. This filter is to level-0 of the dimension, the values are obtained from a session variable in OBI EE. The objetive of this is apply filters depending of users. Then, for session variable I've a table in relational dabase base with relation between user and "access", then my dimensions (not all) have as level-0 the "access" of users (as duplicated members).
    The session variable in OBI EE is filled with row-wise option, so it has all values of "access" that correspond to user (:USER system variabe).
    When I query only by one of this filtered dimensions the respond is very fast, When I query for one of this filtered dimensions and a metric the respond is fast (10 seconds). But when I query for two of this filtered dimensions and metric the respond take 25 minutes. I checked Essbase app log and found this:
    +[Mon Nov 15 19:56:01 2010]Local/TestSec5/TestSec5/admin/Info(1013091)+
    +Received Command [MdxReport] from user [admin]+
    +[Mon Nov 15 20:28:28 2010]Local/TestSec5/TestSec5/admin/Info(1260039)+
    MaxL DML Execution Elapsed Time : [1947.18] seconds
    When I look the MDX query generated by OBI I see that the aggregation process is doing in the fly in the members filtered of the crossjoin of two dimensions:
    With
    set [CATALOGO_INSTITUCIONAL2] as '[CATALOGO_INSTITUCIONAL].Generations(2).members'
    set [CATALOGO_PRESUPUESTARIO2] as '[CATALOGO_PRESUPUESTARIO].Generations(2).members'
    *member [METRICAS_PRESUPUESTARIAS].[MS1] as 'AGGREGATE(filter(crossjoin (Descendants([CATALOGO_INSTITUCIONAL].currentmember,[CATALOGO_INSTITUCIONAL].Generations(7)),Descendants([CATALOGO_PRESUPUESTARIO].currentmember,[CATALOGO_PRESUPUESTARIO].Generations(7))),(([CATALOGO_INSTITUCIONAL].CurrentMember.MEMBER_ALIAS = "01.01" OR [CATALOGO_INSTITUCIONAL].CurrentMember.MEMBER_Name = "01.01")) AND (([CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_ALIAS = "G" OR [CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_Name = "G") OR ([CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_ALIAS = "I0101" OR [CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_Name = "I0101") OR ([CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_ALIAS = "S01" OR [CATALOGO_PRESUPUESTARIO].CurrentMember.MEMBER_Name = "S01"))),METRICAS_PRESUPUESTARIAS.[Compromiso])', SOLVE_ORDER = 100*
    select
    { [METRICAS_PRESUPUESTARIAS].[MS1]
    } on columns,
    NON EMPTY {crossjoin ({[CATALOGO_INSTITUCIONAL2]},{[CATALOGO_PRESUPUESTARIO2]})} properties ANCESTOR_NAMES, GEN_NUMBER on rows
    from [TestSec5.TestSec5]
    Can somebody tell me if is possible to change the way in that OBI built the query or if is possible to use aggregations previously materialized of essbase?

    hi Amol,
    1. On what basis , did you estimate your cube to around 400GB to 600GB.
    2. If ASO is an option, its huge advantage lies in space, its does not take more space , unlike BSO.
    3. I have seen cubes ,who size was around 300-400GB in BSO,when made the same cube into ASO , its consumed space of 40GB-45GB.
    HOpe this helps
    Sandeep Reddy Enti
    HCC
    http://hyperionconsutlancy.com/

  • Problem in Kernel upgrade from 185 to 278

    Hi
    Sir/Madam,
    While updating the kernel patch from (SAPEXE_185-20000972.SAR to SAPEXE_278-20000972.SAR & SAPEXEDB_185-20000972.SAR to
    SAPEXEDB_278-20000972)we updated both Database independent & MS Sql
    Server kernel patch after that we face problem in our SAP Management
    console where the console disp+work.exe dispatcher is showing as Running but dialog queue info is unavailable.we can able to login into our sandbox and see the WP Table in SM50 t-code.But in SAP MMC it is
    showing yellow signal.Please do the needful.
    We have not updated in our Production server we tried in our SANDBOX first .
    Thanks,
    Gopinath M.L

    HI,
      I have done your query and till it is showing yellow colour only, please find the pasted instance profile log file for your kind information.
    #.*       Instance profile S01_DVEBMGS31_PRDTEST                                                                               *
    #.*       Version                 = 000003                                                                                *
    #.*       Generated by user = SAP*                                                                                *
    #.*       Generated on = 01.02.2011 , 19:47:53                                                                                *
    #parameter created                          by: SAP*         01.02.2011 19:47:40
    login/no_automatic_user_sapstar = 0
    SAPSYSTEMNAME = S01
    SAPGLOBALHOST = prdtest
    SAPSYSTEM = 31
    INSTANCE_NAME = DVEBMGS31
    DIR_CT_RUN = $(DIR_EXE_ROOT)\$(OS_UNICODE)\NTAMD64
    DIR_EXECUTABLE = $(DIR_INSTANCE)\exe
    PHYS_MEMSIZE = 512
    #old_value: 6                                                                                changed: BASIS 25.01.2011 15:32:14
    rdisp/wp_no_dia = 4
    #old_value: 3                                                                                changed: BASIS 25.01.2011 15:32:14
    rdisp/wp_no_btc = 2
    icm/server_port_0 = PROT=HTTP,PORT=80$$
    rdisp/elem_per_queue = 2000
    SAP Messaging Service parameters are set in the DEFAULT.PFL
    ms/server_port_0 = PROT=HTTP,PORT=81$$
    rdisp/wp_no_enq = 1
    rdisp/wp_no_vb = 1
    rdisp/wp_no_vb2 = 1
    rdisp/wp_no_spo = 1
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/buffersize = 300000
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    zcsa/table_buffer_area = 30000128
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rtbb/buffer_length = 10000
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rsdb/cua/buffersize = 3000
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    zcsa/presentation_buffer_area = 4400128
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/appc_ca_blk_no = 100
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/wp_ca_blk_no = 300
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rsdb/ntab/entrycount = 19990
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rsdb/ntab/ftabsize = 30002
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rsdb/ntab/irbdsize = 6000
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rsdb/ntab/sntabsize = 3000
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_ROLL = D:\usr\sap\S01\DVEBMGS31\data
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_PAGING = D:\usr\sap\S01\DVEBMGS31\data
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_DATA = D:\usr\sap\S01\DVEBMGS31\data
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_REORG = D:\usr\sap\S01\DVEBMGS31\data
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_TRANS =
    prdtest\sapmnt\trans
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_TEMP = .
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    DIR_SORTTMP = D:\usr\sap\S01\DVEBMGS31\data
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    zcsa/system_language = E
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    zcsa/installed_languages = ED
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    install/codepage/appl_server = 4103
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/use_paging = 0
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    ztta/roll_first = 1024
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    ztta/roll_area = 3000320
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/ROLL_SHM = 7552
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/ROLL_MAXFS = 7552
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/PG_SHM = 4096
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    rdisp/PG_MAXFS = 32768
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/heap_area_dia = 2000683008
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/heap_area_nondia = 0
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/heap_area_total = 536870912
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/heaplimit = 40894464
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    abap/swap_reserve = 20971520
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    ztta/roll_extension = 2000683008
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    em/initial_size_MB = 512
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    em/blocksize_KB = 4096
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    em/stat_log_size_MB = 20
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    em/stat_log_timeout = 0
    #parameter created                          by: BASIS        25.01.2011 15:32:14
    em/address_space_MB = 4096
    Regards
    Gopinath M.L

  • MI 7.0 T51  when sync data not filtered

    Hi Experts,
    we have a synbo t51 in mi 7.0 and when we sync with the middelware whe got all the data of the syncbo , not filter by the user of the mobile client who perform the sync?
    has somebody this problem?
    Thanks in advanced.
    Some help..some point....

    Hi,
    Peform this and set a user based filter criteria on syncBO.
    1. Go to transaction merep_sbuilder.
    2. Give the syncBO name and click on Environment and click on filtering criteria.
    3. And then set a filtering criteria for the header field "user" as "ME-SYNC_USER".
       It should look like this:
       FieldName: Userbased Field in header
       Option: EQ
       Value: ME-SYNC_USER.
    4. Enable the syncbo and enable the filter.
    5. Then perform the sync and check if you are getting data only for the sync user.
    But for setting this filtering criteria, your T51 syncbo's header should have a field called "USER" and this value should be filled from the backend. Only then when you sync this filtering of data based on user will happen.
    Hope this helps.
    Best Regards,
    Siva.

  • OO ABAP - Retrieve source from Class Builder?

    Hi. Is there a way to display the source code for a class or interface definition that was created with the class builder (se24).
    I looked through the drop downs, but I didn't see anything to display the source.
    Thanks in advance.
    Brendan

    A class is distributed upon several includes. The Se24 in my 45b system offers to view the source via button on the bottom of the method list.
    If you like you can try the following sample program also. Just paste the source and create the Pf-Status 'STA_MAIN' (line 135) and add the commands PICK(f2),Back, Exit, My_Edit(any key).
    PS: double clicking on a include navigates forward ( if PICK is set to F2 ).
    PPS: If you experience trouble with pasting the code and lost line termination, please paste into wordpad an save as text file.
    [code]
    report:   Ze80Lite
    created:  17.aug.2000
    purpose
    this report displays various informations of report-source files
    Change History
    #nn - dd.mmm.yyyy - Author
                         short description
    #00 - 17.aug.2000 - KZI
                         initial
    report Ze80Lite
      no standard page heading
      line-size 120
      message-id sx.
    *$ external types & constants =====================
    *======================================================================
    *$ local types ========================================================
    *======================================================================
    types:
      typ_source      type string,
      typ_source_tab  type standard table of typ_source,
      begin of typ_file_info,
        lsind         type syst-lsind,
        isvalid       type flag,
        r3state       type d010sinf-r3state,
        prgnam        type programm,
        srcnam        type programm,
        prgtyp        type d010sinf-subc,
      end of typ_file_info,
      begin of typ_line_info,
        flag_newline  type flag,
        flag_comment  type flag,
        text          type string,
      end of typ_line_info,
      begin of typ_method_info,
        methodname  type tmdir-methodname,
        methodindx  type tmdir-methodindx,
      end of typ_method_info,
      typ_method_info_tab type standard table of typ_method_info,
      typ_line_tab type standard table of typ_line_info.
    selection-screen begin of block sel1 with frame title text-s01.
    parameter:
      p_prgnam        type programm   obligatory,
      p_state         type d010sinf-r3state default 'I',
      p_typprg radiobutton group 0001 default 'X',
      p_typcla radiobutton group 0001,
      p_typifc radiobutton group 0001,
      p_typfct radiobutton group 0001,
      p_typmod radiobutton group 0001,
      p_typool radiobutton group 0001.
    selection-screen end of block sel1.
    constants:
      begin of gcr_rep,
        typ_prg   type  i          value 1,
        typ_cla   type  i          value 2,
        typ_ifc   type  i          value 3,
        typ_fct   type  i          value 4,
        typ_mod   type  i          value 5,
        typ_pool  type  i          value 6,
        max_modi  type  syst-lsind value 5,
        max_width type  i          value 80,
        mem_prg   type memoryid    value 'ST22_PRGNAME',
        mem_typ   type memoryid    value '91A',          " missuse
        mem_dir   type memoryid    value '91B',          " missuse
        mem_sta   type memoryid    value '91C',          " missuse
      end of gcr_rep.
    data:
      goa_file      type standard table of typ_file_info.
    =====================================================================
    *$ report eventing ====================================================
    =====================================================================
    initialization.
      perform sub_init.
    at selection-screen.
      perform sub_check.
    start-of-selection.
      perform sub_main.
    at line-selection.
      perform sub_click.
    at user-command.
      perform sub_command
        using sy-ucomm.
      sy-ucomm = ''.
    =====================================================================
    *$ subroutines ========================================================
    =====================================================================
    form   :  sub_main
    purp.  :  main entry point for procecssing
    param  :  <global>     from selectio screen
    rcode  :  ---
    hist.  :  #00 -  KZI - created
    form sub_main.
    data declaration
      data:
        lon_error          type i,
        lon_srctyp         type i,
        loc_srcnam         type programm,
        lor_file           type typ_file_info.
    init
      set pf-status 'STA_MAIN'.
      clear:
        lor_file,
        goa_file.
      do 10 times.
        append lor_file to goa_file[].
      enddo.
    get the type
      " keep in sync with parameter, sub_check, sub_init
      case 'X'.
        when p_typprg.
          lon_srctyp = gcr_rep-typ_prg.
        when p_typcla.
          lon_srctyp = gcr_rep-typ_cla.
        when p_typifc.
          lon_srctyp = gcr_rep-typ_ifc.
        when p_typfct.
          lon_srctyp = gcr_rep-typ_fct.
        when p_typmod.
          lon_srctyp = gcr_rep-typ_mod.
        when p_typool.
          lon_srctyp = gcr_rep-typ_pool.
        when others.
          lon_srctyp = gcr_rep-typ_prg.
      endcase.
    get true name
      perform sub_get_srcnam
        using
          lon_srctyp
          p_prgnam
        changing
          lon_error
          loc_srcnam.
      perform sub_dsp_source
        using
          p_prgnam
          loc_srcnam.
    the end
      exit. " form
    endform.                    "sub_main
    form   :  sub_click
    purp.  :  entry point for line selection
    param  :  <global>    sy-lisel
    rcode  :  ---
    hist.  :  #00 -  KZI - created
    form sub_click.
    data declaration
      data:
        lon_error          type i,
        loc_prgnam         type programm,
        loc_srcnam         type programm.
    get possibly program name
      if ( 0 eq lon_error ).
        perform sub_get_word_from_list
          changing
            loc_prgnam.
        if ( '' eq loc_prgnam ).
          lon_error = 1.
        else.
          translate loc_prgnam to upper case.
        endif.
      endif.
    get source name
      if ( 0 eq lon_error ).
        case loc_prgnam.
          when 'METHODS'.
            perform sub_dsp_methods.
          when others.
            perform sub_get_srcnam
              using
                gcr_rep-typ_prg
                loc_prgnam
              changing
                lon_error
                loc_srcnam.
            if ( 0 eq lon_error ).
              perform sub_dsp_source
                using
                  loc_srcnam
                  loc_srcnam.
            endif.
        endcase.
      endif.
    the end
      exit. " form
    endform.                    "sub_click
    form   :  sub_command
    purp.  :  entry point for user command
    param  :  ---
    rcode  :  ---
    hist.  :  #00 -  KZI - created
    form sub_command
      using
        value(poc_cmd)   type syst-ucomm.
    data declaration
      data:
        lon_error        type i,
        lon_lsind        type syst-lsind,
        lor_file         type typ_file_info.
    try to catch a valid file info
      if ( 0 eq lon_error ).
        read table goa_file[]
          into lor_file
          with key lsind = sy-lsind.
        if ( 0 ne sy-subrc ).
          lon_error = 1.
        elseif ( 'X' ne lor_file-isvalid ).
          lon_error = 1.
        endif.
      endif.
    dispatch work
      if ( 0 eq lon_error ).
        case poc_cmd.
          when 'MY_EDIT'.
            editor-call for report lor_file-srcnam display-mode.
          when 'MY_HELP'.
            perform sub_dsp_help.
          when others.
            " nop
        endcase.
      endif.
    endform.                    "sub_command
    form   :  sub_get_word_from_list
    purp.  :  get the word clicked on
    param  :  <global>     sy-lisel
    rcode  :  ---
    hist.  :  #00 -  created
               #01 -  fixed a problem with words starting in first column
    form sub_get_word_from_list
      changing
        prc_srcnam     type programm.
      data:
        loc_cmp(1)     type c,
        lon_bgn        type i,
        lon_end        type i,
        lon_len        type i.
    get fundamental data
      lon_len = strlen( sy-lisel ).
      lon_bgn = sy-cucol.
      lon_end = sy-cucol.
    find begin/end of word
      do.
        loc_cmp = sy-lisel+lon_bgn(1).
        if
            ''      eq loc_cmp or
            '"'',.' ca loc_cmp
          exit." do
        endif.
        lon_bgn = lon_bgn - 1.
        if ( 0 GT lon_bgn ).
          exit. " do
        endif.
      enddo.
      lon_bgn = lon_bgn + 1.
      do.
        loc_cmp = sy-lisel+lon_end(1).
        if
            lon_len le lon_end or
            ''      eq loc_cmp   or
            '"'',.' ca loc_cmp
          exit.
        endif.
        lon_end = lon_end + 1.
      enddo.
      lon_end = lon_end - 1.
    if end >= begin give it back
      if ( lon_end ge lon_bgn ).
        lon_len = lon_end - lon_bgn + 1.
        prc_srcnam = sy-lisel+lon_bgn(lon_len).
      endif.
    endform.                    "sub_get_word_from_list
    form   :  sub_get_srcnam
    purp.  :  builds sourcename according to selection screen settings
    param  :  pon_prgtyp   distinquish the various program types
               pon_prgnam   the program name used to build the source file
    rcode  :  prn_error    0 success, else failure
               prc_srcnam   name of sourcefile
    hist.  :  #00 -  KZI - created
    form sub_get_srcnam
      using
        value(pon_prgtyp)     type i
        value(poc_prgnam)     type program
      changing
        prn_error             type i
        prc_srcnam            type programm.
    data declaration
      data:
        lon_error type i,                 " local errorflag
        x type i,                         " simple counter
        y type i,                         " simple counter
        lor_tfdir type tfdir.             " prog info tab.
    build the true filename dependend on prg type
      " keep this source in sync with parameter, sub_check, sub_init
      case pon_prgtyp.
        when gcr_rep-typ_prg.
          " simple program
          prc_srcnam = poc_prgnam.
        when gcr_rep-typ_cla.
          " class
          prc_srcnam = poc_prgnam.
          x = strlen( poc_prgnam ).
          if ( 30 > x ).
            y = 30 - x.
            prc_srcnam+x(y) = '=============================='.
          endif.
          prc_srcnam+30(2) = 'CP'.
        when gcr_rep-typ_ifc.
          " interface
          prc_srcnam = poc_prgnam.
          x = strlen( poc_prgnam ).
          if ( 30 > x ).
            y = 30 - x.
            prc_srcnam+x(y) = '=============================='.
          endif.
          prc_srcnam+30(2) = 'IP'.
        when gcr_rep-typ_fct.
          " function pool
          concatenate
            'SAPL'
            poc_prgnam
            into prc_srcnam.
        when gcr_rep-typ_mod.
          " function module
          select
             single *
             into lor_tfdir
             from tfdir
             where funcname = poc_prgnam.
          if ( 0 eq sy-subrc ).
            concatenate
              'L'
              lor_tfdir-pname+4
              'U'
              lor_tfdir-include
              into prc_srcnam.
          else.
            lon_error = 1.
          endif.
        when gcr_rep-typ_pool.
          " type pool
          concatenate '%_C' poc_prgnam into prc_srcnam.
        when others.
          " unknown type
          lon_error = 1.
      endcase.
    the end
      if ( 0 eq lon_error ).
        prn_error = 0.
      else.
        prn_error =  1.
        prc_srcnam = p_prgnam.
      endif.
    endform.                    "sub_get_srcnam
    form   :  Sub_Dsp_Methods
    purp.  :  displays methods of a Class
    param  :  prc_ClassName the name of the class to display methods from
    rcode  :
    hist.  :  #00 -  KZI - created
    form sub_dsp_methods.
    data declaration
      constants:
        c_Num_Index  type   i value 35,
        c_Num_Modulo type   i value 36,
        c_Index(37)  type   c
                     value  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ?'.
      data:
        lon_Fraction      type i,
        lon_Modulo        type i,
        lon_Index         type i,
        lon_Offset        type i,
        loa_methods       type typ_method_info_tab,
        loc_Class_Name    type tmdir-classname,
        loc_include_Name  type programm,
        lor_file          type typ_file_info,
        loc_Index(3)      type c.
      field-symbols:
        <lor_method>       type  typ_method_info.
    init &_ precheck
      lor_file-isvalid = ''.
      lor_file-prgtyp =  ''.
      lor_file-lsind  =  sy-lsind + 1.
      modify goa_file[] from lor_file index lor_file-lsind.
      read table goa_file[] index sy-lsind into lor_file.
      if ( 0 ne sy-subrc or 'X' ne lor_File-isValid ).
        exit.
      endif.
      loc_Class_Name = lor_File-PrgNam.
      if ( loc_class_name cs '=' ).
        loc_Class_Name = loc_class_name(sy-fdpos).
      endif.
    get all methods
      select methodname methodindx from tmdir
        into corresponding fields of table loa_methods[]
        where
          classname = loc_class_name AND
          methodname <> ''
        order by
         methodindx.
      if ( 0 ne sy-subrc ).
        write:
          'could not be loaded!'(e04),
          / 'No entry in TMDIR,' , loc_class_name.
        exit.
      endif.
    put em on the list.
      Format: Reset.
      loc_Include_Name = loc_Class_Name.
      concatenate
        loc_Include_Name
        '=================================================='
        into loc_Include_Name.
        loc_Include_Name+30 = 'CM'.
      loop at loa_methods[] assigning <lor_method>.
        loc_Index = '000'.
        lon_Offset =   3.
        lon_Modulo =   <lor_Method>-MethodIndx mod c_Num_Modulo.
        lon_Fraction = <lor_Method>-MethodIndx div c_Num_Modulo.
        while ( ( lon_Fraction > 0 or lon_Modulo > 0 ) and lon_Offset > 0 ).
          lon_Offset = lon_Offset - 1.
          loc_Indexlon_Offset(1) = c_Indexlon_Modulo(1).
          loc_Include_Name+32 = loc_Index.
          lon_Modulo =   lon_Fraction mod c_Num_Modulo.
          lon_Fraction = lon_Fraction div c_Num_Modulo.
        endwhile.
        write: /
          loc_include_name intensified,
           at 40 <lor_method>-methodname(40).
      endloop.
    endform.                    "sub_Dsp_Methods
    form   :  sub_Dsp_Source
    purp.  :  loads source file from database and displays its contents
               with write
    param  :  prc_srcnam   name of source piece to display
    rcode  :  <hide>       name of occasional included files
    hist.  :  #00 -  KZI - created
    form sub_dsp_source
      using
        value(poc_prgnam)  type programm
        value(poc_srcnam)  type programm.
    data declaration
      data:
        lon_error          type i,
        lon_warn           type i,
        loa_source         type standard table of typ_source,
        loa_lines          type typ_line_tab,
        loc_line           type string,
        loc_print          type string,
        lon_tmp            type i,
        lon_tabix          type syst-tabix,
        lor_d010sinf       type d010sinf,
        lor_file           type typ_file_info.
      field-symbols:
        <lof_source>       type typ_source,
        <lof_line>         type typ_line_info.
    init &_ precheck
      format:
        reset.
      if ( gcr_rep-max_modi lt sy-lsind ). " limit modes
        sy-lsind = gcr_rep-max_modi.
      endif.
      lor_file-srcnam =  poc_srcnam.
      lor_file-prgnam =  poc_prgnam.
      lor_file-lsind =   sy-lsind + 1.
      lor_file-r3state = p_state.
    poc_srcnam =       ucase( poc_srcnam ).
    check existance
      if ( 0 eq lon_error ).
        select *
          from d010sinf up to 1 rows
          into lor_d010sinf
          where
            prog = poc_srcnam
          order by
            r3state
            cdat.
          if ( lor_d010sinf-r3state eq p_state ).
            exit. " loop
          endif.
        endselect.
        if ( 0 ne sy-subrc ).
          lon_error = 1.
          write:
            'could not be loaded!'(e04),
            / 'No entry in D010SINF,' , poc_srcnam.
        endif.
      endif.
    get report text
      if ( 0 eq lon_error ).
        read report poc_srcnam into loa_source[] state p_state.
        if ( 0 ne sy-subrc and 'I' eq p_state ).
          read report poc_srcnam into loa_source[] state 'A'.
          lon_warn = 1.
        endif.
        if ( 0 ne sy-subrc ).
          lon_tmp = strlen( poc_srcnam ).
          write: / 'Program'(e01).
          format inverse on. format color col_negative on.
          write at (lon_tmp) poc_srcnam.
          format inverse off.  format color col_negative off.
          write: /
            'Cannot load source info, sy-subrc= '(e02),sy-subrc.
        endif.
      endif.
    create display
      if ( 0 eq lon_error ).
        perform sub_dsp_source_lines
          using
            poc_prgnam
            0
            0
            loa_source[]
          changing
            lon_error.
      endif.
    update internal memory
      if ( 0 eq lon_error ).
        lor_file-isvalid = 'X'.
        if ( 0 eq lon_warn ).
          lor_file-r3state = p_state.
        else.
          lor_file-r3state = 'A'.
        endif.
        lor_file-prgtyp =  lor_d010sinf-subc.
      else.
        lor_file-isvalid = ''.
        lor_file-prgtyp =  ''.
      endif.
      modify goa_file[] from lor_file index lor_file-lsind.
    the end
      if ( 0 ne lon_warn ).
        message s777 with
          'There is no inactive version => no upload possible!'(i01).
      endif.
      exit. " form
    endform.                    "sub_dsp_source
    form   :  sub_dsp_source_lines
    purp.  :  loads source file from database and displays its contents
               with write
    param  :  poc_prgnam   name of source piece to display
               pra_source   source to display
    rcode  :  prn_error    0 success
    hist.  :  #00 -  KZI - created
    form sub_dsp_source_lines
      using
        value(poc_prgnam)  type programm
        value(pon_lwr_ndx) type i
        value(pon_upr_ndx) type i
        pra_source         type typ_source_tab
      changing
        prn_error          type i.
    data declaration
      data:
        lon_Strlen         type i,
        lon_Tabix(5)       type n,
        loa_lines          type typ_line_tab,
        loc_line           type string,
        lon_error          type i,
        lon_tmp            type i,
        lon_lwr_ndx        type syst-tabix,
        lon_upr_ndx        type syst-tabix.
      field-symbols:
        <lof_source>       type typ_source,
        <lof_line>         type typ_line_info.
    init &_ precheck
      format:
        reset.
      lon_error = 0.
      describe table pra_source[] lines lon_tmp.
      if ( 1 gt pon_lwr_ndx or lon_tmp lt pon_lwr_ndx ).
        lon_lwr_ndx = 1.
      else.
        lon_lwr_ndx = pon_lwr_ndx.
      endif.
      if ( 1 gt pon_upr_ndx or lon_tmp lt pon_upr_ndx ).
        lon_upr_ndx = lon_tmp.
      else.
        lon_upr_ndx = pon_upr_ndx.
      endif.
    create display
      if ( 0 eq lon_error ).
        format: reset.
        loop at pra_source[]
          assigning <lof_source>
          from lon_lwr_ndx
          to   lon_upr_ndx.
          lon_tabix = syst-tabix.
          loc_line = <lof_source>.
          perform sub_cut_text_comment
            using
              loc_line
              'X'
            changing
              loa_lines[].
          loop at loa_lines[] assigning <lof_line>.
            if ( 'X' eq <lof_line>-flag_newline ).
              if ( 0 ne lon_tabix ).
                write:
                  /(5) lon_tabix intensified color col_normal.
              else.
                write:
                  /(5) '      .' intensified color col_normal.
              endif.
              write at 6 ''.
              lon_tabix = 0.
            endif.
            lon_Strlen = strlen( <lof_Line>-Text ).
            if ( 'X' eq <lof_line>-flag_comment ).
              write: at (lon_Strlen)
                 <lof_line>-text intensified no-gap.
            else.
              write: at (lon_Strlen)
              <lof_line>-text no-gap.
            endif.
          endloop.
        endloop.
      endif.
    the end
      if ( 0 ne lon_error ).
        prn_error = 1.
      else.
        prn_error = 0.
      endif.
      exit. " form
    endform.                    "sub_dsp_source_lines
    form   :  sub_chk_input
    purp.  :  (en) validate input data
               (de) validieren der eingabewerte
    param  :  ---
    rcode  :  ---
    hist.  :  #00 - initial
    form sub_dsp_help.
    data declaration
      data:
        lon_error        type i,
        loa_tline        type standard table of tline,
        loc_docnam       type syst-repid.
    show help about ?
      if ( 0 eq lon_error ). " Help
        loc_docnam = sy-repid.
        call function 'HELP_OBJECT_SHOW'
          exporting
            dokclass         = 'RE'
            dokname          = loc_docnam
          tables
            links            = loa_tline[]
          exceptions
            object_not_found = 1
            sapscript_error  = 2
            others           = 3.
        if ( 0 ne sy-subrc ).
          lon_error = 1.
          message w777 with 'No Help Available'(w00).
          sy-subrc = 0.
        endif.
      endif.
    endform.                    "sub_dsp_help
    form   :  sub_init
    purp.  :  initializes the selection screen
    param  :  ---
    rcode  :  ---
    hist.  :  #00 -  KZI - created
    form sub_init.
    data declaration
      data:
        loc_memory(256) type c,
        lon_memory      type i.
    memory id logic
      " get prog
      get parameter id gcr_rep-mem_prg  field p_prgnam.
      if ( 0 ne sy-subrc or '' eq p_prgnam ).
        p_prgnam = sy-repid.
      endif.
      set parameter id gcr_rep-mem_prg field p_prgnam.
      " get prog type ( keep in sync with parameters sub_check and
      " sub_get_srcnam )
      get parameter id gcr_rep-mem_typ field loc_memory.
      condense loc_memory.
      loc_memory = loc_memory(4).
      if ( loc_memory co ' 0123456789' ).
        lon_memory = loc_memory.
      else.
        lon_memory = gcr_rep-typ_prg.
      endif.
      clear:
        p_typcla,
        p_typfct,
        p_typifc,
        p_typmod,
        p_typool,
        p_typprg.
      case lon_memory.
        when gcr_rep-typ_prg.
          p_typprg = 'X'.
        when gcr_rep-typ_cla.
          p_typcla = 'X'.
        when gcr_rep-typ_ifc.
          p_typifc = 'X'.
        when gcr_rep-typ_fct.
          p_typfct = 'X'.
        when gcr_rep-typ_mod.
          p_typmod = 'X'.
        when gcr_rep-typ_pool.
          p_typool = 'X'.
        when others.
          " default
          p_typprg = 'X'.
      endcase.
      " get status ( keep in sync with sub check ).
      get parameter id gcr_rep-mem_sta  field p_state.
      if ( 'A' ne p_state ).
        " only 'I' or 'A' is allowed
        p_state = 'I'.
      endif.
      set parameter id gcr_rep-mem_sta field p_state.
    endform.                    "sub_init
    form   :  sub_check
    purp.  :  at the selection screen
    param  :  ---
    rcode  :  ---
    hist.  :  #00 -  KZI - created
    form sub_check.
    data declaration
      data:
        loc_memory(4)    type c,
        lon_rcode        type i.
    memory id handling
      case p_state.
        when 'A' or 'I'.
          " ok
        when others.
          message e777 with
            'Only ''A'' and ''I'' are allowed for state'(se1).
      endcase.
      set parameter id gcr_rep-mem_prg field p_prgnam.
      set parameter id gcr_rep-mem_sta field p_state.
      " multiple choice
      " keep in sync with parameters and sub_check, sub_main
      case 'X'.
        when p_typprg.
          loc_memory = gcr_rep-typ_prg.
        when p_typcla.
          loc_memory = gcr_rep-typ_cla.
        when p_typifc.
          loc_memory = gcr_rep-typ_ifc.
        when p_typfct.
          loc_memory = gcr_rep-typ_fct.
        when p_typmod.
          loc_memory = gcr_rep-typ_mod.
        when p_typool.
          loc_memory = gcr_rep-typ_pool.
        when others.
          " if bugfree this should never happen, sync source if you
          " expierience this source to be executed
          loc_memory = gcr_rep-typ_prg.
      endcase.
      if ( '' ne loc_memory ).
        set parameter id gcr_rep-mem_typ field loc_memory.
      endif.
    endform.                    "sub_check
    form   :  sub_split_comment
    purp.  :  splits a line into a comment and command part.
    param  :  poc_line     to source line
               poc_command  the command part
               poc_comment  the comment part
    rcode  :  <hide>       name of occasional included files
    hist.  :  #00 -  KZI - created
    form sub_split_comment
      using
        value(poc_line)       type typ_source
      changing
        prc_command           type typ_source
        prc_comment           type typ_source.
    data declaration
      data:
        loc_First_Char(1)     type c,
        lon_len_old           type i,
        lon_len_new           type i,
        lon_pos_cmt           type i,
        loc_buf1              type string,
        loc_buf2              type string,
        loc_cmtbuf(240)       type c.
    init & precheck
      clear:
        prc_command,
        prc_comment.
    computation
      loc_First_Char = poc_Line.
      if ( '*' eq loc_First_Char ).
        prc_command = ''.
        prc_comment = poc_line.
      else.
        if ( poc_line ca '"' and poc_line np '''"''' ).
          split poc_line at '"' into loc_buf1 loc_buf2.
          if ( '' eq loc_buf1 ).
            prc_command = ''.
            prc_comment = poc_line.
          else.
            lon_len_old =
              strlen( poc_line ).
            lon_len_new =
              strlen( loc_buf1 ) +
              strlen( loc_buf2 ).
            lon_pos_cmt = lon_len_old - lon_len_new - 2.
            if ( 0 gt lon_pos_cmt or 240 lt lon_pos_cmt ).
              lon_pos_cmt = 0.
            endif.
            loc_cmtbuf+lon_pos_cmt = '"'.
            prc_command = loc_buf1.
            concatenate loc_cmtbuf loc_buf2 into prc_comment.
          endif.
        else.
          prc_command = poc_line.
          prc_comment = ''.
        endif.
      endif.
    the end
      exit. " form
    endform.                    "sub_split_comment
    form   :  sub_cut_text_comment
    purp.  :  splits a line into a comment and command part.
    param  :  poc_line     to source/text line
               poc_cmt      'X' chk for comments
    rcode  :  pra_lines    filled with line info ( reset )
    hist.  :  #00 -  KZI - created
    form sub_cut_text_comment
      using
        value(poc_line)       type string
        value(poc_cmt_check)  type flag
      changing
        pra_lines             type typ_line_tab.
    data declaration
      data:
        loc_buf1              type string,
        loc_buf2              type string,
        loc_comment           type string,
        loc_command           type string.
      data:
        loc_First_Char(1)     type c,
        loc_new_line          type flag,
        lon_cur_pos           type i,
        lon_new_pos           type i.
    init & precheck
      clear:
        pra_lines[],
        loc_command,
        loc_comment.
    computation
      loc_First_Char = poc_Line.
      if ( '' eq poc_cmt_check or '' eq poc_line ).
        loc_command = poc_line.
        loc_comment = ''.
      else.
        if ( '*' eq loc_First_Char ).
          loc_command = ''.
          loc_comment = poc_line.
        else.
          if ( poc_line ca '"' and poc_line np '''"''' ).
            split poc_line at '"' into loc_buf1 loc_buf2.
            if ( '' eq loc_buf1 ).
              loc_command = ''.
              loc_comment = poc_line.
            else.
              loc_command = loc_buf1.
              concatenate '"' loc_buf2 into loc_comment.
            endif.
          else.
            loc_command = poc_line.
            loc_comment = ''.
          endif.
        endif.
      endif.
    cvt text
      lon_cur_pos = 0.
      loc_new_line = 'X'.
      if ( '' ne loc_command ).
        perform sub_cut_text_width
          using
            loc_command
            loc_new_line
            lon_cur_pos
            gcr_rep-max_width
          changing
            pra_lines[]
            lon_new_pos.
        lon_cur_pos =  lon_new_pos.
        loc_new_line = ''.
      endif.
      if ( '' ne loc_comment ).
        perform sub_cut_text_width
          using
            loc_comment
            loc_new_line
            'X'
            lon_cur_pos
            gcr_rep-max_width
          changing
            pra_lines[]
            lon_new_pos.
        lon_cur_pos =  lon_new_pos.
        loc_new_line = ''.
      endif.
      if ( '' ne loc_new_line ).
        perform sub_cut_text_width
          using
            loc_new_line
            lon_cur_pos
            gcr_rep-max_width
          changing
            pra_lines[]
            lon_new_pos.
        lon_cur_pos =  lon_new_pos.
        loc_new_line = ''.
      endif.
    the end
      exit. " form
    endform.                    "sub_cut_text_comment
    form   :  sub_cut_text_width
    purp.  :  splits text info into several lines to make them
               fit to a max-width
    param  :  poc_line     to source/text line
               poc_cmt      'X' chk for comments
    rcode  :  pra_lines    appended ( no reset ) line info.
    hist.  :  #00 -  KZI - created
    form sub_cut_text_width
      using
        value(poc_text)      type string
        value(poc_new_line)  type flag
        value(poc_typ_cmt)   type flag
        value(pon_cur_pos)   type i
        value(pon_max_width) type i
      changing
        pra_lines            type typ_line_tab
        prn_new_pos          type i.
    data declaration
      data:
        lor_text_info         type typ_line_info,
        lon_cnt_loop          type i,
        lon_tmp               type i,
        lon_pos_cur           type i,
        lon_len_cur           type i,
        loc_buf_cur           type string,
        loc_new_line          type flag.
    init & precheck
      loc_buf_cur =  poc_text.
      loc_new_line = poc_new_line.
      lon_pos_cur =  pon_cur_pos.
      do.
        if ( '' eq loc_buf_cur and '' eq loc_new_line or
             1000 lt lon_cnt_loop ).
          exit. " do
        else.
          lon_cnt_loop = lon_cnt_loop + 1.
          clear:
            lor_text_info.
          lor_text_info-flag_comment = poc_typ_cmt.
          if ( '' ne loc_new_line ).
            loc_new_line =               ' '.
            lor_text_info-flag_newline = 'X'.
            lon_pos_cur =                 0.
          endif.
          lon_len_cur = strlen( loc_buf_cur ).
          lon_tmp = lon_pos_cur + lon_len_cur.
          if ( lon_tmp le pon_max_width ).
            " all fits in currentline
            lor_text_info-text = loc_buf_cur.
            loc_buf_cur = ''.
            lon_pos_cur = lon_pos_cur + lon_len_cur.
          else.
            " we need to split
            lon_tmp = pon_max_width - lon_pos_cur.
            if ( 0 gt lon_tmp ).
              " should not happen
              lor_text_info-text = loc_buf_cur.
              loc_buf_cur = ''.
            else.
              lor_text_info-text = loc_buf_cur(lon_tmp).
              loc_buf_cur = loc_buf_cur+lon_tmp.
            endif.
            lon_pos_cur = 0.
            loc_new_line = 'X'.
          endif.
          append lor_text_info to pra_lines[].
        endif.
      enddo.
    the end
      prn_new_pos = lon_pos_cur.
      exit. " form.
    endform.                    "sub_cut_text_width
    [/code]

Maybe you are looking for