Dynamically Select measure field in webi

Hello Experts,
I am creating a web I report on top of Universe which is developed on Bex query.
I have one doubt with web I functionality:
My requirement is, I have two different measure field (one is in pound & one is in dollar). My user want to see any one measure field at one time. Like if he clicks on Pound, pound key figure should display & if he clicks on dollar, dollar key figure should display.
There is one functionality called "Input Control" in web I, I have gone through few blogs & thread in which this requirement is mentioned. But all this blogs & thread are on different database like MYSQL etc. not on SAP BW.
I have SAP BW as my back end. So can anyone have idea how we can achieve this ?
Thanks in advance,
With Regards,
Chintan Vora.

Hi,
Here is what happens.
1) You create a WebI report WITH a key figure on say 2 dimensions. In this case WebI knows how the two dimensions are to be joined, because you also included a keyfigure/measure (from the fact table) and WebI will only return the relevant rows (the relationsships are defined in the universe).
2) You create a WebI report WITHOUT a key figure, again on 2 different dimensions. In this case WebI does not know how to join the two dimension tables because you did not include a facttable and WebI will create the cartesian product, i.e. it will display all members of the first dimension combined with all members of the second dimension. So two dimensions with 1000 members each will result in 1.000.000 mio. rows to be returned. If you add more dimensions to your query/report they will give even more combinations and the number of result rows are: Members in first dimension * Members in second dimension * Members in third dimension and so on.
Creating reports on master data only will only make sense if you are creating it on single infoobjects or on infoobjects that are related, e.g. creating a report using a infoobject and one or more of its related attributes.
Hth.,
Jacob

