Upload Program(sap-abap)

Hi Friends,
    I am using existing program to upload data(MM01 - BASIC VIEW ).But one of the field(MARA-BISMT) for old material number is neither uploading to transaction nor database.I have to uoload for other views(Purchasing, Accounting and so on) also which are depended on this old material number field.
     Secondly, Functional guy suggest me to add some of the fileds into it which are not available in upload structure.
Could you guide me how to fix this issue in below code and upload data safely ?
* Description : Migration Program for Material Master Basic View
* Using xls-structure in Migration Overview: MM-Basic View
* NAME           SR    DATE        VER. XLS  DESCRIPTION OF VERSION
*           8804  04.05.2008  1.0  1.0  Original program
*           8804  27.05.2004  1.1  1.0  Changed check for pack size
*                                            multi pack size, EAN no,
*                                            does not write to initial
*                                            bdc_fields FORMT and FERTH
*           8804  09.06.2006  1.2  1.0  added flag for intercompany
*                      materials on converting table, also changed FM
*                      ZMM_ADD_OLD_MATNR_TO_CONV_TABL
REPORT  z_basic.
* Structure for batch input
CONSTANTS: c_structure TYPE tabname VALUE 'ZMM_BASIC_VIEW'.
TABLES: makt, t006a, t024l, t002, zpmg, zsf1, zsf2, zsf3, zsf4, zsf5,
        zdrc, zdkb, zcce, zpsz, zcns, zusz, zatc, zmsz, t006, tntp, t179
* Internal Tables
DATA: i_data TYPE STANDARD TABLE OF zmm_basic_view.
DATA: i_spras TYPE STANDARD TABLE OF makt-spras.
* selection screen
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: p_file(128) DEFAULT 'U:\My Documents\mm_basic.txt'.
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
PARAMETERS: p_test NO-DISPLAY DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK block1.
INCLUDE Z_BASIC_A.
*INCLUDE zmigration.
* START-OF-SELECTION
START-OF-SELECTION.
  PERFORM upload_file.
  PERFORM check_entries.
  PERFORM add_icons.
  IF p_test NE 'X'.
    PERFORM update.
    update_run = 'X'.
  ENDIF.
  PERFORM show_result.
*&      Form  UPDATE
*       text
*  -->  p1        text
*  <--  p2        text
FORM update.
  CALL FUNCTION 'ZMM_BASIC'
       EXPORTING
            mode   = p_mode
       TABLES
            i_data = i_data
            i_mess = i_mess.
* update conversion table for materials where SAP-number already
* exists and material description also already exist for language in
* field SPRAS_2. This will only happen for inter company materials.
  LOOP AT i_data INTO wa_data WHERE zman_update EQ 'X'.
    CALL FUNCTION 'ZMM_ADD_OLD_MATNR_TO_CONV_TABL'
         EXPORTING
              zzomp         = wa_data-old_matnr
              werks         = '54'  " dummy plant
              matnr         = wa_data-matnr
              bismt         = wa_data-old_matnr
              inter_company = 'X'.
    wa_data-msgtx = 'Conversion table for material updated'.
    wa_data-msgtyp = 'I'.
    WRITE icon_led_yellow AS ICON TO wa_data-icon.
    MODIFY i_data FROM wa_data TRANSPORTING icon msgtyp msgtx.
  ENDLOOP.
ENDFORM.                    " UPDATE
*&      Form  SHOW_RESULT
*       text
*  -->  p1        text
*  <--  p2        text
FORM show_result.
  PERFORM generate_fieldcatalog.
  PERFORM hide_blank_fields.
  PERFORM unhide_message_columns.
  PERFORM move_message_columns.
*  PERFORM add_sorting_to_grid. " sort by first column in file
  IF called_screen_100 EQ space.
    called_screen_100 = 'X'.
    CALL SCREEN 100.
  ENDIF.
ENDFORM.                    " SHOW_RESULT
*&      Form  check_entries
*       text
*  -->  p1        text
*  <--  p2        text
FORM check_entries.
  DATA: wa_find_new_material TYPE zfind_new_material_number.
  LOOP AT i_data INTO wa_data.
*   if file has been downloaded, it may already contain messages
    CLEAR: wa_data-icon,
           wa_data-msgtyp,
           wa_data-msgtx.
    TRANSLATE wa_data-spras_2 TO UPPER CASE.
    TRANSLATE wa_data-meins TO UPPER CASE.
    TRANSLATE wa_data-gewei TO UPPER CASE.
    TRANSLATE wa_data-voleh TO UPPER CASE.
    TRANSLATE wa_data-zzcce TO UPPER CASE.
*   If the material already exists, only texts should be maintained
    IF NOT wa_data-matnr IS INITIAL.
*     Required fields filled?
      CASE space.
        WHEN wa_data-spras_2.
          wa_data-msgtx = 'Field language key (SPRAS_2) is required'.
        WHEN wa_data-maktx_2.
         wa_data-msgtx = 'Field mat. description (MAKTX_2) is required'.
      ENDCASE.
*     Set old_matnr to SAP number if it is not filled
      IF wa_data-old_matnr IS INITIAL.
        wa_data-old_matnr = wa_data-matnr.
      ENDIF.
      IF wa_data-msgtx EQ space.
*     Language key allowed
        SELECT SINGLE * FROM  t002
               WHERE  spras  = wa_data-spras_2.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Language key does not exist (spras_2)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx IS INITIAL.
        SHIFT wa_data-matnr RIGHT DELETING TRAILING space.
        OVERLAY wa_data-matnr WITH '000000000000000000'.
        SELECT SINGLE * FROM  makt
               WHERE  matnr  EQ wa_data-matnr
               AND    spras  EQ wa_data-spras_2.
        IF sy-subrc EQ 0.
          CONCATENATE 'Mat. description already exists for language'
                      wa_data-spras_2
                      INTO wa_data-msgtx SEPARATED BY space.
          MOVE 'X' TO wa_data-zman_update.
        ENDIF.
      ENDIF.
*     Change material - Find line to insert the new description.
      IF wa_data-msgtx IS INITIAL.
        SELECT spras
               INTO TABLE i_spras
               FROM  makt
               WHERE  matnr  = wa_data-matnr.
        DESCRIBE TABLE i_spras LINES l_lines.
        IF l_lines > 3.
*       All screen fields for descriptions are filled - Must be updated
*       manually -
*      ( or add code to insert into MAKT in an other way... )
          wa_data-msgtx =
'Description must be added manually - only 4 lines available on screen'.
          wa_data-zman_update = 'X'.
*       added to converting table after update run
        ENDIF.
      ENDIF.
    ELSE.
*     Check if required fields are filled
      CASE space.
        WHEN wa_data-spras_2.
          wa_data-msgtx = 'Field language key (SPRAS_2) is required'.
        WHEN wa_data-maktx_1.
         wa_data-msgtx = 'Field mat. description (MAKTX_1) is required'.
        WHEN wa_data-maktx_2.
         wa_data-msgtx = 'Field mat. description (MAKTX_2) is required'.
        WHEN wa_data-mbrsh.
          wa_data-msgtx = 'Field Industry sector (mbrsh) is required'.
        WHEN wa_data-mtart.
          wa_data-msgtx = 'Field Material type (mtart) is required'.
        WHEN wa_data-meins.
       wa_data-msgtx = 'Field Base unit of measure (meins) is required'.
        WHEN wa_data-prdha.
          wa_data-msgtx = 'Field Product hierarchy (prdha) is required'.
        WHEN wa_data-labor.
          wa_data-msgtx = 'Field Laboratory design (labor) is required'.
      ENDCASE.
*     Values allowed?
      IF wa_data-msgtx EQ space.
*     Base unit of measure
        SELECT SINGLE * FROM  t006a
               WHERE  spras  = sy-langu
               AND    mseh3  = wa_data-meins.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Base unit of measure does not exist (mseh3)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space.
*     Lab./Office
        SELECT SINGLE * FROM  t024l
               WHERE  labor  = wa_data-labor.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Lab./Office does not exist (labor)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space.
*     Language key
        SELECT SINGLE * FROM  t002
               WHERE  spras  = wa_data-spras_2.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Language key does not exist (spras_2)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space.
*     Product hierarchy
        SELECT SINGLE * FROM  t179
               WHERE  prodh  = wa_data-prdha.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Product hierarchy does not exist (PRDHA)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzpmg IS INITIAL.
*     ProdMatGrp (ABC ind)
        SELECT SINGLE * FROM  zpmg
               WHERE  zzpmg  = wa_data-zzpmg.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'ProdMatGrp (ABC ind) does not exist (zzpmg)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzsf1 IS INITIAL.
*     Sort field 1
        SELECT SINGLE * FROM  zsf1
               WHERE  zzsf1  = wa_data-zzsf1.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Sort field 1 does not exist (ZZSF1)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzsf2 IS INITIAL.
*     Sort field 2
        SELECT SINGLE * FROM  zsf2
               WHERE  zzsf2  = wa_data-zzsf2.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Sort field 2 does not exist (ZZSF2)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzsf3 IS INITIAL.
*     Sort field 3
        SELECT SINGLE * FROM  zsf3
               WHERE  zzsf3  = wa_data-zzsf3.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Sort field 3 does not exist (ZZSF3)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzsf4 IS INITIAL.
*     Sort field 4
        SELECT SINGLE * FROM  zsf4
               WHERE  zzsf4  = wa_data-zzsf4.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Sort field 4 does not exist (ZZSF4)'.
        ENDIF.
      ENDIF.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzsf5 IS INITIAL.
*     Sort field 5
        SELECT SINGLE * FROM  zsf5
               WHERE  zzsf5  = wa_data-zzsf5.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Sort field 5 does not exist (ZZSF5)'.
        ENDIF.
      ENDIF.
*     Drug Code
      IF wa_data-msgtx EQ space AND NOT wa_data-zzdrc IS INITIAL.
        SELECT SINGLE * FROM  zdrc
               WHERE  zzdrc  = wa_data-zzdrc.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Drug Code does not exist (zzdrc)'.
        ENDIF.
      ENDIF.
*     Narco Base
      IF wa_data-msgtx EQ space AND NOT wa_data-zzdkb IS INITIAL.
        SELECT SINGLE * FROM  zdkb
               WHERE  zzdkb  = wa_data-zzdkb.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Narco Base does not exist (zzdkb)'.
        ENDIF.
      ENDIF.
*     Country code, Emscope standard
      IF wa_data-msgtx EQ space AND NOT wa_data-zzcce IS INITIAL.
        SELECT SINGLE * FROM  zcce
               WHERE  zzcce  = wa_data-zzcce.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Country code, Emscope standard does not exist (zzcce)'.
        ENDIF.
      ENDIF.
*     Package size
      IF wa_data-msgtx EQ space AND NOT wa_data-zzpsz IS INITIAL.
        CONDENSE wa_data-zzpsz.
        SELECT SINGLE * FROM  zpsz
               WHERE  zzpsz  = wa_data-zzpsz.
        IF sy-subrc NE 0.
          wa_data-msgtx = 'Package size does not exist (zzpsz)'.
        ENDIF.
      ENDIF.
*     Concentration
      IF wa_data-msgtx EQ space AND NOT wa_data-zzcns IS INITIAL.
        SELECT SINGLE * FROM  zcns
               WHERE  zzcns  = wa_data-zzcns.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Concentration does not exist (ZZCNS)'.
        ENDIF.
      ENDIF.
*     Unit Size
      IF wa_data-msgtx EQ space AND NOT wa_data-zzusz IS INITIAL.
        SELECT SINGLE * FROM  zusz
               WHERE  zzusz  = wa_data-zzusz.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Unit Size does not exist (ZZUSZ)'.
        ENDIF.
      ENDIF.
*     ATC-no.
      IF wa_data-msgtx EQ space AND NOT wa_data-zzatc IS INITIAL.
        SELECT SINGLE * FROM  zatc
               WHERE  zzatc  = wa_data-zzatc.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'ATC-no. does not exist (ZZATC)'.
        ENDIF.
      ENDIF.
*     Multi pack size
      IF wa_data-msgtx EQ space AND NOT wa_data-zzmsz IS INITIAL.
        CONDENSE wa_data-zzmsz.
        SELECT SINGLE * FROM  zmsz
               WHERE  zzmsz  = wa_data-zzmsz.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Multi pack size does not exist (ZZMSZ)'.
        ENDIF.
      ENDIF.
*     Weight Unit
      IF wa_data-msgtx EQ space AND NOT wa_data-gewei IS INITIAL.
        SELECT SINGLE * FROM  t006
               WHERE  msehi  = wa_data-gewei.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Weight Unit does not exist (GEWEI)'.
        ENDIF.
      ENDIF.
*     Volume Unit
      IF wa_data-msgtx EQ space AND NOT wa_data-voleh IS INITIAL.
        SELECT SINGLE * FROM  t006
               WHERE  msehi  = wa_data-voleh.
        IF sy-subrc NE 0.
          wa_data-msgtx =
          'Volume Unit does not exist (VOLEH)'.
        ENDIF.
      ENDIF.
*     EAN for Germany will be entered manually by Cato.
      if wa_data-ean11 ne space and wa_data-msgtx eq space.
        data: l_ean_length type i.
        l_ean_length = strlen( wa_data-ean11 ).
        if l_ean_length ne 13 or wa_data-matnr ne space.
          wa_data-msgtx =
        'Enter EAN numbers manually for Germany and common materials'.
        elseif wa_data-numtp is initial.
          wa_data-msgtx = 'EAN category must be given for EAN number'.
        endif.
      endif.
      if wa_data-ean11 eq space and wa_data-numtp ne space.
*       Makes no sense to have an EAN category when there is no EAN
        clear: wa_data-numtp.
      endif.
    ENDIF.  "   IF NOT wa_data-matnr IS INITIAL.
*   Has material already been migrated?
    IF wa_data-msgtx EQ space and wa_data-msgtyp ne 'W'.
      CLEAR: wa_find_new_material.
      MOVE: wa_data-old_matnr TO wa_find_new_material-matnr_old,
            '54' TO wa_find_new_material-werks.
      CALL FUNCTION 'ZFIND_NEW_MATERIAL_NUMBER'
           EXPORTING
                get_from_marc = space
           CHANGING
                wa_data       = wa_find_new_material.
      IF NOT wa_find_new_material-matnr IS INITIAL.
        CONCATENATE: 'Material already created:'
                     wa_find_new_material-matnr
          INTO wa_data-msgtx
          SEPARATED BY space.
        wa_data-msgtyp = 'E'.
      ENDIF.
    ENDIF.
*   Set all messages that are not Warning to Error
    IF wa_data-msgtx NE space AND wa_data-msgtyp EQ space.
      MOVE: 'E' TO wa_data-msgtyp.
    ENDIF.
    MODIFY i_data FROM wa_data.
  ENDLOOP.
ENDFORM.                    " check_entries
*&      Module  USER_COMMAND_0100  INPUT
*       text
MODULE user_command_0100 INPUT.
  DATA: local_commands.
  PERFORM user_commands_local CHANGING local_commands.
  IF local_commands EQ 'X'.
*   local user command has been executed - clear ok_code
    CLEAR ok_code.
  ELSE.
    PERFORM user_commands.
  ENDIF.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&      Form  user_commands_local
*       text
*      <--P_LOCAL_COMMANDS  text
FORM user_commands_local CHANGING p_local_commands.
* Add your own user commands here and overwrite default handling if
* necessary
  DATA: local_ok TYPE ok.
  local_commands = 'X'.
  local_ok = ok_code.
  CASE local_ok.
    WHEN OTHERS.
      CLEAR: local_commands.
  ENDCASE.
ENDFORM.                    " user_commands_local
Pls treat it as urgent.
I ll reward for usefull response.
Thx in Adv.
Bobby

Hi,
   I didn't recieve any response from you regarding issues in upload program.
   Could you pls send some solution for this issue ?
   Pls treat it as urgent.
Thx in Adv.
Bobby

Similar Messages

  • Download & Upload of SAP ABAP Queries.

    Hi All,
    Can anybody please guide How to Download & Upload SAP ABAP Queries.
    Waiting for positive reply.
    Thanks in advance for help.
    Regards,
    MAM

    Program RSAQR3TR is the standard program.
    You can simply download your infoset/query from your source system and upload the  file into your destination system.
    It should works.
    If, for some reason you are not authorized to upload/download, you can create a transport and import it using the usual way.
    Best regards.

  • Module Pool Program(SAP-ABAP)

    Hi,
      I am trying to put CHAIN..ENDCHAIN logic in PAI module
      to validate screen.
      How sd i use CHAIN..ENDCHAIN ?
      Pls guide me with suitable example.
      I m waiting for ur reply........
    Thanx in Adv.
    Prabhas

    HI,
    See the thread:
    Re: Chain - Endchain  - Selection-Screen
    i copied the below data from SAPHELP for your sake,
    To ensure that one or more PAI modules are only called when several screen fields meet a particular condition, you must combine the calls in the flow logic to form a processing chain. You define processing chains as follows:
    CHAIN.
    ENDCHAIN.
    All flow logic statements between CHAIN and ENDCHAIN belong to a processing chain. The fields in the various FIELD statements are combined, and can be used in shared conditions.
    CHAIN.
    FIELD: <f1>, <f 2>,...
    MODULE <mod1> ON CHAIN-INPUT|CHAIN-REQUEST.
    FIELD: <g1>, <g 2>,...
    MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
    ENDCHAIN.
    The additions ON CHAIN-INPUT and ON CHAIN-REQUEST work like the additions ON INPUT and ON REQUEST that you use for individual fields. The exception is that the module is called whenever at least one of the fields listed in a preceding FIELD statement within the chain meets the condition. So <mod1> is called when one of the fields <fi> meets the condition. <mod2> is called when one of the fields <f i> or <g i> meets the condition.
    Within a processing chain, you can combine individual FIELD statements with a MODULE statement to set a condition for a single field within the chain:
    CHAIN.
    FIELD: <f1>, <f 2>,...
    FIELD <f> MODULE <mod1> ON INPUT|REQUEST|*-INPUT
    |CHAIN-INPUT|CHAIN-REQUEST.
    MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
    ENDCHAIN.
    The module <mod1> is called when screen field <f> meets the specified condition for individual fields. <mod2> is called when one of the fields <fi> or <f> meets the condition. If you use the addition ON CHAIN-INPUT or ON CHAIN-REQUEST with FIELD <f>, the condition also applies to the entire chain and module <mod1> and <mod2> are both called.
    <i>
    Check this out
    http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbabbd35c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/d1/801ca2454211d189710000e8322d00/frameset.htm</i>
    Regards
    anver
    Message was edited by: Anversha s

  • Module Program (SAP-ABAP)

    Hi Friends,
         In a module pool program , how to add a field ,so that it should display the field name along with its value  in output ? pls guide me with small example .pls treat this as urgent .
    Thx and Regds,
    bapi

    Hi bobby,
    1. Goto layout of our program
    2. click on GetfromDictionary tab or Get from Program tab depending upon ur requirement. for eg: if u want to retrieve carrid from sflight and display i output then go to GetfromDictionary.
    3. choose the fields that u want
    4. they will appear in your screen.. then set the properties and use in your program accordingly...
    I think this will help you..
    Regards,
    Prem Raj

  • Material Master upload Programe

    Hi anybody,
    I developed Material master upload programe in ABAP. Material is uploaded. but more than 18 characters materials is upload upto 18 characters last character is "!".
    Ex: SET SCREW M12X50MM L    - I want upload this material.
           But SAP takes automatically like SET SCREW M12X50M! 18 th character is "!" symbol.
    how do i resolve this problem. I want upload more than 18 characters.
    anybody please tell me this issue.
    Tks,
    S.Muthu.

    what are you talking about material code or material discription
    rgds
    Rajesh

  • Problem while fetching more records in SAP ABAP report program

    Hello Frinds,
    I have SAP ABAP report program which fetches data from usr02 table
    Now, program is working fine with less number of records, bot in production there are more than 200000 records and either report gets timed out or there is run time error like buffer area not available.
    Below is the fetch statement
    SELECT bname FROM usr02 INTO TABLE lt_user
    So, do I need to take records in small chunks, I do not think it is needed as I have worked on number of othere databases where there are number of records in single fetch statement and database itself take care of this.
    Please provide me some approach to resolve this problem.

    This will be very difficult for you.....
    Since you are getting a time out error....it looks like, you are runnning this report in foreground....................
    Try running it in background it will work...
    ELSE....you have to fetch in small chunks....but the question is how will you do it. Since the USR02 only has BNAME as primary key...
    Either put the BNAME as part of selection screen and fetch the data.....it will solve your problem....
    Only fetch for those BNAME which is entered in the selection screen...
    Hope it helps!

  • Can we rename the existing z-program in SAP-abap

    Can we rename the existing z-program in SAP-abap. If yes, than how it can be done. But actually we don't want to copy the code from the existing z-program to the new one which will be created. We just want to make rename the existing z-program in SAP-abap. Please suggest, how it can be?
    Edited by: akg.amit on Oct 20, 2010 7:40 AM

    Hi Amit,
    In SE38 Open the program with old name. Press the RENAME button. In the Target program field provide the new name of program name. This new name for program should not exist in your system. Click on the Rename button. It will give a pop-up where it ask if you want to rename any includes in that program. I assume you dont have any includes in the program. So press the Rename button again without selecting the "Include" check box. Now it will ask for the Transport request. Provide your Transport request number. The program will be renamed.
    Regards,
    Immanuel.

  • ABAP Objects: Introduction to Programming SAP Applications

    Hi, does anybody knows any tutorial that would explain me how to install and make available in my SAP installation the examples and database that comes with this book ABAP Objects: Introduction to Programming SAP Applications
    The point is that i couldn't install the version of SAP BASIS that came with the book ( it was SAPmini BASIS 4.6D) on my Windows XP. Instead, i've installed Mini WAS 6.20 with Front-End 6.40 and i'd like to use it while studying the same book.
    any ideas?
    sorry, may be it could sound obviuos for some of you, but i'm complete SAP virgin

    Not sure if this data generator is available in 6.20 or now.  SAPBC_TOOLS_GENERATOR_NEW  Run this program to generate the data for the FLIGHT tables.
    Then you should check out the example programs which start with BCALV*   and also check out transaction code DWDM.
    Regards,
    Rich Heilman

  • Add Voting buttons in MS Outlook from SAP ABAP program

    I have a requirment where SAP ABAP program will send an email.
    I need to have the voting buttons (yes/no) in the email. It does not have to be in the content of the email but the typically voting buttons that we can add to the MS Outlook email.
    If there is someone who can give me the steps and documentations, greatly appreciate.
    The main critieria is that it has to be MS outlook.

    Hi,
    here is the solution i think.
    INCLUDE ole2incl .
    DATA: ole_outlook  TYPE ole2_object,
          ole_CItem    TYPE ole2_object,
          ole_body      TYPE string.
      CREATE OBJECT ole_outlook 'Outlook.Application'.
      CALL METHOD OF ole_outlook 'CreateItem' = ole_CItem
        EXPORTING #1 = 0.
      SET PROPERTY OF ole_CItem 'To' = 'receiver @ mail.com'.
      SET PROPERTY OF ole_CItem 'Subject' = 'E-mail Title'.
      CALL METHOD OF ole_CItem 'Display'.
      CONCATENATE ole_body
                  'Dear Sir/Madam,'
                  cl_abap_char_utilities=>newline
                  cl_abap_char_utilities=>newline
        INTO ole_body.
    SET PROPERTY OF ole_CItem 'Body' = ole_body.
    CALL METHOD OF ole_CItem 'ATTACHMENTS' = ATTS.
    CALL METHOD OF ATTS 'ADD'
    EXPORTING #1 = 'C:\File_Location\File_name.extension'.
    SET PROPERTY  OF ole_CItem 'VotingOptions' = 'Yes;No'.
    FREE OBJECT ole_outlook.
    *you can replace the voting option to what you want, for example 'Yes;No' or 'Approve;Reject'.

  • Wireless using SAP ABAP Report programming

    Hi All Boss,
    I am doing my project Wireless program using SAP ABAP
    I need that project.
    so please send me wireless program for sap abap and screen shot.
    reply me urgent....
    Please donot forgot to all..

    This is not a program writing service.

  • What type pf programming language is SAP ABAP?

    Hiii
    I would like to know what type of programming language is SAP ABAP .  Is it real-time programming or parallel programming??
    please advise??

    Hi,
    It all depends on how you write your programs. You can make your programs run real time(Online-enhancements/interfaces); or Use Parallel processing(Using Function module tasks concept)
    Hope this helps
    Regards
    Shiva

  • Need to create a mass upload program for appraisal document creation for multiple employee in abap hr

    Hi Expertise,
    I need to create a mass upload program for appraisal document creation for manager and his multiple employee
    at a time using tcode appcreate.
    Please help me out.
    Best regards,
    Priyaranjan

    Hi,
    I have done appraisal document creation for bulk using txt file.
    this fm used for single for creation in standard tcode (phap_prepare):  'WZ_HRHAP_0DOC_WZ01_START'.
    So create ztcode  usinh this fm for single form then record BDC for this tcode and called this tcode in that bdc for bulk creation .
    While recording for single I have used manual option instead of automatic .

  • Regarding training and placement program for SAP-ABAP at simens

    Dear all,
    i am an MCA completed  fresher planning to join in simens for SAP-ABAP module. I have quires like
      1 After training whether they will provide placement ?
      2 How much will be the fees for that module?
      and last what is duration for that module.
    i welcome all of you for your valuable suggestions......
    its urgent

    Hi vishnuvardhan,
    Here are answers to ur queries
    After training whether they will provide placement ?
    No, Simens is just a training partner of SAP.
    How much will be the fees for that module?
    Cost for certification is 28,000 rs, but if u go for training and certification both it will cost more. Not sure of the exact amount.
    what is duration for that module
    Duration is 1 month.

  • Upload and Download ABAP Source Code

    This is a program that I have had kicking around for a couple of years in various incarnations.
    Source Code Listing
    Report: ZKBPROGS *
    Function : Up/Download ABAP reports complete with texts *
    - this program does not update TRDIR with the *
    TRDIR entries that are in the program uploaded. Instead, *
    current users stats are used. *
    - this program allows selection of reports from a list or *
    a single report can be tuped in and uploaded *
    - this program also updates TADIR so that a development class*
    is assigned to the program *
    - this program checks to see if the program already has a *
    TRDIR entry, and if it does, warns the user *
    - this program will save/restore the program documenation too*
    REPORT ZKBPROGS
    NO STANDARD PAGE HEADING
    LINE-SIZE 255.
    Declare Database Objects *
    tables:
    DOKIL,
    TRDIR.
    Constants*
    CONSTANTS:
    MC_TRDIR_IDENTIFIER(72) TYPE C VALUE '%&%& RDIR',
    MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',
    MC_TEXT_IDENTIFIER(72) TYPE C VALUE '%&%& TEXP',
    MC_THEAD_IDENTIFIER(72) TYPE C VALUE '%&%& HEAD',
    MC_DOC_IDENTIFIER(72) TYPE C VALUE '%&%& DOKL',
    MC_TRDIR_SHORT(4) TYPE C VALUE 'RDIR',
    MC_REPORT_SHORT(4) TYPE C VALUE 'REPO',
    MC_TEXT_SHORT(4) TYPE C VALUE 'TEXP',
    MC_THEAD_SHORT(4) TYPE C VALUE 'HEAD',
    MC_DOC_SHORT(4) TYPE C VALUE 'DOKP'.
    Declare Module level data structures *
    DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,
    LINE(72) TYPE C,
    END OF MTAB_PROGRAM_SOURCE.
    DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.
    DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.
    DATA: MSTR_THEAD LIKE THEAD.
    DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,
    LINE(275) TYPE C,
    END OF MTAB_PROGRAM_FILE.
    DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,
    NAME LIKE TRDIR-NAME,
    DESC(72) TYPE C,
    SAVENAME LIKE RLGRAP-FILENAME,
    END OF MTAB_DIRECTORY.
    DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,
    LINE(255) TYPE C,
    END OF MTAB_PROGRAM_DOCUMENTATION.
    Selection Screen *
    *-- Options for upload/download of programs
    SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.
    PARAMETERS:
    RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'. " Download reports
    SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.
    SELECT-OPTIONS:
    S_NAME FOR TRDIR-NAME, " Program Name
    S_SUBC FOR TRDIR-SUBC " Program Type
    DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default
    S_CNAM FOR TRDIR-CNAM " Created by
    DEFAULT SY-UNAME,
    S_UNAM FOR TRDIR-UNAM, " Last Changed by
    S_CDAT FOR TRDIR-CDAT, " Creation date
    S_UDAT FOR TRDIR-UDAT. " Last update date
    SELECTION-SCREEN END OF BLOCK FRM_TRDIR.
    *-- Options for uploading programs
    PARAMETERS:
    RB_UP RADIOBUTTON GROUP UDL. " Upload reports
    SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.
    PARAMETERS:
    RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.
    SELECTION-SCREEN END OF LINE.
    PARAMETERS:
    RB_LIST RADIOBUTTON GROUP HOW.
    SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.
    SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.
    *-- Options for up/downloading programs
    SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.
    PARAMETERS:
    RB_DOS RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local
    RB_UNIX RADIOBUTTON GROUP FIL, " Save to UNIX
    P_PATH LIKE RLGRAP-FILENAME " Path to save files to
    DEFAULT 'c:\temp\'.
    SELECTION-SCREEN END OF BLOCK FRM_FILEN.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.
    CALL FUNCTION 'F4_PROGRAM'
    EXPORTING
    OBJECT = S_NAME-LOW
    SUPPRESS_SELECTION = 'X'
    IMPORTING
    RESULT = S_NAME-LOW
    EXCEPTIONS
    OTHERS = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.
    CALL FUNCTION 'F4_PROGRAM'
    EXPORTING
    OBJECT = S_NAME-HIGH
    SUPPRESS_SELECTION = 'X'
    IMPORTING
    RESULT = S_NAME-HIGH
    EXCEPTIONS
    OTHERS = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.
    PERFORM GET_NAME USING 'S_UNAM-LOW'
    CHANGING S_UNAM-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.
    PERFORM GET_NAME USING 'S_UNAM-HIGH'
    CHANGING S_UNAM-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.
    PERFORM GET_NAME USING 'S_CNAM-LOW'
    CHANGING S_CNAM-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.
    PERFORM GET_NAME USING 'S_CNAM-HIGH'
    CHANGING S_CNAM-HIGH.
    TOP-OF-PAGE.
    IF RB_LIST = 'X'.
    FORMAT COLOR COL_HEADING.
    NEW-LINE.
    WRITE: AT 3 TEXT-H01,
    AT 15 TEXT-H03.
    FORMAT COLOR OFF.
    ENDIF.
    AT LINE-SELECTION.
    CHECK RB_LIST = 'X'. " only do in list mode
    READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.
    *-- Read file into an internal table
    PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
    USING MTAB_DIRECTORY-SAVENAME.
    *-- Split table into TADIR entry, report lines, and report text
    PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
    MTAB_PROGRAM_SOURCE
    MTAB_PROGRAM_TEXTS
    MTAB_PROGRAM_DOCUMENTATION
    CHANGING TRDIR
    MSTR_THEAD.
    *-- Save all of the data
    PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
    MTAB_PROGRAM_TEXTS
    MTAB_PROGRAM_DOCUMENTATION
    USING TRDIR
    MSTR_THEAD.
    Start of processing *
    START-OF-SELECTION.
    FORMAT COLOR COL_NORMAL.
    IF RB_DOWN = 'X'.
    PERFORM DOWNLOAD_REPORTS.
    ELSEIF RB_UP = 'X'.
    PERFORM UPLOAD_REPORTS.
    ENDIF.
    END-OF-SELECTION.
    IF RB_DOWN = 'X'.
    CONCATENATE P_PATH
    'directory.txt'
    INTO P_PATH.
    PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY
    USING P_PATH.
    ENDIF.
    FORM UPLOAD_REPORTS *
    FORM UPLOAD_REPORTS.
    *-- Can upload a reports entered in selection criteria or
    *-- select from a list. List can be from index.txt in same directory
    *-- (created by the download) or by reading the first line of each file
    *-- in the directory.
    IF RB_FILE = 'X'. " Upload single program from a file
    *-- Read file into an internal table
    PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
    USING P_PATH.
    *-- Split table into TADIR entry, report lines, and report text
    PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
    MTAB_PROGRAM_SOURCE
    MTAB_PROGRAM_TEXTS
    MTAB_PROGRAM_DOCUMENTATION
    CHANGING TRDIR
    MSTR_THEAD.
    *-- Save all of the data
    PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
    MTAB_PROGRAM_TEXTS
    MTAB_PROGRAM_DOCUMENTATION
    USING TRDIR
    MSTR_THEAD.
    ELSEIF RB_LIST = 'X'. " Show list for user to choose from
    *-- get list of report names/descriptions from directory text
    CONCATENATE P_PATH
    'directory.txt'
    INTO P_PATH.
    PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY
    USING P_PATH.
    SORT MTAB_DIRECTORY.
    *-- Write out list of report names/descriptions
    LOOP AT MTAB_DIRECTORY.
    WRITE:
    / MTAB_DIRECTORY-NAME UNDER TEXT-H01,
    MTAB_DIRECTORY-DESC UNDER TEXT-H03,
    MTAB_DIRECTORY-SAVENAME.
    ENDLOOP.
    *-- Process user selections for reports to upload.
    ENDIF.
    ENDFORM. " upload_reports
    FORM DOWNLOAD_REPORTS *
    From the user selections, get all programs that meet the *
    criteria, and save them in ftab_program_directory. *
    Also save the report to disk. *
    FORM DOWNLOAD_REPORTS.
    DATA:
    LC_FULL_FILENAME LIKE RLGRAP-FILENAME.
    *-- The table is put into an internal table because the program will
    *-- abend if multiple transfers to a dataset occur within a SELECT/
    *-- ENDSELCT (tested on 3.1H)
    SELECT * FROM TRDIR
    INTO TABLE MTAB_PROGRAM_TRDIR
    WHERE NAME IN S_NAME
    AND SUBC IN S_SUBC
    AND CNAM IN S_CNAM
    AND UNAM IN S_UNAM
    AND CDAT IN S_CDAT
    AND UDAT IN S_UDAT.
    LOOP AT MTAB_PROGRAM_TRDIR.
    *-- Clear out text and source code tables
    CLEAR:
    MTAB_PROGRAM_FILE,
    MTAB_PROGRAM_SOURCE,
    MTAB_PROGRAM_TEXTS,
    MTAB_PROGRAM_DOCUMENTATION.
    REFRESH:
    MTAB_PROGRAM_FILE,
    MTAB_PROGRAM_SOURCE,
    MTAB_PROGRAM_TEXTS,
    MTAB_PROGRAM_DOCUMENTATION.
    *-- Get the report
    READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.
    *-- Get the text for the report
    READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.
    *-- Get the documentation for the report
    CLEAR DOKIL.
    SELECT * UP TO 1 ROWS FROM DOKIL
    WHERE ID = 'RE'
    AND OBJECT = MTAB_PROGRAM_TRDIR-NAME
    AND LANGU = SY-LANGU
    AND TYP = 'E'
    ORDER BY VERSION DESCENDING.
    ENDSELECT.
    *-- Documentation exists for this object
    IF SY-SUBRC = 0.
    CALL FUNCTION 'DOCU_READ'
    EXPORTING
    ID = DOKIL-ID
    LANGU = DOKIL-LANGU
    OBJECT = DOKIL-OBJECT
    TYP = DOKIL-TYP
    VERSION = DOKIL-VERSION
    IMPORTING
    HEAD = MSTR_THEAD
    TABLES
    LINE = MTAB_PROGRAM_DOCUMENTATION
    EXCEPTIONS
    OTHERS = 1.
    ENDIF.
    *-- Put the report code and texts into a single file
    *-- Put the identifier line in so that the start of the TRDIR line
    *-- is marked
    CONCATENATE MC_TRDIR_IDENTIFIER
    MTAB_PROGRAM_TRDIR-NAME
    INTO MTAB_PROGRAM_FILE-LINE.
    APPEND MTAB_PROGRAM_FILE.
    *-- Add the TRDIR line
    MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.
    APPEND MTAB_PROGRAM_FILE.
    *-- Put the identifier line in so that the start of the report code
    *-- is marked
    CONCATENATE MC_REPORT_IDENTIFIER
    MTAB_PROGRAM_TRDIR-NAME
    INTO MTAB_PROGRAM_FILE-LINE.
    APPEND MTAB_PROGRAM_FILE.
    *-- Add the report code
    LOOP AT MTAB_PROGRAM_SOURCE.
    MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.
    APPEND MTAB_PROGRAM_FILE.
    ENDLOOP.
    *-- Put the identifier line in so that the start of the report text
    *-- is marked
    CONCATENATE MC_TEXT_IDENTIFIER
    MTAB_PROGRAM_TRDIR-NAME
    INTO MTAB_PROGRAM_FILE-LINE.
    APPEND MTAB_PROGRAM_FILE.
    *-- Add the report texts
    LOOP AT MTAB_PROGRAM_TEXTS.
    MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.
    APPEND MTAB_PROGRAM_FILE.
    ENDLOOP.
    *-- Put the identifier line in so that the start of the THEAD record
    *-- is marked
    CONCATENATE MC_THEAD_IDENTIFIER
    MTAB_PROGRAM_TRDIR-NAME
    INTO MTAB_PROGRAM_FILE-LINE.
    APPEND MTAB_PROGRAM_FILE.
    MTAB_PROGRAM_FILE = MSTR_THEAD.
    APPEND MTAB_PROGRAM_FILE.
    *-- Put the identifier line in so that the start of the report
    *-- documentation is marked
    CONCATENATE MC_DOC_IDENTIFIER
    MTAB_PROGRAM_TRDIR-NAME
    INTO MTAB_PROGRAM_FILE-LINE.
    APPEND MTAB_PROGRAM_FILE.
    *-- Add the report documentation
    LOOP AT MTAB_PROGRAM_DOCUMENTATION.
    MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.
    APPEND MTAB_PROGRAM_FILE.
    ENDLOOP.
    *-- Make the fully pathed filename that report will be saved to
    CONCATENATE P_PATH
    MTAB_PROGRAM_TRDIR-NAME
    '.txt'
    INTO LC_FULL_FILENAME.
    PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE
    USING LC_FULL_FILENAME.
    *-- Write out message with Program Name/Description
    READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.
    IF SY-SUBRC = 0.
    MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
    MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.
    MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
    APPEND MTAB_DIRECTORY.
    WRITE: / MTAB_PROGRAM_TRDIR-NAME,
    MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.
    ELSE.
    MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
    MTAB_DIRECTORY-DESC = 'No description available'.
    MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
    APPEND MTAB_DIRECTORY.
    WRITE: / MTAB_PROGRAM_TRDIR-NAME.
    ENDIF.
    ENDLOOP.
    ENDFORM. " BUILD_PROGRAM_DIRECTORY
    FORM SAVE_TABLE_TO_FILE *
    --> FTAB_TABLE *
    --> F_FILENAME *
    FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE
    USING F_FILENAME.
    IF RB_DOS = 'X'. " Save file to presentation server
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
    FILENAME = F_FILENAME
    FILETYPE = 'ASC'
    TABLES
    DATA_TAB = FTAB_TABLE
    EXCEPTIONS
    OTHERS = 4.
    IF SY-SUBRC NE 0.
    WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
    F_FILENAME COLOR COL_NEGATIVE.
    ENDIF.
    ELSE. " Save file to application server
    OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.
    IF SY-SUBRC = 0.
    LOOP AT FTAB_TABLE.
    TRANSFER FTAB_TABLE TO F_FILENAME.
    IF SY-SUBRC NE 0.
    WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,
    F_FILENAME COLOR COL_NEGATIVE.
    ENDIF.
    ENDLOOP.
    ELSE.
    WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
    F_FILENAME COLOR COL_NEGATIVE.
    ENDIF.
    ENDIF. " End RB_DOS
    ENDFORM. " SAVE_PROGRAM
    FORM READ_REPORT_FROM_DISK *
    Read report into internal table. Can read from local or *
    remote computer *
    FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE
    USING F_FILENAME.
    DATA:
    LC_MESSAGE(128) TYPE C.
    CLEAR FTAB_TABLE.
    REFRESH FTAB_TABLE.
    IF RB_DOS = 'X'.
    TRANSLATE F_FILENAME USING '/\'. " correct slash for Dos PC file
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    FILENAME = F_FILENAME
    FILETYPE = 'ASC'
    TABLES
    DATA_TAB = FTAB_TABLE
    EXCEPTIONS
    CONVERSION_ERROR = 1
    FILE_OPEN_ERROR = 2
    FILE_READ_ERROR = 3
    INVALID_TABLE_WIDTH = 4
    INVALID_TYPE = 5
    NO_BATCH = 6
    UNKNOWN_ERROR = 7
    OTHERS = 8.
    IF SY-SUBRC >< 0.
    WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.
    ENDIF.
    ELSEIF RB_UNIX = 'X'.
    TRANSLATE F_FILENAME USING '\/'. " correct slash for unix
    OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE.
    IF SY-SUBRC = 0.
    DO.
    READ DATASET F_FILENAME INTO FTAB_TABLE.
    IF SY-SUBRC = 0.
    APPEND FTAB_TABLE.
    ELSE.
    EXIT.
    ENDIF.
    ENDDO.
    CLOSE DATASET F_FILENAME.
    ELSE.
    WRITE: / 'Error reading file from remote computer'
    COLOR COL_NEGATIVE,
    / LC_MESSAGE,
    / F_FILENAME.
    SY-SUBRC = 4.
    ENDIF.
    ENDIF.
    ENDFORM. " READ_REPORT_FROM_DISK
    FORM SPLIT_INCOMING_FILE *
    --> FTAB_PROGRAM_FILE *
    --> FTAB_PROGRAM_SOURCE *
    --> ` *
    --> FTAB_PROGRAM_TEXTS *
    FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE
    STRUCTURE MTAB_PROGRAM_FILE
    FTAB_PROGRAM_SOURCE
    STRUCTURE MTAB_PROGRAM_SOURCE
    FTAB_PROGRAM_TEXTS
    STRUCTURE MTAB_PROGRAM_TEXTS
    FTAB_PROGRAM_DOCUMENTATION
    STRUCTURE MTAB_PROGRAM_DOCUMENTATION
    CHANGING FSTR_TRDIR
    FSTR_THEAD.
    DATA:
    LC_DATATYPE(4) TYPE C, " Type of data, REPO, TEXP, RDIR
    LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.
    LOOP AT FTAB_PROGRAM_FILE.
    LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.
    CASE LC_PROGRAM_FILE(9).
    WHEN MC_TRDIR_IDENTIFIER.
    LC_DATATYPE = MC_TRDIR_SHORT.
    WHEN MC_REPORT_IDENTIFIER.
    LC_DATATYPE = MC_REPORT_SHORT.
    WHEN MC_TEXT_IDENTIFIER.
    LC_DATATYPE = MC_TEXT_SHORT.
    WHEN MC_DOC_IDENTIFIER.
    LC_DATATYPE = MC_DOC_SHORT.
    WHEN MC_THEAD_IDENTIFIER.
    LC_DATATYPE = MC_THEAD_SHORT.
    WHEN OTHERS. " Actual contents of report, trdir, or text
    CASE LC_DATATYPE.
    WHEN MC_TRDIR_SHORT.
    FSTR_TRDIR = FTAB_PROGRAM_FILE.
    WHEN MC_REPORT_SHORT.
    FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.
    APPEND FTAB_PROGRAM_SOURCE.
    WHEN MC_TEXT_SHORT.
    FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.
    APPEND FTAB_PROGRAM_TEXTS.
    WHEN MC_THEAD_SHORT.
    FSTR_THEAD = FTAB_PROGRAM_FILE.
    WHEN MC_DOC_SHORT.
    FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.
    APPEND FTAB_PROGRAM_DOCUMENTATION.
    ENDCASE.
    ENDCASE.
    ENDLOOP.
    ENDFORM. " SPLIT_INCOMING_FILE
    FORM INSERT_NEW_REPORT*
    --> FTAB_PROGRAM_SOURCE *
    --> FTAB_PROGRAM_TEXTS *
    --> F_TRDIR *
    FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE
    STRUCTURE MTAB_PROGRAM_SOURCE
    FTAB_PROGRAM_TEXTS
    STRUCTURE MTAB_PROGRAM_TEXTS
    FTAB_PROGRAM_DOCUMENTATION
    STRUCTURE MTAB_PROGRAM_DOCUMENTATION
    USING FSTR_TRDIR LIKE TRDIR
    FSTR_THEAD LIKE MSTR_THEAD.
    DATA:
    LC_OBJ_NAME LIKE E071-OBJ_NAME,
    LC_LINE2(40) TYPE C,
    LC_ANSWER(1) TYPE C.
    *-- read trdir to see if the report already exists, if it does, prompt
    *-- user to overwrite or abort.
    SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.
    IF SY-SUBRC = 0. " Already exists
    CONCATENATE 'want to overwrite report'
    FSTR_TRDIR-NAME
    INTO LC_LINE2 SEPARATED BY SPACE.
    CONCATENATE LC_LINE2
    INTO LC_LINE2.
    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
    DEFAULTOPTION = 'N'
    TEXTLINE1 = 'The selected report already exists, do you'
    TEXTLINE2 = LC_LINE2
    TITEL = 'Report already exists'
    CANCEL_DISPLAY = SPACE
    IMPORTING
    ANSWER = LC_ANSWER
    EXCEPTIONS
    OTHERS = 1.
    ELSE.
    LC_ANSWER = 'J'.
    ENDIF.
    IF LC_ANSWER = 'J'.
    *-- Create the TADIR entry. (TRDIR entry created by INSERT REPORT)
    LC_OBJ_NAME = TRDIR-NAME.
    CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'
    EXPORTING
    WI_E071_PGMID = 'R3TR'
    WI_E071_OBJECT = 'PROG'
    WI_E071_OBJ_NAME = LC_OBJ_NAME
    WI_TADIR_DEVCLASS = '$TMP'
    EXCEPTIONS
    EXIT = 3
    OTHERS = 4.
    IF SY-SUBRC = 0.
    *-- Create Report
    INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.
    *-- Create Texts
    INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS
    LANGUAGE SY-LANGU.
    *-- Save Documentation
    CALL FUNCTION 'DOCU_UPDATE'
    EXPORTING
    HEAD = FSTR_THEAD
    STATE = 'A'
    TYP = 'E'
    VERSION = '1'
    TABLES
    LINE = FTAB_PROGRAM_DOCUMENTATION
    EXCEPTIONS
    OTHERS = 1.
    ELSE.
    WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,
    'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,
    FSTR_TRDIR-NAME, 'was not loaded into SAP.'
    COLOR COL_NEGATIVE INTENSIFIED OFF.
    ENDIF.
    ELSE.
    WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,
    'was not uploaded into SAP. Action cancelled by user'
    COLOR COL_NEGATIVE INTENSIFIED OFF.
    ENDIF.
    ENDFORM. " INSERT_NEW_REPORT
    FORM GET_NAME *
    --> VALUE(F_FIELD) *
    --> F_NAME *
    FORM GET_NAME USING VALUE(F_FIELD)
    CHANGING F_NAME.
    DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
    LC_PROG LIKE D020S-PROG,
    LC_DNUM LIKE D020S-DNUM.
    TRANSLATE F_FIELD TO UPPER CASE.
    refresh ltab_fields.
    LTAB_FIELDS-FIELDNAME = F_FIELD.
    append ltab_fields.
    LC_PROG = SY-REPID .
    LC_DNUM = SY-DYNNR .
    CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
    DYNAME = LC_PROG
    DYNUMB = LC_DNUM
    TABLES
    dynpfields = ltab_fields
    EXCEPTIONS
    OTHERS = 01.
    read table ltab_fields index 1.
    IF SY-SUBRC EQ 0.
    F_NAME = LTAB_FIELDS-FIELDVALUE.
    refresh ltab_fields.
    ENDIF.
    CALL FUNCTION 'F4_USER'
    EXPORTING
    OBJECT = F_NAME
    IMPORTING
    RESULT = F_NAME.
    ENDFORM. " GET_NAME
    Program Texts
    DIR File Download Options (File Selection)
    FIL File Options
    FNA Enter filename below (under File Options)
    H01 Prog Name
    H03 Program Description
    SNG Upload a single file
    UDL Upload to SAP/Download from SAP
    UPL File Upload Options
    R Backup/Restore program source code with texts
    P_PATH Path to save programs to
    RB_DOS Files on local computer
    RB_DOWN Download Programs
    RB_FILE Upload a single file
    RB_LIST Select program(s) from a list
    RB_UNIX Files on remote computer
    RB_UP Upload Programs to SAP
    S_CDAT Date Created
    S_CNAM Created by UserID
    S_NAME Program Name
    S_SUBC Program Type
    S_UDAT Date Changed
    S_UNAM Last Changed by UserID

    Hi
    you can use SAPLink for this
    http://code.google.com/p/saplink/
    Abhi

  • HCP tcode PA40 Upload program failing to move to next record.

    Dear All
    I have written and upload program for HCM tcode PA40 and the program is fine but only inserting one record and is failing to pick the next records in a loop. I dont know whats the problem i know the process have many screens, please help me, i have tried to research not yet found the answer yet.
    Thank you for your assistance
    Here is my Upload program
    *& Report  ZUPLOADEMPHIRING
    REPORT  ZUPLOADEMPHIRING.
    include bdcrecx1.
    PARAMETERS: p_file TYPE  rlgrap-filename.
               x_endrow TYPE i .
    DATA:  xdate(10).
    DATA: Fullname type string.
    DATA:        x_begrow  TYPE i  VALUE 2,
                x_begcol  TYPE i VALUE 1,
                x_endcol  TYPE i VALUE 17,
                 x_endrow TYPE i VALUE 3.
    TYPES: BEGIN OF t_datatab  ,
            FromDate(10),
            Reasonforaction(2),
            Position(8),
            PersonalArea(4),
            EmployeeGroup(1),
            EmployeeSubGroup(2),
            SubArea(4),
            PayrolArea(2),
            Title(5),
            Lastname(40),
            Firstname(40),
            BirtDate(10),
            Nationality(3),
            Group(1),
            Level(1),
            BankKey(15),
            BankAccount(18),
           END OF t_datatab.
    DATA: BEGIN OF t_datatabfinal OCCURS 0,
            FromDate(10),
            Reasonforaction(2),
            Position(8),
            PersonalArea(4),
            EmployeeGroup(1),
            EmployeeSubGroup(2),
            SubArea(4),
            PayrolArea(2),
            Title(5),
            Lastname(40),
            Firstname(40),
            BirtDate(10),
            Nationality(3),
            Group(1),
            Level(1),
            BankKey(15),
            BankAccount(18),
          END OF t_datatabfinal.
    DATA: BEGIN OF it_record OCCURS 0,
            FromDate(10),
            Reasonforaction(2),
            Position(8),
            PersonalArea(4),
            EmployeeGroup(1),
            EmployeeSubGroup(2),
            SubArea(4),
            PayrolArea(2),
            Title(5),
            Lastname(40),
            Firstname(40),
            BirtDate(10),
            Nationality(3),
            Group(1),
            Level(1),
            BankKey(15),
            BankAccount(18),
            END OF it_record.
    DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,
    gd_currentrow TYPE i,
    it_datatab TYPE STANDARD TABLE OF t_datatab,
    wa_datatab TYPE t_datatab.
    AT SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'F4_FILENAME'  "
       EXPORTING
         FIELD_NAME          = 'P_FILE '
       IMPORTING
         FILE_NAME           = p_file.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
      EXPORTING
        PROGRAM_NAME        = SYST-REPID
        DYNPRO_NUMBER       = SYST-DYNNR
        FIELD_NAME          = ' '
        STATIC              = ' '
        MASK                = ' '
       CHANGING
         FILE_NAME           =
      EXCEPTIONS
        MASK_TOO_LONG       = 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.
    START-OF-SELECTION.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          filename    = p_file
          i_begin_col = x_begcol
          i_begin_row = x_begrow   "Column header not required
          i_end_col   = x_endcol
          i_end_row   = x_endrow
        TABLES
          intern      = itab.
    Sort table by rows and colums
      SORT itab BY row col.
    Get first row retrieved
      READ TABLE itab INDEX 1.
    Set first row retrieved to current row
      gd_currentrow = itab-row.
      clear: t_datatabfinal.
      refresh t_datatabfinal.
      LOOP AT itab.
      Reset values for next row
        IF itab-row NE gd_currentrow.
          APPEND wa_datatab TO t_datatabfinal.
          CLEAR wa_datatab.
          gd_currentrow = itab-row.
        ENDIF.
        concatenate sy-datum6(2)'.' sy-datum4(2)'.' sy-datum+2(4) into xdate .
        CASE itab-col.
          WHEN '0001'.
            wa_datatab-FromDate  = itab-value.
           concatenate wa_datatab-DocumentDate6(2)'.' wa_datatab-DocumentDate4(2)'.' wa_datatab-DocumentDate+2(4) into wa_datatab-DocumentDate.
          WHEN '0002'.
            wa_datatab-Reasonforaction     = itab-value.
          WHEN '0003'.
            wa_datatab-Position = itab-value.
          WHEN '0004'.
            wa_datatab-PersonalArea    = itab-value.
          WHEN '0005'.
            wa_datatab-EmployeeGroup    = itab-value.
          WHEN '0006'.
            wa_datatab-EmployeeSubGroup   = itab-value.
          WHEN '0007'.
            wa_datatab-SubArea         = itab-value.
          WHEN '0008'.
            wa_datatab-PayrolArea         = itab-value.
          WHEN '0009'.
            wa_datatab-Title         = itab-value.
          WHEN '0010'.
            wa_datatab-Lastname         = itab-value.
          WHEN '0011'.
            wa_datatab-Firstname         = itab-value.
          WHEN '0012'.
            wa_datatab-BirtDate         = itab-value.
          WHEN '0013'.
            wa_datatab-Nationality         = itab-value.
          WHEN '0014'.
            wa_datatab-Group         = itab-value.
          WHEN '0015'.
            wa_datatab-Level         = itab-value.
          WHEN '0016'.
            wa_datatab-BankKey         = itab-value.
          WHEN '0017'.
            wa_datatab-BankAccount         = itab-value.
          WHEN OTHERS.
        ENDCASE.
       APPEND    wa_datatab to t_datatabfinal.
      ENDLOOP.
      clear: it_record.
      refresh it_record.
      loop at t_datatabfinal into it_record.
        append it_record.
      endloop.
      perform open_group.
      loop at it_record.
        concatenate it_record-Firstname it_record-Lastname into Fullname separated by space.
        perform bdc_dynpro      using 'SAPMP50A' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'T529T-MNTXT(02)'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=PICK'.
        perform bdc_field       using 'RP50G-EINDA'
                                      it_record-FromDate. "" '01012012'.
        perform bdc_field       using 'RP50G-SELEC(02)'
                                      'X'.
        perform bdc_dynpro      using 'MP000000' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'PSPAR-PERSG'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0000-BEGDA'
                                      it_record-FromDate. "" '01.01.2012'.
        perform bdc_field       using 'P0000-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0000-MASSN'
                                      'ZB'.
        perform bdc_field       using 'P0000-MASSG'
                                      it_record-Reasonforaction. "" '01'.
        perform bdc_field       using 'PSPAR-PLANS'
                                      it_record-Position. "" '99999999'.
        perform bdc_field       using 'PSPAR-WERKS'
                                      it_record-PersonalArea.   " 'm003'.
        perform bdc_field       using 'PSPAR-PERSG'
                                      it_record-EmployeeGroup. "" 'a'.
        perform bdc_field       using 'PSPAR-PERSK'
                                      it_record-EmployeeSubGroup. "" '02'.
        perform bdc_dynpro      using 'MP000100' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0001-BTRTL'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0001-BEGDA'
                                      it_record-FromDate. ""'01.01.2012'.
        perform bdc_field       using 'P0001-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0001-BTRTL'
                                      it_record-SubArea.        "" 'mm01'.
        perform bdc_field       using 'P0001-ABKRS'
                                       it_record-PayrolArea.    "" 'Z2'.
        perform bdc_field       using 'P0001-PLANS'
                                      it_record-Position. ""'99999999'.
        perform bdc_dynpro      using 'MP000200' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0002-NATIO'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0002-BEGDA'
                                      it_record-FromDate. ""'01.01.2012'.
        perform bdc_field       using 'P0002-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'Q0002-ANREX'
                                      it_record-Title. "" 'Mr'.
        perform bdc_field       using 'P0002-NACHN'
                                      it_record-Lastname. " 'maxwel'.
        perform bdc_field       using 'P0002-VORNA'
                                      it_record-Firstname. "" 'razaro'.
        perform bdc_field       using 'P0002-GBDAT'
                                      it_record-BirtDate. "" '01011970'.
        perform bdc_field       using 'P0002-SPRSL'
                                      'EN'.
        perform bdc_field       using 'P0002-NATIO'
                                       it_record-Nationality. "" 'ZW'.
        perform bdc_dynpro      using 'MP000700' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0007-BEGDA'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/00'.
        perform bdc_field       using 'P0007-BEGDA'
                                      it_record-FromDate."" '01.01.2012'.
        perform bdc_field       using 'P0007-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0007-SCHKZ'
                                      'MANORM'.
        perform bdc_field       using 'P0007-ZTERF'
                                      '9'.
        perform bdc_field       using 'P0007-EMPCT'
                                      '  100,00'.
        perform bdc_dynpro      using 'MP000700' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0007-BEGDA'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0007-BEGDA'
                                      it_record-FromDate.""'01.01.2012'.
        perform bdc_field       using 'P0007-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0007-SCHKZ'
                                      'MANORM'.
        perform bdc_field       using 'P0007-ZTERF'
                                      '9'.
        perform bdc_field       using 'P0007-EMPCT'
                                      '  100,00'.
        perform bdc_field       using 'P0007-ARBST'
                                      '    8,00'.
        perform bdc_field       using 'P0007-WKWDY'
                                      '    5,00'.
        perform bdc_dynpro      using 'MP000800' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0008-TRFST'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0008-BEGDA'
                                      it_record-FromDate. "" '01.01.2012'.
        perform bdc_field       using 'P0008-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0008-TRFAR'
                                      '01'.
        perform bdc_field       using 'P0008-BSGRD'
                                      '100,00'.
        perform bdc_field       using 'P0008-TRFGB'
                                      '01'.
        perform bdc_field       using 'P0008-TRFGR'
                                       it_record-Group. ""'a'.
        perform bdc_field       using 'P0008-TRFST'
                                       it_record-Level.         "" '1'.
       perform bdc_field       using 'P0008-DIVGV'
                                     '173,00'.
        perform bdc_field       using 'P0008-ANCUR'
                                      'USD'.
        perform bdc_field       using 'Q0008-IBBEG'
                                      xdate.""'12.01.2012'.
        perform bdc_field       using 'P0008-WAERS'
                                      'USD'.
        perform bdc_dynpro      using 'MP000900' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0009-ZLSCH'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0009-BEGDA'
                                      it_record-FromDate. ""'01.01.2012'.
        perform bdc_field       using 'P0009-ENDDA'
                                      '31.12.9999'.
        perform bdc_field       using 'P0009-BNKSA'
                                      '0'.
        perform bdc_field       using 'Q0009-EMFTX'
                                      Fullname. "" 'maxwel razaro'.
        perform bdc_field       using 'P0009-BANKS'
                                      'ZW'.
        perform bdc_field       using 'P0009-BANKL'
                                       it_record-BankKey.       ""'10351'.
        perform bdc_field       using 'P0009-BANKN'
                                       it_record-BankAccount. "" '543234667778'.
        perform bdc_field       using 'P0009-ZLSCH'
                                      'b'.
        perform bdc_field       using 'P0009-WAERS'
                                      'USD'.
        perform bdc_dynpro      using 'SAPMP50A' '2000'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/EBCK'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'RP50G-PERNR'.
        perform bdc_transaction using 'PA40'.
      endloop.
      perform close_group.
    Regards
    William

    Hi,
    It seems like you are uploading data to a screen that contains table control.just check the link below for your reference
    [http://wiki.sdn.sap.com/wiki/display/ABAP/bdcontable+control]
    Regards,
    Vamshi
    Edited by: vamshi reddy . ch on Jan 13, 2012 7:38 AM
    Edited by: vamshi reddy . ch on Jan 13, 2012 7:39 AM

Maybe you are looking for