Inserting Multiple Line Items To Stored Procedure
Hi
I need to insert line item values to one of the argument in stored procedure.what data type do i need to pass for type attribute.I tried with different datatypes from sap help but no luck.Please guide me how should i proceed.
Interface is : Idoc to JDBC (stored procedure)
Target structure:
DT_Orderstatus_Trgt
--> StatementName
-->SP Name
action--->Attribute
table--->Attribute
--->Argument (to insert multiple line items)
isInput
isOutput
type
Just i am showing only one argumnet which needs to be inserted multiple line items.
Thanks
Hi,
Stored procedure can support the below data types
INTEGER, BIT, TINYINT, SMALLINT, BIGINT, FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL, CHAR, VARCHAR, STRING, LONGVARCHAR, DATE, TIME, TIMESTAMP, BINARY, VARBINARY, LONGVARBINARY, BLOB (input and output),CLOB (input and output), CURSOR (output; only in conjunction with the Oracle JDBC driver).
But
Instead of passing multiple line items / array of input value in stored procedure, You can go for the below option as having 2 statements in your mapping with below structures and those 2 statements should be linked with the primary key say col1.
<root>
<StatementName1>
<dbTableName action=u201DINSERTu201D>
<table>realDbTableName</table>
<access>
<col1>val1</col1>
<col2>val2</col2>
</access>
<access>
<col1>val11</col1>
</access>
</dbTableName>
</StatementName1>
<StatementName2>
<dbTableName action=u201DINSERTu201D>
<table>realDbTableName</table>
<access>
<col1>val1</col1>
<col2>val2</col2>
</access>
<access>
<col1>val11</col1>
</access>
</dbTableName>
</StatementName2>
</root>
Similar Messages
-
How to insert multiple line items in fv60 using bdc.
Hi all,
How to insert multiple line items in fv60 using bdcshi
chk this
DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA : IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : V_EBELP(30) , V_MENGE(30) , V_WERKS(30), V_EMATN(30) ,
V_PEINH(30).
DATA : FILE TYPE STRING, V_MSG(100) , V_IND(2) TYPE N , FLAG VALUE 'X'.
PARAMETERS: P_FILE(50) TYPE C DEFAULT 'C:\ME21_TEST'.
DATA : BEGIN OF ITAB OCCURS 0,
IND(02),
LIFNR_001(010),
data element: BSART
BSART_002(004),
data element: BEDAT
data element: EKORG
EKORG_004(004),
EKGRP_006(003),
data element: LPEIN
LPEIN_005(001),
data element: EMATNR
EMATN_01_007(018),
data element: EWERK
WERKS_01_008(004),
data element: EPEIN
PEINH_01_009(006),
data element: EWERK
MENGE_01_013(017),
data element: AUFEP
EBELP_014(005),
data element: AUFEP
END OF ITAB.
START-OF-SELECTION.
FILE = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SORT ITAB BY IND.
START-OF-SELECTION.
LOOP AT ITAB.
REFRESH IT_MESSAGES.
<b>V_IND = V_IND + 1.</b>
<b>AT NEW IND.</b>
<b>READ TABLE ITAB INDEX SY-TABIX.</b>
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0100'.
PERFORM BDC_FIELD USING 'EKKO-LIFNR'
ITAB-LIFNR_001.
PERFORM BDC_FIELD USING 'RM06E-BSART'
ITAB-BSART_002.
*perform bdc_field using 'RM06E-BEDAT'
ITAB-BEDAT_003.
PERFORM BDC_FIELD USING 'EKKO-EKORG'
ITAB-EKORG_004.
PERFORM BDC_FIELD USING 'RM06E-LPEIN'
ITAB-LPEIN_005.
PERFORM BDC_FIELD USING 'EKKO-EKGRP'
ITAB-EKGRP_006.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDAT.
<b>PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
CONCATENATE 'EKPO-EMATN(' V_IND ')' INTO V_EMATN.
PERFORM BDC_FIELD USING V_EMATN
ITAB-EMATN_01_007.
CONCATENATE 'EKPO-WERKS(' V_IND ')' INTO V_WERKS.
PERFORM BDC_FIELD USING V_WERKS
ITAB-WERKS_01_008.
CONCATENATE 'EKPO-PEINH(' V_IND ')' INTO V_PEINH.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
PERFORM BDC_FIELD USING V_PEINH
ITAB-PEINH_01_009.
*CONCATENATE 'EKPO-MENGE(' V_IND ')' INTO V_MENGE.
*perform bdc_dynpro using 'SAPMM06E' '0120'.
*perform bdc_field using V_MENGE
ITAB-MENGE_01_013.
*CONCATENATE 'EKPO-EBELP(' V_IND ')' INTO V_EBELP.
PERFORM BDC_DYNPRO USING 'SAPMM06E' '0120'.
PERFORM BDC_FIELD USING 'RM06E-EBELP'
ITAB-EBELP_014.</b>PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
AT END OF IND.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
ENDAT.
CALL TRANSACTION 'ME21' USING IT_BDCDATA MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
LOOP AT IT_MESSAGES WHERE MSGTYP = 'E' OR MSGTYP = 'A'.
IF FLAG = 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = 'GAMY_FAILURE'
HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
RECORD = FILLER1
PROG = SY-CPROG
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR FLAG.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'ME21'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
DYNPROTAB = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = 'EN'
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = V_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
WRITE : / V_MSG.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDLOOP.
IF FLAG NE 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 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.
ENDIF.
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA. -
How do i insert multiple blob files in Stored procedure using c#?
i want to add multiple blob files to a stored procedure at one go.Thus i have a 2 dimensional byte array consisting of multiple blob files.How to i add this 2 dimensional array to stored procedure?
Hi Jeff,
I haven't tried to insert multiple images at a time, but have done it for single image at a time and composed article on it : BizTalk
Server 2010: How to Insert Image In SQL Through Orchestration and sample can be found at :
BizTalk Server 2010: How to Insert
Image In SQL Through Orchestration sample.
I hope it helps.
Maheshkumar S Tiwari|User
Page | http://tech-findings.blogspot.com/ -
How to execute multiple queries in one stored procedure.
Hi,
I am Kumar,
How to execute multiple queries in one stored procedure.
here is the my requirements,
1. get the max value from one table and sum of the that value.
2. insert the values and also sum of the max value.
using stored procedure
I am using SQL server 2000 database.
Please help me.
Advance thanks
by,
KumarThis is not a java question and it is not even a problem: your only problem is
1) lack of knowledge
2) lack of interest to find a manual
But you are going to have to change both by actually reading a book or a manual that explains the stored procedure language of SQL Server. It is the same as Sybase I think, so you could also look for a manual for that DBMS. -
Hi all,
I wana pass multiple line items thru bdc me21n....can any1 please help me .if u guys have some code can mail me at [email protected] will be rewarded.
my code below is not working for passing multiple items.
report y1_po_test
no standard page heading line-size 255.
tables: mara,
lfa1,
eina,
eine,
eban,
zdrgsah, zdrgsap,
zdrgsup,
t100,
ekko,
a004, zprice_grpsal, mvke.
*Internal Table to get the input Data
data: begin of i_input occurs 0,
matnr like ekpo-matnr,
asqty like ekpo-menge,
ebeln like ekpo-ebeln,
posnr(5),
posnr like zdrgsap-posnr,
invno like zdrgsap-invno,
invdt like zdrgsah-invdt,
netpr like zdrgsap-netpr,
cntno like zdrgsap-cntno,
shcnm like zdrgsah-shcnm,
apcno like zdrgsap-apcno,
spcno like zdrgsap-spcno,
werks like ekpo-werks,
lgort like ekpo-lgort,
matkl like ekpo-matkl,
pack(10),
mvgr2 like mvke-mvgr2,
dpric type p decimals 6 ,
gpric type p decimals 6,
end of i_input.
data: begin of i_inputxt occurs 0,
matnr(18) ,
asqty(13) ,
ebeln(10) ,
posnr(6) ,
invno(10) ,
invdt(8) ,
netpr(11) ,
cntno(11) ,
shcnm(10) ,
werks(4) ,
lgort(4) ,
matkl(9) ,
pack(10),
end of i_inputxt.
data: begin of i_error occurs 0,
prnum like eban-banfn,
pritm like eban-bnfpo,
inmat like mara-matnr,
prmat like mara-matnr,
asqty like zdrgsap-asqty,
prqty like eban-menge,
remak(100),
remark(255) type c,
end of i_error.
data : begin of i_error1 occurs 0,
prnum like eban-banfn,
pritm like eban-bnfpo,
asqty like zdrgsap-asqty,
prqty like eban-menge,
remak(100),
end of i_error1.
data : begin of i_zsap occurs 0,
ebeln like zdrgsap-ebeln,
posnr(5),
menge like zdrgsap-menge,
asqty like zdrgsap-asqty,
end of i_zsap.
data : v_ebeln like eket-ebeln.
data : begin of i_a004 occurs 0,
matnr like a004-matnr,
knumh like a004-knumh,
kbetr like konp-kbetr,
end of i_a004,
i_a0041 like i_a004 occurs 0 with header line.
data : begin of i_konp occurs 0,
knumh like konp-knumh,
kbetr like konp-kbetr,
konwa like konp-konwa,
end of i_konp.
data : begin of i_konp1 occurs 0,
knumh like konp-knumh,
kbetr like konp-kbetr,
konwa like konp-konwa,
end of i_konp1.
data : begin of i_netpr occurs 0,
ebeln like eket-ebeln,
ebelp like eket-ebelp,
matnr like ekpo-matnr,
menge like ekpo-menge,
netpr like ekpo-netpr,
kbetr like konp-kbetr,
end of i_netpr.
data : begin of i_grpsal occurs 0,
pcode like zprice_grpsal-pcode,
fact like zprice_grpsal-fact,
wfact like zprice_grpsal-wfact,
end of i_grpsal.
data : begin of i_domsal occurs 0,
pcode like zprice_grpsal-pcode,
fact like zprice_grpsal-fact,
wfact like zprice_grpsal-wfact,
end of i_domsal.
data : begin of i_zsap1 occurs 0,
ebeln like zdrgsap-ebeln,
posnr(5),
asqty like zdrgsap-asqty,
end of i_zsap1.
data: begin of bdcdata occurs 0.
include structure bdcdata. " Batch input: New table field
data: end of bdcdata.
messages of call transaction
data: messtab like bdcmsgcoll occurs 0 with header line.
data: i_mara type mara occurs 0 with header line,
i_eina like eina occurs 0 with header line,
i_eine like eine occurs 0 with header line.
data : begin of i_inferr occurs 0,
matnr like eina-matnr,
infnr like eina-infnr,
werks like eine-werks,
end of i_inferr.
data : begin of i_inferrc occurs 0,
matnr like eina-matnr,
end of i_inferrc.
*Data declaration.
data: v_file type string, " Variable for uploading file
v_item(5) type c, " Line item number
v_itno(2) type n,
p_wkurs like zdrgkurs-wkurs,
v_matnr(20) type c,
v_menge(20) type c,
v_banfn(20) type c,
v_bnfpo(20) type c,
v_bednr(20) type c,
v_werks(20),
p_lifnr(10) ,
v_flag,
p_lifnrtxt(10),
p_wkurstxt(9),
p_bsartxt(4),
v_posnr(5), n type i,
v_quant(13),
v_asqty(13),
v_prqty(13),
v_apcno(6),
v_spcno(4),
v_itm(11),
v_cnt type i,
v_cntno(4),
v_pack(10),
v_order(15),
v_lifnr(10),
v_invdt like sy-datum,
v_waers like ekko-waers,
v_podat like ekko-bedat,
v_docdt1 like sy-datum,
v_docdt(10),
v_fnam(132).
data : begin of i_test occurs 0,
bnfpo like eban-bnfpo,
matnr like eban-matnr,
menge like eban-menge,
bsmng like eban-bsmng,
end of i_test.
data : begin of i_mvke occurs 0,
matnr like mvke-matnr,
mvgr2 like mvke-mvgr2,
end of i_mvke.
data : begin of i_invno,
ebeln like ekko-ebeln,
angnr like ekko-angnr,
end of i_invno.
data : i_final like zinvdiff occurs 0 with header line.
Constants
constants : c_pd01 like eine-werks value 'PD01'.
*Selection Screen Declarations
selection-screen begin of block b1 with frame title text-010.
parameters: p_invno like zdrgsah-invno obligatory,
p_bsart like ekko-bsart obligatory.
selection-screen end of block b1.
start-of-selection.
To Upload the data into Internal table.
perform f_upload_data.
To Validate the input data.
perform f_check_data.
if i_error[] is not initial or i_error1[] is not initial.
To display the error message
perform f_display_errors.
else.
To create PO
perform f_process_session.
endif.
perform f_check_calc_price.
perform f_display_data.
perform f_update_zinvdiff.
*& Form f_get_filename
text
form f_get_filename.
endform. " F_get_filename
*& Form f_upload_data
form f_upload_data .
select matwa as matnr asqty ebeln posnr b~invno invdt netpr cntno
shcnm apcno spcno into table i_input
from zdrgsah as a join zdrgsap as b on
a~invno = b~invno
where b~invno eq p_invno.
select ebeln
posnr
menge
asqty
from zdrgsap into table i_zsap
where invno = p_invno.
loop at i_zsap.
concatenate i_zsap-posnr(4) '0' into v_posnr.
i_zsap1-ebeln = i_zsap-ebeln.
i_zsap1-posnr = v_posnr.
i_zsap1-asqty = i_zsap-asqty.
collect i_zsap1.
clear i_zsap1.
endloop.
delete adjacent duplicates from i_zsap comparing posnr menge .
delete adjacent duplicates from i_input comparing ebeln posnr.
loop at i_input.
p_werks = i_input-werks.
v_invdt = i_input-invdt.
call function 'CONVERT_DATE_FORMAT'
exporting
i_date = v_invdt
importing
e_calc_date = v_invdt.
if i_input-apcno is initial.
v_apcno = '0000'.
else.
v_apcno = i_input-apcno.
endif.
if i_input-spcno is initial.
v_spcno = '0000'.
else.
v_spcno = i_input-spcno.
endif.
if i_input-cntno is initial.
i_input-cntno = '0000'.
endif.
concatenate v_apcno v_spcno into i_input-pack.
concatenate v_pack v_cntno into v_order separated by '-'.
i_input-order = v_order.
clear : v_itm, v_cnt, v_cntno, v_pack, v_apcno, v_spcno, v_order.
concatenate i_input-posnr(4) '0' into v_posnr.
select single lifnr into p_lifnr from zdrgsup
where shcnm = i_input-shcnm.
v_lifnr = p_lifnr.
if sy-subrc <> 0.
message e000(zcnc) with text-002.
endif.
select single * from eban
where banfn eq i_input-ebeln
and bnfpo eq v_posnr.
if sy-subrc eq 0.
move eban-werks to i_input-werks.
move eban-lgort to i_input-lgort.
move eban-matkl to i_input-matkl.
move eban-bnfpo to i_test-bnfpo.
move eban-matnr to i_test-matnr.
move eban-menge to i_test-menge.
move eban-bsmng to i_test-bsmng.
modify i_input.
if not i_input-matnr eq i_test-matnr.
move i_input-ebeln to i_error-prnum.
move v_posnr to i_error-pritm.
move i_input-matnr to i_error-inmat.
move eban-matnr to i_error-prmat.
i_error-remak = 'Material does not match'.
append i_error.
clear i_error.
endif.
v_quant = i_test-menge - i_test-bsmng.
read table i_zsap1 with key ebeln = i_input-ebeln posnr = v_posnr.
if not i_zsap1-asqty <= v_quant.
move i_input-ebeln to i_error1-prnum.
move i_zsap1-posnr to i_error1-pritm.
move i_zsap1-asqty to i_error1-asqty.
move eban-menge to i_error1-prqty.
move v_quant to i_error1-prqty.
i_error1-remak = 'Material Quantity does not match'.
append i_error1.
clear i_error1.
endif.
select single matnr infnr from eina
into corresponding fields of i_eina
where matnr eq i_input-matnr
and lifnr eq p_lifnr.
if sy-subrc = 0.
append i_eina.
check not i_eina[] is initial.
select single * from eine
into i_eine
where infnr eq i_eina-infnr
and werks eq eban-werks.
if sy-subrc <> 0.
move i_input-matnr to i_inferr-matnr.
move i_eina-infnr to i_inferr-infnr.
move eban-werks to i_inferr-werks.
append i_inferr.
clear i_inferr.
endif.
else.
move i_input-matnr to i_inferrc-matnr.
append i_inferrc.
clear i_inferrc.
endif.
clear : i_eina, i_eine.
clear : i_zsap, i_zsap1, i_input, v_posnr,
v_quant, i_test.
endif.
endloop.
delete adjacent duplicates from i_error1 comparing prnum pritm.
perform chk_info_rec.
endform. " f_upload_data
*& Form f_check_data
form f_check_data .
if not i_input[] is initial.
select * from mara
into table i_mara
for all entries in i_input
where matnr eq i_input-matnr.
endif.
loop at i_mara.
read table i_input with key matnr = i_mara-matnr.
if sy-subrc <> 0.
write : 'Following Part Numbers are not found in MARA'.
write : / i_input-matnr.
endif.
endloop.
if i_mara[] is initial.
loop at i_input.
format color col_heading intensified off.
write : 'Following Part Numbers are not found in MARA'.
format color col_normal intensified off.
write : / i_input-matnr.
endloop.
endif.
select single wkurs into p_wkurs from zdrgkurs
where invno = p_invno.
if sy-subrc ne 0.
message e000(zcnc) with text-s11.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = p_lifnr
importing
output = p_lifnr.
p_lifnrtxt = p_lifnr.
p_wkurstxt = p_wkurs.
p_bsartxt = p_bsart.
loop at i_input.
move-corresponding i_input to i_inputxt.
append i_inputxt.
endloop.
select single ebeln
angnr from ekko
into i_invno
where angnr = p_invno.
if sy-subrc = 0.
perform display_err.
endif.
endform. " f_check_data
*& Form f_process_session
text
form f_process_session.
v_docdt1 = sy-datum.
write v_docdt1 to v_docdt using edit mask '__.__.____'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEDOCTYPE'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
perform bdc_field using 'MEPO_TOPLINE-BSART'
p_bsartxt.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'
p_lifnrtxt.
perform bdc_field using 'BDC_CURSOR'
'MEPO1222-BUKRS'.
perform bdc_field using 'MEPO1222-EKORG'
'SBAP'.
perform bdc_field using 'MEPO1222-EKGRP'
'PG1'.
perform bdc_field using 'MEPO1222-BUKRS'
'SBA'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MEPO_TOPLINE-BSART'
p_bsartxt.
perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'
p_lifnrtxt.
********************conditions***************************************
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(08)'.
perform bdc_field using 'KOMV-KSCHL(07)'
'zot1'.
perform bdc_field using 'KOMV-KSCHL(08)'
'zinc'.
perform bdc_field using 'KOMV-KSCHL(09)'
'ziv1'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=V69A_KOAN'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(01)'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMV-KSCHL(02)'
'zca1'.
perform bdc_field using 'KOMV-KSCHL(03)'
'zfa1'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT7'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(09)'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'MEPO1229-ANGNR'
p_invno.
perform bdc_field using 'MEPO1229-IHRAN'
v_invdt.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4001BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4000BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1229-IHRAN'.
perform bdc_field using 'DYN_6000-LIST'
' 1'.
loop at i_inputxt.
concatenate i_inputxt-posnr(4) '0' into v_posnr.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_matnr.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_menge.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_banfn.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_bnfpo.
concatenate 'MEPO1211-BEDNR(' v_itno ')' into v_bednr.
concatenate 'MEPO1211-WERKS(' v_itno ')' into v_werks.
v_item = v_item + 10.
endif.
v_itno = v_itno + 1.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
v_matnr.
perform bdc_field using v_matnr "'MEPO1211-EMATN(01)'
i_inputxt-matnr.
perform bdc_field using v_menge "'MEPO1211-MENGE(01)'
i_inputxt-asqty.
perform bdc_field using v_banfn "'MEPO1211-BANFN(01)'
i_inputxt-ebeln.
perform bdc_field using v_bnfpo "'MEPO1211-BNFPO(01)'
i_inputxt-posnr.
perform bdc_field using 'DYN_6000-LIST'
v_itno.
loop at i_inputxt .
v_itno = sy-tabix.
clear v_fnam.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-matnr.
clear v_fnam.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-asqty.
clear v_fnam.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-ebeln.
clear v_fnam.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-posnr.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
endloop.
loop at i_inputxt from 6.
v_itno = sy-tabix.
clear v_fnam.
concatenate 'MEPO1211-EMATN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-matnr.
clear v_fnam.
concatenate 'MEPO1211-MENGE(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-asqty.
clear v_fnam.
concatenate 'MEPO1211-BANFN(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-ebeln.
clear v_fnam.
concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_fnam.
perform bdc_field using v_fnam
i_inputxt-posnr.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
endloop.
perform bdc_field using 'BDC_CURSOR'
'MEPO1320-SLFDT(01)'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=TABHDT2'.
perform bdc_field using 'DYN_6000-LIST'
' 2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=V69A_KOAK'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KBETR(05)'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MECHECKDOC'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KSCHL(01)'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_CURSOR'
'04/03'.
perform bdc_field using 'BDC_OKCODE'
'=&ONT'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEV4000BUTTON'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
perform bdc_field using 'DYN_6000-LIST'
' 2'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'KOMV-KBETR(08)'.
perform bdc_field using 'KOMV-KBETR(03)'
' .54'.
perform bdc_field using 'KOMV-KBETR(08)'
' .54'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MESAVE'.
perform bdc_field using 'BDC_CURSOR'
'MEPO1211-NETPR(01)'.
perform bdc_transaction using 'ME21N'.
endform. "f_process_session
*& Form bdc_transaction
text
-->P_0464 text
form bdc_transaction using tcode.
data: l_mstring(480).
data: l_subrc like sy-subrc.
data: v_mode type c.
v_mode = 'A'.
refresh messtab.
call transaction tcode using bdcdata
mode v_mode
update 'S'
messages into messtab.
l_subrc = sy-subrc.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
loop at messtab.
select single * from t100 where sprsl = messtab-msgspra
and arbgb = messtab-msgid
and msgnr = messtab-msgnr.
if sy-subrc = 0.
l_mstring = t100-text.
if l_mstring cs '&1'.
replace '&1' with messtab-msgv1 into l_mstring.
replace '&2' with messtab-msgv2 into l_mstring.
replace '&3' with messtab-msgv3 into l_mstring.
replace '&4' with messtab-msgv4 into l_mstring.
else.
replace '&' with messtab-msgv1 into l_mstring.
replace '&' with messtab-msgv2 into l_mstring.
replace '&' with messtab-msgv3 into l_mstring.
replace '&' with messtab-msgv4 into l_mstring.
endif.
condense l_mstring.
if messtab-msgtyp eq 'E' or messtab-msgtyp eq 'W'.
write: / messtab-msgtyp, l_mstring(250).
endif.
search l_mstring for 'SEA'.
if sy-subrc = 0.
write: / messtab-msgtyp, l_mstring(250).
endif.
else.
write: / messtab.
endif.
endloop.
endform. " bdc_transaction
Start new screen *
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform. "BDC_DYNPRO
Insert field *
form bdc_field using fnam fval.
if fval <> space.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endif.
endform. "BDC_FIELD
*& Form f_display_errors
form f_display_errors .
if i_error[] is not initial.
format color col_heading intensified off.
uline .
write :/ 'PR No ',
(10) 'Item No',
(20) 'PR Part No',
(30) 'Invoiced Part No',
(60) 'Remark'.
uline .
loop at i_error.
perform f_display_color.
write :/ i_error-prnum,
(10) i_error-pritm ,
(20) i_error-prmat,
(30) i_error-inmat,
(60) i_error-remak.
clear i_error.
endloop.
endif.
if i_error1[] is not initial.
format color col_heading intensified off.
uline .
write :/ 'PR No ',
(10) 'Item No',
(20) 'PR Quantity',
(30) 'Invoiced Quantity',
(60) 'Remark'.
uline .
loop at i_error1.
perform f_display_color.
if not i_error1-asqty is initial.
v_asqty = i_error1-asqty .
v_prqty = i_error1-prqty.
write :/ i_error1-prnum,
(10) i_error1-pritm ,
(20) v_prqty,
(30) v_asqty,
(60) i_error1-remak.
clear : v_asqty, v_prqty.
endif.
clear i_error1.
endloop.
endif.
endform. " f_display_errors
*& Form f_display_color
form f_display_color .
if v_flag = 0.
format color col_normal intensified on.
v_flag = 1.
elseif v_flag = 1.
format color col_normal intensified off.
v_flag = 0.
endif.
endform. " f_display_color
*& Form display_err
text
--> p1 text
<-- p2 text
form display_err .
format color col_heading intensified off.
write (120) text-006.
uline .
write : 'PR No ',
(15) 'Invoice No',
(30) 'Remark'.
uline.
format color col_negative intensified off.
write :/ i_invno-ebeln,
(15) p_invno ,
(30) 'Invoice Already Exists'.
endform. " display_err
*& Form f_check_calc_price
text
--> p1 text
<-- p2 text
form f_check_calc_price .
data : d_pric type p decimals 6 ,
g_pric type p decimals 6,
v_exch type p decimals 4 value '0.1049'.
select single ebeln
waers
bedat
from ekko into (v_ebeln , v_waers , v_podat)
where angnr eq p_invno.
loop at i_input.
concatenate i_input-posnr(4) '0' into v_posnr.
select single p~ebeln
p~ebelp
matnr
p~menge
netpr
into i_netpr
from eket as t inner join ekpo as p
on t~ebeln eq p~ebeln
and t~ebelp eq p~ebelp
where t~ebeln eq v_ebeln
and t~banfn eq i_input-ebeln
and t~bnfpo eq v_posnr.
if v_waers eq 'JPY'.
i_netpr-netpr = i_netpr-netpr * 100.
endif.
if not i_input-netpr eq i_netpr-netpr.
append i_netpr.
clear : i_input, i_netpr, v_posnr.
else.
clear : i_input, i_netpr, v_posnr.
endif.
endloop.
delete adjacent duplicates from i_netpr comparing ebeln ebelp matnr.
modify zinvdiff from table i_final.
if i_netpr[] is not initial.
select matnr
knumh
from a004
into table i_a004
for all entries in i_netpr
where matnr = i_netpr-matnr
and kschl = 'ZPR0'
and vkorg = 'SBAP'
and vtweg = 'DD'
and ( datab <= sy-datum and datbi => sy-datum ).
select matnr
knumh
from a004
into table i_a0041
for all entries in i_netpr
where matnr = i_netpr-matnr
and kschl = 'ZPR0'
and vkorg = 'EXPT'
and vtweg = 'BR'
and ( datab <= sy-datum and datbi => sy-datum ).
select matnr mvgr2 from mvke
into corresponding fields of table i_mvke
for all entries in i_netpr
where matnr = i_netpr-matnr
and vkorg = 'SBAP'
and vtweg = 'DD'.
if i_a004[] is not initial.
select knumh
kbetr
from konp
into table i_konp
for all entries in i_a004
where knumh = i_a004-knumh.
loop at i_a004.
read table i_konp with key knumh = i_a004-knumh.
i_konp-kbetr = i_konp-kbetr / 10.
move i_konp-kbetr to i_a004-kbetr.
modify i_a004.
clear : i_konp, i_a004.
endloop.
endif.
if i_a0041[] is not initial.
select knumh
kbetr
from konp
into table i_konp1
for all entries in i_a0041
where knumh = i_a0041-knumh.
loop at i_a0041.
read table i_konp1 with key knumh = i_a0041-knumh.
move i_konp1-kbetr to i_a0041-kbetr.
modify i_a0041.
clear : i_konp1, i_a0041.
endloop.
endif.
if i_mvke[] is not initial.
select pcode
fact
wfact
into table i_domsal
from zprice_grpsal
for all entries in i_mvke
where pcode = i_mvke-mvgr2
and vkorg = 'SBAP'
and vtweg = 'DD'
and lifnr = v_lifnr.
select pcode
fact
wfact
into table i_grpsal
from zprice_grpsal
for all entries in i_mvke
where pcode = i_mvke-mvgr2
and vkorg = 'EXPT'
and vtweg = 'BR'
and lifnr = v_lifnr.
endif.
loop at i_input .
read table i_mvke with key matnr = i_input-matnr.
if sy-subrc = 0.
move i_mvke-mvgr2 to i_input-mvgr2.
endif.
read table i_domsal with key pcode = i_input-mvgr2.
if sy-subrc = 0.
d_pric = i_domsal-fact / i_domsal-wfact.
i_input-dpric = i_input-netpr * d_pric * ( 112 / 100 ).
endif.
read table i_grpsal with key pcode = i_input-mvgr2.
if sy-subrc = 0.
g_pric = i_grpsal-fact * i_grpsal-wfact.
i_input-gpric = ( i_input-netpr * ( 112 / 100 ) ) / g_pric .
endif.
modify i_input.
clear i_input.
clear d_pric.
clear g_pric.
endloop.
endif.
endform. " f_check_price
*& Form f_display_data
text
--> p1 text
<-- p2 text
form f_display_data .
loop at i_netpr.
move i_netpr-ebeln to i_final-ebeln.
move i_netpr-ebelp to i_final-ebelp.
move i_netpr-matnr to i_final-matnr.
move i_netpr-netpr to i_final-poprc.
move i_netpr-menge to i_final-asqty.
move p_invno to i_final-invoice.
append i_final.
clear i_final.
endloop.
loop at i_final.
move v_podat to i_final-podat.
read table i_input with key matnr = i_final-matnr.
move i_input-netpr to i_final-invpr.
move i_input-dpric to i_final-dcalclp.Dear Santosh,
I haven't gone through your piece of code.
But I can suggest a way out, while handling multiple line-items.
The following code sample elucidate the use of multiple line-items. This is just an example for your understanding.
FORM BDC_OPERATION .
DATA: LV_ARBPL(15) TYPE C,
LV_ROWNO(2) TYPE N.
LOOP AT IT_TABDATA INTO WA_TABDATA.
CLEAR: LV_ARBPL
LV_ROWNO = SY-TABIX.
CONCATENATE 'PLPOD-ARBPL' '(' LV_ROWNO ')' INTO LV_ARBPL.
PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' LV_ARBPL.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
PERFORM BDC_FIELD USING LV_ARBPL WA_TABDATA-ARBPL.
ENDLOOP.
ENDFORM. " BDC_OPERATION
Regards,
Abir
Please don't forget to award points * -
Unable to create PO with multiple line items through LSMW-BAPI method
Hi All,
I have a requirement of creating PO through LSMW. I can't use LSMW standard batch input program since there are some fileds not available and also it has many limitations. I'm using LSMW-BAPI method ( Business object BUS2012) which create IDOC and uses BAPI_PO_CREATE1 to ultimately post the PO in the system. I am trying to create PO from a single file which contains both Header and Item data.
Now my problem is that everytime PO is being created with Single line item only. Everytime I am giving multiple item data in the source file LSMW is preparing multiple IDOCs for multiple line items. As per my understanding this is happenng since header and item is in the same hierarchy level of IDOC type PORDCR102 and the control record is inserted for every line item in the source file.
It seems that through LSMW-BAPI it is not possible to create PO with multiple line items. Can anybody provide some input regarding this? Thanks in advance.
BR,
Atanu MukherjeeSolved by myself.
Earlier the problem was that LSMW was not being able to recognize items under same header. It was creating new IDOCs every time it gets a new item. To enable this we need to create two structure HEADERDATA and ITEMDATA. Two additional identifier fields with identifier value 'H' and 'I' should be added in these two structures respectively. Then we need one sequential file with the identifiers field followed by the header and Item data. Example:
H~header data
I~item data
I~item data
This would help the standard program to understand what are the items under same header and ultimately create PO with multiple line items.
BR,
Atanu Mukherjee -
LSMW program to upload the sales order with multiple line items.
Dear SD and PP Gurus,
I am new to creating LSMW Program.
I want to create a LSMW program to upload the sales order with multiple line items. I have read on SDN that it can be done on two phases. First Create Header Data than line items. IS IT TRUE??, Or
Is there any procedure by which we can load the sales orders with multiple line items in a single run (part).
I want to use Batch process, not a BAPI or IDOC procedure.
I have created a program with
object 0090
Method 0000
Program Name RVINVB10
Program Type D
Source Structure 1 - For Header and Source Structure 2 for Line Items.
Mapped Field INDET (With Fix Value 1), ORDERTYPE, SALESORG, DISTCHANNEL, DIVISION, CUSTOMER, PONUMBER , DELVDATE, PRCGDATE, PMTTERM
INCOT1 INCOT2 with Source Structure - 1 and
Field INDENT (With Fix Value 2), ITEMNO, MATCODE, MATQTY, SUOM, PLANT, BATCH, AMOUNT with Structure-2
than maintained Structure relation ship, field Mapping, Specified Files, Assigned files, Read Data and other process,
At final stage (Start Direct Input program RVINVB10) it is giving a message - Table name not allowed.
Please tell me where I am wrong.
Thanks in advance.
DSCDear SD Gurus n Experts,
I have solved the above problem. But there is another problem appearing regarding the date format. Now system generating a message: Date . . is not valid.
While I am using Date: YYYYMMDD format in flat file, which is SAP's Standard Format.
In SDN Link: LSMW upload Sales Order using VA01/VA02 I have found that there are some date fields which are mandatory to filled. Here I have mapped
VDATU - Requested delivery date, BSTDK - Customer purchase order date, PRSDT - Date for pricing and exchange rate, BSTDK_E - Ship-to party's PO date, FKDAT - Billing Date, KORDT - Delivery Date,
and PRGRS - Date type is Constant = D
Can any one tell me, where is the priblem.
With thanks,
DSC -
Setting the value of a single attribute for multiple line items
Hi all,
I am working on a Web Dynpro application, I have created this applicaion for an accounting document so it has header data and multiple line item data. As per the requirement I have to put the following logic:
1. When a user enters a value in the field KBLNR on the line item, all the other fields like cost centerm fund, functional area should populate from a database table based on the value of the KBLNR. to get this I have put the following code:
TYPES: BEGIN OF t_kblp,
fipos TYPE kblp-fipos,
kostl TYPE kostl,
END OF t_kblp.
DATA lv_kblnr TYPE wd_this->element_t_bseg-kblnr.
DATA: lt_kblp TYPE STANDARD TABLE OF t_kblp,
wa_kblp LIKE LINE OF lt_kblp,
lt_bseg TYPE STANDARD TABLE OF bseg,
wa_bseg TYPE bseg.
DATA lo_nd_t_bseg TYPE REF TO if_wd_context_node.
DATA lo_el_t_bseg TYPE REF TO if_wd_context_element.
DATA: ls_t_bseg TYPE wd_this->element_t_bseg,
lo_api_controller TYPE REF TO if_wd_controller,
lo_message_manager TYPE REF TO if_wd_message_manager,
lo_nd_tbseg TYPE REF TO if_wd_context_node,
lo_el_tbseg TYPE REF TO if_wd_context_element,
lt_el_tbseg TYPE wdr_context_element_set,
lv_bseg TYPE bseg.
lo_nd_t_bseg = wd_context->path_get_node( path = `ZDATA.CHANGING.T_BSEG` ).
lo_api_controller ?= wd_this->wd_get_api( ).
CALL METHOD lo_api_controller->get_message_manager
RECEIVING
message_manager = lo_message_manager.
lo_nd_tbseg = wd_context->path_get_node( path = `ZDATA.CHANGING.T_BSEG` ).
lt_el_tbseg = lo_nd_tbseg->get_elements( ).
LOOP AT lt_el_tbseg INTO lo_el_tbseg.
lo_el_tbseg->get_static_attributes(
IMPORTING static_attributes = lv_bseg ).
IF lv_bseg-kblnr NE ' '.
SELECT belnr
fipos
kostl
PSPNR
geber
saknr
fkber
grant_nbr
gsber
FROM kblp
inTO corresponding fields of wa_kblp
WHERE belnr = lv_bseg-kblnr and
saknr = lv_bseg-saknr.
ENDSELECT.
lo_nd_t_bseg = wd_context->path_get_node( path = `ZPRELIMINARY_POSTING.CHANGING.T_BSEG` ).
* get element via lead selection
lo_el_t_bseg = lo_nd_t_bseg->get_element( ).
lo_el_tbseg->set_static_attributes(
EXPORTING static_attributes = wa_kblp ).
CLEAR: lv_bseg, wa_kblp.
ENDLOOP.
everything is working fine but now the problem is couple of fields that I have in wa_kblp are with different names in bseg table and hence they are not updating... I tried putting the following logic within the loop :
lo_el_t_bseg->set_attribute(
name = `PROJK`
value = wa_kblp-pspnr ).
but it's only setting the value of the first line item and not working for the multiple line items, can you please tell me how can do this?
Thanks,
Rajat Garg
Edited by: rajatg on Jun 24, 2011 5:09 PMHi Chris,
I tried your code and it worked fine but after I put this code I am getting another issue. within the loop I had a code to make the fields non modifiable on the screen and was working fine but now what's happening is it's making the all the lines uneditable except the one with data on it (which is completely opposite), this is what I have coded:
LOOP AT lt_el_tbseg INTO lo_el_tbseg.
lo_el_tbseg->get_static_attributes(
IMPORTING static_attributes = lv_bseg ).
IF lv_bseg-kblnr NE ' '.
SELECT belnr
fipos
kostl
PSPNR
geber
saknr
fkber
grant_nbr
gsber
FROM kblp
inTO corresponding fields of wa_kblp
WHERE belnr = lv_bseg-kblnr and
saknr = lv_bseg-saknr.
ENDSELECT.
move: wa_kblp-belnr to wa_bseg-kblnr,
wa_kblp-fipos to wa_bseg-fipos,
wa_kblp-kostl to wa_bseg-kostl,
wa_kblp-pspnr to wa_bseg-projk,
wa_kblp-geber to wa_bseg-geber,
wa_kblp-saknr to wa_bseg-saknr,
wa_kblp-fkber to wa_bseg-fkber,
wa_kblp-grant_nbr to wa_bseg-grant_nbr,
wa_kblp-gsber to wa_bseg-gsber,
lv_bseg-dmbtr to wa_bseg-dmbtr.
append wa_bseg to lt_bseg.
lo_nd_edit_property = wd_context->path_get_node( path = `ZPRELIMINARY_POSTING.CHANGING.T_BSEG.EDIT_PROPERTY` ).
get element via lead selection
lo_el_edit_property = lo_nd_edit_property->get_element( ).
lo_el_edit_property->set_attribute(
name = `EDIT_FIELD`
value = 'ABAP_TRUE' ).
lo_el_edit_property->set_attribute(
name = `EDIT_WBS`
value = 'ABAP_TRUE' ).
endif.
endloop.
o_nd_t_bseg = wd_context->path_get_node( path = `ZPRELIMINARY_POSTING.CHANGING.T_BSEG` ).
get element via lead selection
lo_el_t_bseg = lo_nd_t_bseg->get_element( ).
CALL METHOD lo_nd_t_bseg->bind_table
EXPORTING
new_items = lt_bseg.
Can you please see what I am doing it wrong here.... -
Retruring Multiple rows from a Stored Procedure
The Oracle JDBC documentation shows how to return a cursor pointer through the parameter list of a stored procedure allowing a Java program to use the cursor like a normal result set. I've tried it (using the thin driver) and it works fine - however, I'm having trouble getting this to work running the program under a Weblogic server (using their own JDBC implementation). So, I have two questions:
1) Has anyone had this problem before and solved it ??
2) Are there any other techniques for getting multiple rows back from the database without having to fire "raw" sql at it ?Hi
You could return not resultset but array, for example:
PACKAGE TEST:
type string_table is table of varchar2(80)
index by binary_integer;
function get_something (
something1 out string_table,
arraylength in number
) return number;
PACKAGE'S BODY:
function get_something (
something1 out string_table,
arraylength in number /** length of the array **/
) return number as
cursor C is
select something1, ...
from test_table;
pos number := 1;
begin
for position in C loop
exit when (pos > arraylength);
something1(pos) := position.something1;
pos := pos + 1;
end loop;
return (pos - 1);
end;
Of course in this example you need to know length of your array
(arraylength parameter), but you can avoid such problem, for
example, by using DBMS_SQL package (or dynamic SQL feature in
the Oracle8i).
Andrew
Mladen Gogala (guest) wrote:
: Phil Hildebrand (guest) wrote:
: : Is there a way that I can return multiple rows from a stored
: : procedure for function ?
: : Something like:
: : CREATE FUNCTION sp_get_children (my_nip IN port.nip_num%
TYPE)
: : RETURN my_nip
: : IS
: : CURSOR child_cur IS
: : SELECT nip_num
: : FROM logical_port
: : WHERE port_num = my_nip;
: : child_rec child_cur%rowtype;
: : BEGIN
: : FOR child_rec IN child_cur
: : LOOP
: : RETURN my_nip;
: : END LOOP;
: : END tmp_sp_get_children;
: : I know how to do it in Informix ( RETURN WITH RESUME ), but
: I'm
: : not running Informix ;)
: : Thanks,
: : Phil
: In contrast with Informix, SQL Server and Sybase, Oracle
: can not return a result set. the only workaround is to
: return the cursor variable as such.
null -
Production order from sales order with multiple line item(for one material)
Dear Gurus,
I am working in MTO scenarios. If there is several line item in a sales order for one material, multiple production order( same as no. of sales order line item) is getting created against each of the line item.My requirement is,since the material code is same in each line item and sales order is one, one production order should be generated for all line item. please tell me how to do it.
(Here for one material, multiple line item is required for some specific reason)
Regards
Rajib PathakHi,
This is not possible.
In Std SAP will create one production order for one sales order. The stock is also allocated to thet particular sales order only. Because each and every sales order may vary in any one of the parameters. Considering this, SAP has designed like this.
Regards,
V. Suresh -
Single/ Consolidated GR/IR entry for a PO having multiple line items
Hi,
In a PO there are couple of line items for materials of similar type and class. While making the Goods Receipt, the Accounting Document is making two no of line items for GR/IR accounts as credit and two no of inventory accounts as debit. Same is happening to GR/IR account while making Invoice Receipt document also.
Informatively, both the materials above have been assigned to one GR/IR account in the OBYC table.
My question is, is it possible to consolidate the value of both these materials and post one line item for GR/IR account. This is required as in our case in a PO, normally, we do have multiple line items and hence it is resulting multiple no of GR/IR and inventory accounts in a single accounting document. As we are getting details of the line item from PO history, we do not require it in the accounting document.
Requested to kindly help.
Regards
B.MohantyHi
This is not possible (you will compleet los the link between the Invoice and GR)
The reason is that when you receive an invoice that this is based on a G/R line and the way arround when you receive first the invoice(s).
The system need this for the automatecly clearing from the G/R - I/R account, that is based on PO an PO line item number. -
MM: PO Not Picking up PR Having Multiple Line Items
Hi All,
When Creating PO with Reference to PR Having multiple line items, not picking up the line items and also the vendor and also the where in we have to select input tax code.
CASE1: Created PR 760001340 with single line item and also could able to create PO.
Case2: Created PR 760001341 with multiple line items, When creating PO with reference to PR the line items and Vendor are not picking Up.
Plz. Advise a solution.
Thanks in Advance.....
Regards
SudheerHI SHWN,
Thanks for prompt response.
ERROR Message: When referencing a requisition, please also enter a requisition item no.
Regards
Sudheer -
How to Restrict Single Delivery Date for PO with Multiple Line Items
Dear Experts,
How to Restrict Single Delivery Date for PO with Multiple Line Items.
System needs to through Error Message if User Inputs Different Delivery Dates for PO with Multiple Line Items in ME21N Tcode.
Can we achive this by Some Enhancement in SAP or Not ???
If so how to do it.
Any Inputs is highly appreciated.
Thanks and Regards,
Selvakumar. MHi Selvakumar,
we can resrict the PO to have a single delivery date in all the line items by means of giving a error message or overwiting the delivery date keyed/determined in the line item.
You can use the BADI -> ME_PROCESS_PO_CUST. In which you need to implement the method PROCESS_SCHEDULE.
(for technical aid - This method will be called for each and every PO line item, From the imporing parameter im_schedule we can get all the details of current PO line, even we can change the data in the current PO line. )
Regards,
Madhu. -
Creating a PO Using BAPI For Multiple PLants Or Multiple Line Items
Hi All
Can you please suggest me how to create a Purchase Order Using BAPI_PO_Create1 for Multiple Plants Or for Multiple Line items. The Requirement is like the PO is for single material for single vendor but for mulple stores i.e plants
NOte: Suggest me the Creation of PO for MUltiple Line items or for multiple plants Using BAPI . Hope you people will give me the needful.
Regards
Shivakumar BandariHi,
Here is the sample code to do that...
*---> po header data
wa_poheader-vendor = your vendor..
wa_poheader-doc_type = Your doc type..check with Functional contact....
wa_poheader-purch_org = Purchasing Org..
wa_poheader-pur_group = Purchasing Group
*---> po header data (change toolbar)
wa_poheaderx-vendor = 'X'.
wa_poheaderx-doc_type = 'X'.
wa_poheaderx-purch_org = 'X'.
wa_poheaderx-pur_group = 'X'.
*---> poitem data
data: item like ekpo-ebelp.
item = '0010'.
loop at t_parts.
it_poitem-po_item = '00010'.
IT_POITEM-PLANT = Plant..
IT_POITEM-STGE_LOC = Sloc...
*---> poitemx (item data change toolbar)
it_poitemx-po_item = '0010'.
it_poitemx-po_itemx = 'X'.
IT_POITEMX-PLANT = 'X'.
IT_POITEMX-STGE_LOC = 'X'.
*---> add record's to internal table
APPEND: it_poitem,
it_poitemx.
endloop.
*call bapi_po_create1
CLEAR v_ebeln.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = wa_poheader
poheaderx = wa_poheaderx
IMPORTING
exppurchaseorder = v_ebeln
TABLES
return = it_return
poitem = it_poitem
poitemx = it_poitemx.
*---> check the return table for error message
READ TABLE it_return WITH KEY type = 'E'.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
endif.
Thanks,
Murali -
Copying the item text in case of multiple line items
Hi All,
I have a scenario where the sales order gets created in our SAP through a 850 idoc. The incoming idoc has only one item segment which carries the total order quantity ( for example say 1000). Since my company has contractual agreements with the end customer for doing multiple shipments , our sales department splits the total quantity into multiple line items in the sales order. Say splitting the 1000 quantities into 5 line items of 200 each.
The problem here is that when the sales order got created , all the related item text were copied only to the first line item ( of 1000 qty) and which is standard SAP. Since the order quantity was manually split, the related item text are not carried to the subsequent line items. The issue comes when an outbound (810) idoc is sent to customer . As I told earlier since only the first line item has the item text , the 810 idoc which was created for the first line item only has the item text . The rest of the 810 which were subsequently created for multiple shipments/invoices on different dates didn't have the item text in the 810's. This is becoming a major problem as the 810 files are failing at our trading partners end because of missing text.
Now my question is, Is there a way that I can make the item text copy automatically when multiple line items are created manually by business. Like is there a way where I can modify MV45AFZZ to copy the item text in their respective segemnts ( z003,z004 etc) to "N" number of line items.
Also please suggest if there is a better way of doing it. Suggstions are most welcome !!!.
Regards
AmrithHi,
First of all try to avoid doing select into corresponding fields. THis would improve the performance of the program.
Try to do a single fetch from the BSIS table . fetch the hkont, belnr, dmbtr fields in to a master internal table. Manipulate and play with the data as required. Don't hit the data base table more than once (unless it is required) . This would improve the performance of your code.
Try to code this way.
types: begin of ty_bsis,
hkont type hkont,
belnr type belnr_d,
dmbtr type dmbtr,
end of ty_bsis.
data: it_bsis type standard table of ty_bsis,
wa_bsis type ty_bsis,
select hkont belnr dmbtr
from bsis
into table it_bsis
WHERE HKONT IN S_RACCT
AND PRCTR IN P_PRCTR
AND MONAT IN S_POPER
AND BUKRS EQ P_BUKRS
AND GJAHR EQ P_GJAHR
AND PRCTR IN S_PRCTR.
Using the data availabe in the it_bsis, you can manipulate as required.
Hope this would be helpful
Regards
Ramesh Sundaram
Maybe you are looking for
-
How to get incoming excise invoice in J1IIN
Daer All Greetings!! Scenario: The company receives raw material from vendor and then vendor send excise invoice to company. The same raw material then sell to other vendor but the incoming excise invoice is used to pass on duty . with threference to
-
Itunes needs quick time? Instillation help please!
My computer crashed and I took it to a friend a few days ago to get it cleaned off. He cleaned everything off and gave it back to me running like a brand new comp. So I was in the middle of downloading all of my things and I was downloading itunes ag
-
Sync Outlook calender appointment color categories
When I sync my iPhone using iTunes with my Outlook 2007, the colors for the appointment categories don't show up on my iPhone calender. Does anyone have a solution?
-
RH7 ToC design functionality removed?
In RH up to version 6, there was a very useful feature whereby you could rearrange Topics and Books in the Table of Contents by means of keyboard shortcuts: Ctrl+ arrow keys. This proved to be so quick and easy that I sometimes mastered printable man
-
From AcroJS_DesignerJS.pdf..... Saves the file. With no arguments, it will bring up a dialog box. In LiveCycle Designer, the file must be saved at the application level, so you must use Acrobat JavaScript: app.executeMenuItem("SaveAs"); or: var myDoc