TYPES: BEGIN OF TY_MATERIAL, MATNR TYPE MATNR, MATKL TYPE MATKL, BISMT TYPE BISMT, END OF TY_MATERIAL, BEGIN OF TY_PLANT, MATNR TYPE MATNR, WERKS TYPE WERKS_D, PSTAT TYPE PSTAT_D, DISPR TYPE DISPR, END OF TY_PLANT, BEGIN OF TY_EKPO, EBELN TYPE EBELN, EBELP TYPE EBELP, TXZ01 TYPE TXZ01, MENGE TYPE BSTMG, MEINS TYPE BSTME, END OF TY_EKPO. TYPES: TT_MATNR TYPE STANDARD TABLE OF TY_MATERIAL, TT_PLANT TYPE STANDARD TABLE OF TY_PLANT, TTEKPO TYPE STANDARD TABLE OF TY_EKPO.
(3)定义全局变量
(4)初始化逻辑
(5)Form 逻辑
1 2 3 4 5 6 7 8 9 10 11 12
FORM GET_MARA USING V_ROW_L. SELECT MATNR MATKL BISMT FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA UP TO V_ROW_L ROWS. ENDFORM.
FORM GET_MARC USING V_ROW_L. SELECT MATNR WERKS PSTAT DISPR FROM MARC INTO CORRESPONDING FIELDS OF TABLE IT_MARC UP TO V_ROW_L ROWS. ENDFORM.
FORM GET_EKPO USING V_ROW_R. SELECT EBELN EBELP TXZ01 MENGE MEINS FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IT_EKPO UP TO V_ROW_R ROWS. ENDFORM.
2.Adobe Form
(1)创建Adobe Form
使用事物代码 SFP 创建Adobe Form 对象。绑定对应的Interface对象。然后将在Interface中创建的全局变量导入到Adobe Form中。
(2)创建文本抬头
在Page1下新建一个Subform,然后添加一个文本对象。
① 插入Subform
② 新建文本对象
将新建好的文本对象放在上面新建的Subform下面。
(3)设置表格分页
选中DetailBody对象,然后设置其Subform的Content对象的属性为Flowed。然后选中 Allow Page Breaks Within Content 。
(4)新建总Subform
在DetailBody下新建一个新的总SubForm对象。然后设置其Subform的Content对象的属性为Flowed,然后选中 Allow Page Breaks Within Content ,最后再修改Flow Direction的值为Westem Text。后面所有的SubForm对象都需要设置这三个属性。
PARAMETERS: P_ROWL TYPE I, " Number of Rows P_ROWR TYPE I. " Number of Rows
CONSTANTS : GV_FORM_NAME TYPE FPNAME VALUE 'YADOBE_FORM_DEMO12'. **&&~~ Data Objects DATA: GV_FM_NAME TYPE RS38L_FNAM, " FM Name GS_FP_DOCPARAMS TYPE SFPDOCPARAMS, GS_FP_OUTPUTPARAMS TYPE SFPOUTPUTPARAMS.
*&---------------------------------------------------------------------* **&&~~ Form Processing: Call Form - Open * CALL FUNCTION 'FP_JOB_OPEN' CHANGING IE_OUTPUTPARAMS = GS_FP_OUTPUTPARAMS EXCEPTIONS CANCEL = 1 USAGE_ERROR = 2 SYSTEM_ERROR = 3 INTERNAL_ERROR = 4 OTHERS = 5. IF SY-SUBRC <> 0. " Suitable Error Handling ENDIF. *&---------------------------------------------------------------------* **&&~~ Get the Function module name based on Form Name * CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING I_NAME = GV_FORM_NAME IMPORTING E_FUNCNAME = GV_FM_NAME. IF SY-SUBRC <> 0. " Suitable Error Handling ENDIF. *&---------------------------------------------------------------------* **&&~~ Take the FM name by executing the form - by using Pattern- **&&~~ call that FM and replace the FM Name by gv_fm_name * **&&~~ Call the Generated FM CALL FUNCTION GV_FM_NAME "'/1BCDWB/SM00000176' EXPORTING /1BCDWB/DOCPARAMS = GS_FP_DOCPARAMS V_ROW_R = P_ROWR V_ROW_L = P_ROWL EXCEPTIONS USAGE_ERROR = 1 SYSTEM_ERROR = 2 INTERNAL_ERROR = 3 OTHERS = 4. IF SY-SUBRC <> 0.
* Implement suitable error handling here ENDIF. *&---------------------------------------------------------------------* **&&~~ Form Processing: Call Form - Open * CALL FUNCTION 'FP_JOB_CLOSE' * IMPORTING * E_RESULT = EXCEPTIONS USAGE_ERROR = 1 SYSTEM_ERROR = 2 INTERNAL_ERROR = 3 OTHERS = 4. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF.