25 Aralık 2013 Çarşamba

Create IDOC Step By step

Create IDOC Step by step
SM59 --  create RFC destinations 
WE21 – create/maintain port destination
WE11- DELETE IDocs
RSEXARCD—report name for deletion program for archived IDocs
RBDAPP01-- report name for selecting INBOUND Processing of IDocs Ready for Transfer
RBDAGAIN—report name for processing OUTBOUND IDocs with Errors Again.
RSRFCPIN —report name for  RFC Connection Test.
RBDAGAI2 – report name for reprocess IDocs after INBOUND ALE Error
RBDAGAIE—report name for reprocessing of edited IDocs.
RSEOUT00—report name for process all selected IDocs (EDI)

CREATE OUTBOUND

Source system:
SE11—Create ZTABLE_IDOC_TEST
First, we shall create our table for sending its data to another system.






WE31—Create Segment
Assign name and (F5) Create new segment.
Select the fields you need to transport via IDocs.
Save.






WE30—Creating Basic IDoc Type
Assign a name and (F5) Create a Basic IDoc Type.
(Shift-F6) or Create again. On the next screen you give your segment name to bound them each other.
Select Minimum and maximum number.
Ok, then it seems like this. (Ctrl-S) Save





WE81—Creation Message Type.
(Ctrl-F4) or Change -> Display,
 New Entries.
Assign a name for new message Type.
Save.

WE82—Bound a relation between Message Type and Basic IDOC Type
(Ctrl-F4) or Change -> Display,
New Entries.
Write our Message type and Basic Type names here.
Save.




BD64—Create Distribution Model.
(Ctrl-F4) or Change -> Display,
Edit->Create Model View
Give Names.

Select Model we created,
Edit-> Add Message Type.
Sender and Receiver is to be fulled correctly.

Put our own  message type name.
Save.
Environment-> Generate Profile
And partner profile generated.


Edit-> Model View -> Distribute--  For distribute created Model View.







Then Model View Created.
Now we can check the partner profile for our message type.
WE20- Display profiles.
Our Message Type is set in the Outbound section.




 SE38—Write to report program for creating IDOC control records then transferring it to destination system.
REPORT z_idoc_test.
Run report program.








Then check the IDocs from WE02











CREATE INBOUND


WE57- Assign Function Module to Logical Message:
(Ctrl-F4) or Change -> Display,
New Entries.
Write our Function Name,
Select our Message type and Basic Type,
Direction is Inbound.

Save.

BD51- Assign Method for Written Function Module
(Ctrl-F4) or Change -> Display,
New Entries.
Write Function Name
Select 2 for Input T (Inbound)
Save.



WE42- Creating process Code
(Ctrl-F4) or Change -> Display,
New Entries.
Assign a name for process.
Click left part of screen on “logical message”
Assign our Message Type to process.

BD64- Generating Model View
Select Model View, which you created in source system. 
Environment-> Generate Profile
And partner profile generated.

WE20- For cheking profile detail.
Select destination source and check if you can see your message type in Inbound section.





Now everything is set.
Run Z_IDOC_TEST from R2D. And create IDOC, send it to R1D system.


WE02-Check IDoc in source for Outbox. (R2D)






WE02-Check IDoc in destination for Inbox. (R1D)




*---------------------------------------------------------------------*
*Report  Z_IDOC_TEST
*---------------------------------------------------------------------*

REPORT z_idoc_test.

TABLESztable_idoc_test.

DATA s_ctrl_rec LIKE edidc"Idoc Control Record
       s_zsegment 
LIKE zsegment_test"CUSTOMER Header Data

DATA t_ztable_idoc_test LIKE ztable_idoc_test OCCURS WITH HEADER LINE.

DATA t_edidd LIKE edidd OCCURS WITH HEADER LINE"Data Records
DATA t_comm_idoc LIKE edidc OCCURS WITH HEADER LINE"Generated Communication IDOc

CONSTANTS :c_zshstuseg LIKE edidd-segnam VALUE 'ZSEGMENT_TEST'.
CONSTANTSc_idoctp LIKE edidc-idoctp VALUE 'ZBASICTYPE_IDOC_TEST'.
*** Selection Screen
SELECT-OPTIONS s_bukrs FOR ztable_idoc_test-bukrs OBLIGATORY.
PARAMETERS c_mestyp LIKE edidc-mestyp DEFAULT 'ZMESSAGE_TYPE_IDOC_TEST',
c_rcvprt 
LIKE edidc-rcvprt DEFAULT 'LS'"Partner type of receiver
c_logsys 
LIKE edidc-rcvprn DEFAULT 'R1DCLNT030',
c_rcvpor 
like edidc-rcvpor default 'R1DCLNT030',
c_sndprn 
like edidc-sndprn default 'R2DCLNT030',
c_sndprt 
like edidc-sndprt default 'LS'"Destination System
DATA zsegment.

***START-OF-SELECTION
START-OF-SELECTION.
  
PERFORM generate_data_records.
  
PERFORM generate_control_record.
  
PERFORM send_idoc.
*&---------------------------------------------------------------------*
*& Form GENERATE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM generate_data_records .
  
SELECT FROM ztable_idoc_test
  
INTO TABLE t_ztable_idoc_test
  
WHERE bukrs IN s_bukrs.
  
IF sy-subrc NE 0.
    
