Convention used in OBJNR?
Where can I find the naming convention or standard for OBJNR? Like, I know an OBJNR value starting with PD* is related to table PROJ (project definitions) and PR* is related to PRPS (wbs elements). What about everything else?
I'm trying to write a program that accesses JEST (object status) and I'm having trouble figuring out which tables to join to next. Ultimately, I want a report that tells me whether there are any Assets Under Construction (asset class = A.U.C.) associated with closed WBS elements (status = CLSD) with non-zero balances.
Any ideas?
Instead of having JEST as a driver for report, you can get all data related to Assets with WBS elements.
Then using these details, check entries in JEST with STAT closed. You can use key OBJNR for linking 2 tables.
Will it help you in extracting and reporting?
Message was edited by: Ashish Gundawar
Similar Messages
-
When I import photos from my camera, I have them placed into projects based on the date the photos were taken. However, I do not like the naming convention used by Aperture as it causes the projects to sort into a non-chronologial order. The convention is MMM-DD-YYYY and I want to change it to YYYY-MM-DD. Is it possible in Aperture 3.2.4 to do this?
In the Import panel you can edit the preset for the file name format to "Image year - image month - image day - index" for example; the preset for folder names seems to be gone in Aperture 3,3 - at least I cannot find it any longer. You only seem to be able to enter the folder name manually in the Import panel.
-
How can I watch the democratic national convention using my apple tv?
How can I watch the democratic national convention using my apple tv?
I've got the same issue. I thought maybe through youtube. That is, I thought the DNC would have a live stream on youtube, but I can't seem to find it.
-
Implement Naming convention using code inspector
Hi,
We have to implement naming convention using code inspector,if anybody has already done it plz help
me inunderstanding the problem.
help is appreciated.We're also using the code inspector for naming conventions.
Try this link:
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/nw/how to build a new check for the code inspector
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/evaluating the quality of your abap programs and other repository objects with the code inspector -
What are the naming conventions used for aggregates created from Query?
What are the naming conventions used for aggregates created from Query?
Hi Reddy,
As you know aggregates are baby cubes right.
Aggregate names by default system has given as 6 digit number like 100831 but write the description by yourself.
Here you have to remember fact table is created with the name
like for ex: /BIC/F100831.
while creating aggregates you can observe all options carefully till complete the creation process then after I am sure about
your can get idea .
If problem still persists with you let me know the same until
get out of that.
else assign points if this is sufficient.
Thanks,
Ramki -
Non-technical question about naming conventions used in API
What does the prefix `PF_` stand for in all the function names in the AE SDK? It's not immediately obvious to me, and was just curious. I like to have a sense of how the naming conventions came to be when I'm learning new code.
Thanks!Interesting question. PF is the abbreviation for the Plug-in Filter package in After Effects.
-
Generated a report which gives PR(Purchase Requisition) analysis using ALV.
hi experts,
please give me tables and fields for following report, and also exlain me briefly,
Generated a report which gives PR(Purchase Requisition) analysis using ALV.
thanks in advance,
radhakrishnaHi
please find this report which link SO PO PR and Prd Ord and there status.
>
REPORT z_so_info.
TABLES: vbak, vbap, afko, afpo.
*Field catalog
TYPE-POOLS: slis.
DATA: lv_repid TYPE sy-repid VALUE sy-repid,
xfield TYPE slis_t_fieldcat_alv,
afield TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) text-002.
SELECT-OPTIONS: so_so FOR vbak-vbeln OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-003.
PARAMETERS:
p_kunnr LIKE vbak-kunnr, " sold-to
p_kunwe LIKE vbak-kunnr. " ship-to
SELECTION-SCREEN END OF BLOCK b2.
*Constants
CONSTANTS: c_zor TYPE vbak-auart VALUE 'ZOR',
c_we TYPE vbpa-parvw VALUE 'WE',
c_ag TYPE vbpa-parvw VALUE 'AG'.
c_space TYPE space.
*Ranges
RANGES: ra_parvw FOR vbpa-parvw,
ra_kunnr FOR vbpa-kunnr.
*Tables
DATA: BEGIN OF gt_output OCCURS 0,
vbeln LIKE vbak-vbeln, " sales order number
posnr LIKE vbap-posnr, " SO item number
matnr LIKE vbap-matnr, " material number
sh LIKE vbpa-kunnr, " Ship-to
sp LIKE vbpa-kunnr, " Sold-to
lifnr LIKE ekko-lifnr, " Vendor
bstnk LIKE vbak-bstnk, " PO number
banfn LIKE vbep-banfn, " Purchase requi
po_st TYPE char30, " PO status text
pstyv TYPE vbap-pstyv, " Item catagory
aufnr LIKE afpo-aufnr, " Production Order
prd_stat TYPE string, " Prd order status
END OF gt_output.
DATA: wa_output LIKE gt_output.
FIELD-SYMBOLS: <fs_output> LIKE gt_output.
*Table for sales order and PO
TYPES : BEGIN OF gs_data,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
pstyv TYPE vbap-pstyv,
matnr TYPE vbap-matnr,
END OF gs_data.
DATA: gt_data TYPE STANDARD TABLE OF gs_data,
wa_data TYPE gs_data.
*Table for Production Orders
TYPES: BEGIN OF gs_prd,
aufnr TYPE afpo-aufnr,
posnr TYPE afpo-posnr,
kdauf TYPE afpo-kdauf,
kdpos TYPE afpo-kdpos,
wepos TYPE afpo-wepos, "Goods Receipt Indicator
elikz TYPE afpo-elikz, "Delivery Completed Indicator
objnr TYPE aufk-objnr, "Object number
getri TYPE afko-getri, "Confirmed Order Finish Date
gltri TYPE afko-gltri, "Actual finish date
END OF gs_prd.
DATA: gt_prd TYPE STANDARD TABLE OF gs_prd,
wa_prd TYPE gs_prd.
*Table for partner data
TYPES: BEGIN OF gs_partner,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
parvw TYPE vbpa-parvw,
kunnr TYPE vbpa-kunnr,
END OF gs_partner.
DATA: gt_partner TYPE STANDARD TABLE OF gs_partner,
wa_partner TYPE gs_partner.
TYPES: BEGIN OF gs_po,
ebeln TYPE ekkn-ebeln,
ebelp TYPE ekkn-ebelp,
vbeln TYPE ekkn-vbeln,
vbelp TYPE ekkn-vbelp,
END OF gs_po.
DATA: gt_po TYPE STANDARD TABLE OF gs_po,
wa_po TYPE gs_po.
TYPES: BEGIN OF gs_preq,
vbeln TYPE vbep-vbeln,
posnr TYPE vbep-posnr,
banfn TYPE vbep-banfn,
END OF gs_preq.
DATA: gt_preq TYPE STANDARD TABLE OF gs_preq,
wa_preq TYPE gs_preq.
TYPES: BEGIN OF gs_po_stat,
ebeln TYPE ekko-ebeln,
procstat TYPE ekko-procstat,
lifnr TYPE ekko-lifnr,
END OF gs_po_stat.
DATA: gt_po_stat TYPE STANDARD TABLE OF gs_po_stat,
wa_po_stat TYPE gs_po_stat.
*Field symbols
FIELD-SYMBOLS: <fs> TYPE tj02t-txt04,
<fs_temp> TYPE tj02t-txt04,
<fs_stat> TYPE char30.
START-OF-SELECTION.
PERFORM fr_build_range.
PERFORM fr_get_data.
PERFORM fr_build_fc.
PERFORM fr_output.
*& Form fr_get_data
text
--> p1 text
<-- p2 text
FORM fr_get_data.
*Get SO
SELECT avbeln aposnr apstyv amatnr
FROM vbap AS a
JOIN vbak AS b
ON avbeln = bvbeln
JOIN vbpa AS c
ON bvbeln = cvbeln
INTO TABLE gt_data
WHERE b~vbeln IN so_so
AND b~auart EQ c_zor "Only Sales Orders
AND c~kunnr IN ra_kunnr. "from selection screen
DELETE ADJACENT DUPLICATES FROM gt_data COMPARING vbeln posnr.
*get data of the production order
IF NOT gt_data[] IS INITIAL.
SELECT aaufnr aposnr akdauf akdpos awepos aelikz
b~objnr
FROM afpo AS a
JOIN aufk AS b
ON aaufnr = baufnr
INTO TABLE gt_prd
FOR ALL ENTRIES IN gt_data
WHERE a~kdauf EQ gt_data-vbeln
AND a~kdpos EQ gt_data-posnr.
ENDIF.
*Get partner data
IF NOT gt_data[] IS INITIAL.
SELECT vbeln posnr parvw kunnr
FROM vbpa
INTO TABLE gt_partner
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln.
ENDIF.
*Get Purchase Order
IF NOT gt_data[] IS INITIAL.
SELECT ebeln ebelp vbeln vbelp
FROM ekkn
INTO TABLE gt_po
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln
AND vbelp EQ gt_data-posnr.
SELECT vbeln posnr banfn
FROM vbep
INTO TABLE gt_preq
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln
AND posnr EQ gt_data-posnr.
ENDIF.
IF NOT gt_po[] IS INITIAL.
SELECT aebeln aprocstat a~lifnr
FROM ekko AS a
JOIN ekpo AS b
ON aebeln = bebeln
INTO TABLE gt_po_stat
FOR ALL ENTRIES IN gt_po
WHERE b~ebeln EQ gt_po-ebeln
AND b~ebelp EQ gt_po-ebelp.
ENDIF.
*Move data to output table
LOOP AT gt_data INTO wa_data.
wa_output-vbeln = wa_data-vbeln.
wa_output-posnr = wa_data-posnr.
wa_output-pstyv = wa_data-pstyv.
wa_output-matnr = wa_data-matnr.
READ TABLE gt_po INTO wa_po WITH KEY vbeln = wa_data-vbeln
vbelp = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-bstnk = wa_po-ebeln.
READ TABLE gt_po_stat INTO wa_po_stat WITH KEY ebeln = wa_po-ebeln.
IF sy-subrc EQ 0.
wa_output-lifnr = wa_po_stat-lifnr.
CASE wa_po_stat-procstat.
WHEN '01'.
wa_output-po_st = 'Version in process'.
WHEN '02'.
wa_output-po_st = 'Active'.
WHEN '03'.
wa_output-po_st = 'In release'.
WHEN '04'.
wa_output-po_st = 'Partially released'.
WHEN '05'.
wa_output-po_st = 'Released Completely'.
WHEN '08'.
wa_output-po_st = 'Rejected'.
ENDCASE.
ENDIF. "inner read subrc
ENDIF. "outer read subrc
READ TABLE gt_preq INTO wa_preq WITH KEY vbeln = wa_data-vbeln
posnr = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-banfn = wa_preq-banfn.
ENDIF.
READ TABLE gt_prd INTO wa_prd WITH KEY kdauf = wa_data-vbeln
kdpos = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-aufnr = wa_prd-aufnr.
*get the purchase requisition for production order as well
SELECT SINGLE banfn
FROM ebkn
INTO wa_output-banfn
WHERE aufnr EQ wa_prd-aufnr.
*Get the status of the production order
PERFORM fr_get_prd_stat USING wa_prd-objnr
CHANGING wa_output-prd_stat.
ENDIF. " sy-subrc
READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
parvw = c_we.
IF sy-subrc EQ 0.
wa_output-sh = wa_partner-kunnr.
ENDIF.
READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
parvw = c_ag.
IF sy-subrc EQ 0.
wa_output-sp = wa_partner-kunnr.
ENDIF.
APPEND wa_output TO gt_output.
CLEAR: wa_data, wa_prd,wa_partner,wa_output.
ENDLOOP.
ENDFORM. " fr_get_data
*& Form fr_build_range
text
--> p1 text
<-- p2 text
FORM fr_build_range .
*Range for partner function
MOVE 'I' TO ra_parvw-sign.
MOVE 'EQ' TO ra_parvw-option.
MOVE 'SH' TO ra_parvw-low. " we
APPEND ra_parvw.
CLEAR ra_parvw.
MOVE 'I' TO ra_parvw-sign.
MOVE 'EQ' TO ra_parvw-option.
MOVE 'SP' TO ra_parvw-low. " ag
APPEND ra_parvw.
CLEAR ra_parvw.
*Range for ship-to and sold-to
MOVE 'I' TO ra_kunnr-sign.
MOVE 'EQ' TO ra_kunnr-option.
MOVE p_kunnr TO ra_kunnr-low.
APPEND ra_kunnr.
CLEAR ra_kunnr.
MOVE 'I' TO ra_kunnr-sign.
MOVE 'EQ' TO ra_kunnr-option.
MOVE p_kunwe TO ra_kunnr-low.
APPEND ra_kunnr.
CLEAR ra_kunnr.
ENDFORM. " fr_build_range
*& Form fr_build_fc
text
--> p1 text
<-- p2 text
FORM fr_build_fc .
sales order number
afield-fieldname = 'VBELN'.
afield-seltext_s = 'Sales #'.
afield-ref_tabname = 'VBAK'.
APPEND afield TO xfield. CLEAR afield.
sales ITEM number
afield-fieldname = 'POSNR'.
afield-seltext_s = 'Item #'.
afield-ref_tabname = 'VBAP'.
APPEND afield TO xfield. CLEAR afield.
Material Number
afield-fieldname = 'MATNR'.
afield-seltext_s = 'Material #'.
afield-ref_tabname = 'VBAP'.
afield-outputlen = 10.
APPEND afield TO xfield. CLEAR afield.
*Vendor Number
afield-fieldname = 'LIFNR'.
afield-seltext_s = 'Vendor Num.'.
afield-ref_tabname = 'EKKO'.
APPEND afield TO xfield. CLEAR afield.
ship-to-party
afield-fieldname = 'SH'.
afield-seltext_s = 'Ship-to'.
afield-ref_tabname = 'VBPA'.
APPEND afield TO xfield. CLEAR afield.
sold-to-party
afield-fieldname = 'SP'.
afield-seltext_s = 'Sold-to'.
afield-ref_tabname = 'VBPA'.
APPEND afield TO xfield. CLEAR afield.
*PO number
afield-fieldname = 'BSTNK'.
afield-seltext_s = 'PO NUM'.
afield-ref_tabname = 'EKKO'.
APPEND afield TO xfield. CLEAR afield.
*PO status
afield-fieldname = 'PO_STAT'.
afield-seltext_s = 'Step'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
*PO step status
afield-fieldname = 'PO_ST'.
afield-seltext_s = 'PO.Status'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
*Purchase requisition
afield-fieldname = 'BANFN'.
afield-seltext_s = 'Pur. Req.'.
afield-ref_tabname = 'VBEP'.
APPEND afield TO xfield. CLEAR afield.
*Item catagory
afield-fieldname = 'PSTYV'.
afield-seltext_s = 'Itm. Catg'.
afield-ref_tabname = 'VBAP'.
APPEND afield TO xfield. CLEAR afield.
*Prodcution Order number
afield-fieldname = 'AUFNR'.
afield-seltext_m = 'Prod.Order'.
afield-ref_tabname = 'AFKO'.
APPEND afield TO xfield. CLEAR afield.
*PRODCUTION status
afield-fieldname = 'PRD_STAT'.
afield-seltext_s = 'Prd. Step'.
afield-ref_tabname = 'zbacklog_v2'.
afield-outputlen = 20.
APPEND afield TO xfield. CLEAR afield.
*PRODUCTION step status
afield-fieldname = 'PRD_ST'.
afield-seltext_s = 'Prd. Status'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
ENDFORM. " fr_build_fc
*& Form fr_output
text
--> p1 text
<-- p2 text
FORM fr_output .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT =
it_fieldcat = xfield[]
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " fr_output
*& Form fr_get_prd_stat
text
-->P_WA_PRD_OBJNR text
FORM fr_get_prd_stat USING p_objnr CHANGING p_prd_stat.
DATA: lt_status TYPE STANDARD TABLE OF jstat,
wa_status TYPE jstat,
lv_status TYPE tj02t-txt04,
lv_temp2 TYPE char5,
lv_buff TYPE string.
CALL FUNCTION 'STATUS_READ'
EXPORTING
client = sy-mandt
objnr = p_objnr
only_active = 'X'
TABLES
status = lt_status
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
LOOP AT lt_status INTO wa_status.
IF wa_status-stat(1) EQ 'I'.
SELECT txt04 FROM tj02t
INTO lv_status
WHERE istat EQ wa_status-stat
AND spras EQ 'E'.
ENDSELECT.
lv_temp2 = lv_status.
CONCATENATE lv_temp2 p_prd_stat INTO p_prd_stat
SEPARATED BY ','.
ENDIF.
CLEAR: wa_status, lv_status, lv_temp2.
ENDLOOP.
lv_buff = p_prd_stat.
*Status of Production Order
IF lv_buff CS 'CRTD'.
p_prd_stat = 'Not Active'.
ENDIF.
IF lv_buff CS 'REL'.
IF lv_buff CS 'GMPS'.
p_prd_stat = 'Printed In Prod'.
ELSE.
p_prd_stat = 'Printed'.
ENDIF.
ENDIF.
IF lv_buff CS 'TECO'.
p_prd_stat = 'Technically Compt.'.
ENDIF.
ENDFORM. " fr_get_prd_stat
> -
How do I use parentheses instead of dashes when exporting in Lightroom?
I don't always want to replace a photo without warning. Sometimes I like to see the photos side by side. Windows convention uses parantheses for different versions of an image, which keeps the jpegs together and separate from tiffs or other raw images. But Lightroom uses a dash so I get, for example, 20120101-1.jpg. I need it to be 20120101 (1).jpg
You can't.
-
Advice regarding using 3.5 front end AND 7.0 front end on users' machines
Hello everyone,
We are trying to determine the best way to roll out the new 7.0 front end tools. We are doing a technical upgrade to 2004s first, and later converting all the objects. Initially we plan to have both the 3.5 and 7.0 front end tools both residing on users' pcs, until we convert all objects to 04s.
Does anyone have a recommendation for rolling out the new tools to users, with out the risk of having them accidentally convert objects when they open queries (we have been told that if you open a query in the new tools, it automatically converts the objects). We need to prevent this from happening until we are ready to convert all the objects.
Thanks in advance for any advice!The most important thing is to use naming conventions (maybe a new naming convention using the new tools). Then set security up to prevent conversion depending on your scenarios. When migrating, it is recommended to be very careful around converting global elements (variables, Global Calculated Key Figures, and Global Restricted Key Figures). Within the RSZCOMPDIR table, there is a version field (greater than 100 is 2004s elements) so you can see the version there as well. It is recommended to migrate all queries within a single infoprovider together to avoid conflicts with global elements.
-
I have a Nikon Coolpix P500 but am unable to download photos from it to my iPad2 via the iPad Camera Connection kit. The iPad does not see either the Sandisk 8GB card or the Nikon camera. I have turned the camera on, but it seems that the camera just want to recharge its battery through the iPad as the iPad states that the devices draws too much power?? Anybodu solved this problem yet? Advise please?
One thing to check is the format that the camera is saving pics to the card in. Many are selectable and, in most cases, if PTP is one of the options then you need to have that one selected for the files to be visible to iOS and the CCK (connection kit).
Another thing which sometimes comes up, especially with older cameras and therefore probably not with yours, is the filenaming conventions used by the camera. iOS is quite strict about what it expects to see and if files are being stored with unsupported name formats then they simply won't be seen at all. -
Problem While Creating Physical Standby Using RMAN
Hi Guru's
May be this incidence you all face while creating physical standby DB. I try to create Physical standby database Using RMAN Duplicate Command from one server
(pri machine) to Standby Machine.
The steps i followed to create the above are as follows:
Step 1:- Enable Forced Logging
SQL> ALTER DATABASE FORCE LOGGING;
Step 2:- Configure a Standby Redo Log
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10
2> ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;
Step 3:- Set Primary Database Initialization Parameters
SQL> create pfile='?/dbs/pfileorcl.ora' from spfile;
Edit the pfile to add the standby parameters, here shown:
db_unique_name='orcl'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldr)'
LOG_ARCHIVE_DEST_2='SERVICE=orcldr LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldr'
*.fal_server=orcldr
*.fal_client=orcl
*.standby_file_management=auto
Step 4:- Enable Archiving
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
Step 5:- Setup tnsnames for standby database
This should be done on primary database by altering tnsnames.ora or using NetCA command, and create it by the name orcldr
orcldr =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby-svr)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldr)
Step 6:- Backup database and copy it to standby
This backup script should be run on primary and copied to standby on the same mount point, running this scripts using RMAN, all files under /rman_backup should be copied to /rman_backup on standby server.
$rman target /
RMAN> run
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/rman_backup/%U';
backup archivelog all format '/rman_backup /%U';
backup current controlfile for standby format '/rman_backup/%U';
Step 7:- Standby Database Steps
Installing Oracle Software
This should be same release and patchset with exactly same ORACLE_HOME mount point.
Setting Up listener
Create and start a listener on standby database using NetCA, or creating listener.ora in $ORACLE_HOME/network/admin
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby-svr)(PORT = 1521))
Step 8:- Set Standby Database Initialization Parameters
Copying the pfile created in primary database and renames it to initorcldr.ora, and changes these parameters:
db_unique_name='orcldr'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcldr,orcl)'
LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.fal_server=orcl
*.fal_client=orcldr
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
Step 9:- Setup tnsnames for primary database
This should be done on standby database by altering tnsnames.ora or using NetCA command, and create it by the name orcl
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary-svr)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
Step 10:- Copy a Password File
A password file must be created on the Primary and copied over to the Standby site. The sys password must be identical on both sites. Copy orapworcl to $ORACLE_HOME/dbs and rename file to orapworcldr
Step 11:- Create mount points for Oracle
Mount point should be created on standby server with the same convention used in primary, this includes the location for controlfiles, redo logs, datafiles, archive log destination and alert logs.
$ mkdir -p /u01/app/oracle/oradata/orcl/
$ mkdir -p /u01/app/oracle/flash_recovery_area/
$ mkdir -p /u01/app/oracle/admin/orcl/adump
$ mkdir -p /u01/app/oracle/admin/orcl/bdump
$ mkdir -p /u01/app/oracle/admin/orcl/cdump
$ mkdir -p /u01/app/oracle/admin/orcl/udump
Step 12:- Use RMAN to restore backup and setup standby
Connect to RMAN and execute the following command to create standby database, this should be performed on standby server after copying backup and setting tnsnames.
$ export ORACLE_SID=orcldr
$ rman target sys/tiger@orcl auxiliary sys/tiger@orcldr
RMAN> duplicate target database for standby dorecover;
Here i am getting problem as :
While trying to connect to traget database and auxiliary database i notice that when RMAN is connect to both databases it shows
orcl ( DBID xyz)
orcl (not mounted)
Here in my view the second database must be standby database name or auxiiary db name is standby db name which in my case is orcldr
after this issue i am facing the second issues as :
in command
duplicate target database for standby dorecover;
After modifying the command to
RMAN> duplicate target database to "standby";
rman-05520 database name mismatch
Can u please let me know where i am mistakingok for pri:
db_name=orcl
db_unique_name=orcl
for standby:
db_name=orcl
db_unique_name=sbyorcl ( i change orcldr to sbyorcl later)for new testing
but now what i am getting on
Verify connectivity
On Primary Server:
C:\> lsnrctl stop LISTENERI (working fine)
C:\> lsnrctl start LISTENER (working fine)
C:\> tnsping orcl (working fine)
C:\> tnsping sbyorcl (working fine)
C:\> sqlplus sys/xxxxx@orcl (working fine)
C:\> sqlplus sys/xxxxx@sbyorcl (not working fine)
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
On Standby Server:
C:\>lsnrctl stop LISTENER
C:\> lsnrctl start LISTENER
C:\> tnsping orcl
C:\> tnsping sbyorcl
C:\> sqlplus sys/xxxxx@orcl
C:\> sqlplus sys/xxxxx@sbyorcl
My listner file for pri :-
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.129)(PORT = 1521))
tnsnames.ora file on pri is:
sbyorcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.128)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = sbyorcl)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.129)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
and listener file on standby :
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.128)(PORT = 1521))
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
and tnsnames.ora file on standby:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.128)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = orcl)
sbyorcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.202.129)(PORT = 1521))
(CONNECT_DATA =
SERVICE_NAME = sbyorcl)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
Kinldy guide me where i am mistaking it's urgent -
Report (uses LDB's) giving dump due to memory problem
Hi,
I have a report which is giving dump in production due to memory problem.
Memory is increased from basis part,but still getting same error.
the report uses Logical DataBases.
Can anyone suggest solution to solve this problem.
regards
MallikHi Amit,
thanks for ur quick reply and ur idea "make changes in development and write the logic to read records in chunks".
I have n't worked on LDB's till now.So i Don't know how I can read the data in chunks from LDB's.
Can u Plz give some idea how to read data in chunks.
Iam also sending the code,if possible ,plz go thru it and give me some idea.
Hope u will help me.
CODE.
REPORT ZAROP028
ABLES: PROJ, " Project definition
PRPS_R, " WBS element
PRPS, " WBS elements
TJ02T, " System Status Values
TCJ1, " Project Types
JEST, " Active System Status
COSP1, " cost totals - external postings
COSS1, " cost totals - internal postings
COVP11, " Line Items by Prd & Doc Header
COVP12, " Line Items by Prd & Doc Header
BHDGD, " Page heading table.
AUFK, " Order Master Data for WBS (LDB)
ANEP, " Asset line item
COBRB, "Distribution Rules Settlement Ru
SETHIER, "Hierarchy Structure
TKA02, "Controlling Area Assignment
CEPC, "Profit Center Master Data
PSDYPD, "Dummy struct for GET proj late
PSDYPR, "Dummy struct for GET PRPS_R late
PSDYNP. "Dummy struct for GET AUFK late
CONSTANTS:
C_E TYPE C VALUE 'E',
C_I TYPE C VALUE 'I',
C_N TYPE C VALUE 'N',
C_X TYPE C VALUE 'X',
C_Y TYPE C VALUE 'Y',
C_NE(2) TYPE C VALUE 'NE',
C_EQ(2) TYPE C VALUE 'EQ',
C_USD(3) TYPE C VALUE 'USD',
C_04(2) TYPE C VALUE '04',
C_I0046(5) TYPE C VALUE 'I0046'
various working storage
DATA:
W_TXT04(4) TYPE C. " make status uppercase
DATA: ACTIVE(1) TYPE C VALUE 'A', " type for status_flag
INACTIVE(1) TYPE C VALUE 'I', " type for status_flag
STATUS_FLAG(1) TYPE C VALUE 'I', " wbs active or inactive?
INACTIVEDT LIKE SY-DATUM, " inactive date for wbs
REC_FLAG TYPE C VALUE 'N', " records retrieved?
DAYS_INACTIVE TYPE I, " days wbs has been inac
W_LOWINACT TYPE I, " smallest inactive days
WBS_CNT TYPE I, " cnt for wbs in status
W_AUC_COST TYPE P DECIMALS 2, " unsettled auc cost
W_VNAME LIKE PRPS_R-VNAME. " venture number storage
DATA: BEGIN OF ITAB OCCURS 0, "MELI-5F2KMH
COMPCODE LIKE PROJ-VBUKR, " company code
PLANT LIKE PROJ-WERKS, " plant
PROJECT LIKE PROJ-PSPID, " project
NAME LIKE PROJ-POST1, " project description
DINACT TYPE I, " days proj inactive
PRCTR LIKE PROJ-PRCTR, " profit center
SETID LIKE SETHIER-SETID, " level 2 pc hier
DESCRIPT LIKE SETHEADERT-DESCRIPT,
VERNA LIKE PROJ-VERNA, " person responsible
AUC TYPE P DECIMALS 2, " AUC unsettled amount
END OF ITAB.
DATA: BEGIN OF I_INACT OCCURS 0,
STAT LIKE JEST-STAT,
INACT LIKE JEST-INACT,
END OF I_INACT.
DATA: EQ_FLAG TYPE C, " system status flag
NE_FLAG TYPE C. " system status flag
TYPES: BEGIN OF T_COSTS,
PSPID LIKE PROJ-PSPID,
BUDAT LIKE COVP11-BUDAT,
END OF T_COSTS.
DATA: I_PROJ LIKE PROJ OCCURS 0 WITH HEADER LINE,
I_PRPS_R LIKE PRPS_R OCCURS 0 WITH HEADER LINE,
I_COSTS TYPE T_COSTS OCCURS 0 WITH HEADER LINE.
DATA: W_RECORDS TYPE I.
DATA: FOUND_FLAG TYPE C. " CHAD-4PRPDE
DATA: BEGIN OF I_HIER OCCURS 0. "FEAT-5BNRRP
INCLUDE STRUCTURE SETHIER. "FEAT-5BNRRP
DATA: END OF I_HIER. "FEAT-5BNRRP
RANGES: R_TJ02T FOR TJ02T-ISTAT.
DATA: W_LVL2 LIKE SETHIER-SETID. "MELI-5F2KMH
SELECTION-SCREEN BEGIN OF BLOCK PROJECT WITH FRAME TITLE TEXT-B01.
PARAMETERS: P_BUDAT LIKE COVP11-BUDAT,
DAYINACT(3) TYPE N DEFAULT '090'.
SELECTION-SCREEN SKIP. "FEAT-5BNRRP
PARAMETERS: P_PC-SET LIKE CEPC-KHINR OBLIGATORY "FEAT-5BNRRP
DEFAULT 'SCH_STREAM'. "FEAT-5BNRRP
SELECTION-SCREEN END OF BLOCK PROJECT.
SELECTION-SCREEN BEGIN OF BLOCK SORT WITH FRAME TITLE TEXT-B02.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C01.
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_PLANT RADIOBUTTON GROUP SORT DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C03. "FEAT-5BNRRP
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_PRCTR RADIOBUTTON GROUP SORT. "FEAT-5BNRRP
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(13) TEXT-C04.
SELECTION-SCREEN POSITION 15.
PARAMETERS: P_DAYS RADIOBUTTON GROUP SORT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK SORT.
AT SELECTION-SCREEN OUTPUT.
PERFORM USER_PARM_INIT.
AT SELECTION-SCREEN.
PERFORM CHECK_PROJ_CRITERIA.
START-OF-SELECTION.
PERFORM BUILD_PC_HIER USING P_PC-SET.
Project Definition *
GET PROJ.
MOVE-CORRESPONDING PROJ TO I_PROJ. "MELI-5F2KMH
APPEND I_PROJ. "MELI-5F2KMH
CLEAR I_PROJ.
WBS element table
GET PRPS_R.
MOVE-CORRESPONDING PRPS_R TO I_PRPS_R.
APPEND I_PRPS_R.
CLEAR I_PRPS_R.
GET all order and cost objects associated with order and elements
GET AUFK.
GET COSP1.
CHECK COSP1-WRTTP EQ C_04. " check if value type '04'
Get last date that the wbselement was updated and determine status
GET COVP11.
MOVE PROJ-PSPID TO I_COSTS-PSPID.
MOVE COVP11-BUDAT TO I_COSTS-BUDAT.
APPEND I_COSTS.
CLEAR I_COSTS.
Loop through Internal cost statements
GET COSS1.
CHECK COSS1-WRTTP EQ C_04. " if value type is 04
Get last date that the wbselement was updated and determine status
GET COVP12.
MOVE PROJ-PSPID TO I_COSTS-PSPID.
MOVE COVP12-BUDAT TO I_COSTS-BUDAT.
APPEND I_COSTS.
CLEAR I_COSTS.
END-OF-SELECTION.
PERFORM BUILD_TABLE.
DELETE ITAB WHERE DINACT < DAYINACT.
DESCRIBE TABLE ITAB LINES W_RECORDS.
IF W_RECORDS = 0.
MESSAGE I024.
ENDIF.
PERFORM WRITE_REPORT.
FORM CHECK_PROJ_CRITERIA *
This form verifies correct selection criteria has been entered from *
the selection screen inputs. If incorrect data has been entered the*
valid information messages are displayed. *
FORM CHECK_PROJ_CRITERIA.
check for either posting date or inactivity criteria but not both
IF NOT P_BUDAT IS INITIAL AND NOT DAYINACT IS INITIAL.
MESSAGE E119.
ENDIF.
IF NOT DAYINACT IS INITIAL. "check s/o day inactive
IF NOT DAYINACT <= 998.
MESSAGE E018.
ELSE.
INACTIVEDT = SY-DATUM - DAYINACT.
ENDIF.
if days inactive is initial set INACTIVEDT using the posting date
ELSE.
INACTIVEDT = P_BUDAT.
ENDIF.
ENDFORM. " CHECK_PROJ_CRITERIA
FORM GET_AUC_COSTS *
This form retrieves AUC costs for records based on AUFK2 where they *
meet project criteria. This pulls the unsettled amount on a AUC as *
a settlement receiver. *
FORM GET_AUC_COSTS USING F_OBJNR F_BUKRS.
CONSTANTS:
C_SETLEMENT_ANNUAL LIKE COBRB-PERBZ VALUE 'JHR', "Annual Settlement
C_DEP_AREA_STD LIKE ANEP-AFABE VALUE '01'. "Std depreciation
DATA: L_ANLC LIKE ANLC OCCURS 0 WITH HEADER LINE,
L_ANLCV LIKE ANLCV OCCURS 0 WITH HEADER LINE,
BEGIN OF L_COBRB OCCURS 0, "SRIN-6ZNEAR
ANLN1 LIKE COBRB-ANLN1,
ANLN2 LIKE COBRB-ANLN2,
END OF L_COBRB,
F_H_COST TYPE P DECIMALS 2.
SELECT ANLN1 ANLN2 FROM COBRB
INTO TABLE L_COBRB " SRIN-6ZNEAR
WHERE OBJNR = F_OBJNR
AND PERBZ = C_SETLEMENT_ANNUAL.
IF SY-SUBRC NE 0. " gary-463qbd
EXIT. " gary-463qbd
ENDIF. " gary-463qbd
LOOP AT L_COBRB. " gary-463qbd
CLEAR: F_H_COST.
SELECT SINGLE * FROM ANLC
INTO L_ANLC
WHERE BUKRS = F_BUKRS AND
ANLN1 = L_COBRB-ANLN1 AND
ANLN2 = L_COBRB-ANLN2 AND
GJAHR = SY-DATUM(4) AND
AFABE = C_DEP_AREA_STD AND
ZUJHR = '0000' AND
ZUCOD = '0000'.
IF SY-SUBRC = 0.
CALL FUNCTION 'FI_AA_VALUES_CALCULATE'
EXPORTING
I_ANLC = L_ANLC
IMPORTING
E_ANLCV = L_ANLCV.
F_H_COST = L_ANLCV-BCHWRT_LFD.
ENDIF.
ADD: F_H_COST TO W_AUC_COST.
ENDLOOP. " gary-463qbd
ENDFORM. " GET_AUC_COSTS
FORM CHECK_INACTIVE_DATE *
This form checks the computed inactive date based on the formal *
parameter DAYS_INACTIVE. If DAYS_INACTIVE is more current than the *
current lowest inactive date W_LOWINACT then W_LOWINACT is replaced *
with this value. *
FORM CHECK_INACTIVE_DATE USING DAYS_INACTIVE.
IF DAYS_INACTIVE < W_LOWINACT.
MOVE DAYS_INACTIVE TO W_LOWINACT.
ELSEIF W_LOWINACT EQ 0.
MOVE: DAYS_INACTIVE TO W_LOWINACT,
W_LOWINACT TO ITAB-DINACT.
ENDIF.
ENDFORM. " CHECK_INACTIVE_DATE
FORM build_table *
collect fields to the internal table ITAB *
FORM BUILD_TABLE.
SORT I_COSTS BY PSPID ASCENDING BUDAT DESCENDING.
LOOP AT I_PROJ.
CLEAR W_AUC_COST.
READ TABLE I_COSTS WITH KEY PSPID = I_PROJ-PSPID
BINARY SEARCH.
IF SY-SUBRC = 0.
ITAB-DINACT = SY-DATUM - I_COSTS-BUDAT.
ELSE.
ITAB-DINACT = SY-DATUM - I_PROJ-ERDAT.
ENDIF.
LOOP AT I_PRPS_R WHERE PSPHI = I_PROJ-PSPNR AND
BELKZ = 'X'.
IF NOT I_PRPS_R-IMPRF IS INITIAL.
PERFORM GET_AUC_COSTS USING I_PRPS_R-OBJNR
I_PRPS_R-PBUKR.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
ITAB-COMPCODE = I_PROJ-VBUKR.
ITAB-PLANT = I_PROJ-WERKS.
ITAB-PROJECT = I_PROJ-PSPID.
ITAB-NAME = I_PROJ-POST1.
ITAB-PRCTR = I_PROJ-PRCTR.
ITAB-VERNA = I_PROJ-VERNA.
ITAB-AUC = W_AUC_COST.
IF ITAB-DINACT > DAYINACT.
PERFORM GET_HIER_INFO.
ENDIF.
APPEND ITAB.
CLEAR ITAB.
ENDLOOP.
ENDFORM. " BUILD_TABLE
FORM STATUS_CHECK *
Checks the active status of the project definition for the *
parameter values assigned. *
FORM STATUS_CHECK USING F_OBJNR.
begin of GARY-463QBD
CLEAR: I_INACT.
REFRESH: I_INACT.
MOVE: C_N TO EQ_FLAG,
C_Y TO NE_FLAG.
retrieve status for a given record
SELECT STAT INACT
INTO TABLE I_INACT
FROM JEST
WHERE OBJNR EQ F_OBJNR AND
INACT NE C_X.
sort internal status entered by user
SORT R_TJ02T BY OPTION DESCENDING.
check all current object statuses meet user entered criteria
LOOP AT R_TJ02T WHERE OPTION EQ C_NE.
check for user selected options
READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
IF SY-SUBRC EQ 0.
MOVE C_N TO NE_FLAG.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
check for user selected options
READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
IF SY-SUBRC EQ 0.
MOVE C_Y TO EQ_FLAG.
EXIT.
ENDIF.
ENDLOOP.
check for no statuses entered as EQ option
LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
EXIT.
ENDLOOP.
if so move c_y to eq_flag
IF SY-SUBRC NE 0.
MOVE C_Y TO EQ_FLAG.
ENDIF.
if both eq_flag or ne_flag are true(c_y) move true to valid_flag
IF ( EQ_FLAG EQ C_N OR
NE_FLAG EQ C_N ).
REJECT 'PRPS_R'.
ENDIF.
end of GARY-463QBD
ENDFORM. " STATUS_CHECK
Form WRITE_REPORT
FORM WRITE_REPORT.
IF P_PLANT EQ 'X'.
SORT ASCENDING BY ITAB-BUSAREA "FEAT-5BNRRP
SORT ITAB ASCENDING BY PLANT
PROJECT.
ELSEIF P_PRCTR EQ 'X'.
SORT ITAB ASCENDING BY PRCTR "FEAT-5BNRRP
PROJECT.
ELSE.
SORT ITAB ASCENDING BY DINACT
PROJECT.
ENDIF.
FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
"MELI-5F2KMH
LOOP AT ITAB. "MELI-5F2KMH
WRITE: / ITAB-COMPCODE,
9(4) ITAB-PLANT,
17(12) ITAB-SETID,
33(40) ITAB-DESCRIPT,
77(10) ITAB-PRCTR,
91(24) ITAB-PROJECT,
119(40) ITAB-NAME,
163(25) ITAB-VERNA,
192(15) ITAB-AUC CURRENCY C_USD,
211(8) ITAB-DINACT.
ENDLOOP.
ENDFORM. " WRITE_REPORT
Form USER_PARM_INIT
Initializes user parameter settings
FORM USER_PARM_INIT.
ENDFORM. " USER_PARM_INIT
At top of every page, generate Amoco-standard header.
TOP-OF-PAGE.
MOVE: '0' TO BHDGD-INIFL,
SY-LINSZ TO BHDGD-LINES,
SY-UNAME TO BHDGD-UNAME,
SY-REPID TO BHDGD-REPID,
SY-TITLE TO BHDGD-LINE1,
SPACE TO BHDGD-DOMAI,
SPACE TO BHDGD-SEPAR,
SPACE TO BHDGD-MIFFL.
IF P_PLANT EQ 'X'.
MOVE TEXT-H01 TO BHDGD-LINE2.
ELSE.
MOVE TEXT-H03 TO BHDGD-LINE2. "FEAT-5BNRRP
ENDIF.
temporarily clear sy-mandt to remove "europe" from header "FEAT-5BNRRP
DATA: W_MANDT LIKE SY-MANDT.
BHDGD-BUKRS = SPACE.
W_MANDT = SY-MANDT.
CLEAR SY-MANDT.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
PERFORM BATCH-HEADING(RSBTCHH0).
FORMAT RESET.
reset sy-mandt "FEAT-5BNRRP
SY-MANDT = W_MANDT.
PERFORM PGH_WRITE_HEADING USING TEXT-003 INACTIVEDT. "MELI-5F2KMH
SKIP 1.
ULINE.
write heading info
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE: /1(5)'CCode',
9(5)'Plant',
17(12)'Level 2 Node',
33(40)'Level 2 Node Description',
77(10)'Profit Ctr',
91(18)'Project Definition',
119(19)'Project Description',
163(18)'Person Responsible',
192(15)' AUC Unsettled',
211(13)'Days Inactive'.
end FEAT-5BNRRP
BEGIN FEAT-5BNRRP NEW FORMS
FORM BUILD_PC_HIER
FORM BUILD_PC_HIER USING SETID.
DATA: W_SETID LIKE SETHIER-SETID,
W_NEWSETID LIKE SETHIER-SETID.
CONCATENATE '0H' SETID INTO W_SETID.
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
SHORTNAME = W_SETID
TABNAME = 'GLPCT'
SETCLASS = '0106'
SUPRESS_POPUP = 'X'
OLD_SETID = W_NEWSETID
IMPORTING
NEW_SETID = W_NEWSETID.
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
CLIENT = SY-MANDT
LANGU = SY-LANGU
SETID = W_NEWSETID
TABNAME = 'GLPCT'
TABLES
SET_HIERARCHY = I_HIER
EXCEPTIONS
SET_NOT_FOUND = 1
ILLEGAL_FIELD_REPLACEMENT = 2
ILLEGAL_TABLE_REPLACEMENT = 3
OTHERS = 4.
CLEAR I_HIER.
ENDFORM.
FORM GET_HIER_INFO
FORM GET_HIER_INFO.
DATA: W_SETID LIKE SETHIER-SETID,
W_KHINR LIKE CEPC-KHINR,
W_INDEX TYPE I.
CLEAR: W_SETID,
W_KHINR,
W_INDEX.
DETERMINE PROFIT CENTER NODE
SELECT SINGLE KHINR
FROM CEPC
INTO W_KHINR
WHERE PRCTR EQ ITAB-PRCTR.
CONCATENATE '0106' I_PROJ-VKOKR W_KHINR
INTO W_SETID.
READ TABLE I_HIER WITH KEY
SETID = W_SETID.
IF SY-SUBRC EQ 0.
W_INDEX = SY-TABIX.
DO.
READ TABLE I_HIER INDEX W_INDEX.
IF W_INDEX = 0.
ITAB-SETID = 'Not Found'.
EXIT.
ENDIF.
IF I_HIER-LEVEL = 1.
ITAB-SETID = I_HIER-SETID+8(12).
ITAB-DESCRIPT = I_HIER-DESCRIPT.
EXIT.
ENDIF.
IF I_HIER-LEVEL = 2.
ITAB-SETID = I_HIER-SETID+8(12).
ITAB-DESCRIPT = I_HIER-DESCRIPT.
EXIT.
ENDIF.
W_INDEX = W_INDEX - 1.
ENDDO.
ELSE.
ITAB-SETID = 'Not Found'.
ENDIF.
ENDFORM.
END FEAT-5BNRRP NEW FORMS
*& Form PGH_WRITE_HEADING WR MELI-5F2KMH
FORM PGH_WRITE_HEADING USING L_V1 L_V2.
DATA: L_LINSZ LIKE SY-LINSZ.
DATA: L_TITLEL LIKE SY-TABIX.
DATA: L_START LIKE SY-TABIX.
DATA: L_DATE LIKE SY-DATUM.
DATA: L_FORMATTED_DATE(10) TYPE C.
DATA: L_TITLE(27) TYPE C.
MOVE L_V2 TO L_DATE.
WRITE L_DATE TO L_FORMATTED_DATE.
CONCATENATE L_V1 L_FORMATTED_DATE INTO L_TITLE
SEPARATED BY SPACE.
L_LINSZ = SY-LINSZ.
L_TITLEL = STRLEN( L_TITLE ).
L_START = ( L_LINSZ / 2 ) - ( L_TITLEL / 2 ) - 2.
NEW-LINE.
POSITION L_START.
WRITE: L_TITLE.
regards
Mallik -
Programming 8051 in Multisim (Using C)
Multisim 11
when i 'm getting start writing C for 8051 in multisim, an error occurs.
I used to use keil c compiler,so I don't know how to use hi-tech compiler.
even so, I wrote a simple LED blanking program, which has problemsin it.
the following is my code
===========================================================
#include <htc.h>
#define LEDPin=P27;
void delay(unsigned int);
void main()
while(1){
LEDPin = 1;
delay(10000);
LEDPin = 0;
delay(10000);
void delay(unsigned int x)
unsigned int i;
for(i=0;i<x;i++);
===========================================================
When I tried to build it, it kept saying that there's error in the line with red mark.(expression syntax)
Could anyone tell me where I did wrong?Your define statement appears to be incorrect.
#define LEDPin=P27
should be......
#define LEDPin P27
Also, I use PIC micros and the naming convention used is (for example) RA5 which means Port A, bit 5. Check to make sure P27 actually maps to a pin. Sometimes the assembly definitions are not the same as the C definitions. -
JButton not visible after use of Jpanel removeAll ..
Hi!
I'm having a calculator class that inherits JFrame. I need to add more buttons after setting an option from the (view) menu bar .. (from normal to scientific calculator). I needed to use the JPanel removeAll method and then add the normal buttons plus extra buttons. But the problem is, that the Buttons are only visible when I touch them with the mouse.
Does anybody know why? Thanks for your help!
See code below (still in construction phase):
Name: Hemanth. B
Original code from Website: java-swing-tutorial.html
Topic : A basic Java Swing Calculator
Conventions Used in Source code
1. All JLabel components start with jlb*
2. All JPanel components start with jpl*
3. All JMenu components start with jmenu*
4. All JMenuItem components start with jmenuItem*
5. All JDialog components start with jdlg*
6. All JButton components start with jbn*
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame
implements ActionListener {
// Constants
final int NORMAL = 0;
final int SCIENTIFIC = 8;
final int MAX_INPUT_LENGTH = 20;
final int INPUT_MODE = 0;
final int RESULT_MODE = 1;
final int ERROR_MODE = 2;
// Variables
int displayMode;
int calcType = SCIENTIFIC;
boolean clearOnNextDigit, percent;
double lastNumber;
String lastOperator, title;
private JMenu jmenuFile, jmenuView, jmenuHelp;
private JMenuItem jmenuitemExit, jmenuitemAbout;
private JRadioButtonMenuItem jmenuItemNormal = new JRadioButtonMenuItem("Normal");
private JRadioButtonMenuItem jmenuItemScientific = new JRadioButtonMenuItem("Scientific");
private ButtonGroup viewMenuButtonGroup = new ButtonGroup();
private JLabel jlbOutput;
private JButton jbnButtons[];
private JPanel jplButtons, jplMaster, jplBackSpace, jplControl;
* Font(String name, int style, int size)
Creates a new Font from the specified name, style and point size.
Font f12 = new Font("Verdana", 0, 12);
Font f121 = new Font("Verdana", 1, 12);
// Constructor
public Calculator(String title) {
/* Set Up the JMenuBar.
* Have Provided All JMenu's with Mnemonics
* Have Provided some JMenuItem components with Keyboard Accelerators
//super(title);
this.title = title;
//displayCalculator(title);
} //End of Contructor Calculator
private void displayCalculator (String title) {
//add WindowListener for closing frame and ending program
addWindowListener (
new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
//setResizable(false);
//Set frame layout manager
setBackground(Color.gray);
validate();
createMenuBar();
createMasterPanel();
createDisplayPanel();
clearAll();
this.getContentPane().validate();
requestFocus();
pack();
//getContentPane().
setVisible(true);
private void createMenuBar() {
jmenuFile = new JMenu("File");
jmenuFile.setFont(f121);
jmenuFile.setMnemonic(KeyEvent.VK_F);
jmenuitemExit = new JMenuItem("Exit");
jmenuitemExit.setFont(f12);
jmenuitemExit.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_X,
ActionEvent.CTRL_MASK));
jmenuFile.add(jmenuitemExit);
jmenuView = new JMenu("View");
jmenuFile.setFont(f121);
jmenuFile.setMnemonic(KeyEvent.VK_W);
jmenuItemNormal.setMnemonic(KeyEvent.VK_N);
viewMenuButtonGroup.add(jmenuItemNormal);
jmenuView.add(jmenuItemNormal);
jmenuItemScientific.setMnemonic(KeyEvent.VK_S);
viewMenuButtonGroup.add(jmenuItemScientific);
jmenuView.add(jmenuItemScientific);
if (jmenuItemNormal.isSelected() == false &&
jmenuItemScientific.isSelected() == false)
jmenuItemScientific.setSelected(true);
jmenuHelp = new JMenu("Help");
jmenuHelp.setFont(f121);
jmenuHelp.setMnemonic(KeyEvent.VK_H);
jmenuitemAbout = new JMenuItem("About Calculator");
jmenuitemAbout.setFont(f12);
jmenuHelp.add(jmenuitemAbout);
JMenuBar menubar = new JMenuBar();
menubar.add(jmenuFile);
menubar.add(jmenuView);
menubar.add(jmenuHelp);
setJMenuBar(menubar);
jmenuItemNormal.addActionListener(this);
jmenuItemScientific.addActionListener(this);
jmenuitemAbout.addActionListener(this);
jmenuitemExit.addActionListener(this);
private void createDisplayPanel() {
if (jlbOutput != null) {
jlbOutput.removeAll();
jlbOutput = new JLabel("0",JLabel.RIGHT);
jlbOutput.setBackground(Color.WHITE);
jlbOutput.setOpaque(true);
// Add components to frame
getContentPane().add(jlbOutput, BorderLayout.NORTH);
jlbOutput.setVisible(true);
private void createMasterPanel() {
if (jplMaster != null) {
jplMaster.removeAll();
jplMaster = new JPanel(new BorderLayout());
createCalcButtons();
jplMaster.add(jplBackSpace, BorderLayout.WEST);
jplMaster.add(jplControl, BorderLayout.EAST);
jplMaster.add(jplButtons, BorderLayout.SOUTH);
((JPanel)getContentPane()).revalidate();
// Add components to frame
getContentPane().add(jplMaster, BorderLayout.SOUTH);
jplMaster.setVisible(true);
private void createCalcButtons() {
int rows = 4;
int cols = 5 + calcType/rows;
jbnButtons = new JButton[31];
// Create numeric Jbuttons
for (int i=0; i<=9; i++) {
// set each Jbutton label to the value of index
jbnButtons[i] = new JButton(String.valueOf(i));
// Create operator Jbuttons
jbnButtons[10] = new JButton("+/-");
jbnButtons[11] = new JButton(".");
jbnButtons[12] = new JButton("=");
jbnButtons[13] = new JButton("/");
jbnButtons[14] = new JButton("*");
jbnButtons[15] = new JButton("-");
jbnButtons[16] = new JButton("+");
jbnButtons[17] = new JButton("sqrt");
jbnButtons[18] = new JButton("1/x");
jbnButtons[19] = new JButton("%");
jplBackSpace = new JPanel();
jplBackSpace.setLayout(new GridLayout(1, 1, 2, 2));
jbnButtons[20] = new JButton("Backspace");
jplBackSpace.add(jbnButtons[20]);
jplControl = new JPanel();
jplControl.setLayout(new GridLayout(1, 2, 2 ,2));
jbnButtons[21] = new JButton(" CE ");
jbnButtons[22] = new JButton("C");
jplControl.add(jbnButtons[21]);
jplControl.add(jbnButtons[22]);
//if (calcType == SCIENTIFIC) {
jbnButtons[23] = new JButton("s");
jbnButtons[24] = new JButton("t");
jbnButtons[25] = new JButton("u");
jbnButtons[26] = new JButton("v");
jbnButtons[27] = new JButton("w");
jbnButtons[28] = new JButton("x");
jbnButtons[29] = new JButton("y");
jbnButtons[30] = new JButton("z");
// Setting all Numbered JButton's to Blue. The rest to Red
for (int i=0; i<jbnButtons.length; i++) {
//activate ActionListener
System.out.println("add action listener: " + i);
jbnButtons.addActionListener(this);
//set button text font/colour
jbnButtons[i].setFont(f12);
jbnButtons[i].invalidate();
if (i<10)
jbnButtons[i].setForeground(Color.blue);
else
jbnButtons[i].setForeground(Color.red);
// container for Jbuttons
jplButtons = new JPanel(new GridLayout(rows, cols, 2, 2));
System.out.println("Cols: " + cols);
//Add buttons to keypad panel starting at top left
// First row
// extra left buttons for scientific
if (calcType == SCIENTIFIC) {
System.out.println("Adding Scientific buttons");
setSize(400, 217);
setLocation(200, 250);
jplButtons.add(jbnButtons[23]);
jplButtons.add(jbnButtons[27]);
} else {
setSize(241, 217);
setLocation(200, 250);
for(int i=7; i<=9; i++) {
jplButtons.add(jbnButtons[i]);
// add button / and sqrt
jplButtons.add(jbnButtons[13]);
jplButtons.add(jbnButtons[17]);
// Second row
// extra left buttons for scientific
if (calcType == SCIENTIFIC) {
System.out.println("Adding Scientific buttons");
jplButtons.add(jbnButtons[24]);
jplButtons.add(jbnButtons[28]);
for(int i=4; i<=6; i++) {
jplButtons.add(jbnButtons[i]);
// add button * and x^2
jplButtons.add(jbnButtons[14]);
jplButtons.add(jbnButtons[18]);
// Third row
// extra left buttons for scientific
if (calcType == SCIENTIFIC) {
System.out.println("Adding Scientific buttons");
jplButtons.add(jbnButtons[25]);
jplButtons.add(jbnButtons[29]);
for( int i=1; i<=3; i++) {
jplButtons.add(jbnButtons[i]);
//adds button - and %
jplButtons.add(jbnButtons[15]);
jplButtons.add(jbnButtons[19]);
//Fourth Row
// extra left buttons for scientific
if (calcType == SCIENTIFIC) {
System.out.println("Adding Scientific buttons");
jplButtons.add(jbnButtons[26]);
jplButtons.add(jbnButtons[30]);
// add 0, +/-, ., +, and =
jplButtons.add(jbnButtons[0]);
jplButtons.add(jbnButtons[10]);
jplButtons.add(jbnButtons[11]);
jplButtons.add(jbnButtons[16]);
jplButtons.add(jbnButtons[12]);
jplButtons.revalidate();
// Perform action
public void actionPerformed(ActionEvent e){
double result = 0;
if(e.getSource() == jmenuitemAbout) {
//JDialog dlgAbout = new CustomABOUTDialog(this,
// "About Java Swing Calculator", true);
//dlgAbout.setVisible(true);
} else if(e.getSource() == jmenuitemExit) {
System.exit(0);
if (e.getSource() == jmenuItemNormal) {
calcType = NORMAL;
displayCalculator(title);
if (e.getSource() == jmenuItemScientific) {
calcType = SCIENTIFIC;
displayCalculator(title);
System.out.println("Calculator is set to "
+ (calcType == NORMAL?"Normal":"Scientific") + " :" + jbnButtons.length);
// Search for the button pressed until end of array or key found
for (int i=0; i<jbnButtons.length; i++) {
if(e.getSource() == jbnButtons[i]) {
System.out.println(i);
switch(i) {
case 0:
addDigitToDisplay(i);
break;
case 1:
System.out.println("1");
addDigitToDisplay(i);
break;
case 2:
addDigitToDisplay(i);
break;
case 3:
addDigitToDisplay(i);
break;
case 4:
addDigitToDisplay(i);
break;
case 5:
addDigitToDisplay(i);
break;
case 6:
addDigitToDisplay(i);
break;
case 7:
addDigitToDisplay(i);
break;
case 8:
addDigitToDisplay(i);
break;
case 9:
addDigitToDisplay(i);
break;
case 10: // +/-
processSignChange();
break;
case 11: // decimal point
addDecimalPoint();
break;
case 12: // =
processEquals();
break;
case 13: // divide
processOperator("/");
break;
case 14: // *
processOperator("*");
break;
case 15: // -
processOperator("-");
break;
case 16: // +
processOperator("+");
break;
case 17: // sqrt
if (displayMode != ERROR_MODE) {
try {
if (getDisplayString().indexOf("-") == 0)
displayError("Invalid input for function!");
result = Math.sqrt(getNumberInDisplay());
displayResult(result);
catch(Exception ex) {
displayError("Invalid input for function!");
displayMode = ERROR_MODE;
break;
case 18: // 1/x
if (displayMode != ERROR_MODE){
try {
if (getNumberInDisplay() == 0)
displayError("Cannot divide by zero!");
result = 1 / getNumberInDisplay();
displayResult(result);
catch(Exception ex) {
displayError("Cannot divide by zero!");
displayMode = ERROR_MODE;
break;
case 19: // %
if (displayMode != ERROR_MODE){
try {
result = getNumberInDisplay() / 100;
displayResult(result);
catch(Exception ex) {
displayError("Invalid input for function!");
displayMode = ERROR_MODE;
break;
case 20: // backspace
if (displayMode != ERROR_MODE) {
setDisplayString(getDisplayString().substring(0,
getDisplayString().length() - 1));
if (getDisplayString().length() < 1)
setDisplayString("0");
break;
case 21: // CE
clearExisting();
break;
case 22: // C
clearAll();
break;
void setDisplayString(String s) {
jlbOutput.setText(s);
String getDisplayString () {
return jlbOutput.getText();
void addDigitToDisplay(int digit) {
if (clearOnNextDigit)
setDisplayString("");
String inputString = getDisplayString();
if (inputString.indexOf("0") == 0) {
inputString = inputString.substring(1);
if ((!inputString.equals("0") || digit > 0)
&& inputString.length() < MAX_INPUT_LENGTH) {
setDisplayString(inputString + digit);
displayMode = INPUT_MODE;
clearOnNextDigit = false;
void addDecimalPoint() {
displayMode = INPUT_MODE;
if (clearOnNextDigit)
setDisplayString("");
String inputString = getDisplayString();
// If the input string already contains a decimal point, don't
// do anything to it.
if (inputString.indexOf(".") < 0)
setDisplayString(new String(inputString + "."));
void processSignChange() {
if (displayMode == INPUT_MODE) {
String input = getDisplayString();
if (input.length() > 0 && !input.equals("0")) {
if (input.indexOf("-") == 0)
setDisplayString(input.substring(1));
else
setDisplayString("-" + input);
} else if (displayMode == RESULT_MODE) {
double numberInDisplay = getNumberInDisplay();
if (numberInDisplay != 0)
displayResult(-numberInDisplay);
void clearAll() {
setDisplayString("0");
lastOperator = "0";
lastNumber = 0;
displayMode = INPUT_MODE;
clearOnNextDigit = true;
void clearExisting() {
setDisplayString("0");
clearOnNextDigit = true;
displayMode = INPUT_MODE;
double getNumberInDisplay() {
String input = jlbOutput.getText();
return Double.parseDouble(input);
void processOperator(String op) {
if (displayMode != ERROR_MODE) {
double numberInDisplay = getNumberInDisplay();
if (!lastOperator.equals("0")) {
try {
double result = processLastOperator();
displayResult(result);
lastNumber = result;
catch (DivideByZeroException e) {
displayError("Cannot divide by zero!");
} else {
lastNumber = numberInDisplay;
clearOnNextDigit = true;
lastOperator = op;
void processEquals() {
double result = 0;
if (displayMode != ERROR_MODE){
try {
result = processLastOperator();
displayResult(result);
catch (DivideByZeroException e) {
displayError("Cannot divide by zero!");
lastOperator = "0";
double processLastOperator() throws DivideByZeroException {
double result = 0;
double numberInDisplay = getNumberInDisplay();
if (lastOperator.equals("/")) {
if (numberInDisplay == 0)
throw (new DivideByZeroException());
result = lastNumber / numberInDisplay;
if (lastOperator.equals("*"))
result = lastNumber * numberInDisplay;
if (lastOperator.equals("-"))
result = lastNumber - numberInDisplay;
if (lastOperator.equals("+"))
result = lastNumber + numberInDisplay;
return result;
void displayResult(double result){
setDisplayString(Double.toString(result));
lastNumber = result;
displayMode = RESULT_MODE;
clearOnNextDigit = true;
void displayError(String errorMessage){
setDisplayString(errorMessage);
lastNumber = 0;
displayMode = ERROR_MODE;
clearOnNextDigit = true;
public static void main(String args[]) {
Calculator calci = new Calculator("My Calculator");
calci.displayCalculator("My Calculator");
System.out.println("Exitting...");
} //End of Swing Calculator Class.
class DivideByZeroException extends Exception{
public DivideByZeroException() {
super();
public DivideByZeroException(String s) {
super(s);
class CustomABOUTDialog extends JDialog implements ActionListener {
JButton jbnOk;
CustomABOUTDialog(JFrame parent, String title, boolean modal){
super(parent, title, modal);
setBackground(Color.black);
JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
StringBuffer text = new StringBuffer();
text.append("Calculator Information\n\n");
text.append("Developer: Hemanth\n");
text.append("Version: 1.0");
JTextArea jtAreaAbout = new JTextArea(5, 21);
jtAreaAbout.setText(text.toString());
jtAreaAbout.setFont(new Font("Times New Roman", 1, 13));
jtAreaAbout.setEditable(false);
p1.add(jtAreaAbout);
p1.setBackground(Color.red);
getContentPane().add(p1, BorderLayout.CENTER);
JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
jbnOk = new JButton(" OK ");
jbnOk.addActionListener(this);
p2.add(jbnOk);
getContentPane().add(p2, BorderLayout.SOUTH);
setLocation(408, 270);
setResizable(false);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Window aboutDialog = e.getWindow();
aboutDialog.dispose();
pack();
public void actionPerformed(ActionEvent e) {
if(e.getSource() == jbnOk) {
this.dispose();
Message was edited by:
dungorgSwing related questions should be posted in the Swing forum.
After adding or removing components from a visible panel you need to use panel.revalidate() and sometimes panel.repaint();
If you need further help then you need to create a [url http://homepage1.nifty.com/algafield/sscce.html]Short, Self Contained, Compilable and Executable, Example Program (SSCCE) that demonstrates the incorrect behaviour, because I can't guess exactly what you are doing based on the information provided.
Don't forget to use the [url http://forum.java.sun.com/help.jspa?sec=formatting]Code Formatting Tags so the posted code retains its original formatting. -
Quicktime doesn't seem to respond to the naming convention used in other programs like After Effect or Combustion for naming image sequences when you are exporting the sequence. It does let you put a space before the sequential numbering but this is no good for using image sequences in Maya for example. During the save prompt if we were to save the image sequence as AppleMovie.[####].jpg in these programs we would yield an image sequence with AppleMovie.0001.jpg, AppleMovie.0002.jpg, AppleMovie.0003.jpg, etc. Anyone know if there is a way to do this as I've described?
Open ExtendScript Toolkit this can be found here:-
PC: C:\Program Files\Adobe\Adobe Utilities
MAC: <hard drive>/Applications/Utilities/Adobe Utilities
Copy and paste the code into a new window and then save the code to:-
PC: C:\Program Files\Adobe\Adobe Photoshop CS#\Presets\Scripts
Mac:- [hard drive]/Applications/Adobe Photoshop CS#/Presets/Scripts/
If photoshop was open, close and re-start it so that Photoshop can pick up the new script.
Now you can create an action to run the script and do your save so that this action can be batched.
To add the script to your action:
File - Scripts - select the script (this will add the new layer)
Maybe you are looking for
-
I sat up all night, last night, editing a movie for a school project which is due Friday. I am extremely busy, and as i opened the file this morning to show the progress to a partner, Premiere, told me "Premiere pro has encountered an error" - "[c:\M
-
How to cancel one file from recycle bin ...
Hi all, most probably I'm making a very stupid question but how I can remove just selected files from recycle bin ? For removing I mean DELETED the files and not returning them into their original position. Thanks in advance for your help here Ciao G
-
After I enter my @mac info in preferences of ichat nothing happens. Everything in the buddy menu is greyed out. I tried a test message to tryichatav, but I get an error saying "could not send instant message to tryichatav" . If I go back to my prefer
-
I have made the following settings in general tab of firefox in settings When firefox starts - Show a blank page Home page - About blank Inspite of the above settings, when I start firefox, it many times opens the page I was browsing before I had clo
-
Making 3channel 32 bit images from 1 channel 8 bit images ( channel combining)
Hi guys Although I have a simple problem, i could not solve it yet. I am tring to combine opencv and labview by using .dll.I succesfully process and read 8bit images from opencv to display on labview as a 8bit images. My problem encounters here. Whe