Facing problem in Fetching Employee details

Hello All,
i need to write a abap coding to fetch the employee details from the corresponding table,i worte a code but its is not fetching the details of the employess in to the output,am sending my code along with this thread its great if any body help me out in ths regard,thanks in advance...
NAME        : Chandeep Singh
DESCRIPTION : TO GENERATE SIMPLE REPORT USING HR ABAP
               LOGICAl DATABASE- PNP .
REPORT zchandeep_hr_prog_1
LINE-SIZE 200 .
*Database Table
TABLES: pernr,           " Pernr structure for Logical database
pa0001,           " Actions
pa0002.           " Personnel Info
*Infotypes
INFOTYPES: 0001,         " Actions
           0002.         " personnel info
*Variable Declaration
DATA: form_nam LIKE p0001-ename,
      v_age(5) TYPE c,       "variable for calculating age in days
      v_ctr1 TYPE i VALUE 0, "counter
      v_ctr2 TYPE i VALUE 0, "counter
      var(5) TYPE c ,        " variable to store btrtl
      var1(5) TYPE c  .      " variable to store werks
*Internal Table Decalartion
DATA: BEGIN OF i_tab1 OCCURS 0,
       pernr LIKE pa0001-pernr,  "employee number
       ename LIKE pa0001-ename,  "employee name
       begda LIKE pa0002-begda,  "employee join date
       werks LIKE pa0001-werks,  "personnel area
       btrtl LIKE pa0001-btrtl,  "personnel sub area
       persg LIKE pa0001-persg,  "employee group
       persk LIKE pa0001-persk,  "employee sub-group
       plans LIKE pa0001-plans,  "position
       gbdat LIKE p0002-gbdat,   "date of birth
     END OF i_tab1.
*START-OF-SELECTION
START-OF-SELECTION .
GET pernr .
  rp-provide-from-last p0001 space pn-begda pn-endda .   " Macro for IFT-0001
  rp-provide-from-last p0002 space pn-begda pn-endda .   " Macro for IFT-0002
**--> Populate internal table
  MOVE p0001-pernr TO i_tab1-pernr .
  MOVE p0001-ename TO i_tab1-ename .
  MOVE p0002-begda TO i_tab1-begda .
  MOVE p0001-werks TO i_tab1-werks .
  MOVE p0001-btrtl TO i_tab1-btrtl .
  MOVE p0001-persg TO i_tab1-persg .
  MOVE p0001-persk TO i_tab1-persk .
  MOVE p0001-plans TO i_tab1-plans .
  MOVE p0002-gbdat TO i_tab1-gbdat .
**--> Append data to internal table
  APPEND i_tab1 .
  CLEAR i_tab1 .                                       " Clear header I_TAB1******************************
*END-OF-SELECTION
END-OF-SELECTION.
*****sorting the internal table on personnel area & personnel sub-area
  SORT i_tab1 BY werks btrtl.
*TOP_OF_PAGE
  PERFORM top_of_page.
*Output Display
LOOP AT I_TAB1.
*for calculating the age in days
  v_age = sy-datum - i_tab1-gbdat.
*control break on Personal Sub Area
  LOOP.
    AT NEW pnpbtrtl .
      IF sy-tabix NE 1.
        FORMAT COLOR COL_NORMAL ON.
        WRITE:/5 'Total Number of Employees for personnel Sub-Area:',
        var  , 'is ',
        v_ctr1.
        CLEAR v_ctr1.
        FORMAT COLOR OFF.
      ENDIF.
    ENDAT .
  ENDLOOP.
**Control Break on personnel Area
  LOOP.
    AT NEW pnpwerks.
      IF sy-tabix NE 1.
        FORMAT COLOR COL_TOTAL ON.
        WRITE:/5 'Total Number of Employees for Personal Area: ',
         var1 ,'is    ', v_ctr2. "color col_total.        CLEAR V_CTR2.
        SKIP 1.
        FORMAT COLOR OFF.
      ENDIF.
    ENDAT .
    WRITE:/5
    i_tab1-pernr,   "personnel number
  16 i_tab1-ename,   "emp name
  47 i_tab1-begda,   "join date
  60  v_age,         "age in days
  74  i_tab1-werks,  "P area
  84  i_tab1-btrtl,  "P sub Area
  94  i_tab1-persg,  "emp group
  104  i_tab1-persk, "emp sub group
  114  i_tab1-plans. "position
    v_ctr1 = v_ctr1 + 1.
    v_ctr2 = v_ctr2 + 1.
    var = i_tab1-btrtl .
    var1 = i_tab1-werks .
  ENDLOOP.
*&      Form  top_of_page
      Header Output
FORM top_of_page.
  FORMAT COLOR COL_HEADING ON.
  WRITE:/5 'Employee',
        16 'Employee',
        47 'Join Date',
        62 'Age',
        74 'Personal',
        84 'Personal',
        94 'Employee',
        104 'Employee',
        114 'Position ',
      /5 'Number',
      16 'Name',
      60 '(In Days)',
      74 'Area',
      84 'Sub-Area',
      94 'Group',
      104 'Sub-Group'.
  FORMAT COLOR OFF.
  SKIP 1.
ENDFORM.                    " top_of_page

After tables pernr.
write this code :
   GET PERNR.
and check the program
Regards,
Srinivas

Similar Messages

  • Can anyone pls. help me : facing problem while fetching the data from BAPI

    Hi all,
        we have installed xMII in a new server. In this new server I am trying to fetch data from a BAPI & write it into a file thru a transaction, but i cant see the data in the tracer, & neither is the file created. But with the same configuration & connection am able to get the data in the old server. Can anyone pls. tell me wat could be the problem?? or is there anything else that we might have forgotten while installing xMII in the new server.
    ur help would be greatly appreciated.
    Thanks,
    Sushma.

    Hi Ravi,
           no am not able to see the table structure also. This is what it is showing in the tracer :
       [INFO ]: Execution Started At: 17:24:17
    [DEBUG]: 00000.03100 Begin Transaction 'TMP99A51958-5BAE-CDE0-0DB5-A3A8C72BC297'
    [DEBUG]: 00000.03100 Begin Sequence Sequence : ()
    [DEBUG]: 00000.03100 Begin Action SAPJCOInterface_0 : (SAP JCO Interface)
    [DEBUG]: 00006.43700 Connection Took 6406 mS
    [DEBUG]: 00009.82800 Function Creation Took 3391 mS
    [DEBUG]: 00010.25000 Execution Took 422 mS
    [DEBUG]: 00010.25000 End Action SAPJCOInterface_0 : (SAP JCO Interface)
    [DEBUG]: 00010.25000 Begin Sequence Sequence_0 : ()
    [DEBUG]: 00010.25000 Begin Action Repeater_0 : (Repeater)
    [DEBUG]: 00010.26600 End Action Repeater_0 : (Repeater)
    [DEBUG]: 00010.26600 End Sequence Sequence_0 : ()
    [DEBUG]: 00010.26600 End Sequence Sequence : ()
    [DEBUG]: 00010.26600 End Transaction 'TMP99A51958-5BAE-CDE0-0DB5-A3A8C72BC297'
    [INFO ]: Execution Completed At: 17:24:28 Elapsed Time was 10235 mS
    I doubt the repeater is not working, becoz i checked the JCO connection & thats fine..
    Thanks,
    Sushma.

  • Facing  problem in fetching data

    hello everyone ,
    can anyone help me out  frm the problem , i need to fetch  data in alv  report (  likp-vbeln  ,lips-vgbel , likp-kunnr , vbpa-lifnr , vbrp-vgbel,vbuk-fkstk,vbrk-kunrg, vbrk-fkart and lfa1-name1 )  using  input parameter lips-vbeln or likp-vbeln .every time  i stuck in  select querries  for  fetching fieds  of   vbpa vbrk  vbrp vbuk and lfa1 .
    i am new to this forum excuse for  any mistake  regarding the rules and restriction .
    ranjan

    Moderator message - Welcome to SCN.
    Please read Please read "The Forum Rules of Engagement" before posting!  HOT NEWS!! and How to post code in SCN, and some things NOT to do... and [Asking Good Questions in the Forums to get Good Answers|/people/rob.burbank/blog/2010/05/12/asking-good-questions-in-the-forums-to-get-good-answers] before posting again.
    Thread locked.
    Rob

  • I have Problem in fetching data from CONTROL BLOCK

    Sir,
    I am facing problem in fetching data from control block.
    Asif.

    is your control-block a filter-block for the detail-block?
    Do you want to see only the detail-data of the user-id you have displayed in the master?

  • Problem in entering passport details in 0185 IT for korea employees.

    Hi Experts,,
    I am facing the problem  whilw updating passport details in 0185 IT.
    Main problem is the subtype ....Passport  01 is  not showing up.
    In PA30 ,when we want to maintain personal ids...the passport subtype is not showing up.
    In Dev ..everything is fine.We can update the data in DEV.Later we moved to qualiity..everthying is moved.But when we want to updfate the passport details..the subtype is not showingup at all.Did we miss anything in configs.
    We did configs in tables  V_T582l and V_T591a.
    Please advice to showup the the subtype of personal ids pertaining to korea.
    Regards,
    Sairam

    Solved the issue by maintainting korea//Passport  in  V_T5R05 table
    Sairam.

  • Facing Problem in Config Archieve through SSH for ASA

    HI ,
    I am facing problem in Ciscoworks in Fetching config Archieve from Cisco ASA-5510 Adaptive Security Appliance . I am using LMS 3.2 and RME 4.3.1
    SSH is enable in the device, and from LMS server I am able to connect through Putty. Also from Management station to Device it showing SSH is up for both version. But from RME its failing Its giving below mentioned error
      Device: COGINHYDGCBDFHRTF1       Status:   Failed
    *** Device Details for COGINHYDGCBDFHRTF1 ***
    Protocol ==> Unknown / Not Applicable
    Selected Protocols with order ==> SSH,Telnet,TFTP,RCP,SCP,HTTPS
    Execution Result:
    RUNNING
    CM0151 PRIMARY RUNNING Config fetch failed for COGINHYDGCBDFHRTF1 Cause: Couldnot enter ENABLE Mode from USER Mode on 10.241.44.220.TELNET: Failed to establish TELNET connection to 10.241.44.220 - Cause: Connection refused.
    Action: Check if protocol is supported by device and required device package is installed. Check device credentials. Increase timeout value, if required.
    I have tried from LMS server by telneting to port 22, its giving below output------SSH-1.99-Cisco-1.25
    When I have tried to test device credentials for SSH and SSH Enable mode, then below output I am getting. SSH remains blank status.
    Device Name
    SSH
    Enable
    by SSH
    1.
    COGINHYDGCBDFHRTF1
    Did Not Try
    Pls help to resolve this.

    Hi,
    Take a look at the code you are running on the ASA and see if this bug fits. http://tools.cisco.com/Support/BugToolKit/search/getBugDetails.do?method=fetchBugDetails&bugId=CSCtd67173
    Thanks.

  • Facing problem in migration of StoO_error,StoO_sqlstatus,StoO_fetchstatus

    Hi,
    Migration Workbench convert the sqlserver code but i am facing problems with StoO_error,StoO_sqlstatus,StoO_fetchstatus.
    Please clarify me how to handle this in ORACLE
    I need to know the equivalent Oracle code for the Sql Server code.
    DELETE FROM User_Rights_Access
              WHERE User_ID = p_User_Id;
         IF LEN(p_SelectedRights) > 0 THEN
         BEGIN
              NULL;/*DECLARE CURSOR userselectedrights_cursor */
                   OPEN userselectedrights_cursor;
                   FETCH userselectedrights_cursor INTO
              t_SelectedRightsID;
              IF userselectedrights_cursor%NOTFOUND THEN
                   StoO_sqlstatus := 2;
                   StoO_fetchstatus := -1;
              ELSE
                   StoO_sqlstatus := 0;
                   StoO_fetchstatus := 0;
              END IF;
              <<i_loop1>>
              WHILE StoO_fetchstatus = 0 LOOP
              BEGIN
                   INSERT INTO sa.User_Rights_Access (User_ID, Rights_Id, del_flag)
                        VALUES (p_User_Id,                     t_SelectedRightsID,                                         0);
                        FETCH userselectedrights_cursor INTO
                   t_SelectedRightsID;
                   IF userselectedrights_cursor%NOTFOUND THEN
                        StoO_sqlstatus := 2;
                        StoO_fetchstatus := -1;
                   ELSE
                        StoO_sqlstatus := 0;
                        StoO_fetchstatus := 0;
                   END IF;
              END;
              END LOOP;
                   CLOSE userselectedrights_cursor;
              NULL;
         END;

    Anu,
    I think the declaration of these variable is left out by default as most short procedures do not need them.
    Check out the 'Generate Maximal PL/SQL' stored procedure option, which is detailed in the stored procedure option help page. This option can be applied per procedure.
    Thank you for your time,
    Turloch
    Oracle Migration Workbench Team

  • How to read IM_ATTABS_TAB  structure to get Employee details..

    Hello friends,
      i am facing difficulty reading IM_ATTABS_TAB for getting employee details..
    i need this to code in a BADI for validating Leave request..
    i have to extract employee(who after logging in in ESS ,applies for leaves) information such as PERNR leave balance quotas,etc before i can display the suitable message...
    Now the structure IM_ATTABS_TAB has PTARQ_ATTABSDATA_TAB as associated type...which has line type as PTARQ_ATTABSDATA_STRUC..
    so now,what select statement or query gives me the desired information..
    whioch is PERNR,and other leave quotas...

    Hi bala,
    Please tell me ur problem got resolved or not.
    As i am also facing the same and it is exactly the same.
    Please help me if you are done with the same!!!
    Regards,
    Sujit

  • Facing problem with logo in the PDF attachment when sending mail...

    hi friends,
    i'm facing problem with logo in the PDF attachment to the mail.
    my requirement:
    1. enter spool number and mail id in the selection screen.
    process:
    1. now the program will fetch the spool data and converts it to PDF.
    2. but when i'm trying to send mail with this PDF as attachment.
    when i open the PDF file from the mail, logo is not coming properly (looks disturbed).
    can anyone help me how to resolve this issue...
    thanks in advance, murashali.

    hi dinakar, thanks for your mail...
    logo looks good in spool/script/smartform.
    even it look good when i download this spool to pdf and to the presentation server as pdf file.
    i'm using CONVERT_OTFSPOOLJOB_2_PDF.
    when i used CONVERT_ABAPSPOOLJOB_2_PDF, is gives a msg - 'spool number not found'.
    here i'm using folloing code to pass pdf to the function module: SO_NEW_DOCUMENT_ATT_SEND_API1.
    code:
    Transfer the 132-long strings to 255-long strings
      lt_mtab_pdf[] = pdf[].
      LOOP AT lt_mtab_pdf INTO lwa_mtab_pdf.
        TRANSLATE lwa_mtab_pdf USING ' ~'.
        CONCATENATE lv_gd_buffer lwa_mtab_pdf INTO lv_gd_buffer.
        CLEAR lwa_mtab_pdf.
      ENDLOOP.
      TRANSLATE lv_gd_buffer USING '~ '.
      DO.
        lwa_mess_att = lv_gd_buffer.
        APPEND lwa_mess_att TO lt_mess_att.
        CLEAR lwa_mess_att.
        SHIFT lv_gd_buffer LEFT BY 255 PLACES.
        IF lv_gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    NOTE: problem i believe is with ''.  i'm getting this tilt symbol () in my pdf internal table.  here in the above code the line   TRANSLATE lv_gd_buffer USING '~ ' is changing the existing tilt to space.  so my logo is getting disturbed.
    even i tried with REPLACE this tilt with other char, but it doent work.
    can you give any idea...

  • HT2292 hello i'm facing  problem  i downloaded iTunes version 11 32bit  and after i installing the set up when i opened the iTunes a massages  occur saying i tunes could not connect to iTunes store an unknown error occurred (-3212) even  though my interne

    Hello i'm facing  problem  i downloaded itunes version 11 32bit for windows 7 and after i installing the set up when i opened the iTunes a massages  occur saying i tunes could not connect to iTunes store an unknown error occurred (-3212) even  though my internet is on

    Try this...
    Triple click anywhere in the line below to select it and press Ctrl+C to copy it.
    cmd /k netsh winsock reset
    Press the WinLogoKey+R to open the run dialog, then Ctrl+V to paste, then press enter/return.
    You should get something similar to this:
    Reboot the computer and the problem should be resolved.
    If it doesn't work then perhaps a full tear down and rebuild of iTunes will fix things. See Troubleshooting issues with iTunes for Windows updates for details.
    tt2

  • Facing problem in copy of standard SAP  program

    hi,,,,,,,,,,,,
           when i execute this program in production server it displays an error ....i  m    trying to find out this error but this type(error) i cudnt find plz help me .....
           i m sending the documents which i rcvd from the system after the  execution of this program.
    this program executes perfctlly in developmnt server but it creates problem in production server,,,i searched out the type kkblo_t_sortinfo in the whole program but i cud nt find it ,,,,,,,,,
    documents.....
    Runtime Errors SYNTAX_ERROR
    Date and Time 18.11.2006 12:01:19
    ShrtText
    Syntax error in program "ZVISA_RM07MLBD ".
    What happened?
    Error in ABAP application program.
    The current ABAP program "????????????????????????????????????????" had to be
    terminated because one of the
    statements could not be executed.
    This is probably due to an error in the ABAP program.
    In program "ZVISA_RM07MLBD ", the following syntax error occurred
    in the Include "RM07MLBD_FORM_01 " in line 1805:
    The type KKBLO_T_SORTINFO" is unknown."
    also i m sending the include program ver i m facing problem...*&----
    *&  Include           RM07MLBD_FORM_01                                 *
    correction Aug. 2005 MM                                   "n856424
    - the fields "entry time", "entry date", and "User" are   "n856424
      are not filled filled for price change documents        "n856424
    MB5B improved regarding accessibilty                      "n773673
    Improvements :                       March 2003 MM        "n599218
    - print the page numbers                                  "n599218
    - send warning M7 393 when user deletes the initial       "n599218
      display variant                                         "n599218
    - show the current activity and the progress              "n599218
    contains FORM routines without preprocessor commands and  "n547170
    no text elements                                          "n547170
    *&      Form  INITIALISIERUNG
          Vorbelegung der Anzeigevariante                                *
    form initialisierung.
      repid = sy-repid.
      variant_save = 'A'.
      clear variante.
      variante-report = repid.
    Default-Variante holen:
      def_variante = variante.
      call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
           exporting
                i_save     = variant_save
           changing
                cs_variant = def_variante
           exceptions
                not_found  = 2.
      if sy-subrc = 0.
      save the initial, e.g. default variant                  "n599218
        move  def_variante-variant  to  alv_default_variant.    "n599218
        p_vari = def_variante-variant.
      endif.
    print-no_print_listinfos = 'X'.
    endform.                               " INITIALISIERUNG
    *&      Form  AKTUELLE_BESTAENDE
         Ermittlung der aktuellen eigenen Bestände,
         d.h. der bewerteten Bestände und des Retourensperrbestandes,
         auf Lagerortebene und auf Material- bzw. Chargenebene;
         folgende Sonderbestände können gesondert ausgewiesen werden:
          Lohnbearbeitung         ( Sonderbestandskennzeichen  O )
          Kundenkonsignation      (             "              V, W, M )
          Lieferantenkonsignation (             "              K )
          Projektbestand          (             "              Q )
          Kundenauftragsbestand   (             "              E )
    form aktuelle_bestaende.
    delete the range tables for the creation of table g_t_organ
      if  g_t_organ[] is initial.                               "n433765
        refresh : g_0000_ra_werks, g_0000_ra_bwkey, g_0000_ra_bukrs.
        clear   : g_0000_ra_werks, g_0000_ra_bwkey, g_0000_ra_bukrs.
      endif.
      if      bwbst = 'X'.
      select the valuated stocks
        perform                  aktuelle_bst_bwbst.
      elseif lgbst = 'X'.
      all own stock from storage locations or batches
        if xchar = ' '.
          perform                aktuelle_bst_lgbst_mard.
        elseif  xchar = 'X'.
          perform                aktuelle_bst_lgbst_xchar.
        endif.
      elseif   sbbst = 'X'.
       special stocks
        case    sobkz.
          when  'O'.
            perform              aktuelle_bst_sbbst_o.
          when  'V' or  'W'.
            perform              aktuelle_bst_sbbst_v_w.
          when  'K' or  'M'.
            perform              aktuelle_bst_sbbst_k_m.
          when  'Q'.
            perform              aktuelle_bst_sbbst_q.
          when  'E'.
            perform              aktuelle_bst_sbbst_e.
          when  others.
          Angegebener Sonderbestand nicht vorhanden.
            message s290.
            perform              anforderungsbild.
        endcase.
      endif.
    create table g_t_organ with the plants and valuation areas from
    the database selection if table g_t_organ is empty
      perform  f0000_create_table_g_t_organ
                                 using  c_no_error.
    endform.                     "aktuelle_bestaende.
    *&   AKTUELLE_BST_LGBST_MARD
    form aktuelle_bst_lgbst_mard.
    eigener Bestand auf Lagerortebene -
    ... auf Materialebene -
      select * from mard into corresponding fields of table imard
                                             where werks in g_ra_werks
                                             and   lgort in g_ra_lgort
                                             and   matnr in matnr.
      if sy-subrc ne 0.          "no records found ?
        message s289.
      Kein Material in Selektion vorhanden.
        perform                  anforderungsbild.
      endif.
    does the user has the the authority for the found entries ?
      loop at imard.
        perform    f9000_auth_plant_check
                                 using  imard-werks.
        if  g_flag_authority is initial.
          delete             imard.
        else.
          perform  f9200_collect_plant     using  imard-werks.
          perform  f9400_material_key      using  imard-matnr.
        endif.
      endloop.
      describe table imard       lines g_f_cnt_lines.
      if  g_f_cnt_lines is initial.       "no records left  ?
        message s289.
      Kein Material in Selektion vorhanden.
        perform                  anforderungsbild.
      endif.
      if not charg-low is initial or not charg-high is initial.
        clear charg.
        message w285.
      Charge wird zurückgesetzt.
      endif.
    endform.                     "aktuelle_bst_lgbst_mard
       AKTUELLE_BST_LGBST_XCHAR
    form aktuelle_bst_lgbst_xchar.
    read the stock table mchb for batches
      select * from mchb into corresponding fields of table imchb
                                 where   werks  in  g_ra_werks
                                   and   lgort  in  g_ra_lgort
                                   and   matnr  in  matnr
                                   and   charg  in  charg.
      describe table imchb       lines  g_f_cnt_lines.
      if g_f_cnt_lines is initial.         "no records found ?
        message s821 with matnr werks lgort.
      Keine Chargen zu Material & in Werk & Lagerort & vorhanden.
        perform anforderungsbild.
      endif.
    process working table with the batches
      loop at imchb.
      does the user has the the authority for the found entries ?
        perform    f9000_auth_plant_check
                                 using  imchb-werks.
        if  g_flag_authority is initial.
          delete             imchb.
        else.
          perform  f9200_collect_plant     using  imchb-werks.
          perform  f9400_material_key      using  imchb-matnr.
        endif.
      endloop.
    endform.                     "aktuelle_bst_lgbst_xchar
       AKTUELLE_BST_SBBST_O
    form aktuelle_bst_sbbst_o.
    process Special Stocks with Vendor
    Bemerkung: Im Gegensatz zu den anderen Sonderbeständen existieren
               der Lohnbearbeitungs- und Kundenkonsignationsbestand
               nur auf Werksebene.
      select * from mslb into corresponding fields of table xmslb
                                 where  werks  in  g_ra_werks
                                   and  matnr  in  matnr
                                   and  charg  in  charg
                                   and  sobkz  =   'O'.
      if sy-subrc <> 0.                     "no records found ?
         message s289.
       Kein Material in Selektion vorhanden.
         perform anforderungsbild.
      endif.
    process the found records special stock vendor
      loop at xmslb.
      check the authority
        perform  f9000_auth_plant_check
                                 using      xmslb-werks.
        if  g_flag_authority is initial.
          delete                 xmslb.
        else.
        fill range table g_0000_ra_werks if it is still empty
          perform  f9200_collect_plant     using  xmslb-werks.
          perform  f9400_material_key      using  xmslb-matnr.
        endif.
      endloop.
    error, if no records are left
      describe table xmslb       lines g_f_cnt_lines.
      if  g_f_cnt_lines is initial.
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
          sort xmslb.
          loop at xmslb.
            move-corresponding xmslb to imslb.
            collect imslb.
          endloop.
          free xmslb. refresh xmslb.
          if xchar = ' '.
            loop at imslb.
              move-corresponding imslb to imslbx.
              collect imslbx.
            endloop.
            sort imslbx.
          elseif xchar = 'X'.
            loop at imslb.
              check imslb-charg is initial.
              delete imslb.
            endloop.
          endif.
    endform.                     "aktuelle_bst_sbbst_o.
       AKTUELLE_BST_SBBST_V_W
    form aktuelle_bst_sbbst_v_w.
    Sonderbestand Kundenkonsignation -
      elseif sobkz = 'V' or sobkz = 'W'.
          select * from msku into corresponding fields of table xmsku
                                             where werks in g_ra_werks
                                             and   matnr in matnr
                                             and   charg in charg
                                             and   sobkz eq sobkz.
      if sy-subrc <> 0.          "no records found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
    process Special Stocks with Customer
      loop at xmsku.
        perform  f9000_auth_plant_check    using     xmsku-werks.
        if  g_flag_authority is initial.
          delete                 xmsku.
        else.
          perform  f9200_collect_plant     using  xmsku-werks.
          perform  f9400_material_key      using  xmsku-matnr.
        endif.
      endloop.
      describe table xmsku       lines  g_f_cnt_lines.
      if g_f_cnt_lines is initial.         "no records found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
          sort xmsku.
          loop at xmsku.
            move-corresponding xmsku to imsku.
            collect imsku.
          endloop.
          free xmsku. refresh xmsku.
          if xchar = ' '.
            loop at imsku.
              move-corresponding imsku to imskux.
              collect imskux.
            endloop.
            sort imskux.
          elseif xchar = 'X'.
            loop at imsku.
              check imsku-charg is initial.
              delete imsku.
            endloop.
          endif.
          if sy-subrc ne 0.
            message s042.                             "#EC *    "n443935
          Charge ist nicht vorhanden.
            perform anforderungsbild.
          endif.
    endform.                     "aktuelle_bst_sbbst_v_w
       AKTUELLE_BST_SBBST_K_M
    form aktuelle_bst_sbbst_k_m.
    Sonderbestand Lieferantenkonsignation -
      elseif sobkz = 'K' or sobkz = 'M'.
          select * from mkol into corresponding fields of table xmkol
                                            where werks in g_ra_werks
                                            and   lgort in g_ra_lgort
                                            and   matnr in matnr
                                            and   charg in charg
                                            and   sobkz eq sobkz.
      if sy-subrc <> 0.          "no records found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
    process Special Stocks from Vendor
      loop at xmkol.
        perform  f9000_auth_plant_check    using  xmkol-werks.
        if  g_flag_authority is initial.
          delete             xmkol.
        else.
          perform  f9200_collect_plant     using  xmkol-werks.
          perform  f9400_material_key      using  xmkol-matnr.
        endif.
      endloop.
      describe table xmkol       lines  g_f_cnt_lines.
      if g_f_cnt_lines is initial.         "no records found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
          sort xmkol.
          loop at xmkol.
            move-corresponding xmkol to imkol.
            collect imkol.
          endloop.
          free xmkol. refresh xmkol.
          if xchar = ' '.
            loop at imkol.
              move-corresponding imkol to imkolx.
              collect imkolx.
            endloop.
            sort imkolx.
          elseif xchar = 'X'.
            loop at imkol.
              check imkol-charg is initial.
              delete imkol.
            endloop.
          endif.
          if sy-subrc ne 0.
            message s042.                             "#EC *    "n443935
          Charge ist nicht vorhanden.
            perform anforderungsbild.
          endif.
    endform.                     "aktuelle_bst_sbbst_k_m.
       AKTUELLE_BST_SBBST_Q
    form aktuelle_bst_sbbst_q.
    Projektbestand -
      elseif sobkz = 'Q'.
          select * from mspr into corresponding fields of table xmspr
                                             where werks in g_ra_werks
                                             and   lgort in g_ra_lgort
                                             and   matnr in matnr
                                             and   charg in charg
                                             and   sobkz eq sobkz.
      if sy-subrc <> 0.          "no record found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
    process project stock
      loop at xmspr.
        perform  f9000_auth_plant_check    using  xmspr-werks.
        if  g_flag_authority is initial.
          delete                 xmspr.
        else.
          perform  f9200_collect_plant     using  xmspr-werks.
          perform  f9400_material_key      using  xmspr-matnr.
        endif.
      endloop.
      describe table xmspr       lines  g_f_cnt_lines.
      if  g_f_cnt_lines is initial.        "no record left
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
          sort xmspr.
          loop at xmspr.
            move-corresponding xmspr to imspr.
            collect imspr.
          endloop.
          free xmspr. refresh xmspr.
          if xchar = ' '.
            loop at imspr.
              move-corresponding imspr to imsprx.
              collect imsprx.
            endloop.
            sort imsprx.
          elseif xchar = 'X'.
            loop at imspr.
              check imspr-charg is initial.
              delete imspr.
            endloop.
          endif.
    endform.:                     "aktuelle_bst_sbbst_q
       AKTUELLE_BST_SBBST_E
    form aktuelle_bst_sbbst_e.
    Kundenauftragsbestand -
          select * from mska into corresponding fields of table xmska
                                             where werks in g_ra_werks
                                             and   lgort in g_ra_lgort
                                             and   matnr in matnr
                                             and   charg in charg
                                             and   sobkz eq sobkz.
      if sy-subrc <> 0.            "no records found
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
    process Sales Order Stock
      loop at xmska.
        perform  f9000_auth_plant_check    using  xmska-werks.
        if  g_flag_authority is initial.
          delete                   xmska.
        else.
          perform  f9200_collect_plant     using  xmska-werks.
          perform  f9400_material_key      using  xmska-matnr.
        endif.
      endloop.
      describe table xmska       lines  g_f_cnt_lines.
      if  g_f_cnt_lines is initial.        "no records left ?
        message s289.
      Kein Material in Selektion vorhanden.
        perform anforderungsbild.
      endif.
          sort xmska.
          loop at xmska.
            move-corresponding xmska to imska.
            collect imska.
          endloop.
          free xmska. refresh xmska.
          if xchar = ' '.
            loop at imska.
              move-corresponding imska to imskax.
              collect imskax.
            endloop.
            sort imskax.
          elseif xchar = 'X'.
            loop at imska.
              check imska-charg is initial.
              delete imska.
            endloop.
          endif.
    endform.                     "aktuelle_bst_sbbst_e
    *&      Form  TABELLEN_LESEN
          Lesen der Materialkurztexte (Tabelle MAKT),                    *
          der Mengeneinheiten (Tabelle MARA) und                         *
          Mengen- und Wertfortschreibung zum Material (Tabelle T134M)    *
          (Letzteres ist zum Aussortieren der unbewerteten bzw.          *
          kontierten Warenbewegungen notwendig)                          *
    form tabellen_lesen.
      if  not g_t_mat_key[] is initial.                         "n451923
      select the material masters
        select matnr meins mtart from mara
                       into corresponding fields of table imara
                       for all entries in g_t_mat_key
                                 where  matnr  =  g_t_mat_key-matnr.
      select the short text for all materials
      take only the necessary fields                          "n451923
        select matnr maktx       from makt                      "n451923
             into corresponding fields of table g_t_makt        "n451923
                       for all entries in g_t_mat_key
                       where  matnr = g_t_mat_key-matnr
                         and  spras = sy-langu.
        sort  imara              by  matnr.                     "n451923
        sort  g_t_makt           by  matnr.                     "n451923
        free                     g_t_mat_key.
      endif.
      data: begin of k1 occurs 0,
        mtart like t134m-mtart,
      end of k1.
      refresh k1.
      loop at imara.
        k1-mtart = imara-mtart.
        collect k1.
      endloop.
      if  not k1[] is initial.                                  "n451923
        select * from t134m
               into corresponding fields of table it134m
               for all entries in k1         where mtart = k1-mtart
                                             and   bwkey in g_ra_bwkey.
      endif.                                                    "n451923
      loop at it134m.
      read table organ with key bwkey = it134m-bwkey.
        perform  f9300_read_organ
                       using     c_bwkey     it134m-bwkey.
        if sy-subrc ne 0.
          delete it134m.
        endif.
      endloop.
    To find postings with valuation string, but without relevance for
    the valuated stock, Big-G recommended this logic:
    Take lines from MSEG where for the combination BUSTW/XAUTO=XBGBB
    there is an entry in T156W with key BSX.
      select bustw xbgbb from t156w
                         into corresponding fields of table it156w
                         where vorsl = 'BSX'.
      sort it156w by bustw xbgbb.
      delete adjacent duplicates from it156w.
      delete it156w where bustw = space.
    endform.                               " TABELLEN_LESEN
    *&      Form  UNBEWERTET_WEG
          Löschen der unbewerteten Materialien aus der internen          *
          Tabelle IMBEW
    form unbewertet_weg.
      sort  it134m               by bwkey mtart.                "n451923
                                                                "n450764
    delete the materials in plants without valuation          "n450764
      loop at g_t_mbew           into  g_s_mbew.                "n450764
        read table imara                                        "n450764
                       with key matnr = g_s_mbew-matnr          "n450764
                       binary search.                           "n450764
                                                                "n450764
        read table it134m with key bwkey = g_s_mbew-bwkey       "n450764
                                   mtart = imara-mtart binary search.
        if sy-subrc ne 0.
        message ...
          delete                 g_t_mbew.                      "n450764
        else.
          if it134m-wertu = ' '.
            delete               g_t_mbew.                      "n450764
          else.                                                 "n450764
          enrich the entries with the quantity unit           "n450764
            move    imara-meins  to    g_s_mbew-meins.          "n450764
            modify  g_t_mbew     from  g_s_mbew                 "n450764
                                 transporting  meins.           "n450764
          endif.
        endif.
      endloop.
    endform.                               " UNBEWERTET_WEG
    *&      Form  FI_BELEGE_LESEN                                          *
          Lesen der Buchhaltungsbelege                                   *
    Beim Erfassen der Werte ist es notwendig, die Buchhaltungsbelege    *
    zum Material zu lesen, um abweichende Werte zwischen Wareneingang   *
    und Rechnungseingang sowie Nachbelastungen zu berücksichtigen.      *
    form fi_belege_lesen.
    Not related to note 184465, but a significant performance issue
    if ORGAN is large due to many plants/storage locations.
      data: begin of t_bwkey occurs 0,                               "184465
              bwkey like bsim-bwkey,                                 "184465
            end of t_bwkey.                                          "184465
      loop at g_t_organ          where  keytype  =  c_bwkey.
        move g_t_organ-bwkey     to  t_bwkey-bwkey.
        collect t_bwkey.                                             "184465
      endloop.                                                       "184465
      read table t_bwkey index 1.                                    "184465
      check sy-subrc = 0.                                            "184465
      select * from bsim                                        "n443935
             into corresponding fields of table g_t_bsim_lean   "n443935
               for all entries in t_bwkey   where  bwkey = t_bwkey-bwkey
                                            and    matnr in matnr
                                            and    bwtar in bwtar
                                            and    budat >= datum-low.
      loop at g_t_bsim_lean      into  g_s_bsim_lean.           "n443935
        perform  f9300_read_organ
                       using     c_bwkey  g_s_bsim_lean-bwkey.  "n443935
        if  sy-subrc is initial.
        record found : the user has the authority, go on
          move  g_s_organ-bukrs  to  g_s_bsim_lean-bukrs.       "n443935
          modify  g_t_bsim_lean  from  g_s_bsim_lean            "n443935
                                 transporting  bukrs.           "n451923
        create working table with the keys for the FI documents
          move-corresponding  g_s_bsim_lean                     "n443935
                                 to  g_t_bkpf_key.              "n443935
          append                 g_t_bkpf_key.
        else.
          delete                 g_t_bsim_lean.                 "n443935
        endif.
      endloop.
    endform.                               " FI_BELEGE_LESEN
    *&      Form  BELEGE_SORTIEREN
       Die Materialbelege werden anhand des Buchungsdatums sortiert.
       Die Materialbelege mit Buchungsdatum zwischen 'datum-high'
       und dem aktuellen Datum werden in der internen Tabelle IMSWEG
       gesammelt, während die Materialbelege mit Buchungsdatum
       zwischen 'datum-low' und 'datum-high' in der internen Tabelle
       IMSEG verbleiben.
    form belege_sortieren.
      aktdat = sy-datlo + 30.
      if not ( datum-high is initial or datum-high > aktdat ).
        loop at g_t_mseg_lean    into  g_s_mseg_lean
                                 where budat > datum-high.
          move-corresponding g_s_mseg_lean to imsweg.
          append imsweg.
          delete                 g_t_mseg_lean.
        endloop.
      endif.
      describe table imsweg lines index_2.
    endform.                               " BELEGE_SORTIEREN
    *&      Form  KONTIERT_AUSSORTIEREN
          Aussortierung der kontierten Belegpositionen,                  *
          da diese Mengen nicht bestandsrelevant sind                    *
    form kontiert_aussortieren.
    process table g_t_mseg_lean
    loop at imseg where kzvbr <> space and                         "144845
        ( kzbew = 'B' or kzbew = 'F' ).                            "144845
        read table imara with key matnr = imseg-matnr.
        read table it134m with key mtart = imara-mtart.
        if not it134m-mengu is initial and not it134m-wertu is initial.
    Die Felder 'mengu' und 'wertu' (Mengen- bzw. Wertfortschreibung)
    sind ab Release 3.0 D auch in die Tabelle MSEG aufgenommen.
    Die Einträge in der Tabelle T134M stellen nach wie vor die generelle
    Einstellung dar; auf Positionsebene sind jedoch Abänderungen möglich,
    die anhand der Einträge in der Tabelle MSEG nachverfolgt werden
    können.
          delete imseg.
        endif.
    endloop.
      data : l_f_bwkey           like  t001k-bwkey.             "n497992
      sort  it134m               by  bwkey  mtart.              "n497992
      loop at g_t_mseg_lean      into  g_s_mseg_lean
                                 where  kzvbr <> space
                                   and ( kzbew = 'B' or kzbew = 'F' ).
      get the valuation area                                  "n497992
        if  curm = '3'.                                         "n497992
        valuation level is company code                       "n497992
          if  g_s_mseg_lean-bukrs is initial.                   "n497992
          get the valuation area for this plant               "n497992
            perform  f9300_read_organ                           "n497992
                       using     c_werks   g_s_mseg_lean-werks. "n497992
                                                                "n497992
            move  g_s_organ-bwkey     to  l_f_bwkey.            "n497992
          else.                                                 "n497992
            move  g_s_mseg_lean-bukrs to  l_f_bwkey.            "n497992
          endif.                                                "n497992
        else.                                                   "n497992
        valuation level is plant                              "n497992
          move  g_s_mseg_lean-werks   to  l_f_bwkey.            "n497992
        endif.                                                  "n497992
        read table imara with key matnr = g_s_mseg_lean-matnr
                                 binary search.
        if  sy-subrc is initial.
          read table it134m      with key  bwkey = l_f_bwkey    "n497992
                                           mtart = imara-mtart  "n497992
                                 binary search.
          if  sy-subrc is initial.
            if not it134m-mengu is initial and
               not it134m-wertu is initial.
              delete              g_t_mseg_lean.
            endif.
          endif.
        else.
          delete                  g_t_mseg_lean.
        endif.
      endloop.
    endform.                               " KONTIERT_AUSSORTIEREN
    *&      Form  BELEGE_ERGAENZEN (engl. enrich documents)
    Material documents and FI documents from BSIM are merged together.
    Complications:
    - A material document can have more than one FI document.
    - There are FI documents without material documnts
    - There are material documents without FI documents
    - The document type is customizeable
    - There is no link from the materia document position to
      the FI document entry in BSIM (except URZEILE, but this
      can be filled incorrectly)
    form belege_ergaenzen.                         "Version from note 204872
    - show the current activity and the progress              "n599218
      call function 'SAPGUI_PROGRESS_INDICATOR'                 "n599218
        exporting                                               "n599218
          text = text-061.       "Reading FI documents          "n599218
    Eliminate material documents with valuation string, but without
    relevance to the valuated stock. IT156W contains all valuation
    strings with posting key BSX. XBGBB says: "I am an accrural posting".
    For more details please ask Big-G.
      loop at g_t_mseg_lean      into  g_s_mseg_lean.
      special processing for tied empties active ?            "n497992
        if  not g_cust_tied_empties is initial.                 "n497992
        look for MM documents with xauto = L and change       "n497992
        indicators                                            "n497992
          case  g_s_mseg_lean-xauto.                            "n497992
            when  'X'.                                          "n497992
            when  space.                                        "n497992
            when  others.                                       "n547170
            range table g_ra_xauto contains the special       "n547170
            indicators for the transfer movements of the      "n547170
            tied empties                                      "n547170
              if  g_s_mseg_lean-xauto in g_ra_xauto.            "n547170
                move  g_s_mseg_lean-xauto                         "n497992
                                 to  g_s_mseg_lean-retail.        "n497992
                clear              g_s_mseg_lean-xauto.           "n497992
                modify  g_t_mseg_lean    from  g_s_mseg_lean      "n497992
                                 transporting xauto retail.       "n497992
              endif.                                            "n547170
          endcase.                                              "n497992
        endif.                                                  "n497992
        read table it156w        with key
                                 bustw = g_s_mseg_lean-bustw
                                 xbgbb = g_s_mseg_lean-xauto
                                 transporting no fields
                                 binary search.
        if sy-subrc <> 0.
          delete                 g_t_mseg_lean.
        else.                                                   "n443935
        enrich the current entry with the company code        "n443935
          perform f9300_read_organ                              "n443935
                       using     c_werks  g_s_mseg_lean-werks.  "n443935
                                                                "n443935
          check : sy-subrc is initial.                          "n443935
          move  g_s_organ-bukrs  to  g_s_mseg_lean-bukrs.       "n443935
          modify  g_t_mseg_lean  from  g_s_mseg_lean            "n443935
                                 transporting  bukrs.           "n451923
        endif.
      endloop.
    For all available FI documents from BSIM, read the header data
    from BKPF to get the link to the originating material document.
      if  not g_t_bkpf_key[] is initial.
      look for the header of the matching FI documents
        sort  g_t_bkpf_key       by  bukrs belnr gjahr.
        delete adjacent duplicates from g_t_bkpf_key.
      save result from database selection into global hashed  "n856424
      table g_t_bkpf                                          "n856424
        select  *                 from bkpf                     "n856424
          into corresponding fields of table g_t_bkpf           "n856424
               for all entries in g_t_bkpf_key
                       where  bukrs = g_t_bkpf_key-bukrs
                         and  belnr = g_t_bkpf_key-belnr
                         and  gjahr = g_t_bkpf_key-gjahr.
        if  sy-subrc is initial.
        create working table l_t_keytab_m
          free                   g_t_bkpf_key.
          loop at g_t_bsim_lean  into  g_s_bsim_lean.           "n443935
          enrich the working table g_t_bsim_lean with the     "n443935
          MM doc info                                         "n443935
                                                                "n443935
          look for the matching FI document header            "n443935
            read table g_t_bkpf  assigning           "n856424
                       with key  bukrs = g_s_bsim_lean-bukrs    "n443935
                                 belnr = g_s_bsim_lean-belnr    "n443935
                                 gjahr = g_s_bsim_lean-gjahr.   "n443935
                                                                "n443935
            if  sy-subrc is initial.                            "n443935
            enrich table G_T_BSIM_LEAN with the MM doc        "n443935
            consider only FI docs created by MM docs here     "n856424
              check :

    Hi Ravi,
    possibly a service pack has been installed just in the time when you created the copy. I found
        data: lt_sort type kkblo_t_sortinfo.                    "n890109
    in the include mentioned on our system. Please check if the includes are identical in development and production server (remote-compare from editor).
    But we also have a copy of this in our system. In the copy I found type name like alv_type_sortinfo but no kkblo_t_sortinfo.
    Note KKBLO was the predecessor of ALV.
    Must have to dio something with version changed by service pack.
    Regards,
    Clemens

  • Facing problem during uploadation of Routing data using CA01-BDC - URGENT

    Dear All,
    When I am trying to upload Routing data using CA01 in the Table Control scenario, then I am facing problem as my last 2 records are not getting uploaded from my Test file.
    For example, I am having 47 records in my Test File and after setting ‘Default size’ parameters (to avoid screen resolution problem)
    I have 15 table control line items data per page. The Page down logic ('=P+') is working fine, but my below BDC code failed to take
    the remainder last 2 records from the Test File.
    Analysis: When I am running my “Call Transaction” bdc in foreground, then the 1st page down occurs after 15th record, 2nd page down occurs after 29th record( as in Table Control 1st page’s 15th record is coming on the Top of 2nd page). 3rd page down occurs after 43rd record
    (as 2nd page’s 29th record is coming on the top of 3rd page). In the 4th Table Control Page 43rd record of previous page is coming on top, and then it’s taking 44th & 45th records from the Test File and then it is triggering SAVE (=BU). Thus, our last 2 records
    (i.e. 46th, 47th record) are not getting uploaded in the routing screen from our Test File.
    If anybody has encountered this scenario previously, please help me URGENTLY in fixing the bugs here. It’s VERY, VERY URGENT…
    FYI. For others 45 successful records already uploaded, all the screen fields values are coming properly in the routing screen, and here there is no issue.
    Thanks very much…
    Thanks & Regards
    Sudipta – Project Lead
    Volvo Client Location
    I am pasting my BDC source code below:
    REPORT ZRT1_UPLOAD_CA01_F
                           NO STANDARD PAGE HEADING
                           LINE-SIZE 255.
                            I N C L U D E S                              *
    Include for Data Declarations
    INCLUDE zrout_top.
    Include for Forms
    INCLUDE zrout_form.
    INCLUDE zrout_include_f_ca01.
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR <field>
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    Attaching F4 help with filename
      PERFORM F1001_GET_F4.
               S T A R T   -   O F  -  S E L E C T I O N                 *
    START-OF-SELECTION.
    Perform to read the input file
      PERFORM f_read_file.
    Perform to fill the BDC data
      PERFORM f_fill_bdctab.
                   E N D   -   O F  -  S E L E C T I O N                 *
    END-OF-SELECTION.
      FREE: i_bdcdata,
            i_messtab,
            i_record.
    x----
    *&  Include           ZROUT_TOP                                        *
                      D A T A B A S E    T A B L E S                     *
    TABLES: t100.          "Messages
                    D A T A    D E C L A R A T I O N S                   *
    T A B L E    T Y P E S *****************************
    For input data
    TYPES: BEGIN OF ty_record,
            matnr(18),  "Material Number
            werks(4),   "Plant
            verwe(3),   "Usage
            statu(3),   "Status
            arbpl(8),   "Work Center
            steus(4),   "Control Key
            ltxa1(40),  "Description of Operation
            bmsch(13),  "Base Quantity
            meinh(3),   "Unit of Measure
            vgw01(11),  "Machine
            vge01(3),   "Unit of measure of activity
          END OF ty_record.
    I N T E R N A L    T A B L E S ***********************
    Internal Table for input file name
    DATA: i_file_tab  TYPE STANDARD TABLE OF sdokpath   INITIAL SIZE 0.
    Internal Table for BDC Data
    DATA: i_bdcdata   TYPE STANDARD TABLE OF bdcdata    INITIAL SIZE 0.
    Internal Table for BDC Messages
    DATA: i_messtab   TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0.
    Internal Table for Input file
    DATA: i_record TYPE STANDARD TABLE OF ty_record INITIAL SIZE 0.
    W O R K      A R E A S *************************
    Work Area for input file name
    DATA: wa_file_tab LIKE sdokpath.
    Work Area for BDC Data
    DATA: wa_bdcdata LIKE bdcdata.
    Work Area for BDC Messages
    DATA: wa_messtab LIKE bdcmsgcoll.
    Work Area for Input file
    DATA: wa_record TYPE ty_record.
    V A R I A B L E S ****************************
    DATA: v_filename TYPE string,
          v_fnam(40) TYPE c.
    DATA: wa_opt TYPE ctu_params.
    C O N S T A N T S ***************************
    CONSTANTS: c_werks TYPE rc27m-werks VALUE 'tp',
               c_steus TYPE plpod-steus VALUE 'PP01'.
    *Selection Screen.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS:
              Input file name
                P_FILE TYPE rlgrap-filename OBLIGATORY. " DEFAULT 'C:\'.
    SELECTION-SCREEN END OF BLOCK B1.
    x----
    *&  Include           ZROUT_FORM                                       *
    *&      Form  f_fill_bdctab
          Form to fill the BDC Data
    FORM f_fill_bdctab.
      TABLES mapl.          "Assignment of Task Lists to Materials
      DATA: l_cnt_item(3)  TYPE n VALUE 1.    "Line item counter
      DATA: first(3)  TYPE n VALUE 16.    "Line item counter
      DATA: next(3)  TYPE n .    "Line item counter
      DATA: lin(3) TYPE n .    "Line item counter
      DATA: l_v_bmsch(13),   "Base qty
            l_v_meinh(3),    "Unit of Measure
            l_v_vgw01(11),   "Machine
            l_v_vgw02(11),   "Labour
            l_v_vge01(3).    "Unit of measure of activity
      DATA l_v_nextline TYPE sy-tabix.
      DATA wa_temp TYPE ty_record.
        Initialize Counter
          l_cnt_item = 1.
      SORT i_record BY matnr.
      LOOP AT i_record INTO wa_record.
    AT NEW matnr.
        REFRESH: i_bdcdata,
                 i_messtab.
        SET PARAMETER ID 'PLN' FIELD space.
        SET PARAMETER ID 'PAL' FIELD space.
        PERFORM f_bdc_dynpro      USING 'SAPLCPDI' '1010'.
        PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                        '/00'.
      Material Number
        PERFORM f_bdc_field       USING 'RC27M-MATNR'
                                        wa_record-matnr.
       Plant
        PERFORM f_bdc_field       USING 'RC27M-WERKS'
                                        c_werks.
        PERFORM f_bdc_field       USING 'RC271-PLNNR'
      Check if routing already exits for the material
        SELECT * FROM mapl
                      INTO mapl
                                WHERE matnr EQ wa_record-matnr
                                  AND werks EQ c_werks
                                  AND plnty EQ 'N'.
          IF sy-subrc EQ 0.
            PERFORM f_bdc_dynpro      USING 'SAPLCPDI' '1200'.
            PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                            '=ANLG  '.
          ENDIF.
        ENDSELECT.
        perform f_bdc_dynpro      USING 'SAPLCPDA' '1200'.
        perform f_bdc_field       USING 'BDC_OKCODE'
                                  '=VOUE'.
    Group Counter
        perform f_bdc_field       USING 'PLKOD-PLNAL'
      Usage
        PERFORM f_bdc_field       USING 'PLKOD-VERWE'
                                        '1'.
      Status
        PERFORM f_bdc_field       USING 'PLKOD-STATU'
                                        '4'.
    ENDAT.
        PERFORM f_bdc_dynpro      USING 'SAPLCPDI' '1400'.
      Check if page is full
        IF l_cnt_item EQ '16'.
        Page down
          PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                               '=P+'.
          l_cnt_item = 1.
    ELSE.
    PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    ENDIF.
       CLEAR v_fnam.
      Populate item level details
    Work Center
        CONCATENATE 'PLPOD-ARBPL(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-arbpl.
      Control Key
        CONCATENATE 'PLPOD-STEUS(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        c_steus.
      Description of Operation
        CONCATENATE 'PLPOD-LTXA1(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-ltxa1.
      Base Quantity
        CONCATENATE 'PLPOD-BMSCH(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-bmsch.
      Unit of Measure
        CONCATENATE 'PLPOD-MEINH(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-meinh.
      Machine
        CONCATENATE 'PLPOD-VGW01(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-vgw01.
      Labour
       CONCATENATE 'PLPOD-VGW02(' l_cnt_item ')' INTO v_fnam.
       PERFORM f_bdc_field       USING v_fnam
                                       wa_record-vgw02.
      Unit of measure of activity
        CONCATENATE 'PLPOD-VGE01(' l_cnt_item ')' INTO v_fnam.
        PERFORM f_bdc_field       USING v_fnam
                                        wa_record-vge01.
          l_cnt_item = l_cnt_item + 1.
       CLEAR wa_record.
    AT END OF matnr.
         PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
          PERFORM f_bdc_field         USING 'BDC_OKCODE'
                                  '=BU'.
         wa_opt-DISMODE = 'A'.
         wa_opt-DEFSIZE = 'X'.
         wa_opt-UPDMODE = 'S'.
        PERFORM f_bdc_transaction USING 'CA01'.
       Initialize Counter
         l_cnt_item = 1.
    ENDAT.
      ENDLOOP.
    ENDFORM.                    " f_fill_bdctab
    x----
    *&  Include           ZROUT_INCLUDE_F_CA01                             *
    *&      Form  f_read_file
          Form to read the file from presentation server
    FORM f_read_file .
    To get the file name
      DATA l_v_file TYPE string.
    l_v_file = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
          EXPORTING
            filename                = l_v_file
            filetype                = 'ASC'
            has_field_separator     = 'X'
          TABLES
            data_tab                = i_record
          EXCEPTIONS
            file_open_error         = 1
            file_read_error         = 2
            no_batch                = 3
            gui_refuse_filetransfer = 4
            invalid_type            = 5
            no_authority            = 6
            unknown_error           = 7
            bad_data_format         = 8
            header_not_allowed      = 9
            separator_not_allowed   = 10
            header_too_long         = 11
            unknown_dp_error        = 12
            access_denied           = 13
            dp_out_of_memory        = 14
            disk_full               = 15
            dp_timeout              = 16
            OTHERS                  = 17.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
    ENDIF.
    ENDFORM.                    " f_read_file
    *&      Form  f_bdc_dynpro
          Form to populate BDC Tab for new screen
         -->fp_program   Screen program name
         -->fp_dynpro    Screen Number
           Start new screen                                              *
    FORM f_bdc_dynpro USING fp_program fp_dynpro.
      CLEAR wa_bdcdata.
      wa_bdcdata-program  = fp_program.
      wa_bdcdata-dynpro   = fp_dynpro.
      wa_bdcdata-dynbegin = 'X'.
      APPEND wa_bdcdata TO i_bdcdata.
    ENDFORM.                    "f_bdc_dynpro
    *&      Form  f_bdc_field
           Insert field                                                  *
    FORM f_bdc_field USING fp_fnam fp_fval.
      IF NOT fp_fval IS INITIAL.
        CLEAR wa_bdcdata.
        wa_bdcdata-fnam = fp_fnam.
        wa_bdcdata-fval = fp_fval.
        APPEND wa_bdcdata TO i_bdcdata.
      ENDIF.
    ENDFORM.                    "f_bdc_field
    *&      Form  f_bdc_transaction
          Call transaction and error handling
         -->fp_tcode   Transaction code
    FORM f_bdc_transaction  USING fp_tcode.
      DATA: l_mstring(480),
            l_color         TYPE i,
            l_mode          TYPE c.
      REFRESH i_messtab.
    CALL TRANSACTION fp_tcode USING i_bdcdata
                       OPTIONS FROM wa_opt
                       MESSAGES INTO i_messtab.
    Messages during upload
      LOOP AT i_messtab INTO wa_messtab.
        CASE wa_messtab-msgtyp.
          WHEN 'S'.
            l_color = 5.
          WHEN 'E'.
            l_color = 6.
          WHEN 'W'.
            l_color = 3.
        ENDCASE.
        FORMAT COLOR = l_color.
        SELECT SINGLE * FROM t100 WHERE sprsl = wa_messtab-msgspra
                                  AND   arbgb = wa_messtab-msgid
                                  AND   msgnr = wa_messtab-msgnr.
        IF sy-subrc = 0.
          l_mstring = t100-text.
          IF l_mstring CS '&1'.
            REPLACE '&1' WITH wa_messtab-msgv1 INTO l_mstring.
            REPLACE '&2' WITH wa_messtab-msgv2 INTO l_mstring.
            REPLACE '&3' WITH wa_messtab-msgv3 INTO l_mstring.
            REPLACE '&4' WITH wa_messtab-msgv4 INTO l_mstring.
          ELSE.
            REPLACE '&' WITH wa_messtab-msgv1 INTO l_mstring.
            REPLACE '&' WITH wa_messtab-msgv2 INTO l_mstring.
            REPLACE '&' WITH wa_messtab-msgv3 INTO l_mstring.
            REPLACE '&' WITH wa_messtab-msgv4 INTO l_mstring.
          ENDIF.
          CONDENSE l_mstring.
          WRITE: / wa_messtab-msgtyp, l_mstring(250).
        ELSE.
          WRITE: / wa_messtab.
        ENDIF.
        FORMAT COLOR OFF.
      ENDLOOP.
      SKIP.
    ENDFORM.                    " f_bdc_transaction
    FORM F1001_GET_F4.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                PROGRAM_NAME  = SY-REPID
                DYNPRO_NUMBER = SY-DYNNR
                FIELD_NAME    = P_FILE
           CHANGING
                FILE_NAME     = P_FILE
           EXCEPTIONS
                MASK_TOO_LONG = 1
                OTHERS        = 2.
      IF SY-SUBRC <> 0.
      File is not selected
       MESSAGE I000 WITH TEXT-M01.
      ENDIF.
    ENDFORM.                    " F1001_GET_F4

    Sudipta,
    Would request you to post this to ABAP-Forum for Immediate response.
    I had this problem, but the ABAP guy did something to correct this...it was more of screen resoultion difference between the recorded system and uploading system. Please try to use the same system which was used to record and try.
    Regards,
    Prasobh

  • Problem in Creating Employee as a supplier in backend by AP supplier

    Hi friends,
    Im facing issue in creating Employee as a supplier in backend through AP supplier interface, as im getting the below error like
    Employee_id is invalid and Employee info is invalidThis is the codings that i followed to perform that interface, but it didnt worked it seems.
    DECLARE
    L_VENDOR_REC_TYPE AP_VENDOR_PUB_PKG.R_VENDOR_REC_TYPE;
    L_SUP_SEQ number;
    L_MSG_COUNT NUMBER;
    L_MSG_DATA VARCHAR2 (4000) := '';
    L_RETURN_STATUS VARCHAR2 (1);
    L_VENDOR_ID AP_SUPPLIERS.VENDOR_ID%TYPE;
    L_PARTY_ID NUMBER;
    BEGIN
    SELECT AP_SUPPLIERS_INT_S.NEXTVAL INTO L_SUP_SEQ FROM DUAL;
    L_VENDOR_REC_TYPE.VENDOR_NAME := 'Terrence Schreiber';
    L_VENDOR_REC_TYPE.EMPLOYEE_ID := 18;
    -- L_VENDOR_REC_TYPE.segment1 := 18;
    L_VENDOR_REC_TYPE.VENDOR_TYPE_LOOKUP_CODE := 'EMPLOYEE';
    L_VENDOR_REC_TYPE.INVOICE_CURRENCY_CODE := 'INR';
    L_VENDOR_REC_TYPE.PAYMENT_CURRENCY_CODE := 'INR';
    L_VENDOR_REC_TYPE.TERMS_NAME := 'N30';
    L_VENDOR_REC_TYPE.VENDOR_INTERFACE_ID := L_SUP_SEQ;
    -- l_vendor_rec_type.party_id := 6487;
    AP_VENDOR_PUB_PKG.CREATE_VENDOR (
    P_API_VERSION => 1.0,
    P_INIT_MSG_LIST => FND_API.G_FALSE,
    P_COMMIT => FND_API.G_FALSE,
    P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
    X_RETURN_STATUS => L_RETURN_STATUS,
    X_MSG_COUNT => L_MSG_COUNT,
    X_MSG_DATA => L_MSG_DATA,
    P_VENDOR_REC => L_VENDOR_REC_TYPE,
    X_VENDOR_ID => L_VENDOR_ID,
    X_PARTY_ID => L_PARTY_ID
    commit;
    DBMS_OUTPUT.put_line ('Vendor Return Status ---> ' || L_RETURN_STATUS);
    DBMS_OUTPUT.put_line ('Vendor Message Count ---> ' || L_MSG_COUNT);
    DBMS_OUTPUT.put_line ('Vendor ID --->' || L_VENDOR_ID);
    DBMS_OUTPUT.put_line ('Party ID --->' || L_PARTY_ID);
    IF L_MSG_COUNT = 1
    THEN
    DBMS_OUTPUT.put_line ('Vendor Message Data ---> ' || L_MSG_DATA);
    ELSIF L_MSG_COUNT > 1
    THEN
    FOR I IN 1 .. L_MSG_COUNT
    LOOP
    DBMS_OUTPUT.put_line(I || '. '
    || SUBSTR (
    FND_MSG_PUB.GET (
    P_ENCODED => FND_API.G_FALSE
    1,
    255
    END LOOP;
    END IF;
    END;
    Also i referred for the above error in the metalink with the following ID, that also dint worked
    [ID 1400877.1
    [ID 977651.1 ]Can friends, anyone help me to solve this problem.
    Thanks
    Brgds,
    Mini

    Hi
    Navigation: Supplier > Entry > Create Supplier > Employee Name
    Responsibility: Payable Manager
    Regards
    Senthilkumar C
    Edited by: Senthilkumar Chellamuthu on Jul 24, 2012 3:16 PM

  • Problem in fetching rows

    Hi
    I have a table which contains one foreign key(say function_id) and I made a composite primary key in my table which is the combination of two fields (say function_id,groups)..so I dont use any automatic generated id in this table..I did not have any problem in inserting the details...But I got a problem in updating the details..i.e I want to fetch the details(group,function_id)...the problem is that I got 'no data found error' while fetching...can anyone say what condition have I to give to fetch the details....
    Thanks in advance
    Fazila

    Hi
    I have a table which contains one foreign key(say function_id) and I made a composite primary key in my table which is the combination of two fields (say function_id,groups)..so I dont use any automatic generated id in this table..I did not have any problem in inserting the details...But I got a problem in updating the details..i.e I want to fetch the details(group,function_id)...the problem is that I got 'no data found error' while fetching...can anyone say what condition have I to give to fetch the details....
    Thanks in advance
    Fazila

  • Employee details in SAP ABAP Hr

    hi folks,
    do any one hav done Report -Employee details in SAP ABAP Hr.

    check this code
    *                        INFOTYPES                             *
    INFOTYPES : 0000,     " Actions
                0001,     " Organizaiton Assignment
                0002,     " Personnel Data
                0008,     " Basic Pay
                0022,     " Education
                0025,     " Appraisals
                0077,     " Additional Personal Data
                2001,     " Absences
                9002,     " Additional Personal Data
                9545,     " Discipline data
                0000 NAME INT_PROM,
                0000 NAME INT_CHGPY,
                0302.
    *                        INCLUDES                             *
    *                        TABLES                                *
    TABLES    : PERNR.
    *                        CONSTANTS                             *
    CONSTANTS : C_ONE      TYPE CHAR1  VALUE '1',
                C_EARLY    TYPE CHAR1  VALUE 'E',
                C_NEW      TYPE CHAR1  VALUE 'N',
                C_EARLYDT  TYPE SY-DATUM VALUE '20000501',
                C_JAN      TYPE CHAR2  VALUE '01',
                C_FEB      TYPE CHAR2  VALUE '02',
                C_MAR      TYPE CHAR2  VALUE '03',
                C_AWL      TYPE CHAR3  VALUE 'AWL',
                C_LWP      TYPE CHAR3  VALUE 'LWP'.
    *                        TYPES                                 *
    TYPE-POOLS: SLIS.                      " ALV Type Pool
    TYPES  :
             BEGIN OF T_DISCACT,
               PERNR  TYPE CHAR8,
               COMM1  TYPE CHAR1,
               DESCRI TYPE CHAR40,
               COMM2  TYPE CHAR1,
               MDATE  TYPE CHAR10,
             END OF T_DISCACT,
             BEGIN OF T_INCRE,
               PERNR  TYPE CHAR8,
               INCR1 TYPE CHAR10,
               INCR2 TYPE CHAR10,
               INCR3 TYPE CHAR10,
             END OF T_INCRE,
             BEGIN OF T_OUTPUT,
               PERNR TYPE CHAR8,
               NAME  TYPE CHAR40,
               DESIG TYPE CHAR40,
               PESUB TYPE CHAR15,
               ORGUN TYPE CHAR40,
               COSTC TYPE CHAR20,
               ETHIC TYPE CHAR2,
               CPCODE TYPE ZCCODE,
               GRADE TYPE CHAR8,
               ***   TYPE CHAR6,
               DOB   TYPE CHAR10,
               DOJ   TYPE CHAR10,
               QUAL1 TYPE CHAR30,
               QUAL2 TYPE CHAR30,
               QUAL3 TYPE CHAR30,
               QUAL4 TYPE CHAR30,
               QUAL5 TYPE CHAR30,
               LPROM TYPE CHAR10,
               PROMD TYPE CHAR10,
               PROMT TYPE CHAR1,
               NOYRS TYPE CHAR2,
               AWL   TYPE CHAR9,
               LWP   TYPE CHAR9,
               APPR1 TYPE CHAR9,
               APPR2 TYPE CHAR9,
               APPR3 TYPE CHAR9,
               APPR4 TYPE CHAR9,
               APPR5 TYPE CHAR9,
               DISCI TYPE CHAR57,
             END   OF T_OUTPUT.
    DATA : W_OUTPUT TYPE T_OUTPUT.
    TYPES  :  BEGIN OF T_FILE.
            INCLUDE STRUCTURE W_OUTPUT.
    TYPES  :   INCR1 TYPE CHAR10,
               INCR2 TYPE CHAR10,
               INCR3 TYPE CHAR10,
              END OF T_FILE.
    DATA  : W_FILE TYPE T_FILE.
    TYPES : BEGIN  OF T_EXCEL.
            INCLUDE STRUCTURE W_FILE.
    TYPES :  END OF T_EXCEL.
    *                        INTERNAL TABLES                       *
    DATA   : INT_NONEXE  TYPE STANDARD TABLE OF ZHRT007   WITH HEADER LINE,
             INT_OUTPUT  TYPE STANDARD TABLE OF T_OUTPUT  WITH HEADER LINE,
             INT_DISCACT TYPE STANDARD TABLE OF T_DISCACT WITH HEADER LINE,
             INT_QUALFI  TYPE STANDARD TABLE OF T518B     WITH HEADER LINE,
             INT_INCRE   TYPE STANDARD TABLE OF T_INCRE   WITH HEADER LINE,
             INT_DISCIP  TYPE STANDARD TABLE OF ZHRT004   WITH HEADER LINE,
             INT_PESUB   TYPE STANDARD TABLE OF T001P     WITH HEADER LINE,
             INT_COSTC   TYPE STANDARD TABLE OF CSKT      WITH HEADER LINE,
             INT_EXCEL   TYPE STANDARD TABLE OF T_EXCEL   WITH HEADER LINE,
             EVENT       TYPE SLIS_T_EVENT WITH HEADER LINE,
             LISTHEAD    TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
    *                        VARIABLES                             *
    DATA : W_HIREDATE TYPE BEGDA,
           W_WAGEGRP  TYPE TRFGR,
           W_CPCODE   TYPE ZCCODE,
           W_CAREERCD TYPE CHAR6,
           W_PROMTYPE TYPE ZTSTYPE,
           W_NOOFYRS  TYPE ZNOYRS,
           W_LASTPROM TYPE CHAR10,
           W_PROMDATE TYPE BEGDA,
           W_YEAR     TYPE CHAR4,
           W_APYEAR   TYPE CHAR4,
           W_APPRST   TYPE SY-DATUM,
           W_DISDATE  TYPE ENDDA,
           W_APPREND  TYPE ENDDA,
           W_ABSST    TYPE ENDDA,
           W_ABSEND   TYPE ENDDA,
           W_ABSYR    TYPE CHAR4,
           W_MONTH(2) TYPE N,
           W_AWL      TYPE CHAR9,
           W_LWP      TYPE CHAR9,
           W_DISCI    TYPE T_OUTPUT-DISCI,
           W_ONE(2)   TYPE N VALUE '01',
           W_CURDATE TYPE CHAR10,
           W_HEADING TYPE LVC_TITLE.
    *                        SELECTION SCREEN                      *
    SELECTION-SCREEN BEGIN OF BLOCK FRM1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
      S_WAGRP    FOR  P0008-TRFGR OBLIGATORY,
      S_FROM     FOR  P0000-BEGDA OBLIGATORY NO-EXTENSION.
    SELECTION-SCREEN END OF BLOCK FRM1.
    * Selection screen serach help for wage groups.
    INCLUDE : ZHRI0003.
    *                        AT SELECTION SCREEN                   *
    *                        START OF SELECTION                    *
    START-OF-SELECTION.
      PERFORM PU_EXEUTIVES_PROM.
      IF S_FROM-HIGH IS INITIAL.
        S_FROM-HIGH = SY-DATUM.
      ENDIF.
    *Fetching employee data for all infotypes.
    GET PERNR.
      PERFORM  PU_DATA_RETRIEVAL.
    *                        START OF SELECTION                    *
    END-OF-SELECTION.
      PERFORM PU_FINAL_TABLE.
      PERFORM PU_GRID_DISPLAY.
      PERFORM PU_FREE_TABLES.
    *                        SUBROUTINES                           *
    *&      Form  PU_DATA_RETRIEVAL
    FORM PU_DATA_RETRIEVAL .
    * To find out date of join for employee
      PERFORM PU_DATA_OF_JOIN.
    * Employee Personnel data
      RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.
      IF PNP-SW-FOUND NE C_ONE.
        REJECT.
      ENDIF.
    * Employee Name into output table
      INT_OUTPUT-NAME = P0002-VORNA.
    *  INT_OUTPUT-DOB  = P0002-GBDAT.
      PERFORM PU_DATE_CONVERSION USING    P0002-GBDAT
                                 CHANGING INT_OUTPUT-DOB.
      IF P0002-GESCH EQ 1.
        INT_OUTPUT-***  = 'Male'.
      ELSE.
        INT_OUTPUT-***  = 'Female'.
      ENDIF.
    * Fetching employees from employee sub goup of Non Executive
      RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-ENDDA.
      IF PNP-SW-FOUND NE C_ONE.
        REJECT.
      ENDIF.
      IF P0001-PERSK  EQ '30' OR P0001-PERSK  EQ '20'.
    * Position for employee into output table
        PERFORM  PU_POSTION_TEXT.
      ELSE.
        REJECT.
      ENDIF.
    * Position for employee into output table
      PERFORM  PU_POSTION_TEXT.
    * Persoonel Sub Area text .
      READ TABLE INT_PESUB WITH KEY WERKS = P0001-WERKS
                                    BTRTL = P0001-BTRTL.
      IF SY-SUBRC EQ 0.
        INT_OUTPUT-PESUB = INT_PESUB-BTEXT.
      ENDIF.
      READ TABLE INT_COSTC WITH KEY KOSTL = P0001-KOSTL.
      IF SY-SUBRC EQ 0.
        INT_OUTPUT-COSTC = INT_COSTC-KTEXT.
      ENDIF.
    * Fetching employees from Additional Personal Data
      RP_PROVIDE_FROM_LAST P0077 SPACE PN-BEGDA PN-ENDDA.
      IF PNP-SW-FOUND EQ C_ONE.
    * Ethnic origin of employee  into output table
        INT_OUTPUT-ETHIC = P0077-RACKY.
      ENDIF.
    * Selecting data from  basic pay last record with wage group
      RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
      IF PNP-SW-FOUND NE C_ONE.
        REJECT.
      ELSE.
        W_WAGEGRP = P0008-TRFGR.
    * Employee Pay Scale Group  into output table
        INT_OUTPUT-GRADE = P0008-TRFGR.
      ENDIF.
    * Selecting data from  Education with wage group
      SORT P0022 BY BEGDA.
      PROVIDE * FROM P0022 BETWEEN PN-BEGDA AND PN-ENDDA.
        IF SY-TABIX EQ 1.
          READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
          IF SY-SUBRC EQ 0.
            INT_OUTPUT-QUAL1 = INT_QUALFI-ATEXT.
          ENDIF.
        ELSEIF SY-TABIX EQ 2.
          READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
          IF SY-SUBRC EQ 0.
            INT_OUTPUT-QUAL2 = INT_QUALFI-ATEXT.
          ENDIF.
        ELSEIF SY-TABIX EQ 3.
          READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
          IF SY-SUBRC EQ 0.
            INT_OUTPUT-QUAL3 = INT_QUALFI-ATEXT.
          ENDIF.
        ELSEIF SY-TABIX EQ 4.
          READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
          IF SY-SUBRC EQ 0.
            INT_OUTPUT-QUAL4 = INT_QUALFI-ATEXT.
          ENDIF.
        ELSEIF SY-TABIX EQ 5.
          READ TABLE INT_QUALFI WITH KEY AUSBI = P0022-AUSBI.
          IF SY-SUBRC EQ 0.
            INT_OUTPUT-QUAL5 = INT_QUALFI-ATEXT.
          ENDIF.
        ENDIF.
      ENDPROVIDE.
    * Carrer path code for employee from Additional Personal Data.
      RP_PROVIDE_FROM_LAST P9002 SPACE PN-BEGDA PN-ENDDA.
      IF PNP-SW-FOUND EQ C_ONE.
        W_CPCODE  = P9002-CPCODE.
        INT_OUTPUT-CPCODE = P9002-CPCODE.
        IF W_CPCODE EQ '001'.
          IF W_HIREDATE < C_EARLYDT.
            CONCATENATE W_CPCODE
                        C_EARLY
                  INTO  W_CAREERCD.
          ELSE.
            CONCATENATE W_CPCODE
                        C_NEW
                  INTO  W_CAREERCD.
          ENDIF.
        ELSE.
          W_CAREERCD = W_CPCODE.
        ENDIF.
      ENDIF.
    * Detrmine Promotion by Test/Service
      READ TABLE INT_NONEXE WITH KEY CPCODE    = W_CAREERCD
                                     WAGEGROUP = W_WAGEGRP.
      IF SY-SUBRC EQ 0.
        W_PROMTYPE = INT_NONEXE-TSTYPE.
        W_NOOFYRS  = INT_NONEXE-NOYRS.
        INT_OUTPUT-PROMT = W_PROMTYPE.
        INT_OUTPUT-NOYRS = W_NOOFYRS.
      ENDIF.
    * Retriving last promotion date from actions
      DELETE INT_PROM WHERE MASSN NE 'B3'.
      SORT INT_PROM BY BEGDA DESCENDING.
    *  RP_PROVIDE_FROM_LAST INT_PROM SPACE PN-BEGDA PN-ENDDA.
      READ TABLE INT_PROM INDEX 1.
      IF SY-SUBRC EQ 0 AND INT_PROM-MASSN EQ 'B3'.
        PERFORM PU_DATE_CONVERSION USING  INT_PROM-BEGDA
                                 CHANGING W_LASTPROM.
      ELSE.
        PERFORM PU_DATE_CONVERSION USING  W_HIREDATE
                                   CHANGING W_LASTPROM.
      ENDIF.
    *  As there is no ending date for records which happen on same date
    *  for cross check to get last promotion Infotype 0302' is retived
      IF P0302[] IS NOT INITIAL.
        DELETE P0302 WHERE MASSN NE 'B3'.
        SORT  P0302 BY BEGDA DESCENDING.
        READ TABLE P0302 INDEX 1.
        IF SY-SUBRC EQ 0 AND
           INT_PROM-BEGDA IS NOT INITIAL.
          IF INT_PROM-BEGDA < P0302-BEGDA.
            PERFORM PU_DATE_CONVERSION USING  P0302-BEGDA
                                     CHANGING W_LASTPROM.
          ENDIF.
        ENDIF.
      ENDIF.
      IF W_LASTPROM+0(2) GT '01'.
        W_LASTPROM+0(2) = '01'.
        W_ONE = W_LASTPROM+3(2) + 1.
        W_LASTPROM+3(2) =  W_ONE.
      ENDIF.
    * Last promaotion date for Employee into output table
      INT_OUTPUT-LPROM =  W_LASTPROM.
    * To Find out promotion due date for employee.
    * Fetching service availabilty data
      W_YEAR     =  W_LASTPROM+6(4).
      W_YEAR     =  W_YEAR + W_NOOFYRS.
      CONCATENATE  W_YEAR
                     W_LASTPROM+3(2)
                   W_LASTPROM+0(2)
              INTO W_PROMDATE.
    * Check promotion duedate is with in input range.
      IF S_FROM-LOW IS NOT INITIAL.
        CHECK W_PROMDATE GE S_FROM-LOW.
      ENDIF.
      IF S_FROM-HIGH IS NOT INITIAL.
        CHECK W_PROMDATE LE S_FROM-HIGH.
      ENDIF.
    * Promaotion due date for Employee into output table
      PERFORM PU_DATE_CONVERSION USING    W_PROMDATE
                                 CHANGING INT_OUTPUT-PROMD.
    * Apprisal rating data.
    * If promotion month is JAN,FEB,MAR deduct 6 years
      IF W_PROMDATE+4(2) EQ C_JAN OR
         W_PROMDATE+4(2) EQ C_FEB OR
         W_PROMDATE+4(2) EQ C_MAR.
        CLEAR W_YEAR.
        W_YEAR   = W_PROMDATE+0(4).
        W_APYEAR = W_YEAR - 1.
        W_YEAR   = W_YEAR - 6.
      ELSE.
    * If promotion month is not JAN,FEB,MAR deduct 5 years
        W_YEAR   = W_PROMDATE+0(4).
        W_APYEAR = W_YEAR.
        W_YEAR   = W_YEAR - 5.
      ENDIF.
      CONCATENATE  W_YEAR
                   '0401'
              INTO W_APPRST.
      CONCATENATE  W_APYEAR
                   '0331'
              INTO W_APPREND.
      DELETE P0025 WHERE BEGDA LT W_APPRST
                      OR BEGDA GT W_APPREND.
      PROVIDE * FROM P0025 BETWEEN PN-BEGDA AND PN-ENDDA.
        IF SY-TABIX EQ 1.
          INT_OUTPUT-APPR1 = P0025-KSU01.
        ELSEIF SY-TABIX EQ 2.
          INT_OUTPUT-APPR2 = P0025-KSU01.
        ELSEIF SY-TABIX EQ 3.
          INT_OUTPUT-APPR3 = P0025-KSU01.
        ELSEIF SY-TABIX EQ 4.
          INT_OUTPUT-APPR4 = P0025-KSU01.
        ELSEIF SY-TABIX EQ 5.
          INT_OUTPUT-APPR5 = P0025-KSU01.
        ENDIF.
      ENDPROVIDE.
    * Absence data.
      IF W_PROMDATE+4(2) EQ C_JAN.
        CLEAR W_YEAR.
        W_YEAR   = W_PROMDATE+0(4).
        W_ABSYR  = W_YEAR - 1.
        W_MONTH  = '11'.
        W_YEAR   = W_YEAR - 2.
      ELSE.
    * If promotion month is not JAN,FEB,MAR deduct 5 years
        W_YEAR   = W_PROMDATE+0(4).
        W_ABSYR  = W_YEAR.
        W_MONTH  = W_PROMDATE+4(2).
        W_MONTH  = W_MONTH - 01.
        W_YEAR   = W_YEAR - 1.
      ENDIF.
      CONCATENATE W_YEAR
                  W_MONTH
                  '23'
             INTO W_ABSST.
      CONCATENATE  W_ABSYR
                   W_MONTH
                   '22'
              INTO W_ABSEND.
      SORT   P2001 BY BEGDA.
      DELETE P2001 WHERE ( AWART NE C_AWL AND
                           AWART NE C_LWP )  OR
                         ( BEGDA LT W_ABSST
                     OR    BEGDA GT W_ABSEND ).
      PROVIDE * FROM P2001 BETWEEN PN-BEGDA AND PN-ENDDA.
        IF P2001-AWART  EQ  C_AWL.
          W_AWL = W_AWL + P2001-ABWTG.
        ELSEIF P2001-AWART  EQ  C_LWP.
          W_LWP = W_LWP + P2001-ABWTG.
        ENDIF.
      ENDPROVIDE.
      INT_OUTPUT-AWL = W_AWL.
      INT_OUTPUT-LWP = W_LWP.
    * Increments dates' data.
      DELETE INT_CHGPY WHERE MASSN NE 'B7'.
      SORT   INT_CHGPY BY BEGDA DESCENDING.
      IF INT_CHGPY[] IS NOT INITIAL.
        INT_INCRE-PERNR = INT_CHGPY-PERNR.
        PROVIDE * FROM INT_CHGPY  BETWEEN PN-BEGDA
                                      AND PN-ENDDA.
          IF SY-TABIX EQ 1.
            PERFORM PU_DATE_CONVERSION USING    INT_CHGPY-BEGDA
                                       CHANGING INT_INCRE-INCR1.
          ELSEIF SY-TABIX EQ 2.
            PERFORM PU_DATE_CONVERSION USING    INT_CHGPY-BEGDA
                                       CHANGING INT_INCRE-INCR2.
          ELSEIF SY-TABIX EQ 3.
            PERFORM PU_DATE_CONVERSION USING    INT_CHGPY-BEGDA
                                       CHANGING INT_INCRE-INCR3.
          ENDIF.
        ENDPROVIDE.
        APPEND INT_INCRE.
        CLEAR  INT_INCRE.
      ENDIF.
    * Disciplinary Actions.
      CLEAR W_YEAR.
      W_YEAR = W_PROMDATE+0(4).
      W_YEAR = W_YEAR - 3.
      CONCATENATE  W_YEAR
                   W_PROMDATE+4(4)
              INTO W_DISDATE.
      SORT P9545 BY MDATE.
      DELETE P9545 WHERE MDATE LT W_DISDATE
                      OR MDATE GT W_PROMDATE.
      PROVIDE * FROM P9545 BETWEEN PN-BEGDA
                              AND  PN-ENDDA.
        READ TABLE INT_DISCIP WITH KEY MCODE = P9545-MCODE.
        IF SY-SUBRC EQ 0.
          INT_DISCACT-PERNR  = P9545-PERNR.
          INT_DISCACT-DESCRI = INT_DISCIP-DESCRI.
          PERFORM PU_DATE_CONVERSION USING    P9545-MDATE
                                     CHANGING INT_DISCACT-MDATE.
          INT_DISCACT-COMM1 = ','.
          INT_DISCACT-COMM2 = ','.
          APPEND INT_DISCACT.
          CLEAR  INT_DISCACT.
        ENDIF.
      ENDPROVIDE.
      APPEND INT_OUTPUT.
      CLEAR INT_OUTPUT.
      CLEAR : W_HIREDATE,W_WAGEGRP,W_CPCODE,W_CAREERCD,W_PROMTYPE,
              W_NOOFYRS,W_LASTPROM,W_PROMDATE,W_YEAR,W_APYEAR,
              W_APPRST,W_DISDATE,W_APPREND,W_ABSST,W_ABSEND,
              W_ABSYR,W_MONTH,W_AWL,W_LWP,W_DISCI.
    ENDFORM.                    " PU_DATA_RETRIEVAL
    *&      Form  PU_DATA_OF_JOIN
    FORM PU_DATA_OF_JOIN .
      CLEAR INT_OUTPUT.
      READ TABLE P0000 WITH KEY  MASSN = 'B1'.
      IF SY-SUBRC NE 0 OR  P0000-STAT2 NE '3'.
        REJECT.
      ELSE.
    * Personnel number into output table
        INT_OUTPUT-PERNR = P0000-PERNR.
        PERFORM PU_DATE_CONVERSION USING P0000-BEGDA
                                CHANGING INT_OUTPUT-DOJ.
        W_HIREDATE = P0000-BEGDA.
      ENDIF.
    ENDFORM.                    " PU_DATA_OF_JOIN
    *&      Form  PU_POSTION_TEXT
    FORM PU_POSTION_TEXT .
      DATA  : S_OBJECT TYPE OBJEC_T,
              PERNR_TAB  TYPE HRQUERY_PERNR_T ,
              SOBID_TAB  TYPE HRQUERY_SOBID_T ,
              WA_SOBID TYPE HRQUERY_SOBID,
              WA_PERNR TYPE HRQUERY_PERNR,
              WA_OBJECT TYPE OBJEC.
      WA_PERNR-PERNR = P0001-PERNR.
      APPEND WA_PERNR TO PERNR_TAB.
      WA_SOBID-PLVAR = '01'.
      WA_SOBID-OTYPE = P0001-OTYPE.
      WA_SOBID-SOBID = P0001-PLANS.
      APPEND WA_SOBID TO SOBID_TAB.
      WA_SOBID-PLVAR = '01'.
      WA_SOBID-OTYPE = 'O'.
      WA_SOBID-SOBID = P0001-ORGEH.
      APPEND WA_SOBID TO SOBID_TAB.
      CALL FUNCTION 'HR_GET_TEXT_FOR_OBJECTS'
        EXPORTING
          BEGDA       = PN-BEGDA
          ENDDA       = PN-ENDDA
        IMPORTING
          OBJEC_TAB   = S_OBJECT
        CHANGING
          PERNR_TAB   = PERNR_TAB
          SOBID_TAB   = SOBID_TAB
        EXCEPTIONS
          WRONG_DATES = 1
          OTHERS      = 2.
      IF SY-SUBRC EQ 0.
        LOOP AT S_OBJECT INTO WA_OBJECT.
          IF WA_OBJECT-OTYPE EQ 'O'.
            INT_OUTPUT-ORGUN = WA_OBJECT-STEXT.
          ELSEIF  WA_OBJECT-OTYPE EQ 'S'.
            INT_OUTPUT-DESIG = WA_OBJECT-STEXT.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " PU_POSTION_TEXT
    *&      Form  PU_EXEUTIVES_PROM
    FORM PU_EXEUTIVES_PROM .
      SELECT * FROM ZHRT007 INTO TABLE INT_NONEXE.
      SELECT * FROM ZHRT004 INTO TABLE INT_DISCIP.
      SELECT * FROM T001P   INTO TABLE INT_PESUB.
      SELECT * FROM CSKT    INTO TABLE INT_COSTC
                                 WHERE SPRAS EQ SY-LANGU.
      SELECT * FROM T518B   INTO TABLE INT_QUALFI
                                 WHERE LANGU EQ SY-LANGU.
    ENDFORM.                    " PU_EXEUTIVES_PROM
    *&      Form  PU_DATE_CONVERSION
    FORM PU_DATE_CONVERSION  USING    INPUT_DATE    TYPE SY-DATUM
                             CHANGING OUTPUT_DATE   TYPE CHAR10.
      CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
        EXPORTING
          DATE_INTERNAL            = INPUT_DATE
        IMPORTING
          DATE_EXTERNAL            = OUTPUT_DATE
        EXCEPTIONS
          DATE_INTERNAL_IS_INVALID = 1
          OTHERS                   = 2.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " PU_DATE_CONVERSION
    *&      Form  PU_FINAL_TABLE
    * Preparing final internal table for output to excel
    FORM PU_FINAL_TABLE .
      DATA : W_STR1(4)  TYPE N,
             W_STR2(4)  TYPE N,
             W_STR3(4)  TYPE N,
             W_EXSTR(4) TYPE N,
             W_ORSTR(4) TYPE N,
             W_INSTR(4) TYPE N,
             W_ONSTR(4) TYPE N,
             W_DISFLAG  TYPE CHAR1,
             W_INCFLAG  TYPE CHAR1.
      LOOP AT INT_OUTPUT.
        MOVE-CORRESPONDING INT_OUTPUT TO INT_EXCEL.
        LOOP AT INT_DISCACT WHERE PERNR = INT_OUTPUT-PERNR.
          IF SY-TABIX EQ 1.
            CONCATENATE INT_DISCACT-DESCRI
                         SPACE
                        INT_DISCACT-MDATE
                   INTO W_DISCI.
            INT_EXCEL-DISCI = W_DISCI.
          ELSE.
            W_DISFLAG = 1.
          ENDIF.
        ENDLOOP.
        LOOP AT INT_INCRE WHERE PERNR = INT_OUTPUT-PERNR.
          INT_EXCEL-INCR1 =  INT_INCRE-INCR1.
          INT_EXCEL-INCR2 =  INT_INCRE-INCR2.
          INT_EXCEL-INCR3 =  INT_INCRE-INCR3.
        ENDLOOP.
        APPEND INT_EXCEL.
        CLEAR  INT_EXCEL.
        CLEAR : W_STR1,W_STR2,W_STR3.
        IF W_DISFLAG EQ 1.
          W_ORSTR = W_EXSTR.
          LOOP AT INT_DISCACT WHERE PERNR = INT_OUTPUT-PERNR.
            IF SY-TABIX NE 1.
              CONCATENATE INT_DISCACT-DESCRI
                           SPACE
                          INT_DISCACT-MDATE
                     INTO W_DISCI.
              INT_EXCEL-DISCI = W_DISCI.
              APPEND INT_EXCEL.
              CLEAR  INT_EXCEL.
              CLEAR : W_STR2,W_EXSTR.
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " PU_FINAL_TABLE
    *&      Form  PU_GRID_DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM PU_GRID_DISPLAY .
      DATA W_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
      PERFORM F_FIELDCAT_INIT USING 'IT_HEADER' W_GT_FIELDCAT[].
      IF INT_EXCEL[] IS NOT INITIAL.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            I_CALLBACK_PROGRAM = SY-CPROG
            IT_FIELDCAT        = W_GT_FIELDCAT[]
            IT_EVENTS          = EVENT[]
          TABLES
            T_OUTTAB           = INT_EXCEL
          EXCEPTIONS
            PROGRAM_ERROR      = 1
            OTHERS             = 2.
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.
        MESSAGE S011(ZHR).
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " PU_GRID_DISPLAY
    *&      Form  F_FIELDCAT_INIT
    FORM F_FIELDCAT_INIT USING IT_TABLE
                               LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
      DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PERNR'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 14.
      LS_FIELDCAT-SELTEXT_L = 'Personnel Number'.
      LS_FIELDCAT-FIX_COLUMN = 'X'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'NAME'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 30.
      LS_FIELDCAT-SELTEXT_L    = 'Name'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DESIG'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 25.
      LS_FIELDCAT-SELTEXT_L    = 'Desigination'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PESUB'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-SELTEXT_L    = 'Personnel Sub Area'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ORGUN'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 25.
      LS_FIELDCAT-SELTEXT_L    = 'Organization Unit'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'COSTC'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 14.
      LS_FIELDCAT-SELTEXT_L    = 'Cost Center'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ETHIC'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 6.
      LS_FIELDCAT-SELTEXT_L    = 'Ethic'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'CPCODE'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 7.
      LS_FIELDCAT-SELTEXT_L    = 'CPCode'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'GRADE'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    =  12.
      LS_FIELDCAT-SELTEXT_L    = 'Current Grade'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = '***'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 6.
      LS_FIELDCAT-SELTEXT_L    = 'Gender'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DOB'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 11.
      LS_FIELDCAT-SELTEXT_L    = 'Date of Birth'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DOJ'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 11.
      LS_FIELDCAT-SELTEXT_L    = 'Date of Join'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'QUAL1'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 13.
      LS_FIELDCAT-SELTEXT_L    = 'Qualification 1'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'QUAL2'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 13.
      LS_FIELDCAT-SELTEXT_L    = 'Qualification 2'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'QUAL3'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 13.
      LS_FIELDCAT-SELTEXT_L    = 'Qualification 3'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'QUAL4'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 13.
      LS_FIELDCAT-SELTEXT_L    = 'Qualification 4'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'QUAL5'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 13.
      LS_FIELDCAT-SELTEXT_L    = 'Qualification 5'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'LPROM'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-SELTEXT_L    = 'Last Promotion Date'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PROMD'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-SELTEXT_L    = 'Promotion Due Date'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PROMT'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 14.
      LS_FIELDCAT-SELTEXT_L    = 'Promotion Type'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'NOYRS'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Number of Years'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'AWL'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 22.
      LS_FIELDCAT-SELTEXT_L    = 'Absence Without Leave'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'LWP'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 22.
      LS_FIELDCAT-SELTEXT_L    = 'Leave Without Pay'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'APPR1'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Apprisal 1st'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'APPR2'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Apprisal 2nd'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'APPR3'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Apprisal 3rd'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'APPR4'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Apprisal 4th'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'APPR5'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = 'Apprisal 5th'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DISCI'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 60.
      LS_FIELDCAT-SELTEXT_L    = 'Disciplinary Actions - Date'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'INCR1'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = '1st Increment'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'INCR2'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = '2nd Increment'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'INCR3'.
      LS_FIELDCAT-TABNAME      = INT_EXCEL.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-SELTEXT_L    = '3rd Increment'.
      APPEND LS_FIELDCAT TO LT_FIELDCAT.
    ENDFORM.                    " F_FIELDCAT_INIT
    *&      Form  PU_FREE_TABLES
    FORM PU_FREE_TABLES .
      FREE :  INT_NONEXE  ,
              INT_OUTPUT  ,
              INT_DISCACT ,
              INT_QUALFI  ,
              INT_INCRE   ,
              INT_DISCIP  ,
              INT_PESUB   ,
              INT_COSTC   ,
              INT_EXCEL   ,
              EVENT       ,
              LISTHEAD    .
    ENDFORM.                    " PU_FREE_TABLES
    reward points if helpful
    Edited by: mohammed  abdul hai on Jul 25, 2008 7:21 PM

Maybe you are looking for