MESSAGE e398(00WITH 'No Company code Found'.
  
ENDIF.
  
PERFORM arrange_data_records.
ENDFORM" GENERATE_DATA_RECORDS
*&---------------------------------------------------------------------*
*& Form GENERATE_CONTROL_RECORD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM generate_control_record .
  s_ctrl_rec
-rcvpor c_rcvpor"Receiver Port
  s_ctrl_rec
-mestyp c_mestyp"Message type
  s_ctrl_rec
-idoctp c_idoctp"Basic IDOC type
  s_ctrl_rec
-rcvprt c_rcvprt"Partner type of receiver
  s_ctrl_rec
-rcvprn c_logsys"Partner number of receiver
  s_ctrl_rec
-sndprt c_sndprt"Sender Partner type
  s_ctrl_rec
-sndprn c_sndprn"Sender Partner Number
ENDFORM" GENERATE_CONTROL_RECORD
*&---------------------------------------------------------------------*
*& Form SEND_IDOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM send_idoc .
  
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
    
EXPORTING
      master_idoc_control            
s_ctrl_rec
*     OBJ_TYPE                       = ''
*     CHNUM                          = ''
    
TABLES
      communication_idoc_control     
t_comm_idoc
      master_idoc_data               
t_edidd
    
EXCEPTIONS
      error_in_idoc_control          
1
      error_writing_idoc_status      
2
      error_in_idoc_data             
3
      sending_logical_system_unknown 
4
      
OTHERS                         5.
  
IF sy-subrc <> 0.
    
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  
ELSE.
    
COMMIT WORK.
    
LOOP AT t_comm_idoc.
      
WRITE:'IDoc Generated - 't_comm_idoc-docnum.
    
ENDLOOP.
  
ENDIF.
ENDFORM" SEND_IDOC
*&---------------------------------------------------------------------*
*& Form ARRANGE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM arrange_data_records .

  
SORT t_ztable_idoc_test BY bukrs.

  
LOOP AT t_ztable_idoc_test.
    s_zsegment
-mandt t_ztable_idoc_test-mandt.
    s_zsegment
-bukrs t_ztable_idoc_test-bukrs.
    s_zsegment
-zeile t_ztable_idoc_test-zeile.
    t_edidd
-segnam c_zshstuseg.
    t_edidd
-sdata s_zsegment.
    
APPEND t_edidd.
    
CLEAR t_edidd.
  
ENDLOOP.
ENDFORM" ARRANGE_DATA_RECORDS

13 Aralık 2013 Cuma

Outbound IDocs statuses

Outbound IDocs statuses
Status Description
0 Not used, only R/2
1 IDoc generated
2 Error passing data to port
3 Data passed to port OK
4 Error within control information of EDI subsystem
5 Error during translation
6 Translation OK
7 Error during syntax check
8 Syntax check OK
9 Error during interchange handling
10 Interchange handling OK
11 Error during dispatch
12 Dispatch OK
13 Retransmission OK
14 Interchange Acknowledgement positive
15 Interchange Acknowledgement negative
16 Functional Acknowledgement positive
17 Functional Acknowledgement negative
18 Triggering EDI subsystem OK
19 Data transfer for test OK
20 Error triggering EDI subsystem
21 Error passing data for test
22 Dispatch OK, acknowledgement still due
23 Error during retransmission
24 Control information of EDI subsystem OK
25 Processing despite syntax error (outbound)
26 Error during syntax check of IDoc (outbound)
27 Error in dispatch level (ALE service)
28 Not used
29 Error in ALE service
30 IDoc ready for dispatch (ALE service)
31 Error - no further processing
32 IDoc was edited
33 Original of an IDoc which was edited
34 Error in control record of IDoc
35 IDoc reloaded from archive
36 Electronic signature not performed (timeout)
37 IDoc added incorrectly
38 IDoc archived
39 IDoc is in the target system (ALE service)
40 Application document not created in target system
41 Application document created in target system

42 IDoc was created by test transaction

Inbound IDocs statuses

Inbound IDocs statuses
Status Description
50 IDoc added
51 Application document not posted
52 Application document not fully posted
53 Application document posted
54 Error during formal application check
55 Formal application check OK
56 IDoc with errors added
57 Test IDoc: Error during application check
58 IDoc copy from R/2 connection
59 Not used
60 Error during syntax check of IDoc (inbound)
61 Processing despite syntax error (inbound)
62 IDoc passed to application
63 Error passing IDoc to application
64 IDoc ready to be transferred to application
65 Error in ALE service
66 IDoc is waiting for predecessor IDoc (serialization)
67 Not used
68 Error - no further processing
69 IDoc was edited
70 Original of an IDoc which was edited
71 IDoc reloaded from archive
72 Not used, only R/2
73 IDoc archived

74 IDoc was created by test transaction

SAP de BAPI, IDOC Nedir?

IDOC Nedir?
IDoc bir SAP nesnesidir. Bir SAP başka bir SAP sistemine veya SAP sisteminden SAP olmayan başka bir sisteme veri taşımak veya tersi için kullanılan elektronik message dır. IDoc Intermediate Document’nin kısaltılmış halidir.  SAP sisteminden SAP olmayan bir systeme taşıma işlemi EDI (Electronic Data Interchange) alt sistemi aracılığı ile olurken, iki SAP sistemi arasındaki taşıma işlemi ALE ile gerçekleşir. IDoc SAP sisteminde veya EDI alt sisteminde başlatılır. Bu IDOC’un gönderileceği yöne gore değişir, ve Inbound IDoc ve Outbound IDoc olarak adlandırılır.  Outbound akışındaki durumda, IDoc SAP sistemine doğru message control dokümanını yönlendirmek için başlatılır, ve  EDI alt sistemine gönderilir. EDI veriyi IDoc formatından XML formatına veya XML benzeri bir formata dönüştürür, ve Internet yoluyla istenen sisteme aktarılır. Inbound akışında ise, EDI yardımcı dataya dönüştürülür ve IDoc SAP nin içinde yaratılır. IDoc’un başarılı gönderilmesi sonrasında, SAP sistemine Application Document gönderilir.



EDI STANDARDS AND IDOC


“EDI (Electronic Data Interchange) , yakın bilgisayar sistemleri arasında bir elektronik değişim dokümanıdır. Bu işlemi standart formatta bir kominikasyon ağı kullanarak yapar.

Elektronik olarak bilgi aktarımı için, ANSI ASC X12 ve  EDIFACT yaygın olarak kullanılan iki tiptir. ANSI ASC X12, büyük organizasyonlar, resmi kurumlar ve EDI yazılım firmaları tarafından kullanılan formattır. UN/EDIFACT ise,  uluslar arası EDI ticari ve taşıma alanında, kullanılır, ve 1985 de ANSI X12 ve UNTDI (United Nations Trade Data interchange) temel standart alınarak şekillendirilmiştir. ANSI X12, business dokümanı document transaction olarak tanımlanmıştır. Herbir transaction ise, 3 haneli sayı ile temsil edilir, örneğin; 850 – Purchase Order, 855 - Purchase Order Acknowledgement. EDIFACT, business dokümanını mesaj olarak tanımlar, ve standart isimlerle gösterilir, örneğin; purchase order için ORDERS.

IDOC TERMINOLOGIES 
IDOC (BASIC) TYPE
IDoc tipleri genelde EDI standartlarına ama çoğunlukla EDIFACT standartlarına dayanır.

Basic Types (or IDoc Type), bir standart IDoc record yapısıdır. Her temel tip, standart IDoc segmentini, veri alanlarının formatını ve onların boyutunu tanımlar.  Basic Types ayrıca, bir IDoc içindeki alanların ve segmentlerin sayılarını da tutur. Bir mesajın gönderilmesi için gerekli bütün alanlar ayrı segmentlere atanır. Ayrıca Basic Types structure yapısını tanımlar ve IDoc segmentlerinin zorunlu yada optional olanları arasındaki ilişkiyi belirler.




STRUCTURE
Bir IDoc yapısı 3 ana bölüme ayrılır; Control Record, Data Records and Status records.




Bu yapılar, 3 transparent tabloda tutulur, bunlar; EDIDC, EDID4 and EDIDS.

CONTROL RECORD (EDIDC)
Bu tabloda şu bilgiler tutulur;  IDoc number, direction, IDoc Status, Temel Tip, Message tipi, Partner (Sender/Receiver), yaratma/değiştirme zaman  bilgisi, Interchange File yada ISA numarası vb.






DATA RECORD (EDID4)
Bu yapı IDoc segmentinin ayrıntılarını içerir.

IDoc segment, gönderilecek dokümanın gerekli veri alanlarını (data field) içerir.






STATUS RECORDS (EDIDS)
IDoc Status alanı, işlemin durum bilgisini içerir. IDoc durumları IDoc’u takip etmek için kullanılır ve process durumuna gore çeşitlilik gösterir. Status Sayısı IDoc statüsünü gösterir. O andaki IDoc status, control record içinde yeralır.


Başlangıç status numarası inbound için 64, outbound için 03 dür. Başarılı status, inbound için 53 outbound için 16dır.


RRC1_IDOC_SET_STATUS program, IDoc statüsünü değiştirmek için kullanılır. Status değiştirme ihtiyacı genellikle 68 den  bir daha çalışmama statüsüne değiştirmek için kullanılır.



Eğer IDoc veride bir hata içerirse, WE02 or WE05 kullanarak hatanın içeriğine bakılabilir. Bir IDoc görüntülendiğinde, orjinal IDoc bilgileri status 70 (inbound için) / 33 (outbound için) in altına yazılır. Bu IDoc sadece referans olarak system içinde bulunur,işletilemez. Değiştirilebilen IDoc durumu 69 (inbound) ve 32 (outbound) altına yerleştirilir. Bu IDoc’lar daha sonar BD87 kodu kullanılarak veya batch job’lar ile işletilebilir.

WE19 ile IDOC’lar debug edilebilir. WE19, IDoc işlenmesi için bir test aracıdır. WE19 hazır olan IDoc’u kopyalar ve test aşamasının ihtiyaçlarına gore değiştirilebilecek yeni bir IDoc yaratır. Yine BD87 ile yeni yaratılan IDoc çalıştırılabilir.



AUTOMATIC/IMMEDIATE PROCESSING
Gerçek samanlı bilgi aktarımı gerekli olduğu durumlarda kullanılan bir yöntemdir. IDoc işletilirken sisteme eklendiğinde veya oluşturulduğunda hemen işlenmesi anlamına gelir. Outbound özelliklerinde “Transfer IDoc immediately” özelliği seçilirse, bu özellik active edilmiş olur.


TCODE WE02/WE05: GENERAL SEARCH
IDocs, WE02 ve WE05 transaction kodları ile görüntülenir. Eğer IDoc numarası ile arama yapılamıyorsa IDoc Date, Direction, BASIC TYPE, MESSAGE TYPE, ve  PARTNER NUMBER.Partner  numarası kullanılarak da output mesajları bulunabilir.




MANUAL PROCESSING
BD87 kullanılarak, IDocs elle başlatılabilir. Sadece hatalı IDoclar burden başlatılır. Eğer IDoc’u yeniden başlatmak istiyorsanız, BD87 kullanmalısınız.
WE19 içinde başarılı bir IDoc’u process edebilirsiniz. Ama BD87’de edemezsiniz.


PROCESSING VIA BACKGROUND JOB
IDoc’u arkaplanda çalıştırmak genelde en çok tercih edilen yöntemdir. Aşağıdaki programlar IDoc lara arka planda çalıştırmak için kullanılır.

RBDAPP01 - Inbound IDocs
RSEOUT00 - Outbound IDocs



TRIGGERING AN OUTBOUND IDOC
Başarılı bir outbound IDoc aşağıdaki statülerden ters sırayla geçer. Herbir statü IDoc’un aşamasını gösterir. Eğer bir IDoc bütün aşamaları geçerse en son 16 statüsüne ulaşır. Statülerin açıklamaları aşağıdaki gibidir.
01: IDoc başarıyla oluşturuldu.
30: IDoc, IDoc process işleri tarafından işlenmeye hazırdır
03: IDoc verisi Port’a gönderildi.

18: IDoc, EDI alt sisteminde başarıyla başlatıldı.
06: IDoc, EDI formatına dönüştürüldü.
12: IDoc, partnere başarıyla eşleştirildi.
16: Partner, IDoc’u başarıyla teslim aldı.

RECEIVING AN INBOUND IDOC
Inbound IDoc için başlangıç durumu 64’dür, başarılı status 53dür.
 Inbound IDoc  için farklı statülerin açıklamaları aşağıdaki gibidir;
50: IDoc; sisteme başarıyla alındı.
64: IDoc, IDoc processing job tarafından işlenmeye hazır.
53: Application document yaratıldı ve başarıyla kaydedildi. Doküman numarası status 53 nodu açılarak görülebilir.


Önemli  Transaction Kodları;:
SALE - IMG ALE Configuration root
WE20 - Manually maintain partner profiles
BD64 - Maintain customer distribution model
BD71 - Distribute customer distribution model
SM59 - Create RFC Destinations
BDM5 - Consistency check (Transaction scenarios)
BD82 - Generate Partner Profiles
BD61 - Activate Change Pointers - Globally
BD50 - Activate Change Pointer for Msg Type
BD52 - Activate change pointer per change.doc object
BD59 - Allocation object type -> IDOC type
BD56 - Maintain IDOC Segment Filters
BD53 - Reduction of Message Types
BD21 - Select Change Pointer
BD87 - Status Monitor for ALE Messages
BDM5 - Consistency check (Transaction scenarios)
BD62 - Define rules
BD79 - Maintain rules
BD55 - Defining settings for IDoc conversion

WEDI - ALE IDoc Administration
WE21 - Ports in Idoc processing
WE60 - IDoc documentation
SARA - IDoc archiving (Object type IDOC)
WE47 - IDoc status maintenance
WE07 - IDoc statistics

BALE - ALE Distribution Administration
WE05 - IDoc overview
BD87 - Inbound IDoc reprocessing
BD88 - Outbound IDoc reprocessing
BDM2 - IDoc Trace
BDM7 - IDoc Audit Analysis
BD21 - Create IDocs from change pointers
SM58 - Schedule RFC Failures


Distributed data için basit kodlar:
BD64: Maintain a Distributed Model
BD82: Generate Partner Profile
BD64: Distribute the distribution Model

IDoc’lar için kullanılan Programlar;
RBDMIDOC u2013 Creating IDoc Type from Change Pointers
RSEOUT00 u2013 Process all selected IDocs (EDI)
RBDAPP01 - Inbound Processing of IDocs Ready for Transfer
RSARFCEX - Execute Calls Not Yet Executed
RBDMOIND - Status Conversion with Successful tRFC Execution
RBDMANIN - Start error handling for non-posted IDocs
RBDSTATE - Send Audit Confirmations
WE19 : IDOC Test etmek için.

WHAT is RFC in SAP

RFC SAP sistemleri ve SAP ile SAP olmayan sistemler arasında TCP/IP protocolunu kullanarak bağlantısını sağlar. SM59 Transaction kodu ile tanımlanır. 4 tip RFC vardır;
Asenkron RFC,
Senkron RFC,
Transactional RFC,
Queue RFC.



17 Ekim 2013 Perşembe

User Exit Nedir

User exit yazılımda, müşterinin kendisi için ekleme yaptığı alanlardır. Bu alanlar standart SAP uygulamalarını bozmadan kendinize has fonksiyonlar ekleyebileceğiniz alanlardır. Bu alanlar altprogram olarak da düşünülebilir, FORM EXIT olarak da bilinirler. User exit bölümleri genellikle include veya SAP tarafından standart programlara eklenen kısımlardır.
SD modülü büyük miktarda User exit alanına sahiptir. Bir örnek;

 
SE80 ile object navigatör açılır ve VMOD packet i seçilir. SD deki tüm userexit ler buradadır. PRICING, ORDER PROCESSING gibi SD deki farklı fonksiyonları burada bulabilirsiniz.
Gerekli kısmı bulup burdan kodlamaya başlayabilirsiniz.
 
Bütün user exit kısımları, "USEREXIT_..." ile başlar.

FORM USEREXIT_XXXX....
INCLUDE ZZUSEREXIT.......
 
             
User exitler şu şekilde bulunabilir: Object Navigator (SE80) basılır,  Package kısmı seçilir ve  VMOD (Application development R/3 SD customer modification)  seçilerek enter tuşlanır.
Böylece SD içindeki user exitler için bütün include ları bulabilirsiniz. 

1 Ekim 2013 Salı

SMART FORMS & Simple Example - SMART FORMS NEDİR, NASIL ÇALIŞIR?

SMART FORMS NEDİR, NASIL ÇALIŞIR?

Bu tür formlar, basit grafiksel araçlar kullanarak oluştururulan bu formlar basit değişiklikleri herhangi bir programlama çabası göstermeden sağlayan formlardır. Bundan dolayı herhangi bir programlama dili bilmeden bir kullanıcı SAP sisteminden ilgili process için gerekli data ile form oluşturabilir.
Forma yazdırmak için, data çekme programına veya Smart Forma ihtiyaç vardır. Data çekme işlemi ve form mantığı tamamen farklıdır.
Uygulama programına data,  Smart form'un interface function modülü ile gönderilir.
Smart Form aktive olduğunda , sistem otomatik olarak bir function modül üretir. Çalışma zamanında, sistem bu function modülünü işletir.

Statik ve dinamik tablolar ekleyebilirsiniz.
SAP Smart Forms, arka plan, yada formun bir parçası olarak gösterilebilen grafiklerin oluşturulmasına izin verir.  Arka plan grafikleri genelde şirkete özgü bir görünüş için kullanılır. Arka plan grafiği istenirse çıktı alınırken de eklenebilir.
SAP Smart Forms also support postage optimizing.
SAP Smart Forms, kısa zamanda maliyet etkin form çözümleri sunmaya yardımcı olur.
Form Painter ve grafiksel Table Painter kullanarak bir form şekillendirilir. Formum mantığı, ağaç yapısında bir sıralamaya sahiptir. Global tanımlamalar noktası, Text noktaları, Çıkış noktaları, Grafik noktaları.

SMARTFORMS SAP Smart Forms transaction kodudur.
 Ayrıca, web yayını için, sistem bir XML çıkışı üretebilir. 

Adım adım en basit smart form tanımlama: