Transaction and procedure

Hi experts.
I`ve created some code for transaction and it is working fine. But when i`m trying to add this code to my procedure and execute it in transaction i recive lot`s of wird exeptions f.e. document header is missing and so on. What could be the problem pls help
regards
Michal

Hi David
i dont think its parameters folt .
TN
exec _APL_EAN @object_type  ,@transaction_type ,@num_of_cols_in_key,
@list_of_key_cols_tab_del ,@list_of_cols_val_tab_del
procedure
create procedure _APL_EAN
     @object_type nvarchar(20),                     -- SBO Object Type
     @transaction_type nchar(1),               -- [A]dd, <u>pdate, [D]elete, [C]ancel, C[L]ose
     @num_of_cols_in_key int,
     @list_of_key_cols_tab_del nvarchar(255),
     @list_of_cols_val_tab_del nvarchar(255)
as begin
declare @error int
declare @error_message varchar (100)
if(@transaction_type ='A')
     begin
     declare @isok varchar(100)
     set @isok='ok'
     declare @docentry varchar(20)
     SET @docentry = @list_of_cols_val_tab_del
     if(@object_type='13' ) -- Faktura Sprzedarzy
          begin
          declare      @czyDokPow int
          set @ISOK= isnull(( select top 1 ItemCode From inv1 where U_ean is null and DocEntry=@docentry),'null')
          if(@Isok<>'null')
               BEGIN SET @error_message =N'Prosze wprowadzic ean '
               set @error=1
               end
          else begin
               set @czyDokPow =isnull((select   top 1  DocEntry  from INV1 where DocEntry= @list_of_cols_val_tab_del and BaseEntry is null ),-1)
               if(@czyDokPow<>-1)
                    begin
                    insert into _APL_Kody (ItemCode,Ean,Magazyn,Rozmiar,Ilosc)   select ItemCode, U_ean,WhsCode,U_rozmiar,0-Quantity
                    from INV1 where DocEntry= @list_of_cols_val_tab_del
                    end
               end
          end

Similar Messages

  • Excise modvat accounts not defined for 57FC transaction and E1 excise group

    Hi Experts,
    When we do J1IF01 for Excise group E1 and Series group S1, we encounted above error.
    We check our config under Logicstics general > Tax on goods movement > India > Account determination > Specify Excise account per excise transaction, and Specify G/L account per excise transaction, for 57FC, we have assigned excise account as well sa G/L account.
    We are not sure any other config missing?
    TIA

    Please take the help of your ABAPer and regenerate the view. You can do this through se11 > Table maintenance generated. The process for regeneration is explained in the note 754773
    Procedure for regenerating the views:
    After this, run transaction SE11, select database table and input the                                            table name. In the change mode, select Utilities -> Table maintenance
    generator from the menu bar. Click on the change icon. In reason for
    change, select 'New field/sec.table in structure'. Click on 'Expert
    mode' in the pop-up that appears. Select the entire list of entries and
    press enter. The view is regenerated with the new fields.

  • Excise modvat accounts not defined for DLFC transaction and 01 excise group

    Dear All,
    While creating excise invoice through i am getting the error Excise modvat accounts not defined for DLFC transaction and 01 excise group. So i am not able to save that excise invoice. we have used the TAXINJ procedure. 
    I had already maintained the settings SPRO > Logistics general > Tax on
    goods mvmt > India > Business trasacttion > Outgoing excis einvoice >
    Maintain default excise series group
    and also maintained settings, SPRO > Logistics general > Tax on goods
    mvmt > India > Account Determination > Maintain Subtransaction Types
    Please help me inthis aspect to come out of this problem
    Regards,
    Suresh Yadav.

    Hi Suresh,
    Maintain G/L accounts for DLFC transaction under SPRO > Logistics general > Tax on goods
    mvmt > India > Account Determination > Specify G/L accounts per Excise Transaction.
    Regards,
    Rajesh

  • Exact difference between function and procedure

    exact difference between function and procedure(real time diff.....not like return value, dml....) and function do some work at the same time that work also do procedure..why function

    ranitB wrote:
    1. Function is called Inline a query. A return value is must.
    But, procedure may/may not contain a return value.Not true.
    A function may be called in a query providing it meets certain limitations (no DDL, or transactional statements such as commit/rollback etc.).
    A function does not have to be called from a query, it can be called from other PL/SQL code or from other external applications.
    Regular functions must return a value, though pipelined functions do not...
    SQL> CREATE OR REPLACE TYPE split_tbl IS TABLE OF VARCHAR2(32767);
      2  /
    Type created.
    SQL> CREATE OR REPLACE FUNCTION split (p_list VARCHAR2, p_delim VARCHAR2:=' ') RETURN SPLIT_TBL PIPELINED IS
      2      l_idx    PLS_INTEGER;
      3      l_list   VARCHAR2(32767) := p_list;
      4      l_value  VARCHAR2(32767);
      5    BEGIN
      6      LOOP
      7        l_idx := INSTR(l_list, p_delim);
      8        IF l_idx > 0 THEN
      9          PIPE ROW(SUBSTR(l_list, 1, l_idx-1));
    10          l_list := SUBSTR(l_list, l_idx+LENGTH(p_delim));
    11        ELSE
    12          PIPE ROW(l_list);
    13          EXIT;
    14        END IF;
    15      END LOOP;
    16      RETURN;
    17    END SPLIT;
    18  /
    Function created.
    SQL> SELECT column_value
      2  FROM TABLE(split('FRED,JIM,BOB,TED,MARK',','));
    COLUMN_VALUE
    FRED
    JIM
    BOB
    TED
    MARK... whilst the definition of the function shows a return type, the return statement inside the function simply returns, without a value. That's because the data is passed back through a special "pipeline", and you can write code to show that the data is available to a query as soon as it's piped, and before the function has completed (reached the return statement) if you like.
    A procedure does not return a value (And no an OUT parameter is not a "returned" value, it's a writeable parameter, there's a difference)
    2. There are some limitations in functions which is possbl through procedures.
    Like - Oracle doesn't support DML in functions called in Select queries (using PRAGMA AUTONOMOUS_TRANSACTION will help).Not strictly true. and SQL query is considered to be DML, so a function could perform a query and then be used inside another query...
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace function f_dname(p_deptno in number) return varchar2 is
      2    v_dname varchar2(10);
      3  begin
      4    select dname into v_dname
      5    from   dept
      6    where  deptno = p_deptno;
      7    return v_dname;
      8* end;
    SQL> /
    Function created.
    SQL> ed
    Wrote file afiedt.buf
      1* select empno, ename, f_dname(deptno) as dname from emp
    SQL> /
         EMPNO ENAME      DNAME
          7369 SMITH      RESEARCH
          7499 ALLEN      SALES
          7521 WARD       SALES
          7566 JONES      RESEARCH
          7654 MARTIN     SALES
          7698 BLAKE      SALES
          7782 CLARK      ACCOUNTING
          7788 SCOTT      RESEARCH
          7839 KING       ACCOUNTING
          7844 TURNER     SALES
          7876 ADAMS      RESEARCH
          7900 JAMES      SALES
          7902 FORD       RESEARCH
          7934 MILLER     ACCOUNTING
    14 rows selected.It's been discussed many times on the forum... my favourite here...
    {message:id=1668675}
    Edited by: BluShadow on 17-Sep-2012 09:22

  • TS01: Remove other flows from transaction and save

    Dear Experts,
    TRM has been customized whenever a new transaction is created (using TS01) and a specific Business Partner chosen (Counterparty), additional flows for commissions (0301 u2013 flow type) and transfer fees (0302 u2013 flow type) are automatically generated based on IMG u201CDefine Derivation Procedures and Rulesu201D and its assignment of u201Cderived flowsu201D of the specific BP.
    For a specific  transaction our customer wants to remove the second flow 0302 u2013 Transfer fees although its deal has been performed with the same Counterparty that in its derivation rules include this flow (0302 u2013 Transfer fees). The business scenario is that this counterparty has always derived flows (Commissions and Transfer fees) but for this single one transaction it does not charge transfer fees. 
    When I create the transaction (TS01), after filling the payment amount, I move to u201COther Flowsu201D tab. In this the two flows have been automatically created. Then I choose the second line with 0302 flow type and I choose u201CDelete Rowu201D. Although initially the line disappears from the u201COther flowsu201D list, when I press Enter or Save the transaction the line with 0302 flow type reappears. It seems as I cannot remove the flow.
    Additionally I cannot change the amount of the flow!
    Does anyone know how to remove the flow and save the transaction and /or change the proposed by the system amount?
    Thank you, I would appreciate any help.

    Hi,
    For transaction derived flows, you can only change the amount but cannot remove the item as it is derived by default.  In case for  a single transaction you don't want the derived flow, you can remove it from the standing instructions of the counterparty and then create the transaction and then add the instruction back. 
    Or you have to add the same flow in the reverse direction for the same amount in other flows so that is gets nullified.
    Regards,
    Ravi

  • Distributed Transactions and Linked Servers

    I'm somewhat of a novice with SQL Server but I'm learning rapidly from an application I'm developing that uses SQL Server very heavily. In conjunction with the development of this application, I have 3-4 systems set up running SQL Server and I am using those
    systems to develop the database that will ultimately support the application. I decided to try to use linked servers because I am moving data back-and-forth among the different servers frequently and I ran into some consequences that I wasn't expecting.
    I was doing a simple delete query on one of the servers (Delete from TableName Where ...) and I was expecting, of course, that it would only impact the server I was running it on; however, when the query finished after running for a long time, it was apparent
    that SQL Server had automatically escalated that simple delete query into a distributed transaction and applied it to all four of the linked servers I had defined.  I was totally surprised by that and it took some time to recover the data that was inadvertently
    lost on the other servers.
    I want to ensure that this doesn't happen again without me expecting it - I think the right way to prevent this from happening is to run the following stored procedure:
    EXEC sp_serveroption 'servername', 'remote proc transaction promotion', 'false';
    Can someone please verify that this assumption is correct and will prevent SQL Server from automatically creating distributed transactions impacting multiple servers?
    Thanks,
    Chuck

    Hello,
    Based on your description, it seems that when you connect to a SQL Server database and execute a DELETE statement to delete a recode on a table, and then the same recode were delete in the linked server which has the same table.
    As pre my understand, the statement executed on one server will not  apply to the linked servers unless you specify the logic yourself in the application. For example, you use dynamic query and exec the query synchronously on  linked servers.
    What's more, did you specify replication between this linked server?
    If I have any misunderstanding, please let me know.
    Regards,
    Fanny Liu
    If you have any feedback on our support, please click here.
    Fanny Liu
    TechNet Community Support

  • What is the diffreence between call transaction and session method

    hi gurus
    can any one suggest me
    what is the difference between call transaction and session methods
    in which cases we have to use teh call transaction and
    in which cases we have to use session method.
    thank you
    regards
    kals.

    CLASSICAL BATCH INPUT (Session Method)
    CALL TRANSACTION
    BATCH INPUT METHOD:
    This method is also called as &#8216;CLASSICAL METHOD&#8217;.
    Features:
    Asynchronous processing.
    Synchronous Processing in database update.
    Transfer data for more than one transaction.
    Batch input processing log will be generated.
    During processing, no transaction is started until the previous transaction has been written to the database.
    CALL TRANSACTION METHOD :
    This is another method to transfer data from the legacy system.
    Features:
    Synchronous processing. The system performs a database commit immediately before and after the CALL TRANSACTION USING statement.
    Updating the database can be either synchronous or asynchronous. The program specifies the update type.
    Transfer data for a single transaction.
    Transfers data for a sequence of dialog screens.
    No batch input processing log is generated.
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    Among the two methods call transaction is better compared to session bcoz data transfer is faster in it.
    Differences between call transaction and session.
    Session Method:
    1) Data is not updated in the database table until the session is processed.
    2) No sy-subrc is returned.
    3) Error log is created for error records.
    4) Updation is always synchronous.
    Call Transaction Method:
    1) Immediate updation in the database table.
    2) sy-subrc is returned.
    3)Error need to be handled explicitly.
    4) updation can be synchronous as well as asynchronous.
    2) ya u can use using the N mode no screen.
    3)u can't handle multiple transaction in call transaction.
    4) u can handle multiple transaction in session using the BDC_INSERT fm.
    5)When u go to SM35 u can able to see the error records.
    Which is best?
    That depends on your requirement. Both of them have there advantages.
    According to the situation u can choose any one of these.
    difference between batch input and call transaction in BDC Session method.
    1) synchronous processing.
    2) can tranfer large amount of data.
    3) processing is slower.
    4) error log is created
    5) data is not updated until session is processed.
    Call transaction.
    1) asynchronous processing
    2) can transfer small amount of data
    3) processing is faster.
    4) errors need to be handled explicitly
    5) data is updated automatically
    For session method,these are the function modules to b used.
    BDC_OPEN_GROUP
    BDC_INSERT
    BDC_CLOSE_GROUP
    For call transaction,this is the syntax.
    CALL TRANSACTION TCODE USING BDCDATA
    MODE A or E or N
    UPDATE A or S
    MESSAGES INTO MESSTAB.
    Take a scenario where we need to post documents in FB01 and the input file has say 2000 records (2000 documents, not line items in FB01 but 2000 records)
    In the BDC call transaction method
    We call the transaction FB01 2000 times (once for each record posting) and if the processing fails in record no 3 it can be captured and start with reocord 4.
    Eg: Loop at itab.
    call transaction FB01
    capture errors
    endloop.
    In the session method.
    We do not explicity call the transaction 2000 times, but all the records are appeneded into a session and this session is stored. The processinf of the session is done wwhenever the user wants it to be done. Hence the errors cannot be captured in the program itself
    Check these link:
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://www.sap-img.com/abap/question-about-bdc-program.htm
    http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
    http://www.planetsap.com/bdc_main_page.htm
    Batch Input Session method is asynchronous as told by others here. But the advantage of this is that you have all the error messages and the data for each transaction held persistantly. You don't have to code anything for processing them or writing the logs.
    But at the same time, the same feature can be disadvantageous if you need to react to an error or if there are too many errors to manually correct in a session. Since the session are created in the program and its execution is done seperately, you loose the trackability of such transactions.
    With a call transaction, what was a disadvantage above will become an advantage. Call transaction immediately gives you messages back and you can react to it in your program. But the disadvantage is that, if you have several hundreds of transactions to run, running them from within the program can be resource crunching affair. It will hamper the system performance and you cannot really distribute the load. Of course, you have some mechanisms with which you can overcome this, but you will have to code for it. Also, storing the messages and storing the errored transaction data etc will have to be handled by you in the program. Whereas, in batch input session, your program's job is to just create the session, after that everything is standard SAP system's responsibility.
    Ideally, you should do a call transaction if the resources are not a problem and if it fails, put the errored transaction into a session.
    You can decide based on the data volume that your BDC is processing. If data volume is high go for session else call transaction will do.The call transaction updates will be instantaneous where as session needs to be processed explictly after creation.
    Session Method
    1) Session method supports both small amount of data aswell as large amount of data
    2) data processing is asynchronus and data updation is synchronus.
    3) it process multiple apllication while perfomaning validations.
    4) in session method data will be updated in data base only after processing session only.
    5) system provide by default logfile for handling error records.
    6) it supports both foreground aswell as background process
    in bdc we use FM ...
    bdc_open_group " for creating Session
    bdc_insert " adding transaction and bdcdata table for updating database
    bdc_close_group " for closing Session
    Call Transaction
    1) Call transaction exclusively for small amout of data
    2) it supports only one apllication while perfoming validations
    3) there is no default logfile, We can explicitly provide logic for creating logfile for handling error records.
    we can create logfile by using structure....BDCMSGCOLL
    4) it doesn't support background processing.
    5) data processing is synchronous and Data updation is Synchronous( default), in
    this method also supports daya updation in asynchronus process also.
    syntax:
    Call transaction <transaction-name> using BDCDATA
    mode <A/N/E>
    update <L/A/S>
    messages into BDCMSGCOLL.
    BDC:
    Batch Data Communication (BDC) is the process of transferring data from one SAP System to another SAP system or from a non-SAP system to SAP System.
    Features :
    BDC is an automatic procedure.
    This method is used to transfer large amount of data that is available in electronic medium.
    BDC can be used primarily when installing the SAP system and when transferring data from a legacy system (external system).
    BDC uses normal transaction codes to transfer data.
    Types of BDC :
    CLASSICAL BATCH INPUT (Session Method)
    CALL TRANSACTION
    BATCH INPUT METHOD:
    This method is also called as &#8216;CLASSICAL METHOD&#8217;.
    Features:
    Asynchronous processing.
    Synchronous Processing in database update.
    Transfer data for more than one transaction.
    Batch input processing log will be generated.
    During processing, no transaction is started until the previous transaction has been written to the database.
    CALL TRANSACTION METHOD :
    This is another method to transfer data from the legacy system.
    Features:
    Synchronous processing. The system performs a database commit immediately before and after the CALL TRANSACTION USING statement.
    Updating the database can be either synchronous or asynchronous. The program specifies the update type.
    Transfer data for a single transaction.
    Transfers data for a sequence of dialog screens.
    No batch input processing log is generated.
    For BDC:
    http://myweb.dal.ca/hchinni/sap/bdc_home.htm
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&
    http://www.sap-img.com/abap/learning-bdc-programming.htm
    http://www.sapdevelopment.co.uk/bdc/bdchome.htm
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
    http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
    Check these link:
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://www.sap-img.com/abap/question-about-bdc-program.htm
    http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
    http://www.planetsap.com/bdc_main_page.htm
    call Transaction or session method ?
    Check the following links:
    http://www.sap-img.com/bdc.htm
    See below example code :
    Call three FM : BDC_OPEN_GROUP,BDC_INSERT and BDC_CLOSE_GROUP.
    Once you execute the program and it creates the session at SM35 Transaction.
    Report : ZMPPC011
    Type : Data upload
    Author : Chetan Shah
    Date : 05/05/2005
    Transport : DV3K919557
    Transaction: ??
    Description: This ABAP/4 Program creates new Production Versions
    (C223). It accepts tab-delimited spreadsheet input and
    creates BDC sessions.
    Modification Log
    Date Programmer Request # Description
    06/10/2005 Chetan Shah DV3K919557 Initial coding
    report zmppc011 no standard page heading line-size 120 line-count 55
    message-id zz.
    pool of form routines
    include zmppn001.
    Define BDC Table Structure
    data: begin of itab_bdc_tab occurs 0.
    include structure bdcdata.
    data: end of itab_bdc_tab.
    Input record layout of Leagcy File
    data: begin of itab_xcel occurs 0,
    matnr(18) type c,
    werks(4) type c,
    alnag(2) type c,
    verid(4) type c,
    text1(40) type c,
    bstmi like mkal-bstmi,
    bstma like mkal-bstma,
    adatu(10) type c,
    bdatu(10) type c,
    stlal(2) type c,
    stlan(1) type c,
    serkz(1) type c,
    mdv01(8) type c,
    elpro(4) type c,
    alort(4) type c,
    end of itab_xcel.
    data: begin of lt_pp04_cache occurs 0,
    matnr like itab_xcel-matnr,
    werks like itab_xcel-werks,
    alnag like itab_xcel-alnag,
    plnnr like mapl-plnnr,
    arbpl like crhd-arbpl,
    ktext like crtx-ktext,
    end of lt_pp04_cache.
    data: v_ssnnr(4) type n,
    v_lines_in_xcel like sy-tabix,
    v_ssnname like apqi-groupid,
    v_trans_in_ssn type i,
    wa_xcel LIKE itab_xcel,
    l_tabix like sy-tabix,
    v_matnr like rc27m-matnr,
    v_plnnr like mapl-plnnr,
    v_plnal like mapl-plnal,
    v_tcode like sy-tcode value 'C223',
    v_plnty like plas-plnty value 'R',
    v_objty like crhd-objty value 'A',
    v_plpo_steus like plpo-steus value 'PP04',
    v_verwe like crhd-verwe value '0007'.
    Parameters
    selection-screen: skip 3.
    selection-screen: begin of block 1 with frame.
    parameters: p_name like rlgrap-filename
    default 'C:\My Documents\InputFile.txt'
    obligatory,
    bdc session name prefix
    p_bdcpfx(6) default 'ZPVCRT'
    obligatory,
    number for transction per BDC session
    p_trnssn type i
    default 2000 obligatory,
    retain the BDC session after successfull execution
    p_keep like apqi-qerase
    default 'X',
    user who will be executing BDC session
    p_uname like apqi-userid
    default sy-uname
    obligatory.
    selection-screen: end of block 1.
    possible entry list (F4 dropdown) for input file name
    at selection-screen on value-request for p_name.
    *-SELECT FILE FROM USERS LOCAL PC
    call function 'WS_FILENAME_GET'
    exporting
    DEF_FILENAME = ' '
    def_path = 'C:\Temp\'
    mask = ',.,..'
    mode = 'O'
    title = 'Select File '(007)
    importing
    filename = p_name
    RC =
    exceptions
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 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.
    endif.
    begin the show
    start-of-selection.
    read data from input file
    perform transfer_xcel_to_itab.
    loop at itab_xcel.
    hang on to xcel line num
    l_tabix = sy-tabix.
    each line in the xcel file marks begining of new prod.version defn
    if num-of-trnas-in-session = 0, create new BDC session
    if v_trans_in_ssn is initial.
    perform bdc_session_open.
    endif.
    begin new bdc script for rtg create trans
    fill in bdc-data for prod.version maintenance screens
    perform bdc_build_script.
    insert the bdc script as a BDC transaction
    perform bdc_submit_transaction.
    keep track of how many BDC transactions were inserted in the BDC
    session
    add 1 to v_trans_in_ssn.
    if the user-specified num of trans in BDC session is reached OR
    if end of input file is reached, close the BDC session
    if v_trans_in_ssn = p_trnssn or
    l_tabix = v_lines_in_xcel.
    perform bdc_session_close.
    clear v_trans_in_ssn.
    endif.
    endloop.
    top-of-page.
    call function 'Z_HEADER'
    EXPORTING
    FLEX_TEXT1 =
    FLEX_TEXT2 =
    FLEX_TEXT3 =
    FORM TRANSFER_XCEL_TO_ITAB *
    Transfer Xcel Spreadsheet to SAP Internal Table *
    form transfer_xcel_to_itab.
    Read the tab-delimited file into itab
    call function 'WS_UPLOAD'
    exporting
    filename = p_name
    filetype = 'DAT'
    IMPORTING
    filelength = flength
    tables
    data_tab = itab_xcel
    exceptions
    conversion_error = 1
    file_open_error = 2
    file_read_error = 3
    invalid_table_width = 4
    invalid_type = 5
    no_batch = 6
    unknown_error = 7
    others = 8.
    if sy-subrc = 0.
    sort the data
    sort itab_xcel by matnr werks.
    clear v_lines_in_xcel.
    if no data in the file - error out
    describe table itab_xcel lines v_lines_in_xcel.
    if v_lines_in_xcel is initial.
    write: / 'No data in input file'.
    stop.
    endif.
    else.
    if file upload failed - error out
    write: / 'Error reading input file'.
    stop.
    endif.
    endform.
    FORM BDC_SESSION_OPEN *
    Open BDC Session *
    form bdc_session_open.
    create bdc session name = prefix-from-selectn-screen + nnnn
    add 1 to v_ssnnr.
    concatenate p_bdcpfx v_ssnnr into v_ssnname.
    open new bdc session
    call function 'BDC_OPEN_GROUP'
    exporting
    client = sy-mandt
    group = v_ssnname
    keep = p_keep
    user = p_uname
    exceptions
    client_invalid = 1
    destination_invalid = 2
    group_invalid = 3
    group_is_locked = 4
    holddate_invalid = 5
    internal_error = 6
    queue_error = 7
    running = 8
    system_lock_error = 9
    user_invalid = 10
    others = 11.
    endform.
    FORM BDC_BUILD_SCRIPT *
    Build BDC *
    form bdc_build_script.
    data: l_arbpl like crhd-arbpl,
    l_text1 like mkal-text1,
    l_mdv01 like mkal-mdv01,
    l_mapl like mapl.
    clear bdc-data itab - begin of new bdc transaction
    clear itab_bdc_tab.
    refresh itab_bdc_tab.
    read material cross reference tables to determine sap part#
    clear : v_matnr, v_plnnr, v_plnal.
    perform read_matnr_cross_ref using itab_xcel-matnr
    itab_xcel-werks
    changing v_matnr.
    determine the version description to use
    if itab_xcel-text1 is initial.
    l_text1 = itab_xcel-verid.
    else.
    l_text1 = itab_xcel-text1.
    endif.
    determine the routing group# and group ctr# to use
    perform read_routing .
    determine the production line to use
    if itab_xcel-mdv01 is initial.
    if not provided in the file then:
    prod line = work ctr on the last PP04 op of the rtg determined above
    perform read_wc_on_last_pp04 using v_plnnr v_plnal
    changing l_mdv01.
    NOTE: when executing the above form\routine, if v_plnnr is initial
    or v_plnal is initial, THEN l_mdv01 will automatically be
    returned blank (ie initial)
    else.
    l_mdv01 = itab_xcel-mdv01.
    endif.
    build bdc script
    perform bdc_build_script_record
    fill in initial screen
    using: 'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=ENTE',
    ' ' 'MKAL-WERKS' itab_xcel-werks,
    ' ' 'MKAL-MATNR' v_matnr,
    ' ' 'MKAL_ADMIN-DISPO' space,
    ' ' 'MKAL-PLNNR' space,
    ' ' 'MKAL_ADMIN-STTAG' space,
    ' ' 'MKAL-PLNNG' space,
    ' ' 'MKAL-MDV01' space,
    ' ' 'MKAL-PLNNM' space,
    click create button on initial screen and go to detail screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=CREA',
    fill in the detail screen and go back to initial screen
    'X' 'SAPLCMFV' '2000',
    ' ' 'BDC_OKCODE' '=CLOS',
    ' ' 'MKAL_EXPAND-MATNR' v_matnr,
    ' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
    ' ' 'MKAL_EXPAND-TEXT1' l_text1,
    ' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
    ' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
    ' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
    ' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
    ' ' 'MKAL_EXPAND-PLTYG' v_plnty,
    ' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
    ' ' 'MKAL_EXPAND-ALNAG' v_plnal,
    ' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
    ' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
    ' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
    ' ' 'MKAL_EXPAND-MDV01' l_mdv01,
    ' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
    ' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
    save the production version from initial screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=SAVE'.
    endform.
    FORM BDC_SUBMIT_TRANSACTION *
    Submit BDC Session *
    form bdc_submit_transaction.
    Load BDC script as a trqansction in BDC session
    call function 'BDC_INSERT'
    exporting
    tcode = v_tcode
    tables
    dynprotab = itab_bdc_tab
    exceptions
    internal_error = 01
    not_open = 02
    queue_error = 03
    tcode_invalid = 04.
    endform.
    FORM BDC_BUILD_SCRIPT_RECORD *
    form bdc_build_script_record using dynbegin name value.
    clear itab_bdc_tab.
    if dynbegin = 'X'.
    move: name to itab_bdc_tab-program,
    value to itab_bdc_tab-dynpro,
    'X' to itab_bdc_tab-dynbegin.
    else.
    move: name to itab_bdc_tab-fnam,
    value to itab_bdc_tab-fval.
    shift itab_bdc_tab-fval left deleting leading space.
    endif.
    append itab_bdc_tab.
    endform.
    FORM BDC_SESSION_CLOSE *
    Close BDC Session *
    form bdc_session_close.
    close the session
    call function 'BDC_CLOSE_GROUP'
    exceptions
    not_open = 1
    queue_error = 2
    others = 3.
    skip 2.
    if sy-subrc ne 0.
    write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
    else.
    write : / 'Session created:', v_ssnname,
    50 '# of transactions:', v_trans_in_ssn.
    endif.
    endform.
    *& Form read_routing_cache
    *FORM read_routing_cache USING pi_matnr
    pi_werks
    pi_alnag
    pi_verid
    pi_mdv01.
    DATA: BEGIN OF lt_plpo OCCURS 0,
    vornr LIKE plpo-vornr,
    objty LIKE crhd-objty,
    objid LIKE crhd-objid,
    arbpl LIKE crhd-arbpl,
    END OF lt_plpo,
    l_mapl_plnnr LIKE mapl-plnnr.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    SELECT plnnr INTO l_mapl_plnnr
    FROM mapl UP TO 1 ROWS
    WHERE matnr = pi_matnr AND
    werks = pi_werks AND
    plnty = 'R' AND
    plnal = pi_alnag AND
    loekz = space.
    ENDSELECT.
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    the work center was not determined yet AND
    work center was really needed for this line in the input file
    then
    read the work center from last PP04 operation on the routing
    update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    *ENDFORM. " read_last_pp04_operation_cache
    *& Form read_routing
    form read_routing.
    data: begin of lt_mapl occurs 0,
    plnnr like mapl-plnnr,
    plnal like mapl-plnal,
    end of lt_mapl,
    l_arbpl like crhd-arbpl.
    get all the rtg# and grp ctr# from MAPL
    select plnnr plnal
    into corresponding fields of table lt_mapl
    from mapl
    where matnr = v_matnr and
    werks = itab_xcel-werks and
    plnty = v_plnty and "Rate Routing
    loekz = space. "with del flag = OFF
    sort lt_mapl by plnal.
    if not itab_xcel-verid is initial.
    if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
    if itab_xcel-verid = '0001'.
    read table lt_mapl index 1.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    else.
    if the verid0001 then use the rtg-grp# and grp-ctr# of the routing
    whose work center on the last PP04 operation matches the given verid
    loop at lt_mapl.
    clear l_arbpl.
    get the work center from the last PP04 operation
    perform read_wc_on_last_pp04 using lt_mapl-plnnr
    lt_mapl-plnal
    changing l_arbpl.
    if itab_xcel-verid = l_arbpl.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    exit.
    endif.
    endloop.
    endif.
    else.
    do nothing
    endif.
    For version IDs that are other then '0000' or 'ZWIP' :--
    if itab_xcel-verid NE '0000' and
    itab_xcel-verid NE 'ZWIP'.
    if routing group# or group counter was not determined, make the
    valid-to date 99/99/9999 so that the BDC, on execution, errors out.
    if v_plnnr is initial or
    v_plnal is initial.
    itab_xcel-bdatu = '99/99/9999'.
    endif.
    endif.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    the work center was not determined yet AND
    work center was really needed for this line in the input file
    then
    read the work center from last PP04 operation on the routing
    update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    endform. " read_last_pp04_operation_cache
    *& Form read_wc_on_last_pp04
    form read_wc_on_last_pp04 using pi_plnnr
    pi_plnal
    changing pe_arbpl.
    data: begin of lt_plpo occurs 0,
    vornr like plpo-vornr,
    objty like crhd-objty,
    objid like crhd-objid,
    arbpl like crhd-arbpl,
    end of lt_plpo.
    get all the PP04 operations for the given rtg# & grp-ctr#
    select vornr eobjty eobjid e~arbpl
    into corresponding fields of table lt_plpo
    from plas as b
    inner join plpo as c
    on bplnty = cplnty and
    bplnnr = cplnnr and
    bzaehl = czaehl
    inner join crhd as e
    on carbid = eobjid
    where b~plnty = v_plnty and "Rate Routing
    b~plnnr = pi_plnnr and
    b~plnal = pi_plnal and
    c~loekz = space and "Oper Del Flag = OFF
    c~steus = v_plpo_steus and "PP04
    e~objty = v_objty. "WC Obj Type = 'A'
    read the last operation
    sort lt_plpo by vornr descending.
    read table lt_plpo index 1.
    pe_arbpl = lt_plpo-arbpl.
    endform. " read_wc_on_last_pp04
    Goto LSMW-> Select Direct Input method in 1st step. These are the standard programs for data transfer.
    Otherwise goto SPRO->SAP Reference IMG-> Under this you'll find standard data transfer programs module wise.
    Regards,
    Sunil Kumar Mutyala

  • Regarding call transaction and session method???

    HI All,
    Cud u pls let me know
    1. differences between call transaction and session???
    2. Is it possible to schedule call transaction in background?? ( all are saying MODE N = background scheduling  in call transaction.......but i dont think so)
    3. Is it posible to handle multiple transactions in call transaction ? if so,how?
    4. Is it posible to handle multiple transactions in session ? if so,how?
    5. How can we see the log in session method????

    Hi ,
    Check this documentation.
    About Session method
    In this method you transfer data from internal table to database table through sessions.
    In this method, an ABAP/4 program reads the external data that is to be entered in the SAP System and stores the data in session. A session stores the actions that are required to enter your data using normal SAP transaction i.e., Data is transferred to session which in turn transfers data to database table.
    Session is intermediate step between internal table and database table. Data along with its action is stored in session i.e., data for screen fields, to which screen it is passed, the program name behind it, and how the next screen is processed.
    When the program has finished generating the session, you can run the session to execute the SAP transactions in it. You can either explicitly start and monitor a session or have the session run in the background processing system.
    Unless session is processed, the data is not transferred to database table.
    BDC_OPEN_GROUP
    You create the session through program by BDC_OPEN_GROUP function.
    Parameters to this function are:
    • User Name: User name
    • Group: Name of the session
    • Lock Date: The date on which you want to process the session.
    • Keep: This parameter is passed as ‘X’ when you want to retain session after
    processing it or ‘ ‘ to delete it after processing.
    BDC_INSERT
    This function creates the session & data is transferred to Session.
    Parameters to this function are:
    • Tcode: Transaction Name
    • Dynprotab: BDC Data
    BDC_CLOSE_GROUP
    This function closes the BDC Group. No Parameters.
    Some additional information for session processing
    When the session is generated using the KEEP option within the BDC_OPEN_GROUP, the system always keeps the sessions in the queue, whether it has been processed successfully or not.
    However, if the session is processed, you have to delete it manually. When session processing is completed successfully while KEEP option was not set, it will be removed automatically from the session queue. Log is not removed for that session.
    If the batch-input session is terminated with errors, then it appears in the list of INCORRECT session and it can be processed again. To correct incorrect session, you can analyze the session. The Analysis function allows to determine which screen and value has produced the error. If you find small errors in data, you can correct them interactively, otherwise you need to modify batch input program, which has generated the session or many times even the data file.
    CALL TRANSACTION
    About CALL TRANSACTION
    A technique similar to SESSION method, while batch input is a two-step procedure, Call Transaction does both steps online, one after the other. In this method, you call a transaction from your program by
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>
    Messages into <MSGTAB>.
    Parameter – 1 is transaction code.
    Parameter – 2 is name of BDCTAB table.
    Parameter – 3 here you are specifying mode in which you execute transaction
    A is all screen mode. All the screen of transaction are displayed.
    N is no screen mode. No screen is displayed when you execute the transaction.
    E is error screen. Only those screens are displayed wherein you have error record.
    Parameter – 4 here you are specifying update type by which database table is updated.
    S is for Synchronous update in which if you change data of one table then all the related Tables gets updated. And sy-subrc is returned i.e., sy-subrc is returned for once and all.
    A is for Asynchronous update. When you change data of one table, the sy-subrc is returned. And then updating of other affected tables takes place. So if system fails to update other tables, still sy-subrc returned is 0 (i.e., when first table gets updated).
    Parameter – 5 when you update database table, operation is either successful or unsuccessful or operation is successful with some warning. These messages are stored in internal table, which you specify along with MESSAGE statement. This internal table should be declared like BDCMSGCOLL, a structure available in ABAP/4. It contains the following fields:
    1. Tcode: Transaction code
    2. Dyname: Batch point module name
    3. Dynumb: Batch input Dyn number
    4. Msgtyp: Batch input message type (A/E/W/I/S)
    5. Msgspra: Batch input Lang, id of message
    6. Msgid: Message id
    7. MsgvN: Message variables (N = 1 - 4)
    For each entry, which is updated in database, table message is available in BDCMSGCOLL. As BDCMSGCOLL is structure, you need to declare a internal table which can contain multiple records (unlike structure).
    Steps for CALL TRANSACTION method
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. UPLOAD or WS_UPLOAD function to upload the data from local file to itab. (Considering file is local file)
    4. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>.
    Refresh BDCTAB.
    Endloop.
    (To populate BDCTAB, You need to transfer each and every field)
    The major differences between Session method and Call transaction are as follows:
    SESSION METHOD CALL TRANSACTION
    1. Data is not updated in database table unless Session is processed. Immediate updation in database table.
    2. No sy-subrc is returned. Sy-subrc is returned.
    3. Error log is created for error records. Errors need to be handled explicitly
    4. Updation in database table is always synchronous Updation in database table can be synchronous Or Asynchronous.
    Error Handling in CALL TRANSACTION
    When Session Method updates the records in database table, error records are stored in the log file. In Call transaction there is no such log file available and error record is lost unless handled. Usually you need to give report of all the error records i.e., records which are not inserted or updated in the database table. This can be done by the following method:
    Steps for the error handling in CALL TRANSACTION
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. Internal table BDCMSG like BDCMSGCOLL
    4. Internal table similar to Ist internal table
    (Third and fourth steps are for error handling)
    5. UPLOAD or WS_UPLOAD function to upload the data from the local file to itab. (Considering file is local file)
    6. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tr.code> using <Bdctab>
    Mode <A/N/E>
    Update <S/A>
    Messages <BDCMSG>.
    Perform check.
    Refresh BDCTAB.
    Endloop.
    7 Form check.
    IF sy-subrc <> 0. (Call transaction returns the sy-subrc if updating is not successful).
    Call function Format_message.
    (This function is called to store the message given by system and to display it along with record)
    Append itab2.
    Display the record and message.
    Check this program for session method using multiple transactions.
    Have one BDC_OPEN_GROUP, multiple BDC_INSERT s and one BDC_CLOSE_GROUP.
    You should have multiple BDC_INSERT s for multiple transactions.
    call function BDC_OPENGROUP.
    Build BDC data and cal lBDC_INSERT for transaction 1
    Build BDC data and cal lBDC_INSERT for transaction 2
    Build BDC data and cal lBDC_INSERT for transaction 3
    call function BDC_CLOSE_GROUP.
    Check out this sample program
    REPORT  ztest_report
    NO STANDARD PAGE HEADING
                            LINE-SIZE 255
                            MESSAGE-ID ZRASH.
                    Internal Table Declarations                          *
    *--Internal Table for Data Uploading.
    DATA : BEGIN OF IT_FFCUST OCCURS 0,
             KUNNR(10),
             BUKRS(4),
             KTOKD(4),
             ANRED(15),
             NAME1(35),
             SORTL(10),
             STRAS(35),
             ORT01(35),
             PSTLZ(10),
             LAND1(3),
             SPRAS(2),
             AKONT(10),
           END OF IT_FFCUST.
    *--Internal Table to Store Error Records.
    DATA : BEGIN OF IT_ERRCUST OCCURS 0,
             KUNNR(10),
             EMSG(255),
           END OF IT_ERRCUST.
    *--Internal Table to Store Successful Records.
    DATA : BEGIN OF IT_SUCCUST OCCURS 0,
             KUNNR(10),
             SMSG(255),
           END OF IT_SUCCUST.
    *--Internal Table for Storing the BDC data.
    DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    *--Internal Table for storing the messages.
    DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : V_FLAG1(1) VALUE ' ',
    "Flag used for opening session.
           V_TLINES LIKE SY-TABIX,
           "For storing total records processed.
           V_ELINES LIKE SY-TABIX,
           "For storing the no of error records.
           V_SLINES LIKE SY-TABIX.
           "For storing the no of success records.
             Selection screen                                            *
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
                 V_SESNAM  LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN END OF BLOCK B1.
             Start-of-selection                                          *
    START-OF-SELECTION.
    *-- Form to upload flatfile data into the internal table.
      PERFORM FORM_UPLOADFF.
           TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
      WRITE:/ 'Details of the error and success records for the transaction'
      ULINE.
      SKIP.
             End of Selection                                            *
    END-OF-SELECTION.
    *-- Form to Generate a BDC from the Uploaded Internal table
      PERFORM FORM_BDCGENERATE.
    *--To write the totals and the session name.
      PERFORM FORM_WRITEOP.
    *&      Form  form_uploadff
        Form to upload flatfile data into the internal table.
    FORM FORM_UPLOADFF .
    *--Variable to change the type of the parameter file name.
      DATA : LV_FILE TYPE STRING.
      LV_FILE = V_FNAME.
    *--Function to upload the flat file to the internal table.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          FILENAME                      =  LV_FILE
        FILETYPE                      = 'ASC'
          HAS_FIELD_SEPARATOR           = 'X'
        HEADER_LENGTH                 = 0
        READ_BY_LINE                  = 'X'
        DAT_MODE                      = ' '
      IMPORTING
        FILELENGTH                    =
        HEADER                        =
        TABLES
          DATA_TAB                      = IT_FFCUST
        EXCEPTIONS
          FILE_OPEN_ERROR               = 1
          FILE_READ_ERROR               = 2
          NO_BATCH                      = 3
          GUI_REFUSE_FILETRANSFER       = 4
          INVALID_TYPE                  = 5
          NO_AUTHORITY                  = 6
          UNKNOWN_ERROR                 = 7
          BAD_DATA_FORMAT               = 8
          HEADER_NOT_ALLOWED            = 9
          SEPARATOR_NOT_ALLOWED         = 10
          HEADER_TOO_LONG               = 11
          UNKNOWN_DP_ERROR              = 12
          ACCESS_DENIED                 = 13
          DP_OUT_OF_MEMORY              = 14
          DISK_FULL                     = 15
          DP_TIMEOUT                    = 16
          OTHERS                        = 17
      IF SY-SUBRC = 0.
    *--Deleting the headings from the internal table.
        DELETE IT_FFCUST INDEX 1.
    *--Getting the total number of records uploaded.
        DESCRIBE TABLE IT_FFCUST LINES V_TLINES.
      ENDIF.
    ENDFORM.                    " form_uploadff
    *&      Form  Form_bdcgenerate
        Form to Generate a BDC from the Uploaded Internal table
    FORM FORM_BDCGENERATE .
    *--Generating the BDC table for the fields of the internal table.
      LOOP AT IT_FFCUST.
        PERFORM POPULATEBDC USING :
                                    'X' 'SAPMF02D' '0105',
                                    ' ' 'BDC_OKCODE'  '/00' ,
                                    ' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
                                    ' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
                                    ' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
                                    'X' 'SAPMF02D' '0110' ,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    ' ' 'KNA1-ANRED'  IT_FFCUST-ANRED,
                                    ' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
                                    ' ' 'KNA1-SORTL'  IT_FFCUST-SORTL,
                                    ' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
                                    ' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
                                    ' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
                                    ' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
                                    ' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,
                                    'X' 'SAPMFO2D' '0120',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0125',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0130',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0340',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0360',
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0210',     
                                    ' ' 'KNB1-AKONT'  IT_FFCUST-AKONT,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0215',
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0220',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0230',     
                                    ' ' 'BDC_OKCODE'  '=UPDA'.
    *--Calling the transaction 'fd01'.
        CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
        MESSAGES INTO IT_CUSTMSG.
        IF SY-SUBRC <> 0.
    *--Populating the error records internal table.
          IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_ERRCUST.
          CLEAR IT_ERRCUST.
    *--Opening a session if there is an error record.
          IF V_FLAG1 = ' '.
            PERFORM FORM_OPENSESSION.
            V_FLAG1 = 'X'.
          ENDIF.
    *--Inserting the error records into already open session.
          IF V_FLAG1 = 'X'.
            PERFORM FORM_INSERT.
          ENDIF.
    *--Populating the Success records internal table.
        ELSE.
          IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_SUCCUST.
          CLEAR IT_SUCCUST.
        ENDIF.
    *--Displaying the messages.
        IF NOT IT_CUSTMSG[] IS INITIAL.
          PERFORM FORM_FORMATMSG.
        ENDIF.
    *--Clearing the message and bdc tables.
        CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
      ENDLOOP.
    *--Getting the total no of error records.
      DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.
    *--Getting the total no of successful records.
      DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.
    *--Closing the session only if it is open.
      IF V_FLAG1 = 'X'.
        PERFORM FORM_CLOSESESS.
      ENDIF.
    ENDFORM.                    " Form_bdcgenerate
    *&      Form  populatebdc
          FOrm to Populate the BDC table.
    FORM POPULATEBDC  USING    VALUE(P_0178)
                               VALUE(P_0179)
                               VALUE(P_0180).
      IF P_0178 = 'X'.
        IT_CUSTBDC-PROGRAM = P_0179.
        IT_CUSTBDC-DYNPRO = P_0180.
        IT_CUSTBDC-DYNBEGIN = 'X'.
      ELSE.
        IT_CUSTBDC-FNAM = P_0179.
        IT_CUSTBDC-FVAL = P_0180.
      ENDIF.
      APPEND IT_CUSTBDC.
      CLEAR IT_CUSTBDC.
    ENDFORM.                    " populatebdc
    *&      Form  FORM_OPENSESSION
          Form to Open a session.
    FORM FORM_OPENSESSION .
    *--Variable to convert the given session name into reqd type.
      DATA : LV_SESNAM(12).
      LV_SESNAM = V_SESNAM.
    *--Opening a session.
      CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
         CLIENT                    = SY-MANDT
         GROUP                     = LV_SESNAM
         HOLDDATE                  = '20040805'
         KEEP                      = 'X'
         USER                      = SY-UNAME
         PROG                      = SY-CPROG
    IMPORTING
       QID                       =
       EXCEPTIONS
         CLIENT_INVALID            = 1
         DESTINATION_INVALID       = 2
         GROUP_INVALID             = 3
         GROUP_IS_LOCKED           = 4
         HOLDDATE_INVALID          = 5
         INTERNAL_ERROR            = 6
         QUEUE_ERROR               = 7
         RUNNING                   = 8
         SYSTEM_LOCK_ERROR         = 9
         USER_INVALID              = 10
         OTHERS                    = 11
      IF SY-SUBRC <> 0.
        WRITE :/ 'Session not open'.
      ENDIF.
    ENDFORM.                    " FORM_OPENSESSION
    *&      Form  FORM_INSERT
          fORM TO INSERT ERROR RECOED INTO A SESSION.
    FORM FORM_INSERT .
    *--Inserting the record into session.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          TCODE                  = 'FD01'
        POST_LOCAL             = NOVBLOCAL
        PRINTING               = NOPRINT
        SIMUBATCH              = ' '
        CTUPARAMS              = ' '
        TABLES
          DYNPROTAB              = IT_CUSTBDC
        EXCEPTIONS
          INTERNAL_ERROR         = 1
          NOT_OPEN               = 2
          QUEUE_ERROR            = 3
          TCODE_INVALID          = 4
          PRINTING_INVALID       = 5
          POSTING_INVALID        = 6
          OTHERS                 = 7
      IF SY-SUBRC <> 0.
        WRITE :/ 'Unable to insert the record'.
      ENDIF.
    ENDFORM.                    " FORM_INSERT
    *&      Form  FORM_CLOSESESS
          Form to Close the Open Session.
    FORM FORM_CLOSESESS .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          NOT_OPEN    = 1
          QUEUE_ERROR = 2
          OTHERS      = 3.
      IF SY-SUBRC <> 0.
      ENDIF.
    ENDFORM.                    " FORM_CLOSESESS
    *&      Form  FORM_FORMATMSG
          Form to format messages.
    FORM FORM_FORMATMSG .
    *--Var to store the formatted msg.
      DATA : LV_MSG(255).
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          ID        = SY-MSGID
          LANG      = SY-LANGU
          NO        = SY-MSGNO
          V1        = SY-MSGV1
          V2        = SY-MSGV2
          V3        = SY-MSGV3
          V4        = SY-MSGV4
        IMPORTING
          MSG       = LV_MSG
        EXCEPTIONS
          NOT_FOUND = 1
          OTHERS    = 2.
      IF SY-SUBRC = 0.
        WRITE :/ LV_MSG.
      ENDIF.
      ULINE.
    ENDFORM.                    " FORM_FORMATMSG
    *&      Form  form_writeop
          To write the totals and the session name.
    FORM FORM_WRITEOP .
      WRITE :/ 'Total Records Uploaded :',V_TLINES,
               / 'No of Error Records :',V_ELINES,
               / 'No of Success Records :',V_SLINES,
               / 'Name of the Session :',V_SESNAM.
      ULINE.
    ENDFORM.                    " form_writeop
    Hope this resolves your query.
    Reward all the helpful answers.
    Regards

  • Transactions across procedures

    Hi all,
    I have a procedure ProcA and procedure ProcB both of which have transactions
    Case1. ProcA calls ProcB
    Case2. ProcB can also be called independently
    How do we handle commits? (something to do with transaction_ids I guess but not sure)
    For case 1, we don’t want the commit on ProcB(Only in procA)
    But in case 2 we do need a commit.
    Any help would be much appreciated

    Like John and many others, I'm opposed to having commits in stored procedures in the vast majority of cases. Regardless, there is no magical way for ProcB to know whether you want it to commit or not. You'll need to have an argument to tell it to do so. Give it a default value of true and then you only need to specify it in the call from ProcA.

  • I Don't know how to use SBO Transaction Notification  procedure

    Hi all
    I don't know how to use SBO Transaction Notification  procedure
    can any body give me description why we use,where we use,how we use some example
    Awaiting soon reply
    Rajkumar G.

    example is for testing, if on delivery is filled ref no of vendor or not
    if @object_type = '20'  and (@transaction_type= 'A' or @transaction_type= 'U')
    begin
         if 1 = (select count(docentry) from opdn with(nolock) where docentry =@list_of_cols_val_tab_del and (numatcard is null or len(numatcard) = 0) )
         begin
              select @error =1
              select @error_message = 'vendor ref no isnt filled'
         end
    end
    next example is for creating BP as vendor and testing, if dont begin for specific sign
    if @object_type = '2' and @transaction_type= 'A'
    begin
    if left(@list_of_cols_val_tab_del, 1) = N'x' or left(@list_of_cols_val_tab_del, 1) = N'X'
         begin
              if 1 = (select count(cardcode) from ocrd where cardcode = @list_of_cols_val_tab_del and cardtype in ('S', N'S') )
                   begin
         select @error =1
              select @error_message = 'Vendor code cannot begin to X sign.'
    end
         end
    end
    is it clear?

  • Purpose of CIN and procedure to map into SAP

    Hai Gurus,
                  Can any one explain teh purpose of CIN and procedure to map to SAP
    Thanks in Advance
    sameer

    CIN stands for Country India and represents the tx structure of India in SAP. Following are the settings to be maintained in the SAP
    CIN Configuration
    1.1 Maintain Excise Registration
    Logistics general >> SAP Ref. IMG >> SPRO Maintain Excise >> Basic setting >> India >> tax on Goods Movements Registrations
    1.2 Maintain Company Code Settings
    SPRO Basic setting >> India >> tax on Goods Movements >> Logistics general >> SAP Ref. IMG Maintain Company Code Settings >>
    1.3 Maintain Plant Settings
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Maintain Plant >> Basic setting >> India >> Movements Settings
    1.4 Maintain Excise Groups
    SAP Ref. IMG >> SPRO Maintain >> Basic setting >> India >> tax on Goods Movements >> Logistics general >> Excise Groups
    1.5 Maintain Series Groups
    SAP >> SPRO >> Basic setting >> India >> tax on Goods Movements >> Logistics general >> Ref. IMG Maintain Series Groups
    1.6 Maintain Excise Duty Indicators
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Maintain Excise Duty >> Basic setting >> India >> Movements Indicators
    1.7 Maintain Subtransaction Type with Text
    India >> tax on Goods Movements >> Logistics general >> SAP Ref. IMG >> SPRO Maintain Subtransaction Type with Text >> Basic setting
    1.8 Determination of Excise Duty
    tax >> Logistics general >> SAP Ref. IMG >> SPRO Select Tax Calculation >> Determination of Excise Duty >> India >> on Goods Movements Procedure
    1.9 Maintain Excise Defaults
    SAP Ref. >> SPRO Determination of Excise >> India >> tax on Goods Movements >> Logistics general >> IMG Maintain Excise Defaults >> Duty
    1.10 Condition-Based Excise Determination
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Define Tax Code for >> Condition-Based Excise Determination >> India >> Movements Purchasing Documents
    1.11 Condition-Based Excise Determination
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Assign Tax Code to >> Condition-Based Excise Determination >> India >> Movements Company Codes
    1.12 Classify Condition Types
    SAP >> SPRO Condition-Based >> India >> tax on Goods Movements >> Logistics general >> Ref. IMG Classify Condition Types >> Excise Determination
    1.13 Maintain Chapter IDs
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Maintain Chapter ids >> Master data >> India >> Movements
    1.14 Assign Users to Material Master Screen Sequence for Excise Duty
    SPRO >> Master data >> India >> tax on Goods Movements >> Logistics general >> SAP Ref. IMG Assign Users to Material Master Screen Sequence for Excise Duty
    1.15 Specify Excise Accounts per Excise Transaction
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Specify Excise Accounts per Excise >> Account determination >> India >> Movements Transaction
    1.16 Specify G/L Accounts per Excise Transaction
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Specify G/L Accounts per Excise >> Account determination >> India >> Movements Transaction
    1.17 Incoming Excise Invoices
    SAP >> SPRO Business >> India >> tax on Goods Movements >> Logistics general >> Ref. IMG Incoming Excise Invoices >> Transactions
    1.18 Define Processing Modes Per Transaction
    Logistics general >> SAP Ref. IMG >> SPRO Define Processing Modes >> Business Transactions >> India >> tax on Goods Movements Per Transaction
    1.19 Define Reference Documents Per Transaction
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Define Reference Documents Per >> Business Transactions >> India >> Movements Transaction
    1.20 Maintain Rejection Codes
    SAP >> SPRO Business >> India >> tax on Goods Movements >> Logistics general >> Ref. IMG Maintain Rejection Codes >> Transactions
    1.21 Specify Which Movement Types Involve Excise Invoices
    Logistics >> SAP Ref. IMG >> SPRO Specify Which >> Business Transactions >> India >> tax on Goods Movements >> general Movement Types Involve Excise Invoices
    1.22 Outgoing Excise Invoices
    tax on Goods >> Logistics general >> SAP Ref. IMG >> SPRO Assign >> Outgoing Excise Invoices >> Business Transactions >> India >> Movements Billing Types to Delivery Types
    1.23 Maintain Default Excise Groups and Series Groups
    Logistics general >> SAP Ref. IMG >> SPRO >> Outgoing Excise Invoices >> Business Transactions >> India >> tax on Goods Movements Maintain Default Excise Groups and Series Groups
    1.24 Subcontracting Attributes
    tax on >> Logistics general >> SAP Ref. IMG >> SPRO Subcontrac >> Subcontracting >> Business Transactions >> India >> Goods Movementsting Attributes
    1.25 Maintain Movement Type Groups
    SPRO Business >> India >> tax on Goods Movements >> Logistics general >> SAP Ref. IMG Subcontracting >> Subcontracting >> Transactions Attributes
    1.26 Utilization Determination
    SAP >> SPRO Business >> India >> tax on Goods Movements >> Logistics general >> Ref. IMG Utilization Determination >> Utilization >> Transactions
    1.27 Specify SAPscript Forms
    tax on >> Logistics general >> SAP Ref. IMG >> SPRO Specify >> Excise Registers >> Business Transactions >> India >> Goods Movements SAPscript Forms
    1.28 Number Ranges
    SAP Ref. IMG >> SPRO Number >> Tools >> India >> tax on Goods Movements >> Logistics general >> Ranges
    1.29 Message Control
    SAP Ref. IMG >> SPRO Message >> Tools >> India >> tax on Goods Movements >> Logistics general Control
    Reward points if it helps you.

  • 하나의 DEFERRED TRANSACTION 에 대한 DEFCALL을 알수있는 PROCEDURE.

    제품 : ORACLE SERVER
    작성날짜 : 2002-11-15
    하나의 DEFERRED TRANSACTION 에 대한 DEFCALL을 알수있는 PROCEDURE.
    =================================================================
    PURPOSE
    다음은 하나의 DEFERRED TRANSACTION 에 대한 DEFCALL을 알수 있는
    PROCEDURE를 제공한다.
    Explanation
    각각의 DEFERRED TRANSACTION에대한 DEFCALL을 알 수 있음에 따라
    DEFERRED TRANSACTION 의 ENTRY 에 대하여 다음과 같은 PROCEDURE를
    이용하여 TRANSACTION을 추적할수 있다.
    Example
    다음의 SCRIPT는 REPADMIN으로 실행하여야 하며(sys user도 가능)
    SQLPLUS에서 SET SERVEROUTPUT ON 을 실행후 사용하여야 한다.
    CREATE OR REPLACE PROCEDURE show_call (t IN VARCHAR2) IS
    -- Print the argument type and values of a deferred call.
    -- Modified for Oracle8 and supports all replicated datatypes including
    -- NCHAR, NVARCHAR and all LOBs. (BFILES are not replicated [yet])
    -- NOTE: set serveroutput on before calling this procedure
    -- set serveroutput on size 100000
    argno number;
    argtyp number;
    argform number;
    callno number;
    tranid VARCHAR2(30);
    typdsc char(15);
    rowid_val rowid;
    char_val varchar2(255);
    nchar_val nvarchar2(255);
    date_val date;
    number_val number;
    varchar2_val varchar2(2000);
    nvarchar2_val nvarchar2(2000);
    raw_val raw(255);
    cursor c_defcall (t VARCHAR2) is
    select callno, deferred_tran_id, schemaname, packagename, procname,
    argcount
    from defcall
    where deferred_tran_id = t;
    BEGIN
    FOR c1rec in c_defcall (t) LOOP
    dbms_output.put_line('Call Number: ' ||c1rec.callno);
    dbms_output.put_line('Call to '
    ||c1rec.schemaname||'.'||c1rec.packagename||'.'||c1rec.procname);
    dbms_output.put_line('# of arguments: '||c1rec.argcount);
    dbms_output.put_line(' ARG ' || 'Data Type ' || 'Value');
    dbms_output.put_line(' --- ' || '--------------- ' ||
    argno := 1;
    callno := c1rec.callno; tranid := c1rec.deferred_tran_id;
    WHILE TRUE LOOP
    if argno > c1rec.argcount then
    exit;
    end if;
    argtyp := dbms_defer_query.get_arg_type(callno, argno, tranid);
    argform := dbms_defer_query.get_arg_form(callno, argno, tranid);
    if argtyp = 1 and argform = 1 then
    typdsc := 'VARCHAR2';
    varchar2_val := dbms_defer_query.get_varchar2_arg(callno, argno,
    tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(varchar2_val,'(NULL)'));
    elsif argtyp = 1 and argform = 2 then
    typdsc := 'NVARCHAR2';
    nvarchar2_val := dbms_defer_query.get_nvarchar2_arg(callno, argno,
    tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(translate(nvarchar2_val using char_cs),'(NULL)'));
    elsif argtyp = 2 then
    typdsc := 'NUMBER';
    number_val := dbms_defer_query.get_number_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(to_char(number_val),'(NULL)'));
    elsif argtyp = 11 then
    typdsc := 'ROWID';
    rowid_val := dbms_defer_query.get_rowid_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(rowid_val,'(NULL)'));
    elsif argtyp = 12 then
    typdsc := 'DATE';
    date_val := dbms_defer_query.get_date_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(to_char(date_val,'YYYY-MM-DD HH24:MI:SS'),'(NULL)'));
    elsif argtyp = 23 then
    typdsc := 'RAW';
    raw_val := dbms_defer_query.get_raw_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(raw_val,'(NULL)'));
    elsif argtyp = 96 and argform = 1 then
    typdsc := 'CHAR';
    char_val := dbms_defer_query.get_char_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(char_val,'(NULL)'));
    elsif argtyp = 96 and argform = 2 then
    typdsc := 'NCHAR';
    nchar_val := dbms_defer_query.get_nchar_arg(callno, argno, tranid);
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(translate(nchar_val using char_cs),'(NULL)'));
    elsif argtyp = 113 then
    typdsc := 'BLOB';
    varchar2_val := dbms_lob.substr(dbms_defer_query.get_blob_arg(callno,
    argno, tranid));
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(varchar2_val,'(NULL)'));
    elsif argtyp = 112 and argform = 1 then
    typdsc := 'CLOB';
    varchar2_val := dbms_lob.substr(dbms_defer_query.get_clob_arg(callno,
    argno, tranid));
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(varchar2_val,'(NULL)'));
    elsif argtyp = 112 and argform = 2 then
    typdsc := 'NCLOB';
    nvarchar2_val :=
    dbms_lob.substr(dbms_defer_query.get_nclob_arg(callno, argno, tranid));
    dbms_output.put_line(to_char(argno,'09')||') '||typdsc||'
    '||nvl(translate(nvarchar2_val using char_cs),'(NULL)'));
    end if;
    argno := argno + 1;
    end loop;
    end loop;
    end;
    Examples
    SQL> select * from deftran;
    DEFERRED_TRAN_ID DELIVERY_ORDER D START_TIM
    3.6.74010 4.9392E+12 R 05-SEP-98
    2.8.74149 4.9392E+12 R 05-SEP-98
    3.0.73506 4.9392E+12 D 02-SEP-98
    SQL> set serveroutput on size 1000000
    SQL> execute show_call('2.8.74149');
    Call Number: 0
    Call to SCOTT.DEPT$RP.REP_UPDATE
    # of arguments: 11
    ARG Data Type Value
    01) RAW 06060707
    02) NUMBER 70
    03) NUMBER (NULL)
    04) CHAR WGT
    05) CHAR (NULL)
    06) CHAR ORLANDO
    07) CHAR RMSC
    08) VARCHAR2 INITIAL
    09) VARCHAR2 MOBAY.WORLD
    10) VARCHAR2 MOBAY.WORLD
    11) VARCHAR2 N
    Call Number: 1
    Call to SCOTT.DEPT$RP.REP_UPDATE
    # of arguments: 11
    ARG Data Type Value
    01) RAW 06060707
    02) NUMBER 75
    03) NUMBER (NULL)
    04) CHAR WGT
    05) CHAR (NULL)
    06) CHAR ORLANDO
    07) CHAR RMSC
    08) VARCHAR2 MOBAY.WORLD
    09) VARCHAR2 MOBAY.WORLD
    10) VARCHAR2 MOBAY.WORLD
    11) VARCHAR2 N
    PL/SQL procedure successfully completed.
    Reference Documents
    <Note:2103883.6>

  • What is difference between enjoy transactions and Normal transactions

    What is difference between enjoy transactions and Normal transactions
    Ex:- ME22 & ME22N
    What is difference between these two.

    hi ,
    the transaction code with 'N' are created with help of object concept.
    In your case ME22 is obsolete one and ME22N is the tcode created with object concept.
    pls Reward helpful points
    Thanks
    Siva

  • Open AR transaction and Receipts

    Can you let me know the standard concurrent programs which list all the Receivables Open AR Transaction and Open AR Receipts

    The table ar_payment_Schedules_all gives you the outstanding information as on date. For eg. if the system date is 13th April and if you query the ar_payment_schedules_all table, the amount_due_remaining column will give you the open amount as on that date.
    However if you want the oustanding as on some previous date, lets say as on 31st March, in that case you have to rollback all the applications that would have occured from 1st april to 13th april.
    Find below the script that I used to get the oustanding as on any previous date. Pls. note that I am using a temp table here to populate the details.
    declare
    v_cash_receipt NUMBER;
    v_adjustment NUMBER;
    v_credit_memo NUMBER;
    v_as_of_outstanding NUMBER;
    v_cash_receipt_acctd NUMBER;
    v_adjustment_acctd NUMBER;
    v_credit_memo_acctd NUMBER;
    v_credit_memo_acctd_1               NUMBER;
    v_as_of_outstanding_acctd NUMBER;
    p_as_of_date                          DATE;
    cursor cs_get_trx (p_as_of_date1 IN Date) is
    SELECT ps.customer_id CUST_ACCOUNT_ID
    , trx.creation_date INV_CREATION_DATE
    , ps.trx_number INVOICE_NUMBER
    , trx.trx_date                              INVOICE_DATE
    , ps.gl_date GL_DATE
    , NVL(ps.amount_due_original,0) INVOICE_AMOUNT
    , NVL(ps.tax_original,0) TAX_AMOUNT
    , NVL(ps.acctd_amount_due_remaining,0) ACCTD_OUTSTANDING_AMOUNT
    , ps.due_date
    , CEIL(sysdate - ps.due_date) DAYS_OUTSTANDING
    , ps.payment_schedule_id
    , ps.number_of_due_dates INSTALLMENT_NUMBER
    , trx.customer_trx_id
    , CEIL(p_as_of_date1 - ps.due_date) DAYS_LATE_AS_OF
    FROM ra_customer_trx TRX
    , ar_payment_schedules PS
    WHERE
    trx.customer_trx_id = ps.customer_trx_id
    AND ps.gl_date <= p_as_of_date1
    AND ps.gl_date_closed > p_as_of_date1 ;
    CURSOR cs_get_receipt(p_as_of_date2 IN DATE ) IS
    SELECT ps.customer_id CUST_ACCOUNT_ID
    , ps.payment_schedule_id
    , CEIL(p_as_of_date - ps.GL_DATE) days_late_as_of_r
    , ps.gl_date
    , cr.receipt_number
    , app.cash_receipt_id
    , sum(app.acctd_amount_applied_from) ACCTD_AMOUNT_APPLIED
    FROM ar_receivable_applications app
    , ar_cash_receipts cr
    , ar_payment_schedules ps
    WHERE app.cash_receipt_id = cr.cash_receipt_id
    AND app.payment_schedule_id = ps.payment_schedule_id
    AND app.status in ('ACC', 'UNAPP', 'UNID', 'OTHER ACC' )
    AND NVL(app.confirmed_flag,'Y') = 'Y'
    AND app.gl_date <= p_as_of_date2
    AND ps.gl_date <= p_as_of_date2
    AND ps.gl_date_closed > p_as_of_date2
    AND ( ( app.reversal_gl_date IS NOT NULL AND ps.gl_date <= p_as_of_date2 )
    OR app.reversal_gl_date IS NULL
    GROUP BY ps.customer_id
    , cr.receipt_number
    , app.cash_receipt_id
    , ps.payment_schedule_id
    , ps.gl_date
    HAVING
    sum(app.acctd_amount_applied_from) <> 0 ;
    Begin
    delete zxc_aging_cust1 ;
    p_as_of_date := to_date('&Enter_as_of_date','DD-MON-RRRR') ;
         For invoice in cs_get_trx(p_as_of_date)
         LOOP
    /* cash applied after p_as_of_date */
    SELECT NVL(SUM(NVL(acctd_amount_applied_to, 0.0) +
    NVL(acctd_earned_discount_taken,0.0) +
    NVL(acctd_unearned_discount_taken,0.0)),0.0)
    INTO v_cash_receipt_acctd
    FROM ar_receivable_applications
    WHERE TRUNC(gl_date) > p_as_of_date
    AND status||'' = 'APP'
    AND NVL(confirmed_flag,'Y') = 'Y'
    AND applied_payment_schedule_id = invoice.payment_schedule_id
    AND application_type LIKE 'CASH%';
    /* adjustments applied after p_as_of_date */
    SELECT NVL(SUM(ar_adjustments.acctd_amount), 0.0)
    INTO v_adjustment_acctd
    FROM ar_adjustments
    WHERE TRUNC(gl_date) > p_as_of_date
    AND status = 'A'
    AND payment_schedule_id = invoice.payment_schedule_id;
    /* invoice credited after p_as_of_date */
    SELECT nvl(sum(nvl(acctd_amount_applied_to, 0.0)), 0.0)
    INTO v_credit_memo_acctd
    FROM ar_receivable_applications
    WHERE applied_payment_schedule_id = invoice.payment_schedule_id
    AND nvl(confirmed_flag,'Y') = 'Y'
    AND status||'' = 'APP'
    AND TRUNC(gl_date) > p_as_of_date
    AND application_type LIKE 'CM%';
    /*added new by anil patil 7/7/7 */
    /* credit memo applied after p_as_of_date */
    SELECT nvl(sum(nvl(acctd_amount_applied_to, 0.0)), 0.0)
    INTO v_credit_memo_acctd_1
    FROM ar_receivable_applications
    WHERE payment_schedule_id = invoice.payment_schedule_id
    AND nvl(confirmed_flag,'Y') = 'Y'
    AND status||'' = 'APP'
    AND TRUNC(gl_date) > p_as_of_date
    AND application_type LIKE 'CM%';
    /* calculate actual outstanding amount */
    v_as_of_outstanding_acctd := invoice.acctd_outstanding_amount + v_cash_receipt_acctd - v_adjustment_acctd +
                                            v_credit_memo_acctd - v_credit_memo_acctd_1 ;
    insert into zxc_aging_cust1
    ( customer_id ,
    invoice_number     ,
              invoice_date ,
              gl_date          ,
              invoice_amount ,
              tax_amount ,
              acctd_outstanding_amount ,
              due_date     ,
              days_outstanding ,
              installment_number ,
              days_late_as_of ,
              current_os_amt ,
              cash_receipt_amt ,
              adj_amt ,
              credit_memo_amt ,
              credit_memo_amt_1
    values
              (invoice.cust_account_id ,
              invoice.invoice_number     ,
              invoice.invoice_date ,
              invoice.gl_date          ,
              invoice.invoice_amount ,
              invoice.tax_amount ,
              v_as_of_outstanding_acctd ,
              invoice.due_date     ,
              invoice.days_outstanding ,
              invoice.installment_number ,
              invoice.days_late_as_of ,
              invoice.acctd_outstanding_amount ,
              v_cash_receipt_acctd ,
              v_adjustment_acctd ,
              v_credit_memo_acctd ,
              v_credit_memo_acctd_1
         END LOOP ;
    COMMIT;
    FOR receipt in cs_get_receipt (p_as_of_date )
    LOOP
         INSERT INTO zxc_aging_cust1( customer_id
    , invoice_number
    , trx_type
    , acctd_outstanding_amount
    , gl_date
         VALUES( receipt.cust_account_id
    , receipt.receipt_number
    , 'RECEIPT'
    , -1 * receipt.acctd_amount_applied
    , receipt.gl_date );
    END LOOP;
    COMMIT ;
    END;
    Hope this helps.
    Thanks,
    Anil

  • Material Transaction and Move Transaction Managers are Going Inactive

    hi
    it was running previously but currently it becomes inactive.can any one tell in which table to look for the error related to this problem?
    Kind Regards
    Sayantan

    Hi;
    What is your OS and EBS?
    It was working before? If yes what have you been changed on your system(patch etc)
    Please check below note:
    Material Transaction And Move Transaction Managers Are Going Inactive [ID 93507.1]
    Material Transaction and Move Transaction Managers are Going Inactive [ID 98757.1]
    Regard
    Helios

Maybe you are looking for