Similar Messages

  • Dynamic selection screen with ABAP web dynpro

    Hi all.
        How can I create dynamic selection screen with ABAP web dynpro? Thank you in advance.

    hi yinglak.....
             this is possible........ all the ui elelments has the property called visible and enabled.... just assign an attribute of type wdui_visibility to the visible property....
    in the wddomodify method..... check for the radio button value and pass the value true or false to this attribute and it gets changed automatically.
    ---regards,
       alex b justin

  • How we create dynamic add form field in web form

    How we create dynamic add form field in web form?

    Hi,
    Thanks for reply.
    I need to create a form in which "add more" input field dynamically. For
    example sometime we need field on or more. Please look at the demo, I need
    to create form as per demo in business catalyst:
    http://www.openjs.com/scripts/examples/addfield.php

  • How to do dynamic selection for fields

    Hi,
    Can you please help me on this.
    I am adding the custom fields to the standard trasactions CJI3, CJI4, CJI5 for dispalying the line items. For this I am using COOMEP01 CO-OM: Information system -> line item reports enhancement.
    I am displaying the custom fileds for line items.
    The problem is...In all three t.codes I am having dynamic selection icon. user wants, selection is based on my custom fields...How to get my custom fileds on the selection screen?
    Please assist me as soon.
    Regards,
    Ravi

    Hai reddy
    This example shows how different transactions codes can be used to produce different selection options for the same program. The example allows for lookups on Sales Order number, Purchase Order Number, Delivery Number or Invoice number.
    *--- SELECTION OPTIONS -
    SELECTION-SCREEN BEGIN OF BLOCK SO WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN,"Sales order number  
                   S_VBELND FOR LIKP-VBELN,"Delivery number    
                   S_VBELNI FOR VBRK-VBELN,"Invoice number     
                   S_VBELNP FOR VBKD-BSTKD."PO number          
    SELECTION-SCREEN END OF BLOCK SO.                           
    *--- EVENT AT SCREEN OUTPUT -
    AT SELECTION-SCREEN OUTPUT.                                      
      CASE SY-TCODE.                                                 
        WHEN 'ZEDI6'.                                                
          LOOP AT SCREEN.                                             
            CASE SCREEN-GROUP4.                                      
              WHEN '001'.                  "Sales order select       
                SCREEN-ACTIVE = '1'.       "1=Active, 0=Don't display
                MODIFY SCREEN.                                       
              WHEN '002'.                  "Delivery select          
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display
                MODIFY SCREEN.                                        
              WHEN '003'.                  "Invoice select           
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display
                MODIFY SCREEN.                                       
              WHEN '004'.                  "PO Select                
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display
                MODIFY SCREEN.                                       
            ENDCASE.                                                 
          ENDLOOP.                                                    
        WHEN 'ZEDI6D'.                     "Delivery select           
          LOOP AT SCREEN.                                             
            CASE SCREEN-GROUP4.                                       
              WHEN '001'.                  "Sales order select        
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display 
                MODIFY SCREEN.                                        
              WHEN '002'.                  "Delivery select            
                SCREEN-ACTIVE = '1'.       "1=Active, 0=Don't display 
                MODIFY SCREEN.                                        
              WHEN '003'.                  "Invoice select            
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display 
                MODIFY SCREEN.                                        
              WHEN '004'.                  "PO Select                 
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display 
                MODIFY SCREEN.                                        
            ENDCASE.                                                  
          ENDLOOP.                                                    
        WHEN 'ZEDI6I'.                     "Invoice select                  
          LOOP AT SCREEN.                                                  
            CASE SCREEN-GROUP4.                                            
              WHEN '001'.                  "Sales order select             
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display      
                MODIFY SCREEN.                                             
              WHEN '002'.                  "Delivery select                
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display      
                MODIFY SCREEN.                                             
              WHEN '003'.                  "Invoice select                 
                SCREEN-ACTIVE = '1'.       "1=Active, 0=Don't display      
                MODIFY SCREEN.                                             
              WHEN '004'.                  "PO Select                      
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display      
                MODIFY SCREEN.                                              
            ENDCASE.                                                       
          ENDLOOP.                                                         
        WHEN 'ZEDI6P'.                     "PO select                  
          LOOP AT SCREEN.                                              
            CASE SCREEN-GROUP4.                                        
              WHEN '001'.                  "Sales order select         
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display  
                MODIFY SCREEN.                                         
              WHEN '002'.                  "Delivery select            
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display  
                MODIFY SCREEN.                                          
              WHEN '003'.                  "Invoice select             
                SCREEN-ACTIVE = '0'.       "1=Active, 0=Don't display  
                MODIFY SCREEN.                                         
              WHEN '004'.                  "PO Select                  
                SCREEN-ACTIVE = '1'.       "1=Active, 0=Don't display  
                MODIFY SCREEN.                                         
            ENDCASE.                                                    
          ENDLOOP.                                                     
      ENDCASE.                                                        
    Thanks & regards
    Sreenivasulu P

  • Dynamic Selection Screen Fields

    Hi All,
    I have made a copy of the program FI_RFSOPO00. This report uses dynamic selection screen. I wanted to know the names of these dynamic selection screen. As I have to make some database selections based on the user entries in these fields.
    Is there a way to find this out?
    Regards,
    Stephen

    Hi Stephen,
    1) FI_RFSOPO00 is unknown- i think you mean <b>RFSOPO00</b>
    2) RFSOPO00 uses logical datbase SDF, which uses
       free or dynmaic selections from the tables ska1,skb1
       and bsis.
    see F1 to <i>SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE dbtab </i> and ta SE36 to SDF too.
    regards Andreas

  • Dynamic selection of field

    Hi All,
    I have to select a field dynamically from a selection screen and have to read that data for that field from database. I know the table and its EKPO..It can be any field from the table..How can i get a request help for the field on selection screen from table ekpo. There should be a parameter in the selection screen and when I press f4 it should show me all the fields from EKPO such that I can select a field and enter a value there by selecting the data. Could somebody please help.
    ekpo-?????.
    Thanks,
    Kiran

    Hi Kiran,
    use FM 'F4IF_INT_TABLE_VALUE_REQUEST'. It is quite well documented. You can select the fields with text from DD03M.
    Use at value-request for ...
    Regards,
    Clemens

  • Dynamic Selection of fields and those 0uputs using ABAP Programming

      Dear All
    I have a requirement I searched but couldn't able to find the closest one,
    kindly help me in this...
    I have 100 fields in one text file which is placed in AL11 server....
    Requirement is
    User should be able to run a report , by selecting any of the listed field and see any difference between the data in 2 text fields of diff dates...
    Ex: in 100 fields Employee Group and Dept no..2 fields he selects in selection-screen output and selects 2 text files from AL11 Server...
    if he executes report should produce only those employees who has difference in Employee Subgroup and dept no changes...
    writing the logic is not a big deal...
    but 2 challenges
    1) Empno , empname are fixed but remaining field columns should be what ever user selects. on the selection-screen
    2) How to populate fields on selection-screen??
    Regards
    Sas

    Hi Srinivas,
    Drop down is to select one field at a time,
    I need to select as many as user want to see the difference.......
    Regards
    Satish.v

  • Dynamic select with field symbols

    Hi guys,
    I have 2 tables.
    First table is the popup fields using fm popup_get_values:
    tab1-tabname
    tab1-fieldname
    tab1-value
    Second table is the input fields to be displayed in the popup box:
    tab2-transactno
    tab2-docno
    tab2-customer
    tab2-postdate
    etc... (it has many fields)
    Let's say currently i loop at tab2 and assign each value of the individual fields to a variable each:
    loop at tab2
    v_transactno = tab2-transactno
    v_docno = tab2-docno
    etc...
    endloop.
    My question is how do i assign each variable to the popup fields according to the fieldname so that it can get its corresponding value correctly?
    How can this be done dynamically?
    Can the loop above be done dynamically as well coz it has alot of fields to cater for?
    Please help me solve this problem. Futher similar examples would be much appreciated as well.
    Thank you very much!

    Hi
    see the concept of field sysmbols and do accordingly
    Field Symbols
    Field symbols are placeholders or symbolic names for other fields. They do not physically reserve space for a field, but point to its contents. A field symbol cam point to any data object. The data object to which a field symbol points is assigned to it after it has been declared in the program.
    Whenever you address a field symbol in a program, you are addressing the field that is assigned to the field symbol. After successful assignment, there is no difference in ABAP whether you reference the field symbol or the field itself. You must assign a field to each field symbol before you can address the latter in programs.
    Field symbols are similar to dereferenced pointers in C (that is, pointers to which the content operator * is applied). However, the only real equivalent of pointers in ABAP, that is, variables that contain a memory address (reference) and that can be used without the contents operator, are reference variables in ABAP Objects.
    All operations programmed with field symbols are applied to the field assigned to it. For example, a MOVE statement between two field symbols moves the contents of the field assigned to the first field symbol to the field assigned to the second field symbol. The field symbols themselves point to the same fields after the MOVE statement as they did before.
    You can create field symbols either without or with type specifications. If you do not specify a type, the field symbol inherits all of the technical attributes of the field assigned to it. If you do specify a type, the system checks the compatibility of the field symbol and the field you are assigning to it during the ASSIGN statement.
    Field symbols provide greater flexibility when you address data objects:
    If you want to process sections of fields, you can specify the offset and length of the field dynamically.
    You can assign one field symbol to another, which allows you to address parts of fields.
    Assignments to field symbols may extend beyond field boundaries. This allows you to address regular sequences of fields in memory efficiently.
    You can also force a field symbol to take different technical attributes from those of the field assigned to it.
    The flexibility of field symbols provides elegant solutions to certain problems. On the other hand, it does mean that errors can easily occur. Since fields are not assigned to field symbols until runtime, the effectiveness of syntax and security checks is very limited for operations involving field symbols. This can lead to runtime errors or incorrect data assignments.
    While runtime errors indicate an obvious problem, incorrect data assignments are dangerous because they can be very difficult to detect. For this reason, you should only use field symbols if you cannot achieve the same result using other ABAP statements.
    For example, you may want to process part of a string where the offset and length depend on the contents of the field. You could use field symbols in this case. However, since the MOVE statement also supports variable offset and length specifications, you should use it instead. The MOVE statement (with your own auxiliary variables if required) is much safer than using field symbols, since it cannot address memory beyond the boundary of a field. However, field symbols may improve performance in some cases.
    check the below links u will get the answers for your questions
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3860358411d1829f0000e829fbfe/content.htm
    http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/field_sy.htm
    http://searchsap.techtarget.com/tip/1,289483,sid21_gci920484,00.html
    Syntax Diagram
    FIELD-SYMBOLS
    Basic form
    FIELD-SYMBOLS <fs>.
    Extras:
    1. ... TYPE type
    2. ... TYPE REF TO cif
    3. ... TYPE REF TO DATA
    4. ... TYPE LINE OF type
    5. ... LIKE s
    6. ... LIKE LINE OF s
    7. ... TYPE tabkind
    8. ... STRUCTURE s DEFAULT wa
    The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas. See Cannot Use Untyped Field Symbols ad Cannot Use Field Symbols as Components of Classes.
    Effect
    This statement declares a symbolic field called <fs>. At runtime, you can assign a concrete field to the field symbol using ASSIGN. All operations performed with the field symbol then directly affect the field assigned to it.
    You can only use one of the additions.
    Example
    Output aircraft type from the table SFLIGHT using a field symbol:
    FIELD-SYMBOLS <PT> TYPE ANY.
    DATA SFLIGHT_WA TYPE SFLIGHT.
    ASSIGN SFLIGHT_WA-PLANETYPE TO <PT>.
    WRITE <PT>.
    Addition 1
    ... TYPE type
    Addition 2
    ... TYPE REF TO cif
    Addition 3
    ... TYPE REF TO DATA
    Addition 4
    ... TYPE LINE OF type
    Addition 5
    ... LIKE s
    Addition 6
    ... LIKE LINE OF s
    Addition 7
    ... TYPE tabkind
    Effect
    You can define the type of the field symbol using additions 2 to 7 (just as you can for FORM parameters (compare Defining the Type of Subroutine Parameters). When you use the ASSIGN statement, the system carries out the same type checks as for USING parameters of FORMs.
    This addition is not allowed in an ABAP Objects context. See Cannot Use Obsolete Casting for FIELD SYMBOLS.
    In some cases, the syntax rules that apply to Unicode programs are different than those for non-Unicode programs. See Defining Types Using STRUCTURE.
    Effect
    Assigns any (internal) field string or structure to the field symbol from the ABAP Dictionary (s). All fields of the structure can be addressed by name: <fs>-fieldname. The structured field symbol points initially to the work area wa specified after DEFAULT.
    The work area wa must be at least as long as the structure s. If s contains fields of the type I or F, wa should have the structure s or at least begin in that way, since otherwise alignment problems may occur.
    Example
    Address components of the flight bookings table SBOOK using a field symbol:
    DATA SBOOK_WA LIKE SBOOK.
    FIELD-SYMBOLS <SB> STRUCTURE SBOOK
    DEFAULT SBOOK_WA.
    WRITE: <SB>-BOOKID, <SB>-FLDATE.
    Regards
    Anji

  • Dynamically select multiple rows in web dynpro table

    Hi All,
    I am populating rows in a table by calling BAPI.
    I set the selection property to 1..n for the context model node in view and custom controller.
    I set the selectionmode property to multi for the table.
    I have a "Select All" button in my view.
    When i click this button, i want to select all the records in the table.
    Then i want to loop thru the selected rows.
    How can i do this?
    Please give me some sample code or reference documents.
    Thanks.

    Hi Tiruna,
    To select all elements in the node you can use following code (created by Valery Silaev) where select parameters indicate to "select" or "unselect":
         public static void selectElements(final IWDNode node, final boolean select)
              final int leadSelection;
              if ( select )
                   leadSelection = Math.min
                        Math.max( 0, node.getLeadSelection() ), node.size() - 1
              else
                   leadSelection = IWDNode.NO_SELECTION;
              for (int i = node.size() - 1; i >= 0; i--)
                   node.setSelected( i, select );
              if ( 0 < node.size())
                   node.setLeadSelection( leadSelection );
    to iterate selected elements you can use:
    for (int j = 0, n = wdContext.nodeRows().size(); j < n; ++j)
      if (wdContext.nodeRows().getLeadSelection() == j
        || wdContext.nodeRows().isMultiSelected(j)
        /* row at index j is selected */
    Best regards, Maksim Rashchynski.

  • How to add a field in dynamic selections

    HI,
    There is a requirement in which i need to add a field in existing program of dynamic selections.
    I have added a field in the screen.But I was not able to write the label and is not displaying.
    I ahve copied evrything from existing coding.but still.
    In the program ,Field groups are being used.
    I have inserted my field in that header and item of field groups.
    But i was not able to select the data based on this selection.
    i will attach my code here for reference.
    can anyone please help me how to use these filed symbols.
    If possible send me the document on Dynamic selections.
    the field i need to add is bkpf-bktxt
    TABLES:
      tcurx,
      lfa1,
      kna1,
      bhdgd,
      bkpf,
      bseg,
      bsega,
      b0sg,
      fimsg,
      sarkey,
      t001,
      vbset,
      sscrfields.
          Selektionsparameter                                           *
    begin_of_block 1.
    PARAMETERS:
      par_nbel       LIKE rfpdo-bpetnbel,  "Normale Belege
      par_vbel       LIKE rfpdo-epojvbel,  "Vorerfaßte Belege
      par_sbel       LIKE rfpdo-bpetsbel,  "Statistischen Belege
      par_mbel       LIKE rfpdo-epojmbel,  "Musterbelege
      par_dbel       LIKE rfpdo1-korbdbel. "Dauerbuchungsurbelege
    end_of_block 1.
    begin_of_block 2.
    PARAMETERS:
      par_summ       LIKE rfpdo1-allgsumm, "nur Summenausgabe
      par_hkto       LIKE rfpdo2-beljhkto, "Hauptbuch- statt Personenkonto
      par_altk       LIKE rfpdo1-allgaltk, "alternative Kontonummer
      par_lsep       LIKE rfpdo-allglsep,  "Listseparation
      par_mikf       LIKE rfpdo-allgmikf,  "Mikrofiche-Zeile
      par_line       LIKE rfpdo1-allgline. "Zusatztitel
    Eingaben für optische Archivierung
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS:     arc     LIKE rfpdo1-allgarch.
    SELECTION-SCREEN COMMENT 3(29) text-103 FOR FIELD arc.
    SELECTION-SCREEN POSITION POS_LOW.
    PARAMETERS:     arc_msg1(10) MODIF ID arc.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION POS_LOW.
    PARAMETERS:     arc_msg2(10) MODIF ID arc.
    SELECTION-SCREEN END OF LINE.
    end_of_block 2.
    PARAMETERS:     arc_mem LIKE arc_params NO-DISPLAY.
          Felder und Feldleisten                                        *
    CONSTANTS:
      con_true       TYPE i                VALUE 1,
      con_false      TYPE i                VALUE 2,
      con_hash       TYPE i                VALUE 1,
      con_vendor     TYPE c                VALUE 'K',
      con_cust       TYPE c                VALUE 'D'.
    Global Data
    DATA: BEGIN OF hash_totals OCCURS 25,
             bukrs LIKE t001-bukrs,
             poper(7),
             dramt LIKE bseg-wrbtr,
             cramt LIKE bseg-wrbtr,
          END OF hash_totals.
    DATA:
      factor         TYPE i,
    Zähler
      cnt_bukrs(4)   TYPE p,               "Anzahl Buchungskreise
      cnt_max        LIKE sy-tfill,        "Maximum der CNT_Ti
      cnt_t0         LIKE sy-tfill,        "Anzahl Einträge in Ti
      cnt_t1         LIKE sy-tfill,
      cnt_t2         LIKE sy-tfill,
      cnt_t3         LIKE sy-tfill,
      cnt_t4         LIKE sy-tfill,
      cnt_t5         LIKE sy-tfill,
    Fehler
      err_altkt(1)   TYPE c,               "alt. Kontonummer nicht gefunden
    Flags
      flg_section    TYPE i,
      flg_vendr2     TYPE i,
      flg_vendr3     TYPE i,
      flg_color(1)   TYPE n,               "0 - intensified off
    Hilfsfelder
      hlp_belnr(10)  TYPE c,               "Anzeigefeld Belegnummer
      hlp_bstat      LIKE bkpf-bstat,      "Status vorerfaßter Belege
      hlp_buper(7)   TYPE c,               "Buchungsperiode mit '/'
      hlp_null(1)    TYPE p VALUE 0,       "Betrag Null
      hlp_sakan      LIKE ska1-sakan,      "Anzeigefeld Kontonummer
      hlp_wrshb(26)  TYPE c,               "FW-Betrag mit Währung in Klammer
      hlp_vnd_amt(43) TYPE c,
    Texte
      txt_line0(132) TYPE c,               "Überschriften
      txt_line1(132) TYPE c,
      txt_line2(132) TYPE c,
      txt_line(132)  TYPE c,               "Hilfstext
    Feldleisten
      BEGIN OF mikfi,                      "Information Mikrofiche-Zeile
        bstat        LIKE bkpf-bstat,
        bukrs        LIKE bkpf-bukrs,
        gjahr        LIKE bkpf-gjahr,
        belnr        LIKE bkpf-belnr,
      END OF mikfi.
          Interne Tabellen                                              *
    DATA:
    Belegkopfinformationen
      BEGIN OF t0 OCCURS 4,                "0 - allgemeine Angaben
        info(1)  TYPE n,                   "1 - vorerfaßter Beleg
      END OF t0,                           "2 - Referenz
                                                                "3 - Storno
                                           "4 - gelöschter vorerfaßter Beleg
                                           "5 - ersetzter vorerfaßter Beleg
                                           "6 - Ausgleichsbeleg
                                           "7 - zurückgenommener Ausgleich
    Personenkonteninformationen je Beleg
      BEGIN OF t1 OCCURS 10,
        koart    LIKE bseg-koart,          "Kontoart
        ktonr    LIKE bseg-kunnr,          "Kontonummer(Debitor/Kreditor)
        bschl    LIKE bseg-bschl,          "Buchungsschlüssel
        xnegp    LIKE bseg-xnegp,          "Negativbuchung
        umskz    LIKE bseg-umskz,          "Sonderumsatzkennzeichen
        zlspr    LIKE bseg-zlspr,          "Payment Block Key - CR 21709
        dmshb    LIKE bsega-dmshb,         "Soll-Haben Betrag in Hauswährung
        wrshb    LIKE bsega-dmshb,         "Betrag in Fremdwährung
        xfwae(1) TYPE c,                   "X - Fremdwährungsinformation
        name1    LIKE lfa1-name1,          "Customer/ Vendor Name
      END OF t1,
    Steuerinformationen je Beleg
      BEGIN OF t2 OCCURS 10,
        mwskz    LIKE bseg-mwskz,          "Mehrwertsteuerkennzeichen
        dmshb    LIKE bsega-dmshb,         "Soll-Haben Betrag in Hauswährung
      END OF t2,
    Sachkonteninformationen je Beleg
      BEGIN OF t3 OCCURS 20,
        mwskz    LIKE bseg-mwskz,          "Mehrwertsteuerkennzeichen
        bschl    LIKE bseg-bschl,          "Buchungsschlüssel
        xnegp    LIKE bseg-xnegp,          "Negativbuchung
        koart    LIKE bseg-koart,          "Kontoart
        hkont    LIKE bseg-hkont,          "Hauptbuchkonto
        dmshb    LIKE bsega-dmshb,         "Soll-Haben Betrag in Hauswährung
        kostl    LIKE bseg-kostl,          "Cost Center
        prctr    LIKE bseg-prctr,          "Profit Center
      END OF t3,
    Sonderhauptbuchbeträge für Debitoren (nur Ausgabe)
      BEGIN OF t4 OCCURS 5,
        umskz         LIKE bseg-umskz,     "Sonderumsatzkennzeichen
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
      END OF t4,
    Sonderhauptbuchbeträge für Kreditoren (nur Ausgabe)
      BEGIN OF t5 OCCURS 5,
        umskz         LIKE bseg-umskz,     "Sonderumsatzkennzeichen
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
      END OF t5,
    Summeninformationen je Buchungskreis
      BEGIN OF tbukrs OCCURS 20,
        bstat         LIKE bkpf-bstat,     "Belegstatus
        bukrs         LIKE bkpf-bukrs,     "Buchungskreis
    START OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
        bktxt         LIKE bkpf-bktxt,
    END OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
        gjahr         LIKE bkpf-gjahr,     "Buchungsjahr
        monat         LIKE bkpf-monat,     "Buchungsmonat
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
        waers         LIKE t001-waers,     "Währungsschlüssel (nur Ausgabe)
      END OF tbukrs,
    Sonderhauptbuchinformationen je Buchungskreis
      BEGIN OF tbukrs_u OCCURS 20,
        bstat         LIKE bkpf-bstat,     "Belegstatus
        bukrs         LIKE bkpf-bukrs,     "Buchungskreis
    START OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
        bktxt         LIKE bkpf-bktxt,
    END OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
        gjahr         LIKE bkpf-gjahr,     "Buchungsjahr
        monat         LIKE bkpf-monat,     "Buchungsmonat
        koart         LIKE bseg-koart,     "Kontoart
        umskz         LIKE bseg-umskz,     "Sonderumsatzkennzeichen
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
        waers         LIKE t001-waers,     "Währungsschlüssel (nur Ausgabe)
      END OF tbukrs_u,
    Summeninformationen je Hauswährung
      BEGIN OF twaers OCCURS 10,
        bstat         LIKE bkpf-bstat,     "Belegstatus
        waers         LIKE t001-waers,     "Hauswährungsschlüssel
        gjahr         LIKE bkpf-gjahr,     "Buchungsjahr
        monat         LIKE bkpf-monat,     "Buchungsmonat
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
      END OF twaers,
    Sonderhauptbuchinformationen je Hauswährung
      BEGIN OF twaers_u OCCURS 20,
        bstat         LIKE bkpf-bstat,     "Belegstatus
        waers         LIKE t001-waers,     "Währungsschlüssel
        gjahr         LIKE bkpf-gjahr,     "Buchungsjahr
        monat         LIKE bkpf-monat,     "Buchungsmonat
        koart         LIKE bseg-koart,     "Kontoart
        umskz         LIKE bseg-umskz,     "Sonderumsatzkennzeichen
        dmsol(9)      TYPE p,              "Soll-Betrag Hauswährung
        dmhab(9)      TYPE p,              "Haben-Betrag Hauswährung
      END OF twaers_u,
    Fehlerprotokoll im Batch
      BEGIN OF tfimsg OCCURS 10.
            INCLUDE STRUCTURE fimsg.
    DATA END OF tfimsg.
          Strukturen für optische Archivierung                          *
    DATA BEGIN OF info OCCURS 10.
            INCLUDE STRUCTURE bhinf.
    DATA END OF info.
    DATA:
      arc_save LIKE arc_params,
      arc_valid.
          Feldgruppen                                                   *
    FIELD-GROUPS: header, daten.
    INSERT:
      bkpf-bukrs                           "Buchungskreis
      bkpf-bktxt                           "Change by OS0794
      bkpf-bstat                           "Belegstatus
      bkpf-gjahr                           "Geschäftsjahr
      bkpf-belnr                           "Belegnummer
      bseg-buzei                           "Buchungszeile
    INTO header.
    INSERT
      bkpf-blart                           "Belegart
      bkpf-bktxt                           "Change by OS0794
      bkpf-budat                           "Buchungsdatum
      bkpf-stblg                           "Stornobelegnummer
      bkpf-waers                           "Währungsschlüssel
      bkpf-xblnr                           "Referenzangabe
      bseg-bschl                           "Buchungsschlüssel
      bseg-xnegp                           "Negativbuchung
      bseg-zlspr                           "Payment Block Key - CR 21709
      bseg-hkont                           "Hauptbuchkonto
      bseg-koart                           "Kontoart
      bseg-kunnr                           "Debitornummer
      bseg-lifnr                           "Kreditornummer
      bseg-mwart                           "Mehrwertsteuerart (A oder V)
      bseg-mwskz                           "Mehrwertsteuerkennzeichen
      bseg-umskz                           "Sonderhauptbuch-Kennzeichen
      bsega-dmshb                          "S/H-Betrag in Hauswährung
      bsega-mdshb                          "Umsatzsteuerbetrag in Hauswährg
      bsega-wrshb                          "S/H-Betrag in Fremdwährung
      hlp_bstat                            "Status vorerfaßter Belege bzw.
      bseg-kostl
      bseg-prctr
      bkpf-monat
    INTO daten.                            "Status von Belegen ohne Zeilen
          Vorschlagswerte                                               *
    INITIALIZATION.
      get_frame_title: 1,2.
      par_nbel = 'X'.
      par_sbel = space.
      par_mbel = space.
      par_dbel = space.
      par_vbel = 'X'.
          Archivinformationen nur fuer Ausgabe                          *
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF screen-group1 = 'ARC'.
          screen-input = '0'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
          Prüfung und Korrektur der eingegebenen Daten                  *
    AT SELECTION-SCREEN ON arc.
      IF arc <> ' ' AND arc_mem(20) = space.
        CALL FUNCTION 'GET_ARCHIVE_PARAMETERS'
          EXPORTING
            in_parameters  = arc_save
            printer        = '    '
          IMPORTING
            out_parameters = arc_mem
            valid          = arc_valid
          EXCEPTIONS
            OTHERS         = 04.
        IF arc_valid <> 'X' OR arc_mem = space.
          CLEAR arc_mem.
          MESSAGE e999 WITH text-102.
        ENDIF.
        arc_msg1 = arc_mem(10).
        arc_msg2 = arc_mem+10(10).
      ENDIF.
      IF arc = ' '.
        CLEAR arc_mem.
        arc_msg1 = arc_msg2 = space.
      ENDIF.
      arc_save = arc_mem.
    AT SELECTION-SCREEN ON arc_msg1.
      arc_msg1 = arc_mem(10).
    AT SELECTION-SCREEN ON arc_msg2.
      arc_msg2 = arc_mem+10(10).
    AT SELECTION-SCREEN.
      IF par_nbel EQ space AND
         par_mbel EQ space AND
         par_dbel EQ space AND
         par_sbel EQ space AND
         par_vbel EQ space.
        SET CURSOR FIELD 'PAR_NBEL'.
        MESSAGE e111.
      ENDIF.
    optische Archivierung
      IF arc <> ' ' AND par_mikf <> ' '.
        CLEAR arc_mem.
        MESSAGE e999 WITH text-100.
      ENDIF.
      IF arc <> ' ' AND par_lsep <> ' '.
        CLEAR arc_mem.
        MESSAGE e999 WITH text-101.
      ENDIF.
      IF arc = 'X' AND sscrfields-ucomm = 'PRIN'.
        sscrfields-ucomm = 'ONLI'.
        sy-pdest = 'LP01'.                 "wegen Abfrage in Batch-Heading
      ENDIF.
          Vorbelegungen                                                 *
    START-OF-SELECTION.
      bhdgd-lines = sy-linsz.
      bhdgd-repid = sy-repid.
      bhdgd-uname = sy-uname.
      bhdgd-separ = par_lsep.
      bhdgd-domai = 'BUKRS'.
      IF arc = 'X'.
        bhdgd-miffl = 'A'.
      ENDIF.
      IF par_mikf = 'X'.
        bhdgd-miffl = 'X'.
      ENDIF.
    Initialisierung für optisches Archiv
      PERFORM open_archive(rsbtchh0) USING arc_mem.
      info-name = 'BKPF-BSTAT'. info-len = space. APPEND info.
      info-name = 'BKPF-BUKRS'. info-len = space. APPEND info.
      info-name = 'BSEG-GJAHR'. info-len = space. APPEND info.
      info-name = 'BKPF-BELNR'. info-len = space. APPEND info.
      info-name = 'BKPF-BKTXT'. info-len = space. APPEND info.
      PERFORM start_archive(rsbtchh0) TABLES info.
      b0sg-xstan = par_nbel.
      b0sg-xstam = par_mbel.
      b0sg-xstad = par_dbel.
      b0sg-xstas = par_sbel.
      b0sg-xstaa = 'X'.
      IF par_vbel EQ 'X'.
        b0sg-xstav = 'Z'.
      ENDIF.
          Selektion                                                     *
    GET bkpf FIELDS blart bstat budat monat stblg waers xblnr bktxt.
      CLEAR hlp_bstat.
      IF 'ABVWZ' CA bkpf-bstat.
        hlp_bstat = bkpf-bstat.
        CLEAR bkpf-bstat.
        IF 'ABWZ' CA hlp_bstat.
          CLEAR: bseg, bsega.
          IF par_summ EQ space.
            EXTRACT daten.
          ENDIF.
          PERFORM summe_merken.
        ENDIF.
      ENDIF.
    GET bseg.
      IF par_summ EQ space.
        EXTRACT daten.
      ENDIF.
      PERFORM summe_merken.
    GET bkpf LATE.
      PERFORM vorerfasste_steuer_merken.
          Seitenkopf                                                    *
    TOP-OF-PAGE.
      PERFORM batch-heading(rsbtchh0).
      ULINE.
      IF flg_section <> con_hash.
        FORMAT COLOR 1 INTENSIFIED OFF.
        WRITE    / txt_line0.
        ULINE.
        FORMAT COLOR 1 INTENSIFIED.
        WRITE:   / txt_line1,
                 / txt_line2.
      ELSE.
        FORMAT COLOR 1 INTENSIFIED OFF.
        WRITE: / sy-vline NO-GAP,
                 'Hash Totals'(205),
           132   sy-vline.
        ULINE.
        FORMAT COLOR 1 INTENSIFIED.
        WRITE:   /     sy-vline NO-GAP,
                  (10) 'CoCd'(200),
                  (07) 'Period'(201),
                       sy-vline,
                  (16) 'Debit Amount'(202),
                  (16) 'Credit Amount'(203),
                       sy-vline,
                  (16) 'Total'(204).
      ENDIF.
      ULINE.
          Sortieren der Daten                                           *
    END-OF-SELECTION.
      DESCRIBE TABLE tbukrs LINES sy-tfill.
      IF sy-tfill EQ 0.
        CALL FUNCTION 'POPUP_NO_LIST'.
      ENDIF.
      SORT.
      SORT tbukrs.
          Belegjournal                                                  *
      LOOP.
    *-- Neuer Buchungskreis -
        AT NEW bkpf-bukrs.
          SELECT SINGLE * FROM t001 WHERE bukrs EQ bkpf-bukrs.
          IF sy-subrc NE 0.
            IF sy-batch EQ space.
              MESSAGE a101 WITH bkpf-bukrs.
            ELSE.
              MESSAGE s101 WITH bkpf-bukrs.
              STOP.
            ENDIF.
          ENDIF.
          bhdgd-bukrs = bkpf-bukrs.
          bhdgd-werte = bkpf-bukrs.
          PERFORM new-section(rsbtchh0).
          PERFORM titel_fuellen USING '5'.
        ENDAT.
    *-- Neuer Belegstatus -
        AT NEW bkpf-bstat.
          PERFORM new_page USING bkpf-bstat.
          flg_color = 1.
        ENDAT.
    *-- Neue Belegnummer -
        AT NEW bkpf-belnr.
          REFRESH: t0, t1, t2, t3.
          PERFORM belegkopf_merken.
          mikfi-bstat = bkpf-bstat.
          mikfi-bukrs = bkpf-bukrs.
          mikfi-gjahr = bkpf-gjahr.
          mikfi-belnr = bkpf-belnr.
          bhdgd-grpin = mikfi.
        ENDAT.
    *-- Belegzeile -
        PERFORM belegzeile_merken.
    *-- Ende einer Belegnummer -
        AT END OF bkpf-belnr.
          PERFORM beleg_schreiben.
          ULINE.
        ENDAT.
    *-- Ende eines Buchungskreises -
        AT END OF bkpf-bukrs.
          PERFORM titel_fuellen USING '4'.
          PERFORM buchungskreis_schreiben USING bkpf-bukrs.
        ENDAT.
      ENDLOOP.
          Summenblätter                                                 *
      bhdgd-bukrs = '    '.
      bhdgd-werte = '    '.
      PERFORM new-section(rsbtchh0).
      PERFORM titel_fuellen USING '4'.
      PERFORM buchungskreis_schreiben USING '    '.
      PERFORM hauswaehrung_schreiben.
          Print Hash Totals                                             *
      flg_section = con_hash.
      NEW-PAGE.
      PERFORM prt_hash TABLES hash_totals.
          Fehlerprotokoll                                               *
      CALL FUNCTION 'FI_MESSAGE_CHECK'
        EXCEPTIONS
          no_message = 4.
      IF sy-subrc = 0.
        IF sy-batch EQ space.
          PERFORM titel_fuellen USING '6'.
          NEW-PAGE.
          FORMAT COLOR 6 INTENSIFIED.
          CALL FUNCTION 'FI_MESSAGE_SORT'.
          CALL FUNCTION 'FI_MESSAGE_PRINT'
            EXPORTING
              i_xskip = 'X'.
        ELSE.
          CALL FUNCTION 'FI_MESSAGE_GET'
            TABLES
              t_fimsg = tfimsg.
          LOOP AT tfimsg.
            MESSAGE ID tfimsg-msgid TYPE tfimsg-msgty NUMBER tfimsg-msgno
              WITH tfimsg-msgv1 tfimsg-msgv2 tfimsg-msgv3 tfimsg-msgv4.
          ENDLOOP.
        ENDIF.
      ENDIF.
           U N T E R P R O G R A M M E                                  *
                0. TITEL_FUELLEN                                        *
                1. NEW_PAGE                                             *
                2. SUMME_MERKEN                                         *
                3. VORERFASSTE_STEUER_MERKEN                            *
                4. BELEGKOPF_MERKEN                                     *
                5. BELEGZEILE_MERKEN                                    *
                6. BELEG_SCHREIBEN                                      *
                7. BUCHUNGSKREIS_SCHREIBEN                              *
                8. HAUSWAEHRUNG_SCHREIBEN                               *
                9. SUMMENZEILE_SCHREIBEN                                *
               10. KONTONUMMER                                          *
    0.   FORM TITEL_FUELLEN                                            *
          Ersetzt das Global &CCCU durch die Buchungskreiswährung       *
          F00_TEXT ist 4, 5 oder 6, je nach Gruppe der Textelemente     *
    FORM titel_fuellen USING f00_text.
      DATA:
        BEGIN OF txt_502,
         T1(49) TYPE C, "CR 21709
         W1(23) TYPE C, "CR 21709
          t1(50) TYPE c,                                        "CR 21709
          w1(22) TYPE c,                                        "CR 21709
          t2(6)  TYPE c,
          w2(15) TYPE c,
          t3(21) TYPE c,
          w3(16) TYPE c,
          t4(2)  TYPE c,
        END OF txt_502.
      CASE f00_text.                       "Textelemente
        WHEN '4'.                          "- für die Summenliste
          txt_line0 = text-400.
          txt_line1 = text-401.
          txt_line2 = text-402.
        WHEN '5'.                          "- für die Einzelpostenliste
          txt_line0 = text-500.
          txt_line1 = text-501.
          txt_line2 = text-502.
          IF par_hkto EQ 'X'.
            txt_line1+33(10) = text-505.
            txt_line2+33(10) = text-506.
          ENDIF.
          txt_502   = txt_line2.
          REPLACE '&CCCU' WITH t001-waers INTO:
            txt_502-w1, txt_502-w2, txt_502-w3.
          CONDENSE:
            txt_502-w1, txt_502-w2, txt_502-w3.
          WRITE:
            txt_502-w1 TO txt_502-w1 RIGHT-JUSTIFIED,
            txt_502-w2 TO txt_502-w2 RIGHT-JUSTIFIED,
            txt_502-w3 TO txt_502-w3 RIGHT-JUSTIFIED.
          txt_line2 = txt_502.
        WHEN '6'.                          "- für die Fehlerliste
          txt_line0 = text-600.
          txt_line1 = text-601.
          txt_line2 = space.
        WHEN OTHERS.                       "- initialisieren
          txt_line0 = space.
          txt_line1 = space.
          txt_line2 = space.
      ENDCASE.
    ENDFORM.                    "TITEL_FUELLEN
    1.   FORM NEW_PAGE                                                 *
          Initialisierungen für BATCH-HEADING Routine                   *
          F01_BSTAT steuert den Aufbau des Reporttitels                 *
    FORM new_page USING f01_bstat.
      CASE f01_bstat.                      "Reporttitel
        WHEN 'D'.                          "- für Dauerbuchungsurbelege
          bhdgd-line1 = text-001.
        WHEN 'M'.                          "- für Musterbelege
          bhdgd-line1 = text-002.
        WHEN 'S'.                          "- für statistische Belege
          bhdgd-line1 = text-003.
        WHEN OTHERS.                       "- für normale/vorerfaßte Belege
          bhdgd-line1 = sy-title.
      ENDCASE.
      bhdgd-line2 = par_line.
      bhdgd-inifl = 0.
      NEW-PAGE.
    ENDFORM.                    "NEW_PAGE
    2.   FORM SUMME_MERKEN                                             *
          Merken der Summeninformation                                  *
    FORM summe_merken.
      CLEAR tbukrs.
      tbukrs-bstat = bkpf-bstat.
      tbukrs-bukrs = bkpf-bukrs.
      tbukrs-bktxt = bkpf-bktxt.
      tbukrs-gjahr = bkpf-gjahr.
      tbukrs-monat = bkpf-monat.
      tbukrs-dmsol = bsega-dmsol.
      tbukrs-dmhab = bsega-dmhab.
      IF 'DK' CA bseg-koart.
        MOVE-CORRESPONDING tbukrs TO tbukrs_u.
        tbukrs_u-koart   = bseg-koart.
        tbukrs_u-umskz   = bseg-umskz.
        tbukrs_u-dmsol   = bsega-dmsol.
        tbukrs_u-dmhab   = bsega-dmhab.
        COLLECT tbukrs_u.
        tbukrs_u-monat   = 0.              "Summe für das Geschäftsjahr
        COLLECT tbukrs_u.
      ENDIF.
      COLLECT tbukrs.
    ENDFORM.                    "SUMME_MERKEN
    3.   FORM VORERFASSTE_STEUER_MERKEN                                *
          Nachlesen der Steuerzeilen vorerfaßter Belege                 *
          Gefüllt wird TBUKRS und der Extrakt                           *
    FORM vorerfasste_steuer_merken.
      CHECK hlp_bstat EQ 'V'.
      SELECT * FROM vbset
        WHERE ausbk EQ bkpf-bukrs
          AND belnr EQ bkpf-belnr
          AND gjahr EQ bkpf-gjahr.
        CHECK vbset-hwste NE 0.
        CLEAR: bseg, bsega.
        bseg-koart    = 'S'.
        bseg-mwart    = 'V'.               "oder 'A', nur zum Füllen von T2
        bseg-mwskz    = vbset-mwskz.
        IF vbset-shkzg EQ 'S'.
          bsega-dmsol = vbset-hwste.
          bsega-dmshb = vbset-hwste.
        ELSE.
          bsega-dmhab = vbset-hwste.
          bsega-dmshb = - vbset-hwste.
        ENDIF.
        IF par_summ EQ space.
          EXTRACT daten.
        ENDIF.
        PERFORM summe_merken.
      ENDSELECT.
    ENDFORM.                    "VORERFASSTE_STEUER_MERKEN
    4.   FORM BELEGKOPF_MERKEN                                         *
          Je Beleg werden gefüllt:                                      *
          T0 - Informationsflag                                         *
    FORM belegkopf_merken.
      t0-info = 0.                         "Belegkopf
      APPEND t0.
      CASE hlp_bstat.
        WHEN 'A'.
          t0-info = 6.                     "Ausgleichsbeleg
          APPEND t0.
        WHEN 'B'.
          t0-info = 7.                     "zurückgen. Ausgleichsbeleg
          APPEND t0.
        WHEN 'V'.
          t0-info = 1.                     "vorerfaßter Beleg
          APPEND t0.
        WHEN 'W'.
          t0-info = 5.                     "ersetzter vorerfaßter Beleg
          APPEND t0.
        WHEN 'Z'.
          t0-info = 4.                     "gelöschter vorerfaßter Beleg
          APPEND t0.
      ENDCASE.
      IF bkpf-xblnr NE space AND hlp_bstat NA 'BWZ'.
        t0-info = 2.                       "Referenz
        APPEND t0.
      ENDIF.
      IF bkpf-stblg NE space.
        t0-info = 3.                       "Storno
        APPEND t0.
      ENDIF.
      SORT t0.
    ENDFORM.                    "BELEGKOPF_MERKEN
    5.   FORM BELEGZEILE_MERKEN                                        *
          Je Beleg werden gefüllt:                                      *
          T1 - Personenkonteninformation                                *
          T2 - Steuerinformation (nicht bei vorerfaßten Belegen)        *
          T3 - Sachkonteninformation                                    *
    FORM belegzeile_merken.
    Vendors/ Customers
      IF bseg-koart CA 'DK'.
        t1-koart   = bseg-koart.
        IF par_hkto EQ 'X'.
          t1-ktonr = bseg-hkont.
        ELSEIF bseg-koart EQ 'K'.
          t1-ktonr = bseg-lifnr.
        ELSE.
          t1-ktonr = bseg-kunnr.
        ENDIF.
        t1-bschl   = bseg-bschl.
        t1-umskz   = bseg-umskz.
        t1-xnegp   = bseg-xnegp.
        t1-zlspr   = bseg-zlspr.                                "CR 21709
        t1-dmshb   = bsega-dmshb.
        t1-wrshb   = bsega-wrshb.
        t1-xfwae   = space.
        APPEND t1.
      Read the vendor description.
        IF bseg-koart = con_vendor.
          flg_vendr2 = con_true.
          flg_vendr3 = con_true.
          CLEAR lfa1-name1.
          SELECT SINGLE name1
          INTO   lfa1-name1
          FROM   lfa1
          WHERE  lifnr = bseg-lifnr.
        ELSEIF bseg-koart = con_cust.
          CLEAR kna1-name1.
          SELECT SINGLE name1
          INTO   kna1-name1
          FROM   kna1
          WHERE  kunnr = bseg-kunnr.
        ENDIF.
        IF bkpf-waers EQ t001-waers.
          CLEAR t1.
        ENDIF.
        t1-xfwae = 'X'.
        t1-name1 = lfa1-name1.
        IF t1-name1 IS INITIAL.
          t1-name1 = kna1-name1.
        ENDIF.
        APPEND t1.
        CLEAR:
           kna1-name1,
           lfa1-name1.
        CLEAR t1.
      Save the hash total amounts
        CLEAR tcurx-currdec.
        SELECT SINGLE currdec
        INTO   tcurx-currdec
        FROM   tcurx
        WHERE  currkey = bkpf-waers.
        IF tcurx-currdec = 1.
          factor = 10.
        ELSE.
          factor = 100.
        ENDIF.
        CLEAR hash_totals.
        hash_totals-bukrs = bkpf-bukrs.
        CONCATENATE bkpf-monat '/' bkpf-gjahr INTO hash_totals-poper.
        IF bsega-wrshb < 0.
          hash_totals-cramt = bsega-wrshb * factor.
        ELSE.
          hash_totals-dramt = bsega-wrshb * factor.
        ENDIF.
        COLLECT hash_totals.
    Tax accounts
      ELSEIF bseg-mwart CA 'AV'.
        t2-mwskz   = bseg-mwskz.
        t2-dmshb   = bsega-dmshb.
        APPEND t2.
        IF flg_vendr2 = con_true.
          flg_vendr2 = con_false.
          CLEAR t2.
          APPEND t2.
        ENDIF.
    GL Accounts
      ELSEIF hlp_bstat NA 'ABWZ'.
        t3-mwskz   = bseg-mwskz.
        t3-bschl   = bseg-bschl.
        t3-xnegp   = bseg-xnegp.
        t3-koart   = bseg-koart.
        t3-hkont   = bseg-hkont.
        t3-dmshb   = bsega-dmshb.
        APPEND t3.
        IF flg_vendr3 = con_true
        OR NOT bseg-kostl IS INITIAL
        OR NOT bseg-prctr IS INITIAL.
          flg_vendr3 = con_false.
          CLEAR t3.
          t3-kostl = bseg-kostl.
          t3-prctr = bseg-prctr.
          APPEND t3.
          CLEAR t3.
        ENDIF.
      ENDIF.
    ENDFORM.                    "BELEGZEILE_MERKEN
    6.   FORM BELEG_SCHREIBEN                                          *
          Ausgabe der Belginformationen                                 *
    FORM beleg_schreiben.
      DATA:
         len TYPE i.
    Berechnung der benötigten Zeilen pro Beleg
      DESCRIBE TABLE:
        t0 LINES cnt_t0,
        t1 LINES cnt_t1,
        t2 LINES cnt_t2,
        t3 LINES cnt_t3.
      cnt_max = cnt_t0.
      IF cnt_max LT cnt_t1.
        cnt_max = cnt_t1.
      ENDIF.
      IF cnt_max LT cnt_t2.
        cnt_max = cnt_t2.
      ENDIF.
      IF cnt_max LT cnt_t3.
        cnt_max = cnt_t3.
      ENDIF.
      ADD 1 TO cnt_max.
      IF cnt_max LE 10.
        RESERVE cnt_max LINES.
      ELSE.
        RESERVE 5 LINES.
      ENDIF.
      SUBTRACT 1 FROM cnt_max.
    Farbe setzen
      IF flg_color EQ 0.
        FORMAT COLOR 2 INTENSIFIED OFF.
        flg_color = 1.
      ELSE.
        FORMAT COLOR 2 INTENSIFIED.
        flg_color = 0.
      ENDIF.
    Index fuer optische Archivierung
      PERFORM new-group(rsbtchh0).
      DO cnt_max TIMES.
      Belegkopfinformationen
        WRITE     /1 sy-vline NO-GAP.
        IF sy-index LE cnt_t0.
          READ TABLE t0 INDEX sy-index.
          CASE t0-info.
            WHEN 0.                        "Belegkopf
              hlp_belnr = bkpf-belnr.      "Belegnr. mit führenden Nullen
            Referenz auf Originalbeleg
              PERFORM start_doc_reference(rsbtchh0)
                USING bkpf-bukrs bkpf-belnr bkpf-gjahr bkpf-bktxt. " change*
              WRITE:
                     bkpf-bukrs,
                     hlp_belnr,
                     bkpf-blart,
                     bkpf-budat DD/MM/YYYY.
            Ende der Referenz auf Originalbeleg
              PERFORM end_doc_reference(rsbtchh0).
            WHEN 1.                        "Vorerfaßter Beleg
              WRITE:
                (29) text-507.
            WHEN 2.                        "Referenz
              WRITE:
                (12) text-503,
                     bkpf-xblnr.
            WHEN 3.                        "Storno
              WRITE:
                (12) text-504,
                     bkpf-stblg.
            WHEN 4.                        "Gelöschter vorerfaßter Beleg
              WRITE:
                (29) text-507,
                (40) text-508.
            WHEN 5.                        "Ersetzter vorerfaßter Beleg
              txt_line = text-509.
              REPLACE:
                '&BLN' WITH bkpf-xblnr(10) INTO txt_line,
                '&GJR' WITH bkpf-xblnr+10  INTO txt_line.
              WRITE:
                (29) text-507,
                (40) txt_line.
            WHEN 6.                        "Ausgleichsbeleg
              WRITE:                       "
                (29) text-510.             "
            WHEN 7.                        "zurückgen. Ausgleichsbeleg
              WRITE:                       "
                (29) text-511.             "
          ENDCASE.
        ENDIF.
      Personenkonteninformationen
      Subledger Account Information
        WRITE  31(1) sy-vline NO-GAP.
      Internal tables T0 - T5 hold data for each section.
        IF sy-index LE cnt_t1.
          READ TABLE t1 INDEX sy-index.
          IF par_hkto EQ 'X'.
            PERFORM kontonummer USING t1-ktonr hlp_sakan.
          ELSE.
            hlp_sakan = t1-ktonr.
          ENDIF.
          IF t1-xfwae EQ space.
            IF t1-xnegp = 'X'.
              t1-xnegp = '-'.
            ENDIF.
          Write the vendor number.
            WRITE:   t1-koart,
                     hlp_sakan,
                     t1-bschl NO-GAP.
            IF t1-umskz IS INITIAL.
              WRITE:    t1-xnegp NO-GAP,
                        t1-umskz.
            ELSE.
              WRITE:    t1-umskz NO-GAP,
                        t1-xnegp.
            ENDIF.
            WRITE: t1-zlspr. "CR 21709 / 23588
            WRITE: (22) t1-dmshb CURRENCY t001-waers.
          ELSE.
          Write the document currency, amount and the
          vendor/ customer

    Hi,
    Please see documentation of enhancement MM06E005 (transaction SMOD).          
    Userexit EXIT_SAPMM06E_016 is a component of enhancement MM06E005.            
    With that enhancement, you can                                                
      -   Maintain/supply your own customer fields                                
      -   Update your own customer-specific tables                                
    You cannot:                                                                   
      -   Change standard fields                                                  
      -   Change data that depends on the document header in the items            
      -   Change data that depends on an item in the document header                                                                               
    Please have a look at Business Add-In (BAdI) ME_PROCESS_PO_CUST.              
    Regards,
    Edit

  • Is it possible to display only dynamically selected fields in the out put?

    Is it possible to display only dynamically selected fields in the out put? i need to display set of columns in the selection criteria, but in the output i have display only input given fields. because i need to convert it into .csv file. So i have to display selected fields from internal table. In oracle they are using"execute immediate". is there any equivalent in SAP?
    thanks in advance.

    Hi Remya,
    Are you talking about dynamic programming in ABAP ?
    If yes, there are concepts like RTTS which facilitates it.
    Yes, the select query also supports dynamic selection of fields. ( Please care about ( ) in dynamic sql ).
    Do more research on Field Symbols and statements like ASSIGN COMPONENT OF.
    Regards,
    Philip.

  • How to use Field-symbol with dynamic select query

    Can anybody tell me, how to use field-symbols in the dynamic select query.

    FIELD-SYMBOLS <fs> { typing | STRUCTURE struc DEFAULT dobj }.
    1. ... typing
    2. ... STRUCTURE struc DEFAULT dobj
    The FIELD-SYMBOLS statement declares a field symbol <fs>. The name conventions apply to the name fs. The angle brackets of the field symbols indicate the difference to data objects and are obligatory. You can declare field symbols in any procedure and in the global declaration section of an ABAP program, but not in the declaration section of a class or an interface. You can use a field symbol in any operand position in which it is visible and which match the typing defined using typing.
    After its declaration, a field symbol is initial - that is, it does not reference a memory area. You have to assign a memory area to it (normally using the ASSIGN statement) before you can use it as an operand. Otherwise an exception will be triggered.
    eg.
    FIELD-SYMBOLS <fs> TYPE ANY.
    DATA: BEGIN OF line,
            string1(10) VALUE '0123456789',
            string2(10) VALUE 'abcdefghij',
          END OF line.
    WRITE / line-string1+5.
    ASSIGN line-string1+5(*) TO <fs>.
    WRITE / <fs>.
    output:
    56789
    56789
    reward if helpful
    anju

  • Specific criteria in dynamic selection screen.

    Hi experts.
    I have a requirement to build dynamic selection screen fields. For these I would like to use FREE_SELECTIONS_INIT and FREE_SELECTIONS_DIALOG function modules.
    The problem is that all fields could be single field or as a range... Is there any chance to make specific fields (DATS) as a single field and others as a range ?
    Thanks a lot.
    Daniel.

    yes
    you need to pass fields in parameter FIELDS_TAB of function FREE_SELECTIONS_DIALOG
    in this structure you have the field type P or S

  • Dynamic selections in LDB

    Hi,
    I am using logical database PSJ. I need to use dynamic selections for fields PROFIT CENTER,COST CENTER.
    But not PROJECT,WBS ELEMENT ETC. For this u can run the transaction s_alr__87013573 .
    Kindly help me imm

    Use
    Loop at screen.
    if screen-name = 'XXX'.
    screen-active = 1.
    endif.
    modify screen.
    Endloop.

  • Dynamic Selection of Measures in Webi

    Hi All,
    I have the following requirement in webi for which i am facing difficulties.
    I have 2 measure fields - one for sales value and another for qty. My requirement is such that the user wants a selection option in the report that would enable him to view either of the one measure.
    Eg. If he selects QTY then the should be able to see only qty measure field in the report and not sales value. Similarly if he selects sales value then he should be able to see only sales value measure field in the report and not the qty measure.
    Can somebody pls suggest an approach that I could follow to fulfill my requirement.
    Thanks in advance.
    Regards,
    Rohit

    Hi Rohit,
    In Web I  Reports, there is no such option. You can do it with Crystal Reports_http://help.sap.com/businessobject/product_guides/cr2008V1/en/xi31_SP3_cr_usergde_en.pdf_
    Page:80
    or IBM cognos.
    http://www.ibm.com/developerworks/data/library/cognos/reporting/dynamicreport_design/page570.html?ca=drs-_
    All the Best,
    Madhu...

Maybe you are looking for

  • Is there any way to get an older app version of apple tv remote?

    It's been several months since the apple tv remote app was updated to 3.0+. Once I updated, I have not been able to control my apple tv (2nd gen). I have 2 ipod touch (2nd gen as well) and neither can use the updated app to control our apple tv any m

  • Pull your finger out Apple!

    Why is there NOT a version of iTunes that is compatible with WindowsXP Pro 64? When are Apple gonna get their fingers out of their butt and release a 64 version? Anyone else have a similar problem and are just as annoyed as I am? Thanks AMD64 Custom

  • After making color adjustments, the reference monitors lag behind by about 10 to 15 seconds.

    I've tried a new sequence, clearing cache, reinstalling, new project, nothing seems to help. Any advice? This only seems to be happening in one project - the one project I NEED to work on. This is making applying color correction/grading impossible a

  • Reading serial spp Bluetooth device

    I have A device that sends a message over blutooth (spp) once a second and i want to read the device and record the output with out missing messages. problem is it seems like the timing gets off and i miss messages or get half messages sometimes. can

  • TS1363 Unable to access secure iPhone update connection

    Trying to update my iPhone and get a message that I cannot connect to the secure update connection even though I do have an internet cnnection. Any ideas?