gelöst CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon autohandel7 » 17.07.2014, 13:26

Hi Experten
ich habe folgende aufgabe ich soll alle materialenmit bestimte MAterialart und Verkaufsorganisation 8100 und Vertibswe 81 lesen
und dann mit CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' diese soll mit denselben werten in Verkaufsorganisation 8200 und Vertibswe 82 angelegt werden.
Leider habe ich kein Ahnung , wie 'BAPI_MATERIAL_SAVEDATA' funktioniert.
Kann mir jemanden Helfen?
Hier ist mein Code:


REPORT
*-------------------------------------------------*

CONSTANTS vkorg_tab TYPE p VALUE '8100'.
CONSTANTS vtweg_tab TYPE p VALUE '81'.
CONSTANTS mtart_tab TYPE string VALUE 'ZPRS'.

TYPES:
BEGIN OF t_tab,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
zzmatnr TYPE zzmatnr,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
sktof TYPE sktof,
lvorm TYPE lvorm,
END OF t_tab.

DATA:
it_join TYPE t_tab,
it_tab TYPE TABLE OF t_tab WITH KEY matnr.


*--------------------------------------------------------
START-OF-SELECTION.
*----------it_tab----------------------------------------

SELECT
mara~matnr
mara~mtart
mara~meins
mara~zzmatnr
mvke~vkorg
mvke~vtweg
mvke~sktof
mara~lvorm


FROM mara

JOIN mvke ON mara~matnr = mvke~matnr

INTO CORRESPONDING FIELDS OF TABLE it_tab
WHERE mara~mtart = mtart_tab
AND mvke~vkorg = vkorg_tab
AND mvke~vtweg = vtweg_tab
AND mara~lvorm = 'X'.

SORT it_tab BY matnr.
DELETE ADJACENT DUPLICATES FROM it_tab.
DATA: alv TYPE REF TO cl_salv_table.

--------------------------------

***-------------------------- ***
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING
headdata = headdata
salesdata = salesdata
salesdatax = salesdatax
TABLES
MATERIALDESCRIPTION = it_tab.

WRITE:/ 'ok'.


Danke
autohandel7
Specialist
 
Beiträge: 123
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon MrBojangles » 17.07.2014, 14:20

Hallo Autohandel...?

der Baustein ist ja für SAP-Verhältnisse recht gut dokumentiert. Woran hakt's denn genau?

Da es das Material in einer anderen Vertriebssicht schon gibt, muss Du in der Struktur HEADERDATA nur die Materialnummer und SALES_VIEW = 'X' mitgeben.
Dann in Strukrur SALESDATAX ein X für jedes zu kopierende Feld (vorher im Mat-Stamm gucken, welche Felder vewendet werden) und schließlich in SALESDATA die zuvor ausgelesenen Daten aus der MVKE reinschieben. COMMIT WORK nicht vergessen und dann sollte es eigentlich klappen.
Weiterhin viel Freude mit SAP...
Cheers
MrB.
MrBojangles
Specialist
 
Beiträge: 355
Registriert: 09.03.2006, 13:19
Dank erhalten: 25 mal
Ich bin: Berater/in

Re: CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon autohandel7 » 17.07.2014, 14:40

MrBojangles hat geschrieben:Hallo Autohandel...?

der Baustein ist ja für SAP-Verhältnisse recht gut dokumentiert. Woran hakt's denn genau?

Da es das Material in einer anderen Vertriebssicht schon gibt, muss Du in der Struktur HEADERDATA nur die Materialnummer und SALES_VIEW = 'X' mitgeben.
Dann in Strukrur SALESDATAX ein X für jedes zu kopierende Feld (vorher im Mat-Stamm gucken, welche Felder vewendet werden) und schließlich in SALESDATA die zuvor ausgelesenen Daten aus der MVKE reinschieben. COMMIT WORK nicht vergessen und dann sollte es eigentlich klappen.


Danke für Antwort,
ärlich zusagen, mache ich funktions ersten mal, ich verstehe die logik nicht.
ich soll ergendwo noch sagen, dass bei neue Materialsoll Vertriebsorganization und Vertiebsweg auf neue erzentzen soll? Schau mal bitte meine code, und wenn es möglich , kann stu du mir meine code weiter bearbeiten mit bischin mehr Kommentar.
Danke

REPORT zzmm_be_pmatn_anlegen.


*-------------------------------------------------*

CONSTANTS vkorg_tab TYPE p VALUE '8100'.
CONSTANTS vtweg_tab TYPE p VALUE '81'.
CONSTANTS mtart_tab TYPE string VALUE 'ZPRS'.

TYPES:
BEGIN OF t_tab,
matnr TYPE matnr,
mtart TYPE mtart,
*MAKTX TYPE MAKTX,
meins TYPE meins,
zzmatnr TYPE zzmatnr,
*ZZIDTNR TYPE ZZIDTNR,
*ZZKOVOT TYPE ZZKOVOT,
*ZZSETA TYPE ZZSETA,
*ZZANTO TYPE ZZANTO,
*ZZVPEI TYPE ZZVPEI,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
sktof TYPE sktof,
*VKORG_BEZ TYPE VKORG_BEZ,
*SPRAS TYPE SPRAS,
lvorm TYPE lvorm,
END OF t_tab.

DATA:
it_join TYPE t_tab,
* wa_tab TYPE t_tab,
it_tab TYPE TABLE OF t_tab WITH KEY matnr.


*--------------------------------------------------------
START-OF-SELECTION.
*----------it_tab----------------------------------------

SELECT
mara~matnr
mara~mtart
*MAKT~MAKTX
mara~meins
mara~zzmatnr
*mara~ZZIDTNR
*mara~ZZKOVOT
*mara~ZZSETA
*mara~ZZANTO
*mara~ZZVPEI
mvke~vkorg
mvke~vtweg
mvke~sktof
*makt~SPRAS
mara~lvorm
*RMMG1_BEZ~VKORG_BEZ



FROM mara

JOIN mvke ON mara~matnr = mvke~matnr


INTO CORRESPONDING FIELDS OF TABLE it_tab
WHERE mara~mtart = mtart_tab
AND mvke~vkorg = vkorg_tab
AND mvke~vtweg = vtweg_tab
AND mara~lvorm = 'X'.

SORT it_tab BY matnr.
DELETE ADJACENT DUPLICATES FROM it_tab.
DATA: alv TYPE REF TO cl_salv_table.

*--------------------------------
DATA:
* Kopfdaten
gw_headdata TYPE bapimathead,
gw_salesdata TYPE bapi_mvke,
gw_salesdatax TYPE bapi_mvkex,
* Verkaufsotganization
gw_verkaufsotganization TYPE bapi_mvke,
* Vertiebsweg
gw_vertiebsweg TYPE bapi_mvke,

* Fehlertabelle
gw_return TYPE bapiret2,
* Fehlertext
g_message TYPE bapiret2-message.

gw_verkaufsotganization = '8200'.
gw_vertiebsweg = '82'.
***-------------------------- ***
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING
headdata = gw_headdata
salesdata = gw_salesdata
salesdatax = gw_salesdatax
TABLES


COMMIT WORK.



CASE gw_return-type.
WHEN 'S' OR 'I'.
FORMAT COLOR 5.
WRITE / g_message.
WHEN 'E' OR 'A'.
FORMAT COLOR 6.
WRITE / g_message.
WHEN 'W'.
FORMAT COLOR 3.
WRITE / g_message.
WHEN OTHERS.
FORMAT COLOR OFF.
WRITE / g_message.
ENDCASE.
autohandel7
Specialist
 
Beiträge: 123
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon black_adept » 18.07.2014, 10:46

Hallo autohandel7,

warum löst ihr das nicht im SAP-Standard mit Transaktion MM17.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2964
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 491 mal
Ich bin: Freiberufler/in

Re: CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon autohandel7 » 18.07.2014, 11:13

black_adept hat geschrieben:Hallo autohandel7,

warum löst ihr das nicht im SAP-Standard mit Transaktion MM17.

Danke für Antwort,
es ist nur erste teil vom Aufgabe, dann soll ich noch Konditionen und Konditionenart kopieren, und mein Shef wollte, dass ich alles im programm geschriben habe
Ich habe schon bischen meine code geändert, aberbei integration von BAPI, verliere ich Logik, ich habe eine intrene tabelle mit alle für mich vihtige Materialen bekommen,
dann diese soll mit denselben werten in Verkaufsorganisation 8200 (Staat 8100) und Vertibswe 82(Staat 81) angelegt werden.
Dass heist ich brauche headdata, und beides sale, alles anderes brauche ich nicht.
Und wie soll ich weitermachen habe ich kein ahnung. Danke

*-------------------------------------------------*

CONSTANTS vkorg_tab TYPE p VALUE '8100'.
CONSTANTS vtweg_tab TYPE p VALUE '81'.
CONSTANTS mtart_tab TYPE string VALUE 'ZPRS'.

TYPES:
BEGIN OF t_tab,
matnr TYPE matnr,
mtart TYPE mtart,
*MAKTX TYPE MAKTX,
meins TYPE meins,
zzmatnr TYPE zzmatnr,
*ZZIDTNR TYPE ZZIDTNR,
*ZZKOVOT TYPE ZZKOVOT,
*ZZSETA TYPE ZZSETA,
*ZZANTO TYPE ZZANTO,
*ZZVPEI TYPE ZZVPEI,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
sktof TYPE sktof,
*VKORG_BEZ TYPE VKORG_BEZ,
*SPRAS TYPE SPRAS,
lvorm TYPE lvorm,
END OF t_tab.

DATA:
it_join TYPE t_tab,
* wa_tab TYPE t_tab,
it_tab TYPE TABLE OF t_tab WITH KEY matnr.


*--------------------------------------------------------
START-OF-SELECTION.
*----------it_tab----------------------------------------

SELECT
mara~matnr
mara~mtart
*MAKT~MAKTX
mara~meins
mara~zzmatnr
*mara~ZZIDTNR
*mara~ZZKOVOT
*mara~ZZSETA
*mara~ZZANTO
*mara~ZZVPEI
mvke~vkorg
mvke~vtweg
mvke~sktof
*makt~SPRAS
mara~lvorm
*RMMG1_BEZ~VKORG_BEZ



FROM mara

JOIN mvke ON mara~matnr = mvke~matnr


INTO CORRESPONDING FIELDS OF TABLE it_tab
WHERE mara~mtart = mtart_tab
AND mvke~vkorg = vkorg_tab
AND mvke~vtweg = vtweg_tab.
* AND mara~lvorm = 'X'.

SORT it_tab BY matnr.
DELETE ADJACENT DUPLICATES FROM it_tab.


*--------------------------------
DATA:
* Kopfdaten
gw_headdata TYPE bapimathead,
wa_salesdata TYPE bapi_mvke,
wa_salesdatax TYPE bapi_mvkex,
* Verkaufsotganization
wa_tab-vkorg TYPE bapi_mvke,
gt_tab-vkorg TYPE bapi_mvke,
* Vertiebsweg
wa_tab-vtweg TYPE bapi_mvke,
gt_tab-vtweg TYPE bapi_mvke,

* Fehlertabelle
gw_return TYPE bapiret2,
* Fehlertext
g_message TYPE bapiret2-message,
SALESDATA TYPE BAPI_MVKE,
SALESDATAX TYPE BAPI_MVKEX.


wa_tab-vkorg = '8200'. "vkorg_tab'.
wa_tab-vtweg = '82'.
APPEND wa_tab-vkorg to gt_tab-vkorg.
APPEND wa_tab-vtweg to gt_tab-vtweg.
* SALES_VIEW = 'X'.
***-------------------------- ***
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING
headdata = gw_headdata

IMPORTING
return = gw_return
TABLES

MATERIALDESCRIPTION = wa_tab-vtweg.


COMMIT WORK.

* Langtext besorgen
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
id = gw_return-id
number = gw_return-number
textformat = 'ASC'
message_v1 = gw_return-message_v1
message_v2 = gw_return-message_v2
message_v3 = gw_return-message_v3
message_v4 = gw_return-message_v4
IMPORTING
message = g_message.

CASE gw_return-type.
WHEN 'S' OR 'I'.
FORMAT COLOR 5.
WRITE / g_message.
WHEN 'E' OR 'A'.
FORMAT COLOR 6.
WRITE / g_message.
WHEN 'W'.
FORMAT COLOR 3.
WRITE / g_message.
WHEN OTHERS.
FORMAT COLOR OFF.
WRITE / g_message.
ENDCASE.
autohandel7
Specialist
 
Beiträge: 123
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

Beitragvon autohandel7 » 18.07.2014, 16:01

black_adept hat geschrieben:Hallo autohandel7,

warum löst ihr das nicht im SAP-Standard mit Transaktion MM17.

Hi black_adept ,
ich habe schon fast geshaft, etwas stimt nicht bei aufruf BApi und zwar hier:

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
*
EXPORTING
headdata = BAPI_HEAD
* SALESDATA = BAPI_MVKEx
* SALESDATAX = BAPI_MVKEX
Schreibt feldlangen stimtnicht.

Hier ist mein code:
Danke im Vorraus
*-------------------------------------------------*

CONSTANTS vkorg_tab TYPE p VALUE '8100'.
CONSTANTS vtweg_tab TYPE p VALUE '81'.
CONSTANTS mtart_tab TYPE string VALUE 'ZPRS'.

TYPES:
BEGIN OF t_tab,
matnr TYPE matnr,
mtart TYPE mtart,
*MAKTX TYPE MAKTX,
meins TYPE meins,
zzmatnr TYPE zzmatnr,
*ZZIDTNR TYPE ZZIDTNR,
*ZZKOVOT TYPE ZZKOVOT,
*ZZSETA TYPE ZZSETA,
*ZZANTO TYPE ZZANTO,
*ZZVPEI TYPE ZZVPEI,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
sktof TYPE sktof,
*VKORG_BEZ TYPE VKORG_BEZ,
*SPRAS TYPE SPRAS,
lvorm TYPE lvorm,
END OF t_tab.

DATA:
it_join TYPE t_tab,
* p_matnr TYPE matnr,
wa_tab TYPE t_tab,
it_tab TYPE TABLE OF t_tab WITH KEY matnr.

PARAMETERS: p_matnr LIKE mseg-matnr.
*--------------------------------------------------------
START-OF-SELECTION.
*----------it_tab----------------------------------------

SELECT
mara~matnr
mara~mtart
*MAKT~MAKTX
mara~meins
mara~zzmatnr
*mara~ZZIDTNR
*mara~ZZKOVOT
*mara~ZZSETA
*mara~ZZANTO
*mara~ZZVPEI
mvke~vkorg
mvke~vtweg
mvke~sktof
*makt~SPRAS
mara~lvorm
*RMMG1_BEZ~VKORG_BEZ



FROM mara

JOIN mvke ON mara~matnr = mvke~matnr


INTO CORRESPONDING FIELDS OF TABLE it_tab
WHERE
mara~mtart = mtart_tab
and mara~matnr = p_matnr "
AND mvke~vkorg = vkorg_tab
AND mvke~vtweg = vtweg_tab.
* AND mara~lvorm = 'X'.

SORT it_tab BY matnr.
DELETE ADJACENT DUPLICATES FROM it_tab.


*&---------------------------------------------------------------------*
*& Form UPDATE_MM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*FORM UPDATE_MM.
Data: BAPI_HEAD TYPE bapimathead,
BAPI_MARA1 TYPE BAPI_MARA,
BAPI_Vertrieb TYPE BAPI_MVKE,
BAPI_MVKEX TYPE BAPI_MVKE,
SALESDATA TYPE BAPI_MVKE,
SALESDATAx TYPE BAPI_MVKE,
tabvkorg TYPE c LENGTH 4 VALUE '8200',
tabvtweg TYPE c LENGTH 2 VALUE '82'.

LOOP AT it_tab into wa_tab.
* Header
BAPI_HEAD-MATERIAL = wa_tab-MATNR.
BAPI_HEAD-MATL_TYPE = wa_tab-mtart.
*CLIENTDATA
BAPI_MARA1-BASE_UOM = wa_tab-meins.
* zzmatnr
* SALESDATA
BAPI_Vertrieb-SALES_ORG = tabvkorg.
BAPI_Vertrieb-DISTR_CHAN = tabvtweg. "wa_tab-vtweg.
BAPI_Vertrieb-CASH_DISC = wa_tab-sktof.
SALESDATAx = 'X'.

ENDLOOP.
WRITE:/ BAPI_HEAD, / BAPI_Vertrieb-SALES_ORG, / BAPI_Vertrieb-DISTR_CHAN.



*ENDFORM.
**
**--------------------------------
DATA:

** Fehlertabelle
gw_return TYPE bapiret2,
** Fehlertext
g_message TYPE bapiret2-message.


****-------------------------- ***
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
*
EXPORTING
headdata = BAPI_HEAD
* SALESDATA = BAPI_MVKEx
SALESDATAX = BAPI_MVKEX

IMPORTING
return = gw_return
TABLES
*
MATERIALDESCRIPTION = it_tab.


COMMIT WORK.

* Langtext besorgen
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
id = gw_return-id
number = gw_return-number
textformat = 'ASC'
message_v1 = gw_return-message_v1
message_v2 = gw_return-message_v2
message_v3 = gw_return-message_v3
message_v4 = gw_return-message_v4
IMPORTING
message = g_message.

CASE gw_return-type.
WHEN 'S' OR 'I'.
FORMAT COLOR 5.
WRITE / g_message.
WHEN 'E' OR 'A'.
FORMAT COLOR 6.
WRITE / g_message.
WHEN 'W'.
FORMAT COLOR 3.
WRITE / g_message.
WHEN OTHERS.
FORMAT COLOR OFF.
WRITE / g_message.
ENDCASE.
autohandel7
Specialist
 
Beiträge: 123
Registriert: 14.07.2014, 09:48
Wohnort: Hannover
Dank erhalten: 0 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Aus einer OO-Transaktion Dynpro aufrufen und wieder zurück
vor 7 Minuten von FelixFICO 2 Antw.
Umwandeln string <-> xstring OHNE Codepagekonvertierung
vor 2 Stunden von Legxis 2 Antw.
Tabellen Pflegedialog richtig benutzen
vor 8 Stunden von Legxis 1 Antw.
gelöst Dynpro springt beim ausführen einfach zurück
Gestern von Abaphalbsocke 2 Antw.
Modifikation einer Z-DB
Gestern von Legxis 2 Antw.

  Ähnliche Beiträge beta
CALL FUNCTION und CALL TRANSACTION
10.08.2007, 10:12 von khb 1 Antw.
CALL FUNCTION 'C13Z_FILE_UPLOAD_BINARY'
20.05.2006, 11:35 von Charadin 11 Antw.
CALL FUNCTION 'STRUCTURE_EDIT' - Aufruf ?
01.08.2006, 13:29 von c oco 1 Antw.
CALL CUSTOMER-FUNCTION UND USER EXITS
24.01.2013, 09:05 von jensschladitz 2 Antw.
CALL FUNCTION Paket->Funktionsbaustein -- Bitte um Erklärung
03.12.2013, 09:41 von ewx 12 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]