Hallo!
Meine Aufgabe lautet:
Erstellen eines Kundenauftrags über verschiedene Eingabemöglichkeiten
- Benutzer gibt relevante Daten für die Anlage des Kundenauftrags über eine spezifische
Eingabemethode ein
- Die Daten werden an das BAPI BAPI_SALESORDER_CREATEFROMDAT2 übergeben.
- Der BAPI-Aufruf legt den Kundenauftrag an, relevante Rückgabedaten des BAPI (z.B. Nummer
des Auftrages , Preise) werden wieder angezeigt.
Bevor Sie mit der Lösung Ihrer Aufgabe beginnen, legen Sie zu Übungszwecken einen Kundenauftrag
direkt im SAP-System an:
1) Starten Sie die Transaktion va01 (Kundenauftrag anlegen)
2) Legen Sie einen Kundenauftrag mit folgenden Daten an:
a. Auftragsart: TA
b. Verkaufsorganisation: 1000
c. Vertriebsweg: 10
d. Sparte: 00
e. Auftraggeber: 1400
f. Material: .....
Die übrigen notwendigen Daten können Sie frei eingeben.
3) Sie können den angelegten Auftrag über die Transaktion va03 (Kundenauftrag anzeigen)
betrachten.
Nähere Informationen über das verwendete Business Objekt SALESORDER finden Sie im System in
der Transaktion BAPI (Vertrieb -> Grundfunktionen -> Verkauf)
Komplexes Selektionsbild (Report)
Entwerfen Sie ein komplexes Selektionsbild, das dem Benutzer die Eingabe aller notwendigen Daten
ermöglicht. Verwenden Sie dazu graphische Elemente wie z.B. Tab-Reiter und statten Sie
Eingabefelder – falls möglich – mit Werthilfen aus.
Beim Ausführen des Reports rufen Sie das BAPI auf; die Rückgabewerte können auf der Liste
ausgegeben werden.
-----------------------------------------------------------------------------------------------------------------------------
allerdings funktioniert der BAPI-Funktionsaufruf nicht so, wie ich mir das vorgestellt hab bzw. gar nicht.
Ich hoffe ihr könnt mir dabei helfen. Tab-Reiter sind fertig. Benötige nur noch die Verbindung zum BAPI_Salesorder
*&---------------------------------------------------------------------*
*& Report Z_109 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT Z_109.
DATA: flag(20) TYPE c.
Data: ANr type t180-tcode.
Selection-screen begin of screen 100 as subscreen.
Selection-screen begin of block b1 with frame.
Parameters: AArt type tvak-auart,
VOrg type vbak-vkorg,
VerWeg type vbak-vtweg,
Sparte type vbak-spart,
AGeb type vbak-kunnr.
Selection-screen end of block b1.
Selection-screen end of screen 100.
Selection-screen begin of screen 200 as subscreen.
Selection-screen begin of block b2 with frame.
Parameters: MatNr type knmt-matnr,
Menge type i,
ME(2) type c,
Bez type knmt-postx,
Preis(10) type c,
LDat type d.
Selection-screen end of block b2.
Selection-screen end of screen 200.
Selection-screen begin of screen 300 as subscreen.
Selection-screen begin of block b3 with frame.
Parameters: ReDat type d,
Zahlbed(6) type c.
Selection-screen end of block b3.
Selection-screen end of screen 300.
Selection-screen: begin of Tabbed Block mytab For 10 Lines,
Tab (20) button1 user-command push1,
Tab (20) button2 user-command push2,
Tab (20) button3 user-command push3 Default screen 300
,
End of block mytab.
INITIALIZATION.
button1 = 'Auftragsdaten'.
button2 = 'Materialdaten'.
button3 = 'Konditionen'.
mytab-prog = sy-repid.
mytab-dynnr = 100.
mytab-activetab = 'BUTTON1'.
AT SELECTION-SCREEN.
CASE sy-dynnr.
WHEN 1000.
CASE sy-ucomm.
WHEN 'PUSH1'.
mytab-dynnr = 100.
mytab-activetab = 'BUTTON1'.
WHEN 'PUSH2'.
mytab-dynnr = 200.
mytab-activetab = 'BUTTON2'.
ENDCASE.
WHEN 100.
MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
WHEN 200.
MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
ENDCASE.
MODULE init_0100 OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'MOD'.
CASE flag.
WHEN 'X'.
screen-input = '1'.
WHEN ' '.
screen-input = '0'.
ENDCASE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE user_command_0100 INPUT.
MESSAGE s888(sabapdocu) WITH text-050 sy-dynnr.
CASE sy-ucomm.
WHEN 'TOGGLE'.
IF flag = ' '.
flag = 'X'.
ELSEIF flag = 'X'.
flag = ' '.
ENDIF.
ENDCASE.
ENDMODULE.
START-OF-SELECTION.
set pf-status '100'.
at user-command.
break-point.
CALL FUNCTION 'DIALOG_SET_NO_DIALOG'.
Call FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2':
EXPORTING
* SALESDOCUMENTIN =
ORDER_HEADER_IN = ANr
* ORDER_HEADER_INX =
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
* TESTRUN =
* CONVERT = ' '
Importing
SALESDOCUMENT = AArt, Preis, Bez
TABLES
* RETURN =
ORDER_ITEMS_IN = Using MatNr, ReDat, VOrg, Menge, Sparte, LDat, Zahlbed.
* ORDER_ITEMS_INX =
ORDER_PARTNERS = Using AGeb.
* ORDER_SCHEDULES_IN =
* ORDER_SCHEDULES_INX =
* ORDER_CONDITIONS_IN =
* ORDER_CONDITIONS_INX =
* 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 =
* ORDER_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
commit.
WRITE: / 'Auftragsart:', AArt, 'Materialnummer:', MatNr,
'Rechnungsdatum :', ReDat,
/ 'Verkaufsorganisation:', VOrg,'Auftragsmenge:', Menge,
'Zahlungsbedingungen :', Zahlbed,
/ 'Vertriebsweg: ', VerWeg, 'Mengeneinheit: ', ME,
/ 'Sparte:', Sparte,'Bezeichnung:',Bez ,
/ 'Auftraggeber :', AGeb, 'Preis: ', Preis.
.
MFG Katrin