Sequence of ABAP code and events.

Hello,
  Please tell me the proper sequence of writing ABAP code.
(Event execution sequence and code writing sequence.)
- which event should follow which event?
- which code should be written where?
- Sequence of Includes (e.g. TOP, PBO, PAI, Subroutine,etc.)
Regards,
Sharayu.

Sequence of Includes:
TOp Include  (All data declarations/Selection screen declared here)
Form Include ( All subroutines are placed inside it)
For a Screen
PBO
PAI
Load of program:When the program is executed
INITIALIZATION: Fill the default values into the fields or we can assign values to the fields in this event. It triggers first.
AT SELECTION-SCREEN: It is commonly used for validations like ON-REQUEST ( for search help) , OUTPUT ( modify screens ).
TOP-OF-PAGE: Header of the report or any data to print on top of the page in list.
END-OF-PAGE: Footer details like page no: / total no: of pages.
START-OF-SELECTION: For processing ur code selects, loops, FM'S and all.
END-OF-SELECTION: Output formating. It is not required to write normally but in some special conditions like to print after the START-OF-SELECTION event.

Similar Messages

  • Executing Abap Queries in Abap Code and processing the result

    Hi,
    I want to execute ABAP Queries (designed by sq01) in an abap report and processing the result in an internal table.
    How could it be work?
    Thanks a lot for your responses,
    with kind Regards
    Reinhold Strobl

    Hello,
    GO to SQ01 and select your query. Go to Menu QUERY-->More Functions->Display Report Name.
    You can then take that report name and go to SE38. Copy the code before END-OF_SELECTION and then modify as per your own requirements.
    Regrads
    Saket Sharma

  • How to backup ABAP code and dynpros?

    Hey,
    I wrote a program with dynpro (no web dynpro), modules and includes. I would like to save these objects. How to do this? I don't want to transport them to another system directly, but save them as file so that I have a backup.
    I figure out that I have to use another ABAP program for doing this, but couldn't find a working link to such a backup program.
    Thanks
    chris

    Hi
    i think this code might help u plzz reward if it helpful..
    Program Name: Backup Program                    Creation: 11/21/2007*
    SAP Name    : ycl_generate_backup               Application: SD     *
    Author      : Contextlabs ABAP Team             Type: 1             *
    Description : This program will Creates Files in Presentation layer *
                  with the name of program and this program is used to  *
                  Back the Programs That are Created or Changed Today   *
    Inputs:                                                             *
      Tables:                                                           *
        REPOSRC - Report Source Code                                    *                                                                     *
    Outputs: File Names                                                 *
    Ammendments:                                                        *
       Programmer        Date     Req. #            Action              *
    ================  ==========  ======  ==============================*
    REPORT  ycl_generate_backup.
    Parameters  Declaration                                             *
    PARAMETERS:  p_file(500)
                     DEFAULT 'D:\Backup Programs\Timesheet\Timesheet_20080108'
                               OBLIGATORY.   " File Name
    Constants Declaration                                               *
    CONSTANTS: c_txt(6) VALUE '.txt'.        " Store EXtension of file name
    Data Declaration                                                    *
    DATA w_file TYPE string.
    Field Strings Declaration                                           *
    DATA:  fs_prog TYPE progname.
    Internal tables Declaration                                         *
    DATA: t_prog TYPE progname OCCURS 10,
          t_code(150) OCCURS 10.
    Satrt of Selection                                                  *
    START-OF-SELECTION.
      w_file = p_file.
      PERFORM read_programs.                 " Read Programs
      PERFORM download_programs.             " Download Programs
    *&      Form  read_programs
          text
    FORM read_programs.
    SELECT PROGNAME
      FROM REPOSRC
      INTO TABLE T_PROG
    WHERE UDAT EQ sy-datum
       AND UNAM EQ 'CLUSER03'.
      fs_prog = 'zcl_Datadec'.
      APPEND fs_prog TO t_prog.
      fs_prog = 'zcl_Tabcontrol'.
      APPEND fs_prog TO t_prog.
      fs_prog = 'zcl_startofsel'.
      APPEND fs_prog TO t_prog.
      fs_prog = 'zcl_Subroutines'.
      APPEND fs_prog TO t_prog.
      fs_prog = 'ZCL_TIMESHEET'.
      APPEND fs_prog TO t_prog.
      fs_prog = 'zcl_Modules_100'.
      append fs_prog to t_prog.
    ENDFORM.                                 " Read_programs
    *&      Form  Download_programs
          Download all our programs
    FORM download_programs .
      LOOP AT t_prog INTO fs_prog.
        READ REPORT fs_prog INTO t_code.
        CONCATENATE w_file
                    fs_prog
                    c_txt
              INTO  w_file.
        CALL FUNCTION 'GUI_DOWNLOAD'
          EXPORTING
            filename                = w_file
          TABLES
            data_tab                = t_code
          EXCEPTIONS
            file_write_error        = 1
            no_batch                = 2
            gui_refuse_filetransfer = 3
            invalid_type            = 4
            no_authority            = 5
            unknown_error           = 6
            header_not_allowed      = 7
            separator_not_allowed   = 8
            filesize_not_allowed    = 9
            header_too_long         = 10
            dp_error_create         = 11
            dp_error_send           = 12
            dp_error_write          = 13
            unknown_dp_error        = 14
            access_denied           = 15
            dp_out_of_memory        = 16
            disk_full               = 17
            dp_timeout              = 18
            file_not_found          = 19
            dataprovider_exception  = 20
            control_flush_error     = 21
            OTHERS                  = 22.
        IF sy-subrc <> 0.
          WRITE: / text-000.
          ULINE.
          WRITE: / fs_prog.
        ELSE.
          WRITE: / text-001.
          ULINE.
          WRITE: / w_file.
        ENDIF.                               " IF SY-SUBRC <> 0.
      ENDLOOP.                               " LOOP AT T_PROG
    ENDFORM.                                 " Download_programs
    plzz dont forget to reward
    further if u have any quiries my mail id [email protected]

  • ABAP code and konfiguration for consuming secure web services

    I need some help/links on how to create an abap program (on 4.6 or WAS 620, or 640 if not possible in older releases) to consume a web service with authentication using certificates based on WS security  (<a href="http://www.oasis-open.org/committees/wss">http://www.oasis-open.org/committees/wss</a>) or client certificates. The request must include attachment in DIME or base64 format (preferably DIME).
    On 4.6 I have used the FM HTTP_POST with the if_ixml interface to consume web services, but I don't know if it can handle https authentication and attachements.
    Message was edited by: Robert

    check out this weblog.
    <a href="/people/thomas.jung3/blog/2005/05/13/calling-webservices-from-abap-via-https">Calling WebServices from ABAP via HTTPS</a>
    Regards
    Raja

  • How to read Filter selection variable values into ABAP code

    HI IP Gurus,
    Requierement: In my filter characterstics, i have assigned variables, which use will enter when running th e planning sequence.
    so  variable values entered by user , i would like to get those values into ABAP code and pass them to some function module.
    SO please give me step by step detail how to achive this.
    MY understanding use the below method . but not sure how to proceed.Please let me know abap code to get values.
    GET_TAB_PARAM_DATA_SEL and GET_PARAM_DATA_SEL.
    Please help me.
    Thanks in advance.Will Assign points
    Sania

    Hi Srinivas,
    So In RSPLF1 , in paramters tab, Do i have create structure(str1) and then create component Data selection (Dtsel1) under str1(what setting i have to do here, where should i enter variable value and do i need to give info object name and how do it in code.i tried to following example, not able to get any values in tab_sel .
    It will be great, if you could explain in detail.
    other thing i found out is in Initialization method i can read i_t_data_charsel table values , where it contains filter slected values.but could not pass  these values to execute method
    Is there is any way that i can pass values from init method to execute method.
    A tabular structured parameter with name "MY_TABSTRUC" is defined for the function type. "MY_TABSTRUC" consists of the two parameter components "MY_ELEM" and "MY_DATASEL". You access the parameter values as follows:
    DATA: TAB_PARAM_STRUC TYPE RSPLFA_T_PARAM_STRUC,
           REF_PARAM_STRUC    TYPE REF TO IF_RSPLFA_PARAM_STRUC,
          REF_PARAM_ELEM     TYPE REF TO IF_RSPLFA_PARAM_ELEM,
          REF_PARAM_DATASEL  TYPE REF TO IF_RSPLFA_PARAM_DATESEL,
           L_VAL(20)          TYPE C,
           TAB_SEL            TYPE RSPLF_T_CHARSEL.
    get table of parameter MY_TABSTRUC:
      TAB_PARAM_STRUC = I_R_PARAM_SET->GET_TAB_PARAM_STRUC( 'MY_TABSTRUC' ).
    process all lines:
      LOOP AT TAB_PARAM_STRUC into REF_PARAM_STRUC.
      get component MY_ELEM:
        REF_PARAM_ELEM = REF_PARAM_STRUC->GET_COMP_ELEM( 'MY_ELEM' ).
      get internal value of MY_ELEM:
        REF_PARAM_ELEM->GET_VALUE( IMPORTING E_VALUE = L_VAL ).
      get component MY_DATASEL:
        REF_PARAM_DATASEL = REF_PARAM_STRUC->GET_COMP_DATA_SEL( 'MY_DATASEL' ).
      get data selection table of MY_DATASEL:
        TAB_SEL = REF_PARAM_DATASEL->GET_T_SEL( ).
      ENDLOOP.
    Thanks in Advance..please help me

  • Trouble with SAPconnect / sending email in ABAP-code

    Hi,
    with the code below I try to send an email from ABAP outside
    to an mail-account in the internet.
    I'll get no error/exceptions but the mail will be not send
    to the internet-mail-account.
    In Transaktion SCOT I checked the SAPconnect-Node "INT"-"SMTP".
    There is a mailserver with the right IP und the right Port. So I don't understand
    what could be the problem!?
    Can anybody help me and say me why the code below doesn't works?
    Best wishes!
    * For API
    data: maildata type sodocchgi1.
    data: mailtxt  type table of solisti1 with header line.
    data: mailrec  type table of somlrec90 with header line.
    start-of-selection.
      clear:    maildata, mailtxt,  mailrec.
      refresh:  mailtxt, mailrec.
      maildata-obj_name = 'TEST'.
      maildata-obj_descr = 'Test'.
      maildata-obj_langu = sy-langu.
      mailtxt-line = 'This is a test'.
      append mailtxt.
      mailrec-receiver = '[email protected]'.
      mailrec-rec_type  = 'U'.
      append mailrec.
        call function 'SO_NEW_DOCUMENT_SEND_API1'
             exporting
                  document_data              = maildata
                  document_type              = 'RAW'
                  put_in_outbox              = 'X'
             tables
                  object_header              = mailtxt
                  object_content             = mailtxt
                  receivers                  = mailrec
             exceptions
                  too_many_receivers         = 1
                  document_not_sent          = 2
                  document_type_not_exist    = 3
                  operation_no_authorization = 4
                  parameter_error            = 5
                  x_error                    = 6
                  enqueue_error              = 7
                  others                     = 8.
        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 the send process using the following statement
    submit rsconn01 with mode = 'int' and return.
    Message was edited by:
            sebastian eckes

    SAP is a robust system, which gives many facilities in the form of Function Modules (FMs) for connecting to external systems or for use within the system. With a clever use of these FMs we can achieve a lot of things through ABAP code.
    This article focuses on ways to send E-mails and SAP Mails using ABAP code.
    Firstly SAP Mail
    A SAP mail is a mail internal to the SAP system. It is a very good forum to exchange information with other users. Using a SAP mail in ABAP code facilitates exchange of automatic messages at various stages of the business process. It is easy to use and saves many hassles involved in using workflows for exchanging messages.
    The ABAP code to send a sap mail is built around the FM SO_OBJECT_SEND which has the following pattern.
    call function 'SO_OBJECT_SEND'
    exporting
    EXTERN_ADDRESS = ' '
    FOLDER_ID = ' '
    FORWARDER = ' '
    OBJECT_FL_CHANGE = ' '
    OBJECT_HD_CHANGE = ' '
    OBJECT_ID = ' '
    OBJECT_TYPE = ' '
    OUTBOX_FLAG = ' '
    OWNER = ' '
    STORE_FLAG = ' '
    DELETE_FLAG = ' '
    SENDER = ' '
    CHECK_ALREADY_SENT = ' '
    importing
    object_id_new =
    sent_to_all =
    tables
    OBJCONT =
    OBJHEAD =
    OBJPARA =
    OBJPARB =
    receivers =
    PACKING_LIST =
    ATT_CONT =
    ATT_HEAD =
    NOTE_TEXT =
    exceptions
    active_user_not_exist = 1
    communication_failure = 2
    component_not_available = 3
    folder_not_exist = 4
    folder_no_authorization = 5
    forwarder_not_exist = 6
    note_not_exist = 7
    object_not_exist = 8
    object_not_sent = 9
    object_no_authorization = 10
    object_type_not_exist = 11
    operation_no_authorization = 12
    owner_not_exist = 13
    parameter_error = 14
    substitute_not_active = 15
    substitute_not_defined = 16
    system_failure = 17
    too_much_receivers = 18
    user_not_exist = 19
    x_error = 20
    others = 21.
    In the next article we will understand the main parameters and table interfaces of the FM.
    Import Parameters Name and Description     Field name     Field function
    Object_hd_change (structure) Contains the process to be done when SAP mail is marked for execution.When the Execute Icon in the SAP mail is clicked the corresponding object is executed     vmtyp     ‘D’ for dialog module ‘F’ for function module‘R’ for report‘T’ for transaction‘U’ for transaction with export
         Acnam     Name of the object which is to be executed, like name of transaction/report
         Skips     ‘X’ to execute first screen in background
         Objsns     Indicates sensitivity of the object. ‘P’ for private object‘F’ for functional object‘O’ for confidential object‘C’ for company confidential objectSensitivity level is restricted to ‘O’ for documents in shared folders
         Objla     Language of the document ‘E’ for Englishsy-langu for system language
         Objnam     Name of the document
         Objdes     Short description (Title) of the document
         Objsrt     Name of the sort field. This is used to group documents based on certain criteria
    Object_type Type of document to be sent with mail           ‘RAW’ for raw text (default) ‘DOC’ for word file ‘XLS’ for excel fileAll classes can be used except for folders (‘FOL’) and distribution lists (‘DLI’)
    Outbox_flag           ‘X’ to indicate that mail should also be stored in outbox of the user after sending (default ‘ ‘)
    Owner           Sap login of the user responsible for transmission
    Table Parameters Name and Description     Field Name     Field function
    Objcont Table to hold the body of the mail     Line     Text lines up to 255 characters
    Objhead Table to hold number of lines in the body of the mail, i.e size of the table in lines     Line     Text lines up to 255 characters
    Objpara Table to hold the set/get parameters to be transferred to the processing element     Name     Name of the parameter. Only first three characters are used
         Option     Not used
         Low     Value of the parameter in name
         High     Not used
    Objparb Table to hold information for mails to which a certain processing type is assigned. For a report or transaction with transfer of values to global memory, the table has to contain the parameters with relevant values. The memory id is taken from the first row. For a FM or dialog module, data in table will be transferred as table parameter msgdial     Name     For report or transaction with transfer of values to global memory, the field for first row should hold the name of the memory id used for export and the other rows should hold the parameter names. For FM or dialog module this field should hold the values as per the usage of the module
         Value     For report or transaction with transfer of values to global memory, the field for first row should remain empty and the other rows should hold values of the parameters. For FM or dialog module this field should hold the values as per the usage of the module
    Receivers Table to hold recipient details     Recnam     SAP login of the recipient. Append all the recipients to this table
         Sndcp     X for sending mail as a copy
         Sndex     X for sending as express document. This will prompt a logged on recipient saying that he or she has received an express mail
         Recesc     ‘B’ for SAP user ‘E’ for external email address‘U’ for unix address
    Export Parameters Name and Description     Field name     Field function
    Object_id_new Contains object id of document created during send process            
    Sent_to_all X indicates that document was sent to all recipients. Flag is not activated if sending fails in one or more cases           
    Main Exceptions Name and Description     Description
    Too_much_receivers      Number of recipients is greater than number for which sender is authorised to send
    Object_not_sent     Document was not delivered to any of the recipients
    Object_not_exist     Document class specified does not exist or cannot be sent
    Object_no_authorisation     Document could not be sent as one of the required authorisations does not exist
    Parameter_error     Invalid combination of parameter values transferred to FM
    X_error     Internal error occurred
    Once all the parameters and table interfaces are properly filled, call the function module to send the SAP mail to the recipient inbox.
    Care should be taken to report the status of execution of the function module to the user using one of the exceptions defined (refer function module pattern above)
    Though SAP mail is a very robust method of interacting with users within SAP system, it is always good to receive email in Microsoft inbox. This also works like an additional notification to users in case they do not check SAP mail regularly. The next article covers sending E-mails using ABAP.
    Sending Email to a non-SAP system:
    Though SAP mail is a very robust method of interacting with users within SAP system, it is always good to receive email in Microsoft inbox. This also works like an additional notification to users in case they do not check SAP mail regularly.
    Sending an email to the Microsoft Inbox is a way of interacting with a non SAP system through ABAP code and hence is very interesting. A fair knowledge of UNIX shell scripting is assumed here.
    The ABAP code to send an email to Microsoft inbox revolves around following UNIX script
    Echo "From:" "<"$1">" > <unix file path name>
    Echo "To:" "<"$2">" >> <unix file path name>
    Echo "Subject:" "<"$3">" >> <unix file path name>
    Cat $4 >> <unix file path name>
    Uuencode $5 $6 >> <unix file path name>
    Cat <unix file path name> | /usr/sbin/sendmail –f $fraddr $toaddr
    (Note : the commands in the above script can be case sensitive. Check the actual case on the unix installation in question)
    Let us understand the various parts of the above script.
    $1 = Sender email address
    $2 = Recipient email address
    $3 = Subject of the email
    $4 = Path of unix server file having email body
    Form email body as an internal table in ABAP program, download it to a unix server file
    $5 = Path of unix server file to be sent as email attachment
    $6 = Name to be given to the attachment (like test1.doc, test1.xls). The corresponding Microsoft icon
    will be shown in the email for the type of file attached ( Word document, excel document etc)
    The script builds a temporary file and pipes the file to the sendmail command to achieve the mission.
    This script can be invoked from SAP to send the mail to the intended recipient. Store this small script on the unix server. (Assume script name is sndmail )
    To do this we should define a link in the SAP system between a customized command and this unix script.
    The FM to define a customized command in SAP system has the following pattern.
    call function 'SXPG_CALL_SYSTEM'
    exporting
    commandname =
    PARAMETERS = ' '
    importing
    status =
    tables
    exec_protocol =
    exceptions
    no_permission = 1
    command_not_found = 2
    parameters_too_long = 3
    security_risk = 4
    wrong_check_call_interface = 5
    program_start_error = 6
    program_termination_error = 7
    x_error = 8
    parameter_expected = 9
    too_many_parameters = 10
    illegal_command = 11
    others = 12.
    In the next article we will understand the main parameters and table interfaces of the FM.
    Import Parameters Name and Description     Field name     Field function
    Commandname Name of unix shell script or command to be executed by SAP           Name of unix shell script to be invoked
    Parameters           The parameters to be sent to unix shell script ($1, $2 etc). Send parameters as a concatenated string separated by space and length not exceeding 128 characters For eg in UNIX environment the above shell script would be executed as Sndmail [email protected] [email protected] Trial /home/test.doc testmail.We will be simulating this command using the FM from SAP system
    Table Parameters Name and Description     Field Name     Field function
    Exec_protocol (structure) Table to get messages from unix server after shell script is executed     Length     Length of the message from external program i.e unix
         Message     Log message from external program i.e unix
    Export Parameters Name and Description     Field name     Field function
    Status Contains the status of execution of external program            Scheduling status of external program i.e unix
    Once the above FM is invoked with the necessary parameters the unix program sendmail will send a mail to the inbox of the recipient in Microsoft.
    The restriction on the parameter string length of 128 characters can be removed to make way for very long email addresses and subjects. Build the parameters into an internal table and download it as a file on the unix server. Instead of passing each parameter individually, pass the unix server path of this file as the parameter to the unix shell script (sndmail mentioned above). Modify the shell script to read every line of this parameter file as variables to be used in the shell script.
    In the next article we will see an example of the ABAP code you can use to send SAP Mails.
    REPORT ZTSAPMAIL.
    DATA: X_OBJECT_TYPE LIKE SOOD-OBJTP.
    DATA: BEGIN OF X_OBJECT_HD_CHANGE.
    INCLUDE STRUCTURE SOOD1.
    DATA: END OF X_OBJECT_HD_CHANGE.
    DATA: BEGIN OF X_OBJCONT OCCURS 10.
    INCLUDE STRUCTURE SOLI.
    DATA: END OF X_OBJCONT.
    DATA: BEGIN OF X_OBJHEAD OCCURS 0.
    INCLUDE STRUCTURE SOLI.
    DATA: END OF X_OBJHEAD.
    DATA: BEGIN OF RAW_HEAD.
    INCLUDE STRUCTURE SORH.
    DATA: END OF RAW_HEAD.
    DATA: BEGIN OF X_RECEIVERS OCCURS 0.
    INCLUDE STRUCTURE SOOS1.
    DATA: END OF X_RECEIVERS.
    PARAMETERS: RECEIVER LIKE X_RECEIVERS-RECNAM. " Name
    *BUILD MESSAGE HEADER
    MOVE 'Sort field goes here' TO X_OBJECT_HD_CHANGE-OBJSRT. " Sort field
    MOVE 'Name of the object goes here' TO X_OBJECT_HD_CHANGE-OBJNAM. " Name
    MOVE 'Document title goes here' TO X_OBJECT_HD_CHANGE-OBJDES. " Title
    MOVE 'F' TO X_OBJECT_HD_CHANGE-OBJSNS. " Functional OBJECT
    MOVE 'E' TO X_OBJECT_HD_CHANGE-OBJLA. " Language
    Object type of the new document
    MOVE 'RAW' TO X_OBJECT_TYPE.
    CLEAR X_OBJCONT.
    MOVE 'Contents of mail' TO X_OBJCONT-LINE.
    APPEND X_OBJCONT.
    CLEAR X_OBJCONT-LINE. APPEND X_OBJCONT.
    MOVE 'More contents' TO X_OBJCONT-LINE.
    APPEND X_OBJCONT.
    MOVE 'Still more contents'
    to x_objcont-line.
    APPEND X_OBJCONT.
    MOVE ' ' TO X_OBJCONT-LINE.
    APPEND X_OBJCONT.
    Specific header (Dependent on the object type, here RAW)
    REFRESH X_OBJHEAD.
    DESCRIBE TABLE X_OBJCONT LINES RAW_HEAD-RAWSIZ.
    MOVE RAW_HEAD TO X_OBJHEAD.
    APPEND X_OBJHEAD.
    *RECEIVERS table
    CLEAR X_RECEIVERS.
    REFRESH X_RECEIVERS.
    MOVE RECEIVER TO X_RECEIVERS-RECNAM. " Name
    MOVE 'B' TO X_RECEIVERS-RECESC. " Receiver type
    MOVE 'X' TO X_RECEIVERS-SNDCP. " Send as a copy
    MOVE 'X' TO X_RECEIVERS-SNDEX. " EXPRESS DOCUMENT
    APPEND X_RECEIVERS.
    CALL FUNCTION 'SO_OBJECT_SEND'
    EXPORTING
    folder_id = 'OUTBOX'
    forwarder = x_forwarder
    object_fl_change = x_object_fl_change
    OBJECT_HD_CHANGE = X_OBJECT_HD_CHANGE
    object_id = x_object_id
    OBJECT_TYPE = X_OBJECT_TYPE
    OUTBOX_FLAG = 'X'
    OWNER = SY-UNAME
    store_flag = x_store_flag
    importing
    object_id_new = x_object_id_new
    sent_to_all = x_sent_to_all "May need to use
    TABLES
    OBJCONT = X_OBJCONT
    OBJHEAD = X_OBJHEAD
    objpara = x_objpara
    objparb = x_objparb
    RECEIVERS = X_RECEIVERS.
    REPORT ZTUNIXMAIL.
    DATA : TO_ADDRESS LIKE SY_LISEL,
    FROM_ADDRESS LIKE SY-LISEL,
    SUBJECT LIKE SY-LISEL,
    ATTACHMENT_NAME LIKE SY_LISEL,
    DATA_FILE_PATH LIKE SXPGCOLIST-PARAMETERS,
    BODY_FILE_PATH LIKE SXPGCOLIST-PARAMETERS.
    DATA : BEGIN OF INT_EMAIL_ATTACH OCCURS 0,
    TXTLINE CHAR(255),
    END OF INT_EMAIL_ATTACH.
    DATA : BEGIN OF INT_EMAIL_BODY OCCURS 0,
    TXTLINE CHAR(255),
    END OF INT_EMAIL_BODY.
    CLEAR : INT_EXEC_PROTOCOL,INT_EMAIL_ATTACH,INT_EMAIL_BODY.
    REFRESH : INT_EXEC_PROTOCOL,INT_EMAIL_ATTACH,INT_EMAIL_BODY.
    INT_EMAIL_ATTACH-TXTLINE = 'Put all attachment text in this table'.
    APPEND INT_EMAIL_ATTACH. CLEAR INT_EMAIL_ATTACH.
    INT_EMAIL_BODY-TXTLINE = 'Put all attachment text in this table'.
    APPEND INT_EMAIL_BODY. CLEAR INT_EMAIL_BODY.
    CONCATENATE TO_ADDRESS
    FROM_ADDRESS
    SUBJECT
    BODY_FILE_PATH
    DATA_FILE_PATH
    ATTACHMENT_NAME
    INTO V_PARAMETERS.
    IF NOT INT_EMAIL_ATTACH[] IS INITIAL.
    OPEN DATASET DATA_FILE_PATH FOR OUTPUT IN TEXT MODE.
    LOOP AT INT_EMAIL_ATTACH.
    TRANSFER INT_EMAIL_ATTACH-TXTLINE TO DATA_FILE_PATH.
    ENDLOOP.
    CLOSE DATASET DATA_FILE_PATH.
    ENDIF.
    IF NOT INT_EMAIL_BODY[] IS INITIAL.
    OPEN DATASET BODY_FILE_PATH FOR OUTPUT IN TEXT MODE.
    LOOP AT INT_EMAIL_BODY.
    TRANSFER INT_EMAIL_BODY-TXTLINE TO BODY_FILE_PATH.
    ENDLOOP.
    CLOSE DATASET BODY_FILE_PATH.
    ENDIF.
    CALL FUNCTION 'SXPG_CALL_SYSTEM'
    EXPORTING
    COMMANDNAME = 'Z_EMAIL' - Command calling unix script
    PARAMETERS = V_PARAMETERS
    importing
    status = ''
    TABLES
    EXEC_PROTOCOL = INT_EXEC_PROTOCOL
    EXCEPTIONS
    NO_PERMISSION = 1
    COMMAND_NOT_FOUND = 2
    PARAMETERS_TOO_LONG = 3
    SECURITY_RISK = 4
    WRONG_CHECK_CALL_INTERFACE = 5
    PROGRAM_START_ERROR = 6
    PROGRAM_TERMINATION_ERROR = 7
    X_ERROR = 8
    PARAMETER_EXPECTED = 9
    TOO_MANY_PARAMETERS = 10
    ILLEGAL_COMMAND = 11
    OTHERS = 12.
    regards,
    srinivas
    <b>*Reward points for useful answers*</b>

  • SQ01 DIsplay Problem (Can v write abap code ) Sql Query

    Hi
    Need help in SQL Query
    I generated one sql query which has the following output in general .
    Customer   name   description   amount
    asrq1  sharekhan      Amount payed      10
    asrq1  sharekhan     Amount Advance     20
    asrq1  sharekhan    Amount due             30
    but i need the output in the following way
    Customer  name  AMount payed     Amount  Advance                  Amount Due
    asrq1   sharekhan  10    20     30
    and iam new this sql query but came to know we can write code ..but iam unable to initiliaze to write
    a peace of code as i dont know what are the select-options defined ..i saw in the include but didnt got it
    % comes prefix of select-options,and iam unable to get he internal table which is displayed in the query .
    can anyone help me in this answers will be awarded points.

    First, I will suggest to go for ABAP report for this kinda requirement.
    If you really want to go for it through SQ01, even then you will have to write some ABAP to display the records in one row. You will need to create three custom fields.
    I will give Psudo for one field:
    Field Name := ZAmountPayed
    Select Amount_Payed into varAmountPayed from Table Where Emp# = '12345'
    ZAmountPayed := varAmountPayed
    Convert the above into relative ABAP code and create 2 more similar fields, and you should be all set.
    You have to know the table names and any other calculations to get the right data.

  • RE: Abap Code Flow for Multiple Authorization checks

    Hi all,
    I am basically a security person, but i have some doubts on Authority-check in ABAP code. so i thought this is best place to understand the execution of ABAP code.
    Q1. I know that ABAP programmers will put Authority check in ABAP code and when program was executed Authority-check will compare whether user has access to this object or not.
    for EX take some tcode ZXYY
    i activated 3 objects out of some 20 objects for this tcode in SU24.
    Authority checks are placed in the program.
    when this tcode was executed and started the ABAP code, then i think it will do the authority check for the first object and if user has the profile to it then it will go for the second authority-check for which if user does not had profile ( i made inactive in role)  will the code terminate  and throw some error there it self or will it go for the for 3rd object for which again user has access. (user got access to this 3rd object)
    can any explain?
    Q2. Should the activities be same as in Authority-check.
    I mean in Authority check if you give activities 02 and 03  and in user profile if i give only 02 will it work or not?
    thanks,
    Sun

    Refer Below Code:
    IF SY-TCODE = 'CJ40'.
         AUTHORITY-CHECK OBJECT 'ZPS_VERSN'    "'ZWMM_WERK'
            ID 'VERSN' FIELD bpdy-VERSN
            ID 'ACTVT' FIELD '01'
            ID 'ACTVT' FIELD '02'
            ID 'ACTVT' FIELD '03' .
           IF SY-SUBRC = 0.
    *        continue.
           elseif SY-SUBRC <> 0.
             AUTHORITY-CHECK OBJECT 'ZPS_VERSN'    "'ZWMM_WERK'
               ID 'VERSN' FIELD bpdy-VERSN
               ID 'ACTVT' FIELD '01'.
               IF sy-subrc = 0.
    *            CONTINUE.
               ELSEIF sy-subrc <> 0.
                  AUTHORITY-CHECK OBJECT 'ZPS_VERSN'    "'ZWMM_WERK'
                   ID 'VERSN' FIELD bpdy-VERSN
                   ID 'ACTVT' FIELD '02'.
                   IF sy-subrc eq 0 .
    *                CONTINUE.
                   ELSEIF sy-subrc <> 0 .
                     AUTHORITY-CHECK OBJECT 'ZPS_VERSN'    "'ZWMM_WERK'
                      ID 'VERSN' FIELD bpdy-VERSN
                      ID 'ACTVT' FIELD '03'.
                      IF sy-subrc = 0.
                        versn = bpdy-versn.
                        v_proj = proj-pspid.
                        wbs = PRPS-POSID.
                        set PARAMETER ID 'PSP' FIELD  v_proj.
                        set PARAMETER ID 'BP2' FIELD  VERSN.
                        set PARAMETER ID 'PRO' FIELD  wbs.
                        LEAVE TO TRANSACTION 'CJ41' AND SKIP FIRST SCREEN.
                      ELSEIF sy-subrc ne 0.
                        MESSAGE 'You are not authorised for this version.' TYPE 'E'.
                      ENDIF.
                   ENDIF.
               ENDIF.
             ENDIF.
       ENDIF.

  • Debugging ABAP Code From Within Webdynpro Application

    Hello Experts,
    We use ABAP RFC Function in Our Java Webdynpro application, We need to debug the parameters pass from the webdynpro application to the ABAP Function.
    In order to do that we:
    1. Defined a JCO connection with "Single Server Connection" as the Destination Type.
    2. We have loged on to the relevant system and client using SAP GUI with the same user that run the webdynpro application.
    3. We have activate the external debugging in se80 Utilities -> Settings
    4. We have set an HTTP (external) breakpoint in the ABAP code,
    As mentioned in the article:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/0e9a9d90-0201-0010-478e-991dbea73a30
    However, we recieve a dump in the R3 system:
    RFC_DEBUGGING_NO_DIALOG_USER
    ShrtText
    RFC debugging is only possible with dialog user
    What happened?
    You attempted to debug a program by RFC. However, in this destination
    there is a user whose user type permits communication without dialog.
    This means, for example, that debugging with a system user is not
    possible.
    What can you do?
    Restart the program and take note of the following:
    You can do one of the following:
    1. You can change the user listed in the RFC destination and enter a
    dialog user.
    2. In the target system of RFC you can change the user type of the user
    listed in the RFC destination to 'dialog'.
    3. You can avoid this runtime error by omitting the RFC debugging.
    If in the ABAP debugger the statement cursor points to the statement
    (CALL FUNCTION ... DESTINATION), you must choose the function
    'Execute'.
    We checked and the user we use is defined as dialog in SU01 and the user that the webdynpro use to call the functio is the same user as was logged in.
    What else should we do?
    Thanks,
    Eyal

    Hello Eyal,
    You mentioned the following..
    1. Defined a JCO connection with "Single Server Connection" as the Destination Type. 2. We have loged on to the relevant system and client using SAP GUI with the same user that run the webdynpro application.*<---The system that you logged into is your source system*
    3. We have activate the external debugging in se80 Utilities -> Settings
    4. We have set an HTTP (external) breakpoint in the ABAP code,
    and the name of the system defined in the RFC connection will be your target system.
    As per the response (dump error message) in this target system you need to have a dialog user.
    And this dialog user needs to be defined in the RFC destination that is being used to connect to the target system.
    Regards,
    Siddhesh

  • Enhancing 0FI_GL_4  - ABAP code is NOT working -  URGENT PLEASE ???

    Hi all,
        I want to enhance 0FI_GL_4 extractor with CHECT, RWBTR & PRIDT from PAYR table if VBELN of 0FI_GL_4  is not BLANK, with the following conditions:
    1.Load all the records of PAYRQ table into PAYRQ internal table LT_PAYRQ
    with matching BELNR, AUGBL & BUKRS from I_DTFIGL_4 internal table.
    2.Load all the records of PAYR table into PAYR internal table LT_PAYR
    with matching AUGBL & BUKRS from LT_PAYRQ internal table.
    3.Read PAYR internal table LT_PAYR with matching BELNR (from I_DTFIGL_4
          internal table) and fill the new fields  CHECT, RWBTR & PRIDT.
    The following the is ABAP code, but it is NOT working:
    DATA:I_DTFIGL_4 LIKE DTFIGL_4 OCCURS 0 WITH HEADER LINE,
         L_TABIX LIKE SY-TABIX.
    DATA: BEGIN OF LS_PAYRQ,
                 ZBUKR LIKE PAYRQ-ZBUKR,
                 BELNR LIKE PAYRQ-BELNR,
                 AUGBL LIKE PAYRQ-AUGBL,
             END OF LS_PAYRQ.
    DATA: LT_PAYRQ LIKE LS_PAYRQ OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF LS_PAYR,
                 VBLNR LIKE PAYR-VBLNR,
                 CHECT LIKE PAYR-CHECT,
                 RWBTR LIKE PAYR-RWBTR,
                 PRIDT LIKE PAYR-PRIDT,
             END OF LS_PAYR.
    DATA: LT_PAYR LIKE LS_PAYR OCCURS 0 WITH HEADER LINE.
    WHEN '0FI_GL_4'.
        I_DTFIGL_4 = C_T_DATA.
        SELECT BELNR   AUGBL  ZBUKR
          FROM PAYRQ
          INTO CORRESPONDING FIELDS OF TABLE LT_PAYRQ
          FOR ALL ENTRIES IN I_DTFIGL_4
          WHERE BELNR = I_DTFIGL_4-BELNR
            AND AUGBL = I_DTFIGL_4-AUGBL
            AND BUKRS = I_DTFIGL_4-BUKRS.
        SORT LT_PAYRQ BY BELNR.
        SELECT VBLNR CHECT RWBTR PRIDT
           FROM PAYR
           INTO CORRESPONDING FIELDS OF TABLE LT_PAYR
           FOR ALL ENTRIES IN LT_PAYRQ WHERE VBLNR = LT_PAYRQ-AUGBL
           AND ZBUKR = LT_PAYRQ-ZBUKR.
        SORT LT_PAYR BY VBLNR.
        LOOP AT C_T_DATA INTO I_DTFIGL_4.
            L_TABIX = SY-TABIX.
         IF NOT I_DTFIGL_4-VBELN IS INITIAL.     " IF BILLING DOCUMENT EXISTS
            READ TABLE LT_PAYR WITH KEY VBLNR = I_DTFIGL_4-BELNR.
            IF SY-SUBRC = 0.
               MOVE LT_PAYR-CHECT   TO  I_DTFIGL_4-ZZCHECT.
               MOVE LT_PAYR-RWBTR  TO  I_DTFIGL_4-ZZRWBTR.
               MOVE LT_PAYR-PRIDT    TO  I_DTFIGL_4-ZZPRIDT.
               MODIFY C_T_DATA FROM I_DTFIGL_4 INDEX L_TABIX.
            ENDIF.
            CLEAR:I_DTFIGL_4-ZZCHECT,I_DTFIGL_4-ZZRWBTR,I_DTFIGL_4-ZZPRIDT,
                  LT_PAYR,  LT_PAYRQ.
          ENDIF.
        ENDLOOP.
    Could you please find the problem with above ABAP code and correct it.
    Since I want to enhance it,  if VBELN is not Blank and do I have to move the IF condition (I_DTFIGL_4-VBELN IS INITIAL) to another location for better performance.
    Thanks,
    Venkat..

    Dear Gajesh,
    Please accept my thanks for your Spontaneous reply.
    Selection Screen data is given below.
    1 --> Material Number
    2 --> Inspection Lot Number
    3 --> Date of Lot Creation
    4--> Inspection Type
    Normally the clint will give the Inspection Type ie 4th input and Date of Lot creation ie 3rd Input (Range of Date).
    Please do the needful.
    With Best Regards,
    Raghu Sharma

  • What does this ABAP code do?

    Hi,
    I came across this ABAP code and I'd like to know what the asterisk (*) before the variable names does.
      *mkpf = mkpf.
      *mseg-lgort = mseg-lgort.
      *ladr = ladr.
      save_mkpf = *mkpf-usnam.
      save_mblnr = *mkpf-mblnr.
      save_budat = *mkpf-budat.
      save_cpudt = *mkpf-cpudt.
      save_ematn = *mseg-ematn.
      save_lgort = *mseg-lgort.
      save_ladr = *ladr.
      *t001w = t001w.
      save_werks = *t001w-werks.
      save_name1 = *t001w-name1.
      *ekko = ekko.
      *am07m = am07m.
      save_lifnr = *ekko-lifnr.
      save_ebeln = *ekko-ebeln.
      save_ekgrp = *ekko-ekgrp.
      save_linam = *am07m-name1.
      save_lina2 = *am07m-name2.
      *t024 = t024.
      save_eknam = *t024-eknam.
      save_ektel = *t024-ektel.
      *mkpf-usnam = old_mkpf.
      *mkpf-mblnr = old_mblnr.
      *mkpf-cpudt = old_cpudt.
      *mkpf-budat = old_budat.
      *mseg-ematn = old_ematn.
      *mseg-lgort = old_lgort.
      *ladr = old_ladr.
      *t001w-werks = old_werks.
      *t001w-name1 = old_name1.
      *t024-eknam = old_eknam.
      *t024-ektel = old_ektel.
      *ekko-lifnr = old_lifnr.
      *ekko-ebeln = old_ebeln.
      *ekko-ekgrp = old_ekgrp.
      *am07m-name1 = old_linam.
      *am07m-name2 = old_lina2.
    Thx.
    Andy

    Hi,
    It is nothing but the Work Area. Check the below sample code.
    report abcd.
      tables: *vbak, vbak.
      select single * from vbak into *vbak where vbeln <> space.
      write *vbak-vbeln.
    Regards,
    Satya

  • OPSI setting remain as ABAP code after client deletion

    Hi all,
    I'm just wondering if anyone face this problem before:
    1. I've created some test data in OPSI (validations of project system) in a test client (eg: 201)
    2. I perform client deletion on 201 and client copy from PRD to 201
    3. If I check the include statement, the test data still exist as ABAP code (and will generate an abap runtime error). However, if I go to OPSI, the test data no longer not exist.
    4. If I re-create the test data in OPSI, then this problem is solved.
    Regards.

    THere is nothign to worry about it. It is std.behaviour. Wheneven you trasport or Copy client with refrence to Validation. Even though validation is in place in congiuration but system not read that validation and behave as per last config of validation.
    You need to correct the same manually by Validation menu--> Simulate function, This will internally generate ABAP code according to your currnet validation. After that your system will behave correctly according to currnet config of validation.
    With regards
    Nitin p.

  • INTERFACE AND EVENTS IN ABAP OO

    Can some one explain me the real time need with example for use of interfaces and events in abap objects
    (asking interface and events along doesnt mean that i am relating them).
    <removed_by_moderator>
    Pankaj Giri
    Edited by: Julius Bussche on Jul 14, 2008 1:36 PM

    Events :
    Technically speaking :
    " Events are notifications an object receives from, or transmits to, other objects or applications. Events allow objects to perform actions whenever a specific occurrence takes place. Microsoft Windows is an event-driven operating system, events can come from other objects, applications, or user input such as mouse clicks or key presses. "
    Lets say you have an ALV - An editable one ...
    Lats say - Once you press some button  you want some kind of validation to be done.
    How to do this ?
    Raise an Event - Which is handled by a method and write the validation code.
    Now you might argue, that I can do it in this way : Capture the function code - and call the validate method.
    Yes, in this case it can be done.. But lets say .. you change a field in the ALV and you want the validation to be done as soon as he is done with typing.
    Where is the function code here ? No function code... But there is an event here - The data changed event.
    So you can raise a data changed event that can be handled and will do the validation.
    It is not user friendly that you ask the user to press a button (to get the function code) for validation each time he enters a data.
    The events can be raised by a system, or by a program also. So in this case the data changed event is raised by a system that you can handle.
    Also, Lets say on a particular action you want some code to trigger. (You can take the same example of validation code). In this case the code to trigger is in a separate class. The object of which is not available here at this moment. (This case happens very frequently).
    Advantage with events : Event handlers can be in a separate class also.
    e.g : In the middle of some business logic .. you encounter a error. You want to send this information to the UI (to user - in form of a pop up) and then continue with some processing.
    In many cases - A direct method call to trigger the pop up is not done. Because (in ideal cases) the engine must not interact with UI directly - Because the UI could be some other application - like a windows UI but the error comes from some SAP program.
    So - A event is raised from the engine that is handled in the UI and a pop up is triggered.
    Here -- I would have different classes (lets say for different Operating Systems). And all these classes must register to the event ERROR raised in application.
    And these different classes for different Operation systems will have different code to raise a pop-up.
    Now you can imagine : If you coded a pop-up for Windows (in your application logic) .. it will not work for Mac or Linux. But of you raise a event.. that is handled separately by a different UI classes for Win, Linux or Mac  they will catch this event and process accordingly.
    May be I complicated this explanation .... but I couldn't think of a simpler and concrete example.
    Cheers.
    Varun.

  • WF: Problem in raising event of a class in ABAP code to complete workitem.

    Hi All,
    I'm developing a workflow of Hiring Eform.
    In this workflow we have created a step for some data processing and also set termination event for the task inorder to complete the task.
    Now problem is that how to trigger the event of this class in the abap code so that the workitem will be completed.
    As far as i know i have used following function module to raise a event for BOR. but is there any way to raise/trigger the event of Class.
    For BOR: SAP_WAPI_CREATE_EVENT

    [Note 1322202|https://service.sap.com/sap/support/notes/1322202] provides SAP_WAPI_CREATE_EVENT_EXTENDED which can do classes.

  • Link BOR Event with ABAP code (program or function)!

    Hello experts,
    I am trying to link program or function to bor event. Change of data in HR IT0002 trigger event CHANGE of PERSDATA Object. I need to execute some ABAP code (program or function) on CHANGE event, so I have to link event and ABAP code.
    Question: is it possible and how?

    Hi,
    It is very much possible....
    You can use the Workflow & use BO as PERSDATA & this workflow can be triggered on event change.
    & You can write your code ...
    Regards,
    Rahul

Maybe you are looking for