Print the result of an ABAP Program (in an infoset) in a ABAP List viewer.

Hi ,
Here is my question :
I have created an user group in SQ03
I have created an infoset in SQ02 and a query in SQ01.
In my infoset I have a piece of program which looks like that :
SELECT  EVVERTRAG EVBSTATUS EVANLAGE EVVKONTO EV~EINZDAT
EVAUSZDAT EVCOKEY ETABRDATS ETABRVORG ETSPARTE ETTRIGSTAT
ETABLEINH EUIINSTLNINT_UI EUITRANS~EXT_UI
INTO (T_OFB-CONTRAT,T_OFB-STATUT_TRAIT,T_OFB-INSTAL,T_OFB-CMPTE_CONTRAT,
T_OFB-DATE_IN,T_OFB-DATE_OUT,T_OFB-GSR, T_OFB-DATE_CALCUL
,T_OFB-OPE_CALCUL,T_OFB-SECTEUR,T_OFB-STATUT_ORDRE,T_OFB-UNITE,
T_OFB-CLE_PDL,T_OFB-DES_PDL )
FROM ( ever as ev inner join etrg as et
ON evanlage = etanlage )
     inner join  euiinstln
     ON euiinstlnanlage = evanlage
     inner join euitrans
     ON euitransint_ui = euiinstlnint_ui
WHERE ET~TRIGSTAT = '2'
ORDER BY EV~ANLAGE.
This program works fine, but when I create my query, I can just see the result in abap list.
When I choose "abap list viewer" or "Excel format", the result is more like :
" select * from  all tables "
Is there a way to show the result in the viewer ?
I added a "WRITE :/ <column1>, <column2>, but the result is the same.
I also wonder if we can do a "group by " in ABAP.
And do you know how to make a condition " where my_date < today -19 days" ?
Thank you in advance for your answers.
I've been around the others posts and you did such a great job.
Laurent.

hi Chintai,
in bw side, you create a abap program to trigger an event in r/3,
and include this abap program in your process chain, the abap program like
CALL FUNCTION 'BP_EVENT_RAISE'
EXPORTING
eventid = 'ZRUNJOB_DEL'
and in r/3 schedule the program to delete previous data with 'after event',
the event name is same as raise by bw process chain, in this sample ZRUNJOB_DEL.
hope this helps.

Similar Messages

  • No printing :I can't print anymore, printing the same file with another programs is ok, printing form LR: Preparing  and Printing indicatorbar in the left hand upper corner are running, but no output at all rom my printer. I have been printing before. I u

    No printing :I can't print anymore, printing the same file with another program is ok, printing form LR (in the same system and printer of course :-) ): Preparing  and Printing indicatorbar in the left hand upper corner are running and completing, but no output at all to my printer. I have been printing before. Next I upgraded to LR5.7.1 but the problem stays. Perhaps some adjustment is changed by me unintentionally, but I have no idea. Does anybody know what to check? Printing to file is also strange,the canvas only seems to accept A4, and crops any image relative to that size, so a 10x15 cm print on 10 x 15 cm paper is cropped to 10x15/2. Anybody any idea? (system win 8.1 64, printer HP B8550)

    I accidentally solved my mystery.  For some reason it was set to "print to file".  I changed it to "printer" and now I am able to print.

  • How to print the invoice(Billing document) using program RSNAST00

    Hi,
      I want to print the invoice using the program RSNAST00,
    but when i fill in selection screen with the following details,
    Output Application : V3
    Object Key : Billing Document Number
    Output Type : ZPFM
    Transmission Medium : 1
    But it is throwing an Information Message "0 outputs were processed in total (0 successfully,0 incorrectly)
    So please guide me, what are settings i have to do and what abap code i have to write to overcome this error.
    Regards,
    Shasiraj.C

    Hi,
      As you told I am using the function module RV_MESSAGE_DIALOG in my program when I directly execute my program its not printing invoice,but when i keep the break point and execute a pop up comes in which i click on the PRINT button that time it is printing the invoice.
    But I dont want to click on Print button manually, my code should automatically take care of printing also.
    Can guide me in this issue.
    Regards,
    Shasiraj.C

  • Printing the results slide of the quiz

    I am creating a quiz using Captivate 2. Can I give a print
    button wherein it prints out the result slide and also all the
    questions slide with the correct and wrong answers answered.

    I happened upon this recently:
    http://www.raisingaimee.co.uk/index.php?option=com_content&task=view&id=76&Itemid=51
    Don't know if this fits your situation, but might be worth a
    look...

  • Call CR XI from C++ routine, need to run the report without display and send the resulting report to the printer

    <table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"></tr><tr><td height="1" style="font-size: 1pt"></td></tr></tbody></table><blockquote><table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"><td id="HB_Focus_Element" width="100%" height="250" valign="top"><p>I initiate a CR XI from a C++ routine using  ShellExecute command, the report file is opened and the C++ program continues to execute, this is working fine, now I need the following two things:</p><p>1. When the report is invoked I would like it to run and print the result either to a printer or to a file.</p><p>2. I need to send the report parameters since it will not prompt for it if it runs automatically.</p><p>Thanks in advance for your help.</p></td></tr><tr></tr></tbody></table><blockquote><table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" id="HB_Mail_Container"><tbody><tr width="100%" height="100%"><td id="HB_Focus_Element" width="100%" height="250" valign="top"><p>&#160;</p></td></tr></tbody></table></blockquote></blockquote>

    Please re-post if this is still an issue to the Legacy Application Development SDKs Forum or purchase a case and have a dedicated support engineer work with you directly

  • How to print the data in a seperate page / text file

    Hi Experts,
    I have created WD program which fetches data from R/3 using RFC. I am using following statement for printing the results:
    wdComponentAPI.getMessageManager().reportSuccess("The value is " + value);
    I am running the code for 20,000 rows. The results are printed on the same IE page. However it becomes difficult to see the results. I want to get the output printed in any of the following ways:
    Option 1
    1) There should be a link in WD program. When the user willl click on the link other IE page should get open and results should be printed in this page.
    Option 2
    2) The ouput should be written in a text file and user can store the file in local machine.
    Please help me.
    Regards,
    Gary

    Just create a function in your WD application that writes these lines (in loop; pass array of strings to the function) on a text file and saved  as a web resource object then have it available for download by the user. Simple as that.
    Search for WD tutorials that involves downloads and using the web resouce object in WD applications.
    This guide should provide you a good feel through the entire approach: /people/bertram.ganz/blog/2007/05/25/new-web-dynpro-java-tutorials--uploading-and-downloading-files-in-sap-netweaver-70

  • Using the result of a jms webservice

    When I have deployed my simple HelloWorld webservice, I obviously want to write
    a client. I chose to write a dynamic client, which works fine(almost!). Only one
    problem, in the programming guide that comes with weblogic they only mention how
    to call system.out.println on the result(see quote below). But that's not what
    I want to do, I want to use the result, but how? From what I can see the resulting
    object is just a java.lang.Object. How should I cast it, and to what? The soap
    xml says:
    <part name="result" type="xsd:anyType" />
    The question is, what is it that I'm receiving and how can I find that out dynamically.
    This is the code I'm using:
    SoapMethod method = proxy.getMethod("receive");
    SoapType type = method.getReturnType();
    System.out.println("type is:" + type.getTypeAsString());
    System.out.println("value is:" + type.toString());
    System.out.println("class is:" + type.getType().getName());
    The output of the system.out's above is:
    type is:Object
    value is:Object result
    class is:java.lang.Object
    quote:
    Invoke the receive method to receive data from the Web service. In the example,
    the client application uses an infinite while loop to continuously invoke the
    receive method, in essence polling the JMS destination for messages. When the
    receive method returns data, the client application prints the result to the standard
    output:
    while( true ){
    Object result = method.invoke( null );
    System.out.println( result );

    Thanks manoj, for taking the time to help me with my problem.
    I noticed in your examples you posted in your reply that none of the examples
    are using queues. Can you confirm that there is a bug when using queues? It gives
    NullPointerException in the Servlet and FileNotFoundException on the client when
    trying to access the result queue to read the response of my asynchronous webservice.
    See the earlier posting, regarding Webservice works with Topics but not with Queues?
    Cheers,
    Mr Bean
    "manoj cheenath" <[email protected]> wrote:
    if you are using soap encoding:
    you will get back the object you posted to JMS queue. This
    can be a primitive type (like java.lang.String) or a java bean (like
    com.foo.MyJavaBean)
    if you are using literal encoding:
    you will get back a org.w3c.dom.Element back.
    few message style examples are attached.
    regards,
    -manoj
    "MrBean" <[email protected]> wrote in message
    news:[email protected]...
    When I have deployed my simple HelloWorld webservice, I obviously wantto
    write
    a client. I chose to write a dynamic client, which works fine(almost!).Only one
    problem, in the programming guide that comes with weblogic they onlymention how
    to call system.out.println on the result(see quote below). But that'snot
    what
    I want to do, I want to use the result, but how? From what I can seethe
    resulting
    object is just a java.lang.Object. How should I cast it, and to what?The
    soap
    xml says:
    <part name="result" type="xsd:anyType" />
    The question is, what is it that I'm receiving and how can I find thatout
    dynamically.
    This is the code I'm using:
    SoapMethod method = proxy.getMethod("receive");
    SoapType type = method.getReturnType();
    System.out.println("type is:" + type.getTypeAsString());
    System.out.println("value is:" + type.toString());
    System.out.println("class is:" + type.getType().getName());
    The output of the system.out's above is:
    type is:Object
    value is:Object result
    class is:java.lang.Object
    quote:
    Invoke the receive method to receive data from the Web service. Inthe
    example,
    the client application uses an infinite while loop to continuouslyinvoke
    the
    receive method, in essence polling the JMS destination for messages.When
    the
    receive method returns data, the client application prints the resultto
    the standard
    output:
    while( true ){
    Object result = method.invoke( null );
    System.out.println( result );
    begin 666 allmessage.jar
    M4$L#!!0`" `(`!Q<7RL````````````````)``0`345402U)3D8O_LH```,`
    M4$L'" `````"`````````%!+`P04``@`" `<7%\K````````````````% ``
    M`$U%5$$M24Y&+TU!3DE&15-4+DU&\TW,RTQ++2[1#4LM*L[,S[-2,-0SX.5R
    M+DI-+$E-T76J! D8ZQG&&Q@J: 27YBGX9B87Y1=7%I>DYA8K>.8EZVGR<O%R
    M`0!02P<(SE1K#D<```!'````4$L#! H``````()T72L````````````````$
    M````86YT+U!+`P0*``````!12$0K````````````````"@```&%N="]B=6EL
    M9"]02P,$"@``````44A$*P```````````````!,```!A;G0O8G5I;&0O97AA
    M;7!L97,O4$L#! H``````%%(1"L````````````````8````86YT+V)U:6QD
    M+V5X86UP;&5S+W-O87 O4$L#!!0`" `(`#>&62L````````````````D````
    M86YT+V)U:6QD+V5X86UP;&5S+W-O87 O0VQI96YT+F-L87-SA55;4]M&%/X6
    M7R2$FA %4QP"I9<$.S82I)=0DZ9M*"2TAM Z#:7I318+%I$EC[0&\]#^I_;!
    MM&62R?2Q/ZK3L[X4%)S&,SZ[>_9\9\_EV]7?__SY# G,85]#!@4%10U#**B8
    M4V%JL#"O8D'%30WOXCT%[VO04)"+#U3<4K"HX0(^5%$:P1)N*_A(Q1T-!CY6
    M\(F*3S7<Q;*"SX:Q@E4%]S1<D;[ORW%-BL\U?(&R@G6&]&W7=\4=AD0N_X@A
    MN1SL<(:+9=?G&\UZE8</[:I'FF3==GV&\=SC\KY]8%N>[>]9%1&Z_MZ2!&HK
    M+8<WA!OXD8(-6E>"9NCP55>"1Y8]E_O"E$@=;^(MAK&.EZ9P/6LS#!H\%"Z/
    M&":EVO3M.ODU=VU'!.&1*2-T;8^A>,BK7K#G.F84V VS)D3#K-!LK6NP'/B"
    MM\1J%Z;@@8Y-?,F0B<,.>%@-(IF3")M<P5<Z*GC(<*UO9DDSRZ%*.)9TO^+3
    MG *2M7%T? W*=SKND_=,^C'W,FE9W52L>(2R!EL,BS*!DF5Y@6-[M2 2I5OS
    M\PL6;]GUAL>M+5ZM\/# =<Y.S<-HQU/PC8YM?,LP%8_YU(Z*VJ(H-.[4@FZ;
    M=#S&=PRCI^U[4-WGCJ#VU(+#&3OD,T=!4\'W.G[ CS'#K@,%/^FP4246O+AU
    MM[F[RT,&)>11TQ,E'0YV='#L*J"#:W"IX[V\HFZH74HP7#[U]1^%^MH./>[;
    M44UT29AH- FQF"N_F,/2>4W^O(IA9E"+.VU=[?=MQ.>':WXD;-^A$]_)Y<NO
    MPI!?->1[;B1D":9S+P=T;LI$+_QX<IVML1AG>F2A.^H%P9-F@^%Z;L#E&Y3G
    M\!X7ZUS4@AT&<R H'J-D>=>>P!,OVZ-(7/\@>$)UF8V]`_]7\K,T.J(2U:F-
    M@6QCIFOM!O0`N+Z@R+A=)T#:;C2X3X<57Y'M6>K)'H@>T:F.N?-V2WU2Q0\D
    MSC;DRB/2908=^(CNZ@P]TO(W!"9?+Y)OTVJ*1D9CZL8QV*\T(;J03'>4HQC&
    M-5PGB#3]"RDH-/YR@J'M8R3*!2-II-I(;Q4,Q5#EY'<,KQ=/H-'V2!MZP7BM
    M*-4GN+!=.,;%C3EC] ]<&L)S&*5D-FE<;F.LE,JFDD^1V4X8XY4V7G^.B5+Z
    M-V1/<(7<3!I7VYC*IDFT,=W&&Z<QWH1.<@PJQG$)6?HD3&(:5Y$GN4#IEBC)
    M>Q3])F;I)N?P,^W,$B))^!S]\YUBW/@74$L'"(09M1:E`P``QP8``%!+`P04
    M``@`" `WAEDK````````````````*0```&%N="]B=6EL9"]E>&%M<&QE<R]S
    M;V%P+U-E<G9I8V5"96%N+F-L87-SC53I3A-1%/YN%Z8=1@3*8JW%!<0I149Q
    M`2FB4*D6$8@E)/Z<E@L,:6>:SK2I3^0?8]3$8C3Q`7P2G\)X[DS3EK(YR=Q[
    MS_9]YYR[_/[[XQ?\N(M-&1$DPQC$=)C$&0F:C "2(=P3\WTQS,IX@(<A/!+"
    MXQ#FQ#P?A/OY_\AX@@4)*0F+$IY*6&+P%YPZP]7U0[VFUS5^F-=RW+8-RTQ;
    MIL/K3HJA9]$P#4?XJHD=AD#:VN4,E]<-DV]42WE>V=;S1=+T4O1RP3%JND-2
    MF*2WO&35:*W0>DLG6,\T8'/G. M#7#T[!<$JX-(5[L;+J_4"+SOD84MX1C(O
    M'%@YIV*8^PR3'I!6U,U]S5.F$B=5#)*(RIK$'5"SB:R@($6F:.FD"JK93")#
    MT#FK6BGPC"$*[,_Q2LTH\!6NFS,"4<$HKB@8QHB$YPJ6L<(PTDVU4MW;XQ71
    MGE:6"PK2>*%@%1D)+Q6\`M&'FOFXQK5F56XZKN:UA'4%;[#!$&E3M#K!$.5U
    MO50N<ENS+;VL=>1*F;<C-O.'O$ 5#I]HM^<:;>N]?G=0=,#DWML.+]&9L*H"
    MS&NP86E;5)]#57*])(Z.7BYS<Y=A^K]VQ6L5Q86<UGX.J:?N7N040MK3LI"*
    ME.KP:81TCF*TUV?SQM3,.=:.\K</B)#J"MI%SLOB"*TE=G"3+F<$E#/]/G$L
    MZ-:%:4VGA,8H27&:&<W!J2.P+[2@NT=CCZL4KK&6:]2UXJ1;'XW7+G8;H#%^
    ML9O(=0S7FVZW*&^?L$TEO\'7]I5=[2B"+N -&GWGP\:H&:#'AQ$DPS@FF@1S
    M])8)J-A7^'\B\.X(P<&>!J0D_0V$&@@G/W>QCE&@R.\V)L\!D0D@UD"O!Q+[
    MV 4R3H$BASM0FR F@01H7NH`48Z!=!DF&KCD&8;0]QW]'Q#8F/A$:+.81\KM
    MM^ ;@7AO5>)(D"5)EFDLTH/-2 ;E,O4/4$L'".G,>(S3`@``T@4``%!+`P04
    M``@`" `WAEDK````````````````*0```&%N="]B=6EL9"]E>&%M<&QE<R]S
    M;V%P+U-E<G9I8V5(;VUE+F-L87-S;8X];L) $(7?\.,-A 32A98J%&0/D"Z(
    M"! 2$IQ@64TB6[;76CO(9TO!`3@48@PH4%!,\;WYYFGVA[\=ZABAI_"HT%%X
    M(@36LRF8,'@;+K@T219SKG-G,KUFOPTMS]*"_;>Q_$%H3TK+61&Z-%=X5NA*
    MM':_WO)7&$M)[W(S=0F_1V9K"/V[I94@>J7HV*0_>KF)V!:$ERHJ-4<;/9E_
    MGK7^-1N?OOW_@O!ZJO!)J%><N)M50"#49.H`J$%HH"D4" 62*SP(M81J:!\!
    M4$L'".(!=>+,````&@$``%!+`P04``@`" `WAEDK````````````````+@``
    M`&%N="]B=6EL9"]E>&%M<&QE<R]S;V%P+U-E<G9I8V5);G1E<F9A8V4N8VQA
    M<W-ECMU*PT 0A<\T:=?6OZH(7GDIR87N`W@G-)!2$,P3;)>Q;DBR(8DES^:%
    M#^!#B1/%'^K%,',^YLR<M_>75P2XQJG"D<*QPIPP8_ODLZYQU89P%:URLS6Z
    M,-5&?\';^#\2UZ*W7'?.5ZW""4$-5]*J(X11&J>$Z0"2PAM!XRA-XD1,F7]N
    M+">N8,)YQLW66183-X_&\LWPAG#)O2GK@EO=>E/KW2W"_#?._3IG*P_.!M1K
    MSM=ZL;S[IA>?BTWI] .7ON.?R!,"8205``A"R8RQJ(FH4+H2LH?I#IEA_R^1
    M.I!YA,,/4$L'" `AY6?E````5@$``%!+`P0*``````"*94DK````````````
    M````$P```&%N="]B=6EL9"]-151!+4E.1B]02P,$% `(``@`-H99*P``````
    M`````````!X```!A;G0O8G5I;&0O345402U)3D8O96IB+6IA<BYX;6R-4LMN
    MPC 0O%?J/[A<(E5-MNFQ<H/$0RI5'PBHJIZ0DRS"B-BIO2#X^SH0#!20>LO.
    MS.Z.9\.;JV+.EFBLU.JI$4?WC69R?<5O.A_MT7>_RW"6AC-A6/^S]=IKLR $
    M&"X4>Y.9T79M"0M[QWHJBP`ZHP[K*D)3&FF1O8BE:*%0EL51#-!]#U@P)2H?
    M`6:.BNQ"19DN8/: "#GE%NI=XW@<1PX(*B,UYCX9X^BGAVDU>8,ZW**M_-=E
    M)71=2A28?&$Z1+.4&7+PH)=-M:MP)8IRCC:R6I11K7YV#(<-[]4&"TT7]+W*
    MV414:VK9D9=L+JP]WUE%M/6V%?F^^E$AK4M,AB0(7:OE<(1[-1F7A\C(,VVM
    M2$B%AL,)5\<&A[DY#^?2Y<X3%NE\'>9H,R-+TF;7G^U6A <;]I8*I*G.??WO
    ML_C64"J:)(--GAP.L5/I9L*M5QW?&?Y8V:85"B(CTX4[U@!_%M)@7F=UP.RB
    MNOQ6#N<CXK#_=W\!4$L'"$[06?EX`0``9P,``%!+`P04``@`" `VAEDK````
    M````````````)P```&%N="]B=6EL9"]-151!+4E.1B]W96)L;V=I8RUE:F(M
    M:F%R+GAM;'V0O4[#,!2%=R3>P>V2!?LF0Q<44C5-AJ(**K458G2<2^LHMB/;
    M(N7ML3N :('U._?\V/G\I'KRCM9)HQ^F&4NG\^+V)I]4S\O=ZZ8F(S:].4A!
    ML6MHQRW9[,OU:DD2"E#6"[+]<!Z5NR,K+1A M:O("S;K:"$S%O)(_5@"U$\)
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
    M31?TO<K91%1K:MF1EVPNK#W?646T];85^;[Z42&M2TR&) A=J^5PA'LU&9>'
    MR,@S;:U(2(6&PPE7QP:'N3D/Y]+ESA,6Z7P=YF@S(TO29M>?[5:$!QOVE@JD
    MJ<Y]_>^S^-90*IHD@TV>' ZQ4^EFPJU7'=\9_EC9IA4*(B/3A3O6`'\6TF!>
    M9W7 [**Z_%8.YR/BL/]W?P%02P<(3M!9^7@!``!G`P``4$L#!!0`" `(`/-;
    M)"L````````````````8````86YT+W=E8FQO9VEC+65J8BUJ87(N>&UL?9"]
    M3L,P%(5W)-[![9(%^R9#%Q12-4V&H@HJM15B=)Q+ZRBV(]LBY>VQ.X!H@?4[
    M]_S8^?RD>O*.UDFC'Z892Z?SXO8FGU3/R]WKIB8C-KTY2$&Q:VC'+=GLR_5J
    M21(*4-8+LOUP'I6[(RLM&$"UJ\@+-NMH(3,6\DC]6 +43PE)CMX/]P#C.+(&
    M.1-&@4,;RV'LW2Q+H?4M7#:R`).XZ5+XR;1'.UCID(9L';5XIKG"(@S:AAXI
    M,(<O& X$%T>I#[1%)ZP<O#E'*GXZ1S@J-7VSB'0PIB^R-,WA#RVXX/>P3K?R
    M>L0WC<[_WG#U&P%^`E!+!PASJ@1!\0```+0!``!02P,$% `(``@`1H99*P``
    M`````````````!(```!A;G0O5V5B4V5R=FEC92YE87(`,T#,OU!+`P04``@`
    M" !&AEDK````````````````% ```$U%5$$M24Y&+TU!3DE&15-4+DU&\TW,
    MRTQ++2[1#4LM*L[,S[-2,-0SX.7BY?)+S$VU4BA/3=(M3BTJRTQ.+=8K3RQ"
    MR/BZACCJ>OJYZ2<6%.1D)B>6`#7K5>3F(%2$IR8%0[3J94%T`@!02P<(J46S
    MIE8```!M````4$L#!!0`" `(`$:&62L````````````````0````=V5B+7-E
    M<G9I8V5S+G=A<H2T8Y NP-:LV;;=NVW;MFW;MK7;MJVW;=O>;=NVK7O.G8B)
    MN1$SWU1%1OW-6D^N5)0!!4,#@OK/%0O3H@'Z?QRT_TA.3%6(3DI>G$%.2%Y*
    M7$Q%E5Y._%%N:E)6AHY^'EZ&CGIF:K9)F7&)9>_XX/A!9DJN11E*00Y&GHYZ
    M4E9^F8%!?F)^DIJ^GSHS,SU)NS!=*2D[F/3Z`G!Y?EIJD)>5DIR?EUFM$4@;
    M+1=>9Q-!HAE=5YQ?EFWC&)%7AZ/^J!@K/3,A.TTS/RE-"Q()#*0H`PEUATUO
    MXO4?8PO_D>IW74TC#S%C%S-G=RL2,P</%U);>VL7Q6EW.89,1K@?R+ `)
    M#,TJD$V[8?)@%+05> C"5J3AJK[*G"4R7/2!M%/JYUM22_[QO+WG:D'EZ.R<
    M[R&RE*L3#<'7*C8\$/(+CAO2@^Q(P@8);N=+-YW0`#JR7KA%>^I6E'TQ+L$J
    M-#F[35EW-W+2`[-'"2%Y$$T3*;G]K-!=I?_66VB+.UCU9QZ1.S!5/\7E#M3!
    MC0I:/&2TS#E,DUSZW18"]AKRB0$48D5N>>'4A8R$6>O=.%B?/CWX.!NH$P\A
    M_&*UK>Y0T%$%*W[#M-Z-5B# -MC\^I'I?M'$<-P*=^*^:&R',//,2ZDITL_C
    M(YSB$\?CXQ3DEL4%CI66PWGX]ADMA*A$59B]R<0U-//G;Q^Z9TH,5<L05$&Y
    MOLQ F8I4&AG_WQ+%0+:DEL>5U&:%*R :BSRI;RM[-O>8=D8L+@^AMLT":%1^
    ML4X;Y>W(OHPRBZ7 !IN",2F9RP2#5T];N)O"\;\1`W+ETK>'[@5M9)S3#)]"
    M\"'7@RGH4>.YTMX\24,7L,!K,#J%3"7<:[$7%4B4:^S?=)LZ(VW35^6XTB5R
    M/F4Q.LL>53<1O=;V403^F.049?*Z&^'>;1V^:9Q^=23VO%(B9TY\IQ=4+-S7
    MS??5&QN8(C)'WQD&/K%@#1)P`KVSGIG2U*LUQ.7K035R$>P&T?]8RB9L$3K@
    M4!HR'\Z_23^)"2/M=,O<Z&,A:B7]`-;WT[G?=8Q%'ZBPC<'S;&\CIQ9O6\TY
    M"/0L3R.'+/A5:P%!92U'D3OB\#1M6BT%3"W\L>QM)"V?!F^5+;[S@ COL6R3
    M18%B&>Y9*^T78WL6O5T[66_7S 5<O*S/O^(\I<!CH#O+;+%C$_-V:8B;U/+^
    M`Z6&")!R`DP!VG9RJZ93`O^--+4P'$02"!!0"^S_%>_S/25O:F9I[TEJYV
    MMDT3E!/3#4U2_Q0JFILF&%MA_^_]:YF'=+:3#DSBRG1GCX3!%JNP:KTX'J'B
    M\M8:`;]PWQ^@YV?_B'1G_R#T,F7S]OZ8X,JL\"+SUHH4NW"'8A>MX!^7]8N(
    M_3"\!/ZORV@"@1.3_W@(_1\7[[^=H2$F_+\KP\/,V-;!PLJ$WM/.UB]^(&J0
    M$4WL-?0]W&(UF3<S-)H(K?):& G=%2G=ZF,)+3N,5//+AV6<4'ZD>I /\\;+
    M6+7:?/.[,R2OTL5C*6H$,7EE\,.B,V.6T"QBD3E\>AG2^IMB*O8@8J3U+YY:
    M@H[/BC3$-G;&'9-QARP17ZAA'_)G[RFZ5,"SKAL=NX&H9OC&X:(F"5Z\5199
    MY)L#,@O0_IE@7 RQ>K*&_.9<!VU01'G%&I)$-D\`:T8BG9F2E\A-$3JT+TC
    M]>B2MZ8?X%7-EX?FKN7N%I63]YZDXW]/Q&>GOW#N/_\-!_Z?)@+S'_V_PSH\
    M;OPO+AC'%3KZBBDI-:C_BQI=ZSPDS&;*R5^T(].-=5)J4[22TO7*RS)UTA.,
    M(\!%>!FYT/*%Q4D)0/TL$$ZM301J\XQB8_T,]!E$;BX<"V `A :L`\N*?P2A
    M3_^_&[-\J.'.X3\F8OY'<(C_)[C_,FM15;+99$3RY[@2L/3*<TL8,P*S2YX7
    M;$-/4GI11?M,HAQO3#@B_7Y-)N-I[3)UQ?.)>MH^O>7?UJ/_Y/ST;_MXYZ20
    MT"W3M7EX.WPQ<I(@I^IO5#^J&I<S,Z@>6O GADU5^;MN+9[G*&??G$9\*J\:
    M)7N.9OAC)TS.<_ID\9=/P-':1NRQ,N0;#1E&0]-RD=>'_[D_A$P+MH%4"FJ"
    M-BM8=.RKHZ\D*GW<=Z:D+QJ7!0M\=$O7V293(W59_6A)77>1/"RL%:W3=:M0
    MU,8AL2H[R":\=#4&1$F5<E]Y&IZ!9*_0,3K2J4\>WIX9R]!D(W#2^\HW8@R7
    M4=Z9?7!'/X&A.^W&H I%]*:#^FC$NGML=='YQ7%^9>?"E824^6S"L3D4P)\T
    MP.7+YJ#]D8EL_1DG5!'[M.S>>QHEI!(!%S;':)9_7*=BX#!!&;":>&*XR6U[
    M4/8[L+3L'\,+K[U 8+68RY%IO4<B_3LV-C>L"K,Y/8%D(8SN6<2CX;VM1 AE
    MD&#IR%K*O#/8VA17ANO6%*+\6G2_'!%./\4C#E$WKB2D[A3]W8!CH<S(X8JL
    M.R(W!X-AZ4(BC-^Z`2VSXC^+]!M-H8<=#KZ?YLB<L[A/<=U5='1+P@<3T[&O
    M)-.W=F 2;DEZ4VENE^M9\?T136;M=NM'&HP4KQIL=ER;@/D/L3^,PUY;NUI:
    M(Y3TDIWO,^$+Y+]9<C'@]T/\3U690?S_1=[$ULK,WI7>[email protected]&33H<U
    M56^WV6JW^1;ZGX>$V79SJOX:;M/==/?33XVO4MQC>_5[A\LDO^%WVV2F9477
    M)J^&$A0F# ;L?97F3ZD8Z),!_E)?6DY&)5)N2C=G<$Y"=TI[1A1U3XYG;6G,
    M(SF%;9W/>7Z0XS8[#0O'ZVC>,R?_&'/7Z/#(H7KB_4<AFC/[0G%D/"S6N4\B
    [email protected]>G@9@]1,K)R< %$``'4Y@L@'Z3S)S]^=Y/@AL=F[>NG;B\SBM4+
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
    M3S0@\F*A*0[$NS[CJ96WWGA04\C;X-: [!JBX%A5,E3B+F3IB]-S-V^)B9
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
    M2& .&9?CKI+E`, #@]#SPF58$.=W$*HZ[<Q8B#LU+LEU!9/[email protected]
    M'@/=X]7Q#3L$+!H*G"&]^W^58'_74C$&@A@YH(C#J.P6S]=NAN)\].1AY900
    MLPI]Y\SX3SM>#)#I]; >X?^BM3<;LISQ=)7YUQ5W$TKD> ;_TQ!8$9[3E9=:
    MC1:N>-8DW1*:$E+WNEWLM3#NT/@:; !@-%C?5;=I36;N&-_T"HW=(%?>,+^O
    MUH^L<J9I5!QAQM0)\%1KG<>]_<00^57[_T&0=I%SX'AQ,,&Z<;']?,3YL0`+
    M&",<$%6#/#1 T?@>$Q@A' F(%(H/H"#"I/B;2#<4$*'-U/:KLSY*K;-)`EOX
    M$ EVT?+/DST=3B*T5G -[:SY29PI]=]$@_881E3V^,4?%/L%]Y;%TA_:R!Q4
    ML7M$I(R[OPFJA:2>`AM_IL\],R>^/-<K4,>1`D$,O5@XF%?C9A/M2VC(N22A
    M:.#3@@PG!%%MBG[$03DJ,<1PJ^& _I(P7*$FP3<6MI 9+Z5#Q8>)"553;1/I
    M*W9%>NU9E1<&X:T@+I4Q&L;A2ZC;IM'3SS]EN<BQ1+O&!]1<T+4:%Z\BFRY,
    M$RI_9%B='*%69Z9&KO%*H/1TD1\?ES<(#%NOM6K1^W@M`]/?N2-,F?YLT3L^
    MW(Q,HU#;S0B883GYI3FH<V\O6;8HHE?8+UOC3BT0!Q+9.IG,OZ_*J^>R+/<`
    MA^4U1LU,HW&V-LYT/O'8/X;DM9U"$RQZ6X;G]+Z2!"TTF==N.^W5HE)A^M"6
    MWGRXZ+0@V/L_9M&<B*^XJ(LQNP4*%WZL.Y9\0P>JEV=T\EDWWVIUF8UV=LU:
    M:!UX-'L*_O[I4;,"5R _\.3,%&IXLMS@3YN5(]+ 40HL,/]KZ\L2(V,"G&D3
    M\B:6$Q+X-K"\I02$R=EWGUVM8ZL_PFG;O2)MH6GVKS.$H&>]A)^?!/Z'ZEYE
    M'#<-5'D$G QD'>>-*(@R084O(.[BHD>/)P8CM.Z][*0J'P>GSI8N:=OV7M)J
    M1$S2_&2!J,K&N2>8<Y,*TVD5<N:[_)S>&JVK0*:?1A%@%60(0RPP@[.X0XMB
    MV]L]&F5JTCJ^\ZQOS#<[EA_PSAY*5$M,2R@HF&3X.RSR\6M6159*^+/[IV;N
    M]VF'?Y74\J@6XYV$4 88LT\!$AU;*ECD=\@GV^I)8430.5.",Q4IFVX:32]X
    MGVO]DG__^-D^-M_.A4(-]PP>F#"22$V\G,B(Z%Z0@@SHY[BG(HM]BG)&:M53
    M`([VG$X_)]K$^:)-CG2X*;;6W* G'B]@>OL^-/+%%B=-9TERS>VMAIV7:II^
    MD>Z&9,#GJO]G+[=)_?L;=J[1E#5\1\VHUV_8`P^&QU^'*1K]E>ZXJ6)A+E_
    M+&S2\B(\E\*>@93/Z_5#U<&_K6NA&E9/`1_F,KYCI8>"VK=O3B*)]&H7"N5E
    MS:F_!9+?58(1S*;IS3#0EOE,=JAFY'(Y=W39K)RG;KL(#IB(:Q>#BB EO$K>
    M,D.7RABW7,K&/X3(2CBV!22SLB(/"V.H*@PN3EG7^022!+5HB8Y+3?/?\Q2.
    MGK4P&3$58_O2S) ZMU(XYX9&[%>S7$2MI*1SF1OX(\??P;69""!#0L++W]G1
    MS0`9TBSGQE^RR+7*->H"***/%O;+BZ72CN!(O']V^+A$Q(7$09#?BE*4&+\/
    M!SI<^#Z5UW,.;Z5(C*3DW@2$:[$6>?.Q$F4*Z2PL++^9V?8W+Z>?A[!!"B[U
    M[!$PNA!_\C>*5Q1U(RBQW$1M+J-,IT#PP,2B4YPJTZ%SA\/O5V&,6!DW;/V>
    M^=4J_C@$.*78N'5(`,!:.BU6^V&FS+P@#.$^_T!@D%2&'!O:S+B7'^#6+Z:X
    MY*TP=&"^'/B09C_7^&N0EBON"64J4ESW+29-NR_4JI%A!\!N>94N7IP*QJ^>
    MTIASOJB>JYFY`VNH)M5V>591Q# J)SU*R2U6+C*7_""[DJBI7LPJP"/ ]2+9
    M(%K4@]0!_<B?[\ZS9LK3S,,\FI=;BXAI\ALWV5^J79@L&"KGV?4=AK7AB[\T
    MUA15T^EH),U#PRQD+'1@]2;>X4G-EVF)*(L*2 !Q+!W\D0+;'#PF?(5I<Q%#
    M$RY]\]9WF23KL\N$T1H06H0QA+A=EV7Q.@2>>!I\F]@J')W^4PW&1E8Z<?YR
    MO 2XG;%("-^EK7H63K?'.NZR<\Q]!C\KD2ZXHMD0(?$W+DS>V-(@LSH+BU*"
    MZ2W>RY6LC1<PO6::&7QM)/79!J4Z04KKVL^SH:;$&VF[RV(P=VH('\*GZ/W(
    M7<+\R5BX0-+>H )1J=T:5A2E&7*E/X0I>%>A"D%AH9Y6P$/<5NRDAEZ/\C
    M=F$P[EE9$Y%=K\QSZD]1`KL2JFT2!2U9`,Z3)>^HL#E.*>(5SPZ#;8&6]O/7
    M^Z'TKGEWF>RR/RP3@R:#=*2]Y"=Q&8<H(U.2R2+IM\051J!W(PZ8FT[)4<C;
    M6)<P=H/J.*19Z@CEA<0K?<0=\5WFMHMJCD_?)?EJ,-%);J94*. ;=-\A+ISZ
    M5IK\=\0A*B '4ND[?F1A"&SOKJWKRV#2[" .+F+.`%C-+>G<S.I=5'[)1;LH
    M@*36$E!.,X=H=:?L,SQA%@#P>=;#$_75)DQ@$,Q=)HN",F[\6;E+B#1[\;UW
    M^EMTK)Q/-X#&$ .V"3S("UE6.5S+.8S?#=F"6S<&6(*--B-;)/NKY(C_FC44
    M- DKEIC@P5(T`VN@APPN7J B1O508GAL-%D?WQK)R&OG@NV4-89J*0D=('G)
    MBON1[%(\%([6[Z^F&^C.LVJ:GGU6P)Z=]E:4S)LE7J9ATVDZ/5;^&5MX&YD-
    M&G X$,4.W5V 9V,.SZ&[F\Z.^<M6)C1O*R8[4VEX@O0QQ(ZY%FKF:Z;[D9R5
    ME6*RY:W4WXAU4_A#4^N]S?+&=9Y'"XU4`C>Y+3@*?VDE,N:KE,,[\/RW];Z?
    MME3P3AD_>[QWG<$`2^ 0\HD#C:DT$;4ZH 2G^3?-?O@G8!5VOZ\UZG?C!R=>
    MUXZ28/G8##AJ2J2#,:(!B5%<6Y&QW!0(J1\(#6XE!AP">2)T'34*$!D=:LD!
    M1TZ]:XQ5DY3A39J2I4W]=Z&R4D]N+*O6?+WNI/+*(GK F>;[97]L-GVW\6@B
    MJ S+GV-SAL.704=.@P[]N+ 4@$_(=1G[ANK-DR>G*^ZCRO/0M3@YV<9N[
    M[!-.L=6RLV:)='';LJ33PJNC$L#.G0K88=VV660M86[>P9G'PB((K'S,QC<J
    M%WP7P5G:0@E_$%JM\'%%*%5QL[GQ$J: O57L@+IE$S11_'"%XRX>7#Q3GWXN
    MW,?<R0I55CS'V H*Y2^XQ[F:"$L2_*2Y4BN\P-R"$(%5W?(.;56ZA[F];K"8
    MV*S3,?S<P'!KMXT4R'E>KP\;R)X.](R-7G1164D%1KAS5'_*/F7;-0'W(*2@
    M7&M %R<ZH>R!&-G?7321*509(#!R+(7=[(\W=#Q"T<Y1T%OU8R/UB8D^2:>-
    M]MVI"1C&J,G"]_3VIYKUG1SUJSB[%23HR="/-/6_G&X74A_.UJ^P\G,E[6:(
    M#.=O'8UBV*MWD1B3BZ.LZ:./X,G.`G-+9L"OYQ';K\P!B<"5#,Z=$0_F5W-T
    M/KZB8+^R4Y,:V\&WBLC3K@HE5)P!H7S]EMOUBD&@S*'_!+K-C-E=7@XDZ";.
    MIR#ZOB>B>G)PVW. WIYEK/"SP7@ST'8R$';R)=T:,MX+WGCJ?>H&PTIT2N;+
    MXD31D)\%&^X2UYT=,9FEZXS':PR@W)S1[_T<25:XCCV%*J PC!%!#.G;)/EA
    M/0JX6/67SN^,,WBS]H,ZR3;D"DFM6+B5*M>_72S=N;HOK=W)4BSC698O^(3&
    M`^:_I+ -QO"O*#^)S=2X^'E0OXXEE'2P`K%<W0JXC\)5<CG_LJX:SZ12KI*+
    M:_FBS4](U_!1^9DVI#O#QC:X026W="Z?-114O=*X&28I7.'F,HXP\([?JO)%
    M*Z@2F%1\EC(V3:3V6:ZAR%=9PII=F:=T!=LU0LYKXK.6XGW;:[;:Q-H.<FD_
    M\:ZX%Q\ON"\=.::<]$=8J> <\B_NMA1]=QUKI.`04:$,%Q\HC*[O\K.W(O
    MFU&?G0\PF,4*5_CNZ'K&VA#//Q#:V<?BFX=@T6M2\Z_;K0H@?3W/KC26EM!.
    M>X;)J02&[XRKNI#Z:*I,W*C<SV-&'Z+R%MX/[&*5[#$'&CI9E\$\C38@:9>A
    M7-=#*S6!BKQ1QGF]+Q:K?]=8]PR(ZEHV2=H+-$OD]K-%?NTRK!Y3)YRK4;L3
    M@U5\< VDJS;3?X>Q8$_=$O$T<A=?&N;X]PQ=K&[4ROAB['/(P:=)USHD(:,^
    M:*YDG1YA^\#WGMPT`ZLCEO>&X?*)-H/;\D*1X_[Y[^4FH5F+5.T.*4]$6MI:
    MNO,"Q:4617SXS0GL19AJ#-&8W7:%^,:>K'.2LVZO/\*P$G,Y0VVJB XD.]"M
    M,,@[9N"N,- [?$!$OU7 5OKF.ALV[7:)VC^ <\$6GRXB!J5">JH=HX47^/P:
    M]]K[Z^;]TOH20;%HG1:=87S"]E1AA6[#L JH.G[W76WANB71R-;NY\'O8SHA
    MK.)N"N@U]V_P;A!BJ%7)T649Z#W\Y #8C")HE/WM&N'M^_4^]FRM`L4]IHZ/
    MZ>JQWGH?7+#)XC\-A:!&DN*AYD@2\JJNDDK^%!::R_[LR2IK'J/8!'6_@2=$
    MV_V!,'>Y&&A!?9B@.?O9[WY_@@V1WLF\4+I@$P?D&XB?J:R.^K^8$E%U&3MU
    M*$+L\+3'/9Q>W0?!WM5_EN3=*8!%H$B]20<HF*9PO9Q"QO+C#2L^KEH&4?E)
    M2P))]<X)A3:1,'E=;H!;/?;KPOD;7[NCF1$(B(FGSI4;6[&@CA]2[@^@-TP\
    MV-T$BIT5?L^77B(VP"L766X_=!(\Z*9&2*\E"MU1227D6OK9.?/9J21-I I(
    M+U?X44 3[%XHQ6/ =?1[K2@2+1K3R\B?L9!'[_SE6%@2"6 C6V6._A5NYV+%
    MWL/E18*$FM I%'_9<G(#) A5`KY [N.5Y885#*]:@N&_5OZY+4G2" S"ED-'
    M<7AZJL6<?I.9():1=4=HAR/:#>P3J!(>3 '35G34V"EABRH+&72@8W@XY(I(
    M7[X7<@I)S4[%&VB]0Q#!\I&%EIA%Y!I'5NK-Y(JE3G]+4UMO7X]\2VL7MJ5\
    M7'0E&'G.LR8KA E?[S.%&W4=.V+.):>3:HC;PGG=.4)4#4Q>4+(K[DR3??BN
    MD2=,N3H&V=B(S]?Y1E\&(.D3XTUJ@+L<MQ9PJ'6YAMVC?'EN2E&'"V$)]8P8
    MA2/(&C8\V:SGP9?<#IM-X\P:*KQFFM 8$G.C&3C&GB40V)TZ/G?$D<C#SD/J
    M>YZ_8%6I%:6FUN;O=";+.U5)5COQX3&V?M"JJA:W)2MK;#<YJG\G!DV0'V]R
    M,^<VC-WD!<3D2G%;GE+$&>SJ(^D<89^P7.N <9V&Y%"=TLYM<OLCK?RI:JT+
    M2-7_FQE^W()5^<;8M#(=-->Z$&K2;(%CIOO0-P/N0+Q[GHP#G(E!9GP"R#%/
    M.BW7"8[5YTB=S&5>

  • Is there a SAP training course for HR ABAP programming?

    Hi Friends!
    I am new to HR ABAP programming. I heard that HR ABAP programming is different from other ABAP related areas. Is there a training program or course offered by SAP decicated only for HR ABAP Programming? If yes, please kindly post the links in your replies and I would be glad to award points.
    Note: Please post only relevant links.

    Welcome to SDN.
    Check follwoing links -
    <a href="https://websmp209.sap-ag.de/sapidp/011000358700003520202006">https://websmp209.sap-ag.de/sapidp/011000358700003520202006</a>
    <a href="https://websmp204.sap-ag.de/sapidp/011000358700003520202006">https://websmp204.sap-ag.de/sapidp/011000358700003520202006</a>
    It is the list of all the course in HR -
    <a href="http://www50.sap.com/useducation/find/results.asp">http://www50.sap.com/useducation/find/results.asp</a>
    Regards,
    Amit
    Reward all helpful replies.
    got it this one is for you -
    <a href="http://www50.sap.com/useducation/curriculum/course.asp?cid=60176624">http://www50.sap.com/useducation/curriculum/course.asp?cid=60176624</a>
    <a href="http://www50.sap.com/useducation/curriculum/course.asp?cid=60197174">http://www50.sap.com/useducation/curriculum/course.asp?cid=60197174</a>
    Message was edited by:
            Amit Khare

  • Abap program standards

    hi all,
         i need to design flow chart for checking for a program whether it satifies the abap coding standards or not. who to do it. if possible send me graphical representations [flow charts]  or links to find programming standards.
    some of my requirements in that folw chart are
      1. how to recognize a blank space in a given program,
      2. how to recognize a comment,
      3. how to check wheteher a keyword is used or not,
      4. how to identify the ' :' symbol
    thanks & regards,
    suresh babu aluri.

    plz go through this documementaion,
    i think its helpful.
    ABAP Programming StandardsContents
    1.     Objective     5
    2.     Naming Conventions     5
    2.1     Codes for naming conventions     5
    2.1.1     Module Codes     5
    2.1.2     Free text     6
    2.2     Naming Convention of Development Objects     6
    2.2.1     Package     6
    2.2.2     Executable Program     6
    2.2.3     BSP Application     7
    2.2.4     Logical Database     8
    2.2.5     SAP Scripts /Smartforms     9
    2.2.6     Idocs     9
    2.2.7     Transaction Code     10
    2.2.8     Function Groups     10
    2.2.9     Dictionary Objects     11
    2.2.10     Message Class     11
    2.2.11     Enhancement Projects (User Exits)     11
    2.2.12     LSMW Objects     12
    2.2.13     Classes     12
    2.2.14     BOR Object Types     13
    2.2.15     Screen / Transaction Variants     13
    2.2.16     Area Menu     13
    2.3     Naming of Sub-Objects     13
    2.3.1     Program Sub-Objects     13
    2.3.2     SAP Script /Smartform sub-objects     14
    3.     General Programming Guidelines     14
    3.1     Modification Logs     14
    3.2     Program Organization     15
    3.2.1     Executable Programs     15
    3.2.2     Dialog Programs     15
    3.3     Package     15
    3.3.1     Adding Components to existing objects     15
    3.3.2     Creation of New Objects     15
    3.4     Program Messages     15
    3.4.1     Adding Messages to existing landscapes     15
    3.4.2     Creation of New Objects     16
    3.5     Dictionary Objects     16
    4.     Structure of ABAP Programs     16
    4.1     Type     16
    4.2     Status     18
    4.3     Authority Check     18
    4.4     Program Structure     19
    4.4.1     Declaration data for global data, classes and selection screens     19
    4.4.2     Container for Processing Blocks     19
    4.4.3     Calling Processing Blocks     20
    4.5     Screen Flow Logic (Dialog Programs)     20
    4.5.1     Place the AT EXIT COMMAND at the beginning of the flow logic.     20
    4.5.2     Use FIELD and CHAIN statements to keep fields in error open for correction.     20
    4.6     Main Program     20
    4.6.1     Events     20
    5.     General Coding Standards     21
    5.1     One command per line     21
    5.2     Indented Source Code     21
    5.3     Extended Syntax Check     21
    5.4     Reusability and Modularity     21
    5.5     Text Handling     21
    5.6     Usage of System Variables     22
    5.7     Chaining Statements     22
    5.8     Common Routines     22
    5.9     Dialog Messages     22
    5.10     Function Keys     23
    5.11     Enqueuing and Dequeuing Data Objects     23
    5.12     Error Handling (SY-SUBRC)     23
    5.13     General Conventions and Hints     24
    5.14     Parameters in Sub-Routines     24
    6.     Performance Standards     25
    6.1     General Tips on Performance Tuning     25
    6.1.1     Avoid Redundant code     25
    6.1.2     Subroutine Usage     25
    6.1.3     Case vs. Nested IF     25
    6.1.4     Using the MOVE Statement     25
    6.1.5     SELECT Queries     25
    6.1.6     Using the READ statement     27
    6.1.7     Hashed table     27
    6.1.8     Transporting     28
    6.1.9     Using LDB     28
    6.1.10     Append Lines of     28
    6.1.11     Use WHILE     28
    6.1.12     DELETE <itab> WHERE     28
    6.1.13     Using WHERE clause in LOOP…….ENDLOOP     28
    1.     Objective
    The objective of this document is to describe general programming guidelines, methodologies, Naming conventions and performance guidelines for all the programs developed for SAP Project.
    2.     Naming Conventions
    This chapter describes the naming conventions to be followed for naming the programming objects for SAP project.
    2.1      Codes for naming conventions
    The variable portion of naming convention is given with Code ID given in angle brackets(<>). Use the following tables for replacing code IDs with codes in the object naming.
    2.1.1     Module Codes
    Code ID:  mm
    Code     Description
    FI     Finance
    CO     Controlling Module
    MM     Materials Management
    PP      Production Planning
    SD     Sales & Distribution
    QM      Quality Management
    PM     Plant Maintenance
    IM     Inventory Management
    WM     Warehouse Management
    BC     Basis Module
    BW     Business Warehouse
    WF     Workflows (Master Data Management)
    HR     Human Resources
    EBP     EBP
    PS     Project Systems
    PCP     Synpro: Product Costing
    PAP     Synpro: COPA
    DP     APO :  Demand Planning
    SP     APO :  Supply Network Planning
    DS      APO : Production Planning & Detailed Scheduling
    AT     APO : Global ATP
    TP     APO : Transportation Planning/Vehicle Scheduling
    CI     Core Interface
    LC     Live Cache
    2.1.2     Free text
    Code ID: ffff
    Developer should replace ‘ffff’ with meaningful text. The text can be multiple words separated by underscore.
    2.2     Naming Convention of Development Objects
    2.2.1     Package
    Naming Convention: Z<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with Module codes given in section 2.1.1 above.
    2.     Replace <ffff> with the sub-landscape of the Module that this Message Class caters to as illustrated in examples below.
    3.     The maximum permissible length for development class is 30 characters
    Examples:
    Dev. Class     Description
    ZFI_AR     FI: Account Receivables
    ZCO_CCA     CO: Cost Center Accounting
    2.2.2     Executable Program
    Naming Convention: Z<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with module codes given in section 2.1.1 above.
    2.     Replace <ffff> with meaningful text as illustrated in examples below.
    3.     The maximum permissible length for program name is 30 characters. However, the name should be restricted to 25 characters to accommodate appropriate Include naming as described in 2.2.2.
    Examples:
    Program Name     Description
    ZFI_VAT_RET     FI:  Report for VAT Return
    ZMM_AUTO_GR     MM: Automated Goods Receipt
    ZSD_XX_STCK_SHORTAGE     SD: Stock shortage report for stock allocation
    2.2.2.1     Includes for executable programs
    Naming Convention: Z<mm>_<ffff>_<Inn>.
    Notes:
    1.     All includes of executable program will be prefixed by Z, followed by the same program name as described in 2.2.2 above.
    2.     Replace <Inn> with include type and sequence number. Use the following table for includes.
    Include Type ID     Description
    TOP     Top Include.
    Fnn     Subroutine pool (Forms)
    Inn     PAI Modules
    Onn     PBO Modules
    Xnn     Other Includes
    The maximum permissible length for Include name is 30 characters.
    Examples:
    Include Name     Main Program Name     Description
    ZFI_VAT_RET_TOP     ZFI_VAT_RET     FI:  Report for VAT Return – Top Include
    ZFI_VAT_RET_F01     ZFI_VAT_RET     FI:  Report for VAT Return – Forms
    ZMM_AUTO_GR_TOP     ZMM_FR_AUTO_GR     MM: – Automated Goods Receipt – Top include
    ZMM_AUTO_GR_F01     ZMM_FR_AUTO_GR     MM:– Automated Goods Receipt – Forms
    2.2.3     BSP Application
    2.2.3.1     Main Application
    Naming Convention: BSP Applications shall follow the same Naming Convention as Executable Programs i.e. Z<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with module codes given in section 2.1.1 above.
    2.     Replace <ffff> with meaningful text as illustrated in examples below.
    2.2.3.2     Pages & Controllers
    Naming Convention: <ffff>
    Notes:
    1.     Replace <ffff> with meaningful text, that adequately describes the function of the page/controller
    2.2.3.3     Theme
    Naming Convention: Z_<ffff>.
    Notes:
    1.     Replace <ffff> with meaningful text
    2.2.3.4     Mime Objects:
    Naming Convention: <ffff>
    1.     A MIME Object can be logo for the company.
    2.     Replace <ffff> with meaningful text, that adequately describes the function of the MIME objects
    2.2.3.5     Controller and Handler Classes:
    See section Classes (Section 2.2.133)
    2.2.3.6     BSP Extension
    Naming Convention: Z_<ffff>
    Notes:
    1.     Replace <ffff> with meaningful text
    2.2.3.7     BSP Layout elements id
    Label:     lb_fffff
    Input field:     if_fffff
    Button:     b_fffff
    Text Edit:     te_fffff
    Text View:     tv_fffff
    Radio button Group:     rbg_fffff
    Radio button:     rb_fffff
    Check Box Group:     cbg_fffff
    Check Box     cb_fffff
    Tray     tr_fffff
    Tabstrip     ts_fffff
    Tableview      tab_fffff
    1.  Replace <fffff> with meaningful text
    2.2.4     Logical Database
    Naming Convention: Z<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with module codes given in section 2.1.1 above.
    2.     Replace <ffff> with meaningful text
    3.     The maximum permissible length for LDB name is 20 characters. However, the name should be restricted to 15 characters to accommodate appropriate Include naming
    4.     LDB Program and LDB Program Includes shall follow the naming convention Auto-Generated by SAP
    2.2.5     SAP Scripts /Smartforms
    Naming Convention: ZF<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with module codes given in section 2.1.1 above.
    2.     Replace <ffff> with meaningful text as illustrated in examples below.
    Examples:
    Form Name     Description
    ZFFI_EMP_CONF     Employee Confirmation Letter
    ZFFI_ANN_TO     Annual Turnover Letter To Customers and Vendors
    2.2.6     Idocs
    2.2.6.1     Idoc Types
    Basic Type :
    Naming Convention : ZB<FFFF>NN
    Notes:
    1.Replace <NN> with sequence number.
    3.     Replace <ffff> with meaningful text.
    Extension Type : ZX<Basic type name>_NN
    Notes:
    1.     Replace <NN> with sequence number .
    2.2.6.2     Message Types
    Naming Convention :  ZM<mm><ffff>.
    Notes :
    1.   Replace <mm> with module codes given in section 2.1.1 above.
    2.  Replace <ffff> with meaningful text .
    2.2.6.3      Process Code
    Naming Convention :  Z<ffff>.
    Notes :
    1.     Replace <ffff> with meaningful text ..
    2.2.6.4     IDOC Segments
    Naming Convention :  Z1<ffff>.
    Notes :
    1.Replace <ffff> with meaningful text as illustrated in examples below.
    2.2.7     Transaction Code
    Notes:
    1.     The tcode name is provided by SAP TIN The Developer must write a mail to SAP Tin asking for the T-Code name with a filled form.
    The form can be found at :
    2.2.8     Function Groups
    Naming Convention: Z<mm><ffff>
    Notes:
    1.     Replace <mm> with relevant module code as given above
    2.     Replace <ffff> with meaningful text.
    2.2.8.1     Function Group Include Programs
    Naming Convention: LZ<Function Group><Inn>.
    Notes:
    1.     All includes of Function Group program will be prefixed by LZ, followed by the Function Group name
    2.     Replace <Inn> with include type and sequence number. Use the values from the table given in 2.2.2.1
    Examples:
    Include Name     Function Group Name     Description
    SAPLZMMPURCHASING     ZMMPURCHASING     F.Group-Purchasing: Main Program
    LZMMPURCHASINGO01     ZMMPURCHASING     F.Group-Purchasing: PBO
    LZMMPURCHASINGI01     ZMMPURCHASING     F.Group-Purchasing: PAI
    LZMMPURCHASINGF01     ZMMPURCHASING     F.Group-Purchasing: Forms
    LZMMPURCHASINGTOP     ZMMPURCHASING     F.Group-Purchasing: Data Declarations
    2.2.8.2     Function Modules
    2.2.8.2.1     Normal Function Modules
    Convention: Z_<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with relevant module code as given above.
    2.     Replace <ffff> with meaningful text.
    2.2.8.2.2     IDOC Function Modules
    Convention: Z_IDOC_<mode>_<msg type>.
    Notes:
    1.     Replace <mode> with INPUT or OUTPUT depending on whether the function processes incoming or outgoing IDOC.
    2.     Replace <msg type> with the IDOC message type.
    2.2.9     Dictionary Objects
    Tables:      Z<mm><ffff>
    Structures:      ZS<mm><ffff>
    Views:      ZV<mm><ffff>
    Data Element:      ZDE<mm><ffff>
    Domain:      ZDO<mm><ffff>
    Table Type:      ZTT<mm><ffff>
    Type Group:      Z<ffff>
    Search Help:      ZSH<mm><ffff>
    Lock Object:      EZ<mm><ffff>
    Notes:
    1.     Replace <mm> with module code given above.
    2.     Replace <ffff> with meaningful text.
    2.2.10     Message Class
    Naming Convention: Z<mm>_<ffff>.
    Notes:
    1.     Replace <mm> with Module codes given in section 2.1.1 above.
    2.     Replace <ffff> with the sub-landscape of the Module that this Message Class caters to as illustrated in examples below.
    3.     The maximum permissible length for development class is 30 characters
    Examples:
    Msg. Class     Description
    ZFI_AR     FI: Account Receivables
    ZCO_CCA     CO: Cost Center Accounting
    2.2.11     Enhancement Projects (User Exits)
    Convention: Z<XX><nn>.
    Notes:
    1.     XX is the application area code e.g. for sales it is SD etc.
    2.     'nn'  is one up number for one application area. It starts with 001.
    3.     Maximum length of the Project name is 8.
    Example:  The name of the SD enhancement project can be ZSD001.
    2.2.12     LSMW Objects
    2.2.12.1     Project
    Naming Convention: ZM_<ffff>.
    Notes:
    1.     1.     Replace <ffff> with meaningful text
    2.     The maximum permissible length for Project name is 16 characters. But please limit it to 12.
    Example : ZM_VENDOR
    2.2.12.2     SubProject
    Naming Convention: ZM_<ffff>_<n>.
    Notes:
         Suffix Project name with a running sequence no.
    Example : ZM_VENDOR_1
    2.2.12.3     Object
    Naming Convention: ZM_<ffff>_<n><n>.
    Notes:
         Suffix Subproject name with a running sequence no.
    Example : ZM_VENDOR_11
    2.2.13     Classes
    Naming Convention: ZCL_[IM/DF/BSPCO/BSPHN/BADI]_<ffff>.
    1.     IM: Implementation Class;
    DF: Definition Class
    BSPCO: BSP Controller class
    BSPHN: BSP Handler class
    BADI : BADI implementation
    2.     Replace <ffff> with meaningful text: In case of Implementation classes, it should preferably be the same as that of the Definition Class
    3.     Example:
    IMPLEMENTATION Class: ZCL_IM_REBATE_SETTL
    DEFINITION: ZCL_DF_REBATE_SETTL
    2.2.14     BOR Object Types
    Object     Convention     Example
    Supertype     Z<ffff>     ZLVAPPL
    SubType     Z<SuperType><nn>     ZZLVAPPL01
    Program     <Subtype>     ZZLVAPPL01
    1.     Replace <nn> with a running 2 digit serial Number
    2.     Replace <ffff> with meaningful text
    2.2.15     Screen / Transaction Variants
    Naming Convention: <tcode>_<ffff>
    Where:
    1.     Replace <tcode> with the t-code that will be assigned to this Variant
    2.     Replace ffff with a meaningful text
    E.g.:
    For an SE16 variant for table KONA that will be used by T-Code Z_CH_SD_001:
    Z_CH_SD_001_KONA
    2.2.16     Area Menu
    Naming Convention: Z<mm>_<Main Menu>_<Sub Menu>…<ffff>
    Where:
    1.     Replace <mm> with the Module code
    2.     Followed by the hierarchical position of the immediate parent of this Area Menu
    3.     Followed by a Meaningful text for this Menu
    E.g.:
    ZSD
    ZSD_TAB
    ZSD_TAB_VIEW
    ZSD_TAB_UPDT
    Notes:
    1.     Clusters of Transactions should be introduced as Sub-Menus rather than as Folders
    2.     As a gradual process, the current Clusters that exist as Folders should also be replaced with Sub-Menus
    2.3     Naming of Sub-Objects
    2.3.1     Program Sub-Objects
    Naming of all the internal components of a program will be consistent across the project.
    Naming Convention: <Prefix>ffff.
    Notes:
    1.     Replace <Prefix> with the component prefix values given in the table below.
    Program Component     Prefixed by
    Program Constants     C_
    Global Variables     W_
    Types Definition     T_
    Global Structures     WA_
    Global Internal Tables     I_
    Select-Options     SO_
    Parameters     PO_
    Table Type     TT_
    Field Symbols     FS_
    Ranges     R_
    Local Constants     LC_
    Local Variables     L_
    Local Static Variables     LS_
    Local Internal Tables     LI_
    Local Work Area     LWA_
    Local Range     LR_
    Field Groups     FG_
    Container      CO_
    Macro     MA_
    Important: The Same sequence as above must be followed in the Data declaration part of all the ABAP/4 programs.
    2.3.2     SAP Script /Smartform sub-objects
    Naming of all the internal components of a SAPScript/SmartForm shall follow the same convention as for Programs (2.2.2), with the addition of the Field Label on the FRS. E.g. if the FRS has labeled a field for Sales Order Number as Field 27 on the Layout, the variable name should be W_27_VBELN.
    3.     General Programming Guidelines
    3.1     Modification Logs
    At the top of every ABAP Object Modified by a Developer, there should be a Modification Log Every Line Created/Changed by the developer should be Identifiable by the TR Number.
    ABAP Patterns: Following Patterns should be used for Uniform ModLogs:
    Nature of Change     Pattern to Use
    New Development     ZZNEWPROG
    In-Line Logs     ZZLINE
    Modification Logs at the Top of Object     ZZMODLOG
    3.2     Program Organization
    All the programs will be organized as described below.
    3.2.1     Executable Programs
    TOP Include: For global data declarations
    Form Include: For definition of all the FORMs.
    3.2.2     Dialog Programs
    TOP Include: For global data declarations
    Form Include: For definition of all the FORMs.
    PBO Include: Include for PBO Modules
    PAI Include: Include for PAI Modules
    3.3     Package
    All the related objects within a sub-module of SAP will be developed under a single Package.
    3.3.1     Adding Components to existing objects
    When adding new workbench components to existing Objects, the same Package will be used as has been used for the existing Components
    3.3.2     Creation of New Objects
    When creating new Objects or new Sub-lanscapes, Packages used should have the Naming convention as in Section 2 Above
    3.4     Program Messages
    All the messages within a sub-module of SAP will be grouped under a single Message Class.
    3.4.1     Adding Messages to existing landscapes
    When adding new messages for existing Objects, the same Message Class will be used as has been used for the existing Objects
    3.4.2     Creation of New Objects
    When creating new Objects or new Sub-landscapes, Message classes used should have the Naming convention as in Section 2 Above
    3.5     Dictionary Objects
    Whenever you create a Z table in  system always include MANDT field as the first field, except when the table contains client independent data. Also create the table with attribute Data Class as USER.
    4.     Structure of ABAP Programs
    4.1     Type
    •     When an ABAP program is run, its processing blocks are called. ABAP programs are controlled from outside the program itself by the processors in the current work process. For the purposes of program flow, we can summarize the screen processor and ABAP processor into the ABAP runtime environment. The runtime environment controls screens and ABAP processing blocks. It contains a range of special control patterns that call screens and processing blocks in certain orders. These sections are also called processors. When a ABAP program is run, the control passes between various processors.
    •     In the R/3 System, there are various types of ABAP program. The program type determines the basic technical attributes of the program, and must be set when created. The main difference between the different program types is the way in which the runtime environment calls its processing blocks.
    •     When an application program is run, it must at least call the first processing block from outside the program, that is, from the runtime environment. This processing block can then either call further processing blocks or return control to the runtime environment. When an ABAP program is started, the runtime environment starts a processor (dependent on the program type), which calls the first ABAP processing block.
    •     The following program types are relevant to application programming:
    Type 1
    •     Type 1 programs have the important characteristic that they do not have to be controlled using user-defined screens. Instead, they are controlled by the runtime environment, which calls a series of processing blocks (and selection screens and lists where necessary) in a fixed sequence. User actions on screens can then trigger further processing blocks.
    Type M
    •     The most important technical attribute of a type M program is that it can only be controlled using screen flow logic and run via a transaction code which is linked to the program and one of its screens (initial screen).
    •     ABAP programs with type M contain the dialog modules belonging to the various screens. They are therefore known as module pools.
    Type F
    •     Type F programs are containers for function modules, and cannot be started using a transaction code or by entering their name directly.
    •     Type F programs are known as function groups. Function modules may only be programmed in function groups. The Function Builder is a tool in the ABAP Workbench that is used to create function groups and function modules. Apart from function modules, function groups can contain global data declarations and subroutines. These are visible to all function modules in the group. They can also contain event blocks for screens in function modules.
    Type K
    •     Type K programs are containers for global classes in ABAP Objects. Type K programs are known as class definitions. The Class Builder is a tool in the ABAP Workbench that can be used to create class definitions.     
    Type J
    •     Type J programs are containers for global interface in ABAP Objects. Type J programs are known as interface definitions and are created in the Class Builder.
    Type I
    •     Type I programs - called includes - are a means of dividing up program code into smaller, more manageable units. The coding of an include program can be inserted at any point in another ABAP program using the INCLUDE statement. There is no technical relationship between include programs and processing blocks. Includes are more suitable for logical programming units, such as data declarations, or sets of similar processing blocks. The ABAP Workbench has a mechanism for automatically dividing up module pools and function groups into include programs.
    4.2     Status
    P = SAP standard production program
    K = Customer production program
    S = System program
    T = Test program
    Application
    •     Categorize the program according to the purpose it fulfills.
    4.3     Authority Check
    Authority checks will be carried out as given in the respective FRS’s.
    4.4     Program Structure
    ABAP programs are responsible for data processing within the individual dialog steps (ie. events) of an application program. This means that the program cannot be constructed as a single sequential unit, but must be divided into sections that can be assigned to the individual dialog steps. To meet this requirement, ABAP programs should have a modular structure. Each module is called a processing block. A processing block consists of a set of ABAP statements. When a program is run, effectively a series of processing blocks is called. Therefore, they should not be nested but modularized.
    •     Each ABAP program consists of the following two parts:
    4.4.1     Declaration data for global data, classes and selection screens
    •     The first part of an ABAP program is the declaration part for global data, classes, and selection screens. This consists of:
    •     All declaration statements for global data. Global data is visible in all internal  processing   blocks and should be defined using declarative statements that appear before the first processing block, in dialog modules, or in event blocks. Local data should not be declared in dialog modules or event blocks.
    •     All selection screen definitions.
    •     All local class definitions (CLASS DEFINITION statement). Local classes are part of ABAP Objects, the object-oriented extension of ABAP.
    •     Declaration statements which occur in procedures (methods, subroutines, function modules) form the declaration part for local data in those processing blocks. This data is only visible within the procedure in which it is declared.
    4.4.2     Container for Processing Blocks
    •     The second part of an ABAP program contains all of the processing blocks for the program. The following types of processing blocks are allowed:
    1.     Dialog modules (no local data area)
    2.     Event blocks (no local data area)
    3.     Procedures (methods, subroutines and function modules with their own local data area).
    •     Whereas dialog modules and procedures are enclosed in the ABAP keywords which define them, event blocks are introduced with event keywords and concluded implicitly by the beginning of the next processing block.
    •     All ABAP statements (except declarative statements in the declaration part of the program) are part of a processing block. Non-declarative ABAP statements, which occur between the declaration of global data and a processing block are automatically assigned to the START-OF-SELECTION processing block.
    4.4.3     Calling Processing Blocks
    •     Processing blocks can be called from either the ABAP program or using ABAP commands which are themselves part of a processing block. Dialog modules and event blocks are called from outside the ABAP program. Procedures are called using ABAP statements in ABAP programs.
    •     Calling event blocks is different from calling other processing blocks for the following reasons:
    •     An event block call is triggered by an event. User actions on selection screens and lists, and the runtime environment trigger events that can be processed in ABAP programs. Define event blocks for the events that the program needs to react to (whereas a subroutine call, for example, must have a corresponding subroutine). This ensures that while an ABAP program may react to a particular event, it is not forced to do so.
    4.5     Screen Flow Logic (Dialog Programs)
    4.5.1     Place the AT EXIT COMMAND at the beginning of the flow logic.
    Example:
    PROCESS AFTER INPUT
       MODULE EXIT_1170 AT EXIT-COMMAND.
       MODULE PAINT_1170.
    4.5.2     Use FIELD and CHAIN statements to keep fields in error open for correction.
    Example:
       PROCESS AFTER INPUT.
       MODULE EXIT_1170 AT EXIT-COMMAND.
       CHAIN.
          FIELD BTCH1170-JOBNAME.
          FIELD BTCH1170-USERNAME.
          FIELD BTCH1170-FROM_DATE.
          FIELD BTCH1170-FROM_TIME.
          MODULE PAINT_1170.
       ENDCHAIN.
    4.6     Main Program
    4.6.1     Events
    The Program MUST NOT be coded without the use of Proper Coding blocks
    •     Initializations
    •     Top-of-page during line-selection
    •     At Selection-Screen
    •     At Line-Selection
    •     At User-Command
    •     At Pfn
    •     Start-Of-Selection
    •     Top-Of-Page
    •     Get
    •     End-Of-Page
    •     End-Of-Selection
    NOTE: The coding for each event should be logically split into forms (subroutines). That is to say, each event will comprise mostly of ‘PERFORM’ statements.
    5.     General Coding Standards
    5.1     One command per line
    Each ABAP/4 command consists of a sentence ending with a period. Multiple commands can be on one line; however, as a standard start each new command on a new line. This will allow for easier deleting, commenting, and debugging.
    5.2     Indented Source Code
    The ABAP/4 editor has a "Pretty Printer" command to indent by 2 positions specific lines of code and add subroutine comments. Event keywords are typically not indented.
    5.3     Extended Syntax Check
    Extended Program Check (EPC) to be done on each object to make sure the code is Syntactically correct. There should be no Error/warning messages in the code.
    5.4     Reusability and Modularity
    If a block of code is executed more than once, it should be placed in a subroutine at the bottom of the code. This makes the code more readable, requires less indentation, and is easier to debug since the debugger can jump through an entire subroutine via a PF key. Also, when possible parameters should be passed to and from subroutines to make the purpose easier to understand and reduce the need for global variables. Always document the purpose of each parameter.
    5.5     Text Handling
    Text elements must be used to display any text messages.
    5.6     Usage of System Variables
    The system variables should be used wherever possible. The SY-SUBRC is to be checked after any function call, selection operation, etc.
    5.7     Chaining Statements
    •     Consecutive sentences with an identical beginning shall be combined into a chained statement.
    Example:
    Instead of the statements
    MOVE SY-MANDT TO D00001-MANDT.
    MOVE SY-LANGU TO D00001-SPRAS.
    A chained statement shall be used
    MOVE:
                 SY-MANDT TO D00001-MANDT,
                 SY-LANGU TO D00001-SPRAS,
                 SY-UNAME TO D00001-BNAME.
    5.8     Common Routines
    •     Standard sub-routines should be implemented as FUNCTION's rather than a FORM (ie. SUBROUTINE). A FUNCTION is easier to maintain and can be easily tested without a calling program. Standard SAP function modules are also available and the function library should be used to check if function modules already exist for a function that needs to be performed i.e.POPUP_TO_CONFIRM_LOSS_OF_DATA etc.
    •     Includes can also be created for re-usable or common code e.g. common data declaration statements.
    5.9     Dialog Messages
    Dialogue messages are stored in table T100. Programmers shall check to see if an appropriate message exists before adding a new message. Programs shall use the message-id which corresponds to the SAP module that the program most relates to.
    5.10     Function Keys
    PF-keys should be programmed to execute functions where required. SAP Standard function keys should be used where appropriate. The most commonly used buttons should be displayed as pushbuttons in the application toolbar.
    5.11     Enqueuing and Dequeuing Data Objects
    •     All database objects being processed by a program, for purposes other than for display, shall be enqueued before such processing is executed. If the enqueue is unsuccessful, then a message shall be returned stating why the enqueue was unsuccessful.
    •     Enqueue and Dequeue objects should be created via the data dictionary.
    5.12     Error Handling (SY-SUBRC)
    •     Return codes shall always be checked immediately after an event which returns a code.  
    Eg. Function calls, Select statements, Updates etc.
    •     The value of SY-SUBRC is 0 when successful and generally produces a value of 4 when unsuccessful (there are a few exceptions).
    Therefore, rather check SY-SUBRC with:
               IF SY-SUBRC <> 0
    than with
             IF SY-SUBRC = 4  (which is redundant and makes the system do a double check)
    •     Error messages displayed to the user must be clear and descriptive.
    •     Remember to group related / dependant steps together and to Rollback all changes for steps in that group should any one of them fail, thus maintaining the integrity of the system.
    •     Check whether an Error Log, (file), must be produced by your program and if so check on the format of the file.
    •     If any Error Logging is done to a custom table in the database then make sure this table is maintained and monitored correctly. (Dev. Note)
    •     Transaction SE91 provides the facility to create and utilize messages in their appropriate message class. Elaborate on the message if necessary, using the long text documentation for that message number.
    5.13     General Conventions and Hints
    •     There should be NO hard coding of values in programs – easy maintainability
    •     For amounts, use the CURRENCY command in write statements to automatically convert fields into their correct decimal format. The currency specified in the write statement is treated as a key for the table TCURX. If no entry exists for the currency specified, the system assumes two decimal places.
    •     For quantities, use the UNIT command in write statements to automatically convert fields into their correct decimal format. The contents of the unit specified are used on table T006. If no entry exists for the unit specified, the formatting has no effect.
    •     Use the ‘LIKE’ statement as often as possible to declare ‘DATA’ variables instead of an explicit ‘TYPE’ declarations.
    •     Try to use the ‘INCLUDE’ statement with standard SAP structures and tables for your structures and internal tables where possible.  If you use the include statement to include other program components in your code then document what those components are, what they do and how to use them.
    •     Try to make use of standard SAP Function Modules wherever possible rather than building your own. Use the pull down functionality in transaction SE37 to find suitable standard function modules.
    •     Make use of the SAP PATTERN tool to automatically insert the standard code for:
    •     CALL FUNCTION
    •     MESSAGE ID
    •     SELECT*FROM
    •     PERFORM
    •     AUTHORITY-CHECK
    •     WRITE
    •     CASE
    •     CALL DIALOG
    •     The standard date format to use is ‘DD/MM/YYYY’. (Dev. Note)
    The standard time format to use is ‘HH:MM:SS’.
    5.14     Parameters in Sub-Routines
    Naming convention for Parameters in subroutine is P_
    6.     Performance Standards
    6.1     General Tips on Performance Tuning
    6.1.1     Avoid Redundant code
    Avoid leaving "dead" code in the program. Comment out variables that are not referenced and code that is not executed. To analyze the program, use the Program Analysis function in SE38 -> Utilities -> Program Analysis.
    6.1.2     Subroutine Usage
    For good modularization, the decision of whether or not to execute a subroutine should be made before the subroutine is called.
    Example:
    IF f1 NE 0.
      PERFORM sub1.
    ENDIF.
    FORM sub1.
    ENDFORM.
    6.1.3     Case vs. Nested IF
    When testing fields "equal to" something, one can use either the nested IF or the CASE statement. The CASE is better for two reasons. It is easier to read and after about five nested IFs the performance of the CASE is more efficient.
    6.1.4     Using the MOVE Statement
    When records a and b have the exact same structure, it is more efficient to MOVE a TO b than to MOVE-CORRESPONDING a TO b.
    6.1.5     SELECT Queries
    The performance of  any ABAP program mainly depends on the ABAP Queries used in it. More optimum the queries , better the performance. Take care of the points mentioned nin the following sections while writing any ABAP queries.
    6.1.5.1     Using all the keys in SELECT statement
    When using the SELECT statement, study the key and always provide as much of the left-most part of the key as possible. The SELECT * command is to be avoided everywhere.
    6.1.5.2     Fetching Single Record
    If the entire key can be qualified, code a SELECT SINGLE not just a SELECT. If all the keys are not available, we should use SELECT UPTO 1 ROWS if we are interested only in the first record.
    6.1.5.3     Avoid SELECT-ENDSELECT
    Selecting data into an internal table using an array fetch versus a SELECT-ENDELECT loop will give at least a 2x performance improvement.  After the data has been put into the internal data, then row-level processing can be done.  
    Example:
    select ... from table <..>
               into <itab>
               where ...
    loop at <itab>
      <do the row-level processing here>
    endloop.
    6.1.5.4     Using Indexs
    Use indexes wherever possible. Tune the Query so that optimum Indexing will happen.
    6.1.5.5     Provide all the keys
    Give as many keys as possible in the WHERE clause to optimize the database fetching. Use the Index fields in the first position to optimize performance.
    6.1.5.6     Avoid “INTO CORRESPONDING”
    Avoid using INTO CORESPONDING FIELDS of Table. Instead, explicitly mention the fields. Else, The Table Fields should be in the same sequence as the selection
    6.1.5.7     SELECT statement inside LOOP
    Do not write SELECT statements inside the loop. Instead, use the FOR ALL ENTRIES Command
    Before using FOR ALL ENTRIES command, check that the
    1.     Corresponding Internal table is not empty. If the Internal table is empty, the statement will select ALL the entries in the Database
    2.     The Internal table is sorted by the Filed used in the Where Clause: This makes selection faster
    6.1.5.8     Nested SELECT statement
    Avoid Using nested SELECT statements. Instead, make use of different internal tables to fetch the data, and Use Nested LOOPS to read them.
    6.1.5.9     Select Distinct
    Whenever its possible avoid SELECT DISTINCT, instead select data into internal table, sort and use DELETE ADJACENT DUPLICATES
    6.1.5.10     Use of OR in Where Clause
    Do not use OR when selecting data from DB table using an index because The optimizer generally stops if the WHERE condition contains an OR expression.
    e.g.
    Instead of
         SELECT * FROM spfli WHERE carrid = ‘LH’
                                   AND (cityfrom = ‘FRANKFURT’ OR
                 city from = ‘NEWYORK’)
    Use
         SELECT * FROM spfli WHERE (carrid = ‘LH’ AND cityfrom = ‘FRANKFURT’)
                                      OR (carrid = ‘LH’ AND cityfrom = ‘NEWYORK’).
    6.1.5.11     Order By
    ORDER BY will Bypass buffer. So, performance will decrease. If you want to sort data, it is efficient to SORT them in INTERNAL TABLE rather than using ORDER BY. Only use an ORDER BY in your SELECT if the order matches the index, which should be used.
    6.1.6     Using the READ statement
    When reading a single record in an internal table, the READ TABLE WITH KEY is not a direct READ. The table needs to be sorted by the Key fields and the command READ TABLE WITH KEY BINARY SEARCH is to be used.
    6.1.7     Hashed table
    If the number of entries in the Internal Table is high then use Hashed Table with Keys to access the table.
    6.1.8     Transporting
    With READ or MODIFY Statements use TRANSPORTING
    6.1.9     Using LDB
    In order to improve performance in case of an LDB, individual tables can be excluded from selection. Under the section ‘Table Selection’ in the Documentation of LDB the fields with proper description has been given those fields can be set in the application report at the time of INITIALIZATION or at the START OF SELECTION. This can enhance the performance.
    6.1.10     Append Lines of
    Whenever it is possible use APPEND LINES OF to append the internal Tables instead of using loop and then APPEND Statement.
    6.1.11     Use WHILE
    Use WHILE instead of a DO+EXIT-construction, as WHILE is easier to understand and faster to execute
    6.1.12     DELETE <itab> WHERE
    Use DELETE <itab> WHERE…for deleting records from an internal table.
    e.g.
    Instead of
    LOOP AT <itab> WHERE <field> = ‘0001’
         DELETE <itab>.
    ENDLOOP.
    Use
    DELETE <itab>  WHERE <field> = ‘0001’.
    6.1.13     Using WHERE clause in LOOP…….ENDLOOP
    Use:
    Sort ITAB by NAME.
    Loop at itab where name EQ SY-UNAME
    Endloop.
    Instead Of:
    Read itab with key name = SY-UNAME.
    L_tabix = sy-tabix.
    Loop at itab from l_tabix.
    If name eq ‘bijoy’
    Endif.
    Endloop.

  • How to get a parameter from BPC and use it in ABAP program

    Hello gurus!
    I got a problem...
    SAP BPC will send parameters such as year, division, category, company code and so on via script logic to SAP BW.
    I need to get these parameters from BPC and use them in a ABAP program as a filter.
    This ABAP program will do several routines and return new values to BPC. It must be made on ABAP and I need to filter data to avoid performance issues.
    Does anybody knows how to do it? or have a example of it?
    Thank you in advance.
    Regards,
    Rubens Kumori

    Hello, I'm looking for a suggest.
    I need to pass two parameters (users can input them in a data manager package in bpc) to a BAdI.
    In this BAdI I write a code that store those parameters in a InfoObject.
    The problem is:
    - one parameter is for CATEGORY value. CATEGORY is a dimension of the application and I read the value with a code like this:
          READ TABLE it_cv INTO l_s_it_cv
               WITH TABLE KEY dim_upper_case = 'C_CATEGORY'.
    - other parameter is a generic DATE. this parameter is not a dimension of the application and I don't know how I can retrieve this value in BAdI.
          READ TABLE it_cv INTO l_s_it_cv
               WITH TABLE KEY dim_upper_case = '.....'.
    The data manager dynamic script is:
    PROMPT(SELECTINPUT,,,,"%CATEGORY_DIM%")
    PROMPT(TEXT,%SELECTED_DAY%,"Write the date (format YYYYMMDD)",)
    I also have a dynamic constant that assign the name %CATEGORY_DIM% to "C_CATEGORY" value.
    Can anyone help me?
    thanks a lot
    Edited by: Luca Novali on Feb 13, 2012 3:49 PM

  • How to Print the text in a Text Area Component

    It is really amazing how much information is out there for
    Flex but you can never find what you are looking for :-(
    I am trying to print the contents of a text area component.
    If I just do addPage(Component Name) it works but it prints the
    whole conponent including the scrollbars, on the page. I just want
    the text. If I try to put the component name.text in addPage(), I
    get a "1067: Implicit coercion of a value of type String to an
    unrelated type flash.display:Sprite." error. Does anyone know how
    to do this?
    Any help would be greatly appreciated.
    Dave

    Is there anyone who can help with this? I really need a way
    to print the results.
    Thanks.
    Dave

  • Error in executing ABAP program. Error occurred when creating dataset

    hi,
    when I use LKM SAP ERP to Oracle (SQLLDR) to extract data from SAP ERP server. I execute my interface, and it's stop at extract data step.
    This is message:
    java.lang.RuntimeException: Error occured in open tool execute method...Error in executing ABAP program...Error in executing ABAP program...Error occurred when creating dataset/abc/ZODI_13001_6001_GLOBAL.txt
    I tried others path name, tried slash or backslash. This is content in code tab
    OdiSAPAbapExecute "-UPLOAD=1" "-EXECUTE=1" "-EXECUTEBASE_RKM=0" "-ZRFC_RUN_INSTALL=1" "-ABAP_PROGRAM_NAME=ZODI_13001_6001" "-HOST=10.86.87.24" "-USER=sv_hoa" "-PASSWORD=<@=snpRef.getInfo("SRC_PASS") @>" "-SAP_CLIENT=800" "-SAP_LANGUAGE=EN" "-SAP_SYSTEM_NUMBER=02" "-SAP_FUNCTION_GROUP_NAME=ZODI_FGR_13001" "-CONNECTION_POOL_NAME=SAP_ODI_ERP_POOL_10.86.87.24" "-CONNECTION_POOL_SIZE=10" "-FILE_DELIMITER=<@=""+(char)8@>" "-FILE_NAME=ZODI_13001_6001_GLOBAL.txt" "-FTP_HOST=10.86.82.108" "-FTP_USER=anh" "-FTP_PASSWORD=<@=sFtpPassword@>" "-FTP_PASSIVE_MODE=1" "-FTP_TRANSFER_TIMEOUT=100000" "-ODI_VARIABLE_NAMES=" "-ODI_VARIABLE_VALUES=" "-USER_ABAP_PARAMETER_NAMES=IV_DELIMITER,CHAR3;IV_FILENAME,CHAR255;IV_USER,CHAR35;IV_PWD,CHAR35;IV_HOST,CHAR35;IV_HASHVALUE,CHAR35;IV_PATH,CHAR35;IV_MAX_ROW_CNT,SYTABIX;IV_FETCH_BATCH_SIZE,SYTABIX;" "-USER_ABAP_PARAMETER_VALUES=<Value>" "-USER_ABAP_PARAMETER_SEPARATOR=<Value>" "-ABAP_TABLE_PARAMETERS=RETURN,BAPIRETURN;ET_FILE_RETURN,BAPIRET2" "-ABAP_EXPORT_PARAMETERS=ERRORMESSAGE;SY-MSGV1" "-LOG_FILE_NAME=C:\Users\anh\AppData\Local\Temp\SapAbapExecuteOpenTool_13001.log" "-FTP_PATH=/abc/" "-DEV_CLASS=ZODI_DEVCLASS" "-MAX_ROW_COUNT=" "-FETCH_BATCH_SIZE=100000" "-HASH_VALUE_MARKER=HVM" "-ABAP_PROGRAM_BODY=
    *Final Type declarations
    TYPES : BEGIN OF ty_final,
    Y03HOCSINH_HOCSINH_ID TYPE
    Y03HOCSINH-HOCSINH_ID,
    Y03HOCSINH_MA_HOC_SINH TYPE
    Y03HOCSINH-MA_HOC_SINH,
    Y03HOCSINH_TEN_HOC_SINH TYPE
    Y03HOCSINH-TEN_HOC_SINH,
    Y03HOCSINH_GIOI_TINH TYPE
    Y03HOCSINH-GIOI_TINH,
    Y03HOCSINH_DIA_CHI TYPE
    Y03HOCSINH-DIA_CHI,
    Y03HOCSINH_GHI_CHU TYPE
    Y03HOCSINH-GHI_CHU,
    END OF ty_final.
    *Final Temp Type Declarations
    TYPES : BEGIN OF ty_final_tmp,
    Y03HOCSINH_HOCSINH_ID TYPE
    Y03HOCSINH-HOCSINH_ID ,
    Y03HOCSINH_MA_HOC_SINH TYPE
    Y03HOCSINH-MA_HOC_SINH ,
    Y03HOCSINH_TEN_HOC_SINH TYPE
    Y03HOCSINH-TEN_HOC_SINH ,
    Y03HOCSINH_GIOI_TINH TYPE
    Y03HOCSINH-GIOI_TINH ,
    Y03HOCSINH_DIA_CHI TYPE
    Y03HOCSINH-DIA_CHI ,
    Y03HOCSINH_GHI_CHU TYPE
    Y03HOCSINH-GHI_CHU ,
    END OF ty_final_tmp.
    *Final Target Type Declarations
    TYPES : BEGIN OF ty_final_target,
    C0_Y03HOCSINH_HOCSINH_ID TYPE
    Y03HOCSINH-HOCSINH_ID,
    C1_Y03HOCSINH_MA_HOC_SINH TYPE
    Y03HOCSINH-MA_HOC_SINH,
    C2_Y03HOCSINH_TEN_HOC_SINH TYPE
    Y03HOCSINH-TEN_HOC_SINH,
    C3_Y03HOCSINH_GIOI_TINH TYPE
    Y03HOCSINH-GIOI_TINH,
    C4_Y03HOCSINH_DIA_CHI TYPE
    Y03HOCSINH-DIA_CHI,
    C5_Y03HOCSINH_GHI_CHU TYPE
    Y03HOCSINH-GHI_CHU,
    END OF ty_final_target.
    * Table type for Y03HOCSINH
    TYPES : BEGIN OF ty_Y03HOCSINH,
    HOCSINH_ID TYPE
    Y03HOCSINH-HOCSINH_ID,
    MA_HOC_SINH TYPE
    Y03HOCSINH-MA_HOC_SINH,
    TEN_HOC_SINH TYPE
    Y03HOCSINH-TEN_HOC_SINH,
    GIOI_TINH TYPE
    Y03HOCSINH-GIOI_TINH,
    DIA_CHI TYPE
    Y03HOCSINH-DIA_CHI,
    GHI_CHU TYPE
    Y03HOCSINH-GHI_CHU,
    END OF ty_Y03HOCSINH.
    TYPES: BEGIN OF gs_text,
    line(843) TYPE c,
    END OF gs_text.
    *Structure Declarations
    DATA: wa_final_string TYPE string,
    wa_final TYPE ty_final,
    wa_final_target TYPE ty_final_target,
    wa_Y03HOCSINH TYPE ty_Y03HOCSINH,
    *Table Declarations
    tt_final TYPE STANDARD TABLE OF ty_final,
    tt_Y03HOCSINH TYPE STANDARD TABLE OF ty_Y03HOCSINH,
    tt_final_target TYPE STANDARD TABLE
    OF ty_final_target,
    tt_final_tmp TYPE STANDARD TABLE OF ty_final_tmp,
    tt_final_tmp1 TYPE STANDARD TABLE OF ty_final,
    gt_result TYPE STANDARD TABLE OF gs_text,
    *Variable Declarations
    lv_path TYPE string,
    lv_flag TYPE char1,
    C0_Y03HOCSINH_HOCSINH_ID TYPE
    STRING,
    C1_Y03HOCSINH_MA_HOC_SINH TYPE
    STRING,
    C2_Y03HOCSINH_TEN_HOC_SINH TYPE
    STRING,
    C3_Y03HOCSINH_GIOI_TINH TYPE
    STRING,
    C4_Y03HOCSINH_DIA_CHI TYPE
    STRING,
    C5_Y03HOCSINH_GHI_CHU TYPE
    STRING,
    wa_final_tmp TYPE ty_final_tmp,
    lv_file TYPE string,
    lv_datum TYPE sy-datum,
    lv_date TYPE char10,
    wa_result TYPE string,
    lv_delimiter type string,
    lv_cnt TYPE sytabix,
    *-Cursor Declaration
    lv_Y03HOCSINH_dbcur TYPE cursor,
    lv_tabix_frm TYPE sy-tabix.
    lv_delimiter = iv_delimiter.
    IF iv_hashvalue = 'HVM'.
    *Open/delete output file
    CONCATENATE iv_path iv_filename INTO lv_path.
    *Check for file existence, if found, delete it
    OPEN DATASET lv_path FOR INPUT
    IN TEXT MODE
    ENCODING DEFAULT.
    IF sy-subrc EQ 0.
    DELETE DATASET lv_path.
    ENDIF.
    *Open/create output file
    OPEN DATASET lv_path FOR APPENDING
    IN TEXT MODE
    ENCODING DEFAULT.
    IF sy-subrc EQ 0.
    *Batch Processing
    OPEN CURSOR WITH HOLD lv_Y03HOCSINH_dbcur FOR
    SELECT HOCSINH_ID
    MA_HOC_SINH
    TEN_HOC_SINH
    GIOI_TINH
    DIA_CHI
    GHI_CHU
    FROM Y03HOCSINH.
    DO.
    *Check for the counter, only for first batch
    *process new line is required...
    lv_cnt = lv_cnt + 1.
    REFRESH tt_Y03HOCSINH.
    FETCH NEXT CURSOR lv_Y03HOCSINH_dbcur
    APPENDING TABLE tt_Y03HOCSINH
    PACKAGE SIZE IV_FETCH_BATCH_SIZE.
    IF NOT tt_Y03HOCSINH IS INITIAL.
    ELSE.
    EXIT.
    ENDIF.
    LOOP AT tt_Y03HOCSINH INTO wa_Y03HOCSINH.
    MOVE wa_Y03HOCSINH-HOCSINH_ID
    TO wa_final_tmp-Y03HOCSINH_HOCSINH_ID.
    MOVE wa_Y03HOCSINH-MA_HOC_SINH
    TO wa_final_tmp-Y03HOCSINH_MA_HOC_SINH.
    MOVE wa_Y03HOCSINH-TEN_HOC_SINH
    TO wa_final_tmp-Y03HOCSINH_TEN_HOC_SINH.
    MOVE wa_Y03HOCSINH-GIOI_TINH
    TO wa_final_tmp-Y03HOCSINH_GIOI_TINH.
    MOVE wa_Y03HOCSINH-DIA_CHI
    TO wa_final_tmp-Y03HOCSINH_DIA_CHI.
    MOVE wa_Y03HOCSINH-GHI_CHU
    TO wa_final_tmp-Y03HOCSINH_GHI_CHU.
    APPEND wa_final_tmp TO tt_final_tmp.
    ENDLOOP.
    free : tt_Y03HOCSINH.
    LOOP AT tt_final_tmp INTO wa_final_tmp.
    MOVE wa_final_tmp-Y03HOCSINH_HOCSINH_ID
    TO wa_final_target-C0_Y03HOCSINH_HOCSINH_ID.
    MOVE wa_final_tmp-Y03HOCSINH_MA_HOC_SINH
    TO wa_final_target-C1_Y03HOCSINH_MA_HOC_SINH.
    MOVE wa_final_tmp-Y03HOCSINH_TEN_HOC_SINH
    TO wa_final_target-C2_Y03HOCSINH_TEN_HOC_SINH.
    MOVE wa_final_tmp-Y03HOCSINH_GIOI_TINH
    TO wa_final_target-C3_Y03HOCSINH_GIOI_TINH.
    MOVE wa_final_tmp-Y03HOCSINH_DIA_CHI
    TO wa_final_target-C4_Y03HOCSINH_DIA_CHI.
    MOVE wa_final_tmp-Y03HOCSINH_GHI_CHU
    TO wa_final_target-C5_Y03HOCSINH_GHI_CHU.
    Append wa_final_target to tt_final_target.
    ENDLOOP.
    free : tt_final_tmp.
    Clear wa_final_target.
    IF NOT iv_max_row_cnt IS INITIAL.
    Loop at tt_final_target into
    wa_final_target TO iv_max_row_cnt.
    MOVE wa_final_target-C0_Y03HOCSINH_HOCSINH_ID
    TO C0_Y03HOCSINH_HOCSINH_ID.
    MOVE wa_final_target-C1_Y03HOCSINH_MA_HOC_SINH
    TO C1_Y03HOCSINH_MA_HOC_SINH.
    MOVE wa_final_target-C2_Y03HOCSINH_TEN_HOC_SINH
    TO C2_Y03HOCSINH_TEN_HOC_SINH.
    MOVE wa_final_target-C3_Y03HOCSINH_GIOI_TINH
    TO C3_Y03HOCSINH_GIOI_TINH.
    MOVE wa_final_target-C4_Y03HOCSINH_DIA_CHI
    TO C4_Y03HOCSINH_DIA_CHI.
    MOVE wa_final_target-C5_Y03HOCSINH_GHI_CHU
    TO C5_Y03HOCSINH_GHI_CHU.
    CONCATENATE
    C0_Y03HOCSINH_HOCSINH_ID
    C1_Y03HOCSINH_MA_HOC_SINH
    C2_Y03HOCSINH_TEN_HOC_SINH
    C3_Y03HOCSINH_GIOI_TINH
    C4_Y03HOCSINH_DIA_CHI
    C5_Y03HOCSINH_GHI_CHU
    INTO wa_final_string
    SEPARATED BY lv_delimiter.
    IF sy-tabix EQ 1 AND lv_cnt EQ 1.
    CONCATENATE wa_final_string
    lv_delimiter INTO wa_final_string.
    ELSE.
    CONCATENATE '<@=""+(char)8@>' lv_delimiter wa_final_string
    lv_delimiter INTO wa_final_string.
    ENDIF.
    APPEND wa_final_string TO gt_result.
    CLEAR : C0_Y03HOCSINH_HOCSINH_ID,
    C1_Y03HOCSINH_MA_HOC_SINH,
    C2_Y03HOCSINH_TEN_HOC_SINH,
    C3_Y03HOCSINH_GIOI_TINH,
    C4_Y03HOCSINH_DIA_CHI,
    C5_Y03HOCSINH_GHI_CHU.
    ENDLOOP.
    ELSE.
    Loop at tt_final_target into wa_final_target.
    MOVE wa_final_target-C0_Y03HOCSINH_HOCSINH_ID
    TO C0_Y03HOCSINH_HOCSINH_ID.
    MOVE wa_final_target-C1_Y03HOCSINH_MA_HOC_SINH
    TO C1_Y03HOCSINH_MA_HOC_SINH.
    MOVE wa_final_target-C2_Y03HOCSINH_TEN_HOC_SINH
    TO C2_Y03HOCSINH_TEN_HOC_SINH.
    MOVE wa_final_target-C3_Y03HOCSINH_GIOI_TINH
    TO C3_Y03HOCSINH_GIOI_TINH.
    MOVE wa_final_target-C4_Y03HOCSINH_DIA_CHI
    TO C4_Y03HOCSINH_DIA_CHI.
    MOVE wa_final_target-C5_Y03HOCSINH_GHI_CHU
    TO C5_Y03HOCSINH_GHI_CHU.
    CONCATENATE
    C0_Y03HOCSINH_HOCSINH_ID
    C1_Y03HOCSINH_MA_HOC_SINH
    C2_Y03HOCSINH_TEN_HOC_SINH
    C3_Y03HOCSINH_GIOI_TINH
    C4_Y03HOCSINH_DIA_CHI
    C5_Y03HOCSINH_GHI_CHU
    INTO wa_final_string
    SEPARATED BY lv_delimiter.
    IF sy-tabix EQ 1 AND lv_cnt EQ 1.
    CONCATENATE wa_final_string
    lv_delimiter INTO wa_final_string.
    ELSE.
    CONCATENATE '<@=""+(char)8@>' lv_delimiter wa_final_string
    lv_delimiter INTO wa_final_string.
    ENDIF.
    APPEND wa_final_string TO gt_result.
    CLEAR : C0_Y03HOCSINH_HOCSINH_ID,
    C1_Y03HOCSINH_MA_HOC_SINH,
    C2_Y03HOCSINH_TEN_HOC_SINH,
    C3_Y03HOCSINH_GIOI_TINH,
    C4_Y03HOCSINH_DIA_CHI,
    C5_Y03HOCSINH_GHI_CHU.
    ENDLOOP.
    ENDIF.
    free : tt_final_target.
    IF NOT gt_result IS INITIAL.
    CLEAR wa_result.
    LOOP AT gt_result INTO wa_result.
    TRANSFER wa_result TO lv_path.
    ENDLOOP.
    ENDIF.
    REFRESH gt_result.
    *End of main loop for batching
    ENDDO.
    *Close dataset
    CLOSE DATASET lv_path.
    CLOSE CURSOR lv_Y03HOCSINH_dbcur.
    ELSE.
    DATA: lv_mesg TYPE string.
    CLEAR et_file_return.
    et_file_return-type = 'E'.
    CONCATENATE
    'Error occurred when creating dataset' lv_path
    INTO lv_mesg.
    et_file_return-message = lv_mesg.
    Append et_file_return.
    ENDIF.
    ELSE.
    CLEAR et_file_return.
    et_file_return-type = 'E'.
    et_file_return-message =
    'Installed ABAP program does not match interface definition'.
    APPEND et_file_return.
    ENDIF.
    Thanks for help

    r u able to figure it out..........i got the same error .......can someone help me fix this issue

  • How to get the resulting XML as string

    Hello,
    I think my question is very simple but i'm new in this area.
    What i'm try to do is to parse a XML document with the DOM parser. Then i manipulate the DOM tree. After finishing the process i want to get the resulting XML document as an InputStream to give to another application for storing back into the database.
    Until know i print the resulting XML to System.out or I write it to a file.
    Do you know where i can find more information about this? Sample code??
    Thanks!

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Jinyu Wang ([email protected]):
    You can try following code. It is not the simplest way, but it works for me:
    // Print to temp buffer
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DataOutputStream output = new DataOutputStream(baos);
    Xml_doc.print(output);
    String outtemp=baos.toString();
    System.out.println(outtemp);
    include following line for the lib:
    import java.io.*;<HR></BLOCKQUOTE>
    Many thanks for the reply. It works!

  • Print the text into html file

    Dear all,
    How i will print the result directly to the html file instead of print output in the console.
    Give the sample code.
    Thanks & Regards,
    kumar

    Hi kumar :)
    I'm not sure if this is what you mean but Jakarta has an Element Construction
    Set (ECS) API that can generate elements for HTML and XML mark-up
    languages.
    Please checkout their site: http://jakarta.apache.org/ecs/

  • BEx Map in Excel: Print only result area

    Hi experts,
    I am in BEx Map - Excel, and I am trying to print the result area ONLY, without key figures, legend and so on...
    Print Preview in Excel shows the key figures on the left, the legends on the right and a little version of the map (as if way too zoomed out) in the middle.
    I know there is a post dedicated to the "print only result area" but its solution is "web only"
    Thx,
    Olivier

    Arun,
    Attaching a map in BEx-Excel is different from attaching a chart. When attaching a map, you can't choose in which sheet/workbook the map will be displayed. A new sheet is automatically added to the workbook holding the BEx query, period.
    But thx anyway. I did try your thought

Maybe you are looking for

  • Error While exporting an application in SCCM 2012

    Hello, While exporting an application in SCCM 2012, getting this error ! "The Export application wizard completed with errors" Error: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters,

  • What's wrong with the following result_cache hint?

    Dear all, I try to use result_cache hint in the following sql aggregate function statement, but the explain plan doesn't show any difference between non-result_cached and with result_cached: SQL> set autot on explain stat SQL> select account_mgr_id,c

  • Javascript

    Hello, I've noticed that some people get upset when someone mentions javascript in this forum. Is there another forum where I could ask questions on javascript? Thanks. To those who don't get upset, here is my question: With these items: a button, a

  • Load Table Data into Excel Specific range

    Hi, I am working with Excel Destination in SSIS, where i have to insert table data into multiple excel sheets with specific range, sheet name same as table name and i should load each table into that particular sheet name in excel. So Sheet name will

  • Margins in 'Pages' aren't printing correctly...

    Anyone else had difficulty with this? I'm trying to print a standard document from Pages, and it needs to have left-and-right 1" margins. Margin setup was easy and looks fine in the app, but it always prints with wider margins...more like 1.5". I've