HTML Address in ABAP Code
I have created some new R/3 screens that are viewed within MSS. On one of these screens I want to add a web address on the screen that users can click on the address and a separate screen opens up to the web page.
for lists you can use this.
WRITE: / 'click here to go to' .
FORMAT HOTSPOT ON.FORMAT INTENSIFIED ON.
WRITE: 'www.google.com'. HIDE URL_TABLE.
FORMAT HOTSPOT OFF.FORMAT INTENSIFIED OFF.
AT LINE-SELECTION.
data: fnam(40) ,
fval(300) .
get cursor field fnam value fval .
CALL FUNCTION 'CALL_BROWSER'
EXPORTING
URL = fval
WINDOW_NAME = ' '
NEW_WINDOW = ' '
BROWSER_TYPE = BROWSER_TYPE
CONTEXTSTRING = CONTEXTSTRING
EXCEPTIONS
FRONTEND_NOT_SUPPORTED = 1
FRONTEND_ERROR = 2
PROG_NOT_FOUND = 3
NO_BATCH = 4
UNSPECIFIED_ERROR = 5
OTHERS = 6
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Regards
Raja
Similar Messages
-
Hi Experts,
Can any body tell me, how to convert all abap codes in my SAP system to HTML format for creating backup, in one go.
Thanx
Rajiv RanjanHI,
I don't know if it wil be of any help. But you could always convert a ABAP report into a TXT file
DATA: I_LINES TYPE T_LINES OCCURS 1000.
DATA: BEGIN OF I_TEXT OCCURS 1000,
TEXT(72).
DATA: END OF I_TEXT.
Read the source code into the internal table
READ REPORT ABAP INTO I_TEXT.
Loop over the source lines
LOOP AT I_TEXT.
Setup Transfer
MOVE C_ID_SOURCE TO S_SOURCE-ID.
MOVE I_TEXT-TEXT TO S_SOURCE-LINE.
Fill up download file
MOVE S_SOURCE-LINE TO WA_LINES.
APPEND WA_LINES TO I_LINES.
ENDLOOP.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = FILENAME
FILETYPE = 'ASC'
MODE = ''
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
IMPORTING
FILELENGTH = W_FILE_LENGTH
TABLES
DATA_TAB = I_LINES
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
Edited by: Jürgen Degraeve on Jan 15, 2008 3:52 PM
Edited by: Jürgen Degraeve on Jan 16, 2008 6:42 AM
Edited by: Jürgen Degraeve on Jan 16, 2008 6:49 AM -
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 eckesSAP 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 moduleR for reportT for transactionU 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 objectF for functional objectO for confidential objectC 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 addressU 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> -
Reg: ABAP code for customer exit variable
Hi Team,
I have a requirement to create a report based on an multiprovider 'TEST'.
Based on the input selection of Period; I need to define a Keyfigure X which will be a count of value available for that Period in one cube involved in the MProvider. E.g.: If for period 12, the value = 1 in the cube; then this keyfigure will give the count as 1 in the output of the report.
The second KF Y values are available in the second infocube directly: ibut should be displayed based on the value of the KF 'X' with logic as if X > 0 ; then the values should be read from the second infocube in the report. & if X <= 0; no values should be displayed.
Please help me with the ABAP code to be used in the query level.
Thanks & Regards
SnehaHi Sneha,
I would suggest the following
1.Please change the design the cube and include a key figure Zcount that would be incremented for each record.
Now as per the first requirement you need to get the count for a Input Period from First cube
This would be very simple to implement , all you have to do is restrict this KF with the Input characteristic/variable and also the First Infocube.
2.You can also use exception aggreation counter to address this requirement . Even in this case you need to include a dummy key figure in the cube and the exception characteristic would be the period in the Infocube.
But performance would be on downside when compared to the first one.
3.The second requirement is quite simple
Create a formula KF as follows
(KF1 > 0)*KF2 .
KF1 > 0 is a logical operation and it would always return 1 on success and 0 otherwise.
Hope this helps,
Regards,
James Harold. -
Structure of abap code in fi module
Hi all
I joined like fresher could you help me how to write the abap code
structure of the abap codeCHECK THIS
I HOPE IT WILL HELP YOU.
*& Report ZDTK_FI_CRDB
*& DESCRIPTION : CREDIT DEBIT NOTE FOR CUSTOMER OR VENDOR.
REPORT ZDTK_FI_CRDB NO STANDARD PAGE HEADING
LINE-COUNT 65(5)
LINE-SIZE 80
MESSAGE-ID ZTAR_FI
*& STRUCTURE DECLARATION
TYPES : BEGIN OF TY_ADDR,
BUKRS TYPE BUKRS, "COMPANY CODE
LIFNR TYPE LIFNR, "VENDOR NO
KUNNR TYPE KUNNR, "CUSTOMJER NO
NAME1 TYPE NAME1, "NAME1
NAME2 TYPE NAME2, "NAME2
ORT01 TYPE ORT01, "CITY
ORT02 TYPE ORT02,
PSTLZ TYPE PSTLZ, "POSTAL CODE
STRAS TYPE STRAS, "STREET
ADRNR TYPE ADRNR, "ADDRESS NO
TELF1 TYPE TELF1, "TELEFHONE NO
TELF2 TYPE TELF2, "TELEFHONE NO 2
TELFX TYPE TELFX, "FAX
END OF TY_ADDR,
BEGIN OF TY_LFA1,
KUNNR TYPE KUNNR, "CUSTOMJER NO
NAME1 TYPE NAME1, "NAME1
NAME2 TYPE NAME2, "NAME2
ORT01 TYPE ORT01, "CITY
ORT02 TYPE ORT02,
PSTLZ TYPE PSTLZ, "POSTAL CODE
STRAS TYPE STRAS, "STREET
ADRNR TYPE ADRNR, "ADDRESS NO
TELF1 TYPE TELF1, "TELEFHONE NO
TELF2 TYPE TELF2, "TELEFHONE NO 2
TELFX TYPE TELFX, "FAX
END OF TY_LFA1,
BEGIN OF TY_DOCM,
GJAHR TYPE GJAHR,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
BLDAT TYPE BLDAT,
BLART TYPE BLART,
BSCHL TYPE BSCHL,
SHKZG TYPE SHKZG,
XBLNR TYPE XBLNR,
DMBTR TYPE DMBTR,
SGTXT TYPE SGTXT,
REBZG TYPE REBZG,
REBZJ TYPE REBZJ,
KUNNR TYPE KUNNR,
LIFNR TYPE LIFNR,
END OF TY_DOCM.
*& TABLE DECLARATION
DATA : T_ADDR TYPE STANDARD TABLE OF TY_ADDR,
*& WORK AREA DECLARATION
W_ADDR TYPE TY_ADDR,
W_DOCM TYPE TY_DOCM,
W_LFA1 TYPE TY_LFA1,
*& GLOBLE VARIABLE DECLARATION
G_KUNNR TYPE KUNNR,
G_LIFNR TYPE LIFNR,
DCAMT TYPE DMBTR.
*& INITIALIZATION
INITIALIZATION.
CLEAR :
*REFRESH :
*& SELECTION SCREEN DECLARATION
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS : S_BUKRS TYPE BSID-BUKRS OBLIGATORY DEFAULT '1000'.
PARAMETERS : S_BELNR TYPE BELNR_D OBLIGATORY DEFAULT '1600000070'.
PARAMETERS : S_GJAHR TYPE GJAHR OBLIGATORY DEFAULT '2008'.
PARAMETERS : ASON TYPE BUDAT OBLIGATORY DEFAULT SY-DATUM.
PARAMETERS : S_KUNNR TYPE KUNNR MODIF ID GP1.
PARAMETERS : S_LIFNR TYPE LIFNR MODIF ID GP2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN : END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS R1 RADIOBUTTON GROUP RAO DEFAULT 'X' USER-COMMAND hit.
SELECTION-SCREEN COMMENT (50) TEXT-003 FOR FIELD R1.
PARAMETERS R2 RADIOBUTTON GROUP RAO.
SELECTION-SCREEN COMMENT (50) TEXT-004 FOR FIELD R2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK B2.
*SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-005.
*SELECTION-SCREEN SKIP 1.
*SELECTION-SCREEN BEGIN OF LINE.
*PARAMETERS R3 RADIOBUTTON GROUP RAJ DEFAULT 'X' USER-COMMAND hit.
*SELECTION-SCREEN COMMENT (50) TEXT-006 FOR FIELD R1.
*PARAMETERS R4 RADIOBUTTON GROUP RAJ.
*SELECTION-SCREEN COMMENT (50) TEXT-007 FOR FIELD R2.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN SKIP 1.
*SELECTION-SCREEN : END OF BLOCK B3.
*& AT SELECTION SCREEN
AT SELECTION-SCREEN.
PERFORM VALIDATE_SELECTION.
*& AT SELECTION SCREEN OUTPUT
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_OUTPUT.
*& START OF SELECTION
START-OF-SELECTION.
IF R1 = 'X'.
PERFORM GET_DOCUMENT_L.
ELSEIF R2 = 'X'.
PERFORM GET_DOCUMENT_K.
ENDIF.
*& END OF SELECTION
END-OF-SELECTION.
PERFORM DISPLAY.
*& TOP OF PAGE
*TOP-OF-PAGE.
PERFORM PAGE_HEADER.
*& Form VALIDATE_SELECTION
text
form VALIDATE_SELECTION .
DATA : L_BUKRS TYPE BSID-BUKRS.
SELECT SINGLE BUKRS FROM KNB1
INTO L_BUKRS
WHERE BUKRS = S_BUKRS.
*IF SY-SUBRC <> 0.
*MESSAGE E001.
*LEAVE LIST-PROCESSING.
*ENDIF.
DATA : L_KUNNR TYPE BSID-KUNNR.
SELECT SINGLE KUNNR FROM BSID
INTO L_KUNNR
WHERE KUNNR = S_KUNNR.
*IF SY-SUBRC <> 0.
*MESSAGE E002.
*LEAVE LIST-PROCESSING.
*ENDIF.
endform. " VALIDATE_SELECTION
*& Form SCREEN_OUTPUT
text
form SCREEN_OUTPUT .
IF R1 = 'X'.
LOOP AT SCREEN.
if screen-group1 = 'GP1'.
SCREEN-active = '0'.
*SCREEN-INTENSIFIED = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-group1 = 'GP2'.
SCREEN-active = '0'.
*SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
endform. " SCREEN_OUTPUT
*& Form GET_DOCUMENT_L
text
FORM GET_DOCUMENT_L .
DATA : MESSG(60).
SELECT SINGLE BUKRS
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSIK
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSIK INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_LFA1.
ELSE.
SELECT SINGLE BUKRS
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSAK
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSAK INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_LFA1.
ELSE.
CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR VENDOR' INTO MESSG
SEPARATED BY SPACE.
MESSAGE I011 WITH MESSG.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " GET_DOCUMENT_L
*& Form GET_LFA1
text
FORM GET_LFA1 .
SELECT SINGLE LIFNR
NAME1
NAME2
ORT01
ORT02
PSTLZ
STRAS
ADRNR
TELF1
TELF2
TELFX FROM LFA1 INTO CORRESPONDING FIELDS OF W_ADDR
WHERE LIFNR = W_DOCM-LIFNR.
ENDFORM. " GET_LFA1
*& Form GET_DOCUMENT_K
text
FORM GET_DOCUMENT_K .
DATA : MESSG(60).
SELECT SINGLE BUKRS
KUNNR
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSID
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSID INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_KNA1.
ELSE.
SELECT SINGLE BUKRS
KUNNR
LIFNR
GJAHR
BELNR
BUDAT
BLDAT
BLART
BSCHL
SHKZG
DMBTR
SGTXT
REBZG
REBZJ FROM BSAD
INTO CORRESPONDING FIELDS OF W_DOCM
WHERE BUKRS = S_BUKRS AND
GJAHR = S_GJAHR AND
BELNR = S_BELNR.
SELECT SINGLE DMBTR FROM BSAD INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ.
IF NOT W_DOCM IS INITIAL.
PERFORM GET_KNA1.
ELSE.
CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR CUSTOMER' INTO MESSG
SEPARATED BY SPACE.
MESSAGE I011 WITH MESSG.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " GET_DOCUMENT_K
*& Form GET_KNA1
text
FORM GET_KNA1 .
SELECT SINGLE KUNNR
NAME1
NAME2
ORT01
ORT02
PSTLZ
STRAS
ADRNR
TELF1
TELF2
TELFX FROM KNA1 INTO CORRESPONDING FIELDS OF W_ADDR
WHERE KUNNR = W_DOCM-KUNNR.
ENDFORM. " GET_KNA1
*& Form DISPLAY
text
FORM DISPLAY .
LONG TEXT *************************
*DATA : BEGIN OF inline OCCURS 0,
*END OF inline.
*TYPES: BEGIN OF TY_LONGT,
tdformat TYPE tdformat,
tdline TYPE tdline,
END OF TY_LONGT.
*DATA : TLONGT TYPE STANDARD TABLE OF TY_LONGT,
WLONGT TYPE TY_LONGT.
DATA: BEGIN OF DTEXT OCCURS 50.
*DATA: MATNR LIKE PBIM-MATNR.
INCLUDE STRUCTURE TLINE.
DATA: END OF DTEXT.
DATA: BEGIN OF HTEXT.
INCLUDE STRUCTURE THEAD.
DATA: END OF HTEXT.
DATA: BEGIN OF LTEXT OCCURS 50.
INCLUDE STRUCTURE TLINE.
DATA: END OF LTEXT.
DATA: TNAME LIKE THEAD-TDNAME.
CONCATENATE S_BUKRS W_DOCM-BELNR S_GJAHR '002' INTO TNAME.
*SEPARATED BY SPACE.
DATA : W_STXL TYPE STXL.
SELECT SINGLE * FROM STXL INTO W_STXL
WHERE TDNAME = TNAME.
IF NOT W_STXL IS INITIAL.
*SELECT * FROM PBIM WHERE WERKS IN S_WERKS.
*MOVE PBIM-BDZEI TO TNAME.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = W_STXL-TDID
LANGUAGE = W_STXL-TDSPRAS
NAME = TNAME
OBJECT = W_STXL-TDOBJECT
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER = HTEXT
TABLES
LINES = LTEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 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.
LOOP AT LTEXT.
IF LTEXT-TDLINE NE ''.
MOVE LTEXT-TDLINE TO DTEXT-TDLINE.
APPEND DTEXT.
ENDIF.
ENDLOOP.
ENDIF.
LONG TEXT *************************
CUSTOMER / VENDOR NO *************************
DATA : CUVE(10).
IF R1 = 'X'.
CUVE = W_ADDR-LIFNR.
ELSEIF R2 = 'X'.
CUVE = W_ADDR-KUNNR.
ENDIF.
CUSTOMER / VENDOR NO *************************
CR / DR DATA *************************
IF DCAMT IS INITIAL.
SELECT SINGLE DMBTR FROM BSIS INTO DCAMT
WHERE BELNR = W_DOCM-REBZG AND
GJAHR = W_DOCM-REBZJ .
( KOART = 'D' OR KOART = 'K' ).
ENDIF.
CR / DR DATA *************************
DATA: CNAME TYPE BUTXT.
SELECT SINGLE BUTXT FROM T001 INTO CNAME
WHERE BUKRS = S_BUKRS.
DATA : NAME(60),
STREET(60),
TELFX(60).
CONCATENATE W_ADDR-NAME1 W_ADDR-NAME2 INTO NAME
SEPARATED BY SPACE.
CONCATENATE W_ADDR-ORT01 W_ADDR-ORT02 'POSTAL CODE :' W_ADDR-PSTLZ INTO STREET
SEPARATED BY SPACE.
CONCATENATE 'Tel No.:' W_ADDR-TELF1 W_ADDR-TELF2 'FAX :' W_ADDR-TELFX INTO TELFX
SEPARATED BY SPACE.
DATA : CRDB(20),
CRDBA(16),
BALC TYPE DMBTR.
IF W_DOCM-SHKZG = 'S'.
CRDB = 'Debit Note No. :'.
CRDBA = 'DEBIT'.
BALC = DCAMT + W_DOCM-DMBTR.
ELSEIF W_DOCM-SHKZG = 'H'.
CRDB = 'Credit Note No. :'.
CRDBA = 'CREDIT'.
BALC = DCAMT - W_DOCM-DMBTR.
ENDIF.
SKIP 5.
*FORMAT INVERSE.
ULINE 03(77).
WRITE : 03 SY-VLINE, 80 '|',
/03 SY-VLINE, NAME, 54 'Party No.:' COLOR 7, CUVE COLOR 7, 80 '|',
/03 SY-VLINE, W_ADDR-STRAS, 80 '|',
/03 SY-VLINE, STREET, 80 '|',
/03 SY-VLINE, TELFX, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 05 CNAME COLOR 2, 80 '|',
/03 SY-VLINE, 36 CRDB RIGHT-JUSTIFIED, 59 W_DOCM-BELNR, 71 W_DOCM-GJAHR, 80 '|',
/03 SY-VLINE, 58 'DATE :', W_DOCM-BUDAT, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|'.
IF NOT DTEXT IS INITIAL.
LOOP AT DTEXT.
WRITE : /03 SY-VLINE, 05 DTEXT-TDLINE COLOR 1, 80 '|'.
ENDLOOP.
ELSEIF W_DOCM-SGTXT NE ''.
WRITE : /03 SY-VLINE, 05 W_DOCM-SGTXT COLOR 1, 80 '|'.
ELSE.
WRITE : /03 SY-VLINE, 80 '|'.
ENDIF.
WRITE : /03 SY-VLINE, 80 '|',
*WRITE : /03 SY-VLINE, TNAME, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 08 'WORKING OF INTEREST CALCULATION AS ON ' COLOR 4,
47 ASON COLOR 4, ' [ 360 DAYS BASIS ]' COLOR 4, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 11 'DATE', 23 'INVOICE', 41 CRDBA, 55 'BALANCE', 64 'DAYS', 70 'INTEREST', 80 '|',
/03 SY-VLINE, 23 ' AMOUNT', 41 'AMOUNT', 55' AMOUNT', 70 ' @ 8.00% ', 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|',
/03 SY-VLINE, 06 W_DOCM-BUDAT, 15 DCAMT, 32 W_DOCM-DMBTR, 47 BALC, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
WRITE : /03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 10 'PREPARED BY', 35 'ACCOUNTANT', 60 'MANAGER', 80 '|',
/03 SY-VLINE, 80 '|',
/03 SY-VLINE, 80 '|'. ULINE 03(77).
ENDFORM. " DISPLAY -
How to view HTML document through ABAP in CRM
Hi,
I have an internal table with one field type string containing html code.
How can i see the output of that html document in SAP CRM using ABAP code.
Is there any standard function module to display the document by passing the internal table?
Please help.
Regards
Kiranyou can use cl_gui_htmlviewer control to do this.
check the demo program
SAPHTML_DEMO1
RSDEMO_HTML_VIEWER
or you can use dynamicdocuments for the same check out samples programs in package
SDYNAMICDOCUMENTS
Regards
Raja -
How to translate an excel macro to ABAP code
Hi Guys,
My requirement is need to put the subtotaling option w.r.t divison when i download the file to an excel sheet via OLE.
Iam able to get the records in the excel sheet but unable to write the macro in ABAP code.
the macro which i recorded in Excel is
Range("A1:C3").Select
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
how do i convert this into ABAP code .Pls help. Thanks...
the data might be like
NAME DIVISION AMOUNT
ABC IT 400
DEF BPO 500
HTG IT 400Hi,
You can run an excel macro like this
CREATE OBJECT h_excel 'EXCEL.APPLICATION'.
Call Method of h_excel 'WORKBOOKS' = h_mapl.
set property of h_excel 'VISIBLE' = 0.
Call Method of h_mapl 'OPEN'
EXPORTING
#1 = d_file.
CALL METHOD OF H_EXCEL 'ActiveWorkbook' = h_book .
CALL METHOD OF H_book 'Activesheet' = H_sheet .
CALL METHOD OF h_excel 'RUN'
EXPORTING
#1 = ld_macro.
Check the links below as well
http://sample-code-abap.blogspot.com/2009/07/controlling-excel-using-ole-automation.html
http://arthur_ong.tripod.com/xab017.htm -
ABAP code to automatic generate an BW Report
HI Sap BW gurus,
Can anyone tell me if exists an abap code to automatic generate an report from a query and save it on an directory in HTML format?
Thanks in advanced,
Pedro MartinsYou can use this tool...
/people/durairaj.athavanraja/blog/2005/04/03/execute-bw-query-using-abap-part-i
but then you would have to store it into an application server directory as HTML - there is also a how to paper by the same author which you can use... which talks about email query results in HTML
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b7658119-0a01-0010-39a9-b600c816f370;jsessionid=%28J2EE3414800%29ID1001478750DB10940138154678751341End -
Running abap code when Browser is closed,
Hi,
In my application, need to delete couple of rows in a table when the user closes the browser. In order to do this i have written a JavaScript when executes itself when the browser closes. When i code a alert message it executes fine when the browser closes but, when i write an abap code it gets executed when the page loads itself. I have tried to methods. Both aren't working.
Method1 :
<%@page language="abap" %>
<html>
<head>
</head>
<script language="JavaScript">
window.onunload = unloadHandler;
function unloadHandler() {
<%
delete from ZDATALOCK
where auid = sy-uname.
%>
</script>
<body>
<tr>
<td>
<table border="0" width="100%" height="100%" align="center">
<tr>
<td>
<iframe src = "mas.do"
style = " overflow:visible; height:100%; width:100%; "
name = "Form"
marginheight = "0"
marginwidth = "0"
frameborder = "0">
</iframe>
</td>
</tr>
</table>
</td>
</tr>
</body>
</html>
Method2 :
<%@page language="abap" %>
<html>
<head>
</head>
<script language="JavaScript">
function dellock() {
<%
delete from ZDATALOCK
where auid = sy-uname.
%>
</script>
<body onunload=dellock()>
<tr>
<td>
<table border="0" width="100%" height="100%" align="center">
<tr>
<td>
<iframe src = "mas.do"
style = " overflow:visible; height:100%; width:100%; "
name = "Form"
marginheight = "0"
marginwidth = "0"
frameborder = "0">
</iframe>
</td>
</tr>
</table>
</td>
</tr>
</body>
</html>
Kindly help.Hi,
ABAP code is server side and JS is client sides. You can't execute ABAP on the front end. What I suggest is that you submit a form before you actually close a window.
document.someform.submit();
window.setTimeout('window.close()',5000);
The close will only happen after 5000ms.
Check http://www.devguru.com/Technologies/ecmascript/quickref/win_settimeout.html for details.
in the oninputprocessing you can do your
delete from ZDATALOCK
where auid = sy-uname.
Also check /people/eddy.declercq/blog/2006/03/20/wake-me-up-before-you-go-go
Eddy -
Trying to load this site
http://southcarolina.247sports.com/
and it redirects me to this address
http://media.247sports.com/Oops.html?aspxerrorpath=/
and gives me the error message. "You tried to use HTML or other restricted code. We, currently, do not allow HTML or other types of code in our message board posts or signatures. Try again with simple text only. "
Thanks for your helpClear the cache and the cookies from sites that cause problems.
* "Clear the Cache": Tools > Options > Advanced > Network > Offline Storage (Cache): "Clear Now"
* "Remove the Cookies" from sites causing problems: Tools > Options > Privacy > Cookies: "Show Cookies"
Start Firefox in [[Safe Mode]] to check if one of the add-ons is causing the problem (switch to the DEFAULT theme: Tools > Add-ons > Themes).
* Don't make any changes on the Safe mode start window.
See:
* [[Troubleshooting extensions and themes]] -
Send BW query results as HTML email from ABAP program
I have published a code sample for sending BW query results as HTML email from ABAP program. if you have any questions or clarification, please post them here.
the same can be accessed from this link.
http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/b7658119-0a01-0010-39a9-b600c816f370
Regards
Raja
Message was edited by: Durairaj Athavan RajaOK forget about my earlier post.
do the following changes.
declare the following variables:
data: xtext type standard table of solix .
DATA: atta_sub TYPE sood-objdes .
after the call of FM SCMS_STRING_TO_FTEXT add the following code.
CALL FUNCTION 'SO_SOLITAB_TO_SOLIXTAB'
EXPORTING
ip_solitab = text
IMPORTING
EP_SOLIXTAB = xtext .
and after the following statement
document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = text
i_length = conlengths
i_subject = subject ).
add the following code
CALL METHOD document->add_attachment
EXPORTING
i_attachment_type = 'htm'
i_attachment_subject = atta_sub
i_att_content_hex = xtext.
now you will have results both in the body as well as attachment. (this is for test you can remove one of them )
Regards
Raja -
Creating an xml file from abap code
Hello All,
Please let me know which FM do I need to execute in order to create an XML file from my ABAP code ?
Thanks in advance,
Paul.This has been discussed before
XML files from ABAP programs -
Hi All,
I need to use unix command (MOVE) in ABAP code for transfering a file from one directory to another directory.
Can any one help with how to used unix commands in ABAP?
Thanks in advance.
Regards,
HemendraThe recommended approach always used to be to use transaction SM69 to define a "soft" command name to the operating system command so that it could be configured to work across Windows, Unix etc. For example:
Command name OS Type OS command Parameters for operating system command
Z_FILE_MOVE SunOS Customer mv ? ?
You can then call function module SXPG_COMMAND_EXECUTE (quite well documented) to actually perform the command passing in the appropriate number of parameters.
Jonathan -
Needs sample ABAP code for field routine
Dear Expert,
There is a field "Pay Scale Group" in my DSO which stores the data in the format
AA1/B1/CCC2/DD2/EEE1, A1/BB2/CC2/DDD3/EE2 etc. These data has to be transferred to
InfoCube where "pay Scale Group" in the InfoCube will store the data like EEE1,EE2 etc.
I need to write a field routine on the transformation between DSO and Cube.
Can any one please help me with the sample ABAP code for this scenario.
Some more examples for better understanding of the requirement:-
Data in DSO(Source) Data in Cube(Target)
=================== ===================
AA1/B1/CCC2/DD2/EEE1 EEE1
AAA1/BB2/CC1/DDD3/EE2 EE2
A2/BBB2/CC2/DDD3/EEE5 EEE5
AA2/BB1/C1/DDD3/EE3 EE3
A3/B1/CC2/DDD1/EE4 EE4
Many thanks in advance.
Regards,
Prakash
Please do not dump your code requirements in SDN
Edited by: Pravender on May 18, 2011 11:37 AMHi,
You can use the following code :
Suppose the technical name of the field coming from DSO is ZPAY_SGRP.
And also for example let me take one record, that is ZPAY_SGRP = AA1/B1/CCC2/DD2/EEE1 .
My assumption is that there will always be 4 '/'.
In the field routine write the below code
data: V1(5) type c,
V2(5) type c,
V3(5) type c,
V4(5) type c,
V5(5) type c.
data : VAR1 TYPE /BIC/OIZPAY_SGRP.
split VAR 1 at '/' into V1 V2 V3 V4 V5.
result = V5.
V5 will be having the characters after the last '/' .That is V5 = EEE1.
Hope the above reply was helpful.
Kind Regards,
Ashutosh Singh
Edited by: Ashutosh Singh on May 17, 2011 3:53 PM
Edited by: Ashutosh Singh on May 17, 2011 4:17 PM -
Sample ABAP code for userexits, and calling bapi's
Hi,
Can someone please send me sample ABAP code
1) to do extractor enhancement using user exit.
2) ABAP program to call BAPI to read live cache order series data in SNP and write to Idocs through some ports.
3) ABAP routine to generate file name (based on date/country)in the infopackage to upload flatfiles.
Thank you very much in advance and appreciate any help.
Regards
Prasadhai ,
check this code...
*& Tables
tables : tstc, "SAP Transaction Codes
tadir, "Directory of Repository Objects
modsapt, "SAP Enhancements - Short Texts
modact, "Modifications
trdir, "System table TRDIR
tfdir, "Function Module
enlfdir, "Additional Attributes for Function Modules
tstct. "Transaction Code Texts
*& Variables
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
*& Selection Screen Parameters
selection-screen begin of block a01 with frame title text-001.
selection-screen skip.
parameters : p_tcode like tstc-tcode obligatory.
selection-screen skip.
selection-screen end of block a01.
*& Start of main program
start-of-selection.
Validate Transaction Code
select single * from tstc
where tcode eq p_tcode.
Find Repository Objects for transaction code
if sy-subrc eq 0.
select single * from tadir
where pgmid = 'R3TR'
and object = 'PROG'
and obj_name = tstc-pgmna.
move : tadir-devclass to v_devclass.
if sy-subrc ne 0.
select single * from trdir
where name = tstc-pgmna.
if trdir-subc eq 'F'.
select single * from tfdir
where pname = tstc-pgmna.
select single * from enlfdir
where funcname = tfdir-funcname.
select single * from tadir
where pgmid = 'R3TR'
and object = 'FUGR'
and obj_name = enlfdir-area.
move : tadir-devclass to v_devclass.
endif.
endif.
Find SAP Modifactions
select * from tadir
into table jtab
where pgmid = 'R3TR'
and object = 'SMOD'
and devclass = v_devclass.
select single * from tstct
where sprsl eq sy-langu
and tcode eq p_tcode.
format color col_positive intensified off.
write:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
skip.
if not jtab[] is initial.
write:/(95) sy-uline.
format color col_heading intensified on.
write:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
write:/(95) sy-uline.
loop at jtab.
select single * from modsapt
where sprsl = sy-langu and
name = jtab-obj_name.
format color col_normal intensified off.
write:/1 sy-vline,
2 jtab-obj_name hotspot on,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
endloop.
write:/(95) sy-uline.
describe table jtab.
skip.
format color col_total intensified on.
write:/ 'No of Exits:' , sy-tfill.
else.
format color col_negative intensified on.
write:/(95) 'No User Exit exists'.
endif.
else.
format color col_negative intensified on.
write:/(95) 'Transaction Code Does Not Exist'.
endif.
Take the user to SMOD for the Exit that was selected.
at line-selection.
get cursor field field1.
check field1(4) eq 'JTAB'.
set parameter id 'MON' field sy-lisel+1(10).
call transaction 'SMOD' and skip first screen.
Maybe you are looking for
-
IPOD to Sony Receiver to TV???
Does the IPOD have to be connected directly to a TV to work properly? I did that with one TV in my house through RCA input on the TV and it worked ok. Connected the IPOD to my video three input (RCA connection) on my Sony Stereo, which is connect to
-
Update Groups Not Providing Deployment Status
Software Updates Groups for Windows 7 were created on a monthly basis from November 2013 to June 2014. Each of these deployments are having issues reporting any data in the "Deployments" Section of SCCM. Patch groups created prior to November 2013, a
-
Shipment cost pricing report - Scaled
Hi, We created multi dimentional scales for shipment costing. May i know if there are SAP standard reports (like V/LD for pricing) that we can use to view the data along with scales? Thanks Venkat
-
Error when trying to send scan pic thru e-mail
i scanned a pic to the puter as a jpeg file to send to e-mail contact and get and error message bout no e-mail association's so i can not get pics sent
-
Every time I try to start a new message in iMessage on my Mac Mini (OS is Yosemite) it crashes. Any ideas on what might be wrong? Here is report that comes up after crash. Process: Messages [504] Path: /Applications/