Can the target system in the REF command dynamically be specified?
Hello all,
I have a main script which calls additional other scripts in different target systems (according to a defined system landscape). So far so good. Now when I have another system landscape in place, it's very likely that I have to handle other target systems.
With the REF command I can call these other eCatt scripts but how can I dynamically specify the target system? According to the eCatt team this is not possible. Does anyone of you have an idea how I can have a workaround? Is there a BADI / Userexit etc. which I can use?
I want to avoid to work with version, because I would duplicate the script. When you maintain one place you also have to remember the other versions you have.
Kind regards,
Thomas
Hi Thomas,
>Now when I have another system landscape in place, it's very likely that I have to handle other target systems.
I suggest to keep the target system at the REF command (since that anyway should have a name which qualifies the role of your system instead of system name, e.g. ERP or CRM or SCM ).
To change the landscape you can exchange what makes up the landscape: your system data container.
Sample:
1) SCRIPT "Scenario" call SCRIPT "Create_Order" in system CS1 which is CRM system
2) SCRIPT "Scenario" call SCRIPT "Check_Replicated_Order" in system ER1 which would be ERP system
As long as you are about to code the scripts:
- Have a system data container SD_DEV
- Define system CRM with rfc-destination to CS1 and ERP with rfc to ER1
- In your scripts only use the terms ERP and CRM
-> REF ( Create_Order, CRM ).
-> REF ( Check_Replicated_Order , ERP ).
Once you come to test another landscape:
- Simple copy SDC SD_DEV to SD_TEST_LANDSCAPE1
- Exchange only the rfc destinations to have ERP and CRM point to new systems
(don't modify the existing destination, since you will need them still)
Now start your Script "Scenario" with System data container SD_TEST_LANDSCAPE1 on start screen or even assign the system data container name in Test organizer at test package level.
This is the way you can switch landscapes very easily. It only requires to use logical target system names from the beginning.
Hope this helps or at least starts a discussion about it.
Best regards
Jens
Similar Messages
-
Can the SQL command be echoed in the Results area?
It would be vary helpful to have the SQL command to be displayed in the Results area before the actual results are displayed.
If this can be done, how?
JimHi Jim,
In the worksheet, try set echo on. Apparently it has worked since some fairly early SQL Developer versions:
SET ECHO ON?
Regards,
Gary Graham
SQL Developer Team -
ECATT: Dynamic target system for pattern REF possible?
Hello
I am using eCATT on a Solution Manager (NetWeaver 700). I have to run the test scripts on several different SAP systems.
Therefore, I would like to know whether it is possible to set the target system within the pattern <b>REF </b>(<i>executes another eCATT test script, either on local or remote system</i>) <b><i>dynamically</i></b>?
Definite proof that this is <b>not </b>possible is also welcome.
I am aware that I can replace the REF pattern by a corresponding ABAP...ENDABAP coding, e.g.:
FUN ( BAPI_USER_EXISTENCE_CHECK , BAPI_USER_EXISTENCE_CHECK_1, <target_system> ).
Replace by:
ld_rfcdest = id_rfcdest.
ABAP.
CLEAR: ls_return.
CALL FUNCTION 'BAPI_USER_EXISTENCE_CHECK'
DESTINATION ld_rfcdest
EXPORTING
username = id_username
IMPORTING
return = ls_return.
" NOTE: Not necessary to handle RFC exceptions -> done by eCATT framework
ENDABAP.
" evaluate ls_return...
However, I would prefer - if possible - to use the REF pattern.
Regards,
UweHello
In case you may need this functionality here is (one possible) solution.
The testscript <b>ZUS_SDN_ECATT_DYNAMIC_TARGET</b> calls testscript ZUS_SDN_LOGICAL_SYSTEM_GET dynamically on different target systems.
Testscript ZUS_SDN_ECATT_DYNAMIC_TARGET:
*ECSC Test Script
*ECTD Test Data Container
*ECSD System Data Container
*ECTC Test Configuration
ls_execute = is_execute.
ABAP.
APPEND ls_execute TO lt_execute.
ENDABAP.
et_execute = lt_execute.
FUN ( ECATT_EXECUTE , ECATT_EXECUTE_1 ).
CHEVAR( &EXCEPTION = ' ' ).
EXIT( &EXCEPTION <> ' ' ).
**FUN ( ECATT_LOG_DISPLAY , ECATT_LOG_DISPLAY_1 ).
The funny part of this script is the <b>FUN </b>pattern where I call function module <b>ECATT_EXECUTE</b> which is used to execute testscripts (or test configurations). As IMPORTING parameter we have a structure <b>START_PROFIL </b>where we can set the <b>SYSTEMDATA</b> (container) and the <b>TARGETSYSTEM</b>.
Hopefully I will find the time to explain this testscript and its possible use and implications in more detail in a blog.
Regards,
Uwe -
BAPI PROCESS ORDER Creation u2013 can the SCHEDULE Date/Time be specified?
I am currently using BAPI_PROCORD_CREATE to create a Process Order from an inbound IDOC. This works well, when I pass the following fields:
BAPI Parameter ORDERDATA
ORDER_NUMBER Process Order number (EXTERNAL)
MATERIAL Material to be produced
PLANT Plant
ORDER_TYPE Order Type
BASIC_START_DATE Start Date
BASIC_START_TIME Start Time
BASIC_END_DATE Basic End Date
BASIC_END_TIME Basic End Time
QUANTITY Process Order Quantity
QUANTITY_UOM Quantity Unit of Measure
However, I have a requirement to also specify the SCHEDULED Start Date (GSTRS) and End Dates (GLTRS), but the BAPI parameters do not the SCHEDULE Dates to be specified.
I have also used the functions CLOI_CHANGES_UPL_31 and CLOI_CHANGES_UPL_45 to create Process Orders successfully, but neither of these allow for the SCHEDULE dates to be passed in.
Does anyone know how I might be able to achieve such a result?
I am trying to avoid the use of CALL TRANSACTION on COR1, so would be grateful if anyone has any thoughts.
In the mean time, Iu2019ll ask the business if it would be possible to apply any rules by whereby if we specified a BASIC_START_DATE, whether it would be able to derive the correct schedule date accordingly.
PPu2019s not one of my better modules, so apologies if whatu2019s been asked above is a stupid question!
AlistairHI...
Pls chk in scheduling control for detailed scheduling in T code OPUZ. and change the scheduling type forwards to forwards in time and backwards to backwards in time.
Now when ever you would create the order system would ask the scheduling dates either start or finish in stead of Basic dates.
Instead of using BAPI you could make a simple LSMW pogram. It would talk 5 min.
This is a standard SAP functionality to select Basic dates because SAP consider all master data for scheduling like Schedule margin key.
I think It would help you.
Regards
Vivek -
Error when using the REF eCATT command ....
Hi,
When the REF command is used in an eCATT test script to execute another eCATT, only the first REF command executes successfully - all subsequent REF commands fail with these error msgs 'Error in eCATT function SAPGUI', 'Error in Control', 'Message raised at CL_APL_ECATT_LINE_INTERPRETER =CM00K LINE 347'.
Executed separately, the referenced eCATT test scripts are successful. Executed from one eCATT test script via the REF command, only the first REF command is successful. We are on SAP 6.7 6.40, GUI is 6.40 as well.
Any suggestions would be appreciated - Thanks !Thanks for the reply, Jonathan. Still having the same problem after implementing your suggestion. Any other suggestions you have would be appreciated.
The ResetGUI = 'X' was done for each command interface in the REFerenced test scripts. The ResetGUI statement was only found immediately after the 'Command Interface' statement (wasn't found after the 'Processed Screen' statement).
The error still happens for the second and all subsequent test scripts referenced by the 'REF' command. In the failed REF test scripts, the ConnectionID, SessionID, and SystemInfo statements are the failed statments (red lights beside them). These three statements are immediately after the ResetGUI = 'X' statment (which has a green light).
Different execution options have been tried, including closing, and not closing, generated GUI sessions.
Really at a loss here to figure out how to get the REF statement to work ! -
How to parameter Target System in eCATT
Dear all,
I would like to know if it is possible to have the Target System in the eCATT editor to parameterize them like the interfaces? In fact from solution manager I have to run a business scenario in diffrent satellite systems with RFC connections.
TCD (<transaction code>, <command interface> , TARGET_A).
TCD (<transaction code>, <command interface> , TARGET_B).
TCD (<transaction code>, <command interface> , TARGET_C).
etc.
Kind regards,
AkliluHello Aklilu,
as all people aggree, parametrizing is no option.
But it is even not needed to support your case.
What one should do is:
Use always the same eCATT target system (e.g.TARGET_A)for operations in one certain remote system (say A). Use another eCATT target system (e.g.TARGET_B) for another remote system (say B).
All these commands together can be part of one script or a couple of scripts and modules automating one business case, like in your sample. The target systems are defined in a systemdata container, e.g. SYS_DEV.
If that business case should be executed in another landscape, copy the system data container (e.g. to SYS_PROD), exchange the RFC destinations inside the copy and execute the script with that new system data container.
You even can create multiple testconfigurations refering to the script and assign the different system data container to each. Such you can avoid to type the different system data names again and again on eCATTs start screen.
In that sense eCATT Target Systems are already variables/parameters.
A last hint:
If you have multiple occurrence of a series of transactions in the same remote system, it is not needed to write the target system at each eCATT command. Simply aggregate the commands belonging together in one script and call that script from another one using REF with the target system.
Define TESTSCRIPT SOMETHING.
SAPGUI ( cmdi_ta_1 ).
SAPGUI ( cmdi_ta_2 ).
SAPGUI ( cmdi_ta_3 ).
In another script:
REF( SOMETHING, CMDI, TARGET_A ).
Works also with TCD, FUN, WEBDYNPRO, ....
Best regards
Jens -
OBN: How can we add the tcode of target system into Source System.?
Dear Experts,
I want to add a t-code ME53n of ERP) into a role as OBN target in my SAP TM.
I tried to add this t-code but could not find this t-code in SAP TM system.
How can we add the tcode of target system into Source System.?
I tries to import the role of target system but that does not work.
Please help!
Regards,
SaurabhHi Saurabh,
Logically there is no need to add a tcode of the target system in the source system.
If you have right roles in the system then system should allow you to add tcode in the OBN target simply by going to PFCG roles and using add transaction feature.
To make sure it works properly you have to check the Method & Parameter assignment to the newly added tcode.
Thanks & Regards,
Tarun Kumar -
can't print any web page. after the print command, it wants to save as a xps file.
== This happened ==
Every time Firefox opened
== after up grade to 3.6.6 ==
== User Agent ==
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)I found that Firefox/XPS had deleted all printer driver setups except for the XPS connection. I had to reinstall my printer connection in order to have that selection present in the printer dialogue box.
-
How to use FTP_COMMAND to put a file in the target system
Hi All,
I have the requirement to put an excel file from apllication server to another remote system for this i am using the function modules
1) FTP_CONNECT to connect to the sourece as well as the destination systems --- Here i am able to hit the both systems.
2) for sending the data to the target system i am using FTP_COMMAND by passing the 'put' statement along with the soruce and destinations for the command parameter.
See the bellow code
CONCATENATE 'put' v_fname '
' 'wbrs1\' folder
into cmd separated by space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = dhdl
command = cmd
COMPRESS = 'N'
VERIFY =
RFC_DESTINATION =
IMPORTING
FILESIZE =
FILEDATE =
FILETIME =
tables
data = result
EXCEPTIONS
TCPIP_ERROR = 1
COMMAND_ERROR = 2
DATA_ERROR = 3
OTHERS = 4
Here v_name is the file path and name in the application server suppose say :
/usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS
and wbrs1 is the target system and 'Waynesboro DFS' is the folder name i ma passing to the command .
Also I tried with the following statement
CONCATENATE 'put' v_fname '
' dhost folder
into cmd separated by space.
Here v_name is the file path and name in the application server suppose say :
/usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS,
Dhost is wbrs1.wb.na.webdti.com
And Waynesboro DFS is the folder .
Here i am getting the error as invalid argument.
See the bellow messages from result internal table.
put /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS
wbrs1\ Waynesboro DFS
open /usr/sap/TD2/DVEBMGS01/work/TD2_20060901_1008_WAY-LY.XLS errno 22: Invalid argument
Please let me know how i can resolve this problem and how can I put this file in the destination system.
Thanks in advance.
Regards,
Venkatcheck this code....here data is transferred from SAP to Informatica box..
REPORT zfo_phoenix_acc_reconciliation NO STANDARD PAGE HEADING
MESSAGE-ID zz
LINE-SIZE 255
LINE-COUNT 65.
PROGRAM DECLARATION
PROGRAM ID : ZFO_PHOENIX_ACC_RECONCILIATION
DESCRIPTION : Phoneix Account Reconcilation Program-Feed
Balance sheet account balances from GL
3 files needed to be enhanced. The files are " Master
Attribute File" & "Transaction File(GL Balance)". For
Master Attribute File, data needs to be retrieved from
T001, ZDATSRC_T, SKA1, T003, T856. The corresponding
data from all the tables is downloaded into file
according to the condition specified. For Transaction
File, data needs to be retrieved from ZGEIST based on
Ledger(GG), Record Type(0), Fiscal Year, Period(016).
Then the current period is used to determine which TSLxx
& KSLxx needs to be used. Also, the conditions are
specified in specs which have been used accordingly.
The final data fetched will need to processed as files
which neednot be downloaded to Presentation/Application
server. Instead the files are been FTPed to the
Informatica Server using FTP. The location where the
files need to be located is ERC\GLOBALSAP.
TABLES
TABLES : ADR6.
TYPES
Output File - Master COA(Chart of Account)
TYPES : BEGIN OF ty_coacode ,
coa_code(20), "COA Code
coa_description(50), "COA Description
field11 TYPE x, "Line Feed
END OF ty_coacode.
Output File - Master Account
TYPES : BEGIN OF ty_acctcode ,
act_code(20), "GL Account Number
act_desc(60), "GL Account Description
act_act_flag(1), "Account marked for deletion indicator
glact_type(1), "GL Account type
fi_line(20), "Corporate Financial Statement Line
coa_code(20), "COA Code
act_defcode(3), "Account Defination Code
field11 TYPE x, "Line Feed
END OF ty_acctcode.
Output File - Master Entity
TYPES : BEGIN OF ty_entitycode,
entity_code(12), "Entity Code
com_desc(40), "Company Name
coa_code(20), "COA Code
field11 TYPE x, "Line Feed
END OF ty_entitycode.
Output File - Master Attribute
TYPES : BEGIN OF ty_attribcode,
attrib_code(5), "Attribute Code
attrib_value(20), "Attribute Value
attrib_desc(60), "Attribute Description
field11 TYPE x, "Line Feed
END OF ty_attribcode.
Output File - Transaction GL Balance
TYPES : BEGIN OF ty_glbal,
gl_reccode(2), "GL Reconciliation Code
gl_entity(12), "GL Entity - Company Code
gl_accnum(20), "Gl Group Account Number
site(4), "Site
currency_type(6), "Transaction Currency Code
year(4) TYPE n, "Year
month(2) TYPE n, "Month
as_of_date(8), "Date Account Balance
tran_cur_amt(21), "Transaction Currency Amount
usd_amount(21), "USD Amount
racct(20), "GL Account Number
zzbewar(20), "Consolidation Transaction Type
zzdatsrc(20), "Data Source
zzblart(20), "Document Type
rassc(20), "Trading Partner
field1(20), "Attribute field1
field2(20), "Attribute field2
field3(20), "Attribute field3
field4(20), "Attribute field4
field5(20), "Attribute field5
field11 TYPE x, "Line Feed
END OF ty_glbal.
Output File - Control
TYPES :BEGIN OF ty_globalsap,
clnt_name(6), "Client Name
source_name(12), "Source Name
as_of_date(8), "AS of Date
time_stamp(6), "Time Stamp
time_zone(8), "Time Zone
num_of_files(3), "Number of Files
num_of_records(9), "Number of Records
user_ids(60), "User ID(s)
field11 TYPE x, "Line Feed
END OF ty_globalsap.
Int'table to hold ZGEIST Data
TYPES : BEGIN OF ty_zgeist_data,
rldnr TYPE rldnr, "Ledger
rrcty TYPE rrcty, "Record Type
rvers TYPE rvers, "Version
ryear TYPE gjahr, "Fiscal Year
rbukrs TYPE bukrs, "Company Code
racct TYPE racct, "Account Number
robjnr TYPE gobjnr_r, "Object Number for objects
cobjnr TYPE gobjnr_c, "Object Number for transaction
sobjnr TYPE gobjnr_s, "Object Number for partner
rtcur TYPE rtcur, "Currency Key
runit TYPE meins, "Base Unit of Measure
drcrk TYPE shkzg, "Debit/Credit Indicator
rpmax TYPE rpmax, "Period
rzzstagr TYPE stagr, "Statistical key figure
zzaltkt TYPE altkt, "Account Number in Group
zzdatsrc TYPE zdatsrc, "Data Source code
zzbewar TYPE rmvct, "Transaction Type
zzblart TYPE blart, "Document Type
rassc TYPE rassc, "Trading Partner
zzvbund TYPE rassc, "Trading Partner
tslvt TYPE tslvt9, "Transactional Currency
kslvt TYPE kslvt9, "Group Currency
END OF ty_zgeist_data.
Int'table to hold ZGEIST Error Data based on conditions
TYPES : BEGIN OF ty_zgeist_error_data,
rldnr TYPE rldnr, "Ledger
rrcty TYPE rrcty, "Record Type
rvers TYPE rvers, "Version
ryear TYPE gjahr, "Fiscal Year
rbukrs TYPE bukrs, "Company Code
robjnr TYPE gobjnr_r, "Object Number for objects
cobjnr TYPE gobjnr_c, "Object Number for transaction
sobjnr TYPE gobjnr_s, "Object Number for partner
rtcur TYPE rtcur, "Currency Key
runit TYPE meins, "Base Unit of Measure
drcrk TYPE shkzg, "Debit/Credit indicator
rpmax TYPE rpmax, "Period
END OF ty_zgeist_error_data.
FIELD SYMBOLS
FIELD-SYMBOLS : <fs> TYPE ANY.
CONSTANTS
DATA : c_selected TYPE c VALUE 'X', "Field for constant value 'X'
c_y TYPE c VALUE 'Y', "For Acc marked for deletion
c_n TYPE c VALUE 'N', "For Acc not marked for deletion
c_a TYPE c VALUE 'A', "For GL Account type Asset
c_l TYPE c VALUE 'L', "For GL Account type Liability
c_q TYPE c VALUE 'Q', "For GL Account type Equity
c_r TYPE c VALUE 'R', "For GL Account type Revenue
c_e TYPE c VALUE 'E', "For GL Account type Expense
c_t TYPE c VALUE 'T', "For GL Account type
c_userid(60) TYPE c ,
c_curtp TYPE curtp VALUE '10', "Currency type
c_curtp1 TYPE curtp VALUE '30', "Currency type
c_rassc(5) TYPE c VALUE 'RASSC', "Trading Partner
c_dtsrce(6) TYPE c VALUE 'DTSRC', "Data Source
c_sacct(5) TYPE c VALUE 'SACCT', "GL Account
c_docty(5) TYPE c VALUE 'DOCTY', "Document Type
c_trxtp(5) TYPE c VALUE 'TRXTP', "Transaction Type
c_tradptn(15) TYPE c VALUE 'Trading Partner', "Trading Partner
c_datsrc(11) TYPE c VALUE 'Data Source', "Data Source
c_glacc(10) TYPE c VALUE 'GL Account', "GL Account
c_doctyp(13) TYPE c VALUE 'Document Type', "Document Type
c_trantyp(16) TYPE c VALUE 'Transaction Type'. "Transaction Type
DATA (Simple Fields)
DATA: w_cnt1 TYPE i, "No Of records in output file COA Code
w_cnt2 TYPE i, "No Of records in output file Account
w_cnt3 TYPE i, "No Of records in output file Entity
w_cnt4 TYPE i, "No Of records in output file attribute
w_cnt5 TYPE i, "No Of records in output file GL Balance
w_tot_recs TYPE i, "TOtal number of records downloaded
w_date LIKE sy-datum, "System date
w_timediff LIKE sy-uzeit, "Time Difference to GMT
w_timezone(10) TYPE c, "Time Difference to GMT
w_file_count(3) TYPE n, "File Count
w_period TYPE poper, "To hold Period Value
w_year LIKE t009b-bdatj, "To hold Fiscal Year Value
w_outfile TYPE char64, "FTPed file path
w_hdl TYPE i. "Handle for FTP
INTERNAL TABLES
Intenal table for GL Account details
DATA: BEGIN OF it_gl_detail OCCURS 0,
saknr TYPE saknr,
txt50_skat TYPE txt50_skat,
xloev TYPE xloev,
END OF it_gl_detail.
DATA: it_company_list LIKE bapi0014_1 OCCURS 0 WITH HEADER LINE,
it_coacode TYPE STANDARD TABLE OF ty_coacode WITH HEADER LINE,
it_acctcode TYPE STANDARD TABLE OF ty_acctcode WITH HEADER LINE,
it_entitycode TYPE STANDARD TABLE OF ty_entitycode
WITH HEADER LINE,
it_attribcode TYPE STANDARD TABLE OF ty_attribcode
WITH HEADER LINE,
it_glbal TYPE STANDARD TABLE OF ty_glbal WITH HEADER LINE,
it_globalsap TYPE STANDARD TABLE OF ty_globalsap WITH HEADER LINE,
it_t001 TYPE STANDARD TABLE OF t001 WITH HEADER LINE,
it_zdatsrc TYPE STANDARD TABLE OF zdatsrc_t WITH HEADER LINE,
it_ska1 TYPE STANDARD TABLE OF ska1 WITH HEADER LINE,
it_t003 TYPE STANDARD TABLE OF t003 WITH HEADER LINE,
it_t856 TYPE STANDARD TABLE OF t856 WITH HEADER LINE,
it_zgeist_data TYPE STANDARD TABLE OF ty_zgeist_data
WITH HEADER LINE,
it_zgeist_data1 TYPE STANDARD TABLE OF ty_zgeist_data
WITH HEADER LINE,
it_zgeist_data_all TYPE STANDARD TABLE OF zgeist,
wa_it_zgeist_data1 TYPE ty_zgeist_data,
wa_it_zgeist_data TYPE zgeist,
it_zgeist_error_data TYPE STANDARD TABLE OF ty_zgeist_error_data,
wa_it_zgeist_error_data TYPE ty_zgeist_error_data.
SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-009.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-006,
POSITION POS_LOW.
PARAMETERS : P_USER(30) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-007,
POSITION POS_LOW.
PARAMETERS : P_PWD(30) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-008,
POSITION POS_LOW.
PARAMETERS : P_HOST(64) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE,
COMMENT 1(30) TEXT-010,
POSITION POS_LOW.
SELECT-OPTIONS : S_EMAIL FOR ADR6-SMTP_ADDR NO INTERVALS.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
-- Password not visible--
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'P_PWD'.
screen-invisible = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
I N I T I A L I Z A T I O N *
INITIALIZATION.
w_date0(2) = sy-datum4(2).
w_date2(2) = sy-datum6(2).
w_date4(4) = sy-datum0(4).
S_EMAIL-SIGN = 'I'.
S_EMAIL-OPTION = 'EQ'.
S_EMAIL-LOW = '[email protected]'.
APPEND S_EMAIL.
S_EMAIL-SIGN = 'I'.
S_EMAIL-OPTION = 'EQ'.
S_EMAIL-LOW = '[email protected]'.
APPEND S_EMAIL.
START - OF - SELECTION
START-OF-SELECTION.
Geting Company Details
PERFORM get_company_list.
Geting GL Account Details
PERFORM get_gl_acc_detail.
Geting GL Balance Details
PERFORM get_zgeist_data.
END - OF - SELECTION
PERFORM process_coacode.
PERFORM process_acctcode.
PERFORM process_entitycode.
PERFORM process_attribcode.
PERFORM process_glbal.
PERFORM process_ftp_file.
IF NOT it_zgeist_error_data[] IS INITIAL.
PERFORM write_error_report.
ENDIF.
*& Form GET_COMPANY_LIST
Form to get Company List *
FORM get_company_list.
CALL FUNCTION 'BAPI_COMPANY_GETLIST'
TABLES
company_list = it_company_list.
ENDFORM. "GET_COMPANY_LIST
*& Form GET_GL_ACC_DETAIL
Form to get the GL Account details *
FORM get_gl_acc_detail.
DATA : l_txt50 LIKE skat-txt50,
l_tabix LIKE sy-tabix.
SELECT saknr xloev
INTO TABLE it_gl_detail
FROM ska1
WHERE ktopl = 'G001'
AND ( saknr GE '1000000000' AND saknr LE '4500000000' ).
LOOP AT it_gl_detail.
l_tabix = sy-tabix.
SELECT SINGLE txt50
INTO l_txt50
FROM skat
WHERE spras = 'EN'
AND ktopl = 'G001'
AND saknr = it_gl_detail-saknr.
it_gl_detail-txt50_skat = l_txt50.
MODIFY it_gl_detail INDEX l_tabix.
CLEAR l_txt50.
ENDLOOP.
ENDFORM. "GET_GL_ACC_DETAIL
*& Form PROCESS_COACODE
Form to Populate COA data to Output internal table IT_COACODE *
FORM process_coacode.
it_coacode-coa_code = text-023. "GLOBAL.
it_coacode-coa_description = text-022. "Global SAP for ERC
it_coacode-field11 = '11'.
APPEND it_coacode.
CLEAR it_coacode.
ENDFORM. "PROCESS_COACODE
*& Form PROCESS_ACCTCODE
Form to Populate Account data to Output Internal table IT_ACCTCODE *
FORM process_acctcode.
DATA:l_saknr(10).
DATA : it_gl_detail2 LIKE it_gl_detail OCCURS 0 WITH HEADER LINE.
IF NOT it_gl_detail[] IS INITIAL.
it_gl_detail2[] = it_gl_detail[].
SORT it_gl_detail2 BY saknr.
DELETE ADJACENT DUPLICATES FROM it_gl_detail2 COMPARING saknr.
ENDIF.
IF NOT it_gl_detail2[] IS INITIAL.
LOOP AT it_gl_detail2.
MOVE it_gl_detail2-saknr TO it_acctcode-act_code.
MOVE it_gl_detail2-txt50_skat TO it_acctcode-act_desc.
Check GL Account is marked for deletion or not
IF it_gl_detail2-xloev = c_selected.
it_acctcode-act_act_flag = c_n.
ELSE.
it_acctcode-act_act_flag = c_y.
ENDIF.
Determine GL Account type based on GL account number
l_saknr = it_gl_detail2-saknr.
SHIFT l_saknr LEFT DELETING LEADING '0'.
IF l_saknr CP '1*'.
it_acctcode-glact_type = c_a.
ELSEIF l_saknr CP '2*'.
it_acctcode-glact_type = c_l.
ELSEIF l_saknr CP '3*'.
it_acctcode-glact_type = c_q.
Start of Addition by C.Ramesh Babu on 11/04/2005 "DR1K907900
ELSEIF l_saknr CP '4*'.
it_acctcode-glact_type = c_l.
End of Addition by C.Ramesh Babu on 11/04/2005 "DR1K907900
ELSEIF l_saknr CP '5*'.
it_acctcode-glact_type = c_r.
ELSEIF l_saknr CP '6*'.
it_acctcode-glact_type = c_e.
ELSEIF l_saknr CP '7*'.
it_acctcode-glact_type = c_t.
ENDIF.
it_acctcode-fi_line = 'CDR'.
it_acctcode-coa_code = 'GLOBAL'.
it_acctcode-act_defcode = '001'.
it_acctcode-field11 = '11'.
APPEND :it_acctcode.
CLEAR :it_acctcode,it_gl_detail2.
ENDLOOP.
ENDIF.
ENDFORM. "PROCESS_ACCTCODE
*& Form PROCESS_ENTITYCODE
Form to Populate Entiti data to Output file internal table *
FORM process_entitycode.
IF NOT it_company_list[] IS INITIAL.
LOOP AT it_company_list.
SHIFT it_company_list-company LEFT DELETING LEADING '0'.
MOVE it_company_list-company TO it_entitycode-entity_code.
MOVE it_company_list-name1 TO it_entitycode-com_desc.
it_entitycode-coa_code = 'GLOBAL'.
it_entitycode-field11 = '11'.
APPEND it_entitycode.
CLEAR : it_company_list,it_entitycode.
ENDLOOP.
ENDIF.
ENDFORM. "PROCESS_ENTITYCODE
*& Form PROCESS_ATTRIBCODE
Form to Populate Attribute data to output file internal table *
FORM process_attribcode.
Getting data from T001.
SELECT * FROM t001 INTO TABLE it_t001.
LOOP AT it_t001.
MOVE c_rassc TO it_attribcode-attrib_code.
MOVE it_t001-bukrs TO it_attribcode-attrib_value.
MOVE c_tradptn TO it_attribcode-attrib_desc.
it_attribcode-field11 = '11'.
APPEND it_attribcode.
CLEAR it_attribcode.
ENDLOOP.
Getting data from table ZDATSRC_T.
SELECT * FROM zdatsrc_t INTO TABLE it_zdatsrc.
LOOP AT it_zdatsrc.
MOVE c_dtsrce TO it_attribcode-attrib_code.
MOVE it_zdatsrc-zdatsrc TO it_attribcode-attrib_value.
MOVE c_datsrc TO it_attribcode-attrib_desc.
it_attribcode-field11 = '11'.
APPEND it_attribcode.
CLEAR it_attribcode.
ENDLOOP.
Getting data from table SKA1.
SELECT * FROM ska1 INTO TABLE it_ska1.
LOOP AT it_ska1.
MOVE c_sacct TO it_attribcode-attrib_code.
MOVE it_ska1-saknr TO it_attribcode-attrib_value.
MOVE c_glacc TO it_attribcode-attrib_desc.
it_attribcode-field11 = '11'.
APPEND it_attribcode.
CLEAR it_attribcode.
ENDLOOP.
Getting data from table T003.
SELECT * FROM t003 INTO TABLE it_t003.
LOOP AT it_t003.
MOVE c_docty TO it_attribcode-attrib_code.
MOVE it_t003-blart TO it_attribcode-attrib_value.
MOVE c_doctyp TO it_attribcode-attrib_desc.
it_attribcode-field11 = '11'.
APPEND it_attribcode.
CLEAR it_attribcode.
ENDLOOP.
Getting data from table T856.
SELECT * FROM t856 INTO TABLE it_t856.
LOOP AT it_t856.
MOVE c_trxtp TO it_attribcode-attrib_code.
MOVE it_t856-trtyp TO it_attribcode-attrib_value.
MOVE c_trantyp TO it_attribcode-attrib_desc.
it_attribcode-field11 = '11'.
APPEND it_attribcode.
CLEAR it_attribcode.
ENDLOOP.
ENDFORM. "PROCESS_ATTRIBCODE
*& Form PROCESS_GLBAL
Form to Populate GL Balance data to Output file internal table *
FORM process_glbal.
DATA : l_ctran_amt(21),
l_cusd_amt(21).
LOOP AT it_zgeist_data INTO wa_it_zgeist_data1.
*Start of change by 501030559 on 11/04/2005
it_glbal-gl_reccode = '04'.
it_glbal-gl_reccode = '05'.
*End of change by 501030559 on11/04/2005
it_glbal-gl_entity = wa_it_zgeist_data1-rbukrs.
it_glbal-gl_accnum = wa_it_zgeist_data1-zzaltkt.
it_glbal-site = 'ERC'.
it_glbal-currency_type = wa_it_zgeist_data1-rtcur.
it_glbal-year = w_year.
it_glbal-month = w_period.
it_glbal-as_of_date = w_date.
l_ctran_amt = wa_it_zgeist_data1-tslvt.
Put sign to left side of the value
IF l_ctran_amt LT 0.
TRANSLATE l_ctran_amt USING ' 0'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = l_ctran_amt.
ELSE.
Trailing Zero's to the value
SHIFT l_ctran_amt RIGHT DELETING TRAILING space.
TRANSLATE l_ctran_amt USING ' 0'.
REPLACE '0' WITH '' INTO l_ctran_amt.
ENDIF.
it_glbal-tran_cur_amt = l_ctran_amt.
l_cusd_amt = wa_it_zgeist_data1-kslvt.
Put Sign to leftside of the value
IF l_cusd_amt LT 0.
TRANSLATE l_cusd_amt USING ' 0'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = l_cusd_amt.
ELSE.
Trailing Zero's to the value
SHIFT l_cusd_amt RIGHT DELETING TRAILING space.
TRANSLATE l_cusd_amt USING ' 0'.
REPLACE '0' WITH '' INTO l_cusd_amt.
ENDIF.
it_glbal-usd_amount = l_cusd_amt.
it_glbal-racct = wa_it_zgeist_data1-racct.
it_glbal-zzbewar = wa_it_zgeist_data1-zzbewar.
it_glbal-zzdatsrc = wa_it_zgeist_data1-zzdatsrc.
it_glbal-zzblart = wa_it_zgeist_data1-zzblart.
it_glbal-rassc = wa_it_zgeist_data1-rassc.
it_glbal-field11 = '11'.
APPEND it_glbal.
CLEAR : wa_it_zgeist_data1, it_glbal.
ENDLOOP.
ENDFORM. "PROCESS_GLBAL
*& Form PROCESS_GLOBALSAP
Form to Populate COntrol data to Output file internal table *
FORM process_globalsap.
DATA :l_total(9),
l_len(3) type c.
Logic to get Time Zone
w_timediff = sy-tzone.
IF sy-tzone LT '0'.
w_timediff = sy-tzone * -1.
CONCATENATE 'GMT-' w_timediff(4) INTO w_timezone.
ELSE.
w_timediff = sy-tzone.
CONCATENATE 'GMT+' w_timediff(4) INTO w_timezone.
ENDIF.
LOOP AT S_EMAIL.
CONCATENATE C_USERID S_EMAIL-LOW ',' INTO C_USERID.
ENDLOOP.
l_len = strlen( c_userid ).
l_len = l_len - 1.
c_userid = c_userid+0(l_len).
it_globalsap-clnt_name = 'ERC'.
it_globalsap-source_name = 'GLOBALSAP'.
it_globalsap-as_of_date = w_date.
it_globalsap-time_stamp = sy-uzeit.
it_globalsap-time_zone = w_timezone.
it_globalsap-num_of_files = w_file_count.
MOVE w_tot_recs TO l_total.
SHIFT l_total RIGHT DELETING TRAILING space.
TRANSLATE l_total USING ' 0'.
it_globalsap-num_of_records = l_total.
it_globalsap-user_ids = c_userid.
it_globalsap-field11 = '11'.
APPEND it_globalsap.
CLEAR it_globalsap.
ENDFORM. "PROCESS_GLOBALSAP
*& Form COUNT_RECORDS
Form to count total number of records Downlaoded *
FORM count_records.
DESCRIBE TABLE it_coacode LINES w_cnt1.
DESCRIBE TABLE it_acctcode LINES w_cnt2.
DESCRIBE TABLE it_entitycode LINES w_cnt3.
DESCRIBE TABLE it_attribcode LINES w_cnt4.
DESCRIBE TABLE it_glbal LINES w_cnt5.
w_tot_recs = w_cnt1 + w_cnt2 + w_cnt3 + w_cnt4 + w_cnt5.
ENDFORM. "COUNT_RECORDS
*& Form get_zgeist_data
Form used to fetch data from ZGEIST table for the GL BAL file
FORM get_zgeist_data .
PERFORM get_period_year.
SELECT * INTO TABLE it_zgeist_data_all
FROM zgeist
WHERE rldnr EQ 'GG'
AND ryear EQ w_year
AND rrcty EQ 0
AND rpmax EQ '016'
AND ( zzaltkt GE '1000000000' AND zzaltkt LE '4500000000' )
AND rzzstagr = space.
sort it_zgeist_data_all by rbukrs rldnr zzaltkt racct
zzdatsrc zzbewar zzblart rtcur rassc.
LOOP AT it_zgeist_data_all INTO wa_it_zgeist_data.
IF wa_it_zgeist_data-zzaltkt EQ space.
wa_it_zgeist_error_data-rldnr = wa_it_zgeist_data-rldnr.
wa_it_zgeist_error_data-rrcty = wa_it_zgeist_data-rrcty.
wa_it_zgeist_error_data-rvers = wa_it_zgeist_data-rvers.
wa_it_zgeist_error_data-ryear = wa_it_zgeist_data-ryear.
wa_it_zgeist_error_data-rbukrs = wa_it_zgeist_data-rbukrs.
wa_it_zgeist_error_data-robjnr = wa_it_zgeist_data-robjnr.
wa_it_zgeist_error_data-cobjnr = wa_it_zgeist_data-cobjnr.
wa_it_zgeist_error_data-sobjnr = wa_it_zgeist_data-sobjnr.
wa_it_zgeist_error_data-rtcur = wa_it_zgeist_data-rtcur.
wa_it_zgeist_error_data-runit = wa_it_zgeist_data-runit.
wa_it_zgeist_error_data-drcrk = wa_it_zgeist_data-drcrk.
wa_it_zgeist_error_data-rpmax = wa_it_zgeist_data-rpmax.
APPEND wa_it_zgeist_error_data TO it_zgeist_error_data.
ELSE.
it_zgeist_data1-rbukrs = wa_it_zgeist_data-rbukrs.
it_zgeist_data1-rldnr = wa_it_zgeist_data-rldnr.
it_zgeist_data1-zzaltkt = wa_it_zgeist_data-zzaltkt.
it_zgeist_data1-racct = wa_it_zgeist_data-racct.
it_zgeist_data1-zzdatsrc = wa_it_zgeist_data-zzdatsrc.
it_zgeist_data1-zzbewar = wa_it_zgeist_data-zzbewar.
it_zgeist_data1-zzblart = wa_it_zgeist_data-zzblart.
it_zgeist_data1-rassc = wa_it_zgeist_data-rassc.
it_zgeist_data1-rtcur = wa_it_zgeist_data-rtcur.
PERFORM get_tslvt_kslvt_values USING w_period.
COLLECT it_zgeist_data1.
ENDIF.
CLEAR : wa_it_zgeist_data, wa_it_zgeist_error_data,
it_zgeist_data1.
ENDLOOP.
it_zgeist_data[] = it_zgeist_data1[].
ENDFORM. " get_zgeist_data
*& Form write_error_report
Form used to display error data for the GL BAL fetched data
FORM write_error_report .
DATA : l_text(80) TYPE c.
CASE w_period.
WHEN '001' OR '01'.
l_text = text-e01.
WHEN '002' OR '02'.
l_text = text-e02.
WHEN '003' OR '03'.
l_text = text-e03.
WHEN '004' OR '04'.
l_text = text-e04.
WHEN '005' OR '05'.
l_text = text-e05.
WHEN '006' OR '06'.
l_text = text-e06.
WHEN '007' OR '07'.
l_text = text-e07.
WHEN '008' OR '08'.
l_text = text-e08.
WHEN '009' OR '09'.
l_text = text-e09.
WHEN '010' OR '10'.
l_text = text-e10.
WHEN '011' OR '11'.
l_text = text-e11.
WHEN '012' OR '12'.
l_text = text-e12.
WHEN '013' OR '13'.
l_text = text-e13.
WHEN '014' OR '14'.
l_text = text-e14.
WHEN '015' OR '15'.
l_text = text-e15.
WHEN '016' OR '16'.
l_text = text-e16.
ENDCASE.
SKIP 2.
WRITE:/45 text-h01 COLOR COL_HEADING.
SKIP 2.
FORMAT COLOR 4.
WRITE:/(234) sy-uline.
WRITE:/1 sy-vline,
2 text-h02,
9 sy-vline,
10 text-h03,
19 sy-vline,
20 text-h04,
28 sy-vline,
29 text-h05,
41 sy-vline,
42 text-h06,
49 sy-vline,
50 text-h07,
69 sy-vline,
70 text-h08,
89 sy-vline,
90 text-h09,
109 sy-vline,
110 text-h10,
119 sy-vline,
120 text-h11,
130 sy-vline,
131 text-h12,
144 sy-vline,
145 text-h13,
152 sy-vline,
153 text-h14,
234 sy-vline.
WRITE:/(234) sy-uline.
FORMAT COLOR OFF.
LOOP AT it_zgeist_error_data INTO wa_it_zgeist_error_data.
FORMAT COLOR 2.
WRITE:/1 sy-vline,
4 wa_it_zgeist_error_data-rldnr,
9 sy-vline,
13 wa_it_zgeist_error_data-rrcty,
19 sy-vline,
22 wa_it_zgeist_error_data-rvers,
28 sy-vline,
32 wa_it_zgeist_error_data-ryear,
41 sy-vline,
42 wa_it_zgeist_error_data-rbukrs,
49 sy-vline,
50 wa_it_zgeist_error_data-robjnr,
69 sy-vline,
70 wa_it_zgeist_error_data-cobjnr,
89 sy-vline,
90 wa_it_zgeist_error_data-sobjnr,
109 sy-vline,
112 wa_it_zgeist_error_data-rtcur,
119 sy-vline,
123 wa_it_zgeist_error_data-runit,
130 sy-vline,
135 wa_it_zgeist_error_data-drcrk,
144 sy-vline,
147 wa_it_zgeist_error_data-rpmax,
152 sy-vline,
153 l_text,
234 sy-vline.
FORMAT COLOR OFF.
ENDLOOP.
WRITE:/(234) sy-uline.
ENDFORM. " write_error_report
*& Form get_tslvt_kslvt_values
Form used to get TSLxx & KSLxx values for the period fetched
FORM get_tslvt_kslvt_values USING period.
FIELD-SYMBOLS : <f1> TYPE ANY,
<f2> TYPE ANY.
DATA : l_tslvt_val(25) VALUE 'wa_it_zgeist_data-tsl',
l_kslvt_val(25) VALUE 'wa_it_zgeist_data-ksl',
l_tslvt TYPE tslvt9,
l_kslvt TYPE kslvt9,
l_period TYPE poper.
clear l_period.
l_period = period.
DO l_period TIMES.
CONCATENATE l_tslvt_val l_period+1(2) INTO l_tslvt_val.
CONCATENATE l_kslvt_val l_period+1(2) INTO l_kslvt_val.
ASSIGN (l_tslvt_val) TO <f1>.
l_tslvt = <f1>.
it_zgeist_data1-tslvt = it_zgeist_data1-tslvt + l_tslvt.
ASSIGN (l_kslvt_val) TO <f2>.
l_kslvt = <f2>.
it_zgeist_data1-kslvt = it_zgeist_data1-kslvt + l_kslvt.
l_period = l_period - 1.
clear : l_tslvt, l_kslvt, l_tslvt_val, l_kslvt_val.
l_tslvt_val = 'wa_it_zgeist_data-tsl'.
l_kslvt_val = 'wa_it_zgeist_data-ksl'.
if l_period = 0.
exit.
endif.
ENDDO.
ENDFORM. "get_tslvt_kslvt_values
*& Form process_ftp_file
Form used to connect & disconnect to Informatica Server using FTP
Also, used to transfer files to the Informatica location
--> p1 text
<-- p2 text
FORM process_ftp_file .
DATA: l_slen TYPE i,
l_error,
l_pwd(30) TYPE c.
CONSTANTS: c_dest TYPE rfcdes-rfcdest VALUE 'SAPFTP',
c_key TYPE i VALUE 26101957.
l_error = 0.
connect to ftp server
l_pwd = p_pwd.
l_slen = STRLEN( l_pwd ).
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = l_pwd
sourcelen = l_slen
key = c_key
IMPORTING
destination = l_pwd.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Connect to FTP Server'.
To Connect to the Server using FTP
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user = p_user
password = l_pwd
host = p_host
rfc_destination = c_dest
IMPORTING
handle = w_hdl
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR : w_outfile, w_file_count.
MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_COACODE' TO w_outfile.
PERFORM download_to_ftp TABLES it_coacode USING w_outfile.
w_file_count = w_file_count + 1.
CLEAR : w_outfile.
MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ACCTCODE' TO w_outfile.
PERFORM download_to_ftp TABLES it_acctcode USING w_outfile.
w_file_count = w_file_count + 1.
CLEAR : w_outfile.
MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ENTITYCODE' TO w_outfile.
PERFORM download_to_ftp TABLES it_entitycode USING w_outfile.
w_file_count = w_file_count + 1.
CLEAR : w_outfile.
MOVE 'ERC/GLOBALSAP/M_ERC_GLOBALSAP_ATTRIBCODE' TO w_outfile.
PERFORM download_to_ftp TABLES it_attribcode USING w_outfile.
w_file_count = w_file_count + 1.
CLEAR : w_outfile.
MOVE 'ERC/GLOBALSAP/ERC_GLOBALSAP_GLBAL' TO w_outfile.
PERFORM download_to_ftp TABLES it_glbal USING w_outfile.
w_file_count = w_file_count + 1.
CLEAR : w_outfile, w_tot_recs.
PERFORM count_records.
PERFORM process_globalsap.
MOVE 'ERC/GLOBALSAP/C_ERC_GLOBALSAP' TO w_outfile.
PERFORM download_to_ftp TABLES it_globalsap USING w_outfile.
To disconnect the FTP
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = w_hdl.
To disconnect the RFC Connection
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = c_dest
EXCEPTIONS
OTHERS = 1.
ENDFORM. " process_ftp_file
*& Form download_to_ftp
Form to put the files in the Informatica Location using FTP
Path is ERC\GLOBALSAP\<filename>
FORM download_to_ftp TABLES it_tab
USING l_string TYPE char64.
CALL FUNCTION 'FTP_R3_TO_SERVER'
EXPORTING
handle = w_hdl
fname = l_string
character_mode = 'X'
TABLES
text = it_tab[]
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING invalid_output_file.
ENDIF.
ENDFORM. " download_to_ftp
*& Form get_period_year
Form to fill the Period & Year based on the Sy-datum
FORM get_period_year .
DATA : l_month(2) TYPE c,
l_day(2) TYPE c,
l_year(4) TYPE c.
l_year = sy-datum+0(4).
l_month = sy-datum+4(2).
l_day = sy-datum+6(2).
CASE l_month.
WHEN '01'.
IF l_day <= '15'.
w_period = '12'.
w_year = l_year - 1.
ELSE.
w_period = '1'.
w_year = l_year.
ENDIF.
WHEN '02'.
IF l_day <= '15'.
w_period = '1'.
w_year = l_year.
ELSE.
w_period = '2'.
w_year = l_year.
ENDIF.
WHEN '03'.
IF l_day <= '15'.
w_period = '2'.
w_year = l_year.
ELSE.
w_period = '3'.
w_year = l_year.
ENDIF.
WHEN '04'.
IF l_day <= '15'.
w_period = '3'.
w_year = l_year.
ELSE.
w_period = '4'.
w_year = l_year.
ENDIF.
WHEN '05'.
IF l_day <= '15'.
w_period = '4'.
w_year = l_year.
ELSE.
w_period = '5'.
w_year = l_year.
ENDIF.
WHEN '06'.
IF l_day <= '15'.
w_period = '5'.
w_year = l_year.
ELSE.
w_period = '6'.
w_year = l_year.
ENDIF.
WHEN '07'.
IF l_day <= '15'.
w_period = '6'.
w_year = l_year.
ELSE.
w_period = '7'.
w_year = l_year.
ENDIF.
WHEN '08'.
IF l_day <= '15'.
w_period = '7'.
w_year = l_year.
ELSE.
w_period = '8'.
w_year = l_year.
ENDIF.
WHEN '09'.
IF l_day <= '15'.
w_period = '8'.
w_year = l_year.
ELSE.
w_period = '9'.
w_year = l_year.
ENDIF.
WHEN '10'.
IF l_day <= '15'.
w_period = '9'.
w_year = l_year.
ELSE.
w_period = '10'.
w_year = l_year.
ENDIF.
WHEN '11'.
IF l_day <= '15'.
w_period = '10'.
w_year = l_year.
ELSE.
w_period = '11'.
w_year = l_year.
ENDIF.
WHEN '12'.
IF l_day <= '15'.
w_period = '11'.
w_year = l_year.
ELSE.
w_period = '12'.
w_year = l_year.
ENDIF.
ENDCASE.
ENDFORM. " get_period_year -
Hi all,
Please refer to the error:
Root Components import: FAILURE
[2015-04-10 17:04:48.126] Process: w3wp |Organization:0937f109-45df-e411-80cf-0050560100db |Thread: 43 |Category: Exception |User: ac011cf7-ad36-405b-91cf-2155ca15efb1 |Level: Error |ReqId: d3924c06-ad4b-4d5e-a204-70f8170016e1 | CrmException..ctor
ilOffset = 0x30
at CrmException..ctor(String formattedErrorMessage, Int32 errorCode, Object[] arguments) ilOffset = 0x30
at ImportRootComponentsHandler.GetSolutionRootsCollection(Boolean throwIfMissing, Boolean skipRibbonCustomization) ilOffset = 0x209
at ImportRootComponentsHandler.ImportItem() ilOffset = 0x8
at ImportHandler.Import() ilOffset = 0x43
at RootImportHandler.ImportAndUpdateProgress(ImportHandler ih) ilOffset = 0x7
at RootImportHandler.HandleNonMetadataHandlers(String[] ImportEntities, ImportHandler& ihForCurrentPath) ilOffset = 0x33
at RootImportHandler.RunImport(String[] ImportEntities) ilOffset = 0x1D8
at ImportXml.RunImport(String[] ImportEntities) ilOffset = 0xE
at ImportXml.RunImport() ilOffset = 0x5BF
at ImportXmlService.ImportSolutionSkipCapable(Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Byte[] customizationFile, Guid importJobId, Boolean convertToManaged, Boolean skipProductUpdateDependencies,
ExecutionContext context) ilOffset = 0x46
at RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) ilOffset = 0xFFFFFFFF
at RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) ilOffset = 0x25
at RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ilOffset = 0xCF
at LogicalMethodInfo.Invoke(Object target, Object[] values) ilOffset = 0x4F
at InternalOperationPlugin.Execute(IServiceProvider serviceProvider) ilOffset = 0x57
at V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context) ilOffset = 0x200
at VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context) ilOffset = 0x65
at Pipeline.Execute(PipelineExecutionContext context) ilOffset = 0x65
at MessageProcessor.Execute(PipelineExecutionContext context) ilOffset = 0x1C5
at InternalMessageDispatcher.Execute(PipelineExecutionContext context) ilOffset = 0xE4
at ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory, IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode,
Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion)
ilOffset = 0x16E
at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, UserAuth userAuth, Guid targetUserId,
OrganizationContext context, Boolean returnResponse, Boolean checkAdminMode) ilOffset = 0x1F1
at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode) ilOffset
= 0x2D
at OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode) ilOffset = 0x26
at InprocessServiceProxy.ExecuteCore(OrganizationRequest request) ilOffset = 0x34
at PlatformCommand.XrmExecuteInternal() ilOffset = 0xF6
at ImportSolutionCommand.Execute() ilOffset = 0x20
at DataSource.ImportSolution(Byte[] customizationFile, Boolean overwriteUnmanagedCustomizations, Boolean publishWorkflows, Guid importJobId, Boolean convertToManaged, Boolean skipProductUpdateDependencies, IOrganizationContext
context) ilOffset = 0x0
at SolutionImportProcessPage.ImportSolution() ilOffset = 0x123
at SolutionImportProcessPage.ProcessRequestData() ilOffset = 0x4A
at SolutionImportProcessPage.ProcessAction(String action) ilOffset = 0x92
at AppUIPage.OnPreRender(EventArgs e) ilOffset = 0xD
at Control.PreRenderRecursiveInternal() ilOffset = 0x54
at Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) ilOffset = 0x6D3
at Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) ilOffset = 0x3C
at Page.ProcessRequest() ilOffset = 0x14
at Page.ProcessRequest(HttpContext context) ilOffset = 0x33
at CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() ilOffset = 0x18D
at HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) ilOffset = 0x15
at ApplicationStepManager.ResumeSteps(Exception error) ilOffset = 0x10A
at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) ilOffset = 0x5C
at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) ilOffset = 0x16A
at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType) ilOffset = 0x4B
>Crm Exception: Message: Cannot add a Root Component 0ffbcde4-61c1-4355-aa89-aa1d7b2b8792 of type 29 because it is not in the target system., ErrorCode: -2147188705
[2015-04-10 17:04:48.126] Process: w3wp |Organization:0937f109-45df-e411-80cf-0050560100db |Thread: 43 |Category: Platform.Sql |User: ac011cf7-ad36-405b-91cf-2155ca15efb1 |Level: Info |ReqId: d3924c06-ad4b-4d5e-a204-70f8170016e1 | BusinessProcessObject.ExecuteNonQuery
ilOffset = 0x28
I am getting this coming up in the error log when I attempt to import an unmanaged solution.
After searching on google Type 29 refers to a workflow.
I go into the source system and query the database by the GUID and discover that it is actually a Business Process Flow called 'Phone to Case Process'.
I do not have this process in my target system as I deleted it.
Looks like this is one of the out of the box ones. I don't think we we have changed this one much.
What does this mean and what should I be looking for??
Anyway how do I remove this offending process from the unmanaged solution xml file and attempt to re-import it?
It doesn't look like I can generate the solution again without the offending workflow/process..I managed to resolve this issue after looking at this thread:
https://social.microsoft.com/Forums/en-US/fddff17f-1cca-4d33-a666-60c08ad76b0c/crm-2011-import-failure?forum=crmdevelopment
Just modify both solution and customizations xml by searching for the guid and removing the root component -
How to convert Purchase Order to Sales Order in the Target system of Vendor
Hi all,
My sender system and receiver system both are ECC6.00 . We are not using any Xi/PI or EDI tool ., but using ALE to tranfer purchase order to the Vendor System . The PO IDoc is getting tranfered to Target System, but the Corresponding Sales order is not being generated .
My query is how the inbound process in the trarget system determines what are the master data will be used to create the Sales Order . as the transfered IDOC will not have sales area, distribution channel or division .
Best RegardsHi,
Here u need to use PI or any middleware.
For PI , it will be IDOC to RFC scenario :
Sender side - IDOC - Orders05 or whichever u want
Receiver side - RFC -Import the BAPI you want to use , for your case most probably it will be 'BAPI_SALESORDER_CREATEFROMDAT2'.
Pass the mandatory fields required to bapi .
kindly check :
http://www.sap-img.com/fu036.htm
http://abap.wikiprog.com/wiki/BAPI_SALESORDER_CREATEFROMDAT2
http://www.saptechies.com/bapi-to-create-sales-order-with-reference/
http://www.scribd.com/doc/3335908/BAPI-Step-by-Step
You can refer IDOC to RFC scenarios in forum from search.
Best Regards -
When i boot the cd,it can boot but after a while,the prompt command had been display on my laptop screen then i can't install the windows.anyone can help me?i'm from malaysia.thank you all
Hi,
Please refer to the guide provided by
T. Kujala to correctly install Windows 8.1, if you have already followed the instruction, and the issue persists, then please post a screen shot of the "prompt command displayed on the screen" you mentioned for better understanding. Meanwhile,
please make sure that the installation CD itself is not broken.
Yolanda Zhu
TechNet Community Support -
What to do if the target system is down for async scenario
Hi All,
What all recovery options we have in XI if the target system is down for very long time
in async scenario ??
-> Can we configure any alerts which will send mails with the failed message details if the
target system is dowm for very long time.
If this is possible, will there be any links in that mail which will allow the
alert mail receiver to 'resend' the failed message once the target system is up ?
We are on nw2004s SP9.
Can anyone help.
Thanks in Advance
Regards,
ChemmanzCan we configure any alerts which will send mails with the failed message details if the target system is dowm for very long time.
Yes we can send Alters from XI . let clarify one thing here alters are triggred immedaitely when their any failure in Adapter or mapping or etc then immdeaitely it is sendt so theirt is no such things for this "details if the target system is dowm for very long time". it does not differencate it long or short.
If this is possible, will there be/can we configure any links in that mail which will allow the alert mail receiver to 'resend' the failed message once the target system is up ?
chekc the blog for alter step by step from Michal
/people/michal.krawczyk2/blog/2005/09/09/xi-alerts--step-by-step
you can confiure alters to send your outlook also then if he replis you get a reply.
Regards
Sreeram.G.Reddy -
Call RFC for Lookup from BPM. how to determin the correct target system
Hi
I have a scenario where i am sending a sync call to SAP R/3 to fetch some sata using the BPM.
The issue is I can have multiple SAP systems so to determin the SAP system for the correct lookup is necessary.
in the rec determination step of Config I can configure multiple receivers but this isthrowing an error saying the multiple receivers cannot be determined for sync step.
Any idea why is such an error occuring
Regards
NikhilNikhil,
Multiple Receivers cannot be configured for a Synchronous Interfaces. reason is that when you are sending the request message to the target systems, XI will recieve multiple responses for one request and this is aginst the concept of Synch Message Processing.
You will have to have an option of determining the receivers inside your BPM and using separate Send Steps for each of these.
Regards
Bhavesh -
You are not authorized to logon to the target system (error code 1)
Dear Expert,
I met some problems that 'You are not authorized to logon to the target system (error code 1)' when I tried to do the auth. testing for RFC SM_CLNT<SID>_TRUSTED in satellite system.
Following SAP note 128447, I recreated the RFCs in SMSY in solution manager for satellite system using existing user.
It was still error ''You are not authorized to logon to the target system (error code 1)'.
In SMSY in solman, I checked the RFCs connection which I recreated using RFC wizard, they are ok(green).
I have already maintain the auth. obj S_RFCACL for user who is running this.
So, I am confused what authorization I did not maintain in user? Please help me out!
Thanks a lot!
Br,
Lucy
Edited by: lucy YANG on Mar 19, 2011 6:59 AM
Edited by: lucy YANG on Mar 19, 2011 7:01 AMHello Lucy,
The error is pretty clear that the calling system is not a trusted system so I don't think you should bother with an authorization trace at this time, because authorizations is not quite the issue. The calling system is NOT a trusted system, authorizations or not.
Please refer to SAP Note 128447 Trusted/Trusting systems
The error is listed there:
Authorization errors that occur when using an RFC destination for which
the 'Trusted Systems' indicator is set are documented with the following
message:
"No authorization to log on as a trusted system (Trusted RC = #)."
In this case, the trusted return code # (# = 0, 1, 2, 3) has the
following relevance:
1 The calling system is not a trusted system, or the
security key for the system is invalid.
Solution: Recreate the trusted system (see
documentation).
These are the links the Note provides for the documentation:
[http://help.sap.com
/saphelp_nw04/helpdata/en/22/042671488911d189490000e829fbbd/frameset.htm
] in accordance with the documentation
[http://help.sap.com/
saphelp_nw04/helpdata/en/8b/0010519daef443ab06d38d7ade26f4/content.htm].
The Note states to recreate the Trusted system according to the Documentation (links above)
This is all in the Note. Please follow the Note to reslve this known error.
Regards,
Paul
Maybe you are looking for
-
Blocking of vendor and invoices
Hi How can we block the vendor (full scenario) and also some invoices? Please explain in detail. Points will be rewarded for useful answers.
-
Binary String to numerical binary array
Hello, I initially created binary strings from numerical numbers using the "%03b" command on the 'Format into String' block. I then concatenated the various strings into one string that is now composed of 16bits. However, I need to convert this strin
-
'Required components are disabled' error during trial install
I've downloaded the CS5.5 trial for the first time. When I install, I see three checkboxes for install: Encore, OnLocation, and Premiere Pro. The first two are checked, but the third is unchecked with a red X to the right of its name. If I try to sel
-
Call procedure via dynamic sql
Dear Oracle experts, I try to call several stored procedures from several packages within the function below. These stored procedures all own a procedure returning a version string. I would like to write a function which gets a schemaname (for the sc
-
Hi Experts, My requirement is to generate a BPEM case for a custom warning/information message. I understand I'll have to pick it in EMMA log while job preparation. Can someone suggest a Function module to write this custom information message to EMM