Table Extension für die Erweitrung der Standard BAPIs für SD

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Table Extension für die Erweitrung der Standard BAPIs für SD

Beitrag von Ali ( / / 0 / 3 ) »
Hallo zusammen,
ich habe die Tabelle VBAP erweitert und würde auch gerne den FuBa "BAPI_SALESORDER_CREATEFROMDAT2" verwenden. Dabei wird für die Extensionin-Parameter die Table-Extension herangezogen. Nach der Doku muss TE wie folgt "BAPI_TE_VBAP" heissen. So eine Struktur habe ich aber nicht gefunden. Muss ich das selber anlegen? Ich habe allerdings zwei weitere Table-Extension mit den Namen "VBAP_VBAP" bzw. "BAPE_VBAPX" gefunden. Ich weiss nicht, ob ich die Dinge vewenden kann. Kann mir jemand einen Tip geben. Ich habe auch so verstanden, dass ich meine INCLUDE, die ich für die Erweiterung von VBAP includiert habe, auch für Table-Extension includieren muss. Ist es so.

Vielen Dank für die Hinweise

Ali

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

mit den Extensions in den BAPIs ist das so eine Sache für sich.

Da gibt es die Doku zum Parameter "ExtensionIn" für das Bapi. Das ist meine Bibel, nach der bin ich vorgegangen.
Danach reicht es nicht, die VBAK oder VBAP mit neuen Feldern zu beglücken, sondern da gibt es noch diverse VB-Tabellen, BAPE_V*-Tabellen, VBAKKOZ und und und.
Solltest Du diese Felder auch in Fakturen verwenden wollen, so müssen noch diverse VBR-Tabellen angepaßt werden.

Ich habe ein paar Strukturen geschaffen, die meine Felder für Kopf und Positionen enthalten und dann genau diese in die Appends zu den SAP-Tabellen eingetragen. Das spart viel Tipperei beim Ändern.


Jetzt zum BAPI:

Bei der Übergabe an das Bapi muß eine spezielle Tabelle dem BAPI gefüllt mitgegeben werden.

Die Tabellenzeile hat vorne ein Characterfeld, in dem muß der "Name" der Übergabestruktur (bei Dir also 'BAPE_VBAP') eingetragen werden.
Dahinter folgen 4 Felder in Standardgröße. Dahinein muß Du Deine Struktur "moven". Wenn sie länger ist als der erste, dann muß der Rest in den zweiten Teil. Dann das Ganze in die Tabelle "appendet" und ab damit ins Bapi.

Auszüge aus meinem laufenden Coding siehst Du hier:

Code: Alles auswählen.

* Arbeitsbereich für die Zusatzfelder
  DATA:
        w_addhd TYPE bape_vbak,
        w_addpo TYPE bape_vbap.
* Name für die Extension-Struturen als Text
  CONSTANTS:
        c_addhd TYPE testruc VALUE 'BAPE_VBAK',
        c_addpo TYPE testruc VALUE 'BAPE_VBAP'.

...

* Zusatzstruktur verarbeiten (Position)
      MOVE c_addpo TO w_extin-structure.
      MOVE w_addpo(240) TO w_extin-valuepart1.
      MOVE w_addpo+240  TO w_extin-valuepart2.
      APPEND w_extin TO t_extin.

...

* Zusatzstruktur verarbeiten (Kopf)
        MOVE c_addhd TO w_extin-structure.
        MOVE w_addhd TO w_extin-valuepart1.
        APPEND w_extin TO t_extin.

...

************************************************************************
* Jetzt SD-Bapi aufrufen
*
      CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
        EXPORTING
*     SALESDOCUMENTIN               =
          order_header_in               = w_hdr
*     ORDER_HEADER_INX              =
*     SENDER                        =
*     BINARY_RELATIONSHIPTYPE       =
*     INT_NUMBER_ASSIGNMENT         =
*     BEHAVE_WHEN_ERROR             =
          logic_switch                  = i_sls
*     TESTRUN                       =
*     CONVERT                       = ' '
       IMPORTING
         salesdocument                 = e_vbeln
        TABLES
         return                        = e_return
         order_items_in                = h_itm
*    ORDER_ITEMS_INX               =
         order_partners                = h_pa
         order_schedules_in            = t_sched
*    ORDER_SCHEDULES_INX           =
         order_conditions_in           = h_cond
*    ORDER_CFGS_REF                =
*    ORDER_CFGS_INST               =
*    ORDER_CFGS_PART_OF            =
*    ORDER_CFGS_VALUE              =
*    ORDER_CFGS_BLOB               =
*    ORDER_CFGS_VK                 =
*    ORDER_CFGS_REFINST            =
*    ORDER_CCARD                   =
         order_text                    = t_tx
*    ORDER_KEYS                    =
-->>         extensionin                   = t_extin  <<---
*    PARTNERADDRESSES              =
                .
Ich verwende Rel. 4.6C und es funktioniert!!
Viel Erfolg.
mfg.
babap
Zuletzt geändert von babap am 08.07.2004 15:39, insgesamt 1-mal geändert.

Nochmal zu denTableextensions

Beitrag von Ali ( / / 0 / 3 ) »
Hallo babap,

Vielen Dank für Dein Tip. Du sprichst von einem Dokument zu den Extensions. Wo finde ich dieses Dokument? Ich habe genau nach diesen Vorlagen die Erweiterung vorgenommen und realsiert, jedoch ohne Erfolg.
Ich habe eine Struktur "ZEVBAP" mit zwei Felder "FELD1" und "FELD2" eingerichtet. Beide Felder haben den Typ CHAR. Diese Struktur habe ich an den APPEND "ZAVBAP" includiert. ZAVBAP ist APPEND der Tabelle VBAP. Und Gleichzeitig habe ich ZEVBAP auch in die nStrukturen BAPE_VBAP und BAPE_VBAPX includuert und BAPI wie folgt aufgerufen. Der Auftrag wird angelegt, aber die Kundeneigene Felder sidn leer. Könntest Du mir sagen, woran es liegen könnte?

Vielen Dank im Voraus

Ali

Coding:


types: t_fl_items_in type bapisditm.
types: t_it_items_in type table of t_fl_items_in.

types: t_fl_partners type bapiparnr.
types: t_it_partners type table of t_fl_partners.

types: t_fl_orderhead type bapisdhd1.
types: t_it_orderhead type table of t_fl_orderhead.




data: vfl_orderhead type t_fl_orderhead,
vit_partners type t_it_partners,
vfl_partners type t_fl_partners,
vit_items_in type t_it_items_in,
vfl_items_in type t_fl_items_in.

data: begin of vfl_extensionin.
include structure bapiparex.
data: end of vfl_extensionin.

data: vit_extensionin type table of bapiparex.

data: vfl_bape_vbap type bape_vbap.

data: vfl_cdata type zevbap.


data: v_salesdocument like bapivbeln-vbeln.



* Füllen der Struktur ORDERHERADER

clear: vfl_orderhead.

vfl_orderhead-doc_type = 'BV'.
vfl_orderhead-sales_org = '1000'.
vfl_orderhead-distr_chan = '12'.
vfl_orderhead-division = '00'.
vfl_orderhead-po_supplem = 'Testkoc2222'.


* Füllen der Struktur PARTNER


clear: vfl_partners.

vfl_partners-partn_role = 'AG'.
vfl_partners-partn_numb = '0000001000'.
append vfl_partners to vit_partners.

clear: vfl_partners.

vfl_partners-partn_role = 'RE'.
vfl_partners-partn_numb = '0000001234'.
append vfl_partners to vit_partners.


clear: vfl_partners.

vfl_partners-partn_role = 'RG'.
vfl_partners-partn_numb = '0000001234'.
append vfl_partners to vit_partners.


clear: vfl_partners.

vfl_partners-partn_role = 'WE'.
vfl_partners-partn_numb = '0000001000'.
append vfl_partners to vit_partners.


* Füllen der Struktur ITEMS_IN


clear: vfl_items_in.
*vfl_items_in-itm_number = '000001'.
vfl_items_in-material = 'L-40C'.
vfl_items_in-target_qty = '5000'.
vfl_items_in-target_qu = 'KAR'.

append vfl_items_in to vit_items_in.




clear: vfl_cdata.
vfl_cdata-feld1 = 'MUNZ'.
vfl_cdata-feld2 = 'TE1'.

clear: vfl_bape_vbap.
clear: vfl_bape_vbap.

move-corresponding vfl_cdata to vfl_bape_vbap.

move vfl_bape_vbap to vfl_extensionin-valuepart1.
move 'BAPE_VBAP' to vfl_extensionin-structure.
append vfl_extensionin to vit_extensionin.



CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
ORDER_HEADER_IN = vfl_orderhead
* WITHOUT_COMMIT = ' '
* CONVERT_PARVW_AUART = ' '
*
IMPORTING
SALESDOCUMENT = v_salesdocument
* SOLD_TO_PARTY =
* SHIP_TO_PARTY =
* BILLING_PARTY =
* RETURN =
TABLES
ORDER_ITEMS_IN = vit_items_in
ORDER_PARTNERS = vit_partners
* ORDER_ITEMS_OUT =
* ORDER_CFGS_REF =
* ORDER_CFGS_INST =
* ORDER_CFGS_PART_OF =
* ORDER_CFGS_VALUE =
* ORDER_CCARD =
* ORDER_CFGS_BLOB =
* ORDER_SCHEDULE_EX =
extensionin = vit_extensionin
.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .

Re: Nochmal zu denTableextensions

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Ali hat geschrieben:Ich habe eine Struktur "ZEVBAP" mit zwei Felder "FELD1" und "FELD2" eingerichtet. Beide Felder haben den Typ CHAR. Diese Struktur habe ich an den APPEND "ZAVBAP" includiert. ZAVBAP ist APPEND der Tabelle VBAP.
Nur als Anmerkung nebenbei (Du bist ja scheinbar noch in der Entwicklungs-Phase):
Kundenfelder in SAP-Standard-Tabellen müssen mit YY oder ZZ beginnen, sonst kann es in späteren Releases zu Namens-Kollisionen kommen (s. auch OSS-Hinweis 16466).

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,


@Frank Dittrich: stimmt! (habe ich allerdings in meinem aktuellen Projekt verpennt!).

@Ali: halt doch mal im Debugger vor dem Bapi an und prüfe ob die extension_in-Tabelle korrekt gefüllt ist.

Solltest Du keinen Erfolg haben, lasse ich mal vor meinem Bapi anhalten und nachsehen, was drin steht.
mfg.
babap

Table-Extensionin

Beitrag von Ali ( / / 0 / 3 ) »
Hallo zusammen,

@Frank: Ist richtig, aber ich teste auf unsere Speilwiese und aus dem Grund ist einhaltung der Namenskonvention nicht so relevant.

@babap: ich habe nochmal gedebuggt ;-)

vor dem Aufruf des BAPIs sieht Extension VIT_EXTENSIONIN wie folgt aus:

wenn ich die Positionsnummer fülle:

STRUCTURE VALUEPART1
BAPE_VBAP 000001MUNZ TE1


wenn ich die Positionsnummer nicht fülle:

STRUCTURE VALUEPART1
BAPE_VBAP 000000MUNZ TE1


In beiden Fällen hat es nicht funktioniert.

Vielen herzlichen Dank für Deine Mühe babap

Grüße

Ali

Hilfe: ich drehe noch durch ;-))

Beitrag von Ali ( / / 0 / 3 ) »
Hallo,

irgendwie ist in dem Ding ein Wurm drin. Extensionin-Parameter ist korrekt gefüllt. Trotzdem werden die Eigene Felder nicht gefüllt. Ich habe auch die Strukturen VBAPKOM und VBAPKOMX um die Strukturen ZEVBAP bzw ZEVBAPX erweitert (appended). Vergeblich.

Eigentlich hätte ich eine Ausweichlösung aber wenn es eine Standardlösung Lösung gibt, warum soll man eine Ausweichlösung implementieren. Ausweichlösung würde so aussehen, dass ich die Inhalte der Kundenfelder vor dem Aufruf des BAPI in SAP-Memory stelle und diese Daten von dem User-Exit aus auslese und in VBAP reinschreibe.

Für eine Lösungsvorschlag wäre ich sehr dankbar..... bin dabei ;-) zum erstenmal vor einem Problem zu kapitulieren ...

Ali

Beitrag von zorkbryan (ForumUser / 8 / 0 / 0 ) »
Hi,

Damit die Übernahme automatisch klappt, muss auch die Struktur VBAPKOZ und VBAPKOZX (wenn mit Ankreuzleiste gearbeitet wird) angepasst werden. Wenn Du das nicht willst, dann musst Du selber dafür sorgen, das sie Felder gemovet werden und zwar im USER-EXIT userexit_move_field_to_vbapkom(sapmv45a).

Gruß
Jochem

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

nicht verzweifeln.

Es geht, definitiv!!!!!!

Bitte in der Transaktion BAPI das Bapi raussuchen und die Doku lesen oder drucken.

Bitte alle (ich meine wirklich ALLE) dort beschriebenen Tabellenstrukturen anpassen (auch wenn Du meinst, Du bräuchtest sie nicht!!!).

Und falls Du fakturieren willst und die Felder in der Faktura sein sollen, kommt nochmal ein Schwung an Strukturen dazu, (der steht nicht in der Doku!!)

Bitte schau mal, ob Du mit der Doku zurecht kommst, sonst muß ich mein "Schmierpapier" hier doch noch posten.

mfg.
babap

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Hallo Ali,

du musst zusätzlich zu der Extension-Struktur BAPE_VBAK Bauch noch BAPE_VBAKX füllen!!
Hier musst du die Felder ankreuzen, die geändert werden sollen.

Also:

Code: Alles auswählen.

BAPE_VBAK-VBELN = <nummer>.
BAPE_VBAK-zzfeld = '1234'.
extensionin-structure = 'BAPE_VBAK'.
extensionin-valuepart1 = BAPE_VBAK.
Append extensionin.

BAPE_VBAKX-VBELN = <nummer>.
BAPE_VBAKX-zzfeld = 'X'.
extensionin-structure = 'BAPE_VBAKX'.
extensionin-valuepart1 = BAPE_VBAKX.
Append extensionin.
Gruß,
Enno

@babap: Wundert mich, dass dein Beispiel ohne die Ankreuzleiste funktioniert!

Re: Nochmal zu denTableextensions

Beitrag von Gast ( / / 0 / 3 ) »
Frank Dittrich hat geschrieben:
Ali hat geschrieben:Ich habe eine Struktur "ZEVBAP" mit zwei Felder "FELD1" und "FELD2" eingerichtet. Beide Felder haben den Typ CHAR. Diese Struktur habe ich an den APPEND "ZAVBAP" includiert. ZAVBAP ist APPEND der Tabelle VBAP.
Nur als Anmerkung nebenbei (Du bist ja scheinbar noch in der Entwicklungs-Phase):
Kundenfelder in SAP-Standard-Tabellen müssen mit YY oder ZZ beginnen, sonst kann es in späteren Releases zu Namens-Kollisionen kommen (s. auch OSS-Hinweis 16466).
Lösung
Als "Faustregel" gilt: Für Kundenobjekte sind Namen reserviert, die mit 'Y' oder 'Z' beginnen. Die weitere Unterteilung ist dem Kunden freigestellt (z.B. 'Y' = Zentrale, 'Z' = Filialen.)


Da steht nix von YY oder ZZ.

Re: Nochmal zu denTableextensions

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Anonymous hat geschrieben:
Frank Dittrich hat geschrieben: Kundenfelder in SAP-Standard-Tabellen müssen mit YY oder ZZ beginnen, sonst kann es in späteren Releases zu Namens-Kollisionen kommen (s. auch OSS-Hinweis 16466).
Lösung
Als "Faustregel" gilt: Für Kundenobjekte sind Namen reserviert, die mit 'Y' oder 'Z' beginnen. Die weitere Unterteilung ist dem Kunden freigestellt (z.B. 'Y' = Zentrale, 'Z' = Filialen.)


Da steht nix von YY oder ZZ.
Steht sehr wohl. Guck Dir mal den von Frank genannten Hinweis an. Da steht nämlich:
Tabellenfeld zu SAP-Tab.| - -
| 10/16 | YY* ZZ* |3.0A
Ich möchte da als Beispiel mal auf die Tabelle VBAP verweisen, in der unter anderem folgende Standardfelder auftauchen:
ZWERT
ZMENG
ZIEME
ZSCHL_K

Z*-Felder sind also klar im SAP-Namensraum, so lange Du SAP-Tabellen erweiterst.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Seite 1 von 1

Vergleichbare Themen

5
Antw.
9883
Views
standard table vs. sorted table
von ralf.wenzel » 31.07.2014 12:49 • Verfasst in ABAP® Core
2
Antw.
4890
Views
Position ändern Table Control Standard SAP
von Lucyalison » 13.07.2016 12:54 • Verfasst in Dialogprogrammierung
7
Antw.
2993
Views
Funktionalität des Extension-Index
von Lord_Dunkelziffer » 13.02.2020 09:42 • Verfasst in ABAP® für Anfänger
1
Antw.
1776
Views
Upgrade auf SAP R/3 Enterprise Extension Set 2.00
von shatti » 20.04.2007 13:26 • Verfasst in Basis
0
Antw.
1542
Views
SAP Connect Extension des Mailanhangs
von SAP_ENTWICKLER » 17.07.2017 16:12 • Verfasst in Sonstige Module

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 2 Stunden von ralf.wenzel 21 / 11256
Dialog-Container mit Toolbar/Status
vor 23 Stunden von black_adept gelöst 27 / 4353
IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 233

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 2 Stunden von ralf.wenzel 21 / 11256
Dialog-Container mit Toolbar/Status
vor 23 Stunden von black_adept gelöst 27 / 4353
IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 233

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 233
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3158
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9751