BAPI创建CLASS和CHARACTERISTICS

上一篇 / 下一篇  2008-06-07 21:29:20 / 个人分类:ABAP BAPI

REPORT zcmm_00004 MESSAGE-ID 00 .
}|8F+T_|0ITPUB个人空间)[}R{hVW+d
ITPUB个人空间'h)yoor%yr:~2b
INCLUDE ole2incl.ITPUB个人空间 y {M)m8s0O0?v+E

6`D(J ]j0DATA : BEGIN OF itab_sheet OCCURS 0 ,ITPUB个人空间#[,\(S rmp1A7~&f H
 sheet_name(20),
6B8|"{.Ev0 max_row TYPE i,
8W r@(Qj2^0 max_col TYPE i,
2y@iYh*m)`0 END OF itab_sheet.ITPUB个人空间3F xVgv&r
ITPUB个人空间2[v,D;}5uDY
DATA : BEGIN OF sheet_line,
:n&oWur|2` g0 name(30),
+a Sc3na!U X)~Wrp0 changenumber(12),ITPUB个人空间#l!fcw~kB
 validfrom(8),
~A$_*r*K J H,yJQ3TP0 status(1),ITPUB个人空间q7F%l3? T5Wp
 datatype(4),ITPUB个人空间 x1k5B(` A"Di3{6}8r R
 numberofchars(5),ITPUB个人空间LI4Tz!rX
 valueassignment(1),ITPUB个人空间n-['{e4MH
 language(2),
3^s#R\h2e0 description(30),ITPUB个人空间WcD8py%YX
 value(20),ITPUB个人空间.{ X8O5iCv$qj(I
 valuelanguage(2),
*W|;\s&|3Z0 valuedescription(30),ITPUB个人空间$YGlo4_%V4F
 END OF sheet_line,ITPUB个人空间l7a HAW E
 itab_characteristics LIKE TABLE OF sheet_line WITH HEADER LINE.
8`7j;|I*I'u:pw0DATA : BEGIN OF class_line,
Wk:U1G7H+Ii0 classnum(18),ITPUB个人空间C2`#S7Mg
 classtype(3),
Q4q|:yR\+q0 changenum(12),
^&aK-On[x0 classtpfr(8),
#~UX4b"O\*l&_2Q&Sq0 language(2),ITPUB个人空间+L8}UaUQZ-K
 desc(40),
]0O6}q_ E R0 status(1),ITPUB个人空间2O6L$e,|Z
 validfr(8),
\'H P pkF*g1E0 validto(8),ITPUB个人空间t*{&G+~!|u!q9g
 charact(30),ITPUB个人空间0a!WL J0{4bX
 END OF class_line,ITPUB个人空间(H,p3H J/uI,d3y8NR%M
 itab_class LIKE TABLE OF class_line WITH HEADER LINE.
1c5w\5@eC}0DATA : BEGIN OF table_line.ITPUB个人空间LEj|sNZ;Ca$Ni.U
 INCLUDE STRUCTURE alsmex_tabline .ITPUB个人空间eGuWGpz
DATA : END OF table_line.
{3LP)p-Y6d-x(Q`m0
m'E6krgZIt8n;r g:u0DATA simple_tab LIKE TABLE OF table_line.ITPUB个人空间4wL3~.}S i l%G
ITPUB个人空间ED xw?W0F@[#c@

F1]5V"d3m0DATA : charactdetail LIKE TABLE OF bapicharactdetail WITH HEADER LINE,
}Ff`kl2mO0 changenumber LIKE bapicharactkey-changenum,ITPUB个人空间1qx j*O}
 charactdescr TYPE TABLE OF bapicharactdescr WITH HEADER LINE,
s!gdj7}'\C0 charactvalueschar TYPE TABLE OF bapicharactvalueschar WITH HEADERITPUB个人空间A+r+@TO` F
 LINE,
.X'Q\9Aj} CS0 charactvaluesdescr TYPE TABLE OF bapicharactvaluesdescr WITH
ePje%u#H:v0HEADER LINE,
$tD2W'ZR0 valid_date TYPE bapicharactkey-keydate,
I)t%H9W h A0return TYPE TABLE OF bapiret2 WITH HEADER LINE.ITPUB个人空间~![}M4b d4jX
ITPUB个人空间`JH Wu6v i Y,{
DATA : classnum TYPE bapi_class_key-classnum,ITPUB个人空间TS;HHI%C5s$g
 classtype TYPE bapi_class_key-classtype,
{"S*i8}x!eIAu7o0 changenum TYPE bapi1003_key-changenumber,ITPUB个人空间,GQg?c$S@
 keywordsold LIKE TABLE OF bapi1003_catch_r WITH HEADER LINE,
\(a1DL%` U4~^RC9_0 charactsold LIKE TABLE OF bapi1003_charact_r WITH HEADER
){;Oib%i(b My `E0LINE,ITPUB个人空间u'`!of4fdD
 charactvalueold LIKE TABLE OF bapi1003_char_val_r WITHITPUB个人空间\3i/l#s2l HlOcI
HEADER LINE,ITPUB个人空间sJ i:i2Lfm
 keywords LIKE TABLE OF bapi1003_catch WITH HEADER LINE,ITPUB个人空间 rq?4K^(V'| S
 characts LIKE TABLE OF bapi1003_charact WITH HEADER LINE,
#s2^)d~)t f0 charactsnew LIKE TABLE OF bapi1003_charact_new WITH HEADER LINE
!Jns%R n Rv0,
'{9Ff([0O4P R0 keywordsnew LIKE TABLE OF bapi1003_catch_new WITH HEADER LINE,
b)`iD/Nt;EmP0 basicdata LIKE TABLE OF bapi1003_basic WITH HEADER LINE,
;\ S4^ F8wt0 basicdatanew LIKE TABLE OF bapi1003_basic_new WITH HEADER LINE.ITPUB个人空间4z)Np.G5Z(N2j&^,?H
DATA : sheetname TYPE rlgrap-filename ,
2L7s`M}1Ug+[0 begin_col TYPE i VALUE '1',
{1p9z2@`vn0 begin_row TYPE i VALUE '11'.
e"L[hFs{ A0ITPUB个人空间)aa D:N6Gx
*-----------------------------------------------------------------------ITPUB个人空间y"K)E7M^9i
* selection screen
D`tfUVo-oP+U0*-----------------------------------------------------------------------
UPK\)n0{D0PARAMETERS :
i}x%].IV0 charc_c RADIOBUTTON GROUP rad1 ,ITPUB个人空间wl;WeX6E]5]
 charc_m RADIOBUTTON GROUP rad1 ,
J3F N2p'\z'KD_8n0 class_c RADIOBUTTON GROUP rad1 ,
e [?b'p/@$Kq)e0 class_m RADIOBUTTON GROUP rad1 ,
T+\%b e#g]-g0 filename TYPE rlgrap-filename .
:Ul9q@0Qo0ITPUB个人空间`:h"[_ RFR
*-----------------------------------------------------------------------
Pl^K,c j;E0* initial screen
+?$Oe[J[ Z0*-----------------------------------------------------------------------
_(R'YaCK#q&C(]0INITIALIZATION.ITPUB个人空间)Y)_!B&B_ F;N$o
ITPUB个人空间5u|[gK)`B)z)Q
 filename = 'c:\MM_CLASS_UPLOAD_TEMPLE.XLS'.ITPUB个人空间Xm+Q L&v;GB.Sy4G6L
ITPUB个人空间_jT [8HrN
ITPUB个人空间T:D&T9ej"LQ,?

bqk\uj0START-OF-SELECTION.
{5Y&L9^id!e0*-----------------------------------------------------------------------
UxPKI if7k0* main logic for create/modify characteristics/class
d2?(A6D,Q0*-----------------------------------------------------------------------
r+PJ#dWp ~0ITPUB个人空间V&ZM)r7HB"Y[
 PERFORM. get_sheets_desc USING filename.
|^8Gc1YLH8e0ITPUB个人空间wu)XmJ&J
 IF charc_c = 'X' .
*?kO\\0Jg0 sheetname = 'MM_CHARACTERISTICS'.ITPUB个人空间/vf&G6d:A^:cqu
 PERFORM. whether_have_sheet USING sheetname.ITPUB个人空间-y:N Q n P:L:ZT~
 PERFORM. upload_excel TABLES itab_characteristics USING sheetnameITPUB个人空间\!S4a2{-u-?%k L
begin_col begin_row.ITPUB个人空间 U4L"X3gXI)f6e
 PERFORM. create_character .ITPUB个人空间s/H$ebK
 ENDIF.
3C/~ cWX0 IF charc_m = 'X' .
*ZP$l `Uu0 sheetname = 'MM_CHARACTERISTICS'.
*Ps4x O)S~q[#Q0 PERFORM. whether_have_sheet USING sheetname.
W h qd,`M S@Z0 PERFORM. upload_excel TABLES itab_characteristics USING sheetname
1[ L,Ta9s;f%~ Jp%Iw D0begin_col begin_row.ITPUB个人空间$R P7q8w,n1b2s5z!w
 PERFORM. modify_character .ITPUB个人空间 jA4h*z7{ xk#st
 ENDIF.ITPUB个人空间c2W R0A1ko
 IF class_c = 'X'.
6mq'^]Z0 sheetname = 'MM_CLASS' .ITPUB个人空间,o;[*f2J~3l r~
 PERFORM. whether_have_sheet USING sheetname.ITPUB个人空间f/kF-W-F9hs:q.I
 PERFORM. upload_excel TABLES itab_class USING sheetname begin_col
nQ1WWA?*_tN0begin_row .ITPUB个人空间)B%k`k Qk$oy9^ P1]"V
 PERFORM. create_class .
5H9@8[e0JV7vD0 ENDIF.ITPUB个人空间 ]&E I}`0o+T M,j
 IF class_m = 'X'.ITPUB个人空间#J*AH} PF7w*\0Iz
 sheetname = 'MM_CLASS' .
f y7Ln'N!w'_([1_&H0 PERFORM. whether_have_sheet USING sheetname.ITPUB个人空间@%aE7h|
 PERFORM. upload_excel TABLES itab_class USING sheetname begin_col
GG8e0G3U,ol,v0begin_row .ITPUB个人空间(Z{@Ey~Z
 PERFORM. modify_class .
*h~9Zf {K&e8Bn e0 ENDIF.
H$o,KvNEF#t7zv0ITPUB个人空间 aW@.m[n!v2a
END-OF-SELECTION.
F.RN,aCj+w0*&--------------------------------------------------------------------*ITPUB个人空间-F@vM/wa6yAo
*& Form. whether_have_sheet
Q,J_5N'\Al'E"H0*&--------------------------------------------------------------------*
1zQ-i]4Gl0* text
{ L6~|T\7mR T0*---------------------------------------------------------------------*
8h%U_v)[!|0* -->SHEETNAME text
S6OUl-LVn0*---------------------------------------------------------------------*ITPUB个人空间A xZm\6K
FORM. whether_have_sheet USING sheetname .ITPUB个人空间 c$H1A9t%CdE
 READ TABLE itab_sheet WITH KEY sheet_name = sheetname.
6a$L&e I.G!vp0 IF sy-subrc <> 0 .ITPUB个人空间VweeG;MH0g
 MESSAGE s001(00) WITH sheetname ' does not exist'.
*p-Z5|7k)V Q&d0 STOP.
(Z0o vmi)`p [0 ENDIF.ITPUB个人空间*DE6R]5w3h
ENDFORM. "whether_have_sheetITPUB个人空间 ey D rN
*&--------------------------------------------------------------------*
_+G9KT)f+X.RU2B0*& Form. create_classITPUB个人空间INwL%h X7B*@
*&--------------------------------------------------------------------*
j0Q BN7@'w V0* text
-L2w3v#LK4R U z"p [0*---------------------------------------------------------------------*
4Vx |wP0FORM. create_class .
;VA_|;Y f _H%b#ub0 SORT itab_class BY classnum.
"f,Ye/y~in;M0 LOOP AT itab_class .
Rk ypT.T9`;h0
h mc/u ^+M U nk0 classnum = itab_class-classnum.ITPUB个人空间A,q$Av8c@!A8b/k
 classtype = itab_class-classtype.ITPUB个人空间uK|)gr?9]!@n
 changenum = itab_class-changenum.ITPUB个人空间-tUH?;f)`:c+l
 basicdata-status = itab_class-status.ITPUB个人空间-O0R Yzq T~0l"t"J*o
 basicdata-valid_from = itab_class-validfr .ITPUB个人空间9]FC p v
 basicdata-valid_to = itab_class-validto .ITPUB个人空间-h$o8G\ Mm2B
ITPUB个人空间 ?)Idj.\!OFU
 keywords-langu = itab_class-language.ITPUB个人空间W6A3NXC [
 keywords-catchword = itab_class-desc.ITPUB个人空间(xw^7@ r5P*Dy
 APPEND keywords.ITPUB个人空间B2j(l)I f(L's+F(h}of0g

y1Q*v1G\nB0 characts-name_char = itab_class-charact .
gZ~%FRM|6f0 APPEND characts.ITPUB个人空间 I/u+G@"hS_
 AT END OF classnum .
_(z\+j(Zs^(p/L,[0 CALL FUNCTION 'BAPI_CLASS_CREATE'
z8oO4d"S;i%G0 EXPORTINGITPUB个人空间/M `D*d]U
 classnumnew = classnumITPUB个人空间8P-_ z1Yb0|2X M
 classtypenew = classtype
x"M&_Q~C\Q0 classbasicdata = basicdataITPUB个人空间)l0~'p+un0M ^
 TABLES
+Q*[!xx"e8[kNLv\0 classdescriptions = keywordsITPUB个人空间$q0i j+C~ Qx
 classcharacteristics = characts
~`T%E3@^_0 return = return.ITPUB个人空间-P9\i m0ye9cK
 ENDAT.
;z)OKr_0 LOOP AT return .
Q{0~'u F0 IF return-type = 'I' AND return-number = '813'.
L-ye;V!UTMR0 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.ITPUB个人空间 q9u+Y{J C G
 FORMAT COLOR COL_KEY .ITPUB个人空间 BBGP#P5\f
 WRITE : / return-message.ITPUB个人空间TuP jg`9So5Zs
 ENDIF.ITPUB个人空间a"i6Ws$tF1u*]
 IF return-type = 'S' OR return-type = 'E'.
_.c X8pG#^\$z0 FORMAT COLOR COL_GROUP.
wA~sM)o0W0 WRITE : / return-message.ITPUB个人空间-Vq&A|:`{N&P
 ENDIF.
F4^;m7I*^)C0 ENDLOOP.
&I uD+gDn%b2d h%X0 ENDLOOP.
_ P-A-u`Z)v7`3u0ENDFORM. "create_class
"Y\|&rGp$N+z{` b0*&--------------------------------------------------------------------*ITPUB个人空间,Gs1Zv ej-["|*M
*& Form. modify_classITPUB个人空间8c/B8y4@&tK {5[
*&--------------------------------------------------------------------*ITPUB个人空间H6A#r&JEG|U
* text
CYn:bh i7J l0*---------------------------------------------------------------------*ITPUB个人空间h QWi]cA
FORM. modify_class .ITPUB个人空间1Z [gq-f
ITPUB个人空间Po~1YL8pi:IB
 SORT itab_class BY classnum.ITPUB个人空间$f/Lz_| I0v
 LOOP AT itab_class .ITPUB个人空间K0L$iZ!a1q

Mb,}G @0 classnum = itab_class-classnum.ITPUB个人空间1f D Cl*ZS/c7rh-O
 classtype = itab_class-classtype.
Z@o$@l5?V%H*\0 changenum = itab_class-changenum.ITPUB个人空间`&Rp{jg&Uq
 basicdata-status = itab_class-status.ITPUB个人空间6nOB?A#S7Bw
 basicdata-valid_from = itab_class-validfr .ITPUB个人空间-I y^)Sy7[i
 basicdata-valid_to = itab_class-validto .
b0T5y3\8{:PN+v }0
S0z2LI*O0 basicdatanew-status = itab_class-status.
-gFieR0 basicdatanew-valid_from = itab_class-validfr .
D\$Z4d2Y0 basicdatanew-valid_to = itab_class-validto .
(fd T1F"{(c0ITPUB个人空间8}}4o:i3^R&t2[-q!?

r&NQ+Gp Z3H0
$i(Z4zG[0 keywordsnew-langu = itab_class-language.ITPUB个人空间(nE C7UH
 keywordsnew-langu_iso = itab_class-language.ITPUB个人空间xS1R1Aogy2\9_`
 keywordsnew-catchword = itab_class-desc.
~5op(@U*E#d"C0 APPEND keywordsnew.
-w;q&~R.q0
w q Q+AJK}0 charactsnew-name_char = itab_class-charact .ITPUB个人空间#a%]:Q5K,\ ~#m
 APPEND charactsnew.
n)g*Xsrl0
.Ix@+sT0 AT END OF classnum .ITPUB个人空间6ot }6]C'D+G[

d!Fn i-G5GR8o0* first ,get class detail.
tl7Slc&a0 CALL FUNCTION 'BAPI_CLASS_GETDETAIL'ITPUB个人空间TKZs-o LkA
 EXPORTINGITPUB个人空间3j&r7s?9kX
 classtype = classtypeITPUB个人空间 yd*^5KV.|H] B(a3j2{Y
 classnum = classnumITPUB个人空间lP#vxO2O
 IMPORTING
5I%@N}uXoV0 classbasicdata = basicdata
4\#tr7Ml)L0 return = return
+AcNO V#U0 TABLES
'@ ewy2S0 classdescriptions = keywordsold
*N"DA8SC;b wJy0 classcharacteristics = charactsoldITPUB个人空间a%TP9x"lz)X7[I
 classcharvalues = charactvalueold.
,}F2i1Ht!? j!Y0ITPUB个人空间uH*Yd5T~$s
 IF return-type <> 'E' .ITPUB个人空间[\H ]6c/eo R-`O
ITPUB个人空间s%QL4oc6VBr py
 LOOP AT keywordsold.ITPUB个人空间}_R;{ a\ ~|0C
 MOVE-CORRESPONDING keywordsold TO keywords.
liX F-O)J t%]+arq4B0 APPEND keywords.
`.t ei)~B0 ENDLOOP.ITPUB个人空间#?qh._]1?L$|"H
 LOOP AT charactsold .ITPUB个人空间 p,wGq ?{"j1F
 MOVE-CORRESPONDING charactsold TO characts.
"C$y*mze0 APPEND characts.
7Q j@X]\0 ENDLOOP.ITPUB个人空间 x`9hVf8e

U'n^+pPGiF0 CALL FUNCTION 'BAPI_CLASS_CHANGE'ITPUB个人空间4aU8Q&OA,_0i
 EXPORTING
o)[o4sZ0 classnum = classnumITPUB个人空间Y0\4_nF9p%Y]
 classtype = classtypeITPUB个人空间.E k7L Ln&m
 classbasicdata = basicdataITPUB个人空间3` ^e'b3w
 classbasicdatanew = basicdatanewITPUB个人空间$o5t-]C`d9L!NUK
 TABLES
!Gs4\6N2J T_X6`?&d"I0 classdescriptions = keywordsITPUB个人空间+EG0w3Tw
 classdescriptionsnew = keywordsnewITPUB个人空间c3L,];F#S!N1]0]9oi
 classcharacteristics = characts
R@q;O @4N9P O0 classcharacteristicsnew = charactsnewITPUB个人空间-ZGVO&@.J3W3n
 return = return.
5{)zP*uzo$@4H7M0 LOOP AT return .
re+J$e q*dQ,gsSbk0 IF return-type = 'I' AND return-number = '814'.
f6i;?Drq0 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
r3Y"guh;aT8n0 FORMAT COLOR COL_KEY .
h'x_B,H;L"h$g0 WRITE : / return-message.
+i"Hl'KA)e.]U4]0 ENDIF.ITPUB个人空间8^T^~ qwR-V {!L0_
 IF return-type <> 'I'.
F+E*P"`? t~1D[0 FORMAT COLOR COL_GROUP.
;@2`8gWk/x V1p0 WRITE : / return-message.
8T'E1C']5By@.D|+o0 ENDIF.ITPUB个人空间(]~Q3X7~d3b%ak.j}
 ENDLOOP.ITPUB个人空间H!L-V2N O3@"_1}
 ELSE.
UhB!fL'S I}a0 FORMAT COLOR COL_GROUP.ITPUB个人空间nZOP4|i!V:L&F
 WRITE : / return-message.ITPUB个人空间gsc&J ` K'G r i+?
 ENDIF.ITPUB个人空间&bYeJJt
 ENDAT.ITPUB个人空间-d.c K$`Go;`:{)Y
 REFRESH keywords.
T7j i gz0 REFRESH keywordsnew.
u#~`t s$|$e0 REFRESH characts.
7U]OM+J C0 ENDLOOP.ITPUB个人空间^"xhZG ofiZ`sU
ENDFORM. . "modify_classITPUB个人空间J:p)`.w&?4\I%Q
*&--------------------------------------------------------------------*
3J4g S3k*N%D(Y y0*& Form. create_character
c[FR#D-_A0*&--------------------------------------------------------------------*ITPUB个人空间4~+NZ%^O
* text
UI%KF$q.rE5p0*---------------------------------------------------------------------*
3q Z:n0F e4kY0M0FORM. create_character .ITPUB个人空间+a)]/G-@x3S/a ^)a M
 SORT itab_characteristics BY name.
]\_ D H7s;f0 LOOP AT itab_characteristics .
A!HVr!VbF0 charactdetail-charact_name = itab_characteristics-name.
#^'l&s~_b-e*O"~0 charactdetail-data_type = itab_characteristics-datatype.
+B{ J7imf0 charactdetail-length = itab_characteristics-numberofchars.ITPUB个人空间6i { X Y,vSi8z$_
 charactdetail-status = itab_characteristics-status.
Ey&x,n.~5G uC0 charactdetail-value_assignment =
i5B4[|T }5E0itab_characteristics-valueassignment.
oa5y [-W"`gg/f0 changenumber = itab_characteristics-changenumber.
)?|8\ {x0 valid_date = itab_characteristics-validfrom.
eUkF/HyQ(r{0
'U(`` Ca\&__0W:d0 charactdescr-language_int = itab_characteristics-language.
:~IO@.MZ*Z;@0 charactdescr-language_iso = itab_characteristics-language.ITPUB个人空间C9Px8A;g
 charactdescr-description = itab_characteristics-description.
3G0Fq J(a2Q?1U ?+L0 APPEND charactdescr.
$T8K!U T'?NQ"xKr+q0
?a-\ n5l0 charactvalueschar-value_char = itab_characteristics-value.ITPUB个人空间o rV3Q"bC)[:?w
 APPEND charactvalueschar.
*n~{&nL8?0
^&A-z9f,l Xna }0 charactvaluesdescr-language_int = itab_characteristics-valuelanguageITPUB个人空间^&k'i^z`%Zt[q
.ITPUB个人空间j y+R;c*P-o!m\5cz^
 charactvaluesdescr-language_iso = itab_characteristics-valuelanguageITPUB个人空间!S:PJ+r0w]]B
.ITPUB个人空间;W,f1A+~$M&aR/fA
 charactvaluesdescr-value_char = itab_characteristics-value.ITPUB个人空间 E&r1ANjb pf)_$a
 charactvaluesdescr-description =ITPUB个人空间 a1GM{(_ e0t5r(^w
itab_characteristics-valuedescription.
a&L~ |2b A(o0 APPEND charactvaluesdescr.
4~ g*F&A#n Dk[:Tn0ITPUB个人空间0yB#Y!G1T|y${9]8r
 AT END OF name.ITPUB个人空间6IuLQr,_{
 CALL FUNCTION 'BAPI_CHARACT_CREATE'
S(}q2J8C0 EXPORTING
Q/W"Tg0kWs0 charactdetail = charactdetail
9u*~:a,}c+^Wx0 changenumber = changenumber
$Jz6cR'tmo7^H$Ox0 keydate = valid_date
O5~V;c@:DN Z&G3C0 TABLES
0C/WIo[*W3kb0 charactdescr = charactdescr
9RCtr5?bZF N$l0 charactvalueschar = charactvaluescharITPUB个人空间r_7v&iI%T'}}Z
 charactvaluesdescr = charactvaluesdescr
T'G*~BE5`0 return = return.ITPUB个人空间qY6Z3E'W%E^ d-j+D,l uf!~
ITPUB个人空间l&D[4Q:H8lcq
 LOOP AT return .
%b l QZUgn0 IF return-type = 'I' AND return-number = '021'.ITPUB个人空间;Is5Xp2b*v"s
 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.ITPUB个人空间;jL+joPj8`
 FORMAT COLOR COL_KEY .
l s'f/~Ag1`0 WRITE : / return-message.
g i Y\:P eQ0~5{0 ENDIF.ITPUB个人空间7M4dl,H0v'^
 IF return-type = 'S' OR return-type = 'E'.
-WcR"hK C-BN0 FORMAT COLOR COL_GROUP.ITPUB个人空间Se(\%I"Dx\
 WRITE : / return-message.ITPUB个人空间 A5L?I!e(K-D+~@
 ENDIF.ITPUB个人空间,e m5@T/E?m8jr

O#`TqK0 ENDLOOP.ITPUB个人空间:h,zVe~4n*W`
 REFRESH charactdetail.
%R8Yo.q"u+RtN0 REFRESH charactdescr.
VD6x ]vohM\0 REFRESH charactvalueschar.
I|D+`Ro\T)D0 REFRESH charactvaluesdescr.
$RS3LuD.\@J E0 ENDAT.
KS*I H9h#]0 ENDLOOP.
(b c6z/Fw+RK"V0ITPUB个人空间s!K O3Q:s+Z9j1y6p

4q4l*EcME|0
a3lb#`I7FIF(D0
#T(D(@oIi&y0ENDFORM. "create_character
S"F`cj"B0*&--------------------------------------------------------------------*ITPUB个人空间 W-LuLzDgA*PA!s7^
*& Form. modify_character
Q5d E kd4e$n4g0*&--------------------------------------------------------------------*
/q"G$l;FyH L0* text
i6{1gK \ NOp0*---------------------------------------------------------------------*ITPUB个人空间9vt;I ]/VG%Y
FORM. modify_character .
[9]!_/M(B K0 DATA charactname TYPE bapicharactkey-charactname.ITPUB个人空间*q;U|a-j;gq v~+x
 SORT itab_characteristics BY name.
j+P/E*O+e^0 LOOP AT itab_characteristics .
f.z Z3zT(iu-Q!Z0 charactdetail-charact_name = itab_characteristics-name.ITPUB个人空间1_#B8I k1r+U
 charactdetail-data_type = itab_characteristics-datatype.ITPUB个人空间^~t Tf5r
 charactdetail-length = itab_characteristics-numberofchars.ITPUB个人空间A)GW-JYW9_
 charactdetail-status = itab_characteristics-status.
9w0^ D.w!? X!^e0 charactdetail-value_assignment =
W$|fa(l0itab_characteristics-valueassignment.ITPUB个人空间rsm}l+KE k/Is
 APPEND charactdetail.ITPUB个人空间P8Y:v2n&o @;h P5]c

A2K%OT)k,pU0
sklz/r*G[F DFP)`0 charactdescr-language_int = itab_characteristics-language.ITPUB个人空间3aCZ,V.JQkH[q0@E
 charactdescr-language_iso = itab_characteristics-language.
*q.s3F2sN9x3n J+}0 charactdescr-description = itab_characteristics-description.ITPUB个人空间+LNj/r5_4F
 APPEND charactdescr.
!f]2{7S+R(K7p|T6V0
g"S,@q0P'TG0 charactvalueschar-value_char = itab_characteristics-value.
&zb @/Mex\0 APPEND charactvalueschar.
s Te*[ D2Q/uA-IST0ITPUB个人空间.? K)u c+r2J
 charactvaluesdescr-language_int = itab_characteristics-valuelanguage
-p;FX]hCe @0.ITPUB个人空间Vf};W@$MS,{9E#T
 charactvaluesdescr-language_iso = itab_characteristics-valuelanguage
0Ad.xB ?;^*SJ0.
V9M!On/N%@/`0 charactvaluesdescr-value_char = itab_characteristics-value.ITPUB个人空间 N T e'Va5m |$C
 charactvaluesdescr-description =
2X1q%p%J5@!F |o0itab_characteristics-valuedescription.
'qP2{ h9K$[s0t[7B0 APPEND charactvaluesdescr.ITPUB个人空间\M/[)?s)E1u
 AT END OF name .ITPUB个人空间j y)^3C,yY
 charactname = itab_characteristics-name.
4E0E5GB,WT1c0 CALL FUNCTION 'BAPI_CHARACT_CHANGE'
ah f gpG0 EXPORTINGITPUB个人空间1Q/S`U*]uj vn+j"[
 charactname = charactname
cWDDJ#x*Yh0 TABLES
7sxa U+?;J f uX0 charactdetailnew = charactdetail
JC-iLd_t[/W6m0 charactvaluescharnew = charactvaluescharITPUB个人空间;L bl(XX9N4B
 charactdescrnew = charactdescrITPUB个人空间&nW `i4T,k b:u
 charactvaluesdescrnew = charactvaluesdescrITPUB个人空间5T/lr1YJ2r,LrV
 return = return.ITPUB个人空间7c2IS;t(zdy
ITPUB个人空间aW&t?/e$uuF _:p,n
 LOOP AT return .
4V,b`1IA0v ce#M0 IF return-type = 'I' AND return-number = '022'.
k;d-\"n+I D2eO0 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
P!Jk}d.Mv |Y V0 FORMAT COLOR COL_KEY .
1} z1t5k['a0 WRITE : / return-message.ITPUB个人空间"`*Hg1_ OU g
 ENDIF.ITPUB个人空间J^(Fe5Ok

-?)^G``V8l1u0 IF return-type = 'E' OR return-type = 'S'.
}R,K?N"lCmnH0 FORMAT COLOR COL_GROUP.ITPUB个人空间|%P`8vI~]
 WRITE : / return-message.
r_$^T ^,P8zEO0 ENDIF.
-c|H+@ J0
s} ~'Vz7n0 ENDLOOP.
\9Tw9_s0 REFRESH charactdetail.
1y kGoQ1lA`0 REFRESH charactdescr.ITPUB个人空间P,Ve S!^K*H
 REFRESH charactvalueschar.ITPUB个人空间#db(_0W(~#DQ
 REFRESH charactvaluesdescr.ITPUB个人空间X7SV0`o
 ENDAT.
$mRec#Q[0
%db iaQ_0 ENDLOOP.ITPUB个人空间uO-U&[b5Q2}#X!D

I-_aS5x7D0ENDFORM. "modify_characterITPUB个人空间w\7g;^:Tt0~kZ.f
*&--------------------------------------------------------------------*
xu(I/qepA0*& Form. upload_excelITPUB个人空间!kU#ik[ ^hoI
*&--------------------------------------------------------------------*ITPUB个人空间"W;H;~ ?c@p;d
* text
E$_L(b\W0*---------------------------------------------------------------------*ITPUB个人空间 x7s+@5^-[i7pL
FORM. upload_excel TABLES itab USING sheetname begin_col begin_row .
"n#p){CY&P0 READ TABLE itab_sheet WITH KEY sheet_name = sheetname.
c(s%eL#h$Dv0 IF sy-subrc = 0 .ITPUB个人空间g5[f(@ Ug
 CALL FUNCTION 'Z_ALSM_EXCEL_TO_INTERNAL_TABLE'
? V2^J JH)LV0 EXPORTING
1^F3T I+ed[|r0 filename = filename
l6a ].M'Dd/QT%Q0 z_shname = sheetnameITPUB个人空间1[,scxRz(^
 i_begin_col = begin_colITPUB个人空间Z/M4{`"WF
 i_begin_row = begin_rowITPUB个人空间nE/hYgE
 i_end_col = itab_sheet-max_colITPUB个人空间4^ j] ?G @1@,G
 i_end_row = itab_sheet-max_rowITPUB个人空间&G6];^*c2t7ye)j{4y
 TABLES
:Y0Q[9OT0 intern = simple_tab.ITPUB个人空间*q7p!mYp Z1TZv
ITPUB个人空间8Xb]I]sz l
 PERFORM. cnvt_irregual_table TABLES itab simple_tab.ITPUB个人空间$~6q*]*S*Q
* LOOP AT itab.ITPUB个人空间S Y$Vz'Z&n(Qe3^
* WRITE : / itab.ITPUB个人空间^Z!f;N$A$D0I(^
* ENDLOOP.
n9xh\ fS%k*X7o)A0 ENDIF.ITPUB个人空间2a#UV5Ex} H lc.U
ENDFORM. "upload_excel
(l~*b;kn ~P'gjF"t0
1~&R-DYt j U7N\G*G#o0*&--------------------------------------------------------------------*ITPUB个人空间@6l:Dj(AKA#Q8?`
*& Form. cnvt_irregual_table
_u kK7n^u v7^w%s0*&--------------------------------------------------------------------*ITPUB个人空间-F}E8ujn?+^
* textITPUB个人空间h\1G] _8Gv8Z'J
*---------------------------------------------------------------------*
5q o)Pk5S e n!Sa0* -->TB textITPUB个人空间f J$^ k` Ro
* -->EXCEL_TB textITPUB个人空间r q~ ].q QH
*---------------------------------------------------------------------*ITPUB个人空间Z?&}y|wi}
FORM. cnvt_irregual_table TABLES tb excel_tb .ITPUB个人空间)K)H*Z!H i9v5|`:p
 DATA : len TYPE i,
&yMG*@*Fc0 col TYPE i,
Qa t[N0 offset TYPE i,ITPUB个人空间4n;cyTT.T'SF
 value TYPE string.
8hqF2V jf ~0 DATA : BEGIN OF attri_line,ITPUB个人空间7G*A?5fja
 colnumber TYPE i,ITPUB个人空间%m]m H2l3w7ji/]
 collength TYPE i,ITPUB个人空间m&j-EfI)qj(^)K?o
 END OF attri_line,ITPUB个人空间eV'Xt/a c
 col_attri LIKE TABLE OF attri_line WITH HEADER LINE.
\rh$^*S G6L0 DATA : flg TYPE c VALUE 'X'.
p$e `"}_mN0
6`2u!H1f!s4R8ZO0 FIELD-SYMBOLS TYPE ANY.ITPUB个人空间(O%p+\D v:u
 FIELD-SYMBOLS TYPE ANY.ITPUB个人空间.i n T,@Nq9f
 FIELD-SYMBOLS TYPE ANY .ITPUB个人空间z$mj#Dd0_
 ASSIGN COMPONENT 1 OF STRUCTURE excel_tb TO .ITPUB个人空间x6rC:~*kr
 ASSIGN COMPONENT 2 OF STRUCTURE excel_tb TO .ITPUB个人空间^ ?6Ie!m7d No0J
*------------------------------------------------------------------ITPUB个人空间@-{ l*h-Q.B7|
* get colume lengthITPUB个人空间a\7CpN%|7YW
*------------------------------------------------------------------
M-\2U(_!p:Q;C0 col_attri-colnumber = 1.ITPUB个人空间0x!l$v4UWb8O
 WHILE flg = 'X' .
LW1Q:p+k f0 ASSIGN COMPONENT col_attri-colnumber OF STRUCTURE tb TO .ITPUB个人空间/l^:S+w l7nv-F
 IF sy-subrc = 0 .ITPUB个人空间k2^\q^(G
 DESCRIBE FIELD LENGTH len IN CHARACTER MODE .ITPUB个人空间p Pal iX
 col_attri-collength = len .
;B(UG_ R}}Ub0 APPEND col_attri.
f9?l0i"|0 col_attri-colnumber = col_attri-colnumber + 1 .
S#R6}H_#Z7E*R0 ELSE.ITPUB个人空间F0SQ;V| v1g
 flg = space .
CO%OU:v,m,T5o+~0 ENDIF.
m[)bdT6B-jX0 ENDWHILE.
A4sN%r:g2~a{ {0
BT2d:N$v-i?+w0*----------------------------------------------------------------ITPUB个人空间i,p}`:Ao%P
* assign col row value to innternal table
L/]3MF2j&y}4nUSh0*----------------------------------------------------------------ITPUB个人空间7@+xS O'x^g6t
 SORT excel_tb BY .
/Z{(Dt U:Y2o$jF w0 LOOP AT excel_tb.ITPUB个人空间N(H!~[t;}~7U
ITPUB个人空间6j#Y P4x~#h)|3oy][
 ASSIGN COMPONENT 2 OF STRUCTURE excel_tb TO .
M~*p{3Y0} n c0 col = .ITPUB个人空间5q^#K q|
 ASSIGN COMPONENT 3 OF STRUCTURE excel_tb TO .
@[cq8O1T3^#M0 value = .
_^(O7b];q0ITPUB个人空间+@%I.ch4mM
 READ TABLE col_attri WITH KEY colnumber = col .ITPUB个人空间6?8c9C~^{zk
 IF sy-subrc = 0 .ITPUB个人空间"g;P4FU1Em
 LOOP AT col_attri WHERE colnumber < col.
Ql-_vb%\ru5L0 ffset = col_attri-collength + offset.
jn:D*F2W |-t_0 ENDLOOP.
SM c2b K2RK0 WRITE value TO tb+offset.
q WhO['ZjC!t Y0 ffset = 0 .
5V H1cl2n/|/m(B0 ENDIF.ITPUB个人空间`/_(P3ply4uU
ITPUB个人空间oLmM5w
 ASSIGN COMPONENT col OF STRUCTURE tb TO .
H6^9D!Tql,E4m0 IF sy-subrc = 0 .
Q2O(^7k_4G E0 DESCRIBE FIELD LENGTH len IN CHARACTER MODE .
t2|!A$y%u9g;j*S0 ELSE.ITPUB个人空间"? V6uF/w9b
 IF NOT tb IS INITIAL.
'b3Z^I%`$Q4U0 APPEND tb.ITPUB个人空间a$h5U#O)\ j
 ENDIF.ITPUB个人空间#oQ:{)c j+|?-j
 CLEAR tb.
*K_wRo0 CLEAR offset .
-kn!r~#?0 CLEAR col.
`ho?[5OO q0 CLEAR len.
G,vQMm)OP#K |0 CONTINUE.
)}8@bvo7}0 ENDIF.
8G~H{7`B$\;QA-c%A0 ASSIGN COMPONENT 1 OF STRUCTURE excel_tb TO .ITPUB个人空间/L&[F*j^0t4kf_%Dh
 AT END OF .ITPUB个人空间k-vz2dJs.b
 APPEND tb.ITPUB个人空间:r ufnh6D{EI H{
 CLEAR tb.ITPUB个人空间}U(g gBr*S}_$X v
 CLEAR offset .
*WJ&]FE9hB0 CLEAR col.ITPUB个人空间? [X"Rl ZSi&w
 CLEAR len.ITPUB个人空间r!L3yHm6J/~ `2O
 ENDAT.ITPUB个人空间 q7kPD*iV
 ENDLOOP.
~7}(_._A|0ENDFORM. "cnvt_irregual_tableITPUB个人空间G2HS kZ4rHXp$E

cI3?R6|tb0
9n!K9p3|*n ~0*&--------------------------------------------------------------------*
W:Z6oK$WE0*& Form. get_sheets_desc
ue Mwv(F0*&--------------------------------------------------------------------*
dj&g(tAPd+^0* text
x,w2x"w/M4yx0*---------------------------------------------------------------------*ITPUB个人空间n1o-U`\;rD)x5r
* -->FILENAME textITPUB个人空间U"D:wx8z*A"Z @Ktl
*---------------------------------------------------------------------*
2}ElH F9U#m`0FORM. get_sheets_desc USING filename .ITPUB个人空间7P k!hPb8W$@
 DATA excel TYPE ole2_object.
t_7VS4WaO"n0 DATA books TYPE ole2_object.ITPUB个人空间,P p+M%_^9uS
 DATA book TYPE ole2_object.ITPUB个人空间v0W:L/a8r,Y
 DATA application TYPE ole2_object.ITPUB个人空间\ F@-{S8n0Z4U;o
 DATA sheets TYPE ole2_object.
d-x6zTOjx? {'S0 DATA sheet TYPE ole2_object.
3iS%l^K-x!^0 DATA sheet_name TYPE string.ITPUB个人空间:byyx!OJp
 DATA i_sheets TYPE i.
rQ ^$fq2`Dly0 DATA nrows TYPE i.ITPUB个人空间]t9Hh3|~
 DATA cells TYPE ole2_object.ITPUB个人空间+T1h(j9wy(~Ls4Q6eX
 DATA specialcells TYPE ole2_object.
p&_6bF+h)b:cd| O0 FIELD-SYMBOLS:ITPUB个人空间j5z'sV*Wm*F{*w Z^
 TYPE ANY.ITPUB个人空间\pLhFE)t,C'Q$V
ITPUB个人空间8L$H0\9~.O
 DEFINE m_message.
S3~X$H;Z7sE.C0 case sy-subrc.ITPUB个人空间[ }x-X8T[6J
 when 0.ITPUB个人空间G|"Uf,w%pSC"G
 when 1.
w+k$| W%z.J]4v0 message id sy-msgid type sy-msgty number sy-msgnoITPUB个人空间!kP w5G&R/M j;u
 with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ITPUB个人空间a(]mo8i^
 stop.ITPUB个人空间 fn o:j+O a&va
 when others.ITPUB个人空间$COyy+S(g
 message s000 with 'Errors occur on Excel'.
J8jS? ];p?0 stop.ITPUB个人空间h)TocEl6P
 endcase.
:N]xf+J0 END-OF-DEFINITION.ITPUB个人空间9SCr3r/LJ!P
* open file in Excel
:x^(Rn7V_*ML0
u4x K.r(r*Yk%c0 IF excel-header = space OR excel-handle = -1.
v,h(wJ H/S:pPK A(m0 CREATE OBJECT excel 'Excel.Application'.
i2yY q? B+}S)h+u0 m_message.ITPUB个人空间'w#S}A/@yd8k%diC
 ENDIF.
)pO%O5q"u,C0* SET PROPERTY OF excel 'Visible' = 1.
Q"f1vC)K0 m_message.
W'K5dmg']0
5Sa9[8H1}5_-C,UW(k0 CALL METHOD OF excel 'Workbooks' = books .
u Uzu%m1x;P']'d\0 m_message.ITPUB个人空间f-RwoHK
ITPUB个人空间%FYo,L5x5Y
 CALL METHOD OF books 'open'
L2D \s(t,W9dK-s0 EXPORTINGITPUB个人空间 OW1s8FxZp
 #1 = filename.
e k c;e-b}5W{L)F0* m_message.ITPUB个人空间x'c:pH5[oR+[0q;I
 IF sy-subrc <> 0 .ITPUB个人空间:thPk#_%D9Mq1^

/]ZfI[/V+e0 MESSAGE s368(00) WITH 'Could not open file:' filename.
6Rk%OA+^.jG(?;J0 STOP.
;DC8N${.k8T7D7Qw0 ENDIF.
H No b/p.^0
e#qyvqd*v0 GET PROPERTY OF books 'application' = application.
m5c$|(Jfl{.H0 m_message.ITPUB个人空间sfD A]XU

IL*DQB~0 GET PROPERTY OF application 'sheets' = sheets.ITPUB个人空间m1Dfj)Jw
 m_message.
tP|!Sh*]q,J'f0
&{!PO C{!Xq]0
Y*[&U A8Vy ]${h0 GET PROPERTY OF sheets 'Count' = i_sheets.
q%B-T:k"c0
q h\9~d q0 WHILE i_sheets GE 1 .ITPUB个人空间7X;{gP2G
 GET PROPERTY OF sheets 'Item' = sheet
;K,F j7l;gs0 exporting #1 = i_sheets.ITPUB个人空间O2\6o? |6c
 m_message .
Y7U8c'e6z7dK} ?3n2[0 GET PROPERTY OF sheet 'Name' = sheet_name.ITPUB个人空间Ag4R Oz
 m_message .ITPUB个人空间(c#J#q-ll2}

6o7~9n6P1tL4w&_?0 GET PROPERTY OF sheet 'Cells' = cells.
e"A)b,^`]O0 m_message .ITPUB个人空间,b7{v_ h WBj

rL%zFg"au0 CALL METHOD OF cells 'SpecialCells' = specialcells
|"V*xV'I'D$G0 EXPORTING
dQ^ dx5H#me4KDy0 #1 = 11.ITPUB个人空间\9W o"F5Zz
 m_message .
)l:L(cdVb+nqj0 GET PROPERTY OF specialcells 'Row' = itab_sheet-max_row.ITPUB个人空间'R0Qx,G3K|u
 m_message .ITPUB个人空间1X\4Z}8['a#E
 GET PROPERTY OF specialcells 'Column' = itab_sheet-max_col.ITPUB个人空间7p#ckW2V5m
 m_message .ITPUB个人空间R Qf*w%?GB
 i_sheets = i_sheets - 1 .ITPUB个人空间.?v9WW4j6|8D0{L+e `
 itab_sheet-sheet_name = sheet_name.ITPUB个人空间(H$vDX+w
 APPEND itab_sheet.ITPUB个人空间7Etr5g2[@ r
 ENDWHILE.
s!@Lt9V m3n0* close excel process
m }5R2e u)b0 CALL METHOD OF excel 'quit'.ITPUB个人空间;})q G4f0O!cb
ITPUB个人空间[,sQ7r*kqg
 m_message.
^N H)W6j,_0* LOOP AT data_tab.
8PX1en.l6Sh0* ASSIGN COMPONENT sy-tabix OF STRUCTURE data_tab TO .ITPUB个人空间;w7s1Xg `n
* WRITE : / .
i.c(wN:_ m0* ENDLOOP.ITPUB个人空间 S U|c-W*wLi

,^cUc [Y)M0 FREE excel .ITPUB个人空间bY6lT#_a)mu
 FREE books .ITPUB个人空间Ru(Nm!evk
 FREE book .
:l%C5P3FRVlS0 FREE application .
2g4xw:~a` BU_J0 FREE sheets.ITPUB个人空间2J,c K{Sxl1x7w
 FREE sheet .
$L|r|(W9w5d+k\yox0ITPUB个人空间DL9y@`m
ENDFORM. "get_sheets_desc

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-20  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 4991
  • 日志数: 760
  • 文件数: 1
  • 书签数: 4
  • 建立时间: 2008-01-17
  • 更新时间: 2008-08-20

RSS订阅

Open Toolbar