Monday, October 11, 2010 at 12:59 AM | 0 comments

Tahapan untuk memanggil SmartForms :
- Sebelumnya buat form seperti di samping, untuk codenya bisa dilihat di bawah.







REPORT YTEST.

data : gv_func_module_name type rs38l_fnam,
   gs_control_parameters type ssfctrlop,
   gs_output_options type ssfcompop.

constants: cn_form(30) value 'YTEST'.


parameters: pa_prm1 type c length 30.
parameters: pa_prm2 type c length 30.


call function 'SSF_FUNCTION_MODULE_NAME'
   exporting
      formname = cn_form
   importing
      fm_name = gv_func_module_name
   exceptions
      no_form = 1
      no_function_module = 2
      others = 3.
if sy-subrc <> 0. exit. endif.

gs_control_parameters-preview = 'X'.
gs_output_options-tdnewid = 'X'.
gs_output_options-tddelete = 'X'.
gs_output_options-tdimmed = 'X'.

call function gv_func_module_name
   exporting
      control_parameters = gs_control_parameters
      output_options = gs_output_options
      user_settings = ' '
      pa_param1 = pa_prm1
      pa_param2 = pa_prm2
*   tables
*      gi_ytest = gi_ytest
   exceptions
      formatting_error = 1
      internal_error = 2
      send_error = 3
      user_canceled = 4
      others = 5.

- Tetapi sebelum di execute, kita harus buat smartforms dahulu.
dimana parameter pa_prm1 dan parame2 akan kita lempar ke smartforms.



- Klik 2x di Form Interface kemudian tambahkan pa_param1 dan pa_param2 di tab import.



- Klik 2x di %TEXT1 tambahkan PA_PRM1 : &pa_param1&


- Klik 2x di %TEXT2 tambahkan PA_PRM2 : &pa_param2& ( sama seperti di atas )
- kemudan jalankan dan akan terlihat seperti dibawah.

Posted by Shanto Labels:
Bagaimana merubah page orientation (Portrait/Landscape) di SmartForm.

1. Pertama buka smartform ( tcode smartforms ).
2. Klik 2x TEST, Klik "Output Options" tab, Disana akan terlihat print attributes kemudian pilih Page Format.

Capture Screen :

Posted by Shanto Labels:
Wednesday, October 6, 2010 at 5:58 AM | 0 comments
Fungsi DateDiff adalah mengembalikan jumlah interval antara dua tanggal itu di VB, sedangkan di ABAP kita bisa mengunakan fungsi DAYS_BETWEEN_TWO_DATES.

Contoh :

CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
   i_datum_bis = '20080401'
   i_datum_von = '20080327'
   i_stgmeth = 2
IMPORTING
   e_tage = output_interval.
Posted by Shanto Labels:
Friday, September 24, 2010 at 3:25 AM | 0 comments
Tabel Penting di Modul Production Planning (PP)

Work center
CRHH - Work center hierarchy
CRHS - Hierarchy structure
CRHD - Work center header
CRTX - Text for the Work Center or Production Resource/Tool
CRCO - Assignment of Work Center to Cost Center
KAKO - Capacity Header Segment
CRCA - Work Center Capacity Allocation
TC24 - Person responsible for the work center


Routings/operations
MAPL - Allocation of task lists to materials
PLAS - Task list - selection of operations/activities
PLFH - Task list - production resources/tools
PLFL - Task list - sequences
PLKO - Task list - header
PLKZ - Task list: main header
PLPH - Phases / suboperations
PLPO - Task list operation / activity
PLPR - Log collector for tasklists
PLMZ - Allocation of BOM - items to operations

Bill of material
STKO - BOM - header
STPO - BOM - item
STAS - BOMs - Item Selection
STPN - BOMs - follow-up control
STPU - BOM - sub-item
STZU - Permanent BOM data
PLMZ - Allocation of BOM - items to operations
MAST - Material to BOM link
KDST - Sales order to BOM link

Production orders
AUFK - Production order headers
AFIH - Maintenance order header
AUFM - Goods movement for prod. order
AFKO - Order header data PP orders
AFPO - Order item
RESB - Order componenten
AFVC - Order operations
AFVV - Quantities/dates/values in the operation
AFVU - User fields of the operation
AFFL - Work order sequence
AFFH - PRT assignment data for the work order(routing)
JSTO - Status profile
JEST - Object status
AFRU - Order completion confirmations

PRT’s production orders
AFFH - PRT assignment data for the work order
CRVD_A - Link of PRT to Document
DRAW - Document Info Record
TDWA - Document Types
TDWD - Data Carrier/Network Nodes
TDWE - Data Carrier Type

Planned orders
PLAF - Planned orders

KANBAN
PKPS - Kanban identification, control cycle
PKHD - Kanban control cycle (header data)
PKER - Error log for Kanban containers

Reservations
RESB - Material reservations
RKPF - Header

Capacity planning
KBKO - Header record for capacity requirements
KBED - Capacity requirements records
KBEZ - Add. data for table KBED (for indiv. capacities/splits)

Planned independent requirements
PBIM - Independent requirements for material
PBED - Independent requirement data
PBHI - Independent requirement history
PBIV - Independent requirement index
PBIC - Independent requirement index for customer req.

Ref : http://www.sap-basis-abap.com/pp/the-table-names-of-sap-pp-module.htm
Posted by Shanto Labels:
Di SAP tanda negative di default diletakan setelah angka, dalam suatu kasus kadang-kadang kita ingin meletakan sebelum angka. Ada sebuah function yang bisa di gunakan untuk memindahkan tanda negative tersebut agar di depan.



REPORT YSANTO_01.

data: lv_kbetr type i, lv_kbetr_c(13).

lv_kbetr = -1000.

write lv_kbetr to lv_kbetr_c.

CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = lv_kbetr_c.

write / lv_kbetr.
write / lv_kbetr_c.

Posted by Shanto Labels:
Pada dasarnya untuk melihat data yang terlock ada di master.dbo.sysprocesses atau menjalankan sp_who2. untuk melihat lebih lengkapnya bisa mengunakan script dibawah


create proc sp_lock2
as select * from (
SELECT
s.spid,
s.blocked,
DB_NAME(s.dbid) DatabaseName,
s.program_name,
s.loginame,
OBJECT_NAME(s.dbid) ObjectName,
CAST(text AS VARCHAR(MAX)) SQL

FROM
sys.sysprocesses s
CROSS APPLY
sys.dm_exec_sql_text (sql_handle)
where blocked <> 0

union all


SELECT
s.spid,
s.blocked,
DB_NAME(s.dbid),
s.program_name,
s.loginame,
OBJECT_NAME(s.dbid),
CAST(text AS VARCHAR(MAX))
FROM
sys.sysprocesses s
CROSS APPLY
sys.dm_exec_sql_text (sql_handle)


where spid in (
SELECT
s.blocked
FROM
sys.sysprocesses s
CROSS APPLY
sys.dm_exec_sql_text (sql_handle)
where blocked <> 0 )

) B order by spid



Setelah itu di kill.....
Posted by Shanto Labels:
Ketika data di database kita baca atau di rubah, database system akan mengontrol apakah terjadi lock terhadap data. Pada dasarnya Lock berfungsi agar transkasi tidak dapat di rubah oleh transaksi lain selama transaksi tersebut sudah dilakukan commited hal ini menjaga konsistensi terhadap datanya.

So, gimana caranya agar kita bisa membaca data tersebut tanpa terjadi lock. kita bisa mengunakan NOLOCK dan READPAST, lalu bedanya apa ?

1. LOCK.
- Membaca data transaksi yang uncommited dan akan membaca data yang terlock.

Contoh :

BEGIN TRAN
UPDATE GS_AREA_CODES SET ac_area_desc = 'JAKARTA BARAT'
WHERE ac_area_id = '11'

lakukan

SELECT count(*) from GS_AREA_CODES with (NOLOCK)

akan menghasilakn 5 baris kemudian lakukan

ROLLBACK TRAN

lakukan kembali

SELECT count(*) from GS_AREA_CODES with (NOLOCK)

akan menghasilakn 5 baris juga.


2. READPAST.
- Membaca data transaksi yang commited dan akan mengabaikan data yang terlock.

Contoh :

BEGIN TRAN
UPDATE GS_AREA_CODES SET ac_area_desc = 'JAKARTA BARAT'
WHERE ac_area_id = '11'

lakukan

SELECT count(*) from GS_AREA_CODES with (READPAST)

akan menghasilakn 4 baris kemudian lakukan

ROLLBACK TRAN

lakukan kembali

SELECT count(*) from GS_AREA_CODES with (READPAST)

akan menghasilakn 5 baris.
Posted by Shanto Labels:
Kadang-kadang kita sering mendebug mencari user exit pada tcode tertentu, dan ini sangat membutuhkan waktu yang lama. Ternyata user exit bisa di list dengan program simple di bawah.



REPORT ysanto_11 .

TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
TABLES : tstct.

DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.

PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.

SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.

IF sy-subrc EQ 0.

SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND obj_name = tstc-pgmna.

MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.

SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.

SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir WHERE funcname = tfdir-funcname.

SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND obj_name EQ enlfdir-area.

MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.

SELECT * FROM tadir INTO TABLE jtab WHERE pgmid = 'R3TR' AND object = 'SMOD' AND devclass = v_devclass.

SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND tcode EQ p_tcode.

FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.

WRITE: /(19) 'Transaction Code – ',
20(20) p_tcode,
45(50) tstct-ttext.

SKIP.

IF NOT jtab[] IS INITIAL.

WRITE:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.

LOOP AT jtab.
SELECT SINGLE * FROM modsapt WHERE sprsl = sy-langu AND name = jtab-obj_name.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.

WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.

SKIP.

FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No of Exits:' , sy-tfill.

ELSE.

FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.

WRITE:/(95) 'No User Exit exists'.

ENDIF.

ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.

AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.


























Ref : http://www.sap-img.com/ab038.htm
Posted by Shanto Labels:
Friday, April 9, 2010 at 12:18 AM | 0 comments
Code Blocks adalah sebuah IDE bebas/open source yang tersedia di beberapa platform dan support dengan external plugins. Di kembangkan dengan C++, Jadi 1 code sumber, langsung bisa di compile di berbagai platform. Disini saya coba nengenalkan codding mengunakan Code Blocks.

Setelah installasi selesai kita coba buat projectnya.
1. File->New-Project ( setelah tampil seperti dibawah langsung bisa dipilih Console Application lalu klik Go.


















2. Kemudian Klik Next, Next lalu masukan project titlenya. Klik Next



















3. klik tombol Next saja.. ( proses selesai )





















4. Akan tampil seperti dibawah. kemudian Klik menu File->Open lalu buka file main.cpp.

















Sourcenya akan tampil seperti ini



















5. Lalu lanjutkan untuk Build dan Run ( F9 )











Oke deh sampai disini dulu dan lain waktu kita akan membahas xwWidgets agar tampilannya seperti visual.
Posted by Shanto Labels:
Thursday, April 8, 2010 at 2:40 AM | 0 comments
Pada dasarnya pada saat membuat program di abap terdiri dari beberapa event:
1. Initialization
Di event Initialization kita bisa memberikan nilai default terhadap suatu variabel. Karena pada saat ini line code akan di execute sebelum screen di tampilkan.


2. At selection screen
Event ini akan di jalankan jika terjadi perubahan di screen
3. Start of selection
Event ini akan dijalankan jika melakukan execute terhadap program tersebut.
4. Block Program yang di buat
Di sinilah suatu block program yang akan dibuat baik select, insert, update, insert atau proses.
5. End of selection
Disini adalah akhir dari suatu execute.
6. At line selection
Ini akan dijalan kan jika terjadi event terhadap screen result yang telah di tampilkan.

Sample Program :color:

REPORT YSANTO_01.
tables: spfli.

data: wa_spfli type spfli,
wa_sflig type spfli.

parameters par_cid like spfli-carrid.

initialization.
par_cid = 'MH'.

at selection-screen.
if par_cid = ''.
message e000(38) with 'Carr ID harus di isi'.
endif.

start-of-selection.
select single * from spfli into wa_spfli where carrid = par_cid.
if sy-subrc = 0.
write wa_spfli-carrid.
endif.

end-of-selection.

at line-selection.
select single * from spfli into wa_sflig where carrid = wa_spfli-carrid.
if sy-subrc = 0.
write: / 'Asal Penerbangan : ', wa_sflig-cityfrom.
write: / 'Tujuan Penerbangan : ', wa_sflig-cityto.
endif.

Output :







Result after execute :





After double click :





Ternyata abap itu mudah, betul betul ....
Posted by Shanto Labels:
Thursday, March 4, 2010 at 12:00 AM | 1 comments
1. Client
    Dapat di sebutkan sebagai lingkup kerja dan di area tersebut user akan berkerja. Ini disebut instance. dimana setiap perusahaan bisa membuat lebih dari satu instance. Didalam satu instance bisa dibuat beberapa client. Untuk master data terprotek dimana client itu dibuat dan tidak dapat di akses dari luar. Master data tidak dapat di access oleh client lain.SAP memberikan tiga client yang nantinya mungkin dibentuk seperti Production, QC dan Development.

2. Company Code
    Merupakan sebuah entitas di dalam suatu perusahaan, informasi yang dapat entitas ini adalah alamat, chart of account, balance sheet currency, fisal year, entitas ini bisa menjadi suatu valuation code, jika ini di jadikan sebuah valution area maka semua matrial dengan nomor yang sama akan bernilai sama walaupun plantnya berbeda. Tcode : OX02

3. Plant
    Bisa disebut juga warehouse atau tempat penyimpanan, pengelolaan dan pengevaluation inventory. Plan hanya bisa di assign ke satu company code
tetapi satu company code bisa memiliki banyak plant. Plan juga menjadi valuation area, jika ini didefine maka untuk matrial number dengan nomor sama nilainya akan berbeda dengan setiap plantnya. Tcode : OX10

4. Storage Location
    Juga bisa di sebut lokasi penyimpanan, bahkan untuk matrial yang sama bisa di simpan dengan lokasi yang berbeda. Untuk level ini yang dimanage hanya quantity.
Satu Storage Location hanya bisa memiliki satu plant tetapi satu plant bisa memiliki beberapa storage location. Dan untuk stock opname di lakukan pada level storage location. Fungsi dari storage location misalkan untuk membedakan matrial baikAdd Image, demage atau yang lain. Tcode : OX09
Posted by Shanto Labels:
Friday, February 19, 2010 at 1:38 AM | 0 comments
Kadang kita sering membuat website menjadi lebih menarik dengan menambah banyak component seperti gride, ajax dan lainya, sehingga akan terasa jadi lebih berat pada saat loading. untuk menyelesaikan masalah tersebut dengan cara mengcompress css dan javascriptnya.

Teknik kompresi pada CSS dan javascrip ini dapat meningkatkan kinerja loading halaman Anda. Dalam arti di sini adalah tidak jadi super cepat, tapi cenderung ke arah optimalisasi.

Untuk CSS bisa mengunakan CSSDrive sedangkan untuk Javascrip bisa mengunakan JSMin.
Posted by Shanto
Wednesday, February 17, 2010 at 6:47 PM | 0 comments
Gw coba share dari yang gw dapat dari team functional, mungkin kita mengenal namanya customer atau pembeli nah di SAP menyebutnya Patner Function. Patner Function di SAP sebagai mandatory yang biasa di gunakan adalah. 1. Sold-to-Party : Pihak pembeli atau customer 2. Ship-to-Party : Pihak penerima barang 3. Bill-to-Party : Pihak penerima tagihan 4. Payer : Pihak pembayar Mungkin ngk jau beda dengan program esta ya ( kenangan lama ), balik lagi ke Patner Function. Kasus 1. ( pihak yang sama ) Umumnya terjadi untuk penjualan perorangan atau perusahaan yang simple. Misal A memesan barang, barangnya di kirim ke A, tagihannya di kirim ke A, yang bayar tagihanya si A. 1. Sold-to-Party : A 2. Ship-to-Party : A 3. Bill-to-Party : A 4. Payer : A Kasus 2. ( pihak berbeda ) Umumnya terjadi untuk penjualan perorangan atau perusahaan yang simple atau stok barang di perusaan tersebut habis. Misal A memesan barang  untuk di kirim ke C, tagihannya di kirim ke A dan yang bayar A. 1. Sold-to-Party : A 2. Ship-to-Party : C 3. Bill-to-Party : A 4. Payer : A Kasus 3 ( pihak berbeda ) Umumnya yang mempunyai cabang atau mempunyai kantor pusat. Misal A Cabang memesan barang, barangnya di kirim ke A Cabang tagihannya di kirim ke A Pusat yang bayar A Pusat. 1. Sold-to-Party : A Cabang 2. Ship-to-Party : A Cabang 3. Bill-to-Party : A Pusat 4. Payer : A Pusat dan masih banyak kasus kasus lainnya. Selain Patner Function mandatory masih ada yang lain yang telah di siapkan oleh SAP.
Posted by Shanto Labels:
Gw sempat di tanya apakah table sap datanya bisa langsung di edit, gw bilang ngk tau sepengalaman gw sih belum pernah, maklumlah newbie. setelah beberapa hari gw iseng googgling nah kan ketemu


Caranya langsung aja ke SE16N kemudian masukan tablenya sebelum di execute ketikan &sap_edit langsung di enter akan muncul message : SAP editing function is activated kemudian execute dan..... table langsung bisa edit.

Tapi PERHATIAN ini jangan dilakukan kalau memang kita tidak tau tabel-table yang berhubungan.

http://www.kowboyz.nl/blog/edit-sap-tables/
Posted by Shanto Labels:
Tuesday, February 16, 2010 at 7:46 PM | 0 comments
Tugas berikutnya fixing report jamsostek ada nik yang tampil double dan ada yang tidak tampil. berati harus di debug dong. pertama setelah form muncul kemudian pilih seleksinya sebelum di execute ketik /h enter ( akan muncul debug switch on ). berarti siap di execute.
abrakedabra. munculah script abap nya, setelah di debug secara internal table nilainya sudah benar dan kemudian gw cek smartformsnya nah ini dia ketemu ternyata yang seharusnya membaca internal table sequance 1, 2, 3 dst tetapi pada saat halaman berikutnya akan balik ke sequance 1 kemudian sequance sebelumnaya + 1 sehingga nik yang sebelumnya tidak muncul dan nik pada saat balik ke sequance 1 menuncul kembali.

Setelah di coba beberapa cara akhirnya di ketemukan caranya : yaitu menambahkan Table Line di Main Area yang berfungsi memaksa balik ke sequance yang sebenarnya.

Tugas Done.
Posted by Shanto Labels:
Setelah mendapat traning secukupnya tiba saatnya untuk mejalankan tugas :
Request yang diminta, tolong di tampilkan artike detail bom dengan total qty bom, qty dan value per sloc.

Tabel yang berhubungan :
1. MAST -> Article to BOM Link
2. STPO -> BOM item
3. MAKT - > Article Descriptions
4. MBEW -> Article Valuation
5. MARD -> Storage Location Data for Article
6. MARA -> General Article Data
7. STAS -> BOMs - Item Selection

Link Table :














Result Report :


Tugas Done.
Posted by Shanto Labels: