Sort a 'std::list' containing classes/structures
Hi all,
I find that std::sort' cannot be used to sort 'std::list' because it requires a random access iterator which is not available for a list. Although that works for dqueue without any problem. Is any body know about any workaround for std::list sorting. I have one using template but i required without using template. ??
Using template
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
typedef struct xx {
int a;
int b;
bool operator<(const xx& src) const;
bool operator>(const xx& src) const;
} X;
bool xx::operator<(const xx& src) const
if (b <= src.b) return true;
return false;
bool xx::operator>(const xx& src) const
if (b > src.b) return true;
return false;
template<typename T>
class PtrClass
public:
T *m_src;
PtrClass(T &src):m_src(&src)
bool operator<(const PtrClass& src) const
return m_src->operator<(*src.m_src);
bool operator>(const PtrClass& src) const
return m_src->operator>(*src.m_src);
int main()
X o1 = {1, 9};
X o2 = {2, 8};
X o3 = {3, 7};
list<PtrClass<X> > l;
list<PtrClass<X> >::iterator it;
l.push_back(o1);
l.push_back(o2);
l.push_back(o3);
cout << " BEFORE ______"<<endl;
for(it = l.begin(); it != l.end(); it++)
cout << "Inside"<<endl;
l.sort();
cout << " AFTER ______"<<endl;
for(it = l.begin(); it != l.end(); it++)
cout << "Inside"<<endl;
return 0;
}
1. You can use std::list::sort method.
2. You can use std::set instead of std::list.
Similar Messages
-
Std::list::sort() doesn't work with custom class
The following example doesn't order a list the way I'd expect. Is this being done wrong? Sun Studio 12 (not update 1). Current patches as of Monday.
#include <list>
class CMyClass
public:
CMyClass(long a) : m_Sec(a) { }
bool operator<(const CMyClass* rhs)
return (m_Sec < rhs->m_Sec);
long m_Sec;
typedef std::list<CMyClass*> TLogList;
int
main(int argc, char* argv[])
TLogList logList;
CMyClass* name = new CMyClass(0x4A833E79);
logList.push_back(name);
name = new CMyClass(0x4A85E144);
logList.push_back(name);
name = new CMyClass(0x4A85E66F);
logList.push_back(name);
name = new CMyClass(0x4A85E66F);
logList.push_back(name);
name = new CMyClass(0x4A85B2C2);
logList.push_back(name);
name = new CMyClass(0x4A85D6EF);
logList.push_back(name);
name = new CMyClass(0x4A69F9AD);
logList.push_back(name);
name = new CMyClass(0x4A85DC92);
logList.push_back(name);
name = new CMyClass(0x4A817316);
logList.push_back(name);
name = new CMyClass(0x4A85DEEB);
logList.push_back(name);
name = new CMyClass(0x4A846329);
logList.push_back(name);
name = new CMyClass(0x4A85E39D);
logList.push_back(name);
name = new CMyClass(0x4A85D41D);
logList.push_back(name);
name = new CMyClass(0x4A89CC17);
logList.push_back(name);
name = new CMyClass(0x4A85DC19);
logList.push_back(name);
logList.sort();
TLogList::iterator logListIter = logList.begin();
TLogList::iterator logListEnd = logList.end();
for (; logListIter != logListEnd; ++logListIter)
CMyClass* name = *logListIter;
cout << hex << name->m_Sec << endl;
return 0;
which produces
4a833e79
4a85e144
4a85e66f
4a85e66f
4a85b2c2
4a85d6ef
4a69f9ad
4a85dc92
4a817316
4a85deeb
4a846329
4a85e39d
4a85d41d
4a89cc17
4a85dc19The program as you wrote it will sort the contents of the list. The list consists of the addresses of CMyClass objects, and after sorting, will contain those addresses in sorted order.
If you want to sort by the contents of the classes that are pointed to, you need to provide a comparison operator that compares the contents, and use the other form of the list::sort function that takes a comparison function as an argument. That is, add the function
bool comp(const CMyClass* l, const CMyClass* r)
return l->m_Sec < r->m_Sec;
}and change
logList.sort(); to
logList.sort(comp); This version of list::sort will not compile using the default libCstd, because it requires member templates in the library implementation. For more information about this limitation, refer to the C++ FAQ section on library compatibility.
[http://developers.sun.com/sunstudio/documentation/ss12u1/mr/READMEs/c++_faq.html#LibComp]
The revised code will compile with the optional STLport library, or with other 3rd-party libraries like Apache stdcxx. To use STLport, add the option -library=stlport4 to every CC command, compiling and linking. You cannot mix code compiled for the default libCstd with STLport code in the same program. -
I am working with a custom table zscs_record.
data is being fetched in the perform upload_workarea.
but the list contains no data.
there might be any problem with the display_log.
if anybody plz can find where is the mistake full points will be rewarded.
just copy the program and execute it.
REPORT yreport1 LINE-SIZE 260
NO STANDARD PAGE HEADING
MESSAGE-ID zsc_supply_chain.
T Y P E - P O O L S *
TYPE-POOLS: SLIS.
C o n s t a n t V A R I A B L E S *
CONSTANTS: c_e TYPE char1 VALUE 'E',
c_a TYPE char1 VALUE 'A',
c_s TYPE char1 VALUE 'S',
c_x TYPE char1 VALUE 'X',
c_dynpro_0201(4) TYPE c VALUE '0201',
c_prognam(12) TYPE c VALUE 'SAPRCKM_MR22',
c_dynpro_1000(4) TYPE c VALUE '1000',
c_dynpro_0120(4) TYPE c VALUE '0120',
c_okcode(10) TYPE c VALUE 'BDC_OKCODE',
c_entr(5) TYPE c VALUE '=ENTR',
c_dummy(6) TYPE c VALUE '=DUMMY',
c_down(5) TYPE c VALUE '=DOWN',
c_save(5) TYPE c VALUE '=SAVE',
c_back(5) TYPE c VALUE '=BACK',
c_onli(5) TYPE c VALUE '=ONLI',
c_ee(3) TYPE c VALUE '/EE',
c_one TYPE ckml_kongr VALUE '1' ,
c_bkpf(4) TYPE c VALUE 'BKPF',
c_wfp TYPE bukrs VALUE 'WFP',
c_sa TYPE blart VALUE 'SA',
c_ags TYPE ktosl VALUE 'AGS',
c_usd TYPE waers_iso VALUE 'USD',
c_budat(14) TYPE c VALUE 'MR21HEAD-BUDAT',
c_bukrs(14) TYPE c VALUE 'MR21HEAD-BUKRS',
c_werks(14) TYPE c VALUE 'MR21HEAD-WERKS',
c_xblnr(14) TYPE c VALUE 'MR21HEAD-XBLNR',
c_kongr(14) TYPE c VALUE 'CKMLKONT-KONGR',
c_bktxt(14) TYPE c VALUE 'MR21HEAD-BKTXT',
c_mr22 TYPE tstc-tcode VALUE 'MR22',
c_f13 TYPE tstc-tcode VALUE 'F.13',
c_n(1) TYPE c VALUE 'N',
c_bag TYPE char9 VALUE '%Bagging%',
c_ltsh TYPE char12 VALUE '%LTSH%Clear%',
c_trnsf TYPE char30 VALUE '%Transformation%Clear%',
c_ste TYPE char20 VALUE '%Stevedoring%Clear%',
c_mat TYPE char30 VALUE '%Material%Revaluation',
c_mat1 TYPE char8 VALUE 'MATERIAL',
c_rev TYPE char10 VALUE 'REVOLUTION',
c_tabname TYPE tabname VALUE 'ZSCT_RECORD',
c_prognam3(7) TYPE c VALUE 'SAPF124',
c_prognam4(8) TYPE c VALUE 'SAPMSSY0',
c_cursor(10) TYPE c VALUE 'BDC_CURSOR',
c_konts_low(9) TYPE c VALUE 'KONTS-LOW',
c_bukrx_low(9) TYPE c VALUE 'BUKRX-LOW',
c_saknr(7) TYPE c VALUE 'X_SAKNR',
c_augdt(5) TYPE c VALUE 'AUGDT',
c_testl(5) TYPE c VALUE 'TESTL',
c_xausbel(7) TYPE c VALUE 'XAUSBEL',
c_xnausbel(8) TYPE c VALUE 'XNAUSBEL',
c_fehler(8) TYPE c VALUE 'X_FEHLER',
c_mr21(23) TYPE c VALUE 'MR21HEAD-SCREEN_VARIANT',
c_lagmat(18) TYPE c VALUE 'LAGERMATERIAL_0250',
c_psp(30) TYPE c VALUE 'PSP-ELEMENT - OHNE BWKEY_0250',
c_ckmatnr(20) TYPE c VALUE 'CKI_MR22_0250-MATNR(',
c_ckzuumb(20) TYPE c VALUE 'CKI_MR22_0250-ZUUMB(',
c_ckpspnr(20) TYPE c VALUE 'CKI_MR22_0250-PSPNR(',
c_ckbwkey(20) TYPE c VALUE 'CKI_MR22_0250-BWKEY(',
c_sp(1) TYPE c VALUE ')',
c_shkzg1 TYPE shkzg VALUE 'H',
c_shkzg2 TYPE shkzg VALUE 'S',
*For ALV column positions
c_col_pos1 TYPE sycucol VALUE '01',
c_col_pos2 TYPE sycucol VALUE '02',
c_col_pos3 TYPE sycucol VALUE '03',
c_col_pos4 TYPE sycucol VALUE '04',
c_col_pos5 TYPE sycucol VALUE '05',
c_col_pos6 TYPE sycucol VALUE '06',
c_col_pos7 TYPE sycucol VALUE '07',
c_col_pos8 TYPE sycucol VALUE '08',
c_col_pos9 TYPE sycucol VALUE '09',
c_col_pos10 TYPE sycucol VALUE '10',
c_col_pos11 TYPE sycucol VALUE '11',
c_col_pos12 TYPE sycucol VALUE '12',
c_col_pos13 TYPE sycucol VALUE '13',
c_col_pos14 TYPE sycucol VALUE '14',
c_col_pos15 TYPE sycucol VALUE '15',
*For ALV Field Names of final Table
c_fld_recid TYPE slis_fieldname VALUE 'RECID', "Record ID number
c_fld_kongr TYPE slis_fieldname VALUE 'KONGR', "Reason code
c_fld_hkont TYPE slis_fieldname VALUE 'HKONT', "GL Account
c_fld_projk TYPE slis_fieldname VALUE 'PROJK', "Project code
c_fld_werks TYPE slis_fieldname VALUE 'WERKS', "Plant
c_fld_matnr TYPE slis_fieldname VALUE 'MATNR', "Commodity
c_fld_zcptp TYPE slis_fieldname VALUE 'ZCPTP', "Cose portion to be posted
c_fld_zerrf TYPE slis_fieldname VALUE 'ZERRF', "Success flag
c_fld_zerrc TYPE slis_fieldname VALUE 'ZERRC', "Error code
c_fld_zertx TYPE slis_fieldname VALUE 'ZERTX', "Error txt
c_fld_hkont1 TYPE slis_fieldname VALUE 'HKONT',
c_fld_opbal TYPE slis_fieldname VALUE 'OPBAL',
c_fld_exp TYPE slis_fieldname VALUE 'EXP',
c_fld_cap TYPE slis_fieldname VALUE 'CAP',
c_fld_err TYPE slis_fieldname VALUE 'ERR',
c_table TYPE slis_tabname VALUE 'i_log_disp'.
*T Y P E S *
*Structure for uploading the data for further processing
TYPES: BEGIN OF t_zscs_record ,
recid TYPE zderecid, "Record id number
zerrf TYPE zdeerrf, "Processed \ not processed flag - FLAG X Success Blank
cpudt TYPE cpudt, "Day On Which Accounting Document Was Entered
kongr TYPE ckml_kongr, "Account Assignment Reason
hkont TYPE hkont, "General Ledger Account
projk TYPE char30, "WBS Element
werks TYPE werks_d, "Plant
matnr TYPE matnr, "Material Number
zcptp TYPE zdecptp, "cost portion to be posted
belnr TYPE belnr_d, "Accounting Document Number
zerrc TYPE zdeerrc, "Error code
zertx TYPE zdeertx, "Error text
set TYPE numc2,
END OF t_zscs_record ,
*Structre for modified WBS element
BEGIN OF t_zscs_record_m ,
recid TYPE zderecid, "Record id number
zerrf TYPE zdeerrf, "Processed \ not processed flag - FLAG X Success Blank
cpudt TYPE cpudt, "Day On Which Accounting Document Was Entered
kongr TYPE ckml_kongr, "Account Assignment Reason
hkont TYPE hkont, "General Ledger Account
projk TYPE char24,
werks TYPE werks_d, "Plant
matnr TYPE matnr, "Material Number
zcptp TYPE zdecptp, "cost portion to be posted
belnr TYPE belnr_d, "Accounting Document Number
zerrc TYPE zdeerrc, "Error code
zertx TYPE zdeertx, "Error text
set TYPE numc2,
END OF t_zscs_record_m,
*Structure for retrieving data from custom table ZSCT_AUTOINV
BEGIN OF t_zsct_autoinv,
saknr TYPE saknr, "G/L Account Number
fipos TYPE fm_fipex, "Commitment Item
geber TYPE bp_geber, "Fund
saknr_off TYPE saknr, "G/L Account Number
fipos_off TYPE fm_fipex, "Commitment Item
END OF t_zsct_autoinv,
*Structure for retrieving data from database table FMBDT
BEGIN OF t_fmbdt,
rldnr TYPE rldnr, "Ledger
rrcty TYPE rrcty, "Record Type
rvers TYPE versn, "Version
ryear TYPE gjahr, "Fiscal Year
robjnr TYPE gobjnr_r, "Object number for objects (account assignment elements)
cobjnr TYPE gobjnr_c, "Object number for transaction attributes
sobjnr TYPE gobjnr_s, "Object number for partner objects (accnt assignmnt elements)
rtcur TYPE rtcur, "Currency Key
drcrk TYPE shkzg, "Debit/Credit Indicator
rpmax TYPE rpmax, "period
rfund TYPE fm_fund, "Fund
rfundsctr TYPE fistl, "Funds Center
rmeasure TYPE fm_measure, "Funded Program
END OF t_fmbdt,
*Structure for retrieveing data from table SKAT
BEGIN OF t_skat,
spras TYPE spras, "Language Key
ktopl TYPE ktopl, "Chart of Accounts
saknr TYPE saknr, "G/L Account Number
txt50 TYPE txt50_skat, "G/L Account Long Text
END OF t_skat,
*Structure for tracking the errors occured during document posting
*through standard BAPI
BEGIN OF t_error_bapi,
number TYPE symsgno,
message TYPE bapi_msg,
recid TYPE zderecid,
set TYPE numc2,
END OF t_error_bapi,
*Structure for tracking the success occured during document posting
*through standard BAPI
BEGIN OF t_suc_bapi,
belnr TYPE belnr_d,
message TYPE bapi_msg,
recid TYPE zderecid,
set TYPE numc2,
END OF t_suc_bapi,
*Structure for tracking the errors occured during document posting
*through MR22 transaction code
BEGIN OF t_error_bdc,
recid TYPE zderecid, "Record id number
number TYPE symsgno,
message TYPE bapi_msg,
set TYPE numc2,
END OF t_error_bdc,
*Structure for tracking the document no. occured during successful posting
*through MR22 transaction code
BEGIN OF t_suc_bdc,
recid TYPE zderecid, "Record id number
var TYPE sy-msgv1,
message TYPE bapi_msg,
set TYPE numc2,
END OF t_suc_bdc,
BEGIN OF t_log_disp,
recid TYPE zderecid, "Record id number
kongr TYPE ckml_kongr, "Account Assignment Reason
hkont TYPE hkont, "General Ledger Account
projk TYPE char30, "WBS Element
werks TYPE werks_d, "Plant
matnr TYPE matnr, "Material Number
zcptp TYPE zdecptp, "cost portion to be posted
zerrf TYPE zdeerrf, "Processed \ not processed flag - FLAG X Success Blank
zerrc TYPE zdeerrc, "Error code
zertx TYPE zdeertx, "Error text
hkont1 TYPE hkont,
opbal TYPE dmbtr,
exp TYPE dmbtr,
cap TYPE dmbtr,
err TYPE dmbtr,
END OF t_log_disp.
*Field symbols declared for BAPIRET2
FIELD-SYMBOLS: <fs_return> TYPE bapiret2.
G l o b a l W O R K A R E A S *
DATA: w_zscs_record TYPE t_zscs_record,
w_zscs_record_mod TYPE t_zscs_record,
w_fmbdt TYPE t_fmbdt,
w_bapi TYPE t_zscs_record,
w_bdc TYPE t_zscs_record,
w_temp TYPE t_zscs_record, "#EC NEEDED
w_bapiheader TYPE bapiache09,
w_return TYPE bapiret2,
w_accoutgl TYPE bapiacgl09,
w_currency TYPE bapiaccr09,
w_bdcdata TYPE bdcdata,
w_messtab TYPE bdcmsgcoll,
w_error_bapi TYPE t_error_bapi,
w_suc_bapi TYPE t_suc_bapi,
w_error_bdc TYPE t_error_bdc,
w_suc_bdc TYPE t_suc_bdc,
w_fieldcatalog TYPE slis_fieldcat_alv, "Workarea for populating fieldcatalog
w_log_disp TYPE t_log_disp.
I n t e r n a l T a b l e s *
DATA: i_zscs_record TYPE STANDARD TABLE OF t_zscs_record,
i_zscs_record1 TYPE STANDARD TABLE OF t_zscs_record,
i_bapi TYPE STANDARD TABLE OF t_zscs_record,
i_bdc TYPE STANDARD TABLE OF t_zscs_record,
i_fmbdt TYPE STANDARD TABLE OF t_fmbdt,
i_accoutgl TYPE STANDARD TABLE OF bapiacgl09,
i_currency TYPE STANDARD TABLE OF bapiaccr09,
i_return TYPE STANDARD TABLE OF bapiret2,
i_bdcdata TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,
i_messtab TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0,
i_bdcdata1 TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,
i_messtab1 TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0,"#EC NEEDED
i_autoinv TYPE STANDARD TABLE OF t_zsct_autoinv,
i_autoinv1 TYPE STANDARD TABLE OF t_zsct_autoinv,
i_error_bapi TYPE STANDARD TABLE OF t_error_bapi,
i_suc_bapi TYPE STANDARD TABLE OF t_suc_bapi,
i_error_bdc TYPE STANDARD TABLE OF t_error_bdc,
i_suc_bdc TYPE STANDARD TABLE OF t_suc_bdc,
i_fieldcatalog TYPE slis_t_fieldcat_alv,
i_log_disp TYPE STANDARD TABLE OF t_log_disp. "internal table for final log display
G l o b a l V A R I A B L E S *
DATA: v_rec TYPE string,
v_rec1 TYPE string,
v_count TYPE numc2 VALUE 1,
v_flag TYPE char1, "#EC NEEDED
v_subrc TYPE sysubrc,
v_objkey TYPE awkey,
v_amt TYPE zdecptp,
v_txt50 TYPE txt50_skat,
v_pspid TYPE ps_pspid, "#EC NEEDED
v_totexppe TYPE zdecptp,
v_totcapit TYPE zdecptp,
v_toterror TYPE zdecptp,
v_todmbtr TYPE dmbtr,
v_repid TYPE sy-repid.
S E L E C T I O N - S C R E E N D E F I N I T I O N *
S E L E C T I O N - S C R E E N *
*Begin of inv selection block
SELECTION-SCREEN BEGIN OF BLOCK inv WITH FRAME TITLE text-001.
PARAMETERS: p_pstdat TYPE budat DEFAULT sy-datum, "Posting Date
p_rtmode AS CHECKBOX DEFAULT c_x, "Run in test mode
p_prsall RADIOBUTTON GROUP rad DEFAULT 'X' USER-COMMAND com, "Process All
p_cstcpt RADIOBUTTON GROUP rad, "Process cost to be capitalized
p_cstexp RADIOBUTTON GROUP rad, "Process cost to be expensed
p_exauto AS CHECKBOX. "Execute Automatic Clearing
SELECTION-SCREEN END OF BLOCK inv.
*End of inv selection block
I N I T I A L I Z A T I O N *
INITIALIZATION.
Subroutine for clearing the memory space
PERFORM clear_memory. "To clear the memory space.
A T S E L E C T I O N - S C R E E N O U T P U T *
AT SELECTION-SCREEN OUTPUT.
For checking the Clearing program through transaction code F.13 only
when user selects the radio button Process All
IF p_prsall = c_x. "Process All
p_exauto = c_x. "Execute Automatic Clearing
ELSE.
p_exauto = ' '. "Execute Automatic Clearing
ENDIF.
MODIFY SCREEN.
START OF SELECTION *
START-OF-SELECTION.
Subroutine for uploading data from custom database table
ZSCT_RECORD based on the condition selected by user
PERFORM upload_workarea.
END OF SELECTION *
END-OF-SELECTION.
Subroutine for populating the respective internal tables
for posting the documents either through standard BAPI or MR22 transaction code
PERFORM populate_bapi_bdc.
IF NOT i_bapi[] IS INITIAL.
Subroutine for posting documents through standard BAPI
PERFORM post_bapi.
ENDIF.
IF NOT i_bdc[] IS INITIAL.
Subroutine for posting documents through MR22 transaction code
PERFORM call_transaction_mr22.
ENDIF.
Subroutine for automatic clearing
IF p_exauto = c_x.
PERFORM clear_f13.
ENDIF.
IF ( ( i_error_bapi IS NOT INITIAL ) OR ( i_error_bdc IS NOT INITIAL ) ).
Subroutine for displaying the log file
PERFORM display_log.
ENDIF.
PERFORM FINAL_list.
*& Form CLEAR_MEMORY
text
form CLEAR_MEMORY.
Refreshing the global internal tables
REFRESH: i_zscs_record,
i_zscs_record1,
i_bapi,
i_bdc,
i_fmbdt,
i_accoutgl,
i_currency,
i_return,
i_bdcdata,
i_messtab,
i_bdcdata1,
i_messtab1,
i_autoinv,
i_error_bapi,
i_suc_bapi,
i_error_bdc,
i_suc_bdc.
Clearing the global work areas
CLEAR: w_zscs_record,
w_zscs_record_mod,
w_fmbdt,
w_bapi,
w_bdc,
w_temp,
w_bapiheader,
w_return,
w_accoutgl,
w_currency,
w_bdcdata,
w_messtab,
w_error_bapi,
w_suc_bapi,
w_error_bdc,
w_suc_bdc,
*Clearing the global variables
v_rec,
v_rec1,
v_flag,
v_subrc,
v_objkey,
v_amt,
v_pspid.
endform. " CLEAR_MEMORY
*& Form UPLOAD_WORKAREA
Subroutine for uploading data from custom database table *
ZSCT_RECORD based on the condition selected by user *
form UPLOAD_WORKAREA .
IF p_prsall = c_x.
Selecting the non processed data from table ZSCT_RECORD
SELECT recid "#EC CI_NOFIRST "Record id number
zerrf "Processed\not processed flag
cpudt "Day On Which Accounting Document Was Entered
kongr "Account Assignment Reason
hkont "General Ledger Account
projk "WBS Element
werks "Plant
matnr "Material Number
zcptp "cost portion to be posted
belnr "Accounting Document Number
zerrc "Error code
zertx "Error text
FROM zsct_record
INTO TABLE i_zscs_record
WHERE zerrf NE space
AND cpudt = '20081022'.
IF sy-subrc NE 0.
MESSAGE text-021 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF p_cstcpt = c_x.
Selecting the non processed data from table ZSCT_RECORD
SELECT recid "#EC CI_NOFIRST
zerrf
cpudt
kongr
hkont
projk
werks
matnr
zcptp
belnr
zerrc
zertx
FROM zsct_record
INTO TABLE i_zscs_record
WHERE zerrf NE space
AND kongr <> c_e.
IF sy-subrc NE 0.
MESSAGE text-021 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF p_cstexp = c_x.
Selecting the non processed data from table ZSCT_RECORD
SELECT recid "#EC CI_NOFIRST
zerrf
cpudt
kongr
hkont
projk
werks
matnr
zcptp
belnr
zerrc
zertx
FROM zsct_record
INTO TABLE i_zscs_record
WHERE zerrf NE space
AND kongr EQ c_e.
IF sy-subrc NE 0.
MESSAGE text-021 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
IF sy-subrc = 0.
Sort the internal table by record id
SORT i_zscs_record BY recid.
ENDIF.
endform. " UPLOAD_WORKAREA
*& Form POPULATE_BAPI_BDC *
Subroutine for posting documents through standard BAPI *
FORM populate_bapi_bdc.
DATA: v_tabix TYPE sy-tabix.
Sort the data retrieved from ZSCT_RECORD by KONGR,HKONT & PROJK
SORT i_zscs_record BY kongr hkont projk.
IF NOT i_zscs_record IS INITIAL.
LOOP AT i_zscs_record INTO w_zscs_record_mod.
v_tabix = sy-tabix.
Check if the record id is initial
IF NOT w_zscs_record_mod-recid IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = w_zscs_record_mod-recid
IMPORTING
output = w_zscs_record-recid.
ENDIF.
Check if the reason code is initial
IF NOT w_zscs_record_mod-kongr IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = w_zscs_record_mod-kongr
IMPORTING
output = w_zscs_record-kongr.
ENDIF.
Assign the values
w_zscs_record-hkont = w_zscs_record_mod-hkont.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
input = w_zscs_record_mod-projk
IMPORTING
output = w_zscs_record-projk.
w_zscs_record-werks = w_zscs_record_mod-werks.
w_zscs_record-matnr = w_zscs_record_mod-matnr.
w_zscs_record-zcptp = w_zscs_record_mod-zcptp.
w_zscs_record-cpudt = w_zscs_record_mod-cpudt.
Concatenate KONGR,HKONT & PROJK value to make an unique combination to populate the separete
internal table relevant for posting through BAPI and MR22 transaction
CONCATENATE w_zscs_record-kongr w_zscs_record-hkont w_zscs_record-projk INTO v_rec.
IF v_tabix NE 1.
IF v_rec1 = v_rec.
v_count = v_count. "#EC NEEDED
ELSE.
v_count = v_count + 1.
ENDIF.
ENDIF.
Populate the set number into the two different internal table
relevant for posting through BAPI and MR22 transaction
w_zscs_record-set = v_count.
If the KONGR (Reason code) value is equal to 'E' then the
posting will be occur through standard BAPI
IF w_zscs_record-kongr = c_e.
APPEND w_zscs_record TO i_bapi.
If the KONGR (Reason code) value is not equal to 'E' then the
posting will be occur through MR22 transaction code
ELSEIF w_zscs_record-kongr NE c_e.
APPEND w_zscs_record TO i_bdc.
ENDIF.
v_rec1 = v_rec.
Clear the memory
CLEAR: w_zscs_record,
v_rec.
ENDLOOP.
ENDIF.
endform. " POPULATE_BAPI_BDC
*& Form POST_BAPI
text
form POST_BAPI .
Local structre declaration
TYPES:
Structre for populating record id
BEGIN OF lt_recid,
recid TYPE zderecid,
END OF lt_recid,
Structre for table PRPS
BEGIN OF lt_prps,
pspnr TYPE ps_intnr, "WBS Element
posid TYPE ps_posid, "Work Breakdown Structure Element (WBS Element)
pgsbr TYPE ps_pgsbr, "Business area for WBS element
func_area TYPE fkber, "Functional Area
END OF lt_prps .
Local data declaration
DATA: lw_bapi TYPE t_zscs_record,
lw_bapi1 TYPE t_zscs_record,
lw_recid TYPE lt_recid,
li_recid TYPE STANDARD TABLE OF lt_recid, "#EC NEEDED
li_prps TYPE STANDARD TABLE OF lt_prps,
lw_prps TYPE lt_prps,
li_temp TYPE STANDARD TABLE OF t_zscs_record,
li_temp1 TYPE STANDARD TABLE OF t_zscs_record,
li_bapi TYPE STANDARD TABLE OF t_zscs_record,
li_bapi_m TYPE STANDARD TABLE OF t_zscs_record_m,
lw_bapi_m TYPE t_zscs_record_m,
li_skat TYPE STANDARD TABLE OF t_skat,
li_skat1 TYPE STANDARD TABLE OF t_skat,
li_skat2 TYPE STANDARD TABLE OF t_skat,
lw_temp TYPE t_zscs_record,
li_autoinv TYPE STANDARD TABLE OF t_zsct_autoinv,
lw_autoinv TYPE t_zsct_autoinv,
lv_count TYPE numc10,
lw_skat TYPE t_skat,
lw_skat1 TYPE t_skat, "#EC NEEDED
lw_skat2 TYPE t_skat, "#EC NEEDED
lv_count1 TYPE numc10,
lw_index TYPE sy-index.
Assigning the I_BAPI data to a local internal table
li_temp[] = i_bapi[].
li_bapi[] = i_bapi[].
li_temp1[] = i_bapi[].
Sort the internal table by SET
SORT i_bapi BY set.
Sort the internal table LI_TEMP by SET
SORT li_temp BY set.
Delete adjacent duplicates from LI_TEMP compring SET
DELETE ADJACENT DUPLICATES FROM li_temp COMPARING set.
Sort the internal table LI_TEMP1 by PROJK
SORT li_temp1 BY projk.
Delete adjacent duplicates from LI_TEMP1 compring PROJK
DELETE ADJACENT DUPLICATES FROM li_temp1 COMPARING projk.
Sort the internal table LI_BAPI by HKONT
SORT li_bapi BY hkont.
Delete adjacent duplicates from LI_BAPI compring HKONT
DELETE ADJACENT DUPLICATES FROM li_bapi COMPARING hkont.
Check if the li_bapi is initial or not
IF NOT li_bapi[] IS INITIAL.
Retrieve the text information from database table SKAT
for all the G/L Account relevant to LTSH Overland Clearing Account/
Transformation Clearing / Stevedoring Clearing Account / Bagging Clearing Account
SELECT spras "#EC CI_SGLSELECT
ktopl
saknr
txt50
FROM skat
INTO TABLE li_skat
FOR ALL ENTRIES IN li_bapi
WHERE spras = c_e
AND saknr = li_bapi-hkont
AND ( txt50 LIKE c_bag
OR txt50 LIKE c_ltsh
OR txt50 LIKE c_trnsf
OR txt50 LIKE c_ste
OR txt50 LIKE c_mat ).
IF sy-subrc EQ 0.
SORT li_skat1 BY saknr.
ENDIF.
Spiliting the internal table with respect to the TXT50
LOOP AT li_skat INTO lw_skat.
v_txt50 = lw_skat-txt50.
TRANSLATE v_txt50 TO UPPER CASE. "#EC SYNTCHAR
IF v_txt50 CS c_mat1 AND
v_txt50 CS c_rev.
Internal table regaring all the G/L Account relevant to Material revolution Account
APPEND lw_skat TO li_skat2.
ELSE.
Internal table regaring all the G/L Account relevant to LTSH Overland Clearing Account/
Transformation Clearing / Stevedoring Clearing Account / Bagging Clearing Account
APPEND lw_skat TO li_skat1.
ENDIF.
CLEAR: lw_skat,
v_txt50.
ENDLOOP.
REFRESH: li_skat.
Retrieve required data from custom table ZSCT_AUTOINV
SELECT saknr
fipos
geber
saknr_off
fipos_off
FROM zsct_autoinv
INTO TABLE li_autoinv
FOR ALL ENTRIES IN li_bapi
WHERE saknr = li_bapi-hkont.
IF sy-subrc = 0.
Sort li_autoinv by GEBER
i_autoinv1 = li_autoinv.
SORT li_autoinv BY geber.
Delete adjacent duplicates from li_autoinv comparing GEBER
DELETE ADJACENT DUPLICATES FROM li_autoinv COMPARING geber.
ENDIF.
IF NOT li_autoinv[] IS INITIAL.
Retrieve required data from database table FMBDT
SELECT rldnr
rrcty
rvers
ryear
robjnr
cobjnr
sobjnr
rtcur
drcrk
rpmax
rfund
rfundsctr
rmeasure
FROM fmbdt "#EC CI_NOFIRST
INTO TABLE i_fmbdt
FOR ALL ENTRIES IN li_autoinv
WHERE ryear = p_pstdat+0(4)
AND rfund = li_autoinv-geber.
ENDIF.
IF sy-subrc = 0.
SORT i_fmbdt BY rfund.
ENDIF.
ENDIF.
Populate the internal table with the modified WBS element
value for further processing
LOOP AT i_bapi INTO w_bapi.
lw_bapi_m-recid = w_bapi-recid.
lw_bapi_m-zerrf = w_bapi-zerrf.
lw_bapi_m-cpudt = w_bapi-cpudt.
lw_bapi_m-kongr = w_bapi-kongr.
lw_bapi_m-hkont = w_bapi-hkont.
lw_bapi_m-projk = w_bapi-projk.
lw_bapi_m-werks = w_bapi-werks.
lw_bapi_m-matnr = w_bapi-matnr.
lw_bapi_m-zcptp = w_bapi-zcptp.
lw_bapi_m-belnr = w_bapi-belnr.
lw_bapi_m-zerrc = w_bapi-zerrc.
lw_bapi_m-zertx = w_bapi-zertx.
lw_bapi_m-set = w_bapi-set.
APPEND lw_bapi_m TO li_bapi_m.
CLEAR: lw_bapi_m.
ENDLOOP.
Sort LI_BAPI_M by WBS element
SORT li_bapi_m BY projk.
Delete adjacent duplicates from LI_BAPI_M comparing WBS element
DELETE ADJACENT DUPLICATES FROM li_bapi_m COMPARING projk.
Check if LI_BAPI_M is initial
IF NOT li_bapi_m[] IS INITIAL.
Retrieve the required data from table PRPS for all the
WBS element
SELECT pspnr
posid
pgsbr
func_area
FROM prps
INTO TABLE li_prps
FOR ALL ENTRIES IN li_bapi_m
WHERE posid = li_bapi_m-projk.
IF sy-subrc = 0.
SORT li_prps BY posid.
ENDIF.
ENDIF.
lw_index = 1.
LOOP AT li_temp INTO lw_temp.
w_temp = lw_temp.
clearing workares
CLEAR: w_bapiheader,
lv_count,
v_amt.
****Populating the BAPIHEADER*******
Reference Transaction
w_bapiheader-bus_act = c_bkpf.
User Name
w_bapiheader-username = sy-uname.
Document Header Text
w_bapiheader-header_txt = text-020.
Company Code
w_bapiheader-comp_code = c_wfp.
Document Date in the Document
w_bapiheader-doc_date = p_pstdat.
Posting Date in the Document
w_bapiheader-pstng_date = p_pstdat.
Fiscal Year
w_bapiheader-fisc_year = p_pstdat+0(4).
Fiscal Period
w_bapiheader-fis_period = p_pstdat+4(2).
Document Type
w_bapiheader-doc_type = c_sa.
Reference Document Number
w_bapiheader-ref_doc_no = sy-datum.
Initialize the counter
lv_count = 1.
lv_count1 = 1.
LOOP AT i_bapi INTO lw_bapi FROM lw_index.
IF lw_temp-set NE lw_bapi-set.
lw_index = sy-tabix.
EXIT.
ELSE.
lw_bapi1 = lw_bapi.
CLEAR: v_pspid.
READ TABLE li_prps INTO lw_prps WITH KEY posid = lw_bapi-projk BINARY SEARCH.
IF sy-subrc = 0.
w_accoutgl-bus_area = lw_prps-pgsbr.
w_accoutgl-func_area = lw_prps-func_area.
ENDIF.
*****Populating the internal table regarding G/L account item***********
w_accoutgl-itemno_acc = lv_count.
w_accoutgl-acct_key = c_ags.
w_accoutgl-acct_type = c_s.
w_accoutgl-grant_nbr = text-019.
w_accoutgl-wbs_element = lw_bapi-projk.
READ TABLE i_autoinv1 INTO lw_autoinv WITH KEY saknr = lw_bapi-hkont.
IF sy-subrc = 0.
Get the information for the G/L accounts relevant for LTSH OVERland Clearing account or
Transformation Clearing Account Stevedoring Clearing Account or Bagging Clearing Account
READ TABLE li_skat1 INTO lw_skat1 WITH KEY saknr = lw_autoinv-saknr BINARY SEARCH.
IF sy-subrc = 0.
w_accoutgl-gl_account = lw_bapi-hkont.
IF NOT lw_autoinv-fipos EQ space.
CALL FUNCTION 'CONVERSION_EXIT_FMCIS_INPUT'
EXPORTING
input = lw_autoinv-fipos
IMPORTING
output = w_accoutgl-cmmt_item.
ELSE.
w_accoutgl-cmmt_item = lw_autoinv-saknr.
ENDIF.
w_currency-amt_doccur = lw_bapi-zcptp * ( -1 ).
ENDIF.Debug. and find the problem . since you are not using the standadrd tables , they are custom tables. so try to find the reason using debugging. may be you don't have data which satisfies the selection criteria.
-
How to make List.contains(Object) work when you write your own .equals func
I have a list of objcts of a class defined by me. I want to use the List.contains(String name) function to tell me if it contains an object of that name. I have overriden the .equals function as shown in [1]. I then use the code at [2] to to test it, with a bit of debugger output as shown in [3]. It is not working, my overriden method is not getting called by List.contains(String name).
Can anyone tell me how to get this to work?
[1] @Override public boolean equals(Object esId) {
if(esId.getClass().isAssignableFrom(String.class)) {
System.out.println("object name " + this.eslimId + " compare to " + esId + " = " + this.eslimId.equals(esId));
return this.eslimId.equals(esId);
} else {
System.out.println("wrong class");
return super.equals(esId);
}[2] graphics.getProcedures() returns private List<ProcedureGraphicSet> procedures;
System.out.println( " graphics.getProcedures().get(0).equals(\"ESLIM_009\")= " + graphics.getProcedures().get(0).equals("ESLIM_009"));
System.out.println( " graphics.getProcedures().contains(\"ESLIM_009\")= " + graphics.getProcedures().contains("ESLIM_009"));[3]
object name ESLIM_009 compare to ESLIM_009 = true
graphics.getProcedures().get(0).equals("ESLIM_009")= true
graphics.getProcedures().contains("ESLIM_009")= falseThis is a gross violation of the contract for the equals method, and you are basically getting bitten by that. The equals method must be symmetric, meaning this must hold for all objects A and B:
A.equals(B) == B.equals(A)This does not hold for your equals method because for any string A and custom object B:
A.equals(B) == falseAnd, apparently, the List.contains() method is choosing to compare objects that way.
You must iterate through the list and check the names yourself, or use some sort of functional package which provides a List.contains() type method which takes a Predicate object of some sort.
Edited by: jtahlborn on Feb 11, 2008 11:03 AM
Edited by: jtahlborn on Feb 11, 2008 11:03 AM -
Sort order in list wrong: in CAML and in view
Hello,
When I order my list with document sets by ID, the order is wrong. It is wrong in the list and with caml.
This is my view (I just set the sort on the ID column):
The first 4 objects are created by the Client Object Model; the last 4 are created by a SharePoint webpart that I developped myself...
My code for creating document sets in COM is something like this:
ListItemCreationInformation newItemInfo = new ListItemCreationInformation
UnderlyingObjectType = FileSystemObjectType.Folder,
LeafName = _strLeafname // = date in format YYYYMMDDhhmmss
ListItem newListItem = myList.AddItem(newItemInfo);
newListItem["ContentTypeId"] = targetDocumentSetContentType.Id.ToString();
newListItem["Title"] = title;
newListItem.Update();
clientContext.Load(myList);
clientContext.ExecuteQuery();
The code in the webpart is this:
SPContentType docsetCt = myLst.ContentTypes[p.GetFromResourcefile("xxxxxxxxxxxxxx")];
Hashtable properties = new Hashtable
{"DocumentSetDescription", ""},
{"Title", txtTitle.Text}
SPFolder parentFolder = myLst.RootFolder;
int newId = GetLastId(myLst) + 1;
DocumentSet ds = DocumentSet.Create(parentFolder, newId.ToString(CultureInfo.InvariantCulture), docsetCt.Id, properties, true);
ds.Item["Title"] = title
ds.Item.Update();
why is the sort order wrong?
if i do this query in the U2U Caml builder, the order is also wrong
<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy>
if i order by "created", the order is also wrong....
i don't get it....Document Sets are great tools for grouping multiple documents together. However, if every set has exactly one document, it would be better to just upload the file and not place it within a Document Set:
Uploading documents using object model - http://msdn.microsoft.com/en-us/library/office/ms454491(v=office.14).aspx
Uploading documents using web services -
http://cecildt.blogspot.com/2010/10/upload-documents-to-sharepoint-2010.html
If you have requirements to use Document Sets, keep in mind that this adds a layer of complexity beyond a simple Document Library. Behind the scenes, each Document Set is treated as a separate folder, and although can you query items within it, there might
be extra steps for getting the sort order to ignore the folder structure. Can you try setting the Scope to be "Recursive" and also specify that you are looking only for files and not folders:
<Eq><FieldRef Name='FSObjType'/><Value Type='Lookup'>1</Value></Eq></Where>
Dimitri Ayrapetov (MCSE: SharePoint) -
Alright, here's the problem. I have my linked list, either imported from a text file or inputted by the user. Now, I need to sort it by the date and the time strings... Yet, every time I do I get an NullPointException. Can anyone help? Here's my code for the list:
public class ListReferenceBased implements ListInterface{
//references to the linked list items
private Node head;
private int numItems; //number of items that exist in list
//Default Constructor
//sets both items to null
public ListReferenceBased(){
numItems = 0;
head = null;
//if the numItems in the list is empty
//returns true.
public boolean isEmpty(){
return numItems == 0;
// returns numItems, aka the size of the list
public int size(){
return numItems;
//finds a node by setting a node to the 'head'
// and loops through to the index 'resetting'
// curr to the 'next' node.
private Node find(int index){
Node curr = head;
for( int skip = 1; skip < index; skip++){
curr = curr.getNext();
return curr;
public Object get(int index)
throws ListIndexOutOfBoundsException{
//catches if list does not reach the index given
//loops through the index
if(index >= 1 && index <= numItems){
//sets curr to the index through find()
Node curr = find(index);
//sets dataitem to the current node
Object dataItem = curr.getItem();
return dataItem;
}else{
throw new ListIndexOutOfBoundsException("The List index is out of bounds on get");
public void add(int index, Object item)
throws ListIndexOutOfBoundsException{
//checks to make sure there are no nodes yet
//if there are inserts them in the list
//by moving
if(index >=1&& index<= numItems+1){
if(index==1){
// if no list exists
//creates a new node and sets it to head
Node newNode = new Node(item, head);
head = newNode;
}else{
//inserts the node at the index
//by finding it first
Node prev = find(index-1);
//creates a new node by placing the Object item
//and the 'new prev' node into a node
//'deleting' the old 'bonds'
Node newNode = new Node(item, prev.getNext());
rev.setNext(newNode);
//increments number of items in list
numItems++;
}else{
throw new ListIndexOutOfBoundsException("List index out of bounds");
public void remove(int index)
throws ListIndexOutOfBoundsException{
//catches the list if it doesn't exist
//checks to make sure list exists
if(index>=1&& index<= numItems){
//if only the head exists
//calls next node else moves
//the node away and moves the prev
//on up.
if(index==1){
head = head.getNext();
}else{
Node prev = find(index-1);
Node curr = prev.getNext();
prev.setNext(curr.getNext());
//decreases the number of items in list
numItems--;
}else{
throw new ListIndexOutOfBoundsException("List index out of bounds");
//sets the numItem to null telling the list it
//does not exist
public void removeAll(){
head = null;
numItems=0;
Yeah, unfortunately, I had to design my own linked list for my assignment (that's taken almost 40+ hours). So, now every alogrithm I've tried to write seems to give me a null pointer, for example this one
public void sort(){
//loop through all existing nodes
for(Node curr = head; curr != null; curr = curr.getNext()){
//parse the string of the current node
//to a string value
Node current = curr.getNext();
Node next = current.getNext();
Node temp;
String thisline = current.getItem().toString();
System.out.println(thisline);
StringTokenizer parser = new StringTokenizer ( thisline, "\t" );
String thisdate = parser.nextToken();
String thistime = parser.nextToken();
String thisline2 = next.getItem().toString();
System.out.println(thisline2);
StringTokenizer parser2 = new StringTokenizer ( thisline2, "\t" );
String thisdate2 = parser.nextToken();
String thistime2 = parser.nextToken();
//compares the dates of next in list
if(thisdate.compareTo(thisdate2)==1){
next.setNext(current);
current.setNext(next.getNext());
printList();
//if dates equal, compare the times
//if equal move to new position
//delete old position
}Pretty much I believe moving the positions is causing the problems after the first run around. Any suggestions? -
HELP! can't sort a STL list
I declare a list like this:
std::list<swedSim> usedSimList;
and a compare function to sort it:
bool lt_fun_equip(const swedSim& s1, const swedSim& s2)
return s1._maxAssEquipment - s1._assEquipmentCount - s1._assEquipmentRequestCount <
s2._maxAssEquipment - s2._assEquipmentCount - s2._assEquipmentRequestCount;
when I try to sort the list, this way:
usedSimList.sort(lt_fun_equip);
I get the following compile error:
"/opt/SUNWspro/WS6U2/include/CC/Cstd/./list.cc", line 351: Error: Too many arguments in call to "std::list<srh::swedSim, std::allocator<srh::swedSim>>::__adjacent_merge(std::list<srh::swedSim, std::allocator<srh::swedSim>>::iterator, std::list<srh::swedSim, std::allocator<srh::swedSim>>::iterator, std::list<srh::swedSim, std::allocator<srh::swedSim>>::iterator)".
"taskReqAssociation.cpp", line 268: Where: While instantiating "std::list<srh::swedSim, std::allocator<srh::swedSim>>::sort(bool(*)(const srh::swedSim&,const srh::swedSim&))".
"taskReqAssociation.cpp", line 268: Where: Instantiated from non-template code.
Any help would be highly appreciated!
Thank you in advancestruct ltsim_equip : public binary_function<swedSim, swedSim, bool>
bool operator()(const swedSim& s1, const swedSim& s2) const
long diff;
diff = s1._maxAssEquipment - s1._assEquipmentCount - s1._assEquipmentRequestCount -
s2._maxAssEquipment + s2._assEquipmentCount + s2._assEquipmentRequestCount;
return (diff == 0 ? (s1._lastModDate < s2._lastModDate) : (diff > 0));
bool lt_fun_acc(const swedSim& s1, const swedSim& s2)
long diff;
diff = s1._maxAssAccessory - s1._assAccessoryCount - s1._assAccessoryRequestCount -
s2._maxAssAccessory + s2._assAccessoryCount + s2._assAccessoryRequestCount;
return (diff == 0 ? (s1._lastModDate < s2._lastModDate) : (diff > 0));
void taskAssocReq::execute ()
//define a list and an iterator
std::list<swedSim> simList;
std::list<swedSim>::iterator simIterator;
simList.clear();
// the following statement will initialize the list
lastProspectIsValid = getSimList(imeiItem->_prospectNum, simList, db);
if (imeiItem->isAccessory() && (simListSortedBy != ACCESSORIES)) {
simList.sort(lt_fun_acc); // THIS ONE WORKS
simListSortedBy = ACCESSORIES;
} else if (imeiItem->isEquipment() && (simListSortedBy != EQUIPMENTS)) {
simList.sort(ltsim_equip()); // THIS ONE DOES NOT!!!
simListSortedBy = EQUIPMENTS; -
Contact sorting broken in "Lists" print option?
Wanted to print a simple contact list out of Address Book / er um... "Contacts".
If i select "Mailing Lables", "Envelopes", or "Pocket Address Book" everything seems to work as it should.
However, if i select "Lists" the sort-order of list is completely messed-up. I can't even make a guess at what criteria it might be trying to sort by, but it certianly isn't the names.
Replicated the issue on my iMac running Mountain Lion as well.
Anybody else seeing the same thing?
ML bug or just something whacked w/ my contacts?Hi Peter,
I can now rest assured that you feel my pain about being in so much pain, as its so painful being in this state of pain it must be a pain just reading this as it is sure is painful me writing it, pain pain pain.
Yours,
Pain
PS
pain |pān|
noun
1 physical suffering or discomfort caused by illness or injury: she's in great pain | those who suffer from back pain | chest pains.
• mental suffering or distress: the pain of loss.
• (also pain in the neck or vulgar slang pain in the *** ) [ in sing. ] informal an annoying or tedious person or thing: she's a pain.
2 (pains) careful effort; great care or trouble: she took pains to see that everyone ate well | he is at pains to point out that he isn't like that.
verb [ with obj. ]
cause mental or physical pain to: it pains me to say this | her legs had been paining her.
• [ no obj. ] (of a part of the body) hurt: sometimes my right hand would pain.
PHRASES
for one's pains informal as an unfairly bad return for efforts or trouble: he was sued for his pains.
no pain, no gain suffering is necessary in order to achieve something.
[originally used as a slogan in fitness classes.]
on (or under ) pain of the penalty for disobedience or shortcoming being: all persons are commanded to keep silent on pain of imprisonment.
ORIGIN Middle English (in the sense ‘suffering inflicted as punishment for an offense’): from Old French peine, from Latin poena ‘penalty,’ later ‘pain.’ -
so, everything works through the first iteration (don't know if this is an appropriate term for linked lists, but we just learned arrays) but then it stops. I thought that telling it to continue until position.next != null and increasing the position after every iteration would work but I think I have coded something incorrectly / am not taking something into consideration. I would be greatly obliged if you can offer any advice!
Thanks,
Hunter
public void bubbleSort()
Node current, a, previous, position;
position = new Node(0);
position.next = head;
head = position;
while (position.next != null)
{ current = position.next;
previous = position;
a = current.next;
while(a != null)
if (a.getVal() < current.getVal())
Node temp = a.next;
a.next = previous.next;
previous.next = current.next;
current.next = temp;
previous = a;
a = temp;
else
a = a.next;
current = current.next;
previous = previous.next;
position = position.next;
head = head.next;First, thanks for the response! I have been trying println statements and really don't understand the problem. I have also gone through line-by-line and drawn out what I think is supposed to happen and still can't seem to fully figure out what I am doing wrong. Here is the full code, this might help with the 'definition of my list'.
public class LinkedList
public Node head;
public LinkedList(int length)
head = null;
for (int i = 0; i < length; i ++)
insert(i);
public LinkedList()
head = null;
public void clear()
head = null;
public void insert(int n)
Node current = new Node(n);
current.next = head;
head = current;
public void insert(Node n, int index)
Node previous, current;
Node nnode = new Node(-10);
nnode.next = head;
previous = nnode;
current = head;
while (current != null && index > 0)
current = current.next;
previous = previous.next;
index --;
if (previous == nnode)
n.next = head;
head = n;
else
previous.next = n;
n.next = current;
//Delete the node at the zero-based index.
public void delete(int index)
int current;
Node currentnode = head;
for (current = index; current > 1; current --)
currentnode = currentnode.next;
if (currentnode == head)
head = head.next;
else
currentnode.next = currentnode.next.next;
public Node getNode(int index)
Node nnode = new Node(-10);
nnode.next = head;
Node current = head;
while(current.next != null && index > 0)
{ current = current.next;
index --;
return current;
public int getVal(int index)
int current;
Node currentnode = head;
for (current = index; current > 0; current --)
currentnode = currentnode.next;
//currentnode should point to the node whose value we want.
return currentnode.getVal();
public void print()
System.out.println();
head.print();
private void swap(Node pa, Node a, Node pb, Node b)
Node temp = b.next;
pa.next = b;
if (a.next != b)
b.next = a.next;
pb.next = a;
else
b.next = a;
a.next = temp;
public void selectionSort()
Node current, a, previous, position;
position = new Node(0);
position.next = head;
head = position;
while (position.next != null)
current = previous = position.next;
a = position.next;
while(a != null)
if (a.getVal() < current.getVal())
current = a;
while(previous.next != current)
previous = previous.next;
a = a.next;
if (current != previous)
Node t = position.next;
swap(position, t, previous, current);
//System.out.println("****************");
//head.print();
position = position.next;
head = head.next; //to lose the initial node.
//System.out.println("end of sorting, head.print is");
//head.print();
public void bubbleSort()
Node current, a, previous, position;
position = new Node(0);
position.next = head;
head = position;
while (position.next != null)
{ current = position.next;
previous = position;
a = current.next;
while(a != null)
if (a.getVal() < current.getVal())
Node temp = a.next;
a.next = previous.next;
previous.next = current.next;
current.next = temp;
previous = a;
a = temp;
else
a = a.next;
current = current.next;
previous = previous.next;
position = position.next;
head = head.next;
} -
How do I list all classes in a Jar file?
How do I list all classes in a Jar file?
Its no problem if the jar file contains classes, but I have an EAR file, which contains a jar-file, and I want to list all classes in that jar-file.
I would like to do something like this:
java.util.jar.JarFile jarfile = new java.util.jar.JarFile( new File("/meYear.ear"), true );
java.util.jar.JarEntry jar = jarfile.getJarEntry( "myJar.jar" );
// Cast it to a new JarFile:
java.util.jar.JarFile newJar = (java.util.jar.JarFile)jar;
But the method getEntry returns something like jarFile$JarEntry, if I try to class cast it I get an classCastException. -
Click-edit behavior of List-container items
Hi,
Sorry if it has been asked, but I couldnt find it. I would
like to know if it is possible to start editing an item in a
List-container when a user double-clicks. With default settings it
starts editing on a single click. I couldnt find anything in the
documentation. How can I change this behaviour?
Also, is it possible to set the focus on a List-container
item in edit mode? What I mean is that I could implement a
double-click event-handler that changes the List-conatiner from
not-editable to editable and then put the double-clicked item in
edit-mode. Is this possible? Than I could implement my desired
double-click-edit behaviour easily.
Thank you!
Andrejkokot-san,
I was trying to find an answer to the same issue. I never
found anything in the documentation either. After walking through
the Tree and List class a bit I came up with this. Here is an
example where the Tree is not editable and double clicking a node
will allow you to rename it.
tree.addEventListener( ListEvent.ITEM_DOUBLE_CLICK,
itemDoubleClick );
tree.addEventListener( ListEvent.ITEM_EDIT_END, itemEditEnd
private function itemDoubleClick( event:ListEvent=null
):void
tree.editable = true;
tree.editedItemPosition = {rowIndex:tree.selectedIndex};
private function itemEditEnd( event:ListEvent=null ):void
tree.editable = false;
- Jankrod -
How can I sort the target list in debug form.
If I want to select a procedure/function to debug it is very hard to find it if the package contains a lot of procedures. How can I sort the target list. I did not find anything in the preferences. Thanks.
Sorry, can't be done. You can request this at the SQL Developer Exchange though, so other users can vote and add weight for possible future implementation.
My suggestion (if you decide to request it): base the order in the dialog on the order inside the navigator tree (location in the source by default, but possible by name or type/name - see tree's context menu).
Regards,
K. -
F101 list contain no data in posting tab
I have made the configuration for OBBV and OBBU for Chart of Accounts. When I execute F101 for regrouping of customers and vendors and tick generate postings, the list is getting generated. When I click the tab "Postings" it shows "Posting in Batch input session, List contains no data). There is no batch input session being created in order to post them in SM35.
Please let me know whether there are any steps that are missing.
Thanks,
ImdadHi
Is there anyone who can answer me
regards -
Doc type AB - List contains no Data
Hi SAP team,
I am facing an issue that I could not find a similar one in here.
When FB03 is displayed, no items are shown. It shows, however, List Contains no Data.
In the Header option, I can view that the documents were entered by a Batch ID under t_code FBS1
Document Header Text says: Autom. Clearing SAPF124
Document Status B
Can anyone shed any light as to why FB03 has nothing (this has been happening for many years) and what is the meaning of Doc Status B ?
This is not a layout issue as many threads have mentioned. This must be something else that the Batch ID is running.
Any help is welcome
Regards
RogerThank you for your valuable input.
One topic only needs clarification.
Any idea of what Document Status A and Status B means?
(you can see this A B status in the header icon - FB03)
Regards,
Rogerio -
Exception Handling for many bean objects of a container class in a JSP page
Hello,
I have on container bean class. In this container class, there are several others class objects and the getter methods to get these objects out to the JSP pages.
I have one JSP page which will use different objects in the container class object through the getter methods of the container class.
My question is how to implement the exception handler for all the objects in the container so that the JSP page can handle all exceptions if occurrs in any object in the container?
Please give me some suggestions. Thanks
TuThanks for your reply.
Since the container is the accessor class, I have no other super class for this container class, I think I will try the try catch block in the getter methods.
Maybe you are looking for
-
HP Pavilion p7-1410 & Windows 7 drivers... do they exist?
Client just bought a HP Pavilion p7-1410 (Windows 8 pre-installed). Their sole booking engine they employ currently only operates through Internet Explorer 8, which is not supported by Windows 8. This is something they have no control over, as the co
-
DVR620KU DVD records audio but no picture
Hello, I have my dvr combo hooked up to both my LG TV and external device (roku box). I have all of the correct cords in place as far as I know, i have input 1 for the tv and 2 for roku box. But when attempting to record on DVD, it: 1. Shows blue scr
-
Use of domain administration port breaks session access?
WLS 8.1.2; We have a third-party app deployed in a pretty basic cluster setup (two managed servers, each on a separate machine). When accessing the main web app, it works fine. If/when we enable the domain-wide administration port (DAP)(aft
-
How to install the B1iP for 2007.
Hi, all Does anyone know how to install the B1iP for 2007. I tried but this message was occured. "new: 127.0.0.1"\SBO_SHR\B1is\apps\PaymentEngine Neither share folder "B1_SHR" nor "SBO_SHR" exist!" Acctualy there is no such folder. Should I create th
-
Öffnen von rpc3 Daten im Format .rsp
Liebe Diadem- Gemeinde, ich möchte mit meinem Diadem 10.0 Daten im Format RPC3 mit der Endung .rsp laden. Jetzt hab ich mir von der Seite http://zone.ni.com/devzone/cda/epd/p/id/1795 eine zip Datei heruntergeladen, die mir meinen Wunsch erfüllen soll