VBELN in Purchase Order
Dear Gurus,
my customer wants to do pricing in Purchase Order related to a Sales Order number (VBELN). Problem is, that it is not available in Purchase Order. I know that I can get it via purchase requisition but in KOMK there is no such thing like BANFN.
Could you please give me a hint, how to easily get the VBELN into the PO?
Thanks in advance!
Frank
Frank Pupkes wrote:
> Dear Mylène,
>
> thanks for the quick reply. The documents are directly related (Sales Order --> PR --> PO --> Customer Order Backlog).
> The problem is, that the field, that you mentioned, is in COBL-KDAUF (structure). Since I am not that good with ABAP I am not sure how to geht it into the pricing procedure.
Dear Frank,
since it is an accounting term of the PO, the data you desire should be in table EKKN - well, at least after the PO has been saved once (EKKN-VBELN). After having that number you can read the pricing information of that sales order ... don't ask me how, I'm not a developer, sorry )
So, at which point in time do you need that information? Are you creating the PO or are you maintaing it? In case of creating - you should be able to find the sales data in the PR (in this case table EBKN, field VBELN). After that the procedure should be the same ... somehow read that sales order ...
Similar Messages
-
Open Purchase Order UPload Using the BAPI 's
i need to upload the open Purchase Order using the BAPI function BAPI_PO_CREATE1., below is the given fileds blod are for Header, header will Repeat for the line items,can any one help me out using the BAIP's for upload the PO, i need sample code for this ........
Thanks & Regards
Raghu
<u>Field Name Field Description Type Length</u>
<b>EBELN Purchasing Document Number CHAR 010 X
BUKRS Company Code CHAR 004 MN10 C
EKORG Purchasing Organization CHAR 004 MN00 C
EKGRP Purchasing group CHAR 003 X
BSART Order type (Purchasing) CHAR 004 X
LIFNR Account Number of Vendor or Creditor CHAR 010 X
BEDAT Purchase Order Date DATS 010 X
ZTERM Terms of payment key CHAR 004 X
WAERS Currency Key CUKY 005 X
INCO1 Incoterms (part 1) CHAR 003 X
INCO2 Incoterms (part 2) CHAR 028 X</b>
EBELP Item Number of Purchasing Document NUMC 005 X
EMATN Material number CHAR 018 X
WERKS Plant CHAR 004 X
LGORT Storage location CHAR 004 X
EPSTP Item category in purchasing document CHAR 001 X
KNTTP Account assignment category CHAR 001 X
EINDT Item delivery date DATS 010 X
MENGE "Purchase order quantity (direct input, transfer of POs)" CHAR 013 X
MEINS Order unit UNIT 003 X
NETPR "Net price: Document currency (direct input, transfer of" CHAR 011 X
PEINH "Price unit (direct input, transfer of POs)" CHAR 005 X
BPRME Order Price Unit (Purchasing) UNIT 003 X
BPUMZ Numerator: Conversion OPUn into OUn (direct input of POs CHAR 005 X
BPUMN Denominator: Conversion OPUn into OUn (direct input of P CHAR 005 X
SAKTO Cost element CHAR 010 X
KOSTL Cost Center CHAR 010 X
VBELN Sales and Distribution Document Number CHAR 010 X
VBELP Sales document item NUMC 006 X
WEMPF Goods recipient CHAR 012 X
WEBTH "Amount in local currency (direct input, transfer of POs)" CHAR 013 X
WEBTF "Amount in document currency (direct input, transfer of P" CHAR 013 X
WEREF Flag for treatment of GR/IR (direct input of POs) CHAR 001 X
SPINF Indicator: Update info record CHAR 001 X
WEPOS Goods Receipt Indicator CHAR 001 X
REPOS Invoice receipt indicator CHAR 001 Xi need to upload the open Purchase Order using the BAPI function BAPI_PO_CREATE1., below is the given fileds blod are for Header, header will Repeat for the line items,can any one help me out using the BAIP's for upload the PO, i need sample code for this ........
Thanks & Regards
Raghu
<u>Field Name Field Description Type Length</u>
<b>EBELN Purchasing Document Number CHAR 010 X
BUKRS Company Code CHAR 004 MN10 C
EKORG Purchasing Organization CHAR 004 MN00 C
EKGRP Purchasing group CHAR 003 X
BSART Order type (Purchasing) CHAR 004 X
LIFNR Account Number of Vendor or Creditor CHAR 010 X
BEDAT Purchase Order Date DATS 010 X
ZTERM Terms of payment key CHAR 004 X
WAERS Currency Key CUKY 005 X
INCO1 Incoterms (part 1) CHAR 003 X
INCO2 Incoterms (part 2) CHAR 028 X</b>
EBELP Item Number of Purchasing Document NUMC 005 X
EMATN Material number CHAR 018 X
WERKS Plant CHAR 004 X
LGORT Storage location CHAR 004 X
EPSTP Item category in purchasing document CHAR 001 X
KNTTP Account assignment category CHAR 001 X
EINDT Item delivery date DATS 010 X
MENGE "Purchase order quantity (direct input, transfer of POs)" CHAR 013 X
MEINS Order unit UNIT 003 X
NETPR "Net price: Document currency (direct input, transfer of" CHAR 011 X
PEINH "Price unit (direct input, transfer of POs)" CHAR 005 X
BPRME Order Price Unit (Purchasing) UNIT 003 X
BPUMZ Numerator: Conversion OPUn into OUn (direct input of POs CHAR 005 X
BPUMN Denominator: Conversion OPUn into OUn (direct input of P CHAR 005 X
SAKTO Cost element CHAR 010 X
KOSTL Cost Center CHAR 010 X
VBELN Sales and Distribution Document Number CHAR 010 X
VBELP Sales document item NUMC 006 X
WEMPF Goods recipient CHAR 012 X
WEBTH "Amount in local currency (direct input, transfer of POs)" CHAR 013 X
WEBTF "Amount in document currency (direct input, transfer of P" CHAR 013 X
WEREF Flag for treatment of GR/IR (direct input of POs) CHAR 001 X
SPINF Indicator: Update info record CHAR 001 X
WEPOS Goods Receipt Indicator CHAR 001 X
REPOS Invoice receipt indicator CHAR 001 X -
Purchase Order Report with Me22n.....Kindly help its
Hi Friends
Here is my requirement.
I have developed a purchase order alv report, and it is working perfectly.Now i want to give a provision to the user to view the desired purchase order from the report itself by taking him to ME22n transaction.
any kind of solution is welcom.
Thanks a lot to all.
Mrutyun
Edited by: Vijay Babu Dudla on Dec 3, 2008 12:20 AMHi Tripathy,
this is simple. when you double click you need to capture the clicked record and then set the parameter ID and then call transaction.
REPORT ZTEST_ALV_CHECK .
TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
L_LAYOUT type slis_layout_alv,
x_events type slis_alv_event,
it_events type SLIS_T_EVENT.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
CHK(1),
END OF ITAB.
SELECT VBELN
POSNR
FROM VBAP
UP TO 20 ROWS
INTO TABLE ITAB.
X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_LAYOUT-window_titlebar = 'Popup window'.
x_events-NAME = SLIS_EV_END_OF_PAGE.
x_events-FORM = 'END_OF_PAGE'.
APPEND x_events TO iT_EVENTS.
CLEAR x_events .
x_events-NAME = SLIS_EV_TOP_OF_PAGE.
x_events-FORM = 'TOP_OF_PAGE'.
APPEND x_events TO iT_EVENTS.
CLEAR x_events .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = L_LAYOUT
<b> I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'</b>
IT_FIELDCAT = IT_FIELDCAT
it_events = it_events
* I_SCREEN_START_COLUMN = 10
* I_SCREEN_START_LINE = 1
* I_SCREEN_END_COLUMN = 50
* I_SCREEN_END_LINE = 20
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM TOP_OF_PAGE.
* BREAK-POINT.
WRITE: / 'TOP_OF_PAGE'.
ENDFORM.
FORM END_OF_PAGE.
* BREAK-POINT.
WRITE: / 'END_OF_PAGE'.
ENDFORM.
*& Form STATUS
* text
* -->P_EXTAB text
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'STATUS'.
ENDFORM. " STATUS
*& Form USER_COMMAND
* text
* -->R_UCOMM text
* -->RS_SELFIELD text
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
case r_ucomm.
when 'BACK' or 'CANC' or 'EXIT'.
leave to screen 0.
when '&IC1'.
set parameter id 'AUN' field rs_selfield-value.
call transaction 'VA03' and skip first screen.
endcase.
ENDFORM. "USER_COMMAND
the above code takes you to Sales order Display VA03 similarly you should code,
don't forget to set the pf-satus and user-command. and enable F2 key with &IC1.
Regards
vijay -
Displaying Purchase order in report
Hi Expert
I am modifing a report for Mangement , They want to display purchase order in the report .....So I did the following modification but when I run the report all the fields are displaying and purchase order is showing empty, though I have added the po in the table and if you see my coding for adding po
data: vbkd-bstkd.
clear po_number.
select single bstkd into po_number
from vbkd
where vbeln = s903-vgbel.
call function 'RSAQRT_TEXTFIELD_CONTEXT'
exporting name = 'S903'
struc = S903.
call function 'RSAQRT_TEXTFIELD_CALL'
exporting struc = S903
name = 'S903'
fname = 'MATNR'
importing text = TEXT_S903_MATNR.
Can anyone help me please ....................it is very urgent
include /1BCDWB/IQ000000000226DAT
*{ INSERT 2
constants:
begin of %iqid,"type aqliqid
workspace type aql_wsid value ' ',
usergroup type aql_ugroup value 'SALES',
query type aql_query value 'BILL_DEL',
lid type aql_lid value 'G00',
struct type aql_tname value '/1BCDWB/IQ000000000226',
infoset type aql_iset value 'S903',
end of %iqid.
data %runmode type aqlimode.
data %seloptions type table of rsparams with header line.
field-symbols <%selopt> type rsparams_tt.
data TEXT_S903_FKART like TVFKT-VTEXT.
data TEXT_S903_FKSTO like DD07D-DDTEXT.
data TEXT_S903_GEWEI like T006A-MSEHL.
data TEXT_S903_KDKG1 like TVKGGT-VTEXT.
data TEXT_S903_KDKG2 like TVKGGT-VTEXT.
data TEXT_S903_KDKG3 like TVKGGT-VTEXT.
data TEXT_S903_MATNR like MAKT-MAKTX.
data TEXT_S903_MATNR_01 like MAKT-MAKTX.
data TEXT_S903_PERIV like T009T-LTEXT.
data TEXT_S903_PKUNAG like KNA1-NAME1.
data TEXT_S903_PKUNAG_07 like KNA1-NAME1.
data TEXT_S903_PKUNWE_01 like KNA1-NAME1.
data TEXT_S903_PMATN like MAKT-MAKTX.
data TEXT_S903_SPART like TSPAT-VTEXT.
data TEXT_S903_VKBUR like TVKBT-BEZEI.
data TEXT_S903_VKBUR_05 like TVKBT-BEZEI.
data TEXT_S903_VKORG like TVKOT-VTEXT.
data TEXT_S903_VKORG_03 like TVKOT-VTEXT.
data TEXT_S903_VOLEH like T006A-MSEHL.
data TEXT_S903_VRKME like T006A-MSEHL.
data TEXT_S903_VSTEL like TVSTT-VTEXT.
data TEXT_S903_VTWEG like TVTWT-VTEXT.
data TEXT_S903_VTWEG_04 like TVTWT-VTEXT.
data TEXT_S903_WAERK like TCURT-LTEXT.
data TEXT_S903_WERKS like T001W-NAME1.
data TEXT_S903_WERKS_01 like T001W-NAME1.
data TEXT_S903_ZZ_MGN like DD07D-DDTEXT.
data SP_ADD like VBPA-ADRNR.
data CUST_NAME like KNA1-NAME1.
data SHADD like VBPA-ADRNR.
data SHNAME like KNA1-NAME1.
data ADDRS like ADRC-STREET.
data MANDCK like LIKP-BOLNR.
data CMDDOC like LIKP-XABLN.
data EXT_DEL like LIKP-LIFEX.
*****ADD BY PIROZ
data PO_NUMBER like VBKD-BSTKD.
*data TEXT_S903_MATNR like MAKT-MAKTX.
TOTAL
data %Z_0001 like S903-NETWR.
CON_MARG
data %Z_0004 like %Z_0001.
CON_MRG_PC
data %Z_0005 like %Z_0001.
tables S903.
Function----
FUNCTION /1BCDWB/IQ000000000226EXTR.
""Local interface:
*" TABLES
*" %SELOPT STRUCTURE RSPARAMS
*" %DTAB STRUCTURE /1BCDWB/IQ000000000226
*" CHANGING
*" VALUE(%RTMODE) TYPE AQLIMODE
*" EXCEPTIONS
*" NO_DATA
*" NO_AUTHORIZATION
*" ILLEGAL_PACKAGE
*" CURSOR_NOT_OPEN
call function 'RSAQRT_SET_IDENTIFICATION'
exporting iqid = %iqid
sscr_report = sy-repid
changing rtmode = %rtmode.
if %rtmode-pack_on = space or %rtmode-first_call = 'X'.
call function 'RSAQRT_FILL_SELECTIONS'
tables selopt = %selopt
changing rtmode = %rtmode.
endif.
call function 'RSAQRT_INIT_TEXTHANDLING'
exporting class = 'CL_TEXT_IDENTIFIER'
wsid = ' '
infoset = 'S903'.
if %rtmode-no_authchk = space
and ( %rtmode-pack_on = space or %rtmode-first_call = 'X' ).
refresh %auth_tabs.
append 'S903' to %auth_tabs.
call function 'RSAQRT_AUTHORITY_CHECK'
exporting
auth_tabs = %auth_tabs
changing
rtmode = %rtmode
exceptions
NO_AUTHORIZATION = 1.
if sy-subrc = 1.
raise no_authorization.
endif.
endif.
data: %l_no_further_fetch type flag, " stop fetching
%l_hits_cnt type i. " cnt for %dbtab entries
if %rtmode-pack_abort = 'X'.
if not %dbcursor is initial.
close cursor %dbcursor.
endif.
exit.
endif.
if %rtmode-pack_on = space or %rtmode-first_call = 'X'.
if not %dbcursor is initial.
close cursor %dbcursor.
endif.
open cursor with hold %dbcursor for
select FKDAT VBELN FKART VKORG PKUNAG PKUNWE_01 MATNR VKBUR FKIMG VRKME FKSTO WERKS NETWR WAERK MWSBP VGBEL VGPOS ERNAM POSNR
VSTEL AUBEL KZWI1 KZWI2 ZZ_CART ZZ_MINCAR ZZ_WKND ZZ_FUEL UMSMNG KZWI4 KZWI3 ZZ_MGN WAVWR SPTAG
from S903
where SPTAG in SP$00001
and ERNAM in SP$00012
and WERKS in SP$00008
and MATNR in SP$00006
and PKUNAG in SP$00004
and VKORG in SP$00005
and FKART in SP$00007
and VBELN in SP$00002
and FKDAT in SP$00003.
endif.
if %dbcursor is initial.
raise cursor_not_open.
endif.
while %l_no_further_fetch = space.
fetch next cursor %dbcursor
into corresponding fields of S903.
if ( ( %rtmode-acc_check = 'X' and
sy-dbcnt > %rtmode-acc_number )
or sy-subrc <> 0 ).
%l_no_further_fetch = 'X'.
else.
call function 'RSAQRT_TEXTFIELD_REFRESH'.
additional coding:
data: vbpa-kunnr,
vbpa-parvw,
vbpa-adrnr.
clear sP_add.
select single adrnr into SP_ADD
from vbpa
where vbeln = s903-vbeln and
kunnr = s903-pkunag and
parvw = 'AG'.
additional coding:
select single name1 into cust_name
from adrc
where addrnumber = sp_add.
additional coding:
data: adrc-name1,
adrc-addrnumber.
clear shadd.
select single adrnr into SHADD
from vbpa
where vbeln = s903-vbeln and
kunnr = s903-pkunwe_01 and
parvw = 'WE'.
additional coding:
clear shname.
select single name1 into shname
from adrc
where addrnumber = shadd.
additional coding:
*{ REPLACE 1
\ data: adrc-street.
\ select single street into addrs
\ from adrc
\ where addrnumber = shadd.
data: adrc-street.
select single street into addrs
from adrc
where addrnumber = shadd.
*} REPLACE
additional coding:
data: likp-bolnr.
clear mandck.
if s903-vgbel ne space.
select single bolnr into mandck
from likp
where vbeln = s903-vgbel.
endif.
check SP$00009.
additional coding:
data: likp-xabln.
clear cmddoc.
select single xabln into cmddoc
from likp
where vbeln = s903-vgbel.
check SP$00010.
additional coding:
data: likp-lifex.
clear ext_del.
select single lifex into ext_del
from likp
where vbeln = s903-vgbel.
check SP$00011.
additional coding:
data: vbkd-bstkd.
clear po_number.
select single bstkd into po_number
from vbkd
where vbeln = s903-vgbel.
call function 'RSAQRT_TEXTFIELD_CONTEXT'
exporting name = 'S903'
struc = S903.
call function 'RSAQRT_TEXTFIELD_CALL'
exporting struc = S903
name = 'S903'
fname = 'MATNR'
importing text = TEXT_S903_MATNR.
additional coding:
%Z_0001 = S903-NETWR + S903-MWSBP .
%dtab-FKDAT = S903-FKDAT .
%dtab-VBELN = S903-VBELN .
%dtab-FKART = S903-FKART .
%dtab-VKORG = S903-VKORG .
%dtab-PKUNAG = S903-PKUNAG .
%dtab-CUST_NAME = CUST_NAME .
%dtab-PKUNWE_01 = S903-PKUNWE_01 .
%dtab-SHNAME = SHNAME .
%dtab-ADDRS = ADDRS .
%dtab-MATNR = S903-MATNR .
%dtab-TEXT_S903_MATNR = TEXT_S903_MATNR .
%dtab-VKBUR = S903-VKBUR .
%dtab-FKIMG = S903-FKIMG .
%dtab-VRKME = S903-VRKME .
%dtab-FKSTO = S903-FKSTO .
%dtab-WERKS = S903-WERKS .
%dtab-NETWR = S903-NETWR .
%dtab-WAERK = S903-WAERK .
%dtab-MWSBP = S903-MWSBP .
%dtab-WAERK001 = S903-WAERK .
%dtab-VGBEL = S903-VGBEL .
%dtab-VGPOS = S903-VGPOS .
%dtab-MANDCK = MANDCK .
%dtab-CMDDOC = CMDDOC .
%dtab-EXT_DEL = EXT_DEL .
%dtab-ERNAM = S903-ERNAM .
%dtab-%Z_0001 = %Z_0001 .
%dtab-WAERK002 = S903-WAERK .
%dtab-POSNR = S903-POSNR .
%dtab-VSTEL = S903-VSTEL .
%dtab-AUBEL = S903-AUBEL .
%dtab-KZWI1 = S903-KZWI1 .
%dtab-WAERK003 = S903-WAERK .
%dtab-KZWI2 = S903-KZWI2 .
%dtab-WAERK004 = S903-WAERK .
%dtab-ZZ_CART = S903-ZZ_CART .
%dtab-WAERK005 = S903-WAERK .
%dtab-ZZ_MINCAR = S903-ZZ_MINCAR .
%dtab-WAERK006 = S903-WAERK .
%dtab-ZZ_WKND = S903-ZZ_WKND .
%dtab-WAERK007 = S903-WAERK .
%dtab-ZZ_FUEL = S903-ZZ_FUEL .
%dtab-WAERK008 = S903-WAERK .
%dtab-UMSMNG = S903-UMSMNG .
%dtab-VRKME001 = S903-VRKME .
%dtab-KZWI4 = S903-KZWI4 .
%dtab-WAERK009 = S903-WAERK .
%dtab-KZWI3 = S903-KZWI3 .
%dtab-WAERK010 = S903-WAERK .
%dtab-ZZ_MGN = S903-ZZ_MGN .
%dtab-WAVWR = S903-WAVWR .
%dtab-WAERK011 = S903-WAERK .
%dtab-PO_NUMBER = PO_NUMBER .
append %dtab.
%l_hits_cnt = %l_hits_cnt + 1.
if %rtmode-pack_on = 'X'
and %l_hits_cnt >= %rtmode-pack_size.
%l_no_further_fetch = 'X'.
endif.
endif.
endwhile.
if %l_hits_cnt = 0.
if not %dbcursor is initial.
close cursor %dbcursor.
endif.
raise no_data.
endif.
if %rtmode-pack_on <> 'X'.
close cursor %dbcursor.
endif.
read table %dtab index 1 transporting no fields.
if sy-subrc ne 0.
raise no_data.
endif.
endfunction.I had Done Like this All comments are as they are i.e. this code gives error (for endselect there is no select) so i commented the endselect statement.
read below code and plz do some improvement in it.
SELECT ekkoebeln ekkobedat ekpo~werks into CORRESPONDING FIELDS OF TABLE it_so FROM EKKO
INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE ekko~EBELN IN S_EBELN
AND BEDAT IN S_BEDAT
AND WERKS IN S_WERKS.
"SELECT hEBELN hMATNR hWERKS e FROM EKPO INTO CORRESPONDING FIELDS OF TABLE it_so
" WHERE EBELN IN S_EBELN
" AND WERKS IN S_WERKS.
MOVE EKKO-EBELN TO TNAME.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = 'F02'
LANGUAGE = 'E'
NAME = TNAME
OBJECT = 'EKKO'
ARCHIVE_HANDLE = 0
"IMPORTING
" HEADER = HTEXT
TABLES
LINES = LTEXT
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
LOOP AT LTEXT.
IF LTEXT-TDLINE NE ''.
MOVE LTEXT-TDLINE TO IT_SO-TDLINE. " Header Note Selected.
MOVE EKKO-EBELN TO IT_SO-EBELN.
APPEND IT_SO.
endif.
ENDLOOP.
clear it_so.
"ENDSELECT. -
Report to display purchase orders
Hi I am Venkat
can any one send me report to display a list of Purchase orders open for period more than one year. I need the following output fields to be dispayed are Vendor, Period, Purchasing organization, PO number, Document date, GR status, check boxi think this code will help u.
REPORT Z_PURCHASEU.
tables : ekko,vbrk,mara,rseg,lfa1,makt,konv,bseg,vbap,j_1iexhead.
data: begin of itab occurs 0,
qty like rseg-menge, "qty
bed like rseg-wrbtr, "bed(basic excise duty)
mwskz like rseg-mwskz, "tax code
cess like rseg-wrbtr, "cess
sum like rseg-wrbtr,
unit like rseg-bstme, "unit
belnr like rseg-belnr, "document number
lst_cst like rseg-wrbtr , "CST amount
amount like rseg-wrbtr, "amount
aedat like ekko-aedat, "po date
ebeln like ekko-ebeln, "po number
lifnr like ekko-lifnr, "vendor code
matnr like mara-matnr, "material code
maktx like mara-maktx, "material description
mtart like mara-mtart, "material type
vbeln like vbrk-vbeln, "bill number
fkdat like vbrk-fkdat, "bill date
name1 like lfa1-name1, "vendor name
kzwi1 like vbap-kzwi1, "basic value
end of itab.
select-options:
vendrcod for ekko-lifnr,
date for vbrk-fkdat,
matrtype for mara-mtart,
taxcode for rseg-mwskz.
select egmenge egwrbtr egmwskz egwrbtr egwrbtr egbstme eg~belnr
egwrbtr egwrbtr
koaedat koebeln ko~lifnr
into corresponding fields of table itab
from rseg as eg inner join ekko as ko on egebeln = koebeln
where
ko~lifnr in vendrcod And
eg~mwskz in taxcode.
*select-options:
vendrcod for ekko-lifnr,
date for vbrk-fkdat,
matrtype for mara-mtart,
taxcode for rseg-mwskz.
select abelnr amwskz amenge awrbtr into
*corresponding
*fields of table itab
*from rseg as a inner join bseg as b on
*awrbtr = bwrbtr where
*a~belnr in docment number and
*a~mwskz in tax code and
*a~menge in qty.
loop at itab.
write:/1 sy-vline,
2 itab-name1 , 18 sy-vline,
19 itab-lifnr , 30 sy-vline,
31 itab-aedat , 46 sy-vline,
47 itab-ebeln , 60 sy-vline,
61 itab-belnr , 80 sy-vline.
uline.
endloop.
write : /1 sy-vline,
2 'vendor name' , 18 sy-vline,
19 'vendor code' , 30 sy-vline,
31 'po date' , 46 sy-vline,
47 'po number ' , 60 sy-vline,
61 'document number', 80 sy-vline.
give points if useful. -
IDOC creation after the creation of a purchase order
Hi everybody,
I want some configuration details regardign IDOC creation. The requirement is, once i create a purchase order in one system, the details should automatciaclly transfer to other system through IDOC. could any one suggest any document or detailed procedure to accomplish the task. Thanks in advance,
Santosh.hi santosh kumar,
Creating an IDoc Segment WE31:
The segment defines the structure of the records in an IDoc. They are defined with transaction WE31.
We will define a structure to send a text from the text database.
Transaction WE31 calls the IDoc segment editor. The editor defines the fields of a
single segment structure. The thus defined IDoc segment is then created as a data
dictionary structure. You can view the created structure with SE11 and use it in an
ABAP as any TABLES declaration.
To demonstrate the use of the IDoc segment editor we will set up an example, which
allows you to send a single text from the text pool (tables STXH and STXL) as an
IDoc. These are the texts that you can see with SO10 or edit from within many
applications.
We will show the steps to define an IDoc segment YAXX_THEAD with the DDic
structure of THEAD.
To facilitate our work, we will use the "copy-from-template-tool", which reads the
definition of a DDIC structure and inserts the field and the matching definitions as
rows in the IDoc editor. You could, of course, define the structure completely
manually, but using the template makes it easier.
The tool in release 4.0b lets you use both DDIC structures or another IDoc segment
definition as a template.
The thus created structure can be edited any time. When saving, it will create a data
dictionary structure based on the definition in WE31. The DDIC structure will retain
the same name. You can view the structure as a table definition with SE11 and use it
in an ABAP the same way.
Defining the Message Type (EDMSG)
The message type defines the context under which an IDoc is transferred to its destination. It allows for using the same IDoc file format for several different applications.
Imagine the situation of sending a purchase order to a supplier. When the IDoc with
the purchase order reaches the supplier, it will be interpreted as a sales order
received from a customer, namely you.
Simultaneously you want to send the IDoc data to the supplier's warehouse to inform
it that a purchase order has been issued and is on the way.
Both IDoc receivers will receive the same IDoc format; however, the IDoc will be
tagged with a different message type. While the IDoc to the supplier will be flagged
as a purchase order (in SAP R/3 standard: message type = ORDERS), the same IDoc
sent to the warehouse should be flagged differently, so that the warehouse can
recognize the order as a mere informational copy and process it differently than a
true purchase order.
The message type together with the IDoc type determine the processing function.
The message types are stored in table EDMSG.
Defining the message type can be done from the transaction WEDI
EDMSG: Defining the message type (1)
The entry is only a base entry which tells the system that the message type is
allowed. Other transactions will use that table as a check table to validate the entry.
IT is as shown .
EDMSG: Defining the message type (1):
The entry is only a base entry which tells the system that the message type is
allowed. Other transactions will use that table as a check table to validate the entry.
Sales Orders are being created through inbound IDocs using FM 'EDI_DATA_INCOMING'. Now a Report is required to check the status of these Inbound IDocs along with Sales Orders generated against customer Purchase Orders.
Requirement:
Sales Orders are being created through inbound IDocs using FM 'EDI_DATA_INCOMING'. Now a Report is required to check the status of these Inbound IDocs along with Sales Orders generated against customer Purchase Orders.
Processing:
The report selects, 'ORDERS' IDoc numbers & status, generated between given time range, from table EDIDC. Further, it calls Function Module 'IDOC_READ_COMPLETELY' to get the IDoc details. Then required information is extracted by reading relevant field data of IDoc segments.
sampl code:
REPORT Z_EDI_FILE_LOAD_STATUS_REPORT .
Staus Report for Inbound IDOCs ( Sales Orders )
Program : Z_EDI_FILE_LOAD_STATUS_REPORT
Presented By : www.rmtiwari.com
TABLES : EDIDC.
ALV stuff
TYPE-POOLS: SLIS.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA : BEGIN OF T_REPORT OCCURS 0,
IDOC_NO TYPE EDI_DOCNUM,
IDOC_DATE TYPE SY-DATUM,
IDOC_TIME TYPE SY-UZEIT,
SORDER_NO TYPE VBELN,
STP_NO TYPE KNA1-KUNNR,
STP_NAME(35) TYPE C,
STP_PHONE(12) TYPE C,
PO_NO(15) TYPE C,
STATUS TYPE C,
S_TEXT(70) TYPE C,
ERROR(70) TYPE C,
END OF T_REPORT.
--PARAMETER--
selection-screen begin of block date with frame title TEXT-S01.
select-options: UDATE for EDIDC-UPDDAT
default SY-datum obligatory, "Changed On
UTIME for EDIDC-UPDTIM . "Changed Time
selection-screen end of block date.
INITIALIZATION.
START-OF-SELECTION.
PERFORM SHOW_STATUS_REPORT.
*& Form alv_grid
text
--> p1 text
< -- p2 text
FORM ALV_GRID.
IF GT_FIELDCAT[] IS INITIAL.
PERFORM FIELDCAT_INIT.
PERFORM LAYOUT_INIT.
PERFORM SORT_INIT.
ENDIF.
PERFORM GRID_DISPLAY.
ENDFORM. "alv_grid
*& Form layout_init
FORM LAYOUT_INIT.
GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-CELL_MERGE = 'X'.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYOUT-NO_VLINE = ' '.
GS_LAYOUT-TOTALS_BEFORE_ITEMS = ' '.
ENDFORM. " layout_init
*& Form fieldcat_init
FORM FIELDCAT_INIT.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'IDOC_NO'.
LS_FIELDCAT-KEY = 'X'.
LS_FIELDCAT-REPTEXT_DDIC = 'IDOC'.
LS_FIELDCAT-OUTPUTLEN = 10.
Fix for ALV print bug, which puts 'N/A' over last digit
Set inttype to 'N' to stop corruption of printed ALV cell.
LS_FIELDCAT-INTTYPE = 'N'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'IDOC_DATE'.
LS_FIELDCAT-REPTEXT_DDIC = 'Creation Date'.
LS_FIELDCAT-OUTPUTLEN = 10.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'IDOC_TIME'.
LS_FIELDCAT-REPTEXT_DDIC = 'Creation Time'.
LS_FIELDCAT-OUTPUTLEN = 8.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'STATUS'.
LS_FIELDCAT-REPTEXT_DDIC = 'St'.
LS_FIELDCAT-OUTPUTLEN = 2.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ERROR'.
LS_FIELDCAT-REPTEXT_DDIC = 'Message'.
LS_FIELDCAT-OUTPUTLEN = 70.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'STP_NO'.
LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party No'.
LS_FIELDCAT-OUTPUTLEN = 10.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'STP_NAME'.
LS_FIELDCAT-REPTEXT_DDIC = 'Sold to Party Name'.
LS_FIELDCAT-OUTPUTLEN = 35.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PO_NO'.
LS_FIELDCAT-REPTEXT_DDIC = 'Purch Order'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'STP_PHONE'.
LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party Phone'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
ENDFORM. "fieldcat_init
*& Form sort_init
FORM SORT_INIT.
DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'IDOC_DATE'.
LS_SORT-SPOS = 1.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'IDOC_TIME'.
LS_SORT-SPOS = 2.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'STATUS'.
LS_SORT-SPOS = 3.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'IDOC_NO'.
LS_SORT-SPOS = 4.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO GT_SORT.
ENDFORM. "sort_init
*& Form grid_display
FORM GRID_DISPLAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
IT_SORT = GT_SORT
i_callback_program = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_DEFAULT = ' '
I_SAVE = 'X'
TABLES
T_OUTTAB = T_REPORT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. "grid_display
*& Form COMMENT_BUILD
Processing of listheader
FORM COMMENT_BUILD USING P_FK_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
REFRESH P_FK_LIST_TOP_OF_PAGE.
List Heading : Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = 'Sales Order Interface: Z_EDI_FILE_LOAD'.
APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.
List : Typ S
clear LS_LINE.
LS_LINE-typ = 'S'.
LS_LINE-key = 'Date Range:'.
LS_LINE-info = UDATE-low.
if not UDATE-high is initial.
write ' To ' to LS_LINE-info+30.
LS_LINE-info+36 = UDATE-high.
endif.
APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.
ENDFORM. " COMMENT_BUILD
FORM TOP_OF_PAGE *
Ereigniss TOP_OF_PAGE *
event TOP_OF_PAGE
FORM TOP_OF_PAGE.
PERFORM COMMENT_BUILD USING gt_LIST_TOP_OF_PAGE[].
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
*& Form show_status_report
FORM SHOW_STATUS_REPORT .
Report to show status.
DATA: BEGIN OF T_TEDS2 OCCURS 0.
INCLUDE STRUCTURE TEDS2.
DATA: END OF T_TEDS2.
DATA: BEGIN OF T_IDOC_CONTROL_TMP OCCURS 0.
INCLUDE STRUCTURE EDIDC.
DATA: END OF T_IDOC_CONTROL_TMP.
CONSTANTS: C_STATUS_IN_IDOC_POSTED LIKE EDIDC-STATUS VALUE '53'.
DATA : T_EDIDS TYPE STANDARD TABLE OF EDIDS WITH HEADER LINE.
DATA : T_EDIDD TYPE STANDARD TABLE OF EDIDD WITH HEADER LINE.
DATA : GV_PARTNER_SEG TYPE E1EDKA1,
GV_PO_REF_SEG TYPE E2EDK02.
Get text for status values
SELECT * FROM TEDS2 INTO TABLE T_TEDS2 WHERE LANGUA = SY-LANGU.
Read the IDoc's status after processing
SELECT * FROM EDIDC
INTO TABLE T_IDOC_CONTROL_TMP
WHERE UPDDAT IN UDATE
AND UPDTIM IN UTIME
AND MESTYP = 'ORDERS'.
LOOP AT T_IDOC_CONTROL_TMP.
IDoc has been processed, since control record changed.
READ TABLE T_TEDS2 WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
T_REPORT-IDOC_NO = T_IDOC_CONTROL_TMP-DOCNUM.
T_REPORT-IDOC_DATE = T_IDOC_CONTROL_TMP-CREDAT.
T_REPORT-IDOC_TIME = T_IDOC_CONTROL_TMP-CRETIM.
T_REPORT-S_TEXT = T_TEDS2-DESCRP.
IF T_IDOC_CONTROL_TMP-STATUS = C_STATUS_IN_IDOC_POSTED.
ok status
T_REPORT-STATUS = 'S'.
ELSE.
error status
T_REPORT-STATUS = 'E'.
ENDIF.
Get IDoc details.
CALL FUNCTION 'IDOC_READ_COMPLETELY'
EXPORTING
DOCUMENT_NUMBER = T_REPORT-IDOC_NO
TABLES
INT_EDIDS = T_EDIDS
INT_EDIDD = T_EDIDD
EXCEPTIONS
DOCUMENT_NOT_EXIST = 1
DOCUMENT_NUMBER_INVALID = 2
OTHERS = 3.
Get Error status
READ TABLE T_EDIDS WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
IF SY-SUBRC EQ 0.
REPLACE FIRST OCCURRENCE OF '&1' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA1.
REPLACE FIRST OCCURRENCE OF '&2' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA2.
REPLACE FIRST OCCURRENCE OF '&3' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA3.
REPLACE FIRST OCCURRENCE OF '&4' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA4.
REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA1.
REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA2.
REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA3.
REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
WITH T_EDIDS-STAPA4.
T_REPORT-ERROR = T_EDIDS-STATXT.
ENDIF.
LOOP AT T_EDIDD.
CASE T_EDIDD-SEGNAM.
WHEN 'E1EDKA1'.
GV_PARTNER_SEG = T_EDIDD-SDATA.
CLEAR : T_REPORT-STP_NAME.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GV_PARTNER_SEG-PARTN
IMPORTING
OUTPUT = T_REPORT-STP_NO.
SELECT SINGLE NAME1 TELF1
INTO (T_REPORT-STP_NAME,T_REPORT-STP_PHONE)
FROM KNA1
WHERE KUNNR = T_REPORT-STP_NO.
WHEN 'E1EDK02'.
GV_PO_REF_SEG = T_EDIDD-SDATA.
T_REPORT-PO_NO = GV_PO_REF_SEG-BELNR.
ENDCASE.
ENDLOOP.
APPEND T_REPORT.
ENDLOOP .
SORT T_REPORT BY STATUS IDOC_NO.
Show Report
PERFORM ALV_GRID.
ENDFORM. " show_status_report
thanks
karthik
reward me points if usefull. -
How to provide relation b/w sales order number & purchase order number
hi.....
i created one report based on sales order number and displayed by alv grid then by selecting one sales record using bdc i created purchase order number ,then i have to display that purchase order in alv again,hoe to provide relation b/w sales order and purchase orderThis is what VA05 Does
SELECT bstkd
vbeln "Sale order Number
posnr
FROM m_vmvaa
INTO TABLE i_m_vmvaa
FOR ALL ENTRIES IN i_bstkd
WHERE bstkd = i_bstkd-bstkd. "Your PO Number -
Create Sales order with reference to purchase order - Help needed
Hi Gurus
Purchase order is being created in Oracle system. SAP system will receive the purchase order and creates the sales order for the corresponding purchase order.
Hoe to create sales order, Through BAPI or through IDOC. Please suggest and give some pointers of existing interface
Thanks
Andy.Hi,
If you are working on ECC6.0 check for the BAPI BAPI_SALESORDER_CREATEFROMDAT1 .You can also pass the purchase order number .
Check the sample code
REPORT z_bapi_salesorder_create.
Parameters
Sales document type
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text FOR FIELD p_auart.
PARAMETERS: p_auart TYPE auart OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Sales organization
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text1 FOR FIELD p_vkorg.
PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Distribution channel
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text2 FOR FIELD p_vtweg.
PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Division.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text3 FOR FIELD p_spart.
PARAMETERS: p_spart TYPE spart OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SKIP 1.
Sold-to
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text4 FOR FIELD p_sold.
PARAMETERS: p_sold TYPE kunnr OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Ship-to
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text5 FOR FIELD p_ship.
PARAMETERS: p_ship TYPE kunnr OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SKIP 1.
Material
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text6 FOR FIELD p_matnr.
PARAMETERS: p_matnr TYPE matnr OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Quantity.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text7 FOR FIELD p_menge.
PARAMETERS: p_menge TYPE kwmeng OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Plant
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) v_text9 FOR FIELD p_plant.
PARAMETERS: p_plant TYPE werks_d OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Data declarations.
DATA: v_vbeln LIKE vbak-vbeln.
DATA: header LIKE bapisdhead1.
DATA: headerx LIKE bapisdhead1x.
DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx
WITH HEADER LINE.
DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl
WITH HEADER LINE.
Initialization.
INITIALIZATION.
v_text = 'Order type'.
v_text1 = 'Sales Org'.
v_text2 = 'Distribution channel'.
v_text3 = 'Division'.
v_text4 = 'Sold-to'.
v_text5 = 'Ship-to'.
v_text6 = 'Material'.
v_text7 = 'Quantity'.
v_text9 = 'Plant'.
Start-of-selection.
START-OF-SELECTION.
Header data
Sales document type
header-doc_type = p_auart.
headerx-doc_type = 'X'.
Sales organization
header-sales_org = p_vkorg.
headerx-sales_org = 'X'.
Distribution channel
header-distr_chan = p_vtweg.
headerx-distr_chan = 'X'.
*Purchase order number
header-PURCH_NO_C = '4000006'.
headerx-PURCH_NO_C = 'X'.
Division
header-division = p_spart.
headerx-division = 'X'.
headerx-updateflag = 'I'.
Partner data
Sold to
partner-partn_role = 'AG'.
partner-partn_numb = p_sold.
APPEND partner.
Ship to
partner-partn_role = 'WE'.
partner-partn_numb = p_ship.
APPEND partner.
ITEM DATA
itemx-updateflag = 'I'.
Line item number.
item-itm_number = '000010'.
itemx-itm_number = 'X'.
Material
item-material = p_matnr.
itemx-material = 'X'.
Plant
item-plant = p_plant.
itemx-plant = 'X'.
Quantity
item-target_qty = p_menge.
itemx-target_qty = 'X'.
APPEND item.
APPEND itemx.
Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = p_menge.
APPEND lt_schedules_in.
Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
Call the BAPI to create the sales order.
CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'
EXPORTING
sales_header_in = header
sales_header_inx = headerx
IMPORTING
salesdocument_ex = v_vbeln
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
sales_partners = partner.
Check the return table.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating document'.
ELSE.
Commit the work.
COMMIT WORK AND WAIT.
WRITE: / 'Document ', v_vbeln, ' created'.
ENDIF.
Reward points if it worked.
Regards,
Abhishek
Edited by: Abhishek Raj on May 14, 2008 9:57 AM -
Updating Purchase Order data in VBKD table
Hello,
We are trying to update Purchase order data in VBKD table for Sales Order at Item level. When sales Order is created, VBKD has a default record with VBELN = 'sales order number' and Item = '00000'. We want to update BSTKD_E field with Purchase order number for VBELN= 'sales order number' and Item = '00010'.
We wrote our logic in USEREXIT_SAVE_DOCUMENT_PREPARE and USEREXIT_MOVE_FIELDS_TO_VBKD in MV50AFZZ to append new entries in XVBKD with VBELN= 'sales order number' and Item = '00010'. But in this case Sales order is not created with UPDATE TERMINATED message. We are not sure if we can append a new record in XVBKD.
wa_xvbkd = xvbkd.
wa_xvbkd-posnr = wa_xvbap-posnr. "00010
wa_xvbkd-bstkd_e = vbkd-bstkd. "PO no
wa_xvbkd-posex_e = wa_xvbap-posnr. "Purch. order item no
wa_xvbkd-updkz = C_I.
APPEND wa_xvbkd TO xvbkd.
CLEAR wa_xvbkd.
Please advice the suitable way to have a Purchase Order item level data in Sales Order.
Thanks
RohitHi,
You can try these FM to update info record.
ME_DB_UPDATE_INFORECORDS
ME_UPDATE_INFORECORD
ME_UPDATE_INFORECORD_COND
ME_UPDATE_INFORECORD_PD
Check the sample code on BAPI_PO_CHANGE
http://www.sap-img.com/abap/sample-abap-code-on-bapi-po-change.htm
Regards,
Shiva Kumar -
OTF Format of Purchase Order in email unreadable
We have setup emailing of purchase orders and this is working fine. However, the file that is sent to the vendor is in format .OTF
How is this file read? Is it possible to send a different format? We can see the order in SOST, but the email that the vendor receives can not be read.
Can someone help please.
Thank you
KarenSee the sample FORM below.
In fact the CLOSE_FORM will return the OTF format table. Just pass that to this form. It will convert the OTF file to a PDF format and sent it to User. Change the body of the text accordingly.
CHeers,
THomas.
* FORM MAIL_OBJECT *
* This routine receives OTF data. OTF data is converted to PDF
* format and send to the Partner's email address
FORM mail_object TABLES otf_data STRUCTURE itcoo .
DATA: pdf_size TYPE i, " PDF Size
pdf_itab_size TYPE i, " Attachment size
mailtxt_size TYPE i, " Text in mail size
l_vbeln LIKE vbdka-vbeln. " Order Doc
DATA:
it_mailtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE, " Mail Text
it_pdf TYPE TABLE OF tline WITH HEADER LINE, " OTF output
it_mailpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, " Dist details
it_mailhead LIKE solisti1 OCCURS 1 WITH HEADER LINE," Header data
it_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE, " Rec List
it_pdfdata LIKE solix OCCURS 0 WITH HEADER LINE. " Attachment data
DATA: it_doc_att LIKE sodocchgi1. " Attri of new doc
DATA: BEGIN OF it_pdfout OCCURS 0, " PDF in 255 length
tline TYPE char255,
END OF it_pdfout.
* Sales doc and Customer
DATA: BEGIN OF i_vbeln OCCURS 0,
vbeln LIKE vbpa-vbeln, " Sales Document
adrnr LIKE vbpa-adrnr, " Customer
END OF i_vbeln.
* Sender Address no and SMTP address
DATA: BEGIN OF i_addrs OCCURS 0,
addrnumber LIKE adr6-smtp_addr,
smtp_addr LIKE adr6-smtp_addr,
END OF i_addrs.
* Convert OTF to PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = pdf_size
TABLES
otf = otf_data
lines = it_pdf.
* Make each line 255 characters
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
TABLES
content_in = it_pdf
content_out = it_pdfout.
* Create the PDF File
CLEAR it_pdfdata.
REFRESH it_pdfdata.
* it_pdfdata[] = it_pdfout[].
LOOP AT it_pdfout.
MOVE it_pdfout-tline TO it_pdfdata-line.
APPEND it_pdfdata.
CLEAR it_pdfdata.
ENDLOOP.
DESCRIBE TABLE it_pdfdata LINES pdf_itab_size.
* Text in the mail.
it_mailtxt-line = 'ORDER ACKNOWLEDGEMENT'.
APPEND it_mailtxt.
it_mailtxt-line = ' This is a test mail, Line Number--1'.
APPEND it_mailtxt.
it_mailtxt-line = ' This is a test mail, Line Number--2' &
' This is a test mail, Line Number--2'.
APPEND it_mailtxt.
it_mailtxt-line = ' This is a test mail, Line Number--3' &
' This is a test mail, Line Number--3' &
' This is a test mail, Line Number--3'.
APPEND it_mailtxt.
it_mailtxt-line = ' This is a test mail, Line Number--4' &
' This is a test mail, Line Number--4' &
' This is a test mail, Line Number--4' &
' This is a test mail, Line Number--4'.
APPEND it_mailtxt.
it_mailtxt-line = ' This is a test mail, Line Number--5' &
' This is a test mail, Line Number--5' &
' This is a test mail, Line Number--5' &
' This is a test mail, Line Number--5' &
' This is a test mail, Line Number--5'.
APPEND it_mailtxt.
DESCRIBE TABLE it_mailtxt LINES mailtxt_size.
* Document Number for Output
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = vbdka-vbeln
IMPORTING
output = l_vbeln.
* Attributes of new doc
CONCATENATE 'Order' space 'Acknowledgement' space l_vbeln
INTO it_doc_att-obj_descr SEPARATED BY space.
it_doc_att-sensitivty = 'F'.
it_doc_att-doc_size = mailtxt_size * 255.
* Create Pack to text in mail body.
CLEAR it_mailpack-transf_bin.
it_mailpack-head_start = 1.
it_mailpack-head_num = 0.
it_mailpack-body_start = 1.
it_mailpack-body_num = mailtxt_size.
it_mailpack-doc_type = 'RAW'.
APPEND it_mailpack.
* Create Pack to PDF Attach.
it_mailpack-transf_bin = 'X'.
it_mailpack-head_start = 1.
it_mailpack-head_num = 1.
it_mailpack-body_start = 1.
it_mailpack-body_num = pdf_itab_size.
it_mailpack-doc_type = 'PDF'.
CONCATENATE l_vbeln '.pdf' INTO it_mailpack-obj_name.
CONCATENATE 'Order Ack' space l_vbeln INTO it_mailpack-obj_descr.
it_mailpack-doc_size = pdf_itab_size * 255.
APPEND it_mailpack.
*Get email addresses based on Sales document.
SELECT vbeln adrnr INTO TABLE i_vbeln
FROM vbpa
WHERE vbeln = vbdka-vbeln AND
parvw = nast-parvw.
IF NOT i_vbeln[] IS INITIAL.
SELECT addrnumber smtp_addr INTO TABLE i_addrs
FROM adr6 FOR ALL ENTRIES IN i_vbeln
WHERE addrnumber = i_vbeln-adrnr AND
smtp_addr NE space.
ENDIF.
IF i_addrs[] IS NOT INITIAL.
LOOP AT i_addrs.
it_reclist-receiver = i_addrs-smtp_addr.
it_reclist-express = 'X'.
it_reclist-rec_type = 'U'.
it_reclist-notif_del = 'X'. " request delivery notification
it_reclist-notif_ndel = 'X'. " request not delivered notification
APPEND it_reclist.
CLEAR: i_addrs.
ENDLOOP.
ENDIF.
* Call FM to send email
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = it_doc_att
put_in_outbox = 'X'
TABLES
packing_list = it_mailpack
object_header = it_mailhead
contents_txt = it_mailtxt
contents_hex = it_pdfdata
receivers = it_reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorizationfiltered= 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " MAIL_OBJECT -
I Need interactive report to list the purchase orders details for a vendor
I Need interactive report to list the purchase orders details for a vendor that has interactive drill down options to give the detail of vendor from vendor master.
Hi
see this sample report
this is Customer wise sales orders
just make similar report just using LFA1, EKKO and EKPO tables instead of KNA1,VBAK,VBAP
REPORT ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE
HEADING.
*TABLES DECLARATION
TABLES : KNA1, VBAK, VBAP.
*SELECT OPTIONS
SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
*INITIALIZATION
INITIALIZATION.
CUST_NO-LOW = '01'.
CUST_NO-HIGH = '5000'.
CUST_NO-SIGN = 'I'.
CUST_NO-OPTION = 'BT'.
APPEND CUST_NO.
*SELECTION SCREEN VALIDATION
AT SELECTION-SCREEN ON CUST_NO.
LOOP AT SCREEN.
IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000.
MESSAGE E001(ZTJ1).
ENDIF.
ENDLOOP.
*BASIC LIST SELECTION
START-OF-SELECTION.
SELECT KUNNR NAME1 ORT01 LAND1 INTO
(KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
FROM KNA1
WHERE KUNNR IN CUST_NO.
WRITE:/1 SY-VLINE,
KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
KNA1-NAME1 UNDER 'NAME',
61 SY-VLINE,
KNA1-ORT01 UNDER 'CITY',
86 SY-VLINE,
KNA1-LAND1 UNDER 'COUNTRY',
103 SY-VLINE.
HIDE: KNA1-KUNNR.
ENDSELECT.
ULINE.
*SECONDARY LIST ACCESS
AT user-command.
IF SY-UCOMM = 'IONE'.
PERFORM SALES_ORD.
ENDIF.
IF SY-UCOMM = 'ITWO'.
PERFORM ITEM_DET.
ENDIF.
*TOP OF PAGE
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE : 'CUSTOMER DETAILS'.
FORMAT COLOR 1 OFF.
ULINE.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'NAME',
61 SY-VLINE,
63 'CITY',
86 SY-VLINE,
88 'COUNTRY',
103 SY-VLINE.
ULINE.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR SECONDARY LISTS
TOP-OF-PAGE DURING LINE-SELECTION.
*TOP OF PAGE FOR 1ST SECONDARY LIST
IF SY-UCOMM = 'IONE'.
ULINE.
FORMAT COLOR 1.
WRITE : 'SALES ORDER DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'SALES ORDER NO.',
40 SY-VLINE,
42 'DATE',
60 SY-VLINE,
62 'CREATOR',
85 SY-VLINE,
87 'DOC DATE',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR 2ND SECONDARY LIST
IF SY-UCOMM = 'ITWO'.
ULINE.
FORMAT COLOR 1.
WRITE : 'ITEM DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'SALES ORDER NO.',
40 SY-VLINE,
42 'SALES ITEM NO.',
60 SY-VLINE,
62 'ORDER QUANTITY',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*END OF PAGE
END-OF-PAGE.
ULINE.
WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
SY-PAGNO.
SKIP.
*& Form SALES_ORD
*& FIRST SECONDARY LIST FORM
FORM SALES_ORD .
SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
(VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
FROM VBAK
WHERE KUNNR = KNA1-KUNNR.
WRITE:/1 SY-VLINE,
VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
40 SY-VLINE,
VBAK-ERDAT UNDER 'DATE',
60 SY-VLINE,
VBAK-ERNAM UNDER 'CREATOR',
85 SY-VLINE,
VBAK-AUDAT UNDER 'DOC DATE',
103 SY-VLINE.
HIDE : VBAK-VBELN.
ENDSELECT.
ULINE.
ENDFORM. " SALES_ORD
*& Form ITEM_DET
*& SECOND SECONDARY LIST FORM
FORM ITEM_DET .
SELECT VBELN POSNR KWMENG INTO
(VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
FROM VBAP
WHERE VBELN = VBAK-VBELN.
WRITE : /1 SY-VLINE,
VBAP-VBELN UNDER 'SALES ORDER NO.',
40 SY-VLINE,
VBAP-POSNR UNDER 'SALES ITEM NO.',
60 SY-VLINE,
VBAP-KWMENG UNDER 'ORDER QUANTITY',
103 SY-VLINE.
ENDSELECT.
ULINE.
ENDFORM. " ITEM_DET
REPORT demo_list_at_pf.
START-OF-SELECTION.
WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.
AT pf5.
PERFORM out.
AT pf6.
PERFORM out.
AT pf7.
PERFORM out.
AT pf8.
PERFORM out.
FORM out.
WRITE: 'Secondary List by PF-Key Selection',
/ 'SY-LSIND =', sy-lsind,
/ 'SY-UCOMM =', sy-ucomm.
ENDFORM.
After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:
Secondary List by PF-Key Selection
SY-LSIND = 14
SY-UCOMM = PF06
Example for AT USER-COMMAND.
REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.
START-OF-SELECTION.
WRITE: 'Basic List',
/ 'SY-LSIND:', sy-lsind.
TOP-OF-PAGE.
WRITE 'Top-of-Page'.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-pfkey.
WHEN 'TEST'.
WRITE 'Self-defined GUI for Function Codes'.
ULINE.
ENDCASE.
AT LINE-SELECTION.
SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
PERFORM out.
sy-lsind = sy-lsind - 1.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'FC1'.
PERFORM out.
WRITE / 'Button FUN 1 was pressed'.
WHEN 'FC2'.
PERFORM out.
WRITE / 'Button FUN 2 was pressed'.
WHEN 'FC3'.
PERFORM out.
WRITE / 'Button FUN 3 was pressed'.
WHEN 'FC4'.
PERFORM out.
WRITE / 'Button FUN 4 was pressed'.
WHEN 'FC5'.
PERFORM out.
WRITE / 'Button FUN 5 was pressed'.
ENDCASE.
sy-lsind = sy-lsind - 1.
FORM out.
WRITE: 'Secondary List',
/ 'SY-LSIND:', sy-lsind,
/ 'SY-PFKEY:', sy-pfkey.
ENDFORM.
When you run the program, the system displays the following basic list with a the page header defined in the program:
You can trigger the AT LINE-SELECTION event by double-clicking a line. The system sets the status TEST and deactivates the function code PICK. The status TEST contains function codes FC1 to FC5. These are assigned to pushbuttons in the application toolbar. The page header of the detail list depends on the status.
Here, double-clicking a line no longer triggers an event. However, there is now an application toolbar containing five user-defined pushbuttons. You can use these to trigger the AT USER-COMMAND event. The CASE statement contains a different reaction for each pushbutton.
For each interactive event, the system decreases the SY-LSIND system field by one, thus canceling out the automatic increase. All detail lists now have the same level as the basic list and thus overwrite it. While the detail list is being created, SY-LSIND still has the value 1.
Regards
Anji -
Sales Order and Purchase Order Linking
This functionality exists in the B1 client but is currently not available via the DI API. Please add this to the list of changes that should be completed with the product. Currently in the API you can base many documents on other documents but for some reason it does not allow you to base a purchase order on a sales order.
Hi,
Goto Table Mseg-kdauf is sales order no.
get mseg-ebeln is purchase order.
Or u can do the following code.
from sales order no VBELN get VBFA-VBELV.
SELECT SINGLE vbeln FROM likp
INTO l_delno
WHERE vbeln = vbfa-vbelv.
SELECT SINGLE ebeln
INTO l_sono
FROM ekbe
WHERE belnr = l_delno
AND bewtp = 'L' .
L_DELNO IS PURCHASE ORDER.
If it is helpfull pls reward it.
Regards
Srimanta -
Item number from purchase order number....
Hi,
How do I get the POSEX (line item number) field for a given Purchase order number LIKP-VBELNHi,
Let me be more clear.
I have to find item number of the underlying purchase order (POSEX).
So based on VBELN of LIKP table I have to find POSEX from VBAP table.
( I guess I need to find subsequent or preceding document stuff. I am not so sure about it. And then
based on that I go in VBAP and find POSEX )
<b>So what is the link between LIKP and VBAP table...</b> -
How to get purchase order number from delivery number?
hi all,
how to get purchase order number and item if i have only delivery.
and in same way how to get po number and item if i know only batch number.
kindly give me some solution i need this urgently.
thanks in advance.Check the logic below:
* Selecting the Sales Documents from VBFA for corresponding Invoice
SELECT vbelv
posnv
FROM vbfa
INTO TABLE gt_itab3
WHERE vbeln EQ gt_itab5-vbeln
AND posnn EQ gt_itab5-posnr
AND vbtyp_n EQ 'J'.
IF sy-subrc EQ zero.
SORT gt_itab3 BY vbelv posnv.
ENDIF.
ENDIF.
IF NOT gt_itab3 IS INITIAL.
* Selecting the Purchase Orders from VBFA for corresponding Sales Documents
SELECT vbeln
posnn
FROM vbfa
INTO TABLE gt_itab4
FOR ALL ENTRIES IN gt_itab3
WHERE vbelv EQ gt_itab3-vbelv
AND posnv EQ gt_itab3-posnv
AND vbtyp_n EQ 'V'.
IF sy-subrc EQ 0.
SORT gt_itab4 BY vbeln posnn.
ENDIF.
ENDIF.
Batch number will be there in delivery item.
Regards
Kannaiah -
Purchase order layout using Smartform
Hi All,
Can anyone let me know how to create Purchase order layout using smartforms and assigning it to output type.
Is there standard smartform for purchase order?http://smoschid.tripod.com/How_to_do_things_in_SAP/How_To_Build_SMARTFORMS/How_To_Build_SMARTFORMS.html
http://www.sap-basis-abap.com/sapsf001.htm
http://help.sap.com/printdocu/core/Print46c/de/data/pdf/BCSRVSCRSF/BCSRVSCRSF.pdf
http://www.sap-img.com/smartforms/smartforms-faq-part-two.htm
http://www.esnips.com/doc/13b7ae7a-b32c-4b96-b588-881859d4ac99/Template,Table,Loop,Command-in-Smartforms.doc
http://www.esnips.com/doc/97acb00a-e513-4611-91f0-c626f460bfc5/Smart_Form_Overview.pdf
http://www.esnips.com/doc/77a981b9-8fe3-4fbb-8101-67745c1fe60c/SMART-FORMS_shail.ppt
http://www.sap-basis-abap.com/sapsf001.htm
http://www.sap-press.com/downloads/h955_preview.pdf
http://www.ossincorp.com/Black_Box/Black_Box_2.htm
http://www.sap-img.com/smartforms/sap-smart-forms.htm
Try this. A simple sample Smart Form.
SAP Smartforms can be used for creating and maintaining forms for mass printing in SAP Systems. The output medium for Smartforms support printer, fax, e-mail, or the Internet (by using the generated XML output).
According to SAP, you need neither have any programming knowledge nor use a Script language to adapt standard forms. However, basic ABAP programming skills are required only in special cases (for example, to call a function module you created or for complex and extensive conditions).
1. Create a new smartforms
Transaction code SMARTFORMS
Create new smartforms call ZSMART
2. Define looping process for internal table
Pages and windows
First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)
Here, you can specify your title and page numbering
&SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)
Main windows -> TABLE -> DATA
In the Loop section, tick Internal table and fill in
ITAB1 (table in ABAP SMARTFORM calling function) INTO ITAB2
3. Define table in smartforms
Global settings :
Form interface
Variable name Type assignment Reference type
ITAB1 TYPE Table Structure
Global definitions
Variable name Type assignment Reference type
ITAB2 TYPE Table Structure
4. To display the data in the form
Make used of the Table Painter and declare the Line Type in Tabstrips Table
e.g. HD_GEN for printing header details,
IT_GEN for printing data details.
You have to specify the Line Type in your Text elements in the Tabstrips Output options.
Tick the New Line and specify the Line Type for outputting the data.
Declare your output fields in Text elements
Tabstrips - Output Options
For different fonts use this Style : IDWTCERTSTYLE
For Quantity or Amout you can used this variable &GS_ITAB-AMOUNT(12.2)&
5. Calling SMARTFORMS from your ABAP program
REPORT ZSMARTFORM.
Calling SMARTFORMS from your ABAP program.
Collecting all the table data in your program, and pass once to SMARTFORMS
SMARTFORMS
Declare your table type in :-
Global Settings -> Form Interface
Global Definintions -> Global Data
Main Window -> Table -> DATA
Written by : SAP Hints and Tips on Configuration and ABAP/4 Programming
http://sapr3.tripod.com
TABLES: MKPF.
DATA: FM_NAME TYPE RS38L_FNAM.
DATA: BEGIN OF INT_MKPF OCCURS 0.
INCLUDE STRUCTURE MKPF.
DATA: END OF INT_MKPF.
SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.
SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.
MOVE-CORRESPONDING MKPF TO INT_MKPF.
APPEND INT_MKPF.
ENDSELECT.
At the end of your program.
Passing data to SMARTFORMS
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZSMARTFORM'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
if sy-subrc <> 0.
WRITE: / 'ERROR 1'.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
call function FM_NAME
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
GS_MKPF = INT_MKPF
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
SMARTFORMS GENERATION: (calling internal table fields)
 Open a smartform using the tcode smartforms.
 Usually form attributes shows admn data.
 In the form interface declare import/export parameters if any. Else declare the tables in tables tab button.
 In the windows and pages expand and create a table. It automatically generates header, main area and footer for the table.
 In data tab button in the table we usually declare a work area to bring the data from se38. Like: ktab into wa. ( The purpose of declaring the wa is , to get the data of the ktab in to header from the body area of the internal table).
 And in the tablepainter pushbutton in table we can have any no of line types. Depending on the requirement. ( for ex: If we want to devide a row in to 4 columns, we can devide it as 4,4,4,4cm as line type 1, And usually for the footer we dont need no of columns, So, we declare it as one column with 16cm measure with the name line type 2.). We can use these line types in the tables.
 In the header right click>>create>>tableline. It asks for line type. Select one line type which is appropriate.
 Like same create a row2 in main area using right click. If we select the line type 1, it automatically generates 4 cells. We can create text in each cell as per requirement.
 We can generate general attributes using general attributes tab button in the text. Or in the other way. We can switch on the field list on/off button from the application tool bar. It displays all the attributes in the left down corner of the screen. We can drag and drop the required fields in the general attributes tab button of the text.
 We continue the same procedure for all the texts. The texts should be displayed in the gray color. Then only it can collects the data from the abap editor fields.
 If it wont turns gray, we can check the fields in the editor by changing it to the line editor. The best thing is to drag the fields from the list, rather than declaring like &wa-matnr&
 In the footer also we create a line type and in that table line we create text.
SE38 PROGRAM(method I):
REPORT Z_CALLING_SMARTFORM2 .
tables: mara.
select-options: S_MATNR for MARA-MATNR.
DATA: kTAB LIKE MARA OCCURS 1 WITH HEADER LINE.
data: FM_NAME TYPE RS38L_FNAM.
SELECT * FROM MARA INTO TABLE kTAB WHERE MATNR in
S_MATNR.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z_MYFIRST_FORM2'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION fm_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
ktab = ktab
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IN THE OTHER WAY(method II):
REPORT Z_CALLING_SMARTFORM2 .
tables: mara.
select-options: S_MATNR for MARA-MATNR.
DATA: kTAB LIKE MARA OCCURS 1 WITH HEADER LINE.
SELECT * FROM MARA INTO TABLE kTAB WHERE MATNR in S_MATNR.
CALL FUNCTION '/1BCDWB/SF00000199'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
TABLES
ktab = ktab
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
In the method I we are calling the amartform dynamically using the function module 'SSF_FUNCTION_MODULE_NAME'.
Here we are exporting form name and importing fm_name.
So we need to declare the variable fm_name as
data: FM_NAME TYPE RS38L_FNAM.
We can have the type of the fm_name in the function module 'SSF_FUNCTION_MODULE_NAME' (in the export tab button).
Since we are passin the name of the Function module generated by the smart form in to the fm_name variable. We run the function module with the name fm_name, but not the FM generated by the smartform(like /1BCDWB/SF00000199)¬¬¬¬¬¬.
In the method II we directly call the smartform generated function module (i.e, /1BCDWB/SF00000199).
But the method I is recommended. In the method I, The fm_name is a variable we dont put it in the quotes while calling.
In the both methods we declare the internal table using the like option, but not begin of . end of. And in select statement we select *, But not individual fields.
EX2:
SMART FORM NAME: ZGITI_FORM1.
SE38:
REPORT Z_CALL_GIRI_FORM1 .
TABLES: VBRK.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN.
SELECTION-SCREEN END OF BLOCK B1.
*INITIALIZATION.
*T1 = 'SELECTION-CRIETERIA'.
DATA: BEGIN OF I_INVOICE OCCURS 1.
INCLUDE STRUCTURE ZSTR_INVOICE.
DATA: END OF I_INVOICE.
DATA: VAR1 LIKE VBRP-NETWR.
DATA: BEGIN OF I_ADDRESS OCCURS 1.
INCLUDE STRUCTURE ZSTR_ADDRESS.
DATA: END OF I_ADDRESS.
DATA: BEGIN OF I_ORDER OCCURS 1.
INCLUDE STRUCTURE ZSTR_ORDER.
DATA: END OF I_ORDER.
DATA: BEGIN OF I_ITEM OCCURS 1.
INCLUDE STRUCTURE ZSTR_ITEM.
DATA: END OF I_ITEM.
DATA: BEGIN OF I_VBFA OCCURS 1,
VBELV LIKE VBFA-VBELV,
VBELN LIKE VBFA-VBELN,
END OF I_VBFA.
SELECT KUNAG VBELN VKORG VTWEG SPART FROM VBRK INTO TABLE I_INVOICE
WHERE VBELN IN S_VBELN.
IF I_INVOICE[] IS NOT INITIAL.
SELECT KUNNR LAND1 NAME1 NAME2 ORT01 PSTLZ REGIO FROM
KNA1 INTO CORRESPONDING FIELDS OF TABLE I_ADDRESS FOR ALL ENTRIES IN
I_INVOICE WHERE KUNNR = I_INVOICE-KUNAG.
ENDIF.
IF I_INVOICE[] IS NOT INITIAL.
SELECT VBELV VBELN FROM VBFA INTO TABLE I_VBFA FOR ALL ENTRIES IN
I_INVOICE WHERE VBELN = I_INVOICE-VBELN.
ENDIF.
IF I_VBFA[] IS NOT INITIAL.
SELECT VBELN BSTNK FROM VBAK INTO CORRESPONDING FIELDS OF TABLE I_ORDER
FOR ALL ENTRIES IN I_VBFA WHERE VBELN = I_VBFA-VBELV.
ENDIF.
IF I_INVOICE[] IS NOT INITIAL.
SELECT POSNR MATNR ARKTX FKIMG NETWR FROM VBRP INTO TABLE I_ITEM FOR ALL
ENTRIES IN I_INVOICE WHERE VBELN = I_INVOICE-VBELN.
ENDIF.
LOOP AT I_ITEM.
AT LAST.
SUM.
VAR1 = I_ITEM-NETWR.
ENDAT.
ENDLOOP.
CALL FUNCTION '/1BCDWB/SF00000223'
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS =
USER_SETTINGS = 'X'
var = VAR1
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
tables
i_vbrk = I_INVOICE
i_vbak = I_ORDER
i_vbrp = I_ITEM
i_kna1 = I_ADDRESS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Maybe you are looking for
-
Script to insert file name into keywords field of same file
Hello, search a solution, a Script or another, which writes the file name into keywords field of same file (Metadata: Description/Keywords) in "photoshop", "bridge" or better in "Lightroom" . I found this topic from Mike Hale http://www.ps-scripts.co
-
A215 Satelite. Plugged in headphones. Now no sound at all
I had sound for years. Today I plugged in headphones for the first time. Seems like I heard a faint static. However, no other sound. I unplugged the earphones, and now my internal speakers do not produce any sound, except when I reboot. I hear 2 or 3
-
Whenever I encode songs, I do so in mp3 format (very universal). I encode at 256 kpbs. However, one time I accidently did a 192 kbps encoding, but it sounded like a 112 kbps endcoding. Then I did a 112 kbps, and I was right. Then I brough up Nero so
-
I bought My Ipod A week ago I uploaded many songs but whereever it's with hebrew I cannot see anything when will be published a update that contains hebrew? I can upload many updates that not from apple but then my warranty will be expired what do I
-
Hi, I need to trim the leading zeroes from my field. Eg: I am taking the field length as 6, but if my value is only of 4 digits then its coming as 004216. I need this value to be 4216 only. I cant change the field length to 4 as there may be values t