This document provides steps to create a BAPI (Business Application Programming Interface) that reads system status for a production order from tables JEST and TJ02T. It defines structures for import/export parameters and tables, writes a function module, and uses the BAPI wizard to expose the function module as a BAPI method. The function module reads the order status and status text from the tables and returns it in the BAPI return structure.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
54 views
STEP 1 - Define A Structures For The BAPI
This document provides steps to create a BAPI (Business Application Programming Interface) that reads system status for a production order from tables JEST and TJ02T. It defines structures for import/export parameters and tables, writes a function module, and uses the BAPI wizard to expose the function module as a BAPI method. The function module reads the order status and status text from the tables and returns it in the BAPI return structure.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 17
BAPI STEP BY STEP.
1. About the Example
2. STEP 1 - Define a structures for the BAPI 3. STEP 2 - rite !unction "o#ule $. STEP 3 - %reate the API "etho# &sin' the BAPI I(A)D *. STEP $ - !inal steps About the example This BAPI reads system status for a production order from table JEST and system status text from table TJ02T Name ZGetOrderStatus Function group ZBAPISTATUS Function module: Z_BAPI_GET_ORDER_STATUS Import parameters: ORDER_STATUS_IMPORT tpe !"API_ORDER_STATUS_IMPORT: AUFNR Order number (Keyfield) SPRAS Language ExcludeInactive - Checkbox - Exclude inactive status Ta#les T_"APISTAT tpe !"APISTAT: O"$NR like JE!-O"J#$ STAT like JE!-!%! INACT like JE!-&#%C! TXT04 like !J'(!-!)!'* TXT30 like!J'(!-!)!+' E%port parameters RETURN like BAPIRETURN STEP 1 - Defne a structures for the BAPI In this step a structures for the parameters and tables of the function module used for the BAPI are defned !se Data type -> Structure ,efine the follo-ing structures. /"%0&1O$,E$1!%!21&30O$! -hich contains the follo-ing fields. O$,E$&, Order number (Keyfield) 0$% Language Exclude&nactive - Checkbox - Exclude inactive status /"%0&!%!. O"J#$ like JE!-O"J#$ !%! like JE!-!%! &#%C! like JE!-&#%C! !)!'* like !J'(!-!)!'* !)!+' like!J'(!-!)!+' Important note 4ou -ill have to define a structure for every 5arameter in the "%0&6 4ou cannot use the same structures used in existing a55lications because "%0& structures are fro7en -hen "%0&s are released and then there are restrictions on changing them6 !"API#$R%ER#STATUS#I&P$RT !"APISTAT STEP ' ( )rite Function &odule Important note*. Each "%0& must have its o-n function grou56 2nder the attributes tab remember to select 0rocessing !y5e Remote Enabled module8 other-ise the function module cannot be invoked via $9C and used as a "%0& &m5ort:Ex5ort 5arameters can only be "4 ;%L2E for an $9C enabled function module <e are only creating one "%0& in this exam5le8 but you can create related "%0&s in the same function 5ool8 so they -ill be able to share global data6 Attri+ute*
Import Parameter* Export Parameter*
Ta+le*
Code Note* !he subroutine E!1$E!2$#13E%=E is a standard routine used for "%0&s that use the "%0&$E!2$# structure &n form /1"%0&1=E!1O$,E$14!E31!%!2 there is a test IF 1 = 26 &f the test is true a message is dis5layed6 !he condition -ill obviously never be true8 and -e -ill never -ant to dis5lay a message in a "%0&6 !he reason -hy it is included is8 that it create a reference for the message8 so that the <>E$E 2E, functionality can be used for the message6 !his is the %0 standard -ay to handle it8 co5ied from the Com5any Code =etList "%0&6 INC,U%E ,!"APISTATUSUXX ***************************************************************** * THIS FILE IS GENERATED BY THE FUNCTION LIBRARY. * * NEVER CHANGE IT MANUALLY, PLEASE! * ***************************************************************** INCLUDE LZBAPISTATUSU02. "Z_BAPI_GET_ORDER_SYSTEM_STATUS INCLUDE LZBAPISTATUSTOP - Global a!a 92#C!&O#-0OOL /"%0&!%!26 ?3E%=E-&, /+ !y5es. begin of !y5e1t@'(t8 istat like t@'(t-istat8 txt'* like t@'(t-txt'*8 txt+' like t@'(t-txt+'8 end of ty5e1t@'(t6 ,%!%. - %eclaration* .or TA",E parameter !1"%0&!%! like /"%0&!%! occurs '8 =1"%0&!%! like /"%0&!%!8 - Ta+le .or o+/ect text* t1t@'(t ty5e ty5e1t@'(t occurs '8 g1t@'(t ty5e ty5e1t@'(t6 - Structure .or return me**a0e* ,%!%. "E=&# O9 3E%=E8 3=!4 L&KE 4-3=!48 3=&, L&KE 4-3=&,8 3=#O L&KE 4-3=#O8 3=;A L&KE 4-3=;A8 3=;( L&KE 4-3=;(8 3=;+ L&KE 4-3=;+8 3=;* L&KE 4-3=;*8 E#, O9 3E%=E6 INCLUDE LZBAPISTATUSF"# - S$b%o$!&'() ---INC,U%E ,!"APISTATUSF01 2 -((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((- -3(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((- -3 Form SET#RETURN#&ESSA4E -3(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((- - T5i* routine i* u*ed .or *ettin0 t5e "API return me**a0e2 - T5e routine i* a *tandard routine .or "API* t5at 5andle* t5e me**a0e - *tructure .or t5e "APIRETURN *tructure2 It 5a* +een copied .rom t5e - "API Compan6 Code 4etli*t -((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((- - ((7P#&ESSA4E text - 8((P#RETURN text -((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((- form E!1$E!2$#13E%=E 2&#= ;%L2E(013E%=E) L&KE 3E%=E C>%#=&#= 01$E!2$# L&KE "%0&$E!2$#6 C>ECK #O! 3E%=E & &#&!&%L6 C%LL 92#C!&O# B"%L<1"%0&$E!2$#1=E!B E)0O$!&#= !40E C 013E%=E-3=!4 CL C 013E%=E-3=&, #23"E$ C 013E%=E-3=#O 0%$A C 013E%=E-3=;A 0%$( C 013E%=E-3=;( 0%$+ C 013E%=E-3=;+ 0%$* C 013E%=E-3=;* D LO=1#O C B B D LO=13=1#O C B B &30O$!&#= "%0&$E!2$# C 01$E!2$# E)CE0!&O# O!>E$ C A6 endform6 ? E!1$E!2$#13E%=E FUNCTION Z*BAPI*GET*ORDER*STATUS 92#C!&O# 71ba5i1get1order1system1status6 -9(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( -9-9,ocal inter.ace -9 I&P$RTIN4 -9 :A,UE;I#AUFNR< T=PE AUFNR -9 :A,UE;I#SPRAS< T=PE SPRAS %EFAU,T S=(,AN4U -9 :A,UE;I#EXC,U%EINACTI:E< T=PE C>AR1 $PTI$NA, -9 EXP$RTIN4 -9 :A,UE;RETURN< T=PE "APIRETURN -9 TA",ES -9 T#"APISTAT STRUCTURE !"APISTAT -9(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ,%!%. l1aufnr L&KE afko-aufnr8 l1ob@nr L&KE @est-ob@nr6 ******************************************** * C+(,- &. o%(% (/&)!) ******************************************** SELECT SINGLE aufnr FROM afk INTO !_aufnr "#ERE aufnr $ BAPI_ORDER_STATUS_IMPORT%r&'r(&. IF )*%)u+r, NE 0. CLEAR -'))a.'. -'))a.'%-)./* $ 0E0. -'))a.'%-).(& $ 0Z10. -'))a.'%-).n $ 00000. -'))a.'%-).23 $ BAPI_ORDER_STATUS_IMPORT%r&'r(&. PERFORM )'/_r'/urn_-'))a.' USING -'))a.' C#ANGING r'/urn. IF 3 $ 2. * T+( o'l0 %(a)o' !o &',l$( !+&) )!a!(1('!, !+a! 2&ll ob3&o$)l0 * '(3(% (/(,$!(, &) !+a! &! 2&ll ,%(a!( a %(.(%(,(',( )o !+a! 0o$ * ,a' .&' o$! 2+(%( a 4a%!&,$la% 1())a5( &) b(&'5 $)(. T+&) * .$',!&o'al&!0 &) $)( b0 !+( BAPI) 4%o5%a11( b0 SAP MESSAGE '0004516. ENDIF. ENDIF. C#EC7 r'/urn IS INITIAL. -------------------------------------------- - Read order *tatu* -------------------------------------------- CO#C%!E#%!E BO$B "%0&1O$,E$1!%!21&30O$!-orderid &#!O l1ob@nr6 &9 "%0&1O$,E$1!%!21&30O$!-i1excludeinactive C B)B6 ELEC! ob@nr stat inact 9$O3 @est &#!O !%"LE t1ba5istat <>E$E ob@nr C l1ob@nr %#, inact EF B)B6 ELE6 ELEC! ob@nr stat inact 9$O3 @est &#!O !%"LE t1ba5istat <>E$E ob@nr C l1ob@nr6 E#,&96 &9 sy-subrc EF '6 - No o+/ect *tatu* .ound CLE%$ message6 message-msgty C BEB6 message-msgid C B/+B6 message-msgno C B''AB6 message-msgvA C "%0&1O$,E$1!%!21&30O$!-orderid6 0E$9O$3 set1return1message 2&#= message C>%#=&#= return6 &9 A C (6 3E%=E e''A(7+)6 E#,&96 E#,&96 C>ECK return & &#&!&%L6 -------------------------------------------- - Read order *tatu* text* -------------------------------------------- ELEC! istat txt'* txt+' 9$O3 t@'(t &#!O !%"LE t1t@'(t 9O$ %LL E#!$&E &# t1ba5istat <>E$E istat C t1ba5istat-stat %#, s5ras C "%0&1O$,E$1!%!21&30O$!-i1s5ras6 O$! t1t@'(t "4 istat6 LOO0 %! t1ba5istat &#!O g1ba5istat6 $E%, !%"LE t1t@'(t <&!> KE4 istat C g1ba5istat-stat "&#%$4 E%$C> &#!O g1t@'(t6 &9 sy-subrc C '6 3O;E. g1t@'(t-txt'* !O g1ba5istat-txt'*8 g1t@'(t-txt+' !O g1ba5istat-txt+'6 3O,&94 t1ba5istat 9$O3 g1ba5istat !$%#0O$!&#= txt'* txt+'6 E#,&96 E#,LOO06 E#,92#C!&O#6 STEP 3 ( Create t5e API &et5od U*in0 t5e "API )I!AR% !he "%0& -i7ard is used to!o ex5ose the remote function module as a "%0&6 !he -i7ard -ill generate some additional code8 so the function module is a valid method of the "O$6 !his allo-s the "%0i to be called as a -orkflo- method in addition to be called by an outside 5rogram6 No!(6 Each function module corres5onds to a method in the "O$ =o to the "usiness Ob@ect "uilder <OA6 4ou can either create the ne- Ob@ect ty5e as a subty5e of an existing business ob@ect or create a ne- business ob@ect from scratch6 &n this exam5le it -ould be obvious to create the Ob@ect ty5e as a subty5e of "2(''G 0roduction order6 >o-ever8 to illustrate ho- to create a ne- Ob@ect ty5e from scratch8 -e -ill do this6 &n the Object/Interface type field -rite the name of the ne- "usiness Ob@ect. /O$,E$!%!6 0ress enter and fill in the additional fields necessary to create the ob@ect ty5e6 u5erty5e. #ot relevant because -e are creating our ob@ect from scratch 0rogram6 !his is the name of the 5rogram -here the -i7ard generates code for the Ob@ect ty5e8 #O! the function module -e created earlier6 !he 5rogram name must not be the name of an existing 5rogram6 0ress enter and create the ne- business ob@ect6 #ote that -hen you create the business ob@ect a standard interface8 an attribute Ob@ect!y5e and the methods ExistenceCheck and ,is5lay are automatically generated6 !hese cannot be changed H !he next ste5 is to add the /1"%0&1=E!1O$,E$1!%!2 method to the business ob@ect6 elect Utlte! -> "#I met$od! -> "dd met$od and -rite the name of the function module in the dialog box6 #ext the dialog ox sho- belo- -ill be sho-n6 !his is the start screen of the "%0& -i7ard6 0roceed -ith -i7ard by 5ressing the button6 %fter you have finished the -i7ard8 you -ill notice that the /=etOrdertatus has been added to the business ob@ect. 4ou can double-click on the method to see its 5ro5erties6 !o use the business ob@ect you must change the Ob@ect ty5e status to &m5lemented6 2se menu Edit-FChange releases status-FOb@ect ty5e-F!o im5lemented6 #o you can test the ob@ect (0ress 9I)6 #ote that the "%0& -i7ard has added a -ra55er class for the function module so it can be sued as method in the business ob@ect6 Choose menu %oto->#ro&ram to dis5lay the 5rogram. ----- Implementation o. o+/ect t6pe !$R%ERSTAT ----- &#CL2,E EO"JEC!F6 "E=,%!% O"JEC!6 9 %o not c5an0e22 %ATA i* 0enerated - onl6 private mem+er* ma6 +e in*erted into *tructure private ,%!%. 9 +e0in o. private? 9 to declare private attri+ute* remove comment* and 9 in*ert private attri+ute* 5ere 222 9 end o. private? KE4 L&KE <O!O"J&,-O"JKE46 E#,1,%!% O"JEC!6 ? ,o not change66 ,%!% is generated "E=
E!>O, /=E!O$,E$!%!2 C>%#=&#= CO#!%&#E$6 ,%!%. "%0&O$,E$!%!2&30O$! L&KE /"%0&1O$,E$1!%!21&30O$!8 $E!2$# L&KE "%0&$E!2$#8 !"%0&!%! L&KE /"%0&!%! OCC2$ '6 <C1=E!1ELE3E#! CO#!%&#E$ B"a5iOrdertatus&m5ortB "%0&O$,E$!%!2&30O$!6 <C1=E!1!%"LE CO#!%&#E$ B!"a5istatB !"%0&!%!6 CA,, FUNCTI$N @!#"API#4ET#$R%ER#STATUS@ E)0O$!&#= "%0&1O$,E$1!%!21&30O$! C "%0&O$,E$!%!2&30O$! &30O$!&#= $E!2$# C $E!2$# !%"LE !1"%0&!%! C !"%0&!%! E)CE0!&O# O!>E$ C 'A6 C%E 4-2"$C6 <>E# '6 ? OK <>E# O!>E$6 ? to be im5lemented E#,C%E6 <C1E!1ELE3E#! CO#!%&#E$ B$eturnB $E!2$#6 <C1E!1!%"LE CO#!%&#E$ B!"a5istatB !"%0&!%!6 E#,13E!>O,6 STEP 7 - F&'al )!(4) <hen the "usiness ob@ect has been checked and the documentation created8 the follo-ing ste5s must be carried out. Release the BAPI funti!n "!dule #in the $unti!n Builder%. $elease the business ob@ect ty5e (in the "O$ Object'ype -> ($an&e relea!e !tatu! to -> Implemented )6 Release the BAPI as a "eth!d in the BOR #Release the "eth!ds &!u has reated ' Set the urs!r !n the "eth!d then Edit -> Change release status -> Object type component -> To released % 9or 5otential -rite "%0&s. $elease the &,oc and its segments Yu ,an n8 &()9!a* /:' BAPI (n /:' BAPI E;9!r'r< )$o need! "*"#er!+++ The functional person's tool for stress testing and data conversions..