2009年12月13日 星期日

ABAP常用的T-CODE

T-Code項目T-Code附註
表格  
ABAP/4 Dictionary maintenanceSE11表格 結構 域 加鎖物件 建立與管理
Table view and maintainSE16表格 View
Table views maintainerSM30表格維設產生器
Performance AnalysisST05追蹤畫面上的TABLE名稱
程式開發  
ABAP/4 Function LibrarySE37Function處理器
ABAP/4 EditorSE38程式編輯器
Object BrowserSE80元件總覽器
Maintain messagesSE91訊息編輯器
Maintain Transaction CodesSE93T-Code編輯器
Overview of sersSM04使用者控制清單
Display locksSM12解使用者Lock控制器
Batch job monitoringSM35批次輸入處理器
Overview of ProcessesSM50程式處理概覽
Font Maintenance Bar CodeSE73看Bar Code
Customizing: Execute ProjectSPRO進入後台控制
Change View "Country Global Parameters" OverviewOY01設定國家別(處理小數與千分位)
Conditions for Output ControlNACEoutput type控制條件
Transaction and Screen VariantsSHD0隱藏標準畫面欄位
Configuration of RFC ConnectionsSM59
SAP-DirectoriesAL11查存放資料至網路資料夾路徑
Spool Administration Initial ScreenSPAD印表機格式設定
SE18建立BADI
SE19建立IF
RSA1
UpLoad PICSE78圖型上傳
Search MessagesSE91查看MESSAGES
Creat Query Search ReportSQ01建立Query查詢報表
BDCSHDB錄制BDC
系統T-CODE  
Transport OrganizerSE09Request Display處理器
Transport Management SystemSTMS轉程式DEV TO QAS TO PRD
Legacy System Migration WorkbenchLSMW舊系統轉至新系統資料
Batch Input Session OverviewSM35查看LSMW上傳是否成功
SPAU查看那些程式上傳蓋掉
效能  
ABAP Runtime AnalysisSE30測式程式效能
User ListSM04查看個人花費記憶體資源
Workload MonitorST03N查看程式花費記憶體資源
ABAP Runtime AnalysisSE30查程式跑的時間
ABAP Runtime ErrorST22查程式跑的Error
設立權限物件 T-code  
User MaintenanceSU01使用者維護
User Information SystemSUIM使用者資訊系統
List of Authorization FieldsSU20權限清單
Maintant the Authorization ObjectsSU21維護權限物件
Display Authorization Data for UserSU53查看是否擁有T-CODE權限
Role MaintenancePFCG維護規責
Authorization Objects By Complex Selection CriteriaS_BCE_68001413尋找權限物件
Role MaintenancePFCG規則維護
System MeasurementUSMM人員重覆登入報表
Job 排程   
Define Background JobSM36Background
Creat Planning JobMC8D批次處理:生成計劃
Maintant Variant by JobMC8E批次處理:改變計劃
NetWeaver   
Display and maintain RFC destinationsSM59檢示與維護 RFC 目的地

2009年11月19日 星期四

彈出訊息視窗

在程式編寫時希望在USER對執行某個事件時
回傳一個資訊給USER詢問是否要再向下執行
這時我們可以拋出一個視窗給USER決定與選擇

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
TITLEBAR  = '確認視窗'
 TEXT_QUESTION    = '確認是否執行'
START_COLUMN    = 25
START_ROW      = 6
   IMPORTING
ANSWER        = L_IO
   EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS      = 2
    .
  IF L_IO = '1'.
    PERFORM TRANSFER_DATA.
  ENDIF.
  IF L_IO = '2'.
    MESSAGE S001(00) WITH '已終止傳送...'.
  ENDIF.

2009年11月10日 星期二

BAPI_GOODSMVT_CREATE

庫存盤點在作SCAN BARCODE之後依盤虧盤盈的結果依相同的PLANTStorage Location BY BATCH 去作311 Movement
使用BAPI_GOODSMVT_CREATE 來處理異動
基本結構為六項:Headergm_codegm_head_retmat_docgm_itemreturn


REPORT  ZBEN_AUTO_GT.
************************************************************************
* Data type definition segment
************************************************************************
*Header
DATA: GM_HEADER LIKE BAPI2017_GM_HEAD_01.
*GM_code
DATA: BEGIN OF GM_CODE.
    INCLUDE STRUCTURE BAPI2017_GM_CODE.
DATA: END OF GM_CODE.
*GM_head_ret
DATA: BEGIN OF GM_HEADRET.
    INCLUDE STRUCTURE BAPI2017_GM_HEAD_RET.
DATA: END OF GM_HEADRET.
*Mat_doc
DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.
*GM_item
DATA: BEGIN OF GM_ITEM OCCURS 100.
    INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.
DATA: END OF GM_ITEM.
*Return Msg
DATA: BEGIN OF ERRMSG OCCURS 10.
    INCLUDE STRUCTURE BAPIRET2.
DATA: END OF ERRMSG.

************************************************************************
* Selection screen definition segment
************************************************************************
PARAMETERS: P_MATNR LIKE MCHB-MATNR OBLIGATORY.
PARAMETERS: P_WERKS LIKE MCHB-WERKS OBLIGATORY.
PARAMETERS: P_LGORT LIKE MCHB-LGORT OBLIGATORY.

************************************************************************
* Main program entry
************************************************************************
**Header
GM_HEADER-PSTNG_DATE = '20091031'. "SY-DATUM.
GM_HEADER-DOC_DATE   = '20091031'. "SY-DATUM.
** IF PACK_NO NE SPACE.
*    GM_HEADER-REF_DOC_NO = POITEM-PACK_NO "DELIVER NOTE - GR
*    GM_HEADER-HEADER_TXT = POITEM-PACK_NO " FOR GT
** ENDIF.
**Code
GM_CODE-GM_CODE = '04'.
**Item
GM_ITEM-MATERIAL = ' 2C P 906011A F001'.
GM_ITEM-PLANT = 1000.
GM_ITEM-STGE_LOC = ' 14A 1'.
GM_ITEM-BATCH = ' 5M C1680002'.
GM_ITEM-MOVE_TYPE = '311'.
GM_ITEM-MVT_IND = ''.
GM_ITEM-ENTRY_QNT = 2.
GM_ITEM-ENTRY_UOM = 'EA'.
GM_ITEM-MOVE_STLOC = ' 1A 01'.
GM_ITEM-NO_TRANSFER_REQ = 'X'.
APPEND GM_ITEM.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER    = GM_HEADER
GOODSMVT_CODE = GM_CODE   "Transfer posting
*   IMPORTING
*    GOODSMVT_HEADRET = GM_HEADRET
*    MATERIALDOCUMENT = MAT_DOC
*    MATDOCUMENTYEAR   =
  TABLES
GOODSMVT_ITEM = GM_ITEM
RETURN     = ERRMSG
  EXCEPTIONS
OTHERS     = 1.

IF ERRMSG[] IS INITIAL.
  REFRESH: GM_ITEM, ERRMSG.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
  WAIT = 'X'.
ELSE.
*  MESSAGE = ERRMSG-MESSAGE.
  EXIT.
ENDIF.

2009年11月7日 星期六

ALV自訂工具按鈕控制

於ALV的STATUS SET內新增一個自訂的按鈕設定好圖示與回傳CODE
在EVENT這邊呼叫
並讀取 RT_EVENTS的KEY值為SLIS_EV_USER_COMMAND傳回的CODE
這時如果有值時..於內編寫程式要作那些事件

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
  I_LIST_TYPE = 0
    IMPORTING
  ET_EVENTS   = RT_EVENTS.
  READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND
   INTO LS_EVENT.
  IF SY-SUBRC = 0.

  ENDIF.

2009年11月2日 星期一

ALV架構

呼叫前必須先完成TYPE-POOLS與ALV的欄位宣告
再程式輸出時呼叫CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'來完成


*&---------------------------------------------------------------------*
*& Report  ZBEN_TEST01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZBEN_TEST01 .
************************************************************************
* TYPES and TYPE-POOLS *
************************************************************************
TYPE-POOLS: SLIS.
************************************************************************
* Working Area & Internal Tables    *
************************************************************************
*ITAB
DATA: BEGIN OF GW_RPT,
    EBELN LIKE EKPO-EBELN,
    EBELP LIKE EKPO-EBELP,
  END OF GW_RPT.
DATA: GT_RPT LIKE GW_RPT OCCURS 0 WITH HEADER LINE.

*ALV
DATA: GT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,
  GT_SORTINFO  TYPE SLIS_T_SORTINFO_ALV,
  GT_EVENTS    TYPE SLIS_T_EVENT,
  G_REPID   TYPE SY-REPID,
  L_LAYOUT TYPE SLIS_LAYOUT_ALV,
  L_SELFIELD   TYPE SLIS_SELFIELD,
  SAV_SY_REPID TYPE SY-REPID,
  L_PRINT   TYPE SLIS_PRINT_ALV,
  GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: BEGIN OF SELTAB OCCURS 0.
    INCLUDE STRUCTURE RSPARAMS.
DATA: END OF SELTAB.
************************************************************************
* Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: P_EBELN LIKE EKKO-EBELN OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
************************************************************************
* START-OF-SELECTION Event *
************************************************************************
START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM PROCESS_DATA.
  PERFORM PRINT_DATA.

************************************************************************
* END-OF-SELECTION Event    *
************************************************************************
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&   Form  GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA.
  SELECT EBELN EBELP FROM EKPO
    INTO CORRESPONDING FIELDS OF TABLE GT_RPT
   WHERE EBELN = P_EBELN.
ENDFORM.     " GET_DATA
*&---------------------------------------------------------------------*
*&   Form  PROCESS_DATA
*&---------------------------------------------------------------------*
FORM PROCESS_DATA.
ENDFORM.     " PROCESS_DATA
*&---------------------------------------------------------------------*
*&   Form  PRINT_DATA
*&---------------------------------------------------------------------*
FORM PRINT_DATA.
  G_REPID = SY-REPID.
  PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
  PERFORM SORTINFO_INIT USING GT_SORTINFO[].
  PERFORM EVENTS_INIT   USING GT_EVENTS[].
  PERFORM LAYOUT_INIT   USING L_LAYOUT.
  PERFORM PRINT_INIT    USING L_PRINT.
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
   EXPORTING
    I_CALLBACK_PROGRAM    = G_REPID
    IT_FIELDCAT   = GT_FIELDCAT[]
    IT_SORT   = GT_SORTINFO[]
    IT_EVENTS     = GT_EVENTS
    IS_LAYOUT     = L_LAYOUT
    I_SAVE    = 'A'
    IS_PRINT = L_PRINT
   TABLES
    T_OUTTAB = GT_RPT.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.     " PRINT_DATA
*---------------------------------------------------------------------*
*    FORM fieldcat_inite    *
*---------------------------------------------------------------------*
FORM FIELDCAT_INIT USING IT_FIELDCATE TYPE SLIS_T_FIELDCAT_ALV.
  DATA: ST_FIELDCATE TYPE SLIS_FIELDCAT_ALV.
  ST_FIELDCATE-TABNAME = 'IT_RPT'.
  ST_FIELDCATE-FIELDNAME   = 'EBELN'.
  ST_FIELDCATE-SELTEXT_L   = '單號'.
  ST_FIELDCATE-OUTPUTLEN   = 10.
  ST_FIELDCATE-KEY = 'X'.
  APPEND ST_FIELDCATE TO IT_FIELDCATE.
  CLEAR  ST_FIELDCATE.
  ST_FIELDCATE-TABNAME = 'IT_RPT'.
  ST_FIELDCATE-FIELDNAME   = 'EBELP'.
  ST_FIELDCATE-SELTEXT_L   = '項次'.
  ST_FIELDCATE-OUTPUTLEN   = 10.
  ST_FIELDCATE-KEY = 'X'.
  APPEND ST_FIELDCATE TO IT_FIELDCATE.
  CLEAR  ST_FIELDCATE.
ENDFORM.
*---------------------------------------------------------------------*
*    FORM sortinfo_init     *
*---------------------------------------------------------------------*
FORM SORTINFO_INIT  USING IT_SORTINFOE TYPE SLIS_T_SORTINFO_ALV.
  DATA: ST_SORTE TYPE SLIS_SORTINFO_ALV.
ENDFORM.
*---------------------------------------------------------------------*
*    FORM events_init   *
*---------------------------------------------------------------------*
FORM EVENTS_INIT USING RT_EVENTS TYPE SLIS_T_EVENT.
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
   EXPORTING
    I_LIST_TYPE = 0
   IMPORTING
    ET_EVENTS   = RT_EVENTS.
  READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
   INTO LS_EVENT.
  IF SY-SUBRC = 0.
    MOVE 'TOP_OF_PAGE' TO LS_EVENT-FORM.
    MODIFY RT_EVENTS FROM LS_EVENT INDEX SY-TABIX.
  ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
*    FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
  L_SELFIELD = RS_SELFIELD.
ENDFORM.
*&---------------------------------------------------------------------*
*&   Form  LAYOUT_INIT
*&---------------------------------------------------------------------*
FORM LAYOUT_INIT USING P_L_LAYOUT TYPE SLIS_LAYOUT_ALV.
  P_L_LAYOUT-ZEBRA  = 'X'.
ENDFORM.     " LAYOUT_INIT
*&---------------------------------------------------------------------*
*&   Form  PRINT_INIT
*&---------------------------------------------------------------------*
FORM PRINT_INIT USING  P_L_PRINT TYPE SLIS_PRINT_ALV.
ENDFORM.     " PRINT_INIT

2009年10月20日 星期二

VA03 Enhancement Addon Field

想在VA01 VA02 VA03的畫面上加入一個欄位

這時先在TABLE VBAK APPEND一個新的結構

取得Object Key才能接下以下的動作
首先要找到的事情就是「User-Exit」
知道後才能再向下修改....

於前面的文章都已記錄過如何建立Table與Layout畫面了(不重覆介紹)


接下來要在Enhancement的Screen中作Layout 增加新欄位

取得Screen在裏面加入例如 ( Sales Document Header User Exit Header )

生成的程式 於PROCESS BEFORE OUTPUT.作MODULE編寫


程式中需要作控制VA01 VA02是Input模式

VA03則是Display模式

case vbak-vbtyp.
when 'C' or 'I' or 'G'.
CASE t180-trtyp.
WHEN 'H' or 'V'. "Create or Change mode
Loop at screen.
If screen-group1 = 'GP1'.
Screen-input = 1.
Modify screen.
else.
Screen-active = 0.
Modify screen.
Endif.
Endloop.

WHEN 'A'. " Display mode
Loop at screen.
If screen-group1 = 'GP1'.
Screen-input = 0.
Modify screen.
else.
Screen-active = 0.
Modify screen.
ENDIF.
ENDLOOP.
ENDCASE.

when others.
Loop at screen.
If Screen-group1 = 'GP1'.
Screen-active = 0.
Modify screen.
ENDIF.
ENDLOOP.

ENdcase.

2009年9月15日 星期二

Bapi Create SO V2

發現 BAPI_SALESORDER_CREATEFROMDATA 建立出來的資料太多限制與事後修改
於是在改用了BAPI_SALESORDER_CREATEFROMDAT2
這部份在Schedule Line 與 Condition有很好的控制
回傳值的部份也比 BAPI_SALESORDER_CREATEFROMDATA 清楚的很多
運用上還可以把長文的部份輸入在內...

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
    EXPORTING
ORDER_HEADER_IN  = ORDER_HEADER_IN
ORDER_HEADER_INX = ORDER_HEADER_INX
SALESDOCUMENTIN  = L_SALESDOCUMENT
*     testrun   = 'X'
    IMPORTING
SALESDOCUMENT    = L_VBELN
    TABLES
RETURN    = LI_RETURN
ORDER_ITEMS_IN    = ORDER_ITEMS_IN
ORDER_ITEMS_INX   = ORDER_ITEMS_INX
ORDER_SCHEDULES_IN   = ORDER_SCHEDULES_IN
ORDER_SCHEDULES_INX  = ORDER_SCHEDULES_INX
ORDER_PARTNERS    = ORDER_PARTNERS
ORDER_CONDITIONS_IN  = ORDER_CONDITIONS_IN.
ORDER_CONDITIONS_INX = ORDER_CONDITIONS_INX.
<code>


但真正控制還是把正確的資訊傳達給 BAPI_SALESORDER_CREATEFROMDAT2

重點分為五項:header、item、Schedule、Condition、Pantner

* Sales document type
  ORDER_HEADER_IN-DOC_TYPE   = WA_OPENSO-AUART.  
  ORDER_HEADER_IN-SALES_ORG  = WA_OPENSO-VKORG.
  ORDER_HEADER_IN-DISTR_CHAN = WA_OPENSO-VTWEG.
  ORDER_HEADER_IN-DIVISION =   WA_OPENSO-SPART.
  ORDER_HEADER_IN-SALES_GRP = WA_OPENSO-VKGRP.
  ORDER_HEADER_IN-SALES_OFF = WA_OPENSO-VKBUR.
  ORDER_HEADER_IN-REQ_DATE_H = WA_OPENSO-VDATU.
  ORDER_HEADER_IN-PURCH_NO_C = WA_OPENSO-BSTNK.
  ORDER_HEADER_IN-CURRENCY   = WA_OPENSO-WAERK.
  ORDER_HEADER_IN-PMTGAR_PRO = WA_OPENSO-PMTGAR_PRO.
  ORDER_HEADER_IN-DOC_NUM_FI = WA_OPENSO-DOC_NUM_FI.
  ORDER_HEADER_IN-INCOTERMS1  = WA_OPENSO-INCO1.
  ORDER_HEADER_IN-INCOTERMS2  = WA_OPENSO-INCO2.
  APPEND ORDER_HEADER_IN.

****項目資料***************************
  ORDER_ITEMS_IN-ITM_NUMBER = WA_OPENSO-POSNR.
  ORDER_ITEMS_IN-MATERIAL =  WA_OPENSO-MATNR.
  ORDER_ITEMS_IN-BATCH    = WA_OPENSO-CHARG.
  ORDER_ITEMS_IN-PLANT = WA_OPENSO-WERKS.
  ORDER_ITEMS_IN-STORE_LOC = WA_OPENSO-LGORT.
  ORDER_ITEMS_IN-PURCH_NO_C = WA_OPENSO-PURCH_NO_C.
  ORDER_ITEMS_IN-DLVSCHDUSE = WA_OPENSO-DLVSCHDUSE.
  APPEND ORDER_ITEMS_IN.
****Schedule Line資料***************************
  ORDER_SCHEDULES_IN-ITM_NUMBER = WA_OPENSO-POSNR.
  ORDER_SCHEDULES_IN-REQ_DATE = WA_OPENSO-REQ_DATE.
  ORDER_SCHEDULES_IN-REQ_QTY = WA_OPENSO-KWMENG.
  APPEND ORDER_SCHEDULES_IN.


****CONDITIONS資料***************************
  ORDER_CONDITIONS_IN-ITM_NUMBER  = WA_OPENSO-POSNR.
  ORDER_CONDITIONS_IN-COND_TYPE   = 'ZPR0'.
  ORDER_CONDITIONS_IN-COND_VALUE  = WA_OPENSO-KBETR.
  APPEND ORDER_CONDITIONS_IN.

****Partner資料***************************
**賣方  SP
  CLEAR ORDER_PARTNERS.
  ORDER_PARTNERS-PARTN_ROLE = 'AG'.
  ORDER_PARTNERS-PARTN_NUMB = WA_OPENSO-KUNAG.
  APPEND ORDER_PARTNERS .
*出貨對象  SH
  CLEAR ORDER_PARTNERS.
  ORDER_PARTNERS-PARTN_ROLE = 'WE'.
  ORDER_PARTNERS-PARTN_NUMB = WA_OPENSO-KUNWE.
  APPEND ORDER_PARTNERS.
*"發票收受人 RE
  CLEAR ORDER_PARTNERS.
  ORDER_PARTNERS-PARTN_ROLE = 'RE'.
  ORDER_PARTNERS-PARTN_NUMB = WA_OPENSO-KUNWE.
  APPEND ORDER_PARTNERS.
*付款方  PY
  CLEAR ORDER_PARTNERS.
  ORDER_PARTNERS-PARTN_ROLE = 'RG'.
  ORDER_PARTNERS-PARTN_NUMB = WA_OPENSO-KUNRG.
  APPEND ORDER_PARTNERS.
*End Customer  Z1
  CLEAR ORDER_PARTNERS.
  ORDER_PARTNERS-PARTN_ROLE = 'Z1'.
  ORDER_PARTNERS-PARTN_NUMB = WA_OPENSO-KUNZ1.
  APPEND ORDER_PARTNERS.

2009年9月11日 星期五

擔保品到期通知

要建立一個當擔保品額度低於某個值時可以通知負責業務人員
包含一些G/L Accont And S G/L Indicator的部份
流程分析:
1.可至BSID內取得客戶擔保品額度的G/L Accont
   將擔保品分為二個暫存區
   一個為擔保品額度   另一個為取消額度
   將擔保品額度 減去 取消額度
2.至KNVP取得客戶編號回串員工編號
   得到員工編號後回串員工電子郵件
3.當擔保品額度過小時寄發郵件給該負責業務人員
   不建議發於登入SAP帳號內的業務工作場所(內部郵件)..
   應發於員工個人電子郵件信箱(例如Outlook.Note等)

2009年9月10日 星期四

特性值

我用了二個方法都可以取得我想要的值






方法一:
尋找方法由AUSP-OBJEK = MCH1-CUOBJ_BM 取得AUSP-ATWRT (特性值)







TableMCH1















方法二:
1. TABLE INOB INOB-OBTAB = MCH1(TABLE而定)
2. INOB-CUOBJ = MCH1-CUOBJ_BM
3. 呼叫Functionkey值取得INOB-OBJEK = MCH1-MATNR + MCH1-CHARG (MATNR要補空格)






4. Call Function 'CLAF_CLASSIFICATION_OF_OBJECTS'














2009年9月1日 星期二

BAPI Create SO


Excel建入好初始資料後整批開立
這時發現所有的輸入條件都有key的情況下就是無法開立SO
經查證後為Excel上傳格式的問題..這部份要特別小心

我呼叫
BAPI_SALESORDER_CREATEFROMDATA來完成這項工作

但在使用這支BAPI時發生了一個小問題...
後來進Debug模式查後發現在PartnerKUNNR並無補0造成無法開立SO解決的方法為在Excel上傳時務必以Type C上傳至程式減少錯誤發生
在呼叫BAPI時最好能先查看BAPI內的TYPE是宣告什麼

2009年8月12日 星期三

建立Customer Account Group

如何在T-CODE:VD01下建立一組新的Account Group
T-CODE:OVT0
1.進入後 New Entries 輸入Account Group and Name
2.在Tab General Data中 選擇輸入的Number Range
3.在Sales And Distribution Data選擇PartnDet.Proc.的Partner Determination Procedure
4.按下儲存作建立便完成了

這時在VD01下的Account Group的下拉式選單中就有新的一組Account Group
輸入要建立的Customer編碼
接下來的部份是設定該Account Group 屬於那個Sales Organization、Distribution Channel、Division
完成整個Customer:General Data

2009年8月6日 星期四

貨齡與庫存計算

先前導入某家的案子作到「每日庫存計算與最久貨齡日期與數量的計算」
當初導入為每日自動申請物料請購單資料交換
當某些廠商料號數量不足時會與某個廠商有一個EDI文件交換
自動將資料傳輸給予對方廠商...

但SAP的系統庫存值存入Table是以異動後的月作儲存
要計算到本月當日 又不便把物料主檔內的資料全部取出
造成程式運算過久與系統資料太占內存

解決流程:
1.每日庫存計算
   可由MBEW取得最後一次異動月庫存量來得到本月異動前庫存
   再加減本年度月份的物料文件去計算出 每日庫存值

2.最久貨齡日期與數量
   要建立二個暫存區
   一個為存放物料文件稱作A 另一個為該物料的最久庫存量暫時稱為B
   要先由物料主檔取得該物料的最久庫存量存放至B
   然後去滾算例年來的物料文件的負向異動去減B數量
   當B - A < 0時 開始加 上 A的正向異動文件
   直到A所有的負向文件都加文時...就EXIT跳出LOOP
   這時取到得值就是該料號的最久庫存日期與數量

2009年7月3日 星期五

2009年5月10日 星期日

SD相關名詞解釋

SD模組名詞解釋:
======================================================================
Available To Promice check 可用量查核
bill-to party 發票對象
Bonded Warehouse 保稅倉庫
Configured To Order 客戶化生產
delayed delivery 延期交貨
Delivery 交貨
Delivery Note 提貨單
delivery scheduling 交貨排程
distribution channel 銷售通道
Divisions 部門
document flow 檔流程
Electronic Data Interchange 電子資料交換
Forecast 預測
forwarding agent 貨運代理
Free Of Charge 免費
Goods Issue 出貨
inquiry 詢價
Loading point 裝載點
Plan Independent Requirement 獨立需求
packing 裝貨
Partial delivery 分批交貨
partner 合貨人
payer 付款人
picking 撿貨
pricing conditions 價格
quotations 報價單
Re-order Point 重定貨點
Request for Quotation 詢價單
Return Material Authorization 退料確認
Sales and Distribution 分銷
sales area 銷售區域
sales documents 銷售文檔
Sales Information System 銷售資訊系統
Sales Order 訂單
sales organizations 銷售組織
schedule line 專案清單種類
scheduling agreement 計劃性合約
shipping 出貨
shipping point 交貨點
Special Order Request 特殊訂單需求
Shipping units 交貨計量單位
ship-to party 交貨對象
sold-to party 買方
surcharges/discounts 追加/折扣
Work In Process 在製品



銷售相關的組織結構:
======================================================================
1銷售組織Sales organization
2分銷管道Distribution channel
3產品組Division
4銷售區域Sales area
5銷售辦公室Sales office
6銷售組Sales group
7銷售人員Salesperson
8工廠Plant
9庫位Storage location

銷售相關的組織結構:
1銷售組織Sales organization
銷售組織:
一個銷售組織代表一個合法的銷售實體
一個銷售組織只能分配給一個公司代碼(一個公司代碼可以有多個銷售組織)
一個銷售組織可以分配給多個工廠
每個銷售組織有自己的主資料,包括客戶主資料、物料主資料以及條件記錄
2分銷管道Distribution channel
分銷管道:
在一個銷售組織中,客戶可以通過一個或多個分銷管道獲得服務
可以為銷售組織和分銷管道的組合定義不同的主資料
3產品組Division
產品組:
對某一產品組,可以執行統計分析或制定市場戰略
4銷售區域Sales area
銷售區域:
銷售區域是 銷售組織/分銷管道/產品組 的組合
銷售訂單(Sales order),交貨單(Delivery)
開票(Billing)都分配到某一銷售區域
所有的銷售流程都發生在某一特定的銷售區域
相關的主資料經常維護在銷售區域層
應該儘量保持銷售區域組織結構越簡單越好
5銷售辦公室Sales office
銷售辦公室:
銷售辦公室可以分配給一個或多個銷售區域

6銷售組Sales group
銷售組:
可為每一個產品組或分銷管道定義一個銷售組
銷售組分配給銷售辦公室
7銷售人員Salesperson
銷售人員:
一個銷售組包括一定數量的銷售員。
8工廠Plant
工廠、庫位:
每個工廠只能分配一個唯一的公司代碼
對每一個交貨給客戶的工廠,必須在SD的配置中將它定義為
delivering plant;在銷售流程中,delivering plant
首先需要check庫存,然後才提供交付
9庫位Storage location
分配銷售組織和工廠:
一個銷售組織可分配多個工廠,一個工廠可分配多個銷售組織(多對多關係)
銷售組織還可以分配跨公司代碼的工廠









學習參考引用來自於http://space.itpub.net/11037

2009年5月6日 星期三

批次特性值 T-Code、Function

T-Code: MSC3N
Function:

查詢批號特性質CLAF_CLASSIFICATION_OF_OBJECTS

2009年3月14日 星期六

AutoMail

呼叫這個 SO_NEW_DOCUMENT_SEND_API1 來達成寄送 Excel
在處理的過程依設定的不同,要注意Unicode的名稱與抬頭

有了可寄送檔案的方法後
還需要有一個接寄送給誰的準則
可由 SO_DLI_LIST_READ_XDL 來取得設定好的Mail Group
接著由 SO_DLI_READ 處理傳送Maril Gropu中的Email Account的方法...
並設定寄送Mail的主旨

2009年3月6日 星期五

BOM T-Code、Table、Function

T-Code: CS03
Table: MAST、STKO、STPO
Function:

展開與特性相關的特定款號的BOMCS_BOM_EXPL_ KND_V1
只展開BOM的涵數CS_BOM_EXPL_MAT_V2
反查BOMCS_WHERE_USED_MAT

2009年1月27日 星期二

查星期幾

在某些情況下USER希望系統直接帶出某一天是星期幾?
這是自已編寫運算有28 29 30 31的天數月份不易計算
此時可以呼叫一個Function來達成

CALL FUNCTION 'DAY_IN_WEEK'
  EXPORTING
    datum = sy-datum
IMPORTING
   WOTNR = c.

2009年1月26日 星期一

金額外顯

在SAP的金額與幣別有不同於一般的儲存方式
在不同的幣別時會有不同的轉換率
這時在SD或是FI的部份常常會用的到金額欄位就必須轉換
可用一個Call Function來達成單位的轉換

*&---------------------------------------------------------------------*
*&   Form  GET_CURRENCY
*&---------------------------------------------------------------------*
FORM GET_CURRENCY  USING    P_WAERS
   CHANGING P_FACTOR.
  CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
    EXPORTING
  CURRENCY   = P_WAERS
    IMPORTING
  FACTOR     = P_FACTOR
    EXCEPTIONS
  TOO_MANY_DECIMALS = 1
  OTHERS     = 2.
ENDFORM.     " GET_CURRENCY

2009年1月24日 星期六

庫存By Batch轉換數量與價格


     CALL FUNCTION 'MURC_ALL_BATCH_FACTORS_NEW'
       EXPORTING
         if_matnr                  = mkopf-matnr
         IF_KZDCH                  = chargen_ebene
         IF_MEINS                  = mkopf-basme
         if_meinh                  = if_meinh1
       tables
         it_sel_charg              = ms_charg_bestand[]
         it_sel_werks              = ms_werks_bestand[]
         it_mcha_objek             = gt_mcha_objek
         it_mch1_objek             = gt_mch1_objek
         it_objek                  = gt_objek
         et_conv_tab               = lt_conv_tab
       EXCEPTIONS
         NOT_FOUND                 = 1
         NO_BATCH_CONVERSION       = 2
         OTHERS                    = 3.