Struct question

http://66.219.52.129/mydata.html
The above link is a dump of a struct passed to my CFC
function from Flex Object . [flex object is made up of many form
item strings and one arraycollection called outdata] . But, this is
not a Flex side question for me. It is a CFC-side question.
<cfargument name="mydata" type="Struct"
required="true"/>
How do I loop through the outdata in mydata? I need to loop
through each subscribers name and email and insert their name and
email into the subscribers table in the database. Not sure of
syntax of the looping to reference the outdata data?
I played with cfloop collection ="mydata" and cfscript for-in
loops, but I keep getting complex data errors. Obviously, I don't
understand how to loop through complex data structs.
If you could help, I'd be grateful.
Don Kerr

I believe you're looking for something like this. The key is
to remember
that s.outdata is an array, so you're looping through an
array, not a
collection. that's why the loop through the collection didn't
work.
<cfloop from="1" to="#ArrayLen(mydata.outdata)#"
index="i">
<cfoutput>
#mydata.outdata
.name#:
#mydata.outdata.email#<br>
</cfoutput>
</cfloop>
Good luck.
Marc Esher
"dkerr" <[email protected]> wrote in message
news:f9o55v$cp6$[email protected]..
>
http://66.219.52.129/mydata.html
>
> The above link is a dump of a struct passed to my CFC
function from Flex
> Object . [flex object is made up of many form item
strings and one
> arraycollection called outdata] . But, this is not a
Flex side question
> for
> me. It is a CFC-side question.
>
> <cfargument name="mydata" type="Struct"
required="true"/>
>
> How do I loop through the outdata in mydata? I need to
loop through each
> subscribers name and email and insert their name and
email into the
> subscribers
> table in the database. Not sure of syntax of the looping
to reference the
> outdata data?
>
> I played with cfloop collection ="mydata" and cfscript
for-in loops, but
> I
> keep getting complex data errors. Obviously, I don't
understand how to
> loop
> through complex data structs.
>
> If you could help, I'd be grateful.
>
> Don Kerr
>
>
>
>

Similar Messages

  • Java IDL "struct" question... URGENT!!

    I am trying to figure out how to add accessor methods to a struct in Java IDL.
    For example, I am using the following struct:
    struct ProductDB
         long ItemNumber;
         long Quantity;
         double Price;
    After compiling the IDL using idlj I get:
    public final class ProductDB implements org.omg.CORBA.portable.IDLEntity
    public int ItemNumber = (int)0;
    public int Quantity = (int)0;
    public double Price = (double)0;
    public ProductDB ()
    public ProductDB (int ItemNumber, int Quantity, double _Price)
    ItemNumber = _ItemNumber;
    Quantity = _Quantity;
    Price = _Price;
    } // ctor
    However, I want to add accessor methods to the IDL so I can retrieve just an item number or a price. Is there any way to do this?
    Thanks...
    RG

    You need an IDL course
    try
    http://java.sun.com/docs/books/tutorial/idl/hello/idltojava.html
    or have a hunt round with google

  • Simple c array in struct pointer question

    i have a two struct like so:
    typedef struct {
           uint8_t data[256];
    } foo1;
    typedef struct {
           uint32_t data_ptr;
    } foo2;
    foo1 * ctx;
    foo2    ply;
    if i want to get the pointer to the data array in ctx and assigned to data_ptr would i do it like so:
    ply.data_ptr = &(ctx->data);

    &(ctx->data) returns a pointer to an array of 256 integers. This type will look something like uint8_t (*data_ptr)[256]. Instead you should do what falconindy suggested above:
    ply.data_ptr = ctx->data
    To avoid gcc warnings (which you should always avoid), data_ptr needs to be declared the correct type of pointer. Since ctx->data by itself is nothing more than a pointer to an 8-bit wide integer you want (uint8_t *). ((void *) also works)

  • 0RecordMode setup question: Infocube or only Transfer Struct

    Hello
    I would appreciate if you can let me know how to set OrecordMode to work with a Generic Delta Datasource.(custom)
    I have field EBAN-loekz (r/3) which will tell me if a register is marked for completion. If so I need to delete it from previous load in ICube.
    Read that 0RecordMode should be used but dont know where to include it ?
    should I match it directly with LOEKZ or rutine to fill only "D" value ?
    also as data is not erased from EBAN (just marked in this field) next time I do a delta  will still need to check on this in case any change in other field?
    thanks

    Hi Srini & fellas
    I have read similar posts but still confused.
    How should set the mapping ?
    If LOEKZ = "X" then 0recordmode ="D" ????
    My custom datasource neither my ODS show an 0recordmode ??? read should be present from beginning ?
    should I put rutine between DS --> ODS ? or ODS ---> Icube?
    please help!

  • A rant about C with a question at the end. :P

    C is okay. It's just really hard to understand.
    So this is my rant about it. It starts out by listing where I've been in terms of programming and then lists my difficulties with C itself.
    I discovered C many years ago. I'm not too sure how. All I know is that for many years I've wanted to know what this C thing was all about, but had no way or knowledge of how to. I didn't really know anybody before I got the 'net last year, so asking someone else was out of the question. Plus, I wouldnt've known what question(s) to ask.
    As I became more proficient with the whole technology thing, I began to go to the local libraries nearby and use their free internet access to look stuff up. But I didn't get the idea to do any research about C, most likely because I didn't have the mental capacity to plan well and my access was once or twice weekly at best. Plus, the only computer I had at home was 66MHz and ran DOS, and I only knew BASIC around that time which I was comfortable and content with, so wasn't looking for a new language. I think I knew about assembly language but didn't pursue it if I did.
    A couple of computer upgrades later, I finally got the 'net at home and began to see the convenience of being able to spontaneously look something up when I wanted to as good, rather than weird. Ideas gradually began to pop into my head that I'd run off and look up, and one day C became one of them. So I did some research on C and finally began to learn what it was: an incomprehensible mess of manually managed memory and low-level trickery. Since I knew a fair bit about assembly language now I decided C was worse than asm (and I had no chance of learning asm back then), and left it at that.
    Being the BASIC coder I was (pun intended), I found the syntax and concepts over my head by several miles. But the fascination never died, and kept poking at me again and again. And I just had to keep forgetting about it.
    I moved on from QuickBASIC, which I'd been using for just about everything, to FreeBASIC, which was in such a beta state when I tried it, I disliked it enough to move on and discovered PHP.
    PHP has been called the BASIC of the 21st century, and I can understand why. There are typically at least 10 ways to do something whether in principle or method, multiple functions do the same or an equivalent task, and overall it just doesn't look like a good language. But beyond all that, PHP made sense to me. As I went along many of the things I expected to perform in a given way performed in said way, which was a huge confidence boost. The model it followed might have been convoluted, but something inside my head "clicked" when I saw PHP, so I liked it, since I could understand it easily.
    But recently, I found myself hitting too many walls. I wanted to get into graphical software development, and none of the graphical extensions PHP had available would work for me. PHP-GTK did work but prevented PHP from outputting anything as an Apache module, without throwing a single error anywhere. PHP-QT wouldn't compile on my system. PHP-TK did compile, but both segfaulted when any tk_* function was called and also exhibited the Apache module issue.
    So I decided then and there that I needed to switch languages.
    The problem was, my current machine happens to be so slow that a GIMP operation that executes in 6 seconds on the lowest generation AMD CPU from 4-5 years ago will execute in 38 seconds on mine. I have no idea why; the machine is, after all, 2.66GHz.
    Although PHP is pretty snappy on my system, I don't know how other languages would fare and don't really want to risk the experiment; I want to switch to a language I know will be as fast as, or faster than, PHP. So I decided that a compiled language would have to be it, since I regarded PHP as the fastest language I knew. I was probably wrong, but whatever.
    So I set my mind to understanding C. I'd asked around online before, and someone took pity on me and explained the basics of C and I did my best to understand them. This was great for a couple of days, but didn't last all that long unfortunately. So I asked around again, dreading their responses, and with good reason too: most of the tutorials I read often left me boggled and flew over my head at one point or another, which didn't help.
    But I got some dreaded tutorial links, and did my best to read them. It took me a couple of weeks to finally convince my brain to understand the point of a language that utilizes variables that doesn't contain any data, but instead references to other variables. I eventually grasped the why, but am still having quite a hard time understanding the how.
    So then, after that initial hurdle, I moved onto other topics. Or rather tried to. I quickly discovered that C interconnects some of its issues so deeply that it's hard to learn one thing at a time, move on and learn the next thing - how I best learn. I don't create paths very well by reading information; I create those paths by staying away from information and letting it slowly process in my mind. But to actually remember it in the first place, it needs to make sense, and C doesn't make sense because things are so interconnected and... we come full circle.
    To be honest, after about a fortnight of trying to understand pointers, I still don't understand them. I've read what is probably the best the web has to offer about pointers. Has it helped? Not really.
    Either the documentation:
    - is too terse and I have to slow down, risking losing interest in what I'm reading
    - skips over vital points or assumes I know Pascal or some other language
    - is hard to understand or is poorly written
    - puts segments in the wrong order, so I don't understand everything something might depend on before I reach that something
    ...and in general I either give up on reading the documentation, give up on C or just cry. I've done the 3rd a few times, the 2nd quite a few times and the 1st pretty much as many times as I've read documentation.
    So what are my issues with C?
    Let me address the two I can think of right now:
    Pointers aren't addressed "simply"; if I declare a pointer to int named x I have to use *x to access what x points to, rather than use *x to get x's location, like one does with non-pointer variables where & is used to get an address. It'd be nice if we used &x to get x's value if x wasn't a pointer and *x to get x's value if x was a pointer, rather than use this convoluted scheme.
    Also, I've heard that it's a common misconception that C handles arrays natively. Elsewhere, I've heard that strings are merely arrays of char. I can understand the 2nd, but what do I do with the 1st?
    I do understand that if I say printf("%d\n", x[1]) I'm effectively saying x++; printf("%d\n", x), but I don't understand how this fully works. For example, let us consider the following code:
    char *filename = "<insert file here>";
    int i;
    struct stat filebuffer;
    int status;
    FILE *handle;
    handle = fopen(filename, "r");
    status = stat(filename, &filebuffer);
    char *buffer = malloc(filebuffer.st_size);
    for (i = 0; i < filebuffer.st_size; i++) buffer[i] = fgetc(handle);
    printf("%s\n", buffer);
    You'll of course notice the array notation. Do I understand why if I replace said notation with something to the effect of...
    buffer++
    buffer = fgetc(handle);
    ...the program segfaults? No. Likewise, I don't understand why the...
    buffer++
    *buffer = fgetc(handle);
    ...in the loop does work, printf("%s"...); causes segfaults and printf("%d"...); does not.
    Another thing I found is that declaring a char *, filling it with data, and then using memcpy on said char *, the program works fine, but if I declare for example char x[1] = "hi"; the compiler will shout at me for not allocating enough arrays. Only while writing this did I realize that the 2nd element is for the null byte.
    Suffice to say that C confuses me. To bits. Although I have written a 500 line program in it (579 to be exact). All said program does is display a message on the screen via Xlib, but I managed to figure out how to make a word wrapping engine using strsep and how to use XDrawPoint XDrawLine to not only create a nice UI but also let me define various UI "styles" which can be loaded at startup.
    Said program uses a very big helping of "if it doesn't work stab it until it does", so not only do I not understand how a lot of it works, it probably wouldn't compile under anything except gcc. Which is from a theory perspective quite a problem, IMHO. Almost every 2nd variable is typecast to this or that type.
    So put simply, every tutorial or introduction to C hasn't made a lot of sense to me. Maybe I learn slowly; I'm hoping it's that, because I can't see anything besides assembly language which would be faster than C. I plan to learn asm after I've mastered the very basics of C, but I may end up having to learn the other way around if I expect to get anywhere.
    Like I said in the title, I have one actual question in this post. So here it is:
    Are there any fun, easy reading tutorials out there that don't visually look like they came out of 1992 and read like http://poignantguide.net/ or http://learnyouahaskell.com/?
    -dav7

    dav7 wrote:Pointers aren't addressed "simply"; if I declare a pointer to int named x I have to use *x to access what x points to, rather than use *x to get x's location, like one does with non-pointer variables where & is used to get an address. It'd be nice if we used &x to get x's value if x wasn't a pointer and *x to get x's value if x was a pointer, rather than use this convoluted scheme.
    Pointer syntax is extremely unfortunate. The best part:
    char *a; // It's a pointer.
    *a; // It's a character. Good move, guys.
    Also, I've heard that it's a common misconception that C handles arrays natively. Elsewhere, I've heard that strings are merely arrays of char. I can understand the 2nd, but what do I do with the 1st?
    Insofar as C has arrays, C strings are character arrays. C arrays are just a promise that the system won't mess within a certain set of memory addresses. Array syntax is a concise way to calculate and dereference a specific location in memory, relative to an address that you hope is the beginning of some memory you reserved. array[n] = *(array + n), right? Personally, I would have left out the subscript notation entirely. Regardless, any time you choose to use brackets, you can mentally substitute in an explicit addition and dereference there. You're saying, "Give me the number stored at the memory address I have just calculated, which I know by my science holds something I put there intentionally, and not garbage at all."
    One more clarification with regard to pointer arithmetic is necessary: when you add 2 to an int*, the resulting address is actually 2*sizeof(int) bytes after your base address. Same for a double*: 2*sizeof(double).
    I do understand that if I say printf("%d\n", x[1]) I'm effectively saying x++; printf("%d\n", x), but I don't understand how this fully works.
    It's not the same! First of all, in example #2, you're passing a pointer to an int. In example #1, you're passing an integer, since [] dereferences pointers for you. Any time you use those brackets, it's as if you had typed an asterisk yourself. Second, in example #1 you're not messing with x. In example #2 you're incrementing x by four bytes (the likely size of one integer). Doesn't make a difference in this short example, but if x ever gets used again it will be very significant.
    Another thing I found is that declaring a char *, filling it with data, and then using memcpy on said char *, the program works fine, but if I declare for example char x[1] = "hi"; the compiler will shout at me for not allocating enough arrays. Only while writing this did I realize that the 2nd element is for the null byte.
    Looks like a counting problem. Arrays are indexed from 0, but sizes are specified from 1 on up. Your "char x[1]" has only index [0]. To hold a two-character string, you'll need at least size three (char x[3]), so that x[0]='h', x[1]='i', x[2]='\0', the null terminator.
    Suffice to say that C confuses me. To bits.
    Any time you get confused by pointers or arrays (which are the same thing), take a step back and think about what's happening in terms of memory addresses. Draw it out on paper if you think you're making a mistake. In some languages you can ignore low-level details like that and write perfectly fine programs, even though you won't be able to optimize them without knowing how your code maps onto the machine. But in C, everything that looks like a high-level feature is just shorthand for setting a few bytes to different numbers, and the abstraction is so leaky that you can't get by without understanding it. Types are just a way for the compiler to catch dumb mistakes (some people believe this is helpful) and to automate some math, like the pointer arithmetic above. In a running program there are no types, so when you're trying to figure out what a program is actually doing, you need to consider what the types are shorthand for.
    If you're having trouble "thinking like a programmer", by which I mean sanity-checking your use of syntax and stepping through a program so you know what it does, you might want to get up to speed in a different language, or by working through a book on algorithms.
    Last edited by pauldonnelly (2008-11-03 22:54:12)

  • BW Interview Questions 2

    Hi,
    Here are some BW interview questions. Make sure you have prepared for all the q's before going for an interview.
    1) Please describe your experience with BEx (Business Explorer)
    A) Rate your level of experience with BEx and the rationale for you’re self-rating
    B) How many queries have you developed? :
    C) How many reports have you written?
    D) How many workbooks have you developed?
    E) Experience with jump targets (OLTP, use jump target)
    F) Describe experience with BW-compatible ETL tools (e.g. Ascential)
    2) Describe your experience with 3rd party report tools (Crystal Decisions, Business Objects a plus)
    3) Describe your experience with the design and implementation of standard & custom InfoCubes.
    1. How many InfoCubes have you implemented from start to end by yourself (not with a team)?
    2. Of these Cubes, how many characteristics (including attributes) did the largest one have.
    3. How much customization was done on the InfoCubes have you implemented?
    4) Describe your experience with requirements definition/gathering.
    5) What experience have you had creating Functional and Technical specifications?
    6) Describe any testing experience you have:
    7) Describe your experience with BW extractors
    1. How many standard BW extractors have you implemented?
    2. How many custom BW extractors have you implemented?
    8) Describe how you have used Excel as a compliment to BEx
    A) Describe your level of expertise and the rationale for your self-rating (experience with macros, pivot tables and formatting)
    B)
    9) Describe experience with ABAP
    10) Describe any hands on experience with ASAP Methodology.
    11) Identify SAP functional areas (SEM, CRM, etc.) you have experience in. Describe that experience.
    12) What is partitioning and what are the benefits of partitioning in an InfoCube?
    A) Partitioning is the method of dividing a table (either column wise or row wise) based on the fields available which would enable a quick reference for the intended values of the fields in the table. By partitioning an infocube, the reporting performance is enhanced because it is easier to search in smaller tables. Also table maintenance becomes easier.
    13) What does Rollup do?
    A) Rollup creates aggregates in an infocube whenever new data is loaded.
    14) What are the inputs for an infoset?
    A) The inputs for an infoset are ODS objects and InfoObjects (with master data or text).
    15) What internally happens when BW objects like Info Object, Info Cube or ODS are created and activated?
    A) When an InfoObject, InfoCube or ODS object is created, BW maintains a saved version of that object but does not make it available for use. Once the object is activated, BW creates an active version that is available for use.
    16) What is the maximum number of key fields that you can have in an ODS object?
    A) 16.
    17) What is the specific advantage of LO extraction over LIS extraction?
    A) The load performance of LO extraction is better than that of LIS. In LIS two tables are used for delta management that is cumbersome. In LO only one delta queue is used for delta management.
    18) What is the importance of 0REQUID?
    A) It is the InfoObject for Request id. OREQUID enables BW to distinguish between different data records.
    19) Can you add programs in the scheduler?
    A) Yes. Through event handling.
    20) What is the importance of the table ROIDOCPRMS?
    A) It is an IDOC parameter source system. This table contains the details of the data transfer like the source system of the data, data packet size, maximum number of lines in a data packet, etc. The data packet size can be changed through the control parameters option on SBIW i.e., the contents of this table can be changed.
    21) What is the importance of 'start routine' in update rules?
    A) A Start routine is a user exit that can be executed before the update rule starts to allow more complex computations for a key figure or a characteristic. The start routine has no return value. Its purpose is to execute preliminary calculations and to store them in a global data structure. You can access this structure or table in the other routines.
    22) When is IDOC data transfer used?
    A) IDOCs are used for communication between logical systems like SAP R/3, R/2 and non-SAP systems using ALE and for communication between an SAP R/3 system and a non-SAP system. In BW, an IDOC is a data container for data exchange between SAP systems or between SAP systems and external systems based on an EDI interface. IDOCs support limited file size of 1000 bytes. So IDOCs are not used when loading data into PSA since data there is more detailed. It is used when the file size is lesser than 1000 bytes.
    23) What is partitioning characteristic in CO-PA used for?
    A) For easier parallel search and load of data.
    24) What is the advantage of BW reporting on CO-PA data compared with directly running the queries on CO-PA?
    A) BW has a better performance advantage over reporting in R/3. For a huge amount of data, the R/3 reporting tool is at a serious disadvantage because R/3 is modeled as an OLTP system and is good for transaction processing rather than analytical processing.
    25) What is the function of BW statistics cube?
    A) BW statistics cube contains the data related to the reporting performance and the data loads of all the InfoCubes in the BW system.
    26) When an ODS is in 'overwrite' mode, does uploading the same data again and again create new entries in the change log each time data is uploaded?
    A) No.
    27) What is the function of 'selective deletion' tab in the manage->contents of an infocube?
    A) It allows us to select a particular value of a particular field and delete its contents.
    28) When we collapse an infocube, is the consolidated data stored in the same infocubeinfocube? or is it stored in the new
    A) Data is stored in the same cube.
    29) What is the effect of aggregation on the performance? Are there any negative effects on the performance?
    A) Aggregation improves the performance in reporting.
    30) What happens when you load transaction data without loading master data?
    A) The transaction data gets loaded and the master data fields remain blank.
    31) When given a choice between a single infocube and multiple InfoCubes with a multiprovider, what factors does one need to consider before making a decision?
    A) One would have to see if the InfoCubes are used individually. If these cubes are often used individually, then it is better to go for a multiprovider with many cubes since the reporting would be faster for an individual cube query rather than for a big cube with lot of data.
    32) How many hierarchy levels can be created for a characteristic info object?
    A) Maximum of 98 levels.
    33) What is open hub service?
    A) The open hub service enables you to distribute data from an SAP BW system into external data marts, analytical applications, and other applications. With this, you can ensure controlled distribution using several systems. The central object for the export of data is the Infospoke. Using this, you can define the object from which the data comes and into which target it is transferred. Through the open hub service, SAP BW becomes a hub of an enterprise data warehouse. The distribution of data becomes clear through central monitoring from the distribution status in the BW system.
    34) What is the function of 'reconstruction' tab in an infocube?
    A) It reconstructs the deleted requests from the infocube. If a request has been deleted and later someone wants the data records of that request to be added to the infocube, one can use the reconstruction tab to add those records. It goes to the PSA and brings the data to the infocube.
    35) What are secondary indexes with respect to InfoCubes?
    A) Index created in addition to the primary index of the infocube. When you activate a table in the ABAP Dictionary, an index is created on the primary key fields of the table. Further indexes created for the table are called secondary indexes.
    36) What is DB connect and where is it used?
    A) DB connect is database connecting piece of program. It is used in connecting third party tools with BW for reporting purpose.
    37) Can we extract hierarchies from R/3 for CO-PA?
    A) No We cannot, “NO hierarchies in CO/PA&#65533;?.
    38) Explain ‘field name for partitioning’ in CO-PA
    A) The CO/PA partitioning is used to decrease package size (eg: company code)
    39) What is V3 update method ?
    A) It is a program in R/3 source system that schedules batch jobs to update extract structure to data source collectively.
    40) Differences between serialized and non-serialized V3 updates
    41) What is the common method of finding the tables used in any R/3 extraction
    A) By using the transaction LISTSCHEMA we can navigate the tables.
    42) Differences between table view and infoset query
    A) An InfoSet Query is a query using flat tables.
    43) How to load data from one InfoCube to another InfoCube ?
    A) Thro DataMarts data can be loaded from one InfoCube to another InfoCube.
    44) What is the significance of setup tables in LO extractions ?
    A) It adds the Selection Criteria to the LO extraction.
    45) Difference between extract structure and datasource
    A) In Datasource we define the data from diff source sys,where as in extract struct it contains the replicated data of datasource n where in we can define extract rules, n transfer rules
    B) Extract Structure is a record layout of InfoObjects.
    C) Extract Structure is created on SAP BW system.
    46) What happens internally when Delta is Initialized
    47) What is referential integrity mechanism ?
    A) Referential integrity is the property that guarantees that values from one column depend on values from another column.This property is enforced through integrity constraints.
    48) What is activation of extract structure in LO ?
    49) What is the difference between Info IDoc and data IDoc ?
    50) What is D-Management in LO ?
    A) It is a method used in delta update methods, which is based on change log in LO.
    Plz experts.. provide the answers for the questions..
    Thanx in advance.
    Sunil

    Hi,
    In my case i dont have an experience in BW. I went straight to academy.It is like i am starting a new career.Are the questions also apply to me .

  • Data Gathering Application - Architecture Question

    I'm working on revising an existing application that's used to collect data gathered by users from various sources (various computer systems, paper files, discussions/interviews with other employees, etc.) which is then used for analysis and reporting of level of compliance with mandates at various levels (overall, location, individual).
    The existing application gathers data via two basic form types: one is for a specific individual having multiple data points; the other is for everyone in the location with multiple data points. For example, type 1 looks like:
    Person
    Question 1 Response 1
    Question 2 Response 2
    Question N Response N
    While the Type 2 form looks like:
    Location
    Person 1 Question 1 Question 2 ... Question N
    Person 2 Question 1 Question 2 ... Question N
    Person N Question 1 Question 2 ... Question N
    The questions are grouped by types of information being analyzed, so that those questions appear on different pages and may apply to different sets of individuals or locations. Not all locations are required to gather information on the same questions, depending on their compliance level last year. So, location A may have to answer questions 1, 2 and 3, while location B may answer questions 1, 3 and 4.
    My question is this: The table used to store the data is structed like:
    Person ID, location, page, q1, q2, ..., qN
    To continue the above example of locations A and B, both locations would store the responses in columns q1, q2, and q3 since they had three questions that applied to them. We can then reconstruct which question the response applies to by checking which questions applied to the location. We're using the apex api in the query to generate select-list items for the questions with the valid responses for each question (some are yes/no, others allow NA, a number 1-3, or a typed-in positive integer for a couple of questions).
    Since we need to maintain the data from two forms (either for an individual or for all individuals at a location), would it be easier to maintain in APEX using a table that stores each question in a separate row?
    PersonID, location, Page, question, response
    Further, we want to simplify the application which currently uses a separate page for each item type which is customized to the max number of questions for that page for the year. Instead we want to make a more generic set of pages that can at least handle an arbitrary number of items or, ideally, however many questions may be applicable in the future. While we can assume that the practical upper limit would be 30 questions, in the future it is possible we could be mandated to ask several times that number, maybe 100 or more.
    The main goal is to make the application robust to handle the questions consistenly, no matter how many are defined for a type and no matter how many are required for the selected individual or location.
    I'm already working on the page simplification process by replacing literals with session-state and application items, and realize that to make the pages robust we'll have to convert from static queries to generating the query from plsql using generic columns for the report in APEX.
    If anyone could share their thoughts/experience with this type of application, your input is greatly appreciated.
    Thanks,
    Richard

    Hi Richard,
    I find it bad practice to make a table PersonId, location, page, q,q1 .. qN
    it will do more harm in analysing the data than you will benefit in collecting the information.
    In my opinion you should normalize it a bit more. Seperate table for Person, with it's attributes. and if it is a 1 to 1 relation, also an locationId. Then a seperate table to hold the location information. Then you are having questions and awnsers. based on compliance level of the location persons may answer these questions. So in my opinion, youre location-table will have an attribute 'compliance_level' and in the question table also an attribute, like minimum compliance level. so this could be an criteria for showing questions or not.
    To register the answers done bij a person, also an awnser-table will be nesseccary, with relation to the specific question and the personId who answer it. Because of the 1 to 1 relation between person and location, this information does not have to be registerd with the anwsers.
    so in short:
    5 tables =>
    Person (id, name, locationId, etc. )
    Location (id, locationName, complianceLevel)
    Question(id, quetion, minCompliance)
    Anwser(id, questionId, personId, answerId)
    In order to create these forms, i guess a master-detail form will be in place. where for one master (person in this case), the details can be shwon (question) in a tabular form with input for the answers.
    hope this will help!

  • Trying to send multiple types in a byte array -- questions?

    Hi,
    I have a question which I would really appreciate any help on.
    I am trying to send a byte array, that contains multiple types using a UDP app. and then receive it on the other end.
    So far I have been able to do this using the following code. Please note that I create a new String, Float or Double object to be able to correctly send and receive. Here is the code:
    //this is on the client side...
    String mymessage ="Here is your stuff from your client" ;
    int nbr = 22; Double nbr2 = new Double(1232.11223);
    Float nbr3 = new Float(8098098.809808);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(mymessage);
    oos.writeInt(nbr);
    oos.writeObject(nbr2);
    oos.writeObject(nbr3);
    oos.close();
    byte[] buffer = baos.toByteArray();
    socket.send(packet);
    //this is on the server side...
    byte [] buffer = new byte [5000];
    String mymessage = null; int nbr = 0; Double nbr2 = null;
    Float nbr3 = null;
    mymessage = (String)ois.readObject();
    nbr = ois.readInt();
    nbr2 = (Double) ois.readObject();
    nbr3 = (Float) ois.readObject();
    My main question here is that I have to create a new Float and Double object to be able to send and receive this byte array correctly. However, I would like to be able to have to only create 1object, stuff it with the String, int, Float and Double, send it and then correctly receive it on the other end.
    So I tried creating another class, and then creating an obj of this class and stuffing it with the 4 types:
    public class O_struct{
    //the indiv. objects to be sent...
    public String mymessage; public int nbr; public Double nbr2;
    public Float nbr3;
    //construct...
    public O_struct(String mymessage_c, int nbr_c, double nbr2_c, float nbr3_c){
    my_message = my_message_c;
    nbr = nbr_c;
    nbr2 = new Double(nbr2_c);
    nbr3 = new Float(nbr3_c);
    Then in main, using this new class:
    in main():
    O_struct some_obj_client = new O_struct("Here is your stuff from your client", 22, 1232.1234, 890980980.798);
    oos.writeObject(some_obj_client);
    oos.close();
    send code....according to UDP
    However on the receiving side, I am not sure how to be able to correctly retrieve the 4 types. Before I was explicitely creating those objects for sending, then I was casting them again on the receiving side to retrieve then and it does work.
    But if I create a O_struct object and cast it as I did before with the indiv objects on the receiving end, I can't get the correct retrievals.
    My code, on the server side:
    O_struct some_obj_server = new O_struct(null, null, null. null);
    some_obj_server = (O_struct)ois.readObject();
    My main goal is to be able to send 4 types in a byte array, but the way I have written this code, I have to create a Float and Double obj to be able to send and receive correctly. I would rather not have to directly create these objects, but instead be able to stuff all 4 types into a byte array and then send it and correctly be able to retrieve all the info on the receiver's side.
    I might be making this more complicated than needed, but this was the only way I could figure out how to do this and any help will be greatly appreciated.
    If there an easier way to do I certainly will appreciate that advise as well.
    Thanks.

    public class O_struct implements Serializable {
    // writing
    ObjectOutputStream oos = ...;
    O_struct struct = ...;
    oos.writeObject(struct);
    // reading
    ObjectInputStream ois = ...;
    O_struct struct = (O_struct)ois.readObject();
    I will be sending 1000s of these byte arrays, and I'm sure having to create a new Double or Float on both ends will hinder this.
    I am worried that having to create new objs every time it is sending a byte array will affect my application.
    That's the wrong way to approach this. You're talking about adding complexity to your code and fuglifying it because you think it might improve performance. But you don't know if it will, or by how much, or even if it needs to be improved.
    Personally, I'd guess that the I/O will have a much bigger affect on performance than object creation (which, contrary to popular belief, is generally quite fast now: http://www-128.ibm.com/developerworks/java/library/j-jtp01274.html)
    If you think object creation is going to be a problem, then before you go and cock up your real code to work around it, create some tests that measure how fast it is one way vs. the other. Then only use the cock-up if the normal, easier to write and maintain way is too slow AND the cock-up is significantly faster.

  • C expert question

    Here are five typedefs for the c-brains in here. How do I port them to Java?
    typedef struct {
      long endbyte;
      int  endbit;
      unsigned char *buffer;
      unsigned char *ptr;
      long storage;
    } oggpack_buffer;
    typedef struct {
      unsigned char *header;
      long           header_len;
      unsigned char *body;
      long           body_len;
    } ogg_page;
    typedef struct {
      unsigned char   *body_data;    /* bytes from packet bodies */
      long    body_storage;          /* storage elements allocated */
      long    body_fill;             /* elements stored; fill mark */
      long    body_returned;         /* elements of fill returned */
      int     *lacing_vals;    /* The values that will go to the segment table */
      ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact
                                 this way, but it is simple coupled to the
                                 lacing fifo */
      long    lacing_storage;
      long    lacing_fill;
      long    lacing_packet;
      long    lacing_returned;
      unsigned char    header[282];      /* working space for header encode */
      int              header_fill;
      int     e_o_s;          /* set when we have buffered the last packet in the
                                 logical bitstream */
      int     b_o_s;          /* set after we've written the initial page
                                 of a logical bitstream */
      long     serialno;
      int      pageno;
      ogg_int64_t  packetno;      /* sequence number for decode; the framing
                                 knows where there's a hole in the data,
                                 but we need coupling so that the codec
                                 (which is in a seperate abstraction
                                 layer) also knows about the gap */
      ogg_int64_t   granulepos;
    } ogg_stream_state;
    typedef struct {
      unsigned char *packet;
      long  bytes;
      long  b_o_s;
      long  e_o_s;
      ogg_int64_t  granulepos;
      ogg_int64_t  packetno;
    } ogg_packet;
    typedef struct {
      unsigned char *data;
      int storage;
      int fill;
      int returned;
      int unsynced;
      int headerbytes;
      int bodybytes;
    } ogg_sync_state;My technique will be to translate all five of them to classes.
    class oggpack_buffer {}
    class ogg_page {}
    class ogg_stream_state {}
    class ogg_packet {}
    class ogg_sync_state {}I'll change the names so they comply with the coding conventions for Java.
    class OggPackBuffer {}
    class OggPage {}
    class OggStreamState {}
    class OggPacket {}
    class OggSyncState {}The first typdef is called oggpack_buffer. The first field is a long. I search for "Java data types" and it gives me this document:
    http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html
    This line I don't understand:
    long      Long integer      64-bit two's complement
    What does '64-bit two's complement' mean?
    Then I search for C data types and it gives me this:
    http://www.phim.unibe.ch/comp_doc/c_manual/C/CONCEPT/data_types.html
    'long' is not even listed in the second document. Only 'int long'. Elsewhere I learn that the size of a 'long' in C depends on the CPU or system architecture.
    So I'm stuck already in the first line. Please throw some light on the 'long' data type in C and the corresponding in Java.
    Thank you.

    The next 'typedef struct' - what a semantically strange construct - presents me with some new problems. Let's look at it:
    typedef struct {
      unsigned char   *body_data;    /* bytes from packet bodies */
      long    body_storage;          /* storage elements allocated */
      long    body_fill;             /* elements stored; fill mark */
      long    body_returned;         /* elements of fill returned */
      int     *lacing_vals;    /* The values that will go to the segment table */
      ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact  this way, but it is simple coupled to the lacing fifo */
      long    lacing_storage;
      long    lacing_fill;
      long    lacing_packet;
      long    lacing_returned;
      unsigned char    header[282];      /* working space for header encode */
      int              header_fill;
      int     e_o_s;          /* set when we have buffered the last packet in the                             logical bitstream */
      int     b_o_s;          /* set after we've written the initial page of a logical bitstream */
      long     serialno;
      int      pageno;
      ogg_int64_t  packetno;      /* sequence number for decode; the framing
                                 knows where there's a hole in the data,
                                 but we need coupling so that the codec
                                 (which is in a seperate abstraction
                                 layer) also knows about the gap */
      ogg_int64_t   granulepos;
    } ogg_stream_state;Apart from presenting us with some incomprehensible ogg-specific information there is a new data-type. Remember that in C, we can define your own primitive data-types. The one in question is called 'ogg_int64_t'. Go to the http://xiph.org/ website, download the libogg and libvorbis and run an XP search for header files with that name in them. One moment...
    http://www.ideerdeterbumbumbum.dk/cprograms/search.PNG
    A lot of hits!
    http://www.ideerdeterbumbumbum.dk/cprograms/search.PNG
    In the file os_types.h I find an answer. But theres a challenge for me. Look what I found in this file. Here's the file in its entirity.
    #ifndef _OS_TYPES_H
    #define _OS_TYPES_H
    /* make it easy on the folks that want to compile the libs with a
       different malloc than stdlib */
    #define _ogg_malloc  malloc
    #define _ogg_calloc  calloc
    #define _ogg_realloc realloc
    #define _ogg_free    free
    #if defined(_WIN32)
    #  if defined(__CYGWIN__)
    #    include <_G_config.h>
         typedef _G_int64_t ogg_int64_t;
         typedef _G_int32_t ogg_int32_t;
         typedef _G_uint32_t ogg_uint32_t;
         typedef _G_int16_t ogg_int16_t;
         typedef _G_uint16_t ogg_uint16_t;
    #  elif defined(__MINGW32__)
         typedef short ogg_int16_t;                                                                            
         typedef unsigned short ogg_uint16_t;                                                                  
         typedef int ogg_int32_t;                                                                              
         typedef unsigned int ogg_uint32_t;                                                                    
         typedef long long ogg_int64_t;                                                                        
         typedef unsigned long long ogg_uint64_t; 
    #  elif defined(__MWERKS__)
         typedef long long ogg_int64_t;
         typedef int ogg_int32_t;
         typedef unsigned int ogg_uint32_t;
         typedef short ogg_int16_t;
         typedef unsigned short ogg_uint16_t;
    #  else
         /* MSVC/Borland */
         typedef __int64 ogg_int64_t;
         typedef __int32 ogg_int32_t;
         typedef unsigned __int32 ogg_uint32_t;
         typedef __int16 ogg_int16_t;
         typedef unsigned __int16 ogg_uint16_t;
    #  endif
    #elif defined(__MACOS__)
    #  include <sys/types.h>
       typedef SInt16 ogg_int16_t;
       typedef UInt16 ogg_uint16_t;
       typedef SInt32 ogg_int32_t;
       typedef UInt32 ogg_uint32_t;
       typedef SInt64 ogg_int64_t;
    #elif defined(__MACOSX__) /* MacOS X Framework build */
    #  include <sys/types.h>
       typedef int16_t ogg_int16_t;
       typedef u_int16_t ogg_uint16_t;
       typedef int32_t ogg_int32_t;
       typedef u_int32_t ogg_uint32_t;
       typedef int64_t ogg_int64_t;
    #elif defined(__BEOS__)
       /* Be */
    #  include <inttypes.h>
       typedef int16_t ogg_int16_t;
       typedef u_int16_t ogg_uint16_t;
       typedef int32_t ogg_int32_t;
       typedef u_int32_t ogg_uint32_t;
       typedef int64_t ogg_int64_t;
    #elif defined (__EMX__)
       /* OS/2 GCC */
       typedef short ogg_int16_t;
       typedef unsigned short ogg_uint16_t;
       typedef int ogg_int32_t;
       typedef unsigned int ogg_uint32_t;
       typedef long long ogg_int64_t;
    #elif defined (DJGPP)
       /* DJGPP */
       typedef short ogg_int16_t;
       typedef int ogg_int32_t;
       typedef unsigned int ogg_uint32_t;
       typedef long long ogg_int64_t;
    #elif defined(R5900)
       /* PS2 EE */
       typedef long ogg_int64_t;
       typedef int ogg_int32_t;
       typedef unsigned ogg_uint32_t;
       typedef short ogg_int16_t;
    #elif defined(__SYMBIAN32__)
       /* Symbian GCC */
       typedef signed short ogg_int16_t;
       typedef unsigned short ogg_uint16_t;
       typedef signed int ogg_int32_t;
       typedef unsigned int ogg_uint32_t;
       typedef long long int ogg_int64_t;
    #else
    #  include <sys/types.h>
    #  include <ogg/config_types.h>
    #endif
    #endif  /* _OS_TYPES_H */An if-else system based on OS-architecture. How strange for a Javaman! How does it do? Instinctively I get the urge to search for '_WIN32' among all the files. One moment...
    I didn't find a definition of the string '_WIN32'. Now that's very strange, cause '_WIN32' is a strange string. Look at it! It looks crazy! I'm gonna search for it on Google...
    I got 151.000 hits. That probably means that it's somehow a conventional syntax to say '_WIN32'. I've got to try to test this with jsalonen's program. I will include the headerfile show above into my helloworld-program with the sizeof([data-type]) dumps and see what happens.
    #include <iostream>
    #include "stdafx.h"
    #include <stdio.h>
    #include "os_types.h"
    using namespace std;
    void main()
      cout << "Hello World!" << endl;   cout << "Welcome to C++ Programming" << endl;
      printf("ogg_int64_t:\t%d\n", sizeof(ogg_int64_t));
      printf("short:\t%d\n", sizeof(short));
        printf("int:\t%d\n", sizeof(int));
        printf("long:\t%d\n", sizeof(long));
        printf("long long:\t%d\n", sizeof(long long));
    }My my. It compiled. The output on my Pentium/XP architecture is:
    C:\Documents and Settings\Morten Hjerl-Hansen\Dokumenter\temp\cproject\cproject\
    Debug>cproject.exe
    Hello World!
    Welcome to C++ Programming
    ogg_int64_t: 8
    short: 2
    int: 4
    long: 4
    long long: 8
    Here's the executable if you want to try it out on your own Windows box. (Look for it near your Linux box.)
    www.ideerdeterbumbumbum.dk/cprograms/cprojectv2.exe
    ogg_int64_t is 8 bytes. So I have to decide between finding a Java datatype of size 8 bytes (64 bits) and representing ogg_int64_t. I definitely go for the first option. I don't have a clue why, it's a gut feeling. There are two: long and double. jsalonen said something about signs before. He (she?) said that long is signed.
    How do I find out if the datatype ogg_int64_t is signed? That's easy:
    #include <iostream>
    #include "stdafx.h"
    #include <stdio.h>
    #include "os_types.h"
    using namespace std;
    void main()
      cout << "Hello World!" << endl;   cout << "Welcome to C++ Programming" << endl;
      ogg_int64_t dummy = -1;
      printf("dummy:\t%d\n", dummy);
    }Output:
    C:\Documents and Settings\Morten Hjerl-Hansen\Dokumenter\temp\cproject\cproject\
    Debug>cproject.exe
    Hello World!
    Welcome to C++ Programming
    dummy: -1
    Program:
    www.ideerdeterbumbumbum.dk/cprograms/cprojectv3.exe
    Cool. It's signed just as Java's long, so they are completely the same. Wait...I'll just make one more test, just for the *** of it.
    #include <iostream>
    #include "stdafx.h"
    #include <stdio.h>
    #include "os_types.h"
    using namespace std;
    void main()
      cout << "Hello World!" << endl;   cout << "Welcome to C++ Programming" << endl;
      ogg_int64_t dummy = 0xFFFFFFFFFFFFFFFF;
      ogg_int64_t dummy2 = 0xFFFFFFFFFFFFFFFE;
      printf("dummy:\t%d\n", dummy);
      printf("dummy:\t%d\n", dummy2);
    }Output:
    C:\Documents and Settings\Morten Hjerl-Hansen\Dokumenter\temp\cproject\cproject\
    Debug>cproject.exe
    Hello World!
    Welcome to C++ Programming
    dummy: -1
    dummy: -2
    I never get used to that. The 'most significant bit' signifies the sign.
    I look at the 'typedef struct' listed at the beginning of this message again. These two lines are weird:
      int     *lacing_vals;    /* The values that will go to the segment table */
      ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact  this way, but it is simple coupled to the lacing fifo */I haven't got a clue about how to translate them to Java. I read the documentation.
    http://xiph.org/ogg/doc/libogg/ogg_stream_state.html
    It reads:
    lacing_vals
    String of lacing values for the packet segments within the current page. Each value is a byte, indicating packet segment length.
    granule_vals
    Pointer to the lacing values for the packet segments within the current page.
    I will definitely not use a java.lang.String to represent
    int *lacing_vals;
    Because I know that Java Strings are made upof unicodes and those are 16 bit each, just as the Java char primitive type. So I'll use a byte array, obviously. The 'granule_vals' field is harder to translate. I make a search in the code which makes it more and more like plausible that 'granule_vals' represents every Java programmers worst nightmare: absolute memory referencing. Aaa! Eeee�
    How on earth do I represent t h a t? Wittgenstein said that the meaning of a sentence is it's use. This is exactly the key to what I must do now. Search for uses...frame.c in libogg has this line in it where 'granule_vals' is used:
    os->granule_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals));I'm happy. oggmalloc is clearly a memory allocation call of some sort. I wonder what it returns. I'll do a file search now for oggmalloc...
    It's used in several places. Alas, poor C-programmers. misc.c in libvorbis reads:
    #define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__)Typical C! Just look at that 'x' there. That's generics. Like in Tiger, when we say
    public interface List<E> {
    void add(E x);
    Iterator<E> iterator();
    public interface Iterator<E> {
    E next();
    boolean hasNext();
    }Ok. I'm getting used to it, but I haven't used that <E> notation in my programs yet. Anyway in misc.c there's a line defining VDBGmalloc:
    extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line);The 'extern' keyword probably means that it is defined externally. There's a long explanation of the 'extern' keyword here
    http://publications.gbdirect.co.uk/c_book/chapter4/linkage.html
    that I don't care about. The only thing I'm interested in at this moment, keeping my focus, is how a method can have this return type:
    void *
    It makes absolutely no sense to a Java programmer, does it?
    Anyway, the class is finished:
    http://ideerdeterbumbumbum.dk/oggenc/dk/hjerl/ogg/OggStreamState.java

  • Please help me with the following two questions, very urgent

    Hi All,
    Please help me with some scenerios about what are the common problems when modifying a standard script such a standard Invoice script and how can we overcome them.
    What are the common problems encountered when working with SAP SMARTFORMS and how to overcome them?
    Please help me with these questions, its very urgent.
    Thanks in advance.
    MD.

    hi
    hope it will help you.
    reward if ehlp.
    How to create a New smartfrom, it is having step by step procedure
    http://sap.niraj.tripod.com/id67.html
    step by step good ex link is....
    http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html
    Here is the procedure
    1. Create a new smartforms
    Transaction code SMARTFORMS
    Create new smartforms call ZSMART
    2. Define looping process for internal table
    Pages and windows
    First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)
    Here, you can specify your title and page numbering
    &SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)
    Main windows -> TABLE -> DATA
    In the Loop section, tick Internal table and fill in
    ITAB1 (table in ABAP SMARTFORM calling function) INTO ITAB2
    3. Define table in smartforms
    Global settings :
    Form interface
    Variable name Type assignment Reference type
    ITAB1 TYPE Table Structure
    Global definitions
    Variable name Type assignment Reference type
    ITAB2 TYPE Table Structure
    4. To display the data in the form
    Make used of the Table Painter and declare the Line Type in Tabstrips Table
    e.g. HD_GEN for printing header details,
    IT_GEN for printing data details.
    You have to specify the Line Type in your Text elements in the Tabstrips Output options.
    Tick the New Line and specify the Line Type for outputting the data.
    Declare your output fields in Text elements
    Tabstrips - Output Options
    For different fonts use this Style : IDWTCERTSTYLE
    For Quantity or Amout you can used this variable &GS_ITAB-AMOUNT(12.2)&
    5. Calling SMARTFORMS from your ABAP program
    REPORT ZSMARTFORM.
    Calling SMARTFORMS from your ABAP program.
    Collecting all the table data in your program, and pass once to SMARTFORMS
    SMARTFORMS
    Declare your table type in :-
    Global Settings -> Form Interface
    Global Definintions -> Global Data
    Main Window -> Table -> DATA
    Written by : SAP Hints and Tips on Configuration and ABAP/4 Programming
    http://sapr3.tripod.com
    TABLES: MKPF.
    DATA: FM_NAME TYPE RS38L_FNAM.
    DATA: BEGIN OF INT_MKPF OCCURS 0.
    INCLUDE STRUCTURE MKPF.
    DATA: END OF INT_MKPF.
    SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
    SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.
    MOVE-CORRESPONDING MKPF TO INT_MKPF.
    APPEND INT_MKPF.
    ENDSELECT.
    At the end of your program.
    Passing data to SMARTFORMS
    call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
    formname = 'ZSMARTFORM'
    VARIANT = ' '
    DIRECT_CALL = ' '
    IMPORTING
    FM_NAME = FM_NAME
    EXCEPTIONS
    NO_FORM = 1
    NO_FUNCTION_MODULE = 2
    OTHERS = 3.
    if sy-subrc <> 0.
    WRITE: / 'ERROR 1'.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    call function FM_NAME
    EXPORTING
    ARCHIVE_INDEX =
    ARCHIVE_INDEX_TAB =
    ARCHIVE_PARAMETERS =
    CONTROL_PARAMETERS =
    MAIL_APPL_OBJ =
    MAIL_RECIPIENT =
    MAIL_SENDER =
    OUTPUT_OPTIONS =
    USER_SETTINGS = 'X'
    IMPORTING
    DOCUMENT_OUTPUT_INFO =
    JOB_OUTPUT_INFO =
    JOB_OUTPUT_OPTIONS =
    TABLES
    GS_MKPF = INT_MKPF
    EXCEPTIONS
    FORMATTING_ERROR = 1
    INTERNAL_ERROR = 2
    SEND_ERROR = 3
    USER_CANCELED = 4
    OTHERS = 5.
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    Smartform
    you can check this link here you can see the steps and you can do it the same by looking at it..
    http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html
    SMARTFORMS STEPS.
    1. In Tcode se11 Create a structure(struct) same like the Internal table that you are going to use in your report.
    2. Create Table type(t_struct) of stracture in se11.
    3. In your program declare Internal table(Itab) type table of structure(struct).
    4. Define work area(wa) like line of internal table.
    5. Open Tcode Smartforms
    6. In form Global setting , forminterface Import parameter define Internal table(Itab) like table type of stracture(t_struct).
    7. In form Global setting , Global definitions , in Global data define Work area(wa) like type stracture(struct).
    8. In form pages and window, create Page node by default Page1 is available.
    9. In page node you can create numbers of secondary window. But in form there is only one Main window.
    10. By right click on page you can create windows or Go to Edit, Node, Create.
    11. After creating the window right click on window create table for displaying the data that you are passing through internal table.
    12. In the table Data parameter, loop internal internal table (Itab) into work area(wa).
    13. In table there are three areas Header, Main Area, Footer.
    14. Right click on the Main area create table line by default line type1 is there select it.
    15. Divide line into cells according to your need then for each cell create Text node.
    16. In text node general attribute. Write down fields of your work area(wa) or write any thing you want to display.
    17. Save form and activate it.
    18. Then go to Environment, function module name, there you get the name of function module copy it.
    19. In your program call the function module that you have copied from your form.
    20. In your program in exporting parameter of function pass the internal table(itab).
    SAP Smart Forms is introduced in SAP Basis Release 4.6C as the tool for creating and maintaining forms.
    SAP Smart Forms allow you to execute simple modifications to the form and in the form logic by using simple graphical tools; in 90% of all cases, this won't include any programming effort. Thus, a power user without any programming knowledge can
    configure forms with data from an SAP System for the relevant business processes.
    To print a form, you need a program for data retrieval and a Smart Form that contains the entire from logic. As data retrieval and form logic are separated, you must only adapt the Smart Form if changes to the form logic are necessary. The application program passes the data via a function module interface to the Smart Form. When activating the Smart Form, the system automatically generates a function module. At runtime, the system processes this function module.
    You can insert static and dynamic tables. This includes line feeds in individual table cells, triggering events for table headings and subtotals, and sorting data before output.
    You can check individual nodes as well as the entire form and find any existing errors in the tree structure. The data flow analysis checks whether all fields (variables) have a defined value at the moment they are displayed.
    SAP Smart Forms allow you to include graphics, which you can display either as part of the form or as background graphics. You use background graphics to copy the layout of an existing (scanned) form or to lend forms a company-specific look. During printout, you can suppress the background graphic, if desired.
    SAP Smart Forms also support postage optimizing.
    Also read SAP Note No. 168368 - Smart Forms: New form tool in Release 4.6C
    What Transaction to start SAP Smart Forms?
    Execute transaction SMARTFORMS to start SAP Smart Forms.
    Key Benefits of SAP Smart Forms:
    SAP Smart Forms allows you to reduce considerably the implementation costs of mySAP.com solutions since forms can be adjusted in minimum time.
    You design a form using the graphical Form Painter and the graphical Table Painter. The form logic is represented by a hierarchy structure (tree structure) that consists of individual nodes, such as nodes for global settings, nodes for texts, nodes for output tables, or nodes for graphics.
    To make changes, use Drag & Drop, Copy & Paste, and select different attributes.
    These actions do not include writing of coding lines or using a Script language.
    Using your form description maintained in the Form Builder, Smart Forms generates a function module that encapsulates layout, content and form logic. So you do not need a group of function modules to print a form, but only one.
    For Web publishing, the system provides a generated XML output of the processed form.
    Smart Forms provides a data stream called XML for Smart Forms (XSF) to allow the use of 3rd party printing tools. XSF passes form content from R/3 to an external product without passing any layout information about the Smart Form.
    SmartForms System Fields
    Within a form you can use the field string SFSY with its system fields. During form processing the system replaces these fields with the corresponding values. The field values come from the SAP System or are results of the processing.
    System fields of Smart Forms
    &SFSY-DATE&
    Displays the date. You determine the display format in the user master record.
    &SFSY-TIME&
    Displays the time of day in the form HH:MM:SS.
    &SFSY-PAGE&
    Inserts the number of the current print page into the text. You determine the format of the page number (for example, Arabic, numeric) in the page node.
    &SFSY-FORMPAGES&
    Displays the total number of pages for the currently processed form. This allows you to include texts such as'Page x of y' into your output.
    &SFSY-JOBPAGES&
    Contains the total page number of all forms in the currently processed print request.
    &SFSY-WINDOWNAME&
    Contains the name of the current window (string in the Window field)
    &SFSY-PAGENAME&
    Contains the name of the current page (string in the Page field)
    &SFSY-PAGEBREAK&
    Is set to 'X' after a page break (either automatic [Page 7] or command-controlled [Page 46])
    &SFSY-MAINEND&
    Is set as soon as processing of the main window on the current page ends
    &SFSY-EXCEPTION&
    Contains the name of the raised exception. You must trigger your own exceptions, which you defined in the form interface, using the user_exception macro (syntax: user_exception <exception name >).
    Example Forms Available in Standard SAP R/3
    SF_EXAMPLE_01
    Simple example; invoice with table output of flight booking for one customer
    SF_EXAMPLE_02
    Similar to SF_EXAMPLE_01 but with subtotals
    SF_EXAMPLE_03
    Similar to SF_EXAMPLE_02, whereby several customers are selected in the application program; the form is called for each customer and all form outputs are included in an output request
    Advantages of SAP Smart Forms
    SAP Smart Forms have the following advantages:
    1. The adaption of forms is supported to a large extent by graphic tools for layout and logic, so that no programming knowledge is necessary (at least 90% of all adjustments). Therefore, power user forms can also make configurations for your business processes with data from an SAP system. Consultants are only required in special cases.
    2. Displaying table structures (dynamic framing of texts)
    3. Output of background graphics, for form design in particular the use of templates which were scanned.
    4. Colored output of texts
    5. User-friendly and integrated Form Painter for the graphical design of forms
    6. Graphical Table Painter for drawing tables
    7. Reusing Font and paragraph formats in forms (Smart Styles)
    8. Data interface in XML format (XML for Smart Forms, in short XSF)
    9. Form translation is supported by standard translation tools
    10. Flexible reuse of text modules
    11. HTML output of forms (Basis release 6.10)
    12. Interactive Web forms with input fields, pushbuttons, radio buttons, etc. (Basis-Release 6.10)

  • ColdFusion 11: custom serialisers. More questions than answers

    G'day:
    I am reposting this from my blog ("ColdFusion 11: custom serialisers. More questions than answers") at the suggestion of Adobe support:
    @dacCfml @ColdFusion Can you post your queries at http://t.co/8UF4uCajTC for all cfclient and mobile queries.— Anit Kumar Panda (@anitkumar85) April 29, 2014
    This particular question is not regarding <cfclient>, hence posting it on the regular forum, not on the mobile-specific one as Anit suggested. I have edited this in places to remove language that will be deemed inappropriate by the censors here. Changes I have made are in [square brackets]. The forums software here has broken some of the styling, but so be it.
    G'day:
    I've been wanting to write an article about the new custom serialiser one can have in ColdFusion 11, but having looked at it I have more questions than I have answers, so I have put it off. But, equally, I have no place to ask the questions, so I'm stymied. So I figured I'd write an article covering my initial questions. Maybe someone can answer then.
    ColdFusion 11 has added the notion of a custom serialiser a website can have (docs: "Support for pluggable serializer and deserializer"). The idea is that whilst Adobe can dictate the serialisation rules for its own data types, it cannot sensibly infer how a CFC instance might get serialised: as each CFC represents a different data "schema", there is no "one size fits all" approach to handling it. So this is where the custom serialiser comes in. Kind of. If it wasn't a bit rubbish. Here's my exploration thusfar.
    One can specify a custom serialiser by adding a setting to Application.cfc:
    component {     this.name = "serialiser01";     this.customSerializer="Serialiser"; }
    In this case the value - Serialiser - is the name of a CFC, eg:
    // Serialiser.cfccomponent {     public function canSerialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function canDeserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function serialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "SERIALISED";     }     public function deserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "DESERIALISED";     }     private function logArgs(required struct args, required string from){         var dumpFile = getDirectoryFromPath(getCurrentTemplatePath()) & "dump_#from#.html";         if (fileExists(dumpFile)){             fileDelete(dumpFile);         }         writeDump(var=args, label=from, output=dumpFile, format="html");     } }
    This CFC needs to implement four methods:
    canSerialize() - indicates whether something can be serialised by the serialiser;
    canDeserialize() - indicates whether something can be deserialised by the serialiser;
    serialize() - the function used to serialise something
    deserialize() - the function used to deserialise something
    I'm being purposely vague on those functions for a reason. I'll get to that.
    The first [issue] in the implementation here is that for the custom serialisation to work, all four of those methods must be implemented in the serisalisation CFC. So common sense would dictate that a way to enforce that would be to require the CFC to implement an interface. That's what interfaces are for. Now I know people will argue the merit of having interfaces in CFML, but I don't really give a [monkey's] about that: CFML has interfaces, and this is what they're for. So when one specifies the serialiser in Application.cfc and it doesn't fulfil the interface requirement, it should error. Right then. When one specifies the inappropriate tool for the job. What instead happens is if the functions are omitted, one will get erratic behaviour in the application, through to outright errors when ColdFusion goes to call the functions and cannot find it. EG: if I have canSerialize() but no serialize() method, CF will error when it comes to serialise something:
    JSON serialization failure: Unable to serialize to JSON.
    Reason : The method serialize was not found in component C:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/Serialiser .cfc.
    The error occurred inC:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/testBasic.c fm: line 4
    2 : o = new Basic();
    3 :
    4 : serialised = serializeJson(o);5 : writeDump([serialised]);
    6 :
    Note that the error comes when I go to serialise something, not when ColdFusion is told about the serialiser in the first place. This is just lazy/thoughtless implementation on the part of Adobe. It invites bugs, and is just sloppy.
    The second [issue] follows immediately on from this.
    Given my sample serialiser above, I then run this test code to examine some stuff:
    o = new Basic(); serialised = serializeJson(o); writeDump([serialised]); deserialised = deserializeJson(serialised); writeDump([deserialised]);
    So all I'm doing is using (de)serializeJson() as a baseline to see how the functions work. here's Basic.cfc, btw:
    component { }
    And the test output:
    array
    1
    SERIALISED
    array
    1
    DESERIALISED
    This is as one would expect. OK, so that "works". But now... you'll've noted I am logging the arguments each of the serialisation methods receives, as I got.
    Here's the arguments passed to canSerialize():
    canSerialize - struct
    1
    XML
    My reaction to that is: "[WTH]?" Why is canSerialize() being passed the string "XML" when I'm trying to serialise an object of type Basic.cfc?
    Here's the docs for canSerialize() (from the page I linked to earlier):
    CanSerialize - Returns a boolean value and takes the "Accept Type" of the request as the argument. You can return true if you want the customserialzer to serialize the data to the passed argument type.
    Again, back to "[WTH]?" What's the "Accept type" of the request? And what the hell has the request got to do with a call to serializeJson()? You might think that "Accept type" references some HTTP header or something, but there is no "Accept type" header in the HTTP spec (that I can find: "Hypertext Transfer Protocol -- HTTP/1.1: 14 Header Field Definitions"). There's an "Accept" header (in this case: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"), and other ones like "Accept-Encoding", "Accept-Language"... but none of which contain a value of "XML". Even if there was... how would it be relevant to the question as to whether a Basic.cfc instance can be serialised? Raised as bug: 3750730.
    serialize() gets more sensible arguments:
    serialize - struct
    1
    https://www.blogger.com/nullserialize - component scribble.shared.git.blogExamples.coldfusion.CF11.customerserialiser.Basic
    2
    JSON
    So the first is the object to serialise (which surely should be part of the question canSerialize() is supposed to ask, and the format to serialise to. Cool.
    canDeserialize() is passed this:
    canDeserialize - struct
    1
    JSON
    I guess it's because it's being called from deserializeJson(), so it's legit to expect the input value is indeed JSON. Fair enough. (Note: I'm not actually passing it JSON, but that's beside the point here).
    And deserialize() is passed this:
    deserialize - struct
    1
    SERIALISED
    2
    JSON
    3
    [empty string]
    The first argument is the value to work on, and the second is the type of deserialisation to do. I have no idea what the third argument is for, and it's not mentioned directly or indirectly on that docs page. So dunno what the story is there.
    The next issue isn't a code-oriented one, but an implementation one: how the hell are we expected to work with this?
    The only way to work here is for each function to have a long array of IF/ELSEIF statements which somehow identify each object type that is serialisable, and then return true from canSerialise(), or in the case of serialize(), go ahead and do the serialisation. So this means this one CFC needs to know about everything which can be serialised in the entire application. Talk about a failure in "separation of concerns".
    You know the best way of determining if an object can be seriaslised? Ask it! Don't rely on something else needing to know. This can be achieved very easily in one of two ways:
    Check to see if the object implements a "Serializable" interface, which requires a serialize() method to exist.
    Or simply take the duck-typing approach: if a CFC implements a serialize() method: it can be serialised. By calling that method. Job done.
    Either approach would work fine, keeps things nicely encapsulated, and I see merits in both. And either make far more sense than Adobe's approach. Which is like something from the "OO Failures Special Needs" class.
    Deserialisation is trickier. Because it relies on somehow working out how to deserialise() an object. I'm not sure of the best approach here, but - again - how to deserialise something should be as close to the thing needing deserialisation as possible. IE: something in the serialised data itself which can be used to bootstrap the process.
    This could simply be a matter of specifying a CFC type at a known place in the serialised data. EG: Adobe stipulates that if the serialised data is JSON, and at the top level of the JSON is a key eg: type, and the value is an extant CFC... use that CFC's deserialize() method. Or it could look for an object which contains a type and a method, or whatever. But Adobe can specify a contract there.
    The only place I see a centralised CFC being relevant here is for a mechanism for handling serialised data that is neither a ColdFusion internal type, nor identifiable as above. In this case, perhaps they could provide a mechanism for a serialisation router, which basically has a bunch of routes (if/elseifs if need be) which contains logic as to how to work out how to deserialise the data. But it should not be the actual deserialiser, it should simply have the mechanism to find out how to do it. This is actually pretty much the same in operation as the deserialize() approach in the current implementation, but it doesn't need the canDeserialize() method (it can return false at the end of the routing), and it doesn't need to know about serialising. And also it's not the main mechanism to do the deserialisation, it's just the fall back if the prescribed approach hasn't been used.
    TBH, this still sounds a bit jerry-built, and I'm open for better suggestions. This is probably a well-trod subject in other languages, so it might be worth looking at how the likes of Groovy, Ruby or even PHP (eek!) achieve this.
    There's still another issue with the current approach. And this demonstrates that the Adobe guys don't actually work with either CFML applications or even modern websites. This approach only works for a single, stand-alone website (like how we might have done in 2001). What if I'm not in the business of building websites, but I build applications such as FW/1 or ColdBox or the like? Or any sort of "helper" application. They cannot use the current Adobe implementation of the customserializer. Why? Because the serialisation code needs to be in a website-specific CFC. There's no way for Luis to implement a custom serialiser in ColdBox (for example), and then have it work for someone using ColdBox. Because it relies on either editing Application.cfc to specify a different CFC, or editing the existing customSerializer CFC. Neither of which are very good solutions. This should have been immediately apparent to the Adobe engineer(s) implementing this stuff had they actually had any experience with modern web applications (which generally aren't just a single monolithic site, but an aggregation of various other sub applications). Equally, I know it's not a case of having thought about this and [I'm just missing something], because when I asked them the other day, at first they didn't even get what I was asking, but when I clarified were just like "oh yeah... um... err... yeah, you can't do that. We'll... have to... ah yeah". This has been raised as bug 3750731.
    So I declare the intent here valid, but the implementation to be more alpha- / pre-release- quality, not release-ready.
    Still: it could be easily deprecated and rework fairly easily. I've raised this as bug 3750732.
    Or am I missing something?
    Adam

    Yes, you can easily add additional questions to the Lookup.WebClient.Questions Lookup to allow some additional choices. We have added quite a few additional choices, we have noticed that removing them once people have selected them causes some errors.
    You can also customize the required number of questions to select when each user sets them up as well as the number required to be correct to reset the password, these options are in the System Configuration settings.
    If you need multi-language versions of the questions, you will also need to modify the appropriate language resource file in the xlWebApp.war file to provide the necessary translations for the values entered into the Lookup.

  • How to call c functions that expects c structs from java program?

    i need to call from my java program to c functions that get
    c structs as a parameters in their prototype.
    as you probablly know java is not working with structs (classes only), so my question is how can i do it , i mean call the c functions that gets structs as parameters form java????

    i believe your c function can accept a jobject and then inside your c function you have to translate that jobject into a c struct by using the jni methods.
    the only reason your c function cant accept structs from java is because java does not have such structures. your c function can accept any data type that has been defined and a jobject has been defined.
    if you have no control over the c functions that are being called, you need to write a wrapper function for those c function. the wrapper functions do the translation from jobject to a struct...then call the c other c functions.

  • Pass a c struct through socket between java and c

    I'm supposed to read the following C struct from a java udp server
    program snippet is following:
    c program:
    typedef struct communication_message{
         int cid;
         unsigned long i_addr;
         double d1;
         long l1;
    }msg;
    msg m=(msg )malloc(sizeof(msg));
    m->cid=..
    sendto(fd,&m,sizeof(msg),0,(struct sockaddr *)&soc,sizwof(soc));
    java program:
    DatagramPacket packet=new DatagramPacket(buf,buf.length);
    socket.receive(packet);               
    I have a question:
    How can i get info form udp packet???

    I have a try like following :
    in c program cid=25302(62D6)
    in java program:
    DatagramPacket packet=new DatagramPacket(buf,buf.length);
    socket.receive(packet);
    ByteBuffer bytebuf=ByteBuffer.allocate(128);
    bytebuf.put(packet.getData());
    bytebuf.order(ByteOrder.BIG_ENDIAN);
    if(ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN ))
         System.out.println("System is BIG_ENDIAN");
    if(ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN))
         System.out.println("System is LITTLE_ENDIAN");<----my box shows me this
    bytebuf.rewind();
    int cid=bytebuf.getChar();-------------> get cid: 54882(D662)
    I hava change byte order why not i can not get right data??

  • Beginner CORBA idl struct said to be abstract class

    How do I instantiate a class declared in my .idl file for use by the methods implementing the interface?
    I want to return an array of Record objects in my CORBA implentation, and my .idl file has:  struct Record
        long recordNumber;
        string firstName;
        string lastName;
        string streetAddress;
        string city;
        string country;
        string phone;
        string eMail;
        string fax;
         typedef sequence <Record> recordSet;
      interface AddRecord
        void setUser(in string user);
        string getUser();
            recordSet getRecords();
    // plus more stuffWhen my implementing class in the server tries to define the getRecords() method like so:  public Record[] getRecords()
        Record r = null;
        Record[] allRecs;
        int index = 0;
        String selectAll = "SELECT * FROM Record ORDER BY Record_number";
        try
          Statement s = connection.createStatement();
          ResultSet recs = s.executeQuery(selectAll);
          while(recs.next())
            index++;
          allRecs = new Record[index];
    //plus more stuffthe compiler complains
    C:\My Documents\Java\CIS 290\hw5\RecordObj.java:178: Record is abstract; cannot be instantiated
    r = new Record();
    I went into the Record.java that the idlj compiler generated, and it is a final, non-abstract class. What incantation do I need here?

    Whoops; solved that one; the real question is this: My .idl file declares some methods that I want to call in my implementation, but the .java class generated by the idlj compiler doesn't show the methods. Here's the full idl:module hw5Corba
    typedef sequence <string> columns;
      struct Record
        long recordNumber;
        string firstName;
        string lastName;
        string streetAddress;
        string city;
        string country;
        string phone;
        string eMail;
        string fax;
       typedef sequence <Record> recordSet;
      interface AddRecord
       void setUser(in string user);
        string getUser();
       recordSet getRecords();
        columns getColumnNames(in string user);
        void newRecord(in Record r);
        void deleteRecord(in long num);
        void updateRecord(in Record r);
        void setRecordNumber(in long num);
        long getRecordNumber();
        void setFirstName(in string first);
        string getFirstName();
        void setLastName(in string last);
        string getLastName();
        void setStreetAddr(in string add);
        string getStreetAddr();
        void setCity(in string city);
        string getCity();
        void setCountry(in string country);
        string getCountry();
        void setEmail(in string email);
        string getEmail();
        void setPhone(in string phone);
        string getPhone();
        void setFax(in string fax);
        string getFax();
    };Here's the method I expect to be able to implement:  public Record[] getRecords()
        Record r = null;
        Record[] allRecs;
        int index = 0;
        String selectAll = "SELECT * FROM Record ORDER BY Record_number";
        try
          Statement s = connection.createStatement();
          ResultSet recs = s.executeQuery(selectAll);
          while(recs.next())
            index++;
          allRecs = new Record[index];
          //cycle through records again, adding each
          //to the array
          index = 0;
          recs = s.executeQuery(selectAll);
          while(recs.next())
            r = new Record();
            r.setRecordNumber(recs.getInt(1));
            r.setFirstName(recs.getString(2));
            r.setLastName(recs.getString(3));
            r.setStreetAddr(recs.getString(4));
            r.setCity(recs.getString(5));
            r.setCountry(recs.getString(6));
            r.setEmail(recs.getString(7));
            r.setPhone(recs.getString(8));
            r.setFax(recs.getString(9));
            allRecs[index] = r;
          catch (SQLException ex)
            exceptionCode(ex);
        return allRecs;
      }The compiler error lists the 9 sub-methods as "can't resolve symbol", because as the Record.java file generated by the idlj shows, the methods aren't there:package hw5Corba;
    * hw5Corba/Record.java
    * Generated by the IDL-to-Java compiler (portable), version "3.0"
    * from Record.idl
    * Tuesday, November 20, 2001 10:08:15 PM CST
    public final class Record implements org.omg.CORBA.portable.IDLEntity
      public int recordNumber = (int)0;
      public String firstName = null;
      public String lastName = null;
      public String streetAddress = null;
      public String city = null;
      public String country = null;
      public String phone = null;
      public String eMail = null;
      public String fax = null;
      public Record ()
      } // ctor
      public Record (int _recordNumber,
    String _firstName, String _lastName,
    String _streetAddress, String _city,
    String _country, String _phone,
    String _eMail, String _fax)
        recordNumber = _recordNumber;
        firstName = _firstName;
        lastName = _lastName;
        streetAddress = _streetAddress;
        city = _city;
        country = _country;
        phone = _phone;
        eMail = _eMail;
        fax = _fax;
      } // ctor
    } // class Record What do I need to do to implement these methods declared in the .idl file?

  • [EWS][FastTransfer][MS-OXCFXICS] Question about paging in the Fast Transfer Stream after exporting message and the meaning of the config in the previous section of the stream.

    Hi, all.
    First, I want to construct a fast transfer stream by programming not using the export item's stream and to import the stream to the folder by posting import request in EWS.
    So, I export the item by EWS and investigate the exporting stream's struct by reading the [MS-OXCFXICS].pdf. And I can parse each MAPI property, marker, meta-property from the stream.
    I find that the stream is made of many pages, most page's length is 0x7BC0, some are less then 0x7BC0. And in the previous section of the stream, there are some configurations. So the questions are:
    1. What is the paging rule? or What is the principle of the paging? Whether a complete propvalue/marker(ref from [MS-OXCFXICS].pdf) must be contained in a page except some binary type?
    2. Why the page's binary length is 0x7BC0? Or where is the configuation about paging length?
    3. The stream is made of the FXOpcodes and the subbuffer about the FXOpcodes, and I find the mean of the FXOpcodes:
    internal enum FxOpcodes
    None = 0,
    Config = 1,
    TransferBuffer = 2,
    IsInterfaceOk = 3,
    TellPartnerVersion = 4,
    StartMdbEventsImport = 11,
    FinishMdbEventsImport = 12,
    AddMdbEvents = 13,
    SetWatermarks = 14,
    SetReceiveFolder = 15,
    SetPerUser = 0x10,
    SetProps = 0x11
    and in the stream there are 4 part(after I parse the stream):
    A. OpCode:Config, value:0000000001000000
    B. OpCode:IsInterfaceOk, value:010000000703020000000000C00000000000004600240080
    C. OpCode:TellPartnerVersion, value:000F91838417
    D and follows is: OpCode:TransferBuffer, Count:31680
    So 
    a. What is the OpCode:Config value meaning?
    b. Some parts of The OpCode:IsInterfaceOk' value is the IID_IMessage("00020307-0000-0000-C000-000000000046"), What is other parts meaning?
    Thanks in advance for any ideas.

    Hi Haiyang,
    Your questions are not covered by the Open Specification documentation and this is documented in [MS-OXWSBTRF] — v20141018 section “1.3 Overview”.
    The upload and export data stream is an opaque format that only needs to be understood by a server implementation. The client only serves as a repository for the opaque data stream so that it can be uploaded to the server at
    a later time.
    You made good progress in interpreting the buffer using other documents. Why do you need to be able to parse the data? Please describe your project in details and I might submit a suggestion to document the layout of the data stream,
    if your project justifies it. You can send the description directly to me.
    Thanks, Vilmos

Maybe you are looking for

  • PO created using fm BAPI_PRODORD_CREATE...Fails to create for some material

    Hi, I am creating PO using BAPI_PRODORD_CREATE...... I am passing order data  and afs data.... For some material PO is not created.... Before passing data to function mo. BAPI_PRODORD_CREATE all the data is correct.... But after executing bapi PO is

  • Raw Files in Lightroom...

    I just imported RAW files into Lightroom and want to use the Develop tool. However, when I change modules to "Develop" It does not allow me to see the changes as I work. Only when I go back to the Library module can I see them. I need to see real tim

  • Order currency

    Deal ALL... While creating the purchase order i need to order the material in different currency. How can i achive this requirement. Regards SARFRAZ

  • X-FI high bass mucic probl

    hi all i recently upgraded my speakers to creative 6700 6. system and when i play a track with lots of base and turn the volume up past a certain level the sound kinda of cuts out or distorts for a split second every time there is a drum beat or some

  • IMP: Cisco AIR-CAP1602 &1532 not joining 2504 Controller issue

    Dear Team, We have Cisco wireless implementation in clients premises. We have 8 indoor AP (AIR-CAP1602E-AK9) and 2 Outdoor AP (AIR-CAP1532I-AK9) . Seven indoor APs are able to join the 2504 controller, but 1 indoor AIR-CAP1602E AP is not joining and