Thursday, December 14, 2017

ECC proxy http error due to different user CL_XMS_PLSRV_IE_ADAPTER-CALL_XMS_HTTP

Om

URL= dest://AAE_X2Q




Addressing mode: CallIntegrationServer

URL = dest://AAE_X2Q

Host =

Port =

Transport protocol = HTTP

Message protocol = 003001

Path =

Serializing message object...

HTTP Multipart document length: 3962

Timeout: 0

HTTP-client: request sent

HTTP-client: response received

HTTP-client: status code = 500

Deserializing message object...

HTTP-client: parsed & response message object created

SOAP fault message received

SOAP fault code: Client

SOAP fault string: Server Error

Error while receiving by HTTP (error code: Configuration error on Adapter-Framework(AFW)-Server, error text: com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.aii.adapter.xi.routing.RoutingException: InterfaceDetermination did not yield any actual interface at com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:746) at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:530) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:202) at



Wednesday, November 22, 2017

SAP PI memeory issues, splitting proxy data in SAP ECC system based on production message size

Om

production message(single message size=700MB), I planned 10 files,
( PI 7.4 Sysmtem sure about 100mb, because threshold=10mb, percount-10 means 10*10mb)
later , we can not control on size, this may result memory issues.(depends software and hardware resources) SAP could not give support on sizing ( we experienced this problem)


* call method to fetch final table from class
  CALL METHOD cl_object->send_data_to_fm
    IMPORTING
      exp_t_input = lt_final.   " table type fro structure ZFAR_OPN_CLSD_ITMS

* split the final table into four internal table

  IF lt_final IS NOT INITIAL.

    CLEAR :lv_line,
           lv_mod,
           lv_count,
           lv_count_hg,
           lt_final_1,
           lt_final_2,
           lt_final_3,
           lt_final_4.
*   find the number of lines
    lv_line = lines( lt_final ).

    IF lv_line LE 9.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS'
        TABLES
          it_final = lt_final.


    ELSE.
*   find the number of lines and divide by 10
      lv_no_data = lv_line / 10.

      lv_mod = lv_line MOD 10.

*  append o other internal tables
      lv_count = 1.
      lv_count_hg = lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_1.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_2.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_3.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_4.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_5.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_6.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_7.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_8.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_count_hg + lv_no_data.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_9.

      lv_count = lv_count_hg + 1.
      lv_count_hg = lv_line.
      APPEND LINES OF lt_final FROM  lv_count TO lv_count_hg TO lt_final_10.

* open new sessions to update the data to proxy
      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task1 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_1.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task2 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_2.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task3 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_3.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task4 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_4.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task5 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_5.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task6 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_6.
*
      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task7 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_7.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task8 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_8.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task9 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_9.

      CALL FUNCTION 'ZFAR_OPEN_CLOSED_ITEMS' STARTING NEW TASK lc_task10 DESTINATION
        IN GROUP DEFAULT
        TABLES
          it_final = lt_final_10.

* display ALV at the end
      CALL METHOD cl_object->display_output_alv
        CHANGING
          im_final = lt_final.

    ENDIF.
  ENDIF.



Friday, November 10, 2017

smq2 queue గురుంచి PI dual stack and ecc?

Om
 
 
1.మెసేజ్ హేండిల్ చేసే queues ఎందుకు స్టక్ అవుతాయి?
2.smq2 , inbound and outbound అంటే ఏమిటి? ఏవిimportant
3.backlog queue అంటే ఏమిటి? అవి వచ్చినపుడు ఏమి చేయాలి ?
4.unlock, lock, lock activation, unlock actiation అంటే ? ఎప్పుడు చేయాలి?
5. Queue Register చేయడం, deregister చేయడం ఏంటి ? ఎప్పుడు ?
6.queue priority చేయచ్చా? ఎప్పుడు చేయాలి?
7. Message Package కి? Backlog queue కి relation ఏంటి ?

వీటన్నిటికీ answers ? ఈ  document lo   :-)

https://www.sap.com/documents/2015/08/98d0c1e9-557c-0010-82c7-eda71af511fa.html#
 

Saturday, November 4, 2017

Expression editor and ICO quide

Om


Expression editor:
You can define expressions to access a specific field of a message (payload element) with the expression editor.
Specify Context Object
1.     Select the required interface variable.
2.     Define how the field is to be accessed:
Select the corresponding context object.
The expression editor shows the context objects that are defined for the relevant service interface, and the technical context objects (namespace http://sap.com/xi/XI/System).
It also shows the context objects for all existing adapter-specific message attributes in the message header.
The namespace for adapter-specific attributes is structured as follows:
/
Pay particular attention to this convention when developing your own adapters (which you develop in a separate namespace).

All adapter metadata shipped by SAP is located in the namespace http://sap.com/xi/XI/System . The namespace for the context objects of these adapter-specific attributes is therefore structured as follows: http://sap.com/xi/XI/System/



Specify XPath Expression
  1. Select the required interface variable.
  2. Define how the field is to be accessed:
To use XPath, expand the structure of the message and double-click the required field.
If the field contains a structure, select Multiline
Note: An XPath expression is multiline if it returns a list. If the relevant checkbox has been selected, the evaluation of the expression will take into account that it is a list (and not a single value).




Example:
The condition =a is interpreted differently, depending on whether is a single or multiline expression:
single row: is the same as a
multiple row: is a list that contains the value a



Example:
You want to formulate the following condition: The booking number (BookingNumber) is great than 0100 .
Since the greater than > operator is not available in the condition editor, you can use the following solution: You define the relevant logical expression in the expression editor by means of an XPath predicate, and assign it to a node element. Using the condition editor you then just query the existence of this node element (by using the existence operator ( EX ).
This means you first create the following expression in the expression editor:
/FlightBookingOrderConfirmation [BookingID/BookingNumber > 0100]
Using the condition editor, you then formulate the following condition:
(/FlightBookingOrderConfirmation [BookingID/BookingNumber > 0100] EX)
The meaning of this condition is as follows:
A node element FlightBookingOrderConfirmation exists, to which the following applies: The content of the subelement BookingID/BookingNumber is greater than 0100 .
Note: For an expression of the form /A/B/C = G the getText() method that determines the content of this node is applied to the node .


Operator
Description
=
Equal to
Not equal to
Contains Pattern (CP)
You use this operator to query a string with a pattern. You can use the following characters for this:
  • + for any single character
  • * for any character string
Example
*mploymenttaxdeclarat+on ≈ annualemploymenttaxdeclaration.
EX
Exists
You use this operator to check the existence of the expression (in the left operand). This enables you to find out whether a substructure represented by the expression exists.
You can use this operator if you want to check whether a particular element exists in the payload, for example. To do so, enter the element you want to check in the left-hand operand and leave the right-hand operand empty. You can also use the = operand for this check

You can specify what is to happen at runtime if this occurs. You have multiple options. In the Configured Receiver frame, select the relevant radio button under If No Receiver Is Found, Proceed as Follows.






Procedure if No Receiver Found at Runtime
Setting
Behavior at Runtime
Error message
Message processing is terminated with an error.
You can correct the configuration and restart the message processing.
Recommendation
Select this setting when the underlying scenario is modeled in such a way that a receiver must always be found at runtime. If a receiver is not found at runtime, it is the result of a possible configuration error.
Ignore
Message processing is ended as defined by your configuration settings. Since no receiver is determined, the subsequent pipeline steps (determining the inbound interface, mapping, outbound processing) are not processed. An error message is not sent to the sender. When you select this setting, you cannot execute the message again.
Recommendation
Select this setting when messages for which no receiver can be found can typically occur in the underlying scenario.
Continue Message Processing with the Following Receiver:
The message is sent to a fixed predefined receiver. You can specify the receiver in the Party and Communication Component fields (using input help).
Note
These settings apply to asynchronous messages only. If a receiver cannot be found in synchronous communication, an error always occurs.



Defining Receiver and Routing Conditions



Insert Receiver Rule
If a specific receiver rule exists for the configuration you want, you can use this and add it to the integrated configuration.
To do this within the Configured Receivers frame, choose the arrow beside the Insert Line Below Selection ([PICT]) icon and choose Insert Receiver Rule. Call input help for the Rule column and select the receiver rule.
Specifying Inbound Interfaces and Mappings
  1. Specify mappings for the defined receiver inbound interfaces and specified cases.
When assigning multiple inbound interfaces, specify the Quality-of-Service:
If multiple inbound interfaces are assigned by the integrated configuration, the messages are forwarded according to the quality of service Exactly Once in Order (EOIO) at runtime. This means that the order in which the inbound interfaces are entered in the integrated configuration determines the order in which the messages are received.
You can change this default by deselecting the Maintain Order at Runtime checkbox. In this case, the quality of service Exactly Once (EO) is used to forward the message to the inbound interfaces.
Recommendation
We recommend this setting for adapters that do not support quality of service EOIO processing. This setting is also recommended if you want to avoid a single message that develops errors during delivery from stopping all subsequent messages from being delivered.

Specifying Inbound Interfaces and Mappings :






Quick reference: ICO quide
  1. Choose the Receiver Interfaces tab.
  2. Highlight the receiver (party/communication component) for which you want to specify an inbound interface (under Receiver ).
  3. Under Receiver Interfaces and Mappings specify a receiver interface for each outbound interface operation ( Name and Namespace fields).
Only interfaces that are defined for the receiver are offered in the input help.
  1. You can also specify an operation mapping for each inbound interface.
  2. When using parameterized mapping programs:
Configure the parameters of the parameterized mapping program.
If you reference an operation mapping with a parameterized mapping program in an integrated configuration, the parameters of the mapping program are displayed in the integrated configuration (under Parameters ). You can transfer values to the mapping program using the input fields in the Value column. The input help is determined by which category the parameter is from. If the parameters are from the Simple Type category, the expression editor for constants is called. If the parameters are from the Adapter category, the input help for communication channels is called.
If you have saved constants for certain parameters of the message mapping signature in an operation mapping, these parameters are not displayed in the integrated configuration that references the operation mapping. This is because in this case the value of the parameter results from the constants.
You can also specify a multi-mapping and configure a message split.

Enhanced/Extended Receiver Determinations

You can define that the receiver of a message is determined dynamically at runtime by a mapping program. Instead of creating the receivers in the receiver determination manually, you assign a mapping to the receiver determination and this returns a list of receivers at runtime.
A typical use case for this this if when you want to move the determination of the receiver to an external program (for example, a function module in an SAP  system(ECC system))