您的位置:首页 > 其它

SAP客户标准信用额度修改和创建

2015-09-17 10:01 435 查看
好吧,前提要说一下,信贷是到客户的信贷范围级别的。

FUNCTION zfm_credit.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      T_TAB STRUCTURE  ZJKS001 OPTIONAL
*"      T_TAB_I STRUCTURE  ZJKS002 OPTIONAL
*"----------------------------------------------------------------------

DATA:gs_zsds001 TYPE zsds001.
DATA:gs_zsds002 TYPE zsds002.
DATA:lv_func TYPE char50."结构ID
DATA:s_tab TYPE zjks001."表头结构
DATA:s_tab_i TYPE zjks002."表体结构
DATA:gt_table TYPE ddfields,
gs_table TYPE dfies.
DATA:gs_knka TYPE knka,
gs_knkk TYPE knkk,
gv_knka TYPE knka,
gv_knkk TYPE knkk,
gv_upd  TYPE cdpos-chngind.
DATA:gv_name1 TYPE kna1-name1.
DATA:gt_kna1 TYPE TABLE OF zsknb1,
gs_kna1 TYPE          zsknb1.
DATA:lv_line TYPE i.

DATA:gs_zsds003 TYPE zsds003.

DATA:gt_message TYPE TABLE OF bdcmsgcoll.
DATA:gs_message TYPE bdcmsgcoll.
DATA:lv_str TYPE string.
DATA:lv_int TYPE i.

FIELD-SYMBOLS:  <dyn_wa>,"表头
<dyn_la>,"表体
<dyn_field>."字段
DATA lv_col_sting TYPE string .

DEFINE mesgadd."返回消息赋值
S_TAB-FIELDNAME = &1.
S_TAB-VALUE = &2.
IF &2 is not INITIAL .
APPEND S_TAB TO T_TAB.
ENDIF.
END-OF-DEFINITION.

DEFINE mesgaddi."返回消息赋值
lv_col_sting = &1 .
CONCATENATE &2 lv_col_sting into S_TAB_I-FIELDNAME .
SHIFT S_TAB_I-FIELDNAME RIGHT DELETING TRAILING space.
CONDENSE S_TAB_I-FIELDNAME NO-GAPS.
S_TAB_I-VALUE = &3.
CONDENSE S_TAB_I-VALUE NO-GAPS.
APPEND S_TAB_I TO T_TAB_I.
END-OF-DEFINITION.

CLEAR:gs_zsds001,gs_zsds002,lv_func,s_tab,gt_table[],gs_zsds003,lv_str,gt_message.

READ TABLE t_tab INTO s_tab WITH KEY fieldname = 'FUNCTION'.
IF sy-subrc = 0.
lv_func = s_tab-value.
ELSE.
REFRESH:t_tab.
mesgadd:'RETURN' 'E',
'MESSAGE' '未指定函数!'.
RETURN.
ENDIF.

CASE lv_func.
WHEN 'CREDIT02'.
ASSIGN gs_zsds003 TO <dyn_wa>."表头结构
WHEN OTHERS.
ENDCASE.

LOOP AT t_tab INTO s_tab."表头数据装换
ASSIGN COMPONENT s_tab-fieldname OF STRUCTURE <dyn_wa> TO <dyn_field>.
IF sy-subrc = 0.
<dyn_field> = s_tab-value.
IF s_tab-fieldname = 'KLIMK'.
lv_int = s_tab-value.
gs_zsds003-klimk = lv_int.
ENDIF.
ENDIF.
ENDLOOP.

REFRESH:t_tab."清空表头

CASE lv_func.

WHEN 'CREDIT02'.

IF gs_zsds003-ctlpc IS INITIAL.
gs_zsds003-ctlpc = 'Z01'.
ENDIF.
CONCATENATE 'Z' gs_zsds003-kkber INTO gs_zsds003-kkber.
CONDENSE gs_zsds003-kkber NO-GAPS.
IF gs_zsds003-waers IS INITIAL.
gs_zsds003-waers = 'CNY'.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input  = gs_zsds003-kunnr
IMPORTING
output = gs_zsds003-kunnr.

SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_knkk
FROM knkk WHERE kunnr = gs_zsds003-kunnr AND kkber = gs_zsds003-kkber.
IF sy-subrc = 0.
gv_upd = 'U'.
ELSE.
gv_upd = 'I'.
ENDIF.

SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_knka
FROM knka WHERE kunnr = gs_zsds003-kunnr.

gs_knkk-kunnr = gs_zsds003-kunnr.
gs_knkk-knkli = gs_zsds003-kunnr.
gs_knkk-kkber = gs_zsds003-kkber.
gs_knkk-klimk = gs_zsds003-klimk.
gs_knkk-erdat = sy-uname.
gs_knkk-ctlpc = gs_zsds003-ctlpc.

CALL FUNCTION 'CREDITLIMIT_CHANGE'
EXPORTING
i_knka   = gs_knka
i_knkk   = gs_knkk
upd_knka = '0'
upd_knkk = gv_upd
*         XNEUA    = ' '
*         XREFL    = ' '
yknka    = gv_knka
yknkk    = gv_knkk.
IF sy-subrc = 0.
mesgadd:'RETURN' 'S',
'MESSAGE' '信贷更新成功!'.
ELSE.
mesgadd:'RETURN' 'E',
'MESSAGE' '信贷更新失败!'.
ENDIF.

WHEN OTHERS.
ENDCASE.

ENDFUNCTION.


结构,自己参考那几个表就晓得了。。。主要说的是这个函数的用法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: