Introducere n SAP
SAP (System Application and Product) este numele celei mai mari companii germane,
precum i numele software-lui n sine. Compania a fost fondat n 1972 de ctre 5 angajai IBM.
Programul SAP este liderul mondial la categoria Enterprise Information i Management
Package; folosirea Management Package asigurnd posibilitatea de a observa i gestiona, n timp
real, vnzarile, producia, finanele, contabilitatea i resursele umane dintr-o companie
- nivelul bazei de date care gestioneaz datele folosind un sistem de gestionare al bazei de date
relaional (SGBDR) . Tot aici sunt gestionate datele generale (master data), datele tranzac ionale i
sunt stocate programele i metadatele care descriu sistemul i structura sa;
- nivelul de aplicaie unde au loc execuii ale programelor ABAP;
- nivelul de prezentare care conine interfaa utilizator prin intermediul creia utilizatorii introduc
date i apoi le afiseaz.
SAP R/3 a fost dezvoltat cu ajutorul limbajului ABAP/4.
Tranzacii in SAP
Codul unei tranzacii = combinaie alfanumeric de 4-5 caractere
SE11 (ABAP Dictionary) - crearea unei tabele
SE14 - ajustarea tabelei
SM30 - Mainteinance View
SE38 - crearea programului
Aplicaie practic
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
Obinerea unei tabele se realizeaz cu ajutorul tranza iei SE11, parcurgnd urmtorii pa i:
Se creaz data element-ul (acesta conine informaii referitoare la descrierea unei tabele).
Se creaz tabela ( selectnd cheia primar i cea secundar, pentru legtura cu alt tabel).
Pentru a intoduce inregistrri in tabel: Utilities -> Table Contents -> Create Entries.
Tot in tranzacia SE11 construim o Structur ( aceasta reprezint o linie dintr-o tabel) i un
Table Type (acesta conine mai multe linii).
Utilizm un Table Type pentru a descrie structura i atributele funcionale ale unei tabele
interne n ABAP .
Toate acestea sunt folosite n programul creat de ctre companie (n SE38) pentru a facilita la
stocarea datelor despre clieni i de a asigura fluiditatea tranzaciilor.
Graficul de mai sus arat uurina introducerii n baza de date a unui client. De asemenea, la
opiuni, putem observa c, la fel de simplu, putem selecta un anume client n func ie de nume sau l
putem terge din baza de date.
O alta opiune este cea de Display, care ne arat nregistrrile din tabela Clien i, dupa cum se
observ in graficul de mai sus.
Astfel, cu ajutorul acestei tehnologiei, compania n cauz, care are ca i obiect de activitate
vnzarea online de produse vestimentare, acceseaz, modific sau adaug nregistrri n baza de
date ntr-un mod facil .
Codul folosit:
*&---------------------------------------------------------------------*
*& Report ZAN_PROGRAM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
include zan_program_top.
include zan_program_e01.
include zan_program_f01.
*&---------------------------------------------------------------------*
*& Include
ZAN_PROGRAM_TOP
*&---------------------------------------------------------------------*
REPORT
zan_program.
TABLES zan_clienti.
*------------------------*Types declaration
*------------------------type-pools slis.
TYPES:ty_comenzi TYPE zan_comenzi1,
tt_comenzi TYPE zan_comenzi2,
tt_clienti type zan_clienti2.
*------------------------*Data declaration
*------------------------DATA:ls_comenzi TYPE ty_comenzi,
lt_comenzi TYPE tt_comenzi,
lv_index TYPE syindex,
gs_clienti TYPE zan_clienti1,
pv_subrc type sysubrc,
pv_date type sydatum,
pv_weekday type dtresr-weekday,
gt_clienti type standard table of zan_clienti,
gt_comenzi type standard table of zan_comenzi.
*-------------------------*Selection-screen
*-------------------------SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
PARAMETERS:
p_nume TYPE zan_nume1,
p_pren TYPE zan_pren,
p_tel TYPE zan_tel,
p_adresa TYPE zan_adresa1.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-003.
PARAMETERS: p_disp as checkbox,
p_select AS CHECKBOX,
p_insert RADIOBUTTON GROUP r1,
p_delete RADIOBUTTON GROUP r1.
SELECTION-SCREEN: END OF BLOCK blk1.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS:
p_id_com TYPE zan_id_com,
p_id_cl TYPE zan_id_client,
p_data TYPE zan_data,
p_st_com TYPE zan_st_com.
PARAMETERS: p_com AS CHECKBOX. " default 'X'.
*&---------------------------------------------------------------------*
*& Include
ZAN_PROGRAM_E01
*&---------------------------------------------------------------------*
*-------------------------*Initialization event
*-------------------------INITIALIZATION.
perform initialization.
*....................
*At selection screen
*....................
at selection-screen.
perform selection_screen.
*
*
*
START-OF-SELECTION.
perform start_of_selection.
perform insert_data using gt_clienti
changing pv_subrc .
*
*
*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Include
ZAN_PROGRAM_F01
*&---------------------------------------------------------------------*
*form user_command using pv_ucomm
*
type syucomm
*
ps_selfield
*
type slis_selfield.
* DATA: lt_tax type tt_tax
FORM initialization .
mytab-prog = sy-repid.
mytab-dynnr = 100.
mytab-activetab = 'PUSH1'.
ENDFORM.
" INITIALIZATION
INCLUDE zan_program_selection_screef01.
*&---------------------------------------------------------------------*
*&
Form SELECTION_SCREEN
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM selection_screen .
CASE sy-ucomm.
WHEN 'PUSH1'.
mytab-dynnr = 100.
WHEN 'PUSH2'.
mytab-dynnr = 200.
WHEN OTHERS.
...
ENDCASE.
ENDFORM.
" SELECTION_SCREEN
*&---------------------------------------------------------------------*
*&
Form INITIALIZATION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form INITIALIZATION
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECTION_SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM selection_screen_output .
LOOP AT SCREEN.
CASE screen-name.
WHEN 'P_NUME' OR 'P_PREN' OR 'P_ADRESA' OR 'P_TEL' OR 'P_INSERT' OR 'P_DELETE'.
IF p_com = 'X'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDCASE.
ENDLOOP.
LOOP AT SCREEN.
CASE screen-name.
WHEN 'P_NUME' OR 'P_PREN' OR 'P_ADRESA' OR 'P_TEL'.
IF p_disp = 'X'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM.
"selection_screen_output
*&---------------------------------------------------------------------*
*&
Form START_OF_SELECTION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM start_of_selection .
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
IF p_disp IS NOT INITIAL.
" Get students
PERFORM select_data CHANGING gt_clienti.
* Create fieldcatalog
PERFORM create_fieldcat CHANGING lt_fieldcat.
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
IF ( p_com = 'X' ).
DO 1 TIMES.
ls_comenzi-mandt = sy-mandt.
ls_comenzi-id_com = sy-index.
ls_comenzi-id_client = p_id_cl.
ls_comenzi-data = p_data.
ls_comenzi-st_com = p_st_com.
APPEND ls_comenzi TO lt_comenzi.
lv_index = lv_index + 5.
ENDDO.
MESSAGE i398(00) WITH 'S-au introdus' lv_index 'inregistrari' .
ELSE.
MESSAGE 'Nu s-au selectat bine parametrii.' TYPE 'E'.
ENDIF.
WRITE : / ls_comenzi-id_com,
ls_comenzi-id_client,
ls_comenzi-data,
ls_comenzi-st_com.
IF p_select = 'X'.
SELECT SINGLE * FROM zan_clienti
INTO gs_clienti
WHERE nume = p_nume.
WRITE: gs_clienti.
ENDIF.
CLEAR gs_clienti.
IF p_insert = 'X'.
SELECT *
FROM zan_clienti
INTO CORRESPONDING FIELDS OF TABLE gt_clienti.
SORT gt_clienti BY id_client DESCENDING.
READ TABLE gt_clienti INTO gs_clienti INDEX 1.
IF sy-subrc = 0.
gs_clienti-id_client = gs_clienti-id_client + 1.
ELSE.
gs_clienti-id_client
= '0001'.
ENDIF.
gs_clienti-nume = p_nume.
gs_clienti-prenume = p_pren.
gs_clienti-telefon = p_tel.
gs_clienti-adresa = p_adresa.
INSERT zan_clienti FROM gs_clienti.
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
IF sy-subrc = 0.
MESSAGE 'Inregistrarea a fost adaugata' TYPE 'I'.
ELSE.
MESSAGE 'Inregistrarea nu fost adaugata' TYPE 'I'.
ENDIF.
ENDIF.
IF p_delete = 'X'.
DELETE FROM zan_clienti
WHERE nume = p_nume .
IF sy-subrc = 0.
MESSAGE 'Inregistrarea a fost stearsa' TYPE 'I'.
ELSE.
MESSAGE 'Inregistrarea nu fost stearsa' TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form INSERT_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM insert_data
USING pt_clienti TYPE tt_clienti
CHANGING pv_subrc TYPE sysubrc.
SORT gt_clienti BY id_client DESCENDING.
READ TABLE gt_clienti INTO gs_clienti INDEX 1.
IF sy-subrc = 0.
gs_clienti-id_client = gs_clienti-id_client + 1.
ELSE.
gs_clienti-id_client
= '0001'.
ENDIF.
gs_clienti-nume = p_nume.
gs_clienti-prenume = p_pren.
gs_clienti-telefon = p_tel.
gs_clienti-adresa = p_adresa.
INSERT zan_clienti FROM gs_clienti.
ENDFORM.
"insert_data
*&---------------------------------------------------------------------*
*&
Form DATE_TO_DAY
*&---------------------------------------------------------------------*
*
text
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECT_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--P_GT_REPS text
*----------------------------------------------------------------------*
FORM select_data CHANGING
p_gt_clienti.
SELECT *
FROM zan_clienti
INTO CORRESPONDING FIELDS OF TABLE gt_clienti.
ENDFORM.
" SELECT_DATA
*&---------------------------------------------------------------------*
*&
Form CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--P_LT_FIELDCAT text
*----------------------------------------------------------------------*
FORM create_fieldcat CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'Zan_clienti1'
*
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
ct_fieldcat = pt_fieldcat
EXCEPTIONS
inconsistent_interface
= 1
program_error
= 2
OTHERS
= 3 .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT pt_fieldcat INTO ls_fieldcat.
IF ls_fieldcat-fieldname = 'nume'.
IF p_disp NE 'X'.
ls_fieldcat-no_out = 'X'.
MODIFY pt_fieldcat FROM ls_fieldcat INDEX sy-tabix.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
" CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form DISPALY_ALV
*&---------------------------------------------------------------------*
InfoStart nceputul carierei tale n IT
Proiect implementat de Academia de Studii Economice din Bucureti n parteneriat cu
SC Crystal System S.R.L. i Sindicatul Studenilor din Facultatea de Cibernetic, Statistic i
Informatic Economic - SiSC
Proiect cofinanat din Fondul Social European prin
Programul Operaional Sectorial Dezvoltarea Resurselor Umane 2007-2013
Contract POSDRU/161/2.1/G/138408
*
text
*----------------------------------------------------------------------*
*
-->P_LT_FIELDCAT text
*
-->P_GT_REPS text
*----------------------------------------------------------------------*
FORM dispaly_alv
USING