sap ag2000 dvanced advanced usiness business rogramming programming pplication application / 4...
TRANSCRIPT
SAP AG2000
A dvanceddvanced B usinessusiness
P rogrammingrogrammingA pplicationpplication
/4
Szkolenie ABAP
SAP AG2000
Warto odwiedzić
•www.sapgenie.com•http://www.geocities.com/SiliconValley/Grid/4858/sap/ABAPCode/•http://abap4.tripod.com/•http://www.abaptools.com/•http://www.geocities.com/ResearchTriangle/1635/abap.html•http://www.antarcon.de•http://sap.ittoolbox.com/•http://www.henrikfrank.dk/abapexamples/index.html
SAP AG2000
Selekcja z użyciem JOIN
SELECT P~CARRID P~CONNID F~FLDATE
INTO TABLE I_FLIGHT
FROM SPFLI AS P INNER JOIN
SFLIGHT AS F
ON P~CARRID = F~CARRID AND
P~CONNID = F~CONNID
WHERE P~CARRID IN S_CARRID.
SAP AG2000
For All Entries
check not i_check_tab[] is initial.
select pole1 pole2 from tabela
into table i_tab
for all entries in i_check_tab
where pole1 = i_check_tab-pole1.
SAP AG2000
Tabele wewnętrzne I
SORT i_tabh BY h. SORT i_tabp BY h p.
LOOP AT i_tabh. READ TABLE i_tabp WITH KEY h = i_tabh-h BINARY SEARCH. WHILE ( SY-SUBRC = 0 ) AND ( i_tabp-h = i_tabh-h ). V_IX = SY-TABIX + 1. perform something. READ TABLE i_tabp INDEX V_IX. ENDWHILE. ENDLOOP.
SAP AG2000
Tabele wewnętrzne II
SORT i_tabh BY h. SORT i_tabp BY h p.
LOOP AT i_tabp. AT NEW H. READ TABLE I_TABH WITH KEY H = I_TABP-H BINARY SEARCH. ENDAT. perform something. ENDLOOP.
SAP AG2000
Tabele wewnętrzne III
V_IXP = 1. READ TABLE i_tabp INDEX V_IXP. LOOP AT i_tabh. WHILE ( SY-SUBRC = 0 ) AND ( i_tabp-h <= i_tabh-h ). if i_tabp-h = i_tabh-h. perform something. endif. ADD 1 TO V_IXP. READ TABLE i_tabp INDEX V_IXP. ENDWHILE. ENDLOOP.
SAP AG2000
Nowe typy tabel wewnętrznych
DATA itab {TYPE tabkind OFlinetype|
LIKE tabkind OF lineobj}
WITH [UNIQUE|NON-UNIQUE] keydef [INITIAL SIZE n] [WITH HEADER LINE].
TYPES: BEGIN OF STRUC,
NAME(10),
AGE TYPE I,
END OF STRUC,
HTAB TYPE HASHED TABLE OF STRUC
WITH UNIQUE KEY NAME.
DATA : PERSONS TYPE HTAB.
SAP AG2000
Operacje na tabelach wewnętrznych
INSERT [wa INTO|INITIAL LINE INTO] TABLE itab.
COLLECT [wa INTO] itab.
MODIFY TABLE itab [FROM wa] [TRANSPORTING f1 ... fn].
MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.
READ TABLE itab FROM wa_x [INTO wa]
READ TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn [INTO wa]
READ TABLE itab WITH KEY k1 = v1 ... kn = vn [INTO wa] [BINARY SEARCH]
LOOP AT itab [INTO wa].
DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn.
DELETE TABLE itab [FROM wa].
DELETE itab INDEX idx.
DELETE itab WHERE logexp.
DELETE ADJACENT DUPLICATES FROM itab.
SAP AG2000
Klucz tabeli wewnętrznej
DATA itab {TYPE tabkind OFlinetype|
LIKE tabkind OF lineobj}
WITH [UNIQUE|NON-UNIQUE] keydef [INITIAL SIZE n] [WITH HEADER LINE].
•KEY key1 ... keyn
•KEY TABLE_LINE
•DEFAULT KEY
SAP AG2000
Definiowanie tabeli standardowej
DATA itab {TYPE TABLE OF linetype|
LIKE TABLE OF lineobj}.
DATA itab {TYPE STANDARD TABLE OF linetype| LIKE STANDARD TABLE OF lineobj}
WITH DEFAULT KEY.
DATA itab TYPE RANGE OF type.
DATA itab LIKE RANGE OF f.
SAP AG2000
Struktura pamięci ABAP
SET PARAMETER ID ‘AUN’ FIELD ‘ZKD’.
GET PARAMETER ID ‘AUN’ FIELD v_a.
EXPORT v_a TO MEMORY ID ‘Z_ID’.
IMPORT v_a FROM MEMORY ID ‘Z_ID’.
............. SHARED BUFFER .................
SAP AG2000
Część wspólna dla zmiennych programów
PROGRAM Call function
Perform x(y)Submit, Call transaction
TABLES: VBAK, ... Data: begin of common part x.Data: end of common part x.
SAP AG2000
Permamentne przechowywanie danych
tables: indx.
EXPORT F1 F2 TO DATABASE INDX(ST) ID 'Z_ID'.
IMPORT F1 F2 FROM DATABASE INDX(ST) ID 'Z_ID'.
SQL
Pliki na serwerze aplikacji:
TRANSFER f TO dsn. READ DATASET dsn INTO f.
Pliki na serwerze prezentacji:
Call function ‘WS_UPLOAD’ Call function ‘WS_DOWNLOAD’
SAP AG2000
Wykonywanie kodu w tle
CALL FUNCTION 'Z_BANF_MSGS_GENER'
STARTING NEW TASK 'Z_TASK'
EXPORTING
F_TYPEID = F_TYPEID
TABLES
FI_BANFN = I_BANFMSG_ERR
EXCEPTIONS
OTHERS = 1.
SAP AG2000
Raporty a programy dialogowe
RaportTransakcja(Program dialogowy)
Ekran selekcji
Ekran listy
Ekran 0100
Ekran 0200
ABAP/4 Open SQL
SAP AG2000
Definiowanie transakcji
Lokalne obiektyużytkownika
Programs
SAPMZXXX
Transaction codeTransaction type
Dialog transaction...
ZXXX
...
Transactions
...
Transaction codeTransaction textProgramScreen number
ZXXXTESTSAPMZXXX100
$TMP
SAP AG2000
Logika przepływu - przykład
PROCESS BEFORE OUTPUT.
MODULE TRANSAKTION_INIT.
* Aufruf der Funktionsbausteine zur Feldauswahl
MODULE FELDAUSWAHL.
MODULE CUA_SETZEN.
PROCESS AFTER INPUT.
* Funktion mit richtigem Typ sofort ausführen
MODULE FUNKTION_AUSFUEHREN AT EXIT-COMMAND.
CHAIN.
FIELD: VBAK-VBELN,
RV45S-PSPID.
MODULE VBAK-VBELN_ERM.
* Vertriebsbeleg lesen
MODULE BELEG_LESEN.
ENDCHAIN.
* Idoc öffnen
FIELD : RV45A-DOCNUM.
MODULE IDOC_INPUT_OPEN.
* Folgebildsteuerung aufrufen
MODULE FCODE_BEARBEITEN.
SAP AG2000
Komunikacja: Ekran - ABAP/4 Modulpool
Sterowanie przekazywane od procesora dialogu do procesora ABAP/4
Starowanie przekazywane od procesora ABAP/4 do procesora dialogu
PROCESS BEFORE OUTPUT.MODULE INITIALIZE.
PROCESS AFTER INPUT. MODULE READ_SPFLI. MODULE ... . .
PROCESS BEFORE OUTPUT.MODULE INITIALIZE.
PROCESS AFTER INPUT. MODULE READ_SPFLI. MODULE ... . .
MalarzEkranu PROGRAM SAPMTALA MESSAGE-ID AT.
TABLES SPFLI.MODULE INITIALIZE OUTPUT. CLEAR SPFLI.ENDMODULE.MODULE READ_SPFLI INPUT. SELECT SINGLE * FROM SPFLI WHERE ... . . .ENDMODULE.
PROGRAM SAPMTALA MESSAGE-ID AT.TABLES SPFLI.MODULE INITIALIZE OUTPUT. CLEAR SPFLI.ENDMODULE.MODULE READ_SPFLI INPUT. SELECT SINGLE * FROM SPFLI WHERE ... . . .ENDMODULE.
ABAP/4 ABAP/4
I D E N T I C A L N A M E SI D E N T Y C Z N E N A Z W Y
Obszar roboczy ekranuSPFLI-CARRID
SPFLI-CONNID
OK-CODE
LHLH
04000400
Obszar roboczy programuTABLES: SPFLI.
CARRID CONNID
DATA: OK-CODE (4).
LH LH 04000400
MalarzEkranu ABAP/4 ABAP/4
2
2
2
2
1
1
2
1
2
PBO
PAI
SAP AG2000
Struktura programu dialogowego
R
INCLUDE MZXXX TOP .
INCLUDE MZXXX O01.
INCLUDE MZXXX I01.
INCLUDE MZXXX F01. INCLUDE MZXXX E01.
Program główny
SAPMZXXXSAPMZXXX
TOP-OF-PAGE. PERFORM SUB1 USING A1 A2.AT LINE-SELECTION. SELECT ... FROM ...
MODULE INITIALIZE OUTPUT. ...ENDMODULE.MODULE SET_STATUS OUTPUT. ...
MODULE USER_COMMAND INPUT. ...ENDMODULE.
FORM SUB1 USING F1 F2. ...ENDFORM.
PROGRAM SAPMZXXX ...TABLES: ...DATA: ...
Global data
PBO modules
PAI modules
Subroutines(FORM routines)
Events
Dane globalne
Moduły PBO
Moduły PAI
Procedury(FORM)
Zdarzenia
SAP AG2000
Obsługa akcji użytkownika II
data: ok_code like sy-ucomm,
fcode like ok_code.
module user_command input.
fcode = ok_code.
clear fcode.
case fcode.
when 'OK'.
perform save_doc.
when 'COPY'.
perform copy_doc.
endcase.
endmodule.