常规化的销售订单增强
步骤如下:
1.VBAK附加结构 ZSVBAK_EH01
2.SE38->SAPMV45A->8309屏幕
(1).画屏幕
(2).写代码
PROCESS BEFORE OUTPUT.
* Verarbeitung vor der Ausgabe
*{ INSERT SD1K900028 1
MODULE ZZVBAK_PBO.
*
*} INSERT
PROCESS AFTER INPUT.
*{ INSERT SD1K900028 1
MODULE ZZVBAK_PAI.
FIELD vbak-zlesa MODULE ZGET_ZLESA_TEXT ON REQUEST.
CHAIN.
FIELD vbak-zlesa.
ENDCHAIN.
FIELD vbak-zpjdn MODULE ZGET_ZPJDN_TEXT ON REQUEST.
CHAIN.
FIELD vbak-zpjdn.
ENDCHAIN.
PROCESS ON VALUE-REQUEST.
FIELD VBAK-ZLESA
MODULE ZZVBAK_ZLESA_VALUES.
*} INSERT
* Verarbeitung nach der Eingabe
MODULE ZZVBAK_PBO OUTPUT.
TABLES:PROJ.
" 营销助理描述
IF VBAK-ZLESA IS NOT INITIAL.
SELECT SINGLE BEZEI INTO TVGRT-BEZEI FROM TVGRT
WHERE VKGRP = VBAK-ZLESA
AND SPRAS = SY-LANGU.
ENDIF.
"项目号描述
IF vbak-zpjdn IS NOT INITIAL.
data:lv_pspid1(24) type c.
clear lv_pspid1.
call function 'CONVERSION_EXIT_ABPSN_INPUT'
exporting
input = vbak-zpjdn
IMPORTING
OUTPUT = lv_pspid1.
SELECT SINGLE post1 INTO proj-post1 FROM proj WHERE PSPID = lv_pspid1.
ENDIF.
LOOP AT SCREEN.
IF SCREEN-NAME = 'VBAK-ZCRMN' OR SCREEN-NAME = 'VBAK-ZPJDN' OR SCREEN-NAME = 'VBAK-ZLESA'
OR SCREEN-NAME = 'VBAK-ZZBBL' OR SCREEN-NAME = 'VBAK-ZYGDZ' OR SCREEN-NAME = 'VBAK-ZZWBS'
OR SCREEN-NAME = 'VBAK-ZXXLY' OR SCREEN-NAME = 'VBAK-ZYHTJE' OR SCREEN-NAME = 'VBAK-ZQCYHK'.
IF SY-TCODE = 'VA03' OR SY-TCODE = 'VA23'.
SCREEN-INPUT = '0'.
ELSE.
SCREEN-INPUT = '1'.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE ZGET_ZLESA_TEXT INPUT.
IF vbak-zlesa IS NOT INITIAL.
SELECT SINGLE bezei INTO tvgrt-bezei FROM tvgrt
WHERE vkgrp = vbak-zlesa
AND spras = sy-langu.
ENDIF.
ENDMODULE.
MODULE ZGET_ZPJDN_TEXT INPUT.
IF vbak-zpjdn IS NOT INITIAL.
data:lv_pspid(18) type c.
CONCATENATE vbak-zpjdn+0(1) vbak-zpjdn+2(7) '000000000' into lv_pspid. "'000000000' into lv_pspid.
SELECT SINGLE post1 INTO proj-post1 FROM proj WHERE PSPID = lv_pspid.
ENDIF.
ENDMODULE.
MODULE ZZVBAK_ZLESA_VALUES INPUT.
TYPES:BEGIN OF ty_zlesa,
zlesa TYPE ze_zlesa,
bezei TYPE bezei20,
END OF ty_zlesa.
DATA:lt_zlesa TYPE STANDARD TABLE OF ty_zlesa.
DATA:lt_return_tab TYPE STANDARD TABLE OF ddshretval,
ls_return_tab TYPE ddshretval,
lt_map TYPE STANDARD TABLE OF dselc,
ls_map TYPE dselc.
ls_map-fldname = 'ZLESA'.
ls_map-dyfldname = 'VBAK-ZLESM'.
APPEND ls_map TO lt_map.
CLEAR:ls_map.
ls_map-fldname = 'BEZEI'.
ls_map-dyfldname = 'TVGRT-BEZEI'.
APPEND ls_map TO lt_map.
CLEAR:ls_map.
SELECT tvgrt~vkgrp AS zlesa bezei
FROM tvgrt INNER JOIN tvbvk ON tvgrt~vkgrp = tvbvk~vkgrp
INTO CORRESPONDING FIELDS OF TABLE lt_zlesa
WHERE tvbvk~vkbur = vbak-vkbur
AND spras = sy-langu.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* ddic_structure = ''
retfield = 'ZLESA'
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'VBAK-ZLESA'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
callback_program = sy-repid
callback_form = 'FRM_BEZEI_FORM '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = lt_zlesa
* FIELD_TAB =
return_tab = lt_return_tab[]
dynpfld_mapping = lt_map[]
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDMODULE.