Substitution of BELNR

Hello to all.  We have a requirement that will entail us to substitute the value of BKPF-BELNR (SAP Document number) into the Reference (BKPF-XBLNR) and Reference Key 1 fields (BSEG-XREF1).  At the time of the substitution call-ups (separate for the header and line item), the document number obviously has not yet been defined so no value is passed.  I found an OSS note which states that you can put an asterisk in the XBLNR field and the value of BKPF-BELNR will populate in the field and this functions properly.  However, we have no solution for populating it in the XREF1 field and our developers are struggling to find a solution.  Does anyone have a potential solution?  My first idea was to have a user exit that would mimic SAP's routine for finding the document number but we plan to use buffering of document numbers to enhance performance so that logic could result in errors.

Dear Tony,
Unfortunately, all substitution call points are too early for setting BKPF-BELNR to BSEG-XREF1. Even at call point 3 (complete document), BKPF-BELNR is still not available in the system.
Consider using BSEG-ZUONR field instead of XREF1. You can set sort key (like '002' in standard) for GL account and the system then fills the document number (and fiscal year for sort key '002') in BSEG-ZUONR much later than substitution.
Best regards, Kyoko

Similar Messages

  • Problem with variable substitution.

    Hello,
    I asked this before but now I want to change the question focus.
    I have scenario from IDOC to XML file.
    The scenario is digital invoice for our company in Mexico and I end this scenario with java mapping that I import from SAP marketplace.
    Now I have request to add to the XML file name the content of the field "<ODN_NUMBER>" from the XML data.
    I try to use with variables substitution.
    My payload is:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ZINVOIC02>
    - <IDOC BEGIN="1">
    - <EDI_DC40 SEGMENT="1">
    <TABNAM>EDI_DC40</TABNAM>
    <MANDT>400</MANDT>
    <DOCNUM>0000000006599015</DOCNUM>
    <DOCREL>700</DOCREL>
    <STATUS>30</STATUS>
    <DIRECT>1</DIRECT>
    <OUTMOD>2</OUTMOD>
    <IDOCTYP>INVOIC02</IDOCTYP>
    <CIMTYP>ZINVOIC02</CIMTYP>
    <MESTYP>INVOIC</MESTYP>
    <STDMES>ZEDI</STDMES>
    <SNDPOR>SAPDEV</SNDPOR>
    <SNDPRT>LS</SNDPRT>
    <SNDPRN>DEV400ECC</SNDPRN>
    <RCVPOR>SAPDEV</RCVPOR>
    <RCVPRT>LS</RCVPRT>
    <RCVPFC>LS</RCVPFC>
    <RCVPRN>MX_INV</RCVPRN>
    <CREDAT>20100118</CREDAT>
    <CRETIM>075931</CRETIM>
    <SERIAL>20100118075931</SERIAL>
    </EDI_DC40>
    - <E1EDK01 SEGMENT="1">
    <CURCY>USD</CURCY>
    <HWAER>MXN</HWAER>
    <WKURS>10.55530</WKURS>
    <ZTERM>0090</ZTERM>
    <KUNDEUINR>ACH971209KRA</KUNDEUINR>
    <BSART>INVO</BSART>
    <BELNR>0100017295</BELNR>
    <BRGEW>0.045</BRGEW>
    <GEWEI>KGM</GEWEI>
    <FKART_RL>LR</FKART_RL>
    <RECIPNT_NO>0000012977</RECIPNT_NO>
    <FKTYP>L</FKTYP>
    - <Z1EDK01 SEGMENT="1">
    <XML_VERSION>2.0</XML_VERSION>
    <ODN_PREFIX>A</ODN_PREFIX>
    <ODN_NUMBER>1883</ODN_NUMBER>
    <DATE_TIME>2009-11-01T17:05:10</DATE_TIME>
    <DOC_SUB_TOTAL>4.22</DOC_SUB_TOTAL>
    <DOC_DISCOUNT>3.00</DOC_DISCOUNT>
    <DOC_TOTAL>1.40</DOC_TOTAL>
    </Z1EDK01>
    And the xml that I create is:
      <?xml version="1.0" encoding="utf-8" ?>
    - <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" version="2.0" serie="A" folio="1883" fecha="2009-11-01T17:05:10" sello="NxZCWU8hMJMiEc2fSZafpS81Z9rUScbBotvJ8lcW76GGpmcD2lFyAV7DlNQKecYMnQJnwMVoHfGjzhpFJrjLuRcyqU3nOnH1mE1JMxY/MjLkal0Ybo2aRKCorQxx+F/Vy5ucvyeDDFAt2gx0PeHJhFS3tJ6ssc6nryz3iUr8c=" noAprobacion="49806" anoAprobacion="2009" formaDePago="Pago en una sola exhibiciףn" noCertificado="00001000000100891274" condicionesDePago="90 DAYS FROM BILL OF LADING" subTotal="4.22" descuento="3.00" motivoDescuento="Customer DiscountCustomer Discount" total="1.40" tipoDeComprobante="ingreso">
    - <Emisor rfc="NMS940324RY6" nombre="Netafim Mexico S.A. de C.">
      <DomicilioFiscal calle="Leibnitz" noExterior="20" noInterior="901" colonia="Anzures" localidad="Mexico city" municipio="Miguel Hidalgo" estado="Distrito Federal" pais="Mexico" codigoPostal="11590" />
      </Emisor>
    - <Receptor rfc="ACH971209KRA" nombre="AGRICOLA 5 HERMANOS SA DE CV">
      <Domicilio calle="JUAN DE LA BARRERA NO 1249 NORTE" localidad="COL. CHAPULTEPEC" municipio="CULIACAN" estado="Sinaloa" pais="Mexico" codigoPostal="80040" />
      </Receptor>
    -     <Conceptos>
    I try to use with this variable:
    payload:ZINVOIC02,1,IDOC,1,E1EDK01,1,Z1EDK01,1,ODN_NUMBER,1
    I received in RWB the error:
    Attempt to process file failed with com.sap.aii.adapter.file.configuration.DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: var_filename
    Thank you in advance for your help
    Elad

    But my target is looks very strange:
      <?xml version="1.0" encoding="utf-8" ?>
    - <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" version="2.0" serie="A" folio="1883" fecha="2009-11-01T17:05:10" sello="NxZCWU8hMJMiEc2fSZafpS81Z9rUScbBotvJ8lcW76GGpmcD2lFyAV7DlNQKecYMnQJnwMVoHfGjzhpFJrjLuRcyqU3nOnH1mE1JMxY/MjLkal0Ybo2aRKCorQxx+F/Vy5ucvyeDDFAt2gx0PeHJhFS3tJ6ssc6nryz3iUr8c=" noAprobacion="49806" anoAprobacion="2009" formaDePago="Pago en una sola exhibiciףn" noCertificado="00001000000100891274" condicionesDePago="90 DAYS FROM BILL OF LADING" subTotal="4.22" descuento="3.00" motivoDescuento="Customer DiscountCustomer Discount" total="1.40" tipoDeComprobante="ingreso">
    - <Emisor rfc="NMS940324RY6" nombre="Netafim Mexico S.A. de C.">
      <DomicilioFiscal calle="Leibnitz" noExterior="20" noInterior="901" colonia="Anzures" localidad="Mexico city" municipio="Miguel Hidalgo" estado="Distrito Federal" pais="Mexico" codigoPostal="11590" />
      </Emisor>
    - <Receptor rfc="ACH971209KRA" nombre="AGRICOLA 5 HERMANOS SA DE CV">
      <Domicilio calle="JUAN DE LA BARRERA NO 1249 NORTE" localidad="COL. CHAPULTEPEC" municipio="CULIACAN" estado="Sinaloa" pais="Mexico" codigoPostal="80040" />
      </Receptor>
    I need to add folio field
    Elad

  • 'Variable Substitution' error - Expected numeric element index

    Hello everyone!
    I'm using the 'variable substitution' property in XI to replace the filename of the output file to a value in the message payload.
    Here are the parameters I provided:
    File Name Scheme: %filename%.xml
    Variable Name: filename
    Reference: payload:ORDERS05,1,recordset,1,IDOC,1,E1EDK02,BELNR,1
    I'm getting this error in the adapter engine:
    Caught exception while initializing variable substitution engine: Cannot parse pseudo-path for variable substitution: 'filename': Expected numeric element index, got 'BELNR': For input string: "BELNR"
    Can anyone tell me what this means, and how I can fix this problem?
    Thanks in advance!
    Glenn

    Yup, raj! it's IDOC to file.... I did what you asked but I'm now getting this error:
    MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: The Adapter Message Property 'FileName' was configured as mandatory element, but there is no 'DynamicConfiguration' element in the XI Message header: com.sap.aii.adapter.file.configuration.DynamicConfigurationException: The Adapter Message Property 'FileName' was configured as mandatory element, but there is no 'DynamicConfiguration' element in the XI Message header
    any idea what it means?
    Kind regards,
    Glenn

  • Variable Substitution not working correctly?!

    Hello all,
    perhaps some of you faced the same problem. It depends on the variable substitution in XI (PI).
    We have got an IDOC - FILE szenario. As far everything is working fine. The XML is created correctly.
    Now we want to get two fields from the payload to use both in our receiver file adapter as filename.
    The IDOC is a standard ORDRSP.ORDERS05.
    (1) The first field is the "job number" and located in the IDOC element: E1EDK01
    (2) The second field ist the "purchase order number" and located in the IDOC element: E1EDK02
    The fields are both named BELNR (and here seems to be a problem).
    To use the variable substitution we did as it is described in help.sap.com and used the following path to get the variables from the payload:
    (1) variable name: aufnr  ;  reference: payload:ORDERS05,1,IDOC,1,E1EDK01,1,BELNR,1
    (2) variable name: bstnr  ;  reference: payload:ORDERS05,1,IDOC,1,E1EDK02,1,BELNR,1
    these two variables "aufnr" and "bstnr" we want to use in our filenameschema. So we wrote the following for the schema:
    Ordrsp_%aufnr%_%bstnr%.xml
    The effect is that both variables always contain the same value, the value of "bstnr".
    Strange is that, if we delete one substitution i.e. (2) "aufnr" contains the correct payload value. It seems he overwrites the value of "aufnr" with the value of "bstnr" because of the same name in the IDOC structure (BELNR).
    Has anyone any idea what to do?
    Many thanks and kind regards,
    Steven
    PS: Of course points will be rewarded for helpfull answers. :o)

    Thank you for your answers!
    But there are several Problems using a dummy field in an IDOC structure. We have got a naming convension so that we can't create an IDOC-like structure named ORDRSP.ORDERS05.
    But perhaps I am thinking to complex and there is an easier way to add a dummy field to an IDOC structure.
    Could you perhaps also suggest a solution for that dummy field problem?
    Many thanks and kind regards,
    Steven

  • Receiver File Name Variable Substitution :payload: Fatal Error

    Hi all
             i have a scenario of  idoc to file.., i need to create a dynamic file name taking 1 field variable from the payload.  The idoc -xml structure in XI is :
                       <b><INVOICE03></b>
                          <b> <IDOC BEGIN="1"</b>>
                              <b><EDI_DC40 SEGMENT="1"></b>
                                          <field1> ashu </field1>
                             <b> </EDI_DC40>
                               <ENEDL20></b>
                                           <field2> rawat</field1>
                              <b> <ENEDL20>
                           </IDOC>
                        <INVOICE03></b>
    i need to pick th value of field2 , for the target file name..
    In variable substitution i had given  var = INVOICE03,1,IDOC,1,E1EDL40,1,E1EDL20,1,VBELN,1
    <i>
    STILL I AM GETTING THE ERROR </i> :varsubst.VariableDataSourceException: Caught SAXException while parsing XML payload: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XMLParser: No data allowed here: (hex) .
    NOTE : my target variable is getting populated properly.
    i tried a lot of combinations in REFERENCE VARIABLE , even  giving ( payload: xxx)
    but for all  changes it is giving the same error....
    i referred the following blogs also :
    Re: Variable substitution
    Regards
    AR

    HI
    the target payload is :
      <?xml version="1.0" encoding="UTF-8" ?>
    - <DELVRY03>
    - <IDOC BEGIN="1">
    + <EDI_DC40 SEGMENT="1">
      <TABNAM>EDI_DC40</TABNAM>
      <MANDT>900</MANDT>
      <DOCNUM>0000000002093240</DOCNUM>
      <DOCREL>46C</DOCREL>
      <STATUS>30</STATUS>
      <DIRECT>1</DIRECT>
      <OUTMOD>2</OUTMOD>
      <IDOCTYP>DELVRY03</IDOCTYP>
      <MESTYP>DESADV</MESTYP>
      <STDMES>DESADV</STDMES>
      <SNDPOR>SAPQA1</SNDPOR>
      <SNDPRT>LS</SNDPRT>
      <SNDPRN>ZLOG900</SNDPRN>
      <RCVPOR>XIDEV</RCVPOR>
      <RCVPRT>KU</RCVPRT>
      <RCVPFC>WE</RCVPFC>
      <RCVPRN>8300000717</RCVPRN>
      <CREDAT>20070820</CREDAT>
      <CRETIM>143341</CRETIM>
      <SERIAL>20070703104747</SERIAL>
      </EDI_DC40>
    - <E1EDL20 SEGMENT="1">
    <b> <VBELN>0083030974</VBELN> </b>
      <VSTEL>5000</VSTEL>
      <VKORG>STK</VKORG>
      <INCO1>C&F</INCO1>
      <INCO2>Melsele</INCO2>
      <VSBED>03</VSBED>
      <BTGEW>12000.000</BTGEW>
      <NTGEW>0.000</NTGEW>
      <GEWEI>GRM</GEWEI>
      <VOLUM>0.000</VOLUM>
      <ANZPK>00000</ANZPK>
      <PODAT>20070703</PODAT>
      <POTIM>104747</POTIM>
    + <E1EDL22 SEGMENT="1">
      <VSTEL_BEZ>ID Warehouse</VSTEL_BEZ>
      <VKORG_BEZ>Stock Transfer</VKORG_BEZ>
      <INCO1_BEZ>Cost & Freight</INCO1_BEZ>
      <VSBED_BEZ>Road</VSBED_BEZ>
      </E1EDL22>
    + <E1EDL21 SEGMENT="1">
      <LFART>ZRUS</LFART>
      <EXPKZ>X</EXPKZ>
      <LPRIO>03</LPRIO>
      <TRAGR>0001</TRAGR>
    - <E1EDL23 SEGMENT="1">
      <LFART_BEZ>Delivery:Russian Exp</LFART_BEZ>
      <LPRIO_BEZ>High</LPRIO_BEZ>
      <TRAGR_BEZ>On pallets</TRAGR_BEZ>
      </E1EDL23>
      </E1EDL21>
    + <E1EDL18 SEGMENT="1">
      <QUALF>ORI</QUALF>
      </E1EDL18>
    + <E1ADRM1 SEGMENT="1">
      <PARTNER_Q>WE</PARTNER_Q>
      <PARTNER_ID>8300000717</PARTNER_ID>
      <LANGUAGE>EN</LANGUAGE>
      <FORMOFADDR>M/s.</FORMOFADDR>
      <NAME1>NYK Logistics</NAME1>
      <STREET1>Keetberglaan 2</STREET1>
      <POSTL_COD1>B-9120</POSTL_COD1>
      <CITY1>Melsele</CITY1>
      <COUNTRY1>BE</COUNTRY1>
      <REGION>RII</REGION>
      </E1ADRM1>
    + <E1ADRM1 SEGMENT="1">
      <PARTNER_Q>OSP</PARTNER_Q>
      <PARTNER_ID>5000</PARTNER_ID>
      <LANGUAGE>EN</LANGUAGE>
      <NAME1>I/D WAREHOUSE : DELHI</NAME1>
      <NAME2>B-84/1, Okhla Phase II, New Delhi</NAME2>
      <CITY1>New Delhi</CITY1>
      <TELEFAX>CST:LC/87/051655/05/61</TELEFAX>
      <COUNTRY1>IN</COUNTRY1>
      <REGION>DEL</REGION>
      </E1ADRM1>
    + <E1ADRM1 SEGMENT="1">
      <PARTNER_Q>OSO</PARTNER_Q>
      <PARTNER_ID>STK</PARTNER_ID>
      </E1ADRM1>
    + <E1EDT13 SEGMENT="1">
      <QUALF>006</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDT13 SEGMENT="1">
      <QUALF>003</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDT13 SEGMENT="1">
      <QUALF>001</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDT13 SEGMENT="1">
      <QUALF>007</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDT13 SEGMENT="1">
      <QUALF>010</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDT13 SEGMENT="1">
      <QUALF>015</QUALF>
      <NTANF>20070703</NTANF>
      <NTANZ>000000</NTANZ>
      <NTEND>20070703</NTEND>
      <NTENZ>000000</NTENZ>
      <ISDD>00000000</ISDD>
      <ISDZ>000000</ISDZ>
      <IEDD>00000000</IEDD>
      <IEDZ>000000</IEDZ>
      </E1EDT13>
    + <E1EDL33 SEGMENT="1">
      <ALAND>IN</ALAND>
      <EXPVZ>4</EXPVZ>
      <ZOLLA>0001</ZOLLA>
      <IEVER>3</IEVER>
    - <E1EDL34 SEGMENT="1">
      <EXPVZ_BEZ>Air</EXPVZ_BEZ>
      <ZOLLA_BEZ>New Delhi</ZOLLA_BEZ>
      <IEVER_BEZ>Road</IEVER_BEZ>
      </E1EDL34>
      </E1EDL33>
    + <E1EDL24 SEGMENT="1">
      <POSNR>000010</POSNR>
      <MATNR>000000000001005372</MATNR>
      <ARKTX>ALPRAZOMED TAB 0.5MG 5X10B BE</ARKTX>
      <MATKL>S5202</MATKL>
      <WERKS>5000</WERKS>
      <LFIMG>2.000</LFIMG>
      <VRKME>15S</VRKME>
      <LGMNG>10.000</LGMNG>
      <MEINS>S10</MEINS>
      <NTGEW>0.000</NTGEW>
      <BRGEW>12000.000</BRGEW>
      <GEWEI>GRM</GEWEI>
      <VOLUM>0.000</VOLUM>
      <VOLEH>CMQ</VOLEH>
      <LADGR>Z002</LADGR>
      <TRAGR>0001</TRAGR>
      <VTWEG>ST</VTWEG>
      <SPART>20</SPART>
      <GRKOR>000</GRKOR>
      <POSEX>000000</POSEX>
    - <E1EDL25 SEGMENT="1">
      <LADGR_BEZ>Injectibles- for MP</LADGR_BEZ>
      <TRAGR_BEZ>On pallets</TRAGR_BEZ>
      <VTWEG_BEZ>Stock Transfer</VTWEG_BEZ>
      <SPART_BEZ>Formulations</SPART_BEZ>
      </E1EDL25>
    - <E1EDL26 SEGMENT="1">
      <PSTYV>NLN</PSTYV>
      <MATKL>S5202</MATKL>
      <PRODH>010080010010100102</PRODH>
      <UMVKZ>5</UMVKZ>
      <UMVKN>1</UMVKN>
      <UEBTO>0.0</UEBTO>
      <UNTTO>0.0</UNTTO>
      <XCHBW>1</XCHBW>
      <MVGR1>U</MVGR1>
      <MVGR2>U</MVGR2>
      <MVGR3>U</MVGR3>
      <MVGR4>U</MVGR4>
      <MVGR5>U</MVGR5>
    - <E1EDL27 SEGMENT="1">
      <PSTYV_BEZ>StandStockTransItem</PSTYV_BEZ>
      <MATKL_BEZ>Belgium</MATKL_BEZ>
      <PRODH_BEZ>Tablets</PRODH_BEZ>
      <WERKS_BEZ>Export Warehouse</WERKS_BEZ>
      <MVGR1_BEZ>Unasigned</MVGR1_BEZ>
      <MVGR2_BEZ>Unassigned</MVGR2_BEZ>
      <MVGR3_BEZ>Unassigned</MVGR3_BEZ>
      <MVGR4_BEZ>Unasigned</MVGR4_BEZ>
      <MVGR5_BEZ>Unassigned</MVGR5_BEZ>
      </E1EDL27>
      </E1EDL26>
    - <E1EDL35 SEGMENT="1">
      <GRWRT>0.00</GRWRT>
      </E1EDL35>
    - <E1EDL43 SEGMENT="1">
      <QUALF>V</QUALF>
      <BELNR>7200000025</BELNR>
      <POSNR>000010</POSNR>
      </E1EDL43>
      </E1EDL24>
      </E1EDL20>
      </IDOC>
      </DELVRY03>
    i need <VBELN>0083030974</VBELN>  in file name
    Regards
    AR

  • Substitution not working for transaction F110

    Hi Folks ,
    I have created a Substitution for FI transactions for substituting a Header field. I have added 3 transactions (F-28, FB01 and F110) to the pre requisite of the substitution.
    The susbtitution works perfectly fine for the transaction FB01 and F-28, but is not triggered when I run transaction F110.
    Could you please tell me what can be the issue?
    Secondly, do the Automatic Payment Program (APP, transaction F110) creates an accounting document number BELNR? Where can I get that number in the program?
    Thanks in advance !!!!!
    Regards,
    Sud.

    F110 is the transaction code for automatic payment run program; the transaction execution happens in the background and in normal way, catching a break point in related substitution/validation exits might not be possible.
    Main programs associated with this transaction are SAPF110V (Entering Payment Run) and SAPF110S (Payment Program). In program SAPF110S, variables XDEBUG and ONLINE decides whether the run should be in online or in debugging mode. Flag the variable leads the execution to debugging mode.
    Create a payment run via F110 transaction and do a proposal run.
    Execute SE38 transaction code and select program SAPF110S and open in display mode.
    Find variable “XDEBUG” and set break point at “XDEBUG” assignment (XDEBUG = SPACE).
    Now execute OBBH transaction code and select desired substitution and go to Menu Extras -> Expert Trace -> Set Breakpoint.
    Got to the substitution include in which exit is defined. Set a session breakpoint at the U exit.
    Execute program SAPF110S with the above created payment run id and date.
    Execution of SAPF110S stops at XDEBUG variable assignment. Now change value of variables XDEBUG and ONLINE as ‘X’, which enables the debugging mode and continue execution.
    Execution stops at the session breakpoint placed in the U exit.
    Check with above method to reach your substitution. If it reached then you can use ABAP stack to get variable values used in some other programs which is already available in the ABAP stack.
    Data:     lv_stru TYPE string,
              lv_bkpf TYPE bkpf.
    FIELD-SYMBOLS: <fs_bkpf> TYPE bkpf.
    * Assign BKPF reference area in SAPF110S payment program
      lv_stru = '(SAPF110S)BKPF'.
      ASSIGN (lv_stru) TO <fs_bkpf>.

  • Filename in J2SE Adapter with Variable Substitution

    Hello,
    Within the J2EE receiver fileadapter (and ftp) from SP13 it is possible to compose the target filename and directory based on the payload of a message using variable substitution.
    I wonder if it is also possible to use variable substitution with the J2SE fileadapter. For this it is not documented but i thougth that the same java libraries are used for the J2EE an J2SE file-adapters.
    Aybody??
    Really Nobody??
    Message was edited by: Emile Hermans

    Hello,
    the J2SE Adapter does not support variable subsition. Therefore we created our own class which gets called from the main SAP XI class "XMB2FileProcessor.class" wich is in the jar "aii_msg_adapter.jar". In your own class you can do what ever you need to chane the file name. In the configuration you can set your own parameter to search the payload for a string you want to replace. We also had to come up with our own timestamp, e.g. file2005-11-10 which SAP does not let you do, only the full timestamp is possible.
    One other nice thing is that you can develop our JAVA class local and test it with your local J2SE Adapter Engine on you PC before you deploy it.
    Steps to do:
    1. JAD the SAP class
    2. Put a call in the SAP class
    3. Compile the class
    4. Put the class back in the archive
    5. Create your own class
    6. Create a jar file for it
    7. Put the jar file in the tech_adapter directory
    8. Change the run_adapter start cmd to include your jar file
    It works great, the only issue is if you patch the J2SE engine you have to do step 1 to 4 again but that should it very easy to do.
    Cheers
    Stefan

  • Error in Variable Substitution

    Dear All,
    Result Payload:
    <ns1:MT_Level1 xmlns:ns1="http://test.com">
    <Header>
      <Separator>,</Separator>
    </Header>
      <Detail>
      <FileNumber>30</FileNumber>
      <LinkToNextLevel />
      <Expansion1>0</Expansion1>
      <Expansion2>0</Expansion2>
      <Expansion3>0</Expansion3>
      <Expansion4>0</Expansion4>
      </Detail>
    <Detail>
      <FileNumber>30</FileNumber>
      <LinkToNextLevel />
      <Expansion1>0</Expansion1>
      <Expansion2>0</Expansion2>
      <Expansion3>0</Expansion3>
      <Expansion4>0</Expansion4>
      </Detail>
      <FileNode>
      <FileName>test.txt</FileName>
      </FileNode>
      </ns1:MT_Level1>
    I want to use "File Name" in the "File Node" node for my variable substitution.
    In the configuration:
    File Name Scheme = %filename%
    Variable = filename
    reference = payload: Messages, 1, Message, 1, MT_Level1, 1, FileNode, 1, FileName, 1
    Note: I'm using multimapping (1 to N).
    File Name path is /ns0:Messages/ns0:Message2/ns1:MT_Level1/FileNode/FileName ( from right click in the file name --> copy path).
    I got following error:
    "Attempt to process file failed with com.sap.aii.adapter.file.configuration.DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: filename"
    Please advise!
    Best Regards,
    Victor.

    Dear All,
    My problem is solved!
    The issue is because I don't put the interface mappings sequence as the same sequence as the message mappings sequence. Hence the structure name that i put in the variable substitution all are not match with the structure name in the payload even though all have the file name element.
    So what i did is i have to reorder the sequence of my message mappings to be the same sequence as the interface mappings sequence.
    Thanks for all that trying to help!
    Appreciated it guys.
    BTW, for the variable reference it's correct that i no need to put message and message2 as the reference.
    payload:MT_Level1,1,FileNode,1,FileName,1 will do.
    Best Regards,
    Victor.

  • Problem in variable substitution

    Hi experts,
    I need help for a strange problem:
    I have a proxy to file scenario in which I create an xml file; I need to use a field of the mapping to create filename.
    In Receiver CChannel I have used variable substitution, but in message monitoring I got this error:
    Delivery of the message to the application using connection File_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: Folio: com.sap.aii.adapter.file.configuration.DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: Folio.
    FileName Scheme is: DM65_%Folio%.xml
    In variable substitution I have used this reference:
    Folio =    payload:MT_MexicanElectronicInvoice_MyFirm,1,CABFAC,1,Folio,1
    This is the payload of the message that ends in error:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_MexicanElectronicInvoice_MyFirm xmlns:ns0="urn:MyFirm-EDICOM:MexElectronicInvoice">
    - <CABFAC>
      <IdLabel>CABFAC</IdLabel>
      <Version>3.0</Version>
      <Folio>2100000003</Folio>
      <FecHac>16-11-2011 17:11:17</FecHac>
      <FPago>Advance payment</FPago>
      <Subtotal>9.976,00</Subtotal>
      <TotalFac>11.568,16</TotalFac>
    What is the problem? wrong reference?
    thanks
    Fabio

    Hi,
         Everything looks fine.
    Make sure that there is no extra space after your "%Folio%" under the Variable Substitution.
    Make sure that "Adapter Specific message Attributes" is unchecked in the CC.
    You can do a change in message mapping to create a header field<occurence: 1> map to a constant and call it in var substitution.
    As Mickael suggested above make sure using only lowercase on your variant name  %folio% instead of %Folio%.
    For 1:N muti-mapping with variable substition go through the below links:
    Re: 1: N File Scenario..
    Using Variable Substitution
    i hope it will help you.
    regards,
    ganesh.

  • Variable substitution in XI (7.0 version).

    Maybe you could give us a short hint regarding an error we are getting during the variable substituion in an outbound file adapter.                                                                               
    How can we specify a namespace in the variable substituion?
    Without namespace this is working well, but we don't know how to specify the namespace.   
    We get this error essage: #2006-03-17 15:29:07 CET: Message processing failed: Error during      
    variable substitution:com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: FileName                                                                               
    Here comes our file:                                                   
    <?xml version="1.0" encoding="UTF-8" ?>
    <ns1:GMPluTxn xmlns:ns1="http://sap.com/xi/GMStoreConnectivity">
    <GMFileHeader>                                            <StoreNumber>0000002101</StoreNumber>                     <FileName>PluTxn</FileName>                                     </GMFileHeader>                                            <UpdateType>1</UpdateType>                                <PLU>000000000000610733</PLU>                             <RetailPrice>0.99</RetailPrice>                           <QuantityDescription>BX</QuantityDescription>             </ns1:GMPluTxn>                                          
    We set the flag 'enable variable subsitution' and specified the filename
    variable as follows:                                                 
    FileName payload:ns1:GMPluTxn,1,GMFileHeader,1,FileName,1                                                                               
    The FileName variable is used in the File Name Scheme field:           
    %FileName%.asc 
    Thanks in advance.

    Give it like this and see if it works
    FileName payload:GMPluTxn,1,GMFileHeader,1,FileName,1

  • Variable substitution

    Maybe someone can give me a short hint regarding an error we are getting during the variable substitution in an outbound file adapter.
    How can we specify a namespace in the variable substituion?
    Without namespace this is working well, but we don't know how to specify the namespace.
    We get this error essage: #2006-03-17 15:29:07 CET: Message processing failed: Error during
    variable substitution:com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: FileName
    Here comes our file:
    <?xml version="1.0" encoding="UTF-8" ?>
    <ns1:GMPluTxn xmlns:ns1="http://sap.com/xi/GMStoreConnectivity">
    <GMFileHeader> <StoreNumber>0000002101</StoreNumber> <FileName>PluTxn</FileName> </GMFileHeader> <UpdateType>1</UpdateType> <PLU>000000000000610733</PLU> <RetailPrice>0.99</RetailPrice> <QuantityDescription>BX</QuantityDescription> </ns1:GMPluTxn>
    We set the flag 'enable variable subsitution' and specified the filename
    variable as follows:
    FileName payload:ns1:GMPluTxn,1,GMFileHeader,1,FileName,1
    The FileName variable is used in the File Name Scheme field:
    %FileName%.asc
    Thanks in advance.

    Hi Malika,
    Do not mention ns1 in the variable substitution.
    Why you need to mention the namespace in the variable substitution ?
    Just Mention GMPluTxn,1,GMFileHeader,1,FileName,1
    Like this.
    If you want to get the output file name with namespace, then try to get the namespace as part of your payload(i.e part of your message type ). Then if you don;t want it in the Output file, you can cut it using cut option of File Receiver Adapter.
    For more-
    /people/sravya.talanki2/blog/2005/08/11/solution-to-the-problem-encountered-using-variable-substitution-with-xi-sp12
    http://help.sap.com/saphelp_nw2004s/helpdata/en/ae/d03341771b4c0de10000000a1550b0/frameset.htm
    Regards,
    Moorthy

  • Variable substitution error

    Hello All,
    Below is my source structure:
    <Messages>
       <Message1>
           <MT_BILL>    (0...*)
              <RECORD> (1....*)
                 <FILENAME>  (1...1)
    If using variable substitution for the filed FILE NAME which is in the source structure.
    This is the declaration I used in channel:
    payload:MT_BILL,0,RECORD,1,FILENAME,1
    But i am getting this error in channel monitoring
    DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: var
    Can anyone help me here
    Regards,
    Moorthy

    Hi Dasika,
    In variable substitution we use the receiver message type path.
    Please map the required source field to any of the field at the reeiver side and use variable substitution.
    For 1:N muti-mapping with variable substition go through the below links:
    Re: 1: N File Scenario..
    Using Variable Substitution
    Regards,
    Pranav

  • Error-Receiver File Adapter using Variable substitution when file is empty

    XI Experts,
    We are on PI 7.0, SP14.
    We are using variable subtitution to get the filename from source message. This works fine as long as we have data in the payload for filename element. But we have a scenario where we don't have to create file when certain condition does not exists in source message so in the message payload filename element will not exists in such condition and file will be empty and we should not create file.
    Parameter in the communication channel for Handling empty message is "Ignore".
    Does anyone knows how to handle this scneario. We don't want to default any file name in the message mapping if source file name element does not exists.
    We are following getting error in the Adapter engine.
    MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: file: com.sap.aii.adapter.file.configuration.DynamicConfigurationException: Error during variable substitution: com.sap.aii.adapter.file.varsubst.VariableDataSourceException: The following variable was not found in the message payload: file
    Thanks
    MP

    You can implement this by writing the module to throw an exception or whatever method you want to execute.
    If you don't want to receive an error message then module is suitable for you.
    Gaurav Jain

  • Variable substitution not working for dynamic file name in Receiver File CC

    Hi Experts,
    I am doing the scenario of Proxy sender to File receiver and my purpose is to Create the text file
    as per the filename available in Source Message payload.
    I am using the Variable Substitution method for this as shown below.
    Source Message Structure:-
         <Row>            -
    having Cocurence 1.1
             <Filename>     -
    having Cocurence 1.1
             <Item>            -
    having Cocurence 1.Unbounded
              <Field1>
              <field2>
             <Item>
             <Item>
              <Field1>
              <field2>
                <Item>        
         <Row>
    Target structure is same as the source structure and i have mapped the Filename field of the Source
    with the Target structure Filename.
    In ID the following is the File receiver CC Configuration.
    File Name Scheme:- %Dyn_filename%
    In Advance tab, I have selected the Enable option and added one row as Variable name %Dyn_filename%
    and Reference as payload:Row,1,Filename,1
    In testing I am getting the Error as 'variable Dyn_filename is not found in Message payload'.
    Please suggest me.
    Regards,
    Jagesh

    Hi Pooja,
    Hi Pooja,
    Thanks for your valuable reply..
    I  tried with the same. but still Filename is appearing in Output file.Giving you some details regarding my Receiver File Configuration settings.
    Target Message Type:-
              <MT_Target_Struct>
                    <Row>----
    1.1 occurence
                            <Filename_test>----
    1.1 occurence
                            <ITEM>----
    1.unbounded occurence
                                  <Field1>
                                  <Field2>
                            <ITEM>
                            <ITEM>
                                  <Field1>
                                  <Field2>
                            <ITEM>
                    <Row>
              <MT_Target_Struct>
    Recordset structure:-  Row,Filename_test,ITEM
    Row.fieldSeparator----
    >'nl'
    Filename_test.fieldFixedLengths----
    >0  (Zero)
    Filename_test.fixedLengthTooShortHandling----
    >Cut
    ITEM.fieldSeparator----
    >,
    ITEM.endSeparator----
    >'nl'
    I want only ITEM node to be written in the output file.
    Please suggest.
    Regards,
    Jagesh

  • Variable Substitution - How do I use a segment atribute ?

    Hi all, I'm facing a problem with variable substitution in receiver comunication channel.
    I got the follow message:
    <?xml version="1.0" encoding="UTF-8"?>
    <lote nro="000262007">
        <etc>...</etc>
    </lote>
    I want to get atribute <b>nro</b> from segment lote to use in variable substitution, how can I do it?

    Variable sucstitution doesnt allow a way to achieve this.
    There could be some workarounds
    1. Use some dummy element in ur xml message with same value as tht of the attribute.
    2. Use adapter specific message attributes or dynamic file name functionality
    Regards,
    Prateek

Maybe you are looking for