目的是把CU50中的选择配置拿出来,再把最后BOM的结果拿出来。2023.10.13
一、CU50里面2个标准函数有修改:
----------LCUKOF01----函数----------------CALL FUNCTION 'CU01_DISPLAY_BOM'EXPORTINGmasterdata = rcuko-ukompRESULT = rcuko-uaktklevel_by_level = rcuko-dmstuall_components = rcuko-ucmpfno_masterdata = g_nomdno_result = g_noreinclude_header = incl1IMPORTINGreturn_with_function = list_okcodeTABLESbom_list_index = indx_clstbom_list = lt_clst.*{ INSERT S4DK913063 1
DATA gs_ZCU50_LIST like ZCU50_LIST.DELETE FROM ZCU50_LIST.
COMMIT WORK .LOOP AT gt_clst_for_list INTO DATA(gs400) WHERE INTENSIV = 'X' AND INSTP = '1'.gs_ZCU50_LIST-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).gs_ZCU50_LIST-TEXT = gs400-ZEILE.INSERT into ZCU50_LIST VALUES gs_ZCU50_LIST.CLEAR gs_ZCU50_LIST.ENDLOOP.*} INSERT-----------LCEI0F90函数--------------CALL FUNCTION 'CUTC_GET_SETTINGS'IMPORTINGactive = lv_ddb_trace.IF lv_ddb_trace IS INITIAL.ls_fcode-fcode = 'TRCD'.APPEND ls_fcode TO lt_fcode.ELSE.ls_fcode-fcode = 'TRCA'.APPEND ls_fcode TO lt_fcode.ENDIF.
*{ INSERT S4DK913063 1DATA gs_ZVCOND_SD like ZVCOND_SD.DELETE FROM ZVCOND_SD.COMMIT WORK .gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).gs_ZVCOND_SD-VARCOND = GV_MATNR.INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.CLEAR gs_ZVCOND_SD.gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).gs_ZVCOND_SD-VARCOND = GV_WERKS.INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.CLEAR gs_ZVCOND_SD.gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).gs_ZVCOND_SD-VARCOND = GV_DATE.INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.CLEAR gs_ZVCOND_SD.LOOP AT GT_VCOND_SD INTO DATA(gs400).gs_ZVCOND_SD-UUID = cl_uuid_factory=>create_system_uuid( )->create_uuid_c22( ).gs_ZVCOND_SD-VARCOND = gs400-VARCOND.INSERT into ZVCOND_SD VALUES gs_ZVCOND_SD.CLEAR gs_ZVCOND_SD.ENDLOOP.*} INSERT
二、存数据的透明表:
三、处理程序:
*&---------------------------------------------------------------------*
*& Report ZPPR0016B
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZPPR0016B.TABLES:vbap,stko,ZCU50_LIST.DATA ls_write TYPE zspp_bominfo.DATA ls_head TYPE zspp_bominfo.DATA lt_head TYPE TABLE OF zspp_bominfo.DATA lv_rfcdest TYPE rfcdest.DATA lt_esb_com TYPE zsca_esb_com_tab.DATA lt_bomlist TYPE TABLE OF zspp_bomlist.DATA gt_stpo TYPE TABLE OF stpox.
DATA:gs_layout TYPE lvc_s_layo, "#EC NEEDEDgs_glay TYPE lvc_s_glay, "#EC NEEDEDgt_fieldcat TYPE lvc_t_fcat. "#EC NEEDEDTYPES: BEGIN OF ty_table,matnr(40) TYPE C,END OF ty_table.DATA gt_SAP TYPE TABLE OF ty_table.
DATA gt_APS TYPE TABLE OF ty_table.DATA gs_gsgs TYPE ty_table.SELECTION-SCREEN BEGIN OF BLOCK a0 WITH FRAME TITLE TEXT-001.PARAMETERS:p_datuv TYPE stko-datuv DEFAULT sy-datum. "有效起始日期SELECTION-SCREEN END OF BLOCK a0.START-OF-SELECTION.PERFORM frm_SAP_data.PERFORM frm_APS_data.PERFORM frm_xxx.FORM frm_SAP_data.DATA GT_ZCU50_LIST TYPE TABLE OF ZCU50_LIST.SELECT * FROM ZCU50_LIST INTO TABLE GT_ZCU50_LIST.LOOP AT GT_ZCU50_LIST ASSIGNING FIELD-SYMBOL(<fs>).gs_gsgs-MATNR = <fs>-TEXT+8(40) .IF gs_gsgs-MATNR EQ 'F2'. CONTINUE. ENDIF.IF gs_gsgs-MATNR EQ 'F2PD'. CONTINUE. ENDIF.IF gs_gsgs-MATNR EQ 'F2BD'. CONTINUE. ENDIF.APPEND gs_gsgs to gt_SAP.CLEAR gs_gsgs.ENDLOOP.ENDFORM.FORM frm_APS_data.DATA GT_VCOND_SD TYPE TABLE OF ZVCOND_SD.SELECT * FROM ZVCOND_SD INTO TABLE GT_VCOND_SD.LOOP AT GT_VCOND_SD INTO DATA(line)."------PM--------------if cl_abap_list_utilities=>dynamic_output_length( line-VARCOND ) > 10. ls_head-ATWRT1 = line-VARCOND. ENDIF."------CC--------------IF line-VARCOND+0(2) EQ 'CC' .ls_head-ATWRT2 = line-VARCOND.ENDIF."------PA--------------IF line-VARCOND+0(2) EQ 'PA' .ls_head-ATWRT3 = line-VARCOND.ENDIF."------P0--------------IF line-VARCOND+0(2) EQ 'P0' .IF ls_head-ATWRT4 is INITIAL.ls_head-ATWRT4 = line-VARCOND.ELSE.ls_head-ATWRT4 = ls_head-ATWRT4 && ';' && line-VARCOND.ENDIF.ENDIF."------1003--------------IF line-VARCOND+0(3) EQ '100' .ls_head-werks = line-VARCOND.ENDIF."------F2--------------IF line-VARCOND+0(2) EQ 'F2' .ls_head-matnr = line-VARCOND.ENDIF."------20231013--------------IF line-VARCOND+0(3) EQ '202' .ls_head-badat = line-VARCOND.ENDIF.ENDLOOP.IF ls_head-matnr EQ 'F2'. ls_head-z_st = 'V'. ENDIF.IF ls_head-matnr EQ 'F2PD'. ls_head-z_st = 'P'. ENDIF.IF ls_head-matnr EQ 'F2BD'. ls_head-z_st = 'A'. ENDIF.APPEND ls_head TO lt_head .ls_write = ls_head.CLEAR ls_head.lv_rfcdest = zcl_ca_tools=>get_rfcdest( ).CALL FUNCTION 'ZSAP_PP_APS_BOMINFO_OUT' DESTINATION lv_rfcdestTABLESet_po_header = lt_headtt_esb_com = lt_esb_comtt_bomlist = lt_bomlist.ENDFORM.FORM frm_xxx."----###############-----------WRITE:/ p_datuv && ':' && ls_head-ATWRT1 && ',' && ls_head-ATWRT2 && ',' && ls_head-ATWRT3 && ',' && ls_head-ATWRT4.DATA lv_l1 TYPE i VALUE 0.
DATA lv_l2 TYPE i VALUE 0.lv_l1 = lines( lt_bomlist ).
lv_l2 = lines( gt_SAP ).WRITE:/ 'APS: ' && lv_l1.
WRITE:/ 'SAP: ' && lv_l2 ."----####?##?#-----------LOOP AT lt_bomlist INTO DATA(gs_2).gs_gsgs-MATNR = gs_2-MATNR.APPEND gs_gsgs to gt_APS.CLEAR gs_gsgs.ENDLOOP.SORT gt_SAP.
SORT gt_APS.IF gt_SAP[] = gt_APS[].WRITE:/ 'every item same'.
ELSE.WRITE:/ 'some item different'.
ENDIF.CLEAR:gt_SAP[],gt_APS[],lt_bomlist[],gt_stpo[].ENDFORM.FORM frm_ALV."#####?##
TYPES: BEGIN OF ty_flight,TXT1(40) TYPE C,id TYPE i ,TXT2(40) TYPE C,TXT3(40) TYPE C,END OF ty_flight."#####?#
DATA gt_20 TYPE TABLE OF ty_flight.
DATA gs_20 TYPE ty_flight.*
*
* LOOP AT gt_SAP INTO DATA(gs_s).
*
*
* gs_20-TXT2 = gs_s-MATNR.
* APPEND gs_20 to gt_20.
* CLEAR gs_20.
*
*
* ENDLOOP.
*
*
*
* LOOP AT gt_APS INTO DATA(gs_s).
*
*
* gs_20-TXT3 = gs_s-MATNR.
* APPEND gs_20 to gt_20.
* CLEAR gs_20.
*
* ENDLOOP.
*DATA: WS_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,WS_LAYOUT TYPE SLIS_LAYOUT_ALV,WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,WS_EVENTS TYPE SLIS_T_EVENT.DATA: NN TYPE I VALUE 0.DATA: TITLE TYPE LVC_TITLE.DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*DEFINE HOUT.NN = NN + 1.WS_FIELDCAT-COL_POS = NN.WS_FIELDCAT-TABNAME = 'GT_20'.WS_FIELDCAT-KEY = &1.WS_FIELDCAT-FIELDNAME = &2.WS_FIELDCAT-SELTEXT_M = &3.WS_FIELDCAT-CFIELDNAME = &4.WS_FIELDCAT-DATATYPE = &5.WS_FIELDCAT-REF_TABNAME = &6.WS_FIELDCAT-REF_FIELDNAME = &7.WS_FIELDCAT-DO_SUM = &8.WS_FIELDCAT-HOTSPOT = &9.APPEND WS_FIELDCAT.CLEAR WS_FIELDCAT.END-OF-DEFINITION.HOUT:'' 'TXT1' '## ## ## ##' '' '' '' '' '' '',
'' 'TXT2' ' SAP ' '' '' '' '' '' '',
'' 'TXT3' ' APS ' '' '' '' '' '' ''.WS_LAYOUT-ZEBRA = 'X'.WS_LAYOUT-GET_SELINFOS = 'X'.WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.WS_LAYOUT-DETAIL_POPUP = 'X'.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_CALLBACK_PROGRAM = SY-REPIDIS_LAYOUT = WS_LAYOUTIT_FIELDCAT = WS_FIELDCAT[]IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]IT_SORT = WS_SORTFIELDS_TAB[]IT_EVENTS = WS_EVENTS[]I_GRID_TITLE = TITLEI_DEFAULT = 'X'I_SAVE = 'A'TABLEST_OUTTAB = GT_20[]EXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.ENDFORM.