VBFA vbeln and bsad vbeln

dear gurus,
I stuck with such very strange problem i have a internal table from entries of vbfa
now i am passing vbeln to bsad vbeln but it not fetching all record i am not getting problem.
kindly help me.
TYPES : BEGIN OF  TY_BSID ,
          BUKRS TYPE BSID-BUKRS,
          KUNNR TYPE BSID-KUNNR,
          GJAHR TYPE BSID-GJAHR,
          BELNR TYPE BSID-BELNR,
          BUDAT TYPE BSID-BUDAT,
          BLDAT TYPE BSID-BLDAT,
          XBLNR TYPE BSID-XBLNR,
          BUZEI TYPE BSID-BUZEI,
          BLART TYPE BSID-BLART,
          BSCHL TYPE BSID-BSCHL,
          DMBTR TYPE BSID-DMBTR,
          HKONT TYPE BSID-HKONT,
          VBELN TYPE BSID-VBELN,
          KIDNO TYPE BSID-KIDNO,
          TXT20 TYPE SKAT-TXT20,
          MATNR TYPE VBAP-MATNR,
          END OF TY_BSID.
DATA : WA_BSID TYPE TY_BSID,
         IT_BSID TYPE TABLE OF TY_BSID WITH HEADER LINE.
TYPES : BEGIN OF TY_VBFA,
         VBELV TYPE VBFA-VBELV,
         MATNR TYPE VBFA-MATNR,
         VBELN TYPE bsad-VBELN,
         END OF TY_VBFA.
DATA : WA_VBFA TYPE TY_VBFA,
         IT_VBFA TYPE TABLE OF TY_VBFA WITH HEADER LINE.
IF IT_VBAK[] IS NOT INITIAL.
    SELECT VBELV MATNR VBELN FROM VBFA INTO TABLE IT_VBFA FOR ALL ENTRIES IN
                      IT_VBAK WHERE VBELV =  IT_VBAK-VBELN.
  ENDIF.
loop at it_vbfa into WA_VBFA.
   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
       EXPORTING
         INPUT         = WA_VBFA-vbeln
      IMPORTING
        OUTPUT        =  WA_VBFA-vbeln.
*MODIFY IT_vbfa FROM WA_VBFA TRANSPORTING vbeln.
*endloop.
  IF IT_VBFA[] IS NOT INITIAL.
   loop at it_vbfa into WA_VBFA.
    SHIFT WA_VBFA-vbeln LEFT DELETING LEADING '0'.
    MODIFY IT_vbfa FROM WA_VBFA TRANSPORTING vbeln.
    endloop.
     sort it_vbfa by vbeln ASCENDING.
   if S_BUDAT-low is not INITIAL.
    SELECT BUKRS KUNNR GJAHR BELNR BUDAT BLDAT XBLNR BUZEI BLART BSCHL DMBTR HKONT VBELN   KIDNO " MATNR
      FROM BSID INTO CORRESPONDING FIELDS OF  TABLE IT_BSID FOR ALL ENTRIES IN
      IT_VBFA WHERE VBELN = IT_VBFA-VBELN
            AND  BUKRS IN S_BUKRS AND
                 BLART IN ('RV','VR') and
                 BUDAT in S_BUDAT.
    SELECT BUKRS KUNNR GJAHR BELNR BUDAT BLDAT XBLNR BUZEI BLART BSCHL DMBTR HKONT VBELN   KIDNO
     FROM BSAD APPENDING CORRESPONDING FIELDS OF TABLE  IT_BSID FOR ALL ENTRIES IN
     IT_VBFA WHERE VBELN = IT_VBFA-VBELN
          AND  BUKRS IN S_BUKRS AND
               BLART IN ('RV','VR') and
               BUDAT in S_BUDAT.
i have done lot of changes because vbfa-vbeln and bsad-vbeln data element diffrent.
HELP ME
Regards
victor

Hi,
First you have check internal table 'IT_VBAK' data. If data is available in internal table then again you have to check the data in database table BSAD and VBFA also based on internal table data. I think the data is not available in database table based on internal table data.
Ram.

Similar Messages

  • Should we index table vbfa if vbeln and vbelv is already key field.

    Dear All,
    actually I am passing billing document into vbfa and want vbelv  for faster access data from data base into internal table 
    should we index table vbfa if vbeln and vbelv is already key field.
    Regards
    chandrashekar

    no need.

  • Vbeln and inspection lot .

    hi friends ,
    can i get the VBELN and PRUEFLOS (inspection lot which is in some qualty inspection) in one same table.
    thanks .
    Bhupi.

    Hi Bhupi,
    Try table AFKO. It has fields RMANR and PRUEFLOS.
    Regards,
    Aparna Gaikwad

  • OBJNR: VB0000002170000010 in VBELN and POSNR

    Hi,
    is there any table of FM to get an SD-VBELN and SD-POSNR
    by the OBJNR VB0000002170000010.
    Thanks.
    Regards, Dieter

    Hi Dieter,
    It is hard to find a FM to make vbeln and posnr from objnr.
    i think OBJNR is used to update in some status table like NAST.
    and the value is programitacally pass to update in that table; and all the records will conatins same format.
    so to fetch VBELN and POSNR from OBJNR...
    follow this code:
    data: loc_objnr(18)  type c,
            loc_vbeln(10)  type c,
            loc_posnr(6) type c.
    loc_objnr = OBJNR.
    loc_vbeln = loc_objnr+2(10).
    loc_posnr = loc_objnr+12(6)
    i think it will solve ur problem.
    Regards
    Krishnendu

  • Using bsid and bsad I needed get partner name related to sales order

    Hi
    Using bsid and bsad I needed get partner name related to sales order
    I have gone through the tables but its vbeln column is blank
    How can I make relation between bsid and bsad with vbak if vbeln and column is blank in the table bsid and bsad.
    Please guide me.
    Regards
    Sebastian
    Edited by: Sebastian John on Apr 21, 2009 3:35 PM

    BSID-VBELN = VBRK-VBELN.
    Billing document number is there in BSID table.
    Regs.

  • Performance Issues on BSID and BSAD

    Hello guys,
    for a custom report I need the balance data of a couple of vendors for different keydates. Therefor I tried to use function 'BAPI_AR_ACC_GETKEYDATEBALANCE' which works fine but takes a lot of performance time when getting data for more than one vendor or more than one key date. The function mainly reads BSID and BSAD tables which is enough for my report, so I tried to get it faster with creating my own select.
    When looking at the popular SAP boards you get different opinions about the best way for the performance in SELECTS. So can you please tell me what you think would be the best way for tables BSID and BSAD?
    I got the key fields company code as parameter and customer as range. I also need only normal documents (BSTAT = ' ') and only documents until one or more keydates as range (BUDAT <= keydate).
    So what would be the best way?
    (1) Moving the whole BSID/BSAD fields into local BSID/BSAD table or just the fields that I need (see example)?
    (2) Doing one SELECT for every vendor no. in the range or getting all vendor no in one select?
    Any other performance hints? :-)
       SELECT bukrs kunnr budat shkzg dmbtr pswsl pswbt FROM bsid
         INTO CORRESPONDING FIELDS OF TABLE gt_bsid
         WHERE bukrs EQ pa_bukrs
         AND   kunnr IN gr_kunnr
         AND   budat LE pa_stich-high
         AND   bstat EQ ''.
       SELECT bukrs kunnr augdt budat shkzg dmbtr pswsl pswbt FROM bsad
         INTO CORRESPONDING FIELDS OF TABLE gt_bsad
         WHERE bukrs EQ pa_bukrs
         AND   kunnr IN gr_kunnr
         AND   budat LE pa_stich-high
         AND   augdt GT pa_stich-high
         AND   bstat EQ ''.
    Thanks a lot!
    Regards
    Michael

    Almost always prefer one SELECT to a SELECT IN LOOP.
    Another solution could be reading also some total table :
    KNC1 (no special G/L, Balance Carried Forward + total DB/CR per period, one record per Fiscal Year)
    KNC3 for special G/L (one record per fiscal year and special G/L indicator, only one total per year)
    Only restrict access to BSID/BSAD for dates that are not end of period (or don't allow those...)
    NB: From my experience, you can keep the INTO CORRESPONDING, just define a structure with only required fields, the actual generated SQL statement will only ask for those fields (read also Why "INTO CORRESPONDING" is much better than its reputation)
    Regards,
    Raymond

  • Entry in Both BSID and BSAD

    Hi. I have a problem now. An entry in Accounting both exists in tables BSID and BSAD. What do i have to do?

    Hi Andre,
    Check if the amount are also same. It may be that it is partially posted document.
    Or post this is ERP Financials forum. You will get more correct answer.
    Reward points if useful.
    Regards,
    Atish

  • BAPI to update Business Area in table BSEG and BSAD

    Hi,
    Is there any BAPI that will update the field Business Area in table BSEG and BSAD?
    Thanks,
    Ekit
    Moderator: Please, search SDN

    Hi,
    You can not update the business area in the posted documents.
    You need to reverse them and have to recreate.
    Regards,
    Gaurav

  • Bsid and bsad

    hi,
    anyone can explain to me.
    1) bsid is to list all the open items whereas bsad is to list all cleared items?
    2) say i have an doc type RV 5300000001 with amount $1000. i use f-29 to post cust downpayment DA 4000000002 and f-39 to clear cust downpayment against 1000 DZ 4500000034. may i know why RV and DA still sitting in bsid as $1000 fully cleared whereas DA and DZ in bsad?
    3) what is this clearing doc for? it is in bsid or bsad?
    thanks

    Hi SAP_USER_SAP,
    Hope this can help
    1. Yes, BSID for open items, BSAD for cleared items.
    <u>2. Well, the process is like below :</u>
    You post a document with type RV (Let say Doc No=AAA) and then you post a down payment using F-29 (Doc No = BBB). <b>Both of the documents has no relationship.</b> And after you post, They will sit on the BSID.
    Afterwards, You clear the down payment(Doc No=BBB) with F-39. This will create a new document (Let say Doc No = CCC ).
    CCC will clear BBB but on the other hand CCC also have an open item (<b>you have to clear this later against the RV document</b>). So CCC will sit on BSID and BSAD.
    Because BBB has already been cleared by CCC, BBB will move from BSID to BSAD.
    Now you have AAA and CCC sit in BSID.
    BBB and CCC sit in BSAD.
    In order to move AAA and CCC from BSID to BSAD you have to do the clearing again. You can use t-code : F-22 to do it.
    3. Document ,which is already cleared, should be sit in BSAD.
    The scenario is like this :
    For Example, you have receive a down payment. Two days later you send the invoice to customer(RV document) and post it to system.
    Down payment and invoice will be an open item.
    When customer pay the invoice, you have to clear the down payment and invoice. Afterwards, the will sit on BSAD.

  • Function modue which imports belnr and exports vbeln?

    hi all,
    can anyone tell me if there is any function module in which if i pass accounting document(belnr) i get the corresponding billing document(vbeln)..

    You can also try:
      DATA: v_reference    TYPE bkpf-awtyp,           "Reference procedure
            v_objectkey    TYPE bkpf-awkey.           "Object key
        v_objectkey = billing_doc.       
        v_reference  = 'VBRK'.
        SELECT SINGLE bukrs belnr gjahr               "Accounting Doc Header
          FROM bkpf
          INTO doc_int
          WHERE awtyp =  v_reference
            AND awkey =  v_objectkey.
    Rob

  • Trouble creating a open items report (BSID and BSAD tables)

    Hi guys,
    im creating a report that must display open items for an especific date, and i do it very well with a query from BSID table.
    The problem comes when u use a date on the past, example last week.
    if u do that, the items are now closed and are no longer stored in BSID table, so i think that they must be now in BSAD table, but i dont know how to relate wich ones are recently closed...
    i also tried to do a query from BSAD with augdt >= last week date, and i almost get the items that i needed(this items plus the ones from BSID), but is not exactly because u can close an item with a date in the past..
    is there any way to relate that 2 tables, or what exactly happens when an items change from bsid to bsad??
    any ideas?

    Hi;
    I think the best way to recive the necessary information is using logical data base DDF.  You can use report RFITEMAR to see how use the logical data base.
    Some months ago I've read the data in my report in following way:
    1. make Z-copy of report RFITEMAR
    2. in Z-copy after end-of-selection insert
    export it_pos to memory id 'POS_TABLE'.
    3. In your report write a form similar to my form below:
    *&      Form  submit_zrfitemar
    FORM submit_zrfitemar  tables    rkunnr  type trgr_kunnr
                                     it_pos  type it_rfposxext
                           using     ibukrs  type bukrs
                                     idatsd  type sy-datum.
       data: rspar    type table of rsparams,
             l_rspar  type rsparams,
             l_pos    type rfposxext,
             akunnr  type kunnr.
       l_rspar-selname = 'DD_KUNNR'.
       l_rspar-kind    = 'S'.
       loop at rkunnr.
           move-corresponding rkunnr to l_rspar.
           if l_rspar-high = ''.
               l_rspar-option  = 'EQ'.
               else.
               l_rspar-option  = 'BT'.
           endif.
           append l_rspar to rspar.
        endloop.
        clear: l_rspar.
        l_rspar-selname = 'DD_BUKRS'.
        l_rspar-kind    = 'S'.
        l_rspar-sign    = 'I'.
        l_rspar-option  = 'BT'.
        l_rspar-low  = ibukrs.
        append l_rspar to rspar.
        clear: l_rspar.
        l_rspar-selname = 'PA_STIDA'.
        l_rspar-kind    = 'S'.
        l_rspar-sign    = 'I'.
        l_rspar-option  = 'BT'.
        l_rspar-low  = idatsd.
        append l_rspar to rspar.
        clear: it_pos[].
      submit ZRFITEMAR
      with selection-table rspar
      and return.
      import it_pos from memory id 'POS_TABLE'.
    ENDFORM.                    " submit_zrfitemar
    You find the necessary data in table IT_POS.
    JS
    Edited by: John Smith on Oct 9, 2008 5:42 PM

  • Select single and select

    hi everybody
    what is the exact difference between select single vbeln  and select vbeln
    In what situations i should use these select single vbeln or select vbeln
    regards
    hridhayanjili.

    Hai
    Go through the following Document
    According to SAP Performance course the SELECT UP TO 1 ROWS is faster than SELECT SINGLE because you are not
    using all the primary key fields.
    select single is a construct designed to read database records with primary key. In the absence of the primary key,
    it might end up doing a sequential search, whereas the select up to 1 rows may assume that there is no primary key
    supplied and will try to find most suitable index.
    The best way to find out is through sql trace or runtime analysis.
    Use "select up to 1 rows" only if you are sure that all the records returned will have the same value for the field(s)
    you are interested in. If not, you will be reading only the first record which matches the criteria, but may be the
    second or the third record has the value you are looking for.
    The System test result showed that the variant Single * takes less time than Up to 1 rows as there is an additional
    level for COUNT STOP KEY for SELECT ENDSELECT UP TO 1 ROWS.
    The 'SELECT SINGLE' statement selects the first row in the database that it finds that fulfils the 'WHERE' clause
    If this results in multiple records then only the first one will be returned and therefore may not be unique.
    Mainly: to read data from
    The 'SELECT .... UP TO 1 ROWS' statement is subtly different. The database selects all of the relevant records that
    are defined by the WHERE clause, applies any aggregate, ordering or grouping functions to them and then returns
    the first record of the result set.
    Mainly: to check if entries exist.
    You can refer to the below link..
    http://www.sap-img.com/abap/difference-between-select-single-and-select-upto-one-rows.htm
    Regards
    Sreeni

  • Header and item details

    Hi all,
          How to link Header and Item details
                                                    Ranjith

    Hi,
    The Line item table always have the header tables key as one of the key field. so u can use it.
    for eg : VBAK-vbeln and VBAP-vbeln
    Vbeln is the link between sales header and item table.
    Hope this helps.

  • RE: PERFORMANCE

    REPORT ZCHECK .
    *&                      TABLES/VIEWS
    TABLES: mseg,
            ser03,
            objk,
           zprealert,
            vbrk,
            vbrp,
            zinftsalecntrl,
            vbfa.
    *&                VARIABLES/STRUCTURES/INTERNAL TABLES
    DATA: BEGIN OF it_mseg OCCURS 0,
            mblnr     LIKE mseg-mblnr,
            mjahr     LIKE mseg-mjahr,
            zeile     LIKE mseg-zeile,
          END OF it_mseg.
    DATA: BEGIN OF it_ser03 OCCURS 0,
            obknr     LIKE ser03-obknr,
            mblnr     LIKE ser03-mblnr,
            zeile     LIKE ser03-zeile,
            bwart     LIKE ser03-bwart,
            charge    LIKE ser03-charge,
            datum     LIKE ser03-datum,
            werk      LIKE ser03-werk,
            lagerort  LIKE ser03-lagerort,
          END OF it_ser03.
    DATA: BEGIN OF it_objk OCCURS 0,
            obknr LIKE objk-obknr,
            sernr LIKE objk-sernr,
            matnr LIKE objk-matnr,
          END OF it_objk.
    DATA: BEGIN OF it_alert OCCURS 0,
            rsnno LIKE zprealert-rsnno,
    ***kdamle-27102004-start
            status LIKE zprealert-status,
    ***kdamle-27102004-end
          END OF it_alert.
    DATA: BEGIN OF it_vbrk OCCURS 0,
            vbeln LIKE vbrk-vbeln,
            fkdat LIKE vbrk-fkdat,
            fkart LIKE vbrk-fkart,
            vkorg LIKE vbrk-vkorg,
            vtweg LIKE vbrk-vtweg,
            spart LIKE vbrk-spart,
            fksto LIKE vbrk-fksto,
          END OF it_vbrk.
    DATA: BEGIN OF it_vbrp OCCURS 0,
            vbeln LIKE vbrp-vbeln,
            matnr LIKE vbrp-matnr,
            charg LIKE vbrp-charg,
          END OF it_vbrp.
    DATA: BEGIN OF it_inftsale OCCURS 0,
            delivery    LIKE zinftsalecntrl-delivery,
            billingdoc  LIKE zinftsalecntrl-billingdoc,
          END OF it_inftsale.
    DATA: BEGIN OF it_vbfa OCCURS 0,
            vbelv LIKE vbfa-vbelv,
            vbeln LIKE vbfa-vbeln,
          END OF it_vbfa.
    DATA: BEGIN OF it_vbfa_1 OCCURS 0,
            vbelv   LIKE vbfa-vbelv,
            vbeln   LIKE vbfa-vbeln,
            vbtyp_v LIKE vbfa-vbtyp_v,
    ***kdamle-19052005-start
            vbtyp_n LIKE vbfa-vbtyp_n,
    ***kdamle-19052005-end
          END OF it_vbfa_1.
    DATA: BEGIN OF it_vbfa_2 OCCURS 0,
            vbelv   LIKE vbfa-vbelv,
            vbeln   LIKE vbfa-vbeln,
            vbtyp_n LIKE vbfa-vbtyp_n,
    ***kdamle-19052005-start
            plmin   LIKE vbfa-plmin,
    ***kdamle-19052005-end
          END OF it_vbfa_2.
    DATA: BEGIN OF it_out OCCURS 0,
            rsnno     LIKE zprealert-rsnno,
            matnr     LIKE objk-matnr,
            charg     LIKE ser03-charge,
            bwart     LIKE ser03-bwart,
            mblnr     LIKE ser03-mblnr,
            vbeln     LIKE vbrk-vbeln,
            datum     LIKE ser03-datum,
            zeile     LIKE ser03-zeile,
            werk      LIKE ser03-werk,
            lagerort  LIKE ser03-lagerort,
            fkdat     LIKE vbrk-fkdat,
            fkart     LIKE vbrk-fkart,
            vkorg     LIKE vbrk-vkorg,
            vtweg     LIKE vbrk-vtweg,
            spart     LIKE vbrk-spart,
    ***kdamle-27102004-start
            status    LIKE zprealert-status,
    ***kdamle-27102004-end
          END OF it_out.
    ***kdamle-05.10.2004-start
    *display table as per o/p file structure
    DATA: BEGIN OF it_disp OCCURS 0,
            rsnno     LIKE zprealert-rsnno,
            matnr     LIKE objk-matnr,
            charg     LIKE ser03-charge,
            bwart     LIKE ser03-bwart,
            mblnr     LIKE ser03-mblnr,
            zeile     LIKE ser03-zeile,
            werk      LIKE ser03-werk,
            lagerort  LIKE ser03-lagerort,
            datum     LIKE ser03-datum,
            vbeln     LIKE vbrk-vbeln,
            fkdat     LIKE vbrk-fkdat,
            fkart     LIKE vbrk-fkart,
            vkorg     LIKE vbrk-vkorg,
            vtweg     LIKE vbrk-vtweg,
            spart     LIKE vbrk-spart,
          END OF it_disp.
    DATA : BEGIN OF it_formatted OCCURS 0,
            record(140),
           END OF it_formatted.
    DATA: BEGIN OF it_dwn OCCURS 0,
            text1(15),
            text2(15),
            text3(15),
            text4(15),
            text5(15),
          END OF it_dwn.
    *This table will contain uploaded mblnr or vbeln data
    *in foreground, it will contain either mblnr or vbeln.
    *in backround, it will first contain data uploaded from users machine
    *and loaded on the application server.
    *Then it is erased and filled with data which is read from application
    *server since data from users machine cannot be read in background
    DATA: BEGIN OF it_up OCCURS 0,
    ***kdamle-24052005-start
    *positions swapped for vbeln and mblnr
            vbeln LIKE vbrk-vbeln,
            mblnr LIKE ser03-mblnr,
    ***kdamle-24052005-end
          END OF it_up.
    ***kdamle-05.10.2004-end
    DATA : it_alv LIKE STANDARD TABLE OF it_out.
    DATA: cntnr TYPE REF TO cl_gui_custom_container,
          grid TYPE REF TO cl_gui_alv_grid.
    DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
          s_fieldcat   LIKE LINE OF gt_fieldcat,
          alv_layout   TYPE slis_layout_alv.
    DATA: ls_alv_event TYPE slis_alv_event,
          i_alv_event  TYPE slis_t_event.
    DATA: gt_list_top_of_page   TYPE slis_t_listheader,
          infotxt               TYPE slis_listheader-info.
    DATA: g_variant LIKE disvariant VALUE 'ZPPSALE',
          gx_variant LIKE disvariant.
    DATA: lin TYPE i.
    DATA: wkey LIKE vbfa-vbtyp_v.
    DATA: v_datum LIKE sy-datum,
          v_uzeit LIKE sy-uzeit.
    ***kdamle-05.10.2004-start
    CONSTANTS: hex(1) TYPE x VALUE '09',   "tab
               app_path TYPE rlgrap-filename
               VALUE '/bdcusers/mmdata/'.
    DATA: fnam LIKE rlgrap-filename,
          l_path(100),
          flag(1),
          txt(500).
    DATA: fnam1 LIKE rlgrap-filename.
    DATA : BEGIN OF iline OCCURS 0,
             line(4000),
           END OF iline.
    DATA : BEGIN OF i_tty OCCURS 0,
            line(300),
           END OF i_tty.
    *required for pushbutton info
    DATA: g_answer     TYPE c,
          g_lines_tab  TYPE popuptext OCCURS 0
          WITH HEADER LINE.
    DATA: v_flagmtl,
          v_flaginv.
    ***kdamle-05.10.2004-end
    ***kdamle-08122004-start
    DATA: v_msgtxt(150).
    ***kdamle-08122004-end
    *&                      SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln.
    SELECT-OPTIONS: s_mblnr FOR ser03-mblnr.
    SELECTION-SCREEN END OF BLOCK blk1.
    SELECTION-SCREEN SKIP 1.
    ***kdamle-05.10.2004-start
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-007.
    PARAMETERS: p_ufname LIKE rlgrap-filename.
    *pushbuttons to give info and download file format
    SELECTION-SCREEN: PUSHBUTTON /1(7)   help USER-COMMAND info,
                      PUSHBUTTON  33(25) down USER-COMMAND down.
    SELECTION-SCREEN END OF BLOCK blk2.
    SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-002.
    PARAMETERS: S_VAR LIKE DISVARIANT-VARIANT.
    *SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS: p_r1 RADIOBUTTON GROUP rbg1 DEFAULT 'X' USER-COMMAND ucomm,
                s_var LIKE disvariant-variant MODIF ID pr1.
    PARAMETERS: p_r2 RADIOBUTTON GROUP rbg1,
                p_fname LIKE rlgrap-filename MODIF ID pr2.
    PARAMETERS: p_r3 RADIOBUTTON GROUP rbg1,
                p_lfname LIKE rlgrap-filename MODIF ID pr3,
                p_fname1 LIKE rlgrap-filename MODIF ID pr4.
    SELECTION-SCREEN END OF BLOCK blk3.
    SELECTION-SCREEN BEGIN OF BLOCK blk4 WITH FRAME TITLE text-003.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN COMMENT 1(75) text-004 MODIF ID pr5.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN COMMENT 1(75) text-005 MODIF ID pr6.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN COMMENT 1(75) text-006 MODIF ID pr7.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK blk4.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
      PERFORM get_file.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname1.
      PERFORM get_lfile.
    ***kdamle-05.10.2004-start
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ufname.
      PERFORM get_ufile.
    ***kdamle-05.10.2004-end
    *&               AT SELECTION SCREEN OUTPUT
    ***kdamle-05.10.2004-start
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF p_r1 = 'X'.
          IF screen-group1 = 'PR1'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR2'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR3'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR4'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR5'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR6'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR7'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ENDIF.
        ELSEIF p_r2 = 'X'.
          IF screen-group1 = 'PR1'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR2'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR3'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR4'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR5'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR6'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR7'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ENDIF.
        ELSEIF p_r3 = 'X'.
          IF screen-group1 = 'PR1'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR2'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR3'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR4'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ELSEIF screen-group1 = 'PR5'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR6'.
            screen-input     = '0'.
            screen-output    = '0'.
            screen-invisible = '1'.
          ELSEIF screen-group1 = 'PR7'.
            screen-input     = '1'.
            screen-output    = '1'.
            screen-invisible = '0'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    *&                      INITIALIZATION
    INITIALIZATION.
      MOVE '@0S@' TO help.
      MOVE '@49@ Upload File Format' TO down.
      PERFORM fill_infotext.
    ***kdamle-05.10.2004-end
    *&                      AT SELECTION SCREEN
    AT SELECTION-SCREEN.
      IF sy-ucomm = 'ONLI'
    ***kdamle-08122004-start
          AND p_r3 NE 'X'.
    ***kdamle-08122004-end
        IF NOT s_vbeln IS INITIAL
          AND NOT s_mblnr IS INITIAL
          AND NOT p_ufname IS INITIAL.
          MESSAGE e000(yw) WITH
            'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
        ELSEIF s_vbeln IS INITIAL
              AND s_mblnr IS INITIAL
              AND p_ufname IS INITIAL.
          MESSAGE e000(yw) WITH
            'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
        ENDIF.
        IF NOT s_mblnr IS INITIAL AND NOT p_ufname IS INITIAL.
          MESSAGE e000(yw) WITH
            'Enter Either Material Doc. Or Upload file name'.
        ELSEIF NOT s_vbeln IS INITIAL AND NOT p_ufname IS INITIAL.
          MESSAGE e000(yw) WITH
            'Enter Either Invoice No. Or Upload file name'.
        ENDIF.
      ENDIF.
    ***kdamle-05.10.2004-start
    IF sscrfields-ucomm = 'INFO'.
      IF sy-ucomm = 'INFO'.
        CALL FUNCTION 'DD_POPUP_WITH_INFOTEXT'
             EXPORTING
                  titel        = 'Text File Format'
                  start_column = 10
                  start_row    = 12
                  end_column   = 85
                  end_row      = 22
                  infoflag     = ' '
             IMPORTING
                  answer       = g_answer
             TABLES
                  lines        = g_lines_tab.
    ELSEIF sscrfields-ucomm = 'DOWN'.
      ELSEIF sy-ucomm = 'DOWN'.
        PERFORM fill_idwn.
      ENDIF.
      IF sy-ucomm = 'ONLI'.
        IF p_r2 = 'X'.
          IF p_fname IS INITIAL.
            SET CURSOR FIELD 'P_FNAME'.
            MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
          ENDIF.
        ENDIF.
        IF p_r3 = 'X'.
          IF p_lfname = space.
            SET CURSOR FIELD 'P_LFNAME'.
            MESSAGE e000(yw) WITH 'FileName on Server cannot be empty'.
          ENDIF.
          IF p_fname1 = space.
            SET CURSOR FIELD 'P_FNAME1'.
            MESSAGE e000(yw) WITH 'Local FileName cannot be empty'.
          ENDIF.
        ENDIF.
      ELSEIF sy-ucomm = 'SJOB'.
        IF p_r2 = 'X'.
          IF p_fname IS INITIAL.
            SET CURSOR FIELD 'P_FNAME'.
            MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
          ENDIF.
          IF p_fname CA ':' OR p_fname CA '/'  OR p_fname CA '\'.
            SET CURSOR FIELD 'P_FNAME'.
            MESSAGE e000(yw) WITH 'Enter only File Name for Background job'.
          ENDIF.
        ENDIF.
        IF p_r3 = 'X'.
          MESSAGE e000(yw) WITH
              'This option cannot be executed in Background mode'.
        ENDIF.
      ENDIF.
      IF p_fname CA '*'.
        MESSAGE e000(yw) WITH '* (star) not allowed in Filename'.
      ENDIF.
      IF sy-ucomm = 'ONLI' AND NOT p_ufname IS INITIAL.
    *in foreground processing directly read input file from users machine
        PERFORM upload_file TABLES it_up.
      ELSEIF sy-ucomm = 'SJOB' AND NOT p_ufname IS INITIAL.
    *download the file read input file from users machine onto the
    *application server first as it cannot be read during background
    *processing
        PERFORM download_to_app_server.
      ENDIF.
    ***kdamle-05.10.2004-end
    *&               AT SELECTION SCREEN ON VALUE REQUEST
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
      PERFORM select_variant.
    *&                      START OF SELECTION
    START-OF-SELECTION.
    ***kdamle-05.10.2004-start
      IF sy-batch = 'X'.
        CLEAR it_up.
        CLEAR it_up[].
        PERFORM upload_app_server.
        READ TABLE it_up INDEX 1.
      ENDIF.
      IF p_r3 = 'X'.
        PERFORM create_local_file.
        EXIT.
      ENDIF.
      IF NOT s_mblnr IS INITIAL.
        SELECT mblnr mjahr zeile FROM mseg
                               INTO CORRESPONDING FIELDS OF TABLE it_mseg
                                 WHERE mblnr IN s_mblnr
                                   AND xauto NE 'X'.
        IF sy-subrc NE 0.
          MESSAGE s000(yw) WITH 'No Data Found'.
          STOP.
        ENDIF.
        PERFORM get_data_from_mtl.
      ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-mblnr IS INITIAL.
        v_flagmtl = 'X'.
        IF NOT it_up[] IS INITIAL.
          SORT it_up BY mblnr.
          SELECT mblnr mjahr zeile FROM mseg
            INTO CORRESPONDING FIELDS OF TABLE it_mseg
            FOR ALL ENTRIES IN it_up
            WHERE mblnr = it_up-mblnr
              AND xauto NE 'X'.
        ENDIF.
        PERFORM get_data_from_mtl.
      ELSEIF NOT s_vbeln IS INITIAL.
        SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
                           INTO CORRESPONDING FIELDS OF TABLE it_vbrk
                               WHERE vbeln IN s_vbeln.
        IF sy-subrc NE 0.
          MESSAGE s000(yw) WITH 'No Data Found'.
          STOP.
        ENDIF.
        PERFORM get_data_from_inv.
      ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-vbeln IS INITIAL.
        v_flaginv = 'X'.
        IF NOT it_up[] IS INITIAL.
          SORT it_up BY vbeln.
          SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
            INTO CORRESPONDING FIELDS OF TABLE it_vbrk
            FOR ALL ENTRIES IN it_up
            WHERE vbeln = it_up-vbeln.
        ENDIF.
        PERFORM get_data_from_inv.
      ENDIF.
    ***kdamle-05.10.2004-end
    *&                      END OF SELECTION
    END-OF-SELECTION.
    ***kdamle-05.10.2004-start
      IF NOT s_mblnr IS INITIAL OR v_flagmtl = 'X'.
    ***kdamle-05.10.2004-end
        CHECK NOT it_mseg[] IS INITIAL.
        PERFORM populate_output_1.
    ***kdamle-05.10.2004-start
      ELSEIF NOT s_vbeln IS INITIAL OR v_flaginv = 'X'.
    ***kdamle-05.10.2004-end
        PERFORM populate_output_2.
      ENDIF.
    ***kdamle-05.10.2004-start
      IF p_r1 = 'X'.
    ***kdamle-05.10.2004-end
        DESCRIBE TABLE it_out LINES lin.
        IF lin > 0.
          PERFORM create_f_catalog_0100.
          PERFORM set_defaults_grid.
          SET TITLEBAR 'DOC' WITH '[count ='
                                  lin
          CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
               EXPORTING
                    i_callback_program = 'ZDOC_SRLST'
                    is_layout          = alv_layout
                    it_fieldcat        = gt_fieldcat
                    i_default          = 'X'
                    i_save             = 'A'
                    is_variant         = g_variant
               TABLES
                    t_outtab           = it_out.
        ELSE.
          MESSAGE s000(yw) WITH 'No Data Selected'.
        ENDIF.
    ***kdamle-05.10.2004-start
      ELSEIF p_r2 = 'X'.
        PERFORM create_disp_table.
        IF sy-batch = space.
          PERFORM online_download.
        ELSE.
          PERFORM download_data.
        ENDIF.
      ENDIF.
    ***kdamle-05.10.2004-end
    *&      Form  POPULATE_OUTPUT_1
    FORM populate_output_1.
    SORT IT_SER03  BY MBLNR.
      SORT it_vbfa_1 BY vbeln.
      SORT it_vbfa_2 BY vbelv.
      SORT it_vbrk   BY vbeln.
      SORT it_objk   BY obknr.
      SORT it_alert  BY rsnno.
      LOOP AT it_ser03.
        it_out-charg     = it_ser03-charge.
        it_out-bwart     = it_ser03-bwart.
        it_out-zeile     = it_ser03-zeile.
        it_out-mblnr     = it_ser03-mblnr.
        it_out-datum     = it_ser03-datum.
        it_out-werk      = it_ser03-werk.
        it_out-lagerort  = it_ser03-lagerort.
        IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
          wkey = 'J'.
        ELSE.
          wkey = 'T'.
        ENDIF.
        CLEAR it_vbfa_1.
        READ TABLE it_vbfa_1
                   WITH KEY vbeln   = it_ser03-mblnr
                            vbtyp_v = wkey.
        IF sy-subrc EQ 0.
          IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
            wkey = 'M'.
          ELSE.
            wkey = 'O'.
          ENDIF.
          CLEAR it_vbfa_2.
          READ TABLE it_vbfa_2
                     WITH KEY vbelv   = it_vbfa_1-vbelv
                              vbtyp_n = wkey.
          IF sy-subrc EQ 0.
            CLEAR it_vbrk.
            READ TABLE it_vbrk
                       WITH KEY vbeln = it_vbfa_2-vbeln
                       BINARY SEARCH.
            it_out-vbeln = it_vbrk-vbeln.
            it_out-fkdat = it_vbrk-fkdat.
            it_out-fkart = it_vbrk-fkart.
            it_out-vkorg = it_vbrk-vkorg.
            it_out-vtweg = it_vbrk-vtweg.
            it_out-spart = it_vbrk-spart.
          ENDIF.
        ENDIF.
        READ TABLE it_objk
                   WITH KEY obknr = it_ser03-obknr
                   BINARY SEARCH.
        IF sy-subrc EQ 0.
          LOOP AT it_objk WHERE obknr = it_ser03-obknr.
            it_out-matnr = it_objk-matnr.
            READ TABLE it_alert
                       WITH KEY rsnno = it_objk-sernr
                       BINARY SEARCH.
            IF sy-subrc EQ 0.
              it_out-rsnno = it_alert-rsnno.
    ***kdamle-27102004-start
              it_out-status = it_alert-status.
    ***kdamle-27102004-end
              APPEND it_out.
              CLEAR: it_alert, it_objk.
            ELSE.
              APPEND it_out.
              CLEAR: it_objk.
            ENDIF.
          ENDLOOP.
        ELSE.
          APPEND it_out.
          CLEAR: it_objk, it_ser03,
                 it_out.
        ENDIF.
      ENDLOOP.
      REFRESH: it_ser03, it_objk, it_alert.
    ENDFORM.                    " POPULATE_OUTPUT_1
    *&      Form  POPULATE_OUTPUT_2
    FORM populate_output_2.
      SORT it_vbrp   BY vbeln.
      SORT it_vbfa_1 BY vbeln.
      SORT it_vbfa_2 BY vbelv.
      SORT it_ser03  BY mblnr.
      SORT it_objk   BY obknr.
      SORT it_alert  BY rsnno.
      LOOP AT it_vbrk.
        it_out-vbeln = it_vbrk-vbeln.
        it_out-fkdat = it_vbrk-fkdat.
        it_out-fkart = it_vbrk-fkart.
        it_out-vkorg = it_vbrk-vkorg.
        it_out-vtweg = it_vbrk-vtweg.
        it_out-spart = it_vbrk-spart.
        READ TABLE it_vbrp
                   WITH KEY vbeln = it_vbrk-vbeln.
    ***kdamle-19042005-start
       it_out-charg = it_vbrp-charg.
       it_out-matnr = it_vbrp-matnr.
    ***kdamle-19042005-end
        READ TABLE it_vbfa_1
                   WITH KEY vbeln = it_vbrk-vbeln
                   BINARY SEARCH.
        IF sy-subrc EQ 0.
          LOOP AT it_vbfa_1 WHERE vbeln = it_vbrk-vbeln.
            READ TABLE it_vbfa_2
                       WITH KEY vbelv = it_vbfa_1-vbelv
                       BINARY SEARCH.
            IF sy-subrc EQ 0.
              LOOP AT it_vbfa_2 WHERE vbelv = it_vbfa_1-vbelv.
                READ TABLE it_ser03
                           WITH KEY mblnr = it_vbfa_2-vbeln
                           BINARY SEARCH.
                IF sy-subrc EQ 0.
                  LOOP AT it_ser03 WHERE mblnr = it_vbfa_2-vbeln.
                    it_out-bwart     = it_ser03-bwart.
                    it_out-zeile     = it_ser03-zeile.
                    it_out-mblnr     = it_ser03-mblnr.
                    it_out-datum     = it_ser03-datum.
                    it_out-werk      = it_ser03-werk.
                    it_out-lagerort  = it_ser03-lagerort.
    ***kdamle-19042005-start
                    it_out-charg     = it_ser03-charge.
    ***kdamle-19042005-end
                    READ TABLE it_objk
                               WITH KEY obknr = it_ser03-obknr
                               BINARY SEARCH.
                    IF sy-subrc EQ 0.
                      LOOP AT it_objk WHERE obknr = it_ser03-obknr.
    ***kdamle-19042005-start
                        it_out-matnr = it_objk-matnr.
    ***kdamle-19042005-end
                        READ TABLE it_alert
                                   WITH KEY rsnno = it_objk-sernr
                                   BINARY SEARCH.
                        IF sy-subrc EQ 0.
                          it_out-rsnno = it_alert-rsnno.
                          APPEND it_out.
                          CLEAR: it_alert, it_objk.
                        ELSE.
                          APPEND it_out.
                          CLEAR: it_objk.
                        ENDIF.
                      ENDLOOP.
                    ELSE.
                      APPEND it_out.
                      CLEAR: it_objk, it_ser03, it_out.
                    ENDIF.
                  ENDLOOP.
                  CLEAR: it_ser03, it_objk, it_alert.
                ELSE.
                  APPEND it_out.
                ENDIF.
              ENDLOOP.
            ELSE.
              APPEND it_out.
            ENDIF.
          ENDLOOP.
        ELSE.
          APPEND it_out.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " POPULATE_OUTPUT_2
    *&      FORM  CREATE_F_CATALOG_0100
    FORM create_f_catalog_0100.
      REFRESH gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'RSNNO'.
      s_fieldcat-ref_tabname = 'ZPREALERT'.
      s_fieldcat-ref_fieldname = 'RSNNO'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'RSN No.'.
      s_fieldcat-outputlen = '20'.
      s_fieldcat-fix_column = 'X'.
      s_fieldcat-key = 'X'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'MATNR'.
      s_fieldcat-ref_tabname = 'OBJK'.
      s_fieldcat-ref_fieldname = 'MATNR'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Material'.
      s_fieldcat-outputlen = '20'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'CHARG'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'CHARG'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Batch'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'BWART'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'BWART'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Movement'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'MBLNR'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'MBLNR'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Mat Doc'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-emphasize = 'X'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'ZEILE'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'ZEILE'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Item'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'WERK'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'WERK'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Plant'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'LAGERORT'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'LAGERORT'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'SLoc'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'DATUM'.
      s_fieldcat-ref_tabname = 'SER03'.
      s_fieldcat-ref_fieldname = 'DATUM'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Doc Date'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'VBELN'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'VBELN'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Invoice'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'FKDAT'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'FKDAT'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Inv Date'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'FKART'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'FKART'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Inv Type'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'VKORG'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'VKORG'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'S.Org'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'VTWEG'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'VTWEG'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'D.Chnl'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
      s_fieldcat-fieldname = 'SPART'.
      s_fieldcat-ref_tabname = 'VBRK'.
      s_fieldcat-ref_fieldname = 'SPART'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'Div'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
    ***kdamle-27102004-start
      s_fieldcat-fieldname = 'STATUS'.
      s_fieldcat-ref_tabname = 'ZPREALERT'.
      s_fieldcat-ref_fieldname = 'STATUS'.
      s_fieldcat-ddictxt = 'L'.
      s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
                             'P Sts'.
      s_fieldcat-outputlen = '10'.
      s_fieldcat-tabname = 'IT_OUT'.
      APPEND s_fieldcat TO gt_fieldcat.
      CLEAR s_fieldcat.
    ***kdamle-27102004-end
    ENDFORM.
    *&      Form  SET_DEFAULTS_GRID
    FORM set_defaults_grid.
      alv_layout-colwidth_optimize = 'X'.
      alv_layout-zebra = 'X'.
    ENDFORM.                    " SET_DEFAULTS_GRID
    *&      Form  SELECT_VARIANT
    FORM select_variant.
      DATA: g_exit(1) TYPE c,
            g_save(1) TYPE c.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant = g_variant
                i_save     = 'A'
           IMPORTING
                es_variant = g_variant
           EXCEPTIONS
                not_found  = 2.
      IF sy-subrc EQ 0.
        s_var = g_variant-variant.
      ELSE.
        MESSAGE s000(yw) WITH 'No Variant Found'.
      ENDIF.
    ENDFORM.                    " SELECT_VARIANT
    *&      Form  DISP_TOP_OF_PAGE
    FORM disp_top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                it_list_commentary = gt_list_top_of_page.
    ENDFORM.                    " DISP_TOP_OF_PAGE
    *&      Form  FILL_ALV_EVENTS
    FORM fill_alv_events.
      DATA: ls_line TYPE slis_listheader.
      ls_alv_event-name = 'TOP_OF_PAGE'.
      ls_alv_event-form = 'DISP_TOP_OF_PAGE'.
      APPEND ls_alv_event TO i_alv_event.
      CLEAR: ls_alv_event,
             ls_line.
      ls_line-typ  = 'A'.
      ls_line-info = infotxt.
      APPEND ls_line TO gt_list_top_of_page.
    ENDFORM.                    " FILL_ALV_EVENTS
    *&      Form  GET_FILE
          text
    -->  p1        text
    <--  p2        text
    FORM get_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                program_name = 'ZDOC_SRLST'
                field_name   = p_fname
                mask         = '.'
           CHANGING
                file_name    = p_fname.
      IF sy-subrc <> 0.
        MESSAGE e000(yw) WITH 'Error Uploading File' p_fname.
      ENDIF.
    ENDFORM.                    " GET_FILE
    *&      Form  GET_LFILE
          text
    -->  p1        text
    <--  p2        text
    FORM get_lfile.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                program_name = 'ZDOC_SRLST'
                field_name   = p_fname1
                mask         = '.'
           CHANGING
                file_name    = p_fname1.
      IF sy-subrc <> 0.
        MESSAGE e000(yw) WITH 'Error Uploading File' p_fname1.
      ENDIF.
    ENDFORM.                    " GET_LFILE
    *&      Form  CREATE_LOCAL_FILE
          text
    -->  p1        text
    <--  p2        text
    FORM create_local_file.
      IF p_lfname IS INITIAL  OR p_fname1 IS INITIAL.
        MESSAGE i000(yw) WITH 'File Name on Server and Local File Name '
                              ' are mandatory.'.
        STOP.
      ENDIF.
      CONCATENATE app_path p_lfname INTO l_path.
      CONDENSE l_path NO-GAPS.
      OPEN DATASET l_path FOR INPUT IN TEXT MODE.
      IF sy-subrc NE 0.
        MESSAGE i000(yw) WITH 'File' p_lfname 'does not exist'.
        STOP.
      ENDIF.
      DO.
        CLEAR : iline.
        READ DATASET l_path INTO iline.
        IF sy-subrc = 0.
          APPEND iline.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
      CLOSE DATASET l_path.
      CALL FUNCTION 'WS_DOWNLOAD'
          EXPORTING
            BIN_FILESIZE            = ' '
            CODEPAGE                = ' '
              filename                =  p_fname1
               filetype                = 'DAT'
            ITEM                    = ' '
            MODE                    = ' '
            WK1_N_FORMAT            = ' '
            WK1_N_SIZE              = ' '
            WK1_T_FORMAT            = ' '
            WK1_T_SIZE              = ' '
            FILEMASK_MASK           = ' '
            FILEMASK_TEXT           = ' '
            FILETYPE_NO_CHANGE      = ' '
            FILEMASK_ALL            = ' '
            FILETYPE_NO_SHOW        = ' '
            SILENT                  = 'S'
            COL_SELECT              = ' '
            COL_SELECTMASK          = ' '
            NO_AUTH_CHECK           = ' '
       IMPORTING
            ACT_FILENAME            =
            ACT_FILETYPE            =
            FILESIZE                =
            CANCEL                  =
           TABLES
                data_tab                = iline
            FIELDNAMES              =
          EXCEPTIONS
               invalid_filesize        = 1
               invalid_table_width     = 2
               invalid_type            = 3
               no_batch                = 4
               unknown_error           = 5
               gui_refuse_filetransfer = 6
            CUSTOMER_ERROR          = 7
               OTHERS                  = 8
      IF sy-subrc EQ 0.
    ***kdamle-08122004-start
        CONCATENATE 'File ' p_fname1
                              ' Downloaded Successfully'
          INTO v_msgtxt SEPARATED BY space.
        MESSAGE s000(yw) WITH v_msgtxt+0(50)
                              v_msgtxt+50(50).
    ***kdamle-08122004-end
    Delete processed file from App Server.
        IF sy-subrc EQ 0.
          CONCATENATE 'rm' l_path
              INTO txt SEPARATED BY space.
          CALL 'SYSTEM' ID 'COMMAND' FIELD txt
                        ID 'TAB'     FIELD i_tty[].
        ENDIF.
      ENDIF.
    ENDFORM.                    " CREATE_LOCAL_FILE
    *&      Form  ONLINE_DOWNLOAD
          text
    -->  p1        text
    <--  p2        text
    FORM online_download.
      CALL FUNCTION 'WS_DOWNLOAD' "#nc
           EXPORTING
                filename = p_fname
                filetype = 'ASC'
           TABLES
                data_tab = it_formatted.
      IF sy-subrc EQ 0.
        MESSAGE s016(yw) WITH 'File '
                              p_fname
                              ' Downloaded Successfully'.
      ELSE.
        MESSAGE i000(yw) WITH 'Error Downloading File'
                              p_fname.
      ENDIF.
    ENDFORM.                    " ONLINE_DOWNLOAD
    *&      Form  DOWNLOAD_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM download_data.
    *TRANSFERRING THE DATA TO THE FILE ON THE APPLICATION SERVER
      CONCATENATE app_path p_fname INTO fnam SEPARATED BY space.
      CONDENSE fnam NO-GAPS.
      IF fnam IS INITIAL.
        MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
      ENDIF.
      OPEN DATASET fnam FOR OUTPUT IN TEXT MODE.
      IF sy-subrc = 0.
        LOOP AT it_formatted.
          TRANSFER it_formatted TO fnam.
        ENDLOOP.
        CLOSE DATASET fnam.
        IF sy-subrc = 0.
          MESSAGE s016(yw) WITH 'File '
                                fnam+0(50)
                                fnam+50(50)
                                ' Downloaded Successfully'.
        ELSE.
          MESSAGE i000(yw) WITH

    1)     AVOID SELECT *                                                          
    2)     USE WHERE WITH AS MANY EQ AND RESTRICT DATA RETRIEVAL             
    3)     AVOID SELECTS FROM THE SAME TABLE                                        
    4)     USE BINARY SEARCH WHEN READING FROM INTERNAL TABLES                      
    5)     CHECK IF INTERNAL TABLE IS SORTED BEFORE READING WITH BINARY SRCH       
    6)     FETCH REQUIRED FIELDS USING TRANSPORTING WHEN READING INTERNAL TABLES    
    7)     USE AS MANY PRIMARY AND SECONDARY INDEXES WHEN RETRIEVING DATA           
    8)     USE SELECT SINGLE INSTEAD OF UP TO 1 ROWS                                
    9)     USE BYPASSING BUFFER FOR ONE TIME USE TABLES                         
    10)     USE INSERT <DBTAB> FROM TABLE <ITAB1> INSTEAD OF INSERT INTO <DBTAB>     
    11)     USE WITH KEY WHEN READING FROM AN INTERNAL TAB                           
    12)     SPECIFY KEYS WHEN SORTING AN INTERNAL TABLE                             
    13)     HAVE TYPE DECLARATIONS FOR PARAMETERS PASSED IN SUBROUTINES            
    14)     HAVE TYPE DECLARATIONS FOR FIELD-SYMBOLS                          
    15)     USE WHILE ... ENDWHILE INSTEAD OF DO ... ENDDO                          
    16)     DO NOT USE CHECK CONSTRUCT WITHIN LOOP ... ENDLOOP.    
    17)     DO NOT USE CHECK CONSTRUCT WITHIN SELECT ... ENDSELECT   
    18)     USE CASE STATEMENT INSTEAD OF IF ... ELSEIF ... ENDIF                  
    19)     AVOID USING ORDER BY IN SELECT STATEMENTS. USE SORT BY INSTEAD           
    20)     REMOVE BREAK-POINT FROM THE CODE                                         
    21)     DO NOT USE AT EVENTS IN LOOP...ENDLOOP HAVING FROM OR TO OR WHERE CON  
    22)     DO NOT USE ON CHANGE OF EVENTS IN SELECT...ENDSELECT                     
    23)     DO NOT USE ON CHANGE OF EVENTS IN LOOP ... ENDLOOP                       
    24)     USE %_HINTS IN THE WHERE CLAUSE TO SPECIFY THE INDEX TO BE USED.         
    25)     AVOID USING NESTED SELECTS         
    26)     USE GET <DTABLE> FIELDS F1 F2 F3 ... INSTEAD OF ONLY GET <DTABLE>        
    27)     USE MODIFY <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
    28)     USE UPDATE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
    29)     USE INSERT <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
    30)     USE DELETE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP                 
    31)     AVOID SELECT FROM CLUSTER AND POOL TABLES

  • Table deletion in ABAP Query Report

    Hi ,
         Is it possible to delete a Table from a infoset after generating it ?? i.e
    i have used five vendor tables and generated a infoset. now i feel that i can get the expected report with 4 tables itself , so fi i wanna delete the 5th table what should i do ??
    I tired by just deleting the Link between the 5th table with the other tables and generate it again.. but it throws an error
    Thanks in advance !!

    Hi
    select lipsvbeln lipslfimg likp~wadat
            into corresponding fields of table ltab_orders
            from lips join likp on ( lipsvbeln = likpvbeln )
            join vbfa on ( lipsvbeln = vbfavbelv )       
            where lips~matnr = matnr
            and   lips~vbeln in vbeln
            and   likp~vbeln in vbeln         
            and   vbfa~vbelv in vbeln
            and   lips~werks in werks
            and   likp~wadat in datum
            and   vbfa~vbtyp_n = 'Q'            
            and   vbfa~vbtyp_v = 'J'. 
    Thanks,
    Neelima.

Maybe you are looking for

  • Credit Check againt letter of credit.

    hi, This is regarding credit check of sales order against FD. If the letter of credit belongs to company 001 and sales order contains any line items materials other than company 001. It gives an error EI574 "Financial Doc data check result not ok". I

  • My computer reboots when i connect iphone 4

    Any ideas... I plug it in, it finds new hardware...thinks its a camera...and reboots itself. Happens if I tunes is already going or not. Was fine for the first few days then I took photos yesterday morning, now it reboots computer, Not much use havin

  • .ttx file in UNIX/PLSQL

    Hi All, Is it possible to generate .ttx file through shellscript/plsql procedure? Please help me in this. Thanks, Bopty Edited by: Bopty on Aug 29, 2012 3:36 PM

  • LMS 4.1 - Job approval Disable error

    Hi all, I have created VRF from LMS 5.1. some days ago i created it sucessful but now it gives me job fail and reason is Job Approval Disable. Can anyone give hint what is the problem Please help. i have attached the images

  • Dynamic Footnotes

    I would be grateful if someone could confirm: 1) Is it possible to use dynamic footnotes in bi publisher? 2) Is there any documentation available on how to do this? Many thanks Sarah