SAP ABAP OVS 開發步驟
步骤1:在component里引用OVS component
DEPT_OVS WDR_OVS System Component for OVS Input Help
OVS WDR_OVS System Component for OVS Input Help
步骤2:在context 里的对应字段比如Z_CENTER_CD 的属性input help mode改为object value selector 在OVS component usage里选择你刚才添加的OVS 名字
步骤3:
在对应的view里引用刚才的OVS component
步骤4:增加OVS事件EVENT hander
步骤5:修改自动生成的代码
*****申請人事件*********
method OVS_APMAN_A .
* TYPES:
* BEGIN OF LTY_STRU_INPUT, " 弹出框用于输入查询
* KUNNR_TR TYPE LIFNR,
* KUNNRTXT TYPE NAME1_GP,
* END OF LTY_STRU_INPUT.
****************************表格的标签文本****************************
TYPES:
BEGIN OF LTY_STRU_LIST,
APMAN TYPE YSHA_APMAN, " 申請人工號
APMANTX TYPE YSHA_APMANTX, " 申請人名稱
APBUKRS TYPE YSHH_CMPCD, " 公司代碼
APBUKRSTX TYPE YSHH_CMPNAM, " 公司名稱
END OF LTY_STRU_LIST.
TYPES:
BEGIN OF LTY_WORK_LIST,
EMPCODE TYPE YSHH_EMPCD, " 申請人工號
FULLNAME TYPE YSHH_FULLNAM, " 申請人名稱
COMPCODE TYPE YSHH_CMPCD, " 公司代碼
COMPNAME TYPE YSHH_CMPNAM, " 公司名稱
END OF LTY_WORK_LIST.
* DATA: LS_SEARCH_INPUT TYPE LTY_STRU_INPUT,"输入条件
DATA: LS_SELECT_LIST TYPE LTY_STRU_LIST, " 最終結構
LT_SELECT_LIST TYPE STANDARD TABLE OF LTY_STRU_LIST,
LS_SEARCH_LIST TYPE LTY_WORK_LIST, " 臨時結果
LT_SEARCH_LIST TYPE STANDARD TABLE OF LTY_WORK_LIST,
LS_TEXT TYPE WDR_NAME_VALUE,
LT_LABEL_TEXTS TYPE WDR_NAME_VALUE_LIST, " 输入条件的标签文本
LT_COLUMN_TEXTS TYPE WDR_NAME_VALUE_LIST, " 表格列头文本
LS_EFORMINFO TYPE YSHA_EFORMVIEW, " 畫面信息結構
LV_APMAN TYPE YSHA_APMAN, " 申請人工號
LV_APBUKRS TYPE YSHH_CMPCD. " 公司代碼
* LT_RANGE_APMAN TYPE RANGE OF STRING, " 申請人參數RANGE FOR SQL
* LS_RANGE_APMAN LIKE LINE OF LT_RANGE_APMAN, " 申請人參數RANGE
* LT_RANGE_APBUKRS TYPE RANGE OF STRING, " 公司代碼參數RANGE FOR SQL
* LS_RANGE_APBUKRS LIKE LINE OF LT_RANGE_APBUKRS. " 公司代碼參數RANGE
* FIELD-SYMBOLS: <LS_QUERY_PARAMS> TYPE LTY_STRU_INPUT,
FIELD-SYMBOLS: <LS_SELECTION> TYPE LTY_STRU_LIST,
<LS_TABLE> TYPE STANDARD TABLE,
<LS_VALUE> TYPE ANY.
CASE OVS_CALLBACK_OBJECT->PHASE_INDICATOR.
WHEN IF_WD_OVS=>CO_PHASE_0.
LS_TEXT-NAME = `APMAN`.
LS_TEXT-VALUE = '員工工號'.
INSERT LS_TEXT INTO TABLE LT_COLUMN_TEXTS.
LS_TEXT-NAME = `APMANTX`.
LS_TEXT-VALUE = '員工姓名'.
INSERT LS_TEXT INTO TABLE LT_COLUMN_TEXTS.
LS_TEXT-NAME = `APBUKRS`.
LS_TEXT-VALUE = '公司代碼'.
INSERT LS_TEXT INTO TABLE LT_COLUMN_TEXTS.
LS_TEXT-NAME = `APBUKRSTX`.
LS_TEXT-VALUE = '公司名稱'.
INSERT LS_TEXT INTO TABLE LT_COLUMN_TEXTS.
OVS_CALLBACK_OBJECT->SET_CONFIGURATION(
LABEL_TEXTS = LT_LABEL_TEXTS
COLUMN_TEXTS = LT_COLUMN_TEXTS
WINDOW_TITLE = '申請人输入帮助' " 彈出窗口抬頭信息
TABLE_HEADER = '申請人输入帮助'). " TABLE抬頭信息
WHEN IF_WD_OVS=>CO_PHASE_2.
LS_EFORMINFO = WD_THIS->GET_EFORMINFO( ). " 畫面信息取得
LV_APMAN = LS_EFORMINFO-APMAN. " 申請人工號
LV_APBUKRS = LS_EFORMINFO-APBUKRS. " 公司代碼
CALL FUNCTION 'YSHA_W001_APMAN_VAGUE'
EXPORTING
APMAN = LV_APMAN
APBUKRS = LV_APBUKRS
TABLES
LT_SEARCH_LIST = LT_SEARCH_LIST
.
"***********************結構轉換***********************
LOOP AT LT_SEARCH_LIST INTO LS_SEARCH_LIST.
LS_SELECT_LIST-APMAN = LS_SEARCH_LIST-EMPCODE. " 申請人工號
LS_SELECT_LIST-APMANTX = LS_SEARCH_LIST-FULLNAME. " 申請人名稱
LS_SELECT_LIST-APBUKRS = LS_SEARCH_LIST-COMPCODE. " 公司代碼
LS_SELECT_LIST-APBUKRSTX = LS_SEARCH_LIST-COMPNAME. " 公司名稱
APPEND LS_SELECT_LIST TO LT_SELECT_LIST. " TABLE做成
ENDLOOP.
OVS_CALLBACK_OBJECT->SET_OUTPUT_TABLE( OUTPUT = LT_SELECT_LIST ).
WHEN IF_WD_OVS=>CO_PHASE_3.
ASSIGN OVS_CALLBACK_OBJECT->SELECTION->* TO <LS_SELECTION>.
IF <LS_SELECTION> IS ASSIGNED.
OVS_CALLBACK_OBJECT->CONTEXT_ELEMENT->SET_STATIC_ATTRIBUTES(
STATIC_ATTRIBUTES = <LS_SELECTION> ).
ENDIF.
WD_THIS->I_SET_USERINFO( ). "設置部門代碼、部門名稱、職務代碼、職務名稱
ENDCASE.
endmethod.
定期更新SAP知识
个人微信公众号: