[56009] in SAPr3-news
=?iso-8859-1?q?Re:_Arbeitspl=E4ne_anlegen_mit_BAPI=5FROUTING=5FCREATE=3F?=
daemon@ATHENA.MIT.EDU (Tony)
Fri Nov 18 05:49:57 2005
To: sapr3-news@mit.edu
Date: 18 Nov 2005 02:49:42 -0800
From: "Tony" <reeflex@gmx.de>
Message-ID: <1132310982.720441.131700@o13g2000cwo.googlegroups.com>
Hallo zusammen,
also ich geb dir mal ein code-schnipsel wie das bei uns funktioniert
hat
sind auch Daten aus tabgetrennten .txt files gewesen.
Achtung der ist etwas l=E4nger:
*****************SNIP******************************************************=
******
data: i_plko like s_plko occurs 0 with header line.
data: i_plpo like s_plpo occurs 0 with header line.
data: w_plpo like s_plpo occurs 0 with header line.
data: i_plmk like s_plmk occurs 0 with header line.
data: i_plmz like s_plmz occurs 0 with header line.
data: i_mapl like s_mapl occurs 0 with header line.
*DATA: i_message LIKE bapi_matreturn2 OCCURS 0 WITH HEADER LINE.
data: w_bapi1012_tsk_c like bapi1012_tsk_c occurs 0 with header line,
w_bapi1012_opr_c like bapi1012_opr_c occurs 0 with header line,
w_bapi1012_mtk_c like bapi1012_mtk_c occurs 0 with header line,
w_bapi1191_cha_c like bapi1191_cha_c occurs 0 with header line,
t_bapi1012_tsk_c like w_bapi1012_tsk_c occurs 0 with header line,
t_bapi1012_opr_c like w_bapi1012_opr_c occurs 0 with header line,
t_bapi1012_mtk_c like w_bapi1012_mtk_c occurs 0 with header line,
t_bapi1191_cha_c like w_bapi1191_cha_c occurs 0 with header line,
return like bapiret2 occurs 0 with header line.
.
data: w_filename type string
.
*-----------------------------------------------------------------------
* Selektionskriterien
*-----------------------------------------------------------------------
* Selektion
selection-screen begin of block bl_001 with frame title text-001.
parameters:
* Pfad der Inputdatei
p_path type rlgrap-filename
default 'C:\SAP_DE_Upload\'
=2E
* Maximale Anzahl Zeilen .
selection-screen skip 1.
parameters:
p_rows type i default 0
.
* Fehlermeldungen anzeigen ?
selection-screen begin of line.
selection-screen comment (30) text-p01.
selection-screen position pos_low.
parameter p_msg as checkbox default ' '.
selection-screen end of line.
selection-screen end of block bl_001.
*-----------------------------------------------------------------------
start-of-selection.
*-----------------------------------------------------------------------
* Daten lesen
perform daten_lesen.
* Daten verarbeiten
perform daten_verarbeiten.
*&---------------------------------------------------------------------*
*& Form daten_lesen
*&---------------------------------------------------------------------*
* upload Dateien
*----------------------------------------------------------------------*
form daten_lesen.
* MAPL
refresh i_mapl.
concatenate p_path 'mapl.txt' into w_filename.
call function 'GUI_UPLOAD'
exporting
filename =3D w_filename
has_field_separator =3D 'X'
tables
data_tab =3D i_mapl.
if sy-subrc <> 0.
break-point.
endif.
sort i_mapl by matnr.
* PLKO
refresh i_plko.
concatenate p_path 'plko.txt' into w_filename.
call function 'GUI_UPLOAD'
exporting
filename =3D w_filename
has_field_separator =3D 'X'
tables
data_tab =3D i_plko.
if sy-subrc <> 0.
break-point.
endif.
sort i_plko by plnty plnnr plnal.
* PLMK
refresh i_plmk.
concatenate p_path 'plmk.txt' into w_filename.
call function 'GUI_UPLOAD'
exporting
filename =3D w_filename
has_field_separator =3D 'X'
tables
data_tab =3D i_plmk
exceptions
others =3D 17.
if sy-subrc <> 0.
break-point.
endif.
sort i_plmk by plnty plnnr plnkn kzeinstell merknr zaehl.
* PLMZ
refresh i_plmz.
concatenate p_path 'plmz.txt' into w_filename.
call function 'GUI_UPLOAD'
exporting
filename =3D w_filename
has_field_separator =3D 'X'
tables
data_tab =3D i_plmz
exceptions
others =3D 17.
if sy-subrc <> 0.
break-point.
endif.
sort i_plmz by plnty plnnr zuonr zaehl.
* PLPO
refresh i_plpo.
concatenate p_path 'plpo.txt' into w_filename.
call function 'GUI_UPLOAD'
exporting
filename =3D w_filename
has_field_separator =3D 'X'
tables
data_tab =3D i_plpo
exceptions
others =3D 17.
if sy-subrc <> 0.
break-point.
endif.
sort i_plpo by plnty plnnr plnal vornr.
endform. " daten_lesen
*&---------------------------------------------------------------------*
*& Form daten_verarbeiten_mard
*&---------------------------------------------------------------------*
* BI Daten erzeugen und
* mit Call Transaction verarbeiten
*----------------------------------------------------------------------*
form daten_verarbeiten.
data: l_tcode type sy-tcode
,l_mode(1) type c
,l_count(10) type p
,l_dynfld(20) type c
,l_datum(10) type c
,l_ok like flg_ok
,l_plnal(2) type n
,l_group type bapi1012_tsk_c-task_list_group
,l_groupcounter type bapi1012_tsk_c-group_counter
,l_new_plan type bapiret2-message_v4
, l_bismt(18) type c
,l_zeit type sy-uzeit
.
* Pr=FCfplan anlegen oder =E4ndern
write sy-datum to l_datum.
l_count =3D 0.
loop at i_mapl where plnty ne 'Q'.
refresh w_plpo.
clear: l_plnal.
* Materialnummer ermitteln
write i_mapl-matnr to l_bismt.
select single matnr
into mara-matnr
from mara
where bismt =3D l_bismt.
if sy-subrc ne 0 .
write: at / 'Material nicht vorhanden:'
, i_mapl-matnr.
.
continue.
endif.
* Arbeitsplan schon vorhanden ?
select single plnnr
into plko-plnnr
from plko
where plnnr_alt =3D i_mapl-plnnr
and plnal =3D i_mapl-plnal.
if sy-subrc eq 0.
write: at / i_mapl-matnr
,' bereits vorhanden:' color col_positive
,mara-matnr
,i_mapl-plnal
.
continue.
endif.
* PLKO lesen
read table i_plko with key plnty =3D i_mapl-plnty
plnnr =3D i_mapl-plnnr
plnal =3D i_mapl-plnal.
if sy-subrc ne 0.
write: at / i_mapl-matnr , 'PLKO nicht vorhanden'.
continue.
endif.
refresh t_bapi1012_tsk_c.
refresh t_bapi1012_mtk_c.
refresh t_bapi1012_opr_c.
* PLPO lesen
* LOOP AT i_plpo INTO w_plpo WHERE plnnr =3D i_mapl-plnnr
* AND plnty =3D i_mapl-plnty
* AND plnal =3D l_plnal.
*
* APPEND w_plpo.
* ENDLOOP.
* Kopfdaten
* w_bapi1012_tsk_c-task_list_group =3D plko-plnnr.
w_bapi1012_tsk_c-group_counter =3D i_mapl-plnal.
w_bapi1012_tsk_c-valid_from =3D sy-datum.
w_bapi1012_tsk_c-valid_to_date =3D '99991231'.
w_bapi1012_tsk_c-plant =3D i_plko-werks.
w_bapi1012_tsk_c-lot_size_from =3D '1'.
w_bapi1012_tsk_c-lot_size_to =3D '99999999'.
w_bapi1012_tsk_c-task_measure_unit =3D i_plko-plnme.
w_bapi1012_tsk_c-task_list_status =3D i_plko-statu.
w_bapi1012_tsk_c-task_list_usage =3D i_plko-verwe.
w_bapi1012_tsk_c-description =3D i_plko-ktext.
w_bapi1012_tsk_c-old_number_of_task_list =3D i_plko-plnnr.
append w_bapi1012_tsk_c to t_bapi1012_tsk_c.
* Material - Plan Zuordnung
w_bapi1012_mtk_c-material =3D mara-matnr.
w_bapi1012_mtk_c-plant =3D '6000' .
* w_bapi1012_mtk_c-TASK_LIST_GROUP =3D plko-plnnr.
* w_bapi1012_mtk_c-group_counter =3D i_mapl-plnal.
w_bapi1012_mtk_c-valid_from =3D sy-datum.
w_bapi1012_mtk_c-valid_to_date =3D '99991231'.
append w_bapi1012_mtk_c to t_bapi1012_mtk_c.
* Vorg=E4nge
move i_mapl-plnal to l_plnal.
loop at i_plpo into w_plpo where plnty =3D i_mapl-plnty
and plnnr =3D i_mapl-plnnr
and plnal =3D l_plnal.
* w_bapi1012_opr_c-task_list_group =3D plko-plnnr.
w_bapi1012_opr_c-group_counter =3D i_mapl-plnal.
w_bapi1012_opr_c-activity =3D w_plpo-vornr.
w_bapi1012_opr_c-control_key =3D w_plpo-steus.
w_bapi1012_opr_c-work_cntr =3D w_plpo-arbpl.
w_bapi1012_opr_c-plant =3D w_plpo-werks.
w_bapi1012_opr_c-description =3D w_plpo-ltxa1.
w_bapi1012_opr_c-base_quantity =3D w_plpo-bmsch.
w_bapi1012_opr_c-operation_measure_unit =3D w_plpo-meinh.
w_bapi1012_opr_c-valid_from =3D sy-datum.
w_bapi1012_opr_c-valid_to_date =3D '99991231'.
w_bapi1012_opr_c-denominator =3D w_plpo-umren.
w_bapi1012_opr_c-nominator =3D w_plpo-umrez.
w_bapi1012_opr_c-acttype_01 =3D w_plpo-lar01.
w_bapi1012_opr_c-std_unit_01 =3D w_plpo-vge01.
w_bapi1012_opr_c-std_value_01 =3D w_plpo-vgw01.
w_bapi1012_opr_c-acttype_02 =3D w_plpo-lar02.
w_bapi1012_opr_c-std_unit_02 =3D w_plpo-vge02.
w_bapi1012_opr_c-std_value_02 =3D w_plpo-vgw02.
w_bapi1012_opr_c-acttype_03 =3D w_plpo-lar03.
w_bapi1012_opr_c-std_unit_03 =3D w_plpo-vge03.
w_bapi1012_opr_c-std_value_03 =3D w_plpo-vgw03.
w_bapi1012_opr_c-acttype_04 =3D w_plpo-lar04.
w_bapi1012_opr_c-std_unit_04 =3D w_plpo-vge04.
w_bapi1012_opr_c-std_value_04 =3D w_plpo-vgw04.
w_bapi1012_opr_c-acttype_05 =3D w_plpo-lar05.
w_bapi1012_opr_c-std_unit_05 =3D w_plpo-vge05.
w_bapi1012_opr_c-std_value_05 =3D w_plpo-vgw05.
w_bapi1012_opr_c-acttype_06 =3D w_plpo-lar06.
w_bapi1012_opr_c-std_unit_06 =3D w_plpo-vge06.
w_bapi1012_opr_c-std_value_06 =3D w_plpo-vgw06.
append w_bapi1012_opr_c to t_bapi1012_opr_c.
endloop.
* Arbeitsplan ?
call function 'BAPI_ROUTING_CREATE'
importing
group =3D l_group
groupcounter =3D l_groupcounter
tables
task =3D t_bapi1012_tsk_c
materialtaskallocation =3D t_bapi1012_mtk_c
* SEQUENCE =3D
operation =3D t_bapi1012_opr_c
* SUBOPERATION =3D
* REFERENCEOPERATION =3D
* WORKCENTERREFERENCE =3D
* COMPONENTALLOCATION =3D
* PRODUCTIONRESOURCE =3D
* INSPCHARACTERISTIC =3D
* TEXTALLOCATION =3D
* TEXT =3D
return =3D return
.
if sy-subrc =3D 0.
commit work and wait.
endif.
********************************end
snip**********************************************
vielleicht hilft dir das weiter.
Gruss
Tony W.