Capturing RFC call data.

Hey All,
      I am facing some issues when a RFC call is made from a Java application to SAP(Custom Function Module). The issue is that the calls fail randomly when called from the Java interface, but they run successfully when reprocessed. Also when i process it in SAP through se37 it never fails. I am looking for suggestions on is there any way to capture the Data passed during the failed RFC call. I looked into the option of FBGENDAT, but that requires change to the includes in the function module, to include and do the macro. Is there any other way besides FBGENDAT to capture the data passed during an RFC call.
Any Suggestion are Highly Appreciated.
Thanks

and check whether switching on RFC Trace via ST01 for analysis would be an option.
http://help.sap.com/saphelp_nw70/helpdata/EN/5a/ace298ca0211d194b500a0c94260a5/frameset.htm

Similar Messages

  • SAP adapter giving the merged result set (First RFC call data + Second RFC call data) for second RFC call

    I have a WCF Adapter service to call a SAP RFC. When I call the RFC first time, it gives me correct no of result set but when I call this RFC second time immediately after first call, it gives me merged result set (First Result set + Second Result Set).
    e.g. We have a RFC which receives vendor number and blank object of result set as parameter and gives back the list of purchase orders as Response in object of result set for that vendor.
    Suppose, we have a vendor "a" and vendor "b". For vendor "a" there are 5 purchase orders and for vendor "b", we have 4 purchase orders in SAP. When I call the WCF adapter service for this RFC for vendor "a",
    it gives me 5 purchase orders. Immediately after first call, when I call WCF service for vendor "b", it gives me 9 (5+4) purchase order records which is wrong.
    In brief, one RFC call is affected by its previous call.
    For each new WCF request, a new object of result set is created, connection is opened, rfc is executed and connection is closed.
    Can anybody have any idea on this?
    Thanks.
    Thanks, Nishant Gupta

    Hi,
    Please refer to the document
    http://seroter.wordpress.com/biztalk-and-wcf-part-vii-about-the-biztalk-adapter-pack/

  • RFC fetching data from table which is not commited

    Hi Experts,
                   I have a query regarding commit work.Below is the RFC that i have written
    FUNCTION ZBAPI_CREATE.
    *"*"Local Interface:
    *"  TABLES
    *"      IT_ZABAP_RFC STRUCTURE  ZBAPI_RFC_STR OPTIONAL
    *"      RETURN STRUCTURE  BAPIRET2 OPTIONAL
    CALL FUNCTION 'ZBO_BAPI_CREATE'
    TABLES
       IT_ZABAP_RFC       = IT_ZABAP_RFC
       RETURN             = return
    Break-point.
    DATA lt TYPE TABLE OF ZBAPI_RFC_STR_MAIN.
    CALL FUNCTION 'ZBAPI_SEARCH_RANGE'
    * EXPORTING
    *   IS_STR        =
    TABLES
       ET_TAB        = lt
    *   RETURN        =
    ENDFUNCTION.
    here in first RFC call i am creating a record in ZTABLE , and then at break-point
    i check the ZTABLE where it does not create any record because data is not commited into ZTABLE upto this point, but just after it i have written code for fetching data from ZTABLE but i am able to get this new record in lt.
    Can anybody please explain that from where this serach RFC is providing data because inside serach i am simply selecting data from ZTABLE.
    Regards,
    Abhishek Bajpai
    Edited by: ABHISHEK BAJPAI on Jan 28, 2009 1:12 PM

    Hi Thomas,
                     Thanks for reply , i checked in ZTABLE ,before search RFC call data is not there but if i commit explicitly only then it is showing data in ZTABLE. Actually my requirement is different -
    I have two RFCs 1. Create 2. Search , Now  from web dynpro user will call first Create RFCs but at this point it should not insert record in ZTABLE and just after it user will call another search RFC and in this search he should be able to get these newly created records.
    I want to have the functionality which a user gets when working with normal database front end like SQLPLus for Oracle. In these scenarios we see that whenever user does any insert or update the data sits in the table but still it is not committed. So there he fires Select query he sees the inserted data. But if he logs off from SQL PLUS and then logs in again, and fires Select query he does not see the data as it was not committed. I want a similiar functionalty in which if user inserts the data through Create RFC and fires the Select query through Search RFC then he can see the newly Created data also even though this data is not committed.
    Although if i call create RFC in update task it will not update ZTABLE but in this situation , if user will call search RFC he will not be able to get newly created records.
    So my requirement is that i should be able to get those records which are not commited in ZTABLE .If you have still any doubt regarding my question then please let me know.
    Regards,
    Abhishek

  • Error during loading of transaction data: An RFC call-up triggered the ...

    Dear Sirs,
    during loading of master data from a 4.6C SAP system to BI 7.0 SP9 I get the following error during processing (data packet).
    <i>"An RFC call-up triggered the exception (ID: RSAR NO: 503) "</i>
    The strange thing with this error is that it emerged today, after successfully loading master data and a subset of transaction data yesterday from same source system.
    Has anyone else come across this error, and can tell us where we should look for a possible solution? (or a better error explaination).
    The RFC connections works fine when testing in SM59, and was functioning yesterday. No relevant dumps in either system.

    Hi folks,
    I am also interested in this error.
    Thanks.

  • How to set Date in RFC call.

    Hi,
    I am trying to set date in structure when calling RFC.
    ICall = function.getImportParameterList();
    ICall.getStructure("IORDER").setValue(eDate,"EDATE");
    EDATE is date field in Structure in RFC with data type "D" and it is taking date in "dd.mm.yyyy"; formate.
    I am setting date  "dd.mm.yyyy"; in string format with eDate variable and it is throwing error.
    Can any one tell me How I can set date for "EDATE" field in proper format.
    Can I do JCO.TYPE_DATE date1 = new java.util.Date();
    And How I can convert date in acceptable format "dd.mm.yyyy"; for RFC.
    Thanks for your help
    Ashish

    Hi Sateesh,
    Thanks for your Answer.
    I used java.util.date and it works fine.
    Icall.getStructure("IOrder").setValue(new java.util.date(), "EDATE")
    I came to know that java date variabel can be passed without any extra conversion to ABAP type D variable .
    Is it OK? As I am setting  java date variable directly to ABAP type d variable in RFC.
    I have awarded you points for very helpful answer.
    Thanks.
    Ashish.

  • Send data to ECC table through RFC Call function from SAP B1 via  b1if

    Hi,
    I have created scenario in B1if which triggers from SAP B1, now I have to send this data in to ECC table, so I have created scenario for that with inbound SAP B1, outbound void and in process RFC Call atom is there but I am not getting data in receiver and also how to write xml to send data in RFC function. Function for RFC has configured from ECC end and have access of that function.
    So please help me to send data to ECC table through RFC Call function from SAP B1 (9.0) via b1if
    Thanks

    Solved by my own.

  • How can I access RFC data in transaction? (SAP to MII rfc calling)

    If I keep the incoming RFC calling by message rules with category, then using the message actions to handle, that is a solution.
    But if I want process the incoming RFC data in transaction directly, how can I get these data?

    You will need to define an XML typed Transaction input property for processing the message synchronously.  Then in the processing rule for this message you need to associate the proper transaction and map the parameter.
    So essentially the transaction and input parameter mapping in your message services processing rule replaces the category setup that you already have working.

  • RFC call history - View Parameter data

    Hi all!
    I would like to view the parameter values of an incomming RFC call made by an external system. Is this possible?
    I have had a look at ST01 and ST05 and ST11...
    (Obviously I have activated the trace with "RFC Trace" checkbox selected and run through a few calls via the external system (which were successful) and then turned off the trace)
    - ST01 and ST05 (same functionality?) do not even list the function calls!?
    - ST11 (error log!) does list the function module but it only says how many bytes were sent and received, and does not appear to have parameter specific details...
    Thanks for any clues!
    N

    Hi N K and others with a similar problem
    I am not aware of the possibiblity to see the parameters. But I had a similar problem as I am calling a function module in SAP through a webservice, but the response was not as expected. To see the input parameter I added a HTTP breakpoint in the function module I was trying to call.
    Remember in the function builder to activate the external debugger for the user making the call ("Utilities" -> "User-specific Settings" -> "ABAP Editor" -> "Debugging")
    When the debugger stopped at my brekpoint i was able to see the parameters.
    Hope this helps anyone out there
    Best regards
    Chris Christoffersen

  • RFC Call error..

    Hi All XI Expert,
    I am facing an issue with regard to RFC call from an external system.Business flow is like, Purachase Requisition(PR) is created from Ariba system/application which is passed to SAP via TIBCO Adapter to create Purchase order(PO).As per my understanding the data flow is like this: Ariba PR data's are captured by Ariba Adater and are send to TIBCO ADAPTER.This TIBCO adapter will invoke request-response service from SAP Adapter for operation of SAP RFC calling.Now i am able to successfully create PR/PO from Ariba application with amount(more than $10mn with after decimal value as 00) say $12,000,000.00 / $15,000,000.00. But while creating PR/PO from Ariba application with amount (more than $10mn with after decimal value as other than 00 i.e .99, .78, .05 etc) say $12,000,000.99 / $15,000,000.08, it gives below error which are captured in Ariba side, hence unable to create PR/PO's more than $10mn, however for less than $10mn amount of PR/PO with after decimal value as other than 00 i.e .99, .78, .05 etc, it is successfully getting created.So the problem is amount with more than $10mn PO with after decimal value as other than 00 i.e .99, .78, .05 etc.
    Error found in Ariba side for above scenarion:
    " Thu Apr 09 12:21:49 EDT 2009 (integrationExternal:error:4745): Received a Tibco generated message: 2009 Apr 9 12:21:49:079 GMT -5 SAPAdapter.SAInboundRFC.psap1 Error Application AER3-000185 CallReceive failed for operation Z_ARIBA_PO_PUSH; exception : Unable to interpret 1.10000005E7 as a number., RFC error; Group/Key/Message: 104/CONVT_NO_NUMBER/Unable to interpret 1.10000005E7 as a number.
    Where could be the problem?Does it a TIBCO Adapter config/ SAP adapter Problem / SAP RFC code issue?
    FYI....SAP RFC that is getting called doesnot contain any code of "CONVT_NO_NUMBER" .
    Awaiting your reply guys

    The problem is that in case the value of the amount is greater than $10mn, then it is converting the numeric value into exponential number 1.10000005E7. This is a number but when RFC tries to treat it as a number, it is throwing the exception. At sender Ariba system, you may change some configuration to avoid changing of numeric field to exponential field and problem would get resolved.
    Regards,
    Prateek

  • Program making a RFC call to Function Module not working in background

    Hi All,
    I have an ABAP Program which is used to do a reconciliation check between the R/3 and BI system for Invoice Data. Please find below the details of the program flow:
    1.     Program counts the number of records in the DSO table and aggregates the Net_Value based on the date range (passed as parameters)
    2.     Program calls a Function Module (RFC Call) which counts the number of records in the R/3 table and aggregates the Net_Value for the same date range
    3.     Function Module Passes back the count values and aggregated Net_Value to the program
    4.     Program compares the count and aggregated Net_Value from EDWH and MSP systems and sends an email mentioning whether the counts match or not
    However we are facing an issue.
    Whenever, we execute the program in dialog mode, it works fine and fetches results within 5-6 minutes. However if we schedule the program to run in background (parameters through a variant), it gives no results even after running for over 3-4 hours. We tried figuring it out yesterday but could not come to any conclusion. Since there is a RFC call being to the function module, we were wondering if we need to specify some other parameter as well.
    Thanks & Regards
    Dharmendra

    RFC Call is a procedure for executing remote enables function modules. It is done via the 'Remote Enabled' radio button on the function module's attribute screen.

  • RFC call error with no exception associated.

    I'm remotelly calling FM L_TO_CREATE_SINGLE. When the ubication is locked up the FM produces an error which results in lose of contact with the remote system or something like that. What I get is a dump with CALL_FUNCTION_RECEIVE_ERROR.
    I've looked at ST22 and there is not associated exception, so I can't catch it.
    How can I avoid the dump?
    Thanks in advance.

    Are you using the communications and system failure exceptions when calling the RFC?
    data: lv_message type char255.
    example:
    CALL FUNCTION 'RFC_XXXXX'
    destination 'YYYY'
    exceptions
      system_failure = 1 message lv_message.
       communication_failure = 2 message lv_message
    A short dump (or any other kind of error for that matter) will be stored in the variable lv_message.
    Kind regards,
    Micky.

  • Assigning value returned from RFC call to a global variable

    If I have an RFC call to SAP how can I assign the value returned to a global variable on my data services job?

    Hi,
    For now, it seems u haven't specified the destination properly. the call function statement must be suffixed with the 'destination' addition to make sure that the function call is an RFC and the particular function be executed at the desired destination.

  • SAP R/3 RFC Call to XI

    Hallo,
    My scenario is as follows: when sending a RFC to XI via the RFC adapter, I get a short dump with the following error: "the error occurred in an RFC call to another system (XI).The termination occurred in the function "RfcExtendedReceive" of the SAP
    Basis System, specifically in line 392 of the module
    "//bas/640_REL/src/krn/rfc/abrfcrcv.c#2".
    The internal operation just processed is "FUNC".
    The internal session was started at 20060125163632".
    The RFC adapter has been configured as the Sender and all the parameters populated with the system details.
    Has someone seen this eror before?
    Please assist.
    Thanks,
    Catherine

    Maybe you're invoking RFC synchrounously from ABAP code and your receiving scenario is on Asynchrounous interfaces? What are you doing then in XI with data sent by the RFC?
    Message was edited by: Alessandro Guarneri

  • Flat File-to-RFC question, multiple RFC calls for one file.

    Hi guys,
    I'm quite new to XI / PI and I have a question regarding a File-to-RFC scenario we're trying in NW PI 7.1.
    We have a flat file which has two lines with two fields each, let's take this as an example :
    001,001
    002,002
    The files needs to be converted to XML and then transferred to the RFC program which will update a table with the values above.
    In the ESR I've created 3 data types (z_row1,z_record1 and z_fileinput1), 1 message type (z_file2rfc_ob_mt), 1 message mapping (z_file2rfc_mm), 2 Service Interface (z_file2rfc_ob_si and z_file2rfc_ib_ztestpi) and 1 operation mapping (z_file2rfc_om).
    In the Integration Builder (ID) I've created everything required (The sender and receiver communication channels, sender and receiver agreement, receiver determination and interface mapping).
    We're also using content conversion to convert the flat file to XML, this does seem to work because I see all the lines/field in the message when it gets into PI. The problem is that the RFC can only accept two fields at a time and only the first line gets updated. I see that only the first line gets sent to the RFC.
    How can I make the RFC call for each and every line ?
    Thanks !!

    Create the RFC with table, which takes multiple lineitem as input and update the table in single call.
    If you want response back then call RFC as synchrounous else in Asynchrounous mode.
    By doing this in single call it will update the complete table.
    Gaurav Jain
    Reward Points if answer is helpful

  • RFC call results in StORAGE_PARAM_WRONG_SET

    I'm in trouble with a RFC call, the process is as following: SAP system A calls a report. This report selects FI documents via LDB SDF. After user selects one or more documents from the list I call a RFC to read the payroll posting results from system B. The call of the RFC takes place for each FI document separatly what means user selects e.g. 10 FI documents, so I have 10 RFC calls with one result list. After each RFC call I add the result table of the RFC to the output table within the report. Before calling the RFC I of course clear all relevant tables again and additionaly I also use the 'FREE' statement within the RFC to set free all the memory, so there is no data stored in internal tables. But when the user selects a great no. of FI documents to read the payroll postings sometimes the RFC cancels in system B telling me that the storage parameters were set wrong. Calling the RFC step by step by selecting the FI document in single mode from the list I don't receive this dump. Do you have an idea what to do to avoid the dump? One problem: I don't have access to system B to test there, I only can do testing in system A and therefore I have no possibility to debugg this.
    This is the code of the RFC module:
    FUNCTION y_rfc_read_payroll_postings.
    *"*"Local interface:
    *"  IMPORTING
    *"     VALUE(I_AWKEY) TYPE  AWKEY
    *"     VALUE(I_CHECKNO) TYPE  XFELD
    *"     VALUE(I_TAX) TYPE  XFELD
    *"  EXPORTING
    *"     VALUE(E_PPDHD) TYPE  PPDHD
    *"  TABLES
    *"      T_PPDIT STRUCTURE  PPDIT
    *"      T_PPOIX STRUCTURE  PPOIX
    *"      T_PPDIX STRUCTURE  PPDIX
    *"      T_PAYR STRUCTURE  PAYR OPTIONAL
    *"      T_HRPAY STRUCTURE  PC209 OPTIONAL
    *"      T_REGUTA STRUCTURE  REGUTA OPTIONAL
    *"      T_VALUES STRUCTURE  YSHR_RFC_PAYROLL_POSTING OPTIONAL
    *"      T_CSKA STRUCTURE  CSKA
    *"      RETURN STRUCTURE  BAPIRET2
    * local data
      TYPE-POOLS: pptgs.
      TYPES: BEGIN OF type_helpval,
             pernr TYPE p_pernr,
             lgart TYPE lgart,
             rel   TYPE xfeld,
            END OF type_helpval.
      TYPES: BEGIN OF type_cluster,
             pernr TYPE p_pernr,
             seqno TYPE cdseq,
             abrj TYPE pnppabrj,
             abrp TYPE pnppabrp,
             actual TYPE srtza,
             betrg TYPE ppoix-betrg,
             waers TYPE ppoix-waers,
             END OF type_cluster.
      DATA: BEGIN OF lt_ppoix_key OCCURS 0,
             pernr    LIKE ppoix-pernr,
             seqno    LIKE ppoix-seqno,
             actsign  LIKE ppoix-actsign,
             runid    LIKE ppoix-runid,
             postnum  LIKE ppoix-postnum,
            END OF lt_ppoix_key.
      FIELD-SYMBOLS: <payroll> TYPE yshr_rfc_payroll_posting.
      DATA ht_ppoix TYPE TABLE OF ppoix.
      DATA productive_runs LIKE hrpp_pernr_runtab OCCURS 0 WITH HEADER LINE.
      DATA t_rgdir TYPE TABLE OF pc261.
      DATA wa_rgdir TYPE pc261.
      DATA t_helpval TYPE TABLE OF type_helpval.
      DATA t_cluster TYPE TABLE OF type_cluster.
      DATA wa_helpval TYPE type_helpval.
      DATA wa_cluster TYPE type_cluster.
      DATA h_molga TYPE molga.
      DATA h_ltext TYPE t5utz-ltext.
      DATA wa_t512w TYPE t512w.
      DATA wa_return TYPE bapiret2.
      DATA par1 TYPE syst-msgv1.
      DATA par2 TYPE syst-msgv2.
      DATA par3 TYPE syst-msgv3.
      DATA wa_ppoix TYPE ppoix.
      FIELD-SYMBOLS: <wa_ppdit> TYPE ppdit.
      DATA wa_ppdix TYPE ppdix.
      DATA result_tab_us TYPE payus_result.
      DATA result_tab_in TYPE payin_result.
      DATA t_bt TYPE hrpay99_bt.
      DATA t_rt TYPE hrpay99_rt.
      DATA wa_bt TYPE pc209.
      DATA wa_rt TYPE pc207.
      DATA h_time(6) TYPE c.
      DATA t_inter TYPE TABLE OF pay99_international WITH HEADER LINE.
      DATA t_tax TYPE hrpayus_tax.
      DATA wa_tax TYPE pc22t.
      DATA wa_payr TYPE payr.
      DATA wa_reguta TYPE reguta.
      DATA wa_payroll TYPE yshr_rfc_payroll_posting.
      DATA t_ppopx TYPE TABLE OF ppopx.
      DATA wa_ppopx TYPE ppopx.
      DATA wa_t001 TYPE t001.
      FREE: t_ppdit, t_ppoix, t_ppdix, t_payr, t_hrpay, t_reguta,
            t_values, t_helpval, t_cluster, t_ppopx.
    * read general information
      SELECT SINGLE * FROM ppdhd INTO e_ppdhd WHERE
                           docnum EQ i_awkey.
      CASE syst-subrc.
    * everthing ok, continue
        WHEN 0.
    * get the company code and assign US flag
          SELECT SINGLE * FROM t001 INTO wa_t001 WHERE
                                    bukrs EQ e_ppdhd-bukrs.
    * exit and set err. mess.
        WHEN OTHERS.
          CALL FUNCTION 'BALW_BAPIRETURN_GET2'
            EXPORTING
              type             = 'E'
              cl               = 'HR3PRNA'
              number           = '704'
    *         PAR1             = ' '
    *         PAR2             = ' '
    *         PAR3             = ' '
    *         PAR4             = ' '
    *         LOG_NO           = ' '
    *         LOG_MSG_NO       = ' '
    *         PARAMETER        = ' '
    *         ROW              = 0
    *         FIELD            = ' '
            IMPORTING
              return           = wa_return
          wa_return-field = 'PPDHD'.
          APPEND wa_return TO return.
          EXIT.
      ENDCASE.
    * read table PPDIT
      SELECT  * FROM  ppdit INTO TABLE t_ppdit
          FOR ALL ENTRIES IN t_cska
          WHERE  docnum  = i_awkey AND
                 hkont   = t_cska-kstar.
      CASE syst-subrc.
    * everthing ok, continue
        WHEN 0.
    * exit and set err. mess.
        WHEN OTHERS.
          par1 = 'PPDIT'.
          par2 = 'document'.
          par3 = i_awkey.
          CALL FUNCTION 'BALW_BAPIRETURN_GET2'
            EXPORTING
              type             = 'E'
              cl               = '5G'
              number           = '58'
              par1             = par1
              par2             = par2
              par3             = par3
    *         PAR4             = ' '
    *         LOG_NO           = ' '
    *         LOG_MSG_NO       = ' '
    *         PARAMETER        = ' '
    *         ROW              = 0
    *         FIELD            = ' '
            IMPORTING
              return           = wa_return
          wa_return-field = 'PPDIT'.
          APPEND wa_return TO return.
          EXIT.
      ENDCASE.
    * read table PPDIX
      SELECT * FROM ppdix INTO TABLE t_ppdix
          FOR ALL ENTRIES IN t_ppdit
          WHERE evtyp  EQ e_ppdhd-evtyp AND
                runid  EQ e_ppdhd-runid AND
                docnum EQ e_ppdhd-docnum AND
                doclin =  t_ppdit-doclin.
      CASE syst-subrc.
    * everthing ok, continue
        WHEN 0.
    * exit and set err. mess.
        WHEN OTHERS.
          par1 = 'PPDIX'.
          par2 = 'runid'.
          par3 = e_ppdhd-runid.
          CALL FUNCTION 'BALW_BAPIRETURN_GET2'
            EXPORTING
              type             = 'E'
              cl               = '5G'
              number           = '58'
              par1             = par1
              par2             = par2
              par3             = par3
    *         PAR4             = ' '
    *         LOG_NO           = ' '
    *         LOG_MSG_NO       = ' '
    *         PARAMETER        = ' '
    *         ROW              = 0
    *         FIELD            = ' '
            IMPORTING
              return           = wa_return
          wa_return-field = 'PPDIX'.
          APPEND wa_return TO return.
          EXIT.
      ENDCASE.
    * read detail values on accounting level
      SELECT * FROM ppoix INTO TABLE t_ppoix
                          FOR ALL ENTRIES IN t_ppdix WHERE
                               runid EQ t_ppdix-runid AND
                               tslin EQ t_ppdix-linum.
    * read reposted documents from ppopx
      SELECT * FROM ppopx INTO TABLE t_ppopx
                          FOR ALL ENTRIES IN t_ppdix WHERE
                               runid EQ t_ppdix-runid AND
                               tslin EQ t_ppdix-linum.
      IF syst-subrc EQ 0.
    * append corresponding lines to T_ppoix
        LOOP AT t_ppopx INTO wa_ppopx.
          MOVE-CORRESPONDING wa_ppopx TO productive_runs.
          CLEAR productive_runs-runid.
          COLLECT productive_runs.
        ENDLOOP.
    * get run table
        CALL FUNCTION 'HR_EVAL_PROD_A_RUN_GET_TABLE'
          TABLES
            result_table = productive_runs.
        LOOP AT productive_runs.
          IF productive_runs-runid IS INITIAL.
            DELETE productive_runs.
          ENDIF.
        ENDLOOP.
    * fill ppoix-keys for needed ppoix
        LOOP AT productive_runs.
          LOOP AT t_ppopx INTO wa_ppopx.
            IF wa_ppopx-pernr EQ productive_runs-pernr AND
               wa_ppopx-seqno EQ productive_runs-seqno.
    * built key
              CLEAR lt_ppoix_key.
              MOVE-CORRESPONDING productive_runs TO lt_ppoix_key.
              lt_ppoix_key-postnum = wa_ppopx-postnum.
              lt_ppoix_key-actsign = 'A'.
              COLLECT lt_ppoix_key.
            ENDIF.
          ENDLOOP.
        ENDLOOP.
    * any values to append?
        READ TABLE lt_ppoix_key INDEX 1.
        IF syst-subrc EQ 0.
          SELECT * FROM ppoix INTO TABLE ht_ppoix
                   FOR ALL ENTRIES IN lt_ppoix_key
                                   WHERE pernr = lt_ppoix_key-pernr
                                   AND   seqno = lt_ppoix_key-seqno
                                   AND actsign = 'A'
                                   AND   runid = lt_ppoix_key-runid
                                   AND   postnum = lt_ppoix_key-postnum.
          IF syst-subrc EQ 0.
            LOOP AT t_ppopx INTO wa_ppopx.
              LOOP AT ht_ppoix INTO wa_ppoix WHERE
                      pernr EQ wa_ppopx-pernr AND
                      seqno EQ wa_ppopx-seqno AND
                      postnum EQ wa_ppopx-postnum.
                MOVE-CORRESPONDING wa_ppopx TO wa_ppoix.
                IF wa_ppoix-actsign <> 'A'.
                  wa_ppoix-betrg = - wa_ppoix-betrg.
                  wa_ppoix-anzhl = - wa_ppoix-anzhl.
                ENDIF.
                APPEND wa_ppoix TO t_ppoix.
                DELETE ht_ppoix.
              ENDLOOP.
            ENDLOOP.
          ENDIF.
        ENDIF.
      ENDIF.
    * check for any entries in table T_PPOIX
      READ TABLE t_ppoix INTO wa_ppoix INDEX 1.
      CASE syst-subrc.
    * everthing ok, continue
        WHEN 0.
    * exit and set err. mess.
        WHEN OTHERS.
          par1 = 'PPOIX'.
          par2 = 'runid'.
          par3 = e_ppdhd-runid.
          CALL FUNCTION 'BALW_BAPIRETURN_GET2'
            EXPORTING
              type             = 'E'
              cl               = '5G'
              number           = '58'
              par1             = par1
              par2             = par2
              par3             = par3
    *         PAR4             = ' '
    *         LOG_NO           = ' '
    *         LOG_MSG_NO       = ' '
    *         PARAMETER        = ' '
    *         ROW              = 0
    *         FIELD            = ' '
            IMPORTING
              return           = wa_return
          wa_return-field = 'PPOIX'.
          APPEND wa_return TO return.
          EXIT.
      ENDCASE.
      CHECK i_checkno EQ 'X' OR
            i_tax     EQ 'X'.
      CLEAR t_values.
    * read payroll results, determine values
      LOOP AT t_ppdit ASSIGNING <wa_ppdit>.
        LOOP AT t_ppdix INTO wa_ppdix WHERE
                evtyp = e_ppdhd-evtyp AND
                runid = e_ppdhd-runid AND
                doclin = <wa_ppdit>-doclin.
          LOOP AT t_ppoix INTO wa_ppoix WHERE
                       runid EQ e_ppdhd-runid AND
                       tslin EQ wa_ppdix-linum.
    * append anywhere for checkno
            IF i_checkno EQ 'X'.
              wa_cluster-pernr = wa_ppoix-pernr.
              wa_cluster-seqno = wa_ppoix-seqno.
              wa_cluster-abrj = <wa_ppdit>-abper+0(4).
              wa_cluster-abrp = <wa_ppdit>-abper+4(2).
              wa_cluster-actual = wa_ppoix-actsign.
              wa_cluster-betrg = wa_ppoix-betrg.
              wa_cluster-waers = wa_ppoix-waers.
              IF <wa_ppdit>-abper IS INITIAL.
    * write BONDT into field ZUONR
                CALL FUNCTION 'CU_READ_RGDIR'
                  EXPORTING
                    persnr   = wa_ppoix-pernr
                  TABLES
                    in_rgdir = t_rgdir.
                READ TABLE t_rgdir INTO wa_rgdir WITH KEY
                                 seqnr = wa_ppoix-seqno.
                IF syst-subrc EQ 0.
                  <wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
                ENDIF.
              ENDIF.
              APPEND wa_cluster TO t_cluster.
            ENDIF.
            IF i_tax EQ 'X'.
    * check if LGART is relevant
              READ TABLE t_helpval INTO wa_helpval WITH KEY
                                 pernr = wa_ppoix-pernr
                                 lgart = wa_ppoix-lgart.
              CASE syst-subrc.
                WHEN 0.
    * relevant or not
                  CASE wa_helpval-rel.
                    WHEN 'X'.
                      wa_cluster-pernr = wa_ppoix-pernr.
                      wa_cluster-seqno = wa_ppoix-seqno.
                      wa_cluster-abrj = <wa_ppdit>-abper+0(4).
                      wa_cluster-abrp = <wa_ppdit>-abper+4(2).
                      wa_cluster-actual = wa_ppoix-actsign.
                      wa_cluster-betrg = wa_ppoix-betrg.
                      wa_cluster-waers = wa_ppoix-waers.
                      IF <wa_ppdit>-abper IS INITIAL.
                        CALL FUNCTION 'CU_READ_RGDIR'
                          EXPORTING
                            persnr   = wa_ppoix-pernr
                          TABLES
                            in_rgdir = t_rgdir.
                        READ TABLE t_rgdir INTO wa_rgdir WITH KEY
                                         seqnr = wa_ppoix-seqno.
                        IF syst-subrc EQ 0.
                          <wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
                        ENDIF.
                      ENDIF.
                      APPEND wa_cluster TO t_cluster.
    * save values
                      MOVE-CORRESPONDING wa_ppoix TO wa_payroll.
                      wa_payroll-betrg = ABS( wa_payroll-betrg ).
                      APPEND wa_payroll TO t_values.
                    WHEN ' '.
                      CONTINUE.
                  ENDCASE.
                WHEN OTHERS.
    * determine values
                  CALL FUNCTION 'HR_COUNTRYGROUPING_GET'
                    EXPORTING
                      pernr           = wa_ppoix-pernr
    *              TCLAS           = 'A'
                      begda           = e_ppdhd-bldat
                      endda           = e_ppdhd-bldat
    *              WERKS           =
                    IMPORTING
                      molga           = h_molga
                    EXCEPTIONS
                      not_found       = 1
                      OTHERS          = 2
                  IF sy-subrc NE 0.
                    WRITE wa_ppoix-pernr TO par1.
                    CALL FUNCTION 'BALW_BAPIRETURN_GET2'
                      EXPORTING
                        type   = 'E'
                        cl     = 'HRPAYBR94'
                        number = '278'
                        par1   = par1
                      IMPORTING
                        return = wa_return.
                    wa_return-field = wa_ppoix-pernr.
                    APPEND wa_return TO return.
                    CONTINUE.
                  ENDIF.
                  SELECT * FROM  t512w INTO wa_t512w
                         WHERE  molga  = h_molga
                         AND    lgart  = wa_ppoix-lgart
                         AND    endda  GE e_ppdhd-bldat
                         AND    begda  LE e_ppdhd-bldat.
                    EXIT.
                  ENDSELECT.
                  IF syst-subrc EQ 0.
                    IF wa_t512w-vklas+77(1) = '2'.
                      wa_helpval-pernr = wa_ppoix-pernr.
                      wa_helpval-lgart = wa_ppoix-lgart.
                      wa_helpval-rel   = 'X'.
                      APPEND wa_helpval TO t_helpval.
                      wa_cluster-pernr = wa_ppoix-pernr.
                      wa_cluster-seqno = wa_ppoix-seqno.
                      wa_cluster-abrj = <wa_ppdit>-abper+0(4).
                      wa_cluster-abrp = <wa_ppdit>-abper+4(2).
                      wa_cluster-actual = wa_ppoix-actsign.
                      wa_cluster-betrg = wa_ppoix-betrg.
                      wa_cluster-waers = wa_ppoix-waers.
                      IF <wa_ppdit>-abper IS INITIAL.
                        CALL FUNCTION 'CU_READ_RGDIR'
                          EXPORTING
                            persnr   = wa_ppoix-pernr
                          TABLES
                            in_rgdir = t_rgdir.
                        READ TABLE t_rgdir INTO wa_rgdir WITH KEY
                                         seqnr = wa_ppoix-seqno.
                        IF syst-subrc EQ 0.
                          <wa_ppdit>-zuonr+0(10) = wa_rgdir-bondt.
                        ENDIF.
                      ENDIF.
                      APPEND wa_cluster TO t_cluster.
                      MOVE-CORRESPONDING wa_ppoix TO wa_payroll.
                      wa_payroll-betrg = ABS( wa_payroll-betrg ).
                      APPEND wa_payroll TO t_values.
                    ELSE.
                      wa_helpval-pernr = wa_ppoix-pernr.
                      wa_helpval-lgart = wa_ppoix-lgart.
                      wa_helpval-rel   = ''.
                      APPEND wa_helpval TO t_helpval.
                    ENDIF.
                  ENDIF.
              ENDCASE.
            ENDIF.
          ENDLOOP.
        ENDLOOP.
      ENDLOOP.
      SORT t_cluster.
      DELETE ADJACENT DUPLICATES FROM t_cluster.
      LOOP AT t_cluster INTO wa_cluster.
        CLEAR: result_tab_us, result_tab_in.
        CASE wa_t001-land1.
          WHEN 'US'.
            CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
              EXPORTING
    *       CLUSTERID                          = 'RU'
                employeenumber                     = wa_cluster-pernr
                sequencenumber                     = wa_cluster-seqno
    *       READ_ONLY_BUFFER                   = ' '
    *       READ_ONLY_INTERNATIONAL            = ' '
    *       ARC_GROUP                          = ' '
                check_read_authority               = ''
                filter_cumulations                 = ''
    *       CLIENT                             =
    *     IMPORTING
    *       VERSION_NUMBER_PAYVN               =
    *       VERSION_NUMBER_PCL2                =
              CHANGING
                payroll_result                     = result_tab_us
              EXCEPTIONS
                illegal_isocode_or_clusterid       = 1
                error_generating_import            = 2
                import_mismatch_error              = 3
                subpool_dir_full                   = 4
                no_read_authority                  = 5
                no_record_found                    = 6
                versions_do_not_match              = 7
                error_reading_archive              = 8
                error_reading_relid                = 9
                OTHERS                             = 10
          WHEN OTHERS.
            CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
              EXPORTING
    *       CLUSTERID                          = 'RU'
                employeenumber                     = wa_cluster-pernr
                sequencenumber                     = wa_cluster-seqno
    *       READ_ONLY_BUFFER                   = ' '
    *       READ_ONLY_INTERNATIONAL            = ' '
    *       ARC_GROUP                          = ' '
                check_read_authority               = ''
                filter_cumulations                 = ''
    *       CLIENT                             =
    *     IMPORTING
    *       VERSION_NUMBER_PAYVN               =
    *       VERSION_NUMBER_PCL2                =
              CHANGING
                payroll_result                     = result_tab_in
              EXCEPTIONS
                illegal_isocode_or_clusterid       = 1
                error_generating_import            = 2
                import_mismatch_error              = 3
                subpool_dir_full                   = 4
                no_read_authority                  = 5
                no_record_found                    = 6
                versions_do_not_match              = 7
                error_reading_archive              = 8
                error_reading_relid                = 9
                OTHERS                             = 10
        ENDCASE.
        IF sy-subrc NE 0.
          CLEAR wa_return.
          wa_return-field = wa_ppoix-pernr.
          CASE syst-subrc.
            WHEN '1'.
              wa_return-message = 'ILLEGAL_ISOCODE_OR_CLUSTERID'.
            WHEN '2'.
              wa_return-message = 'ERROR_GENERATING_IMPORT'.
            WHEN '3'.
              wa_return-message = 'IMPORT_MISMATCH_ERROR'.
            WHEN '4'.
              wa_return-message = 'SUBPOOL_DIR_FULL'.
            WHEN '5'.
              wa_return-message = 'NO_READ_AUTHORITY'.
            WHEN '6'.
              wa_return-message = 'NO_RECORD_FOUND'.
            WHEN '7'.
              wa_return-message = 'VERSIONS_DO_NOT_MATCH'.
            WHEN '8'.
              wa_return-message = 'ERROR_READING_ARCHIVE'.
            WHEN '9'.
              wa_return-message = 'ERROR_READING_RELID'.
            WHEN OTHERS.
              wa_return-message = 'OTHERS'.
          ENDCASE.
          APPEND wa_return TO return.
          CONTINUE.
        ELSE.
          CASE wa_t001-land1.
            WHEN 'US'.
              t_inter = result_tab_us-inter.
            WHEN OTHERS.
              t_inter = result_tab_in-inter.
          ENDCASE.
          APPEND t_inter.
          t_tax = result_tab_us-nat-tax.
          LOOP AT t_inter.
            t_bt = t_inter-bt.
            t_rt = t_inter-rt.
          ENDLOOP.
          LOOP AT t_values ASSIGNING <payroll> WHERE
                                           pernr EQ wa_cluster-pernr.
            CLEAR wa_rt.
            LOOP AT t_rt INTO wa_rt WHERE
                         lgart EQ <payroll>-lgart.
              wa_rt-betrg = ABS( wa_rt-betrg ).
              IF wa_rt-betrg EQ <payroll>-betrg AND NOT
                 wa_rt-cntr1 IS INITIAL.
                IF wa_t001-land1 EQ 'US'.
                  LOOP AT t_tax INTO wa_tax WHERE
                        cntr1 EQ wa_rt-cntr1.
                    EXIT.
                  ENDLOOP.
                  IF syst-subrc EQ 0.
                    <payroll>-cntr1 = wa_tax-cntr1.
                    <payroll>-taxau = wa_tax-taxau.
    * determine long text
                    SELECT SINGLE ltext FROM  t5utz INTO h_ltext
                           WHERE  taxau  = wa_tax-taxau.
                    IF syst-subrc EQ 0.
                      <payroll>-ltext = h_ltext.
                    ENDIF.
                  ENDIF.
                ENDIF.
              ENDIF.
            ENDLOOP.
          ENDLOOP.
    * check table BT abd determine check no.
          IF i_checkno EQ 'X'.
            LOOP AT t_bt INTO wa_bt.
              APPEND wa_bt TO t_hrpay.
              CASE wa_bt-zlsch.
    * check
                WHEN  'C'.
                  SELECT * FROM payr INTO wa_payr WHERE
                                 rzawe = 'C' AND
                                 laufd = wa_bt-dtadt AND
                                 pernr = wa_cluster-pernr AND
                                 seqnr = wa_cluster-seqno AND
                                 btznr = wa_bt-btznr.
                    EXIT.
                  ENDSELECT.
                  IF syst-subrc EQ 0.
    * store period in a field to find correlation later
                    wa_payr-znme4+0(4) = wa_cluster-abrj.
                    wa_payr-znme4+4(2) = wa_cluster-abrp.
                  ELSE.
                    CLEAR wa_payr.
                    wa_payr-pernr = wa_cluster-pernr.
                    wa_payr-rwbtr = wa_cluster-betrg.
                    wa_payr-waers = wa_cluster-waers.
                    APPEND wa_payr TO t_payr.
                  ENDIF.
                  APPEND wa_payr TO t_payr.
    * bank transfer
                WHEN OTHERS.
                  h_time = wa_bt-dtati+0(5).
                  h_time+5(1) = 'P'.
                  SELECT * FROM reguta INTO wa_reguta WHERE
                                 laufd = wa_bt-dtadt AND
                                 laufi = h_time.
                    EXIT.
                  ENDSELECT.
                  IF syst-subrc EQ 0.
                    APPEND wa_reguta TO t_reguta.
                  ENDIF.
              ENDCASE.
            ENDLOOP.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFUNCTION.

    Hi Sudhir,
    These settings need to be done by basis people. Anyhow, you can go to the tcode RZ11 and put in these parameters mentioned in the error message. There will be documentation available for these parameters. Try to see if the defaults are not met for any of these parameters. If you find something strange, report it to the basis. The documentations in this are very helpful. Hope this helps.
    Thanks and Regards
    Subray Hegde

Maybe you are looking for

  • Handle special character in mapping

    Hi Experts, I have requirement to handle special character in mapping. ö this tiny special charcter comes in I/O file and we cant avoid. Refering the given blog:  http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/9420 [original link is broken] FIL

  • Java and ABAP

    Hi all, Is it possible to create an object of an ABAP Class in Java and then call its methods from Java itself??? Is it possible with JCo? Or is there any other alternative to achive this?? Pls help. Thanks in advance.

  • Data socket and broadcast address

    it's posible to use broadcast or multicast address to get resources in a local net?, in order not to specify the exact ip address where the resource is located. many thanks in advance Mikel Eguiraun

  • Macbook Pro 11,3 High End Retina battery capacity

    HI, As recent as 2 weeks ago I receieved a  macbook pro that I purchased online. However due to the physical problems I had another one sent to me by apple. While waiting for the shipping company to pick up the problematic macbook pro I thought I'd c

  • Error Message ORA-31043: Element 'person' not globally defined in schema

    Hello All, We have registered 2 xsd documents as follows.. DECLARE    lc_test_xsd   CLOB; BEGIN    lc_test_xsd   := '<?xml version="1.0" encoding="UTF-8"?> <schema     xmlns="http://www.w3.org/2001/XMLSchema"     xmlns:tns="http://www.xyz.com/cicat